[ID CC-CC2021] Активация "palette" в Indesign СС и выше.

Vadim_PDF

Топикстартер
15 лет на форуме
Сообщения
1 648
Реакции
237
Есть скрипт который меняет Anchore POINT используя цифровую клавиатуру. Сам скрипт забит на Ctrl+Alt+End. Довольно удобно нажав это сочетание и кнопку на цифровой клавиатуре (1-9) переставить Anchore POINT. После нажатия скрипт закрывается.
Код:
#targetengine "doSomethingWithMultiselect"
var w = new Window("palette");
var butStart = w.add("button",undefined,"&Anchore 123456789");

var started = false;
w.addEventListener ("keydown", function (kd) {pressed (kd)});


function pressed (k) {
//1
if (k.keyIdentifier == "U+0031") {
    app.activeWindow.transformReferencePoint = AnchorPoint.BOTTOM_LEFT_ANCHOR
    w.close();
    exit
    }
//2   
if (k.keyIdentifier == "U+0032") {
    app.activeWindow.transformReferencePoint = AnchorPoint.BOTTOM_CENTER_ANCHOR
    w.close();
    exit
    }
//3
if (k.keyIdentifier == "U+0033") {
    app.activeWindow.transformReferencePoint = AnchorPoint.BOTTOM_RIGHT_ANCHOR
    w.close();
    exit
    }
//4
if (k.keyIdentifier == "U+0034") {
    app.activeWindow.transformReferencePoint = AnchorPoint.LEFT_CENTER_ANCHOR
    w.close();
    exit
    }
//5
if (k.keyIdentifier == "U+0035") {
    app.activeWindow.transformReferencePoint = AnchorPoint.CENTER_ANCHOR
    w.close();
    exit
    }
//6
if (k.keyIdentifier == "U+0036") {
    app.activeWindow.transformReferencePoint = AnchorPoint.RIGHT_CENTER_ANCHOR
    w.close();
    exit
    }
//7
if (k.keyIdentifier == "U+0037") {
    app.activeWindow.transformReferencePoint = AnchorPoint.TOP_LEFT_ANCHOR
    w.close();
    exit
    }
//8
if (k.keyIdentifier == "U+0038") {
    app.activeWindow.transformReferencePoint = AnchorPoint.TOP_CENTER_ANCHOR
    w.close();
    exit
    }
//9
if (k.keyIdentifier == "U+0039") {
    app.activeWindow.transformReferencePoint = AnchorPoint.TOP_RIGHT_ANCHOR
    w.close();
    exit
    }
}
w.show();


// app.activeWindow.transformReferencePoint = AnchorPoint.BOTTOM_CENTER_ANCHOR
// app.activeWindow.transformReferencePoint = AnchorPoint.BOTTOM_LEFT_ANCHOR
// app.activeWindow.transformReferencePoint = AnchorPoint.BOTTOM_RIGHT_ANCHOR
// app.activeWindow.transformReferencePoint = AnchorPoint.CENTER_ANCHOR
// app.activeWindow.transformReferencePoint = AnchorPoint.LEFT_CENTER_ANCHOR
// app.activeWindow.transformReferencePoint = AnchorPoint.RIGHT_CENTER_ANCHOR
// app.activeWindow.transformReferencePoint = AnchorPoint.TOP_CENTER_ANCHOR
// app.activeWindow.transformReferencePoint = AnchorPoint.TOP_LEFT_ANCHOR
// app.activeWindow.transformReferencePoint = AnchorPoint.TOP_RIGHT_ANCHOR


// 1
// U+0031
// 2
// U+0032
// 3
// U+0033
// 4
// U+0034
// 5
// U+0035
// 6
// U+0036
// 7
// U+0037
// 8
// U+0038
// 9
// U+0039

И все бы хорошо в СS6, да начиная с СС при вызове w.show(); само окно не активируется. Надо дополнительно клацнуть его мышью, за тем скрипт начинает работать (перехватывать клавиши) - без активации - ни как :(
window.active = true - не помогает.
Хотелось бы понять что происходит?
Что поломалось в СС?
И вообще можно ли назначить EventListener "keydown" чему-то еще, возможно без вызова окна (например activeDocument или просто app)?
 
  • Спасибо
Реакции: NNN5

Vadim_PDF

Топикстартер
15 лет на форуме
Сообщения
1 648
Реакции
237
P.S. Как временное решение
var d = 5;
d = prompt();
if (d == 1) {
app.activeWindow.transformReferencePoint = AnchorPoint.BOTTOM_LEFT_ANCHOR
}...

Но после ввода числа надо топить Enter - за что собственно не боролись.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835
Не совсем пойму, что мешает повесить на менюитем с шоткатом?
 

Vadim_PDF

Топикстартер
15 лет на форуме
Сообщения
1 648
Реакции
237
Пробовал, кнопка активируется (становиться как бы нажатой (синей)) - но перехват не работает. Если после этого активировать окно - срабатывает.
OffTop - Видел где то код - который показывает какие Listeners поддерживаюся объектом - но не могу найти, а документация Adobe "отлично" отвечает на этот вопрос, все по крупицам по форумам искать. Никто не напомнит?
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Непонятно, зачем кнопка. Вам нужен скрипт, который загружается вместе со стартом программы, посмотрите образцы в startup scripts и в документации все есть
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 137
Реакции
10 835
Непонятно, зачем кнопка. Вам нужен скрипт, который загружается вместе со стартом программы, посмотрите образцы в startup scripts и в документации все есть
Он хочет непрерывно висящее окно типа palette перехватывающее нажатие комбинации клавиш. Почему? - где то здесь советовали подобный извращенный костыль когда то. Я свое мнение по данному вопросу уже высказал.