如何检测是否在按下键盘键的情况下单击了按钮? (按住 Ctrl 单击、按住 Alt 单击等)

How do I detect if a button was clicked with a keyboard key pressed? (Ctrl-click, Alt-click etc.)

我正在尝试为 Adob​​e After Effects 脚本编写 UI。我想添加一个功能,用户可以在其中按 CTRL 单击按钮,而不是只单击按钮而不用按键来获得稍微不同的行为。

但是,问题是我不知道如何检测在单击按钮时是否按下了某个键。

我已经成功检测到按键

myPanel.addEventListener("keydown", function (kd) {alert(kd.keyIdentifier); return(kd.keyIdentifier);});

这段代码添加了一个侦听器,在按下按钮时提醒我按钮的名称。我还有一个按钮 onClick 事件来控制按下按钮时发生的情况。但是,我无法弄清楚如何将这两个侦听器组合起来并获取有关在单击按钮期间是否按下了某个键的信息。我试图将 keydown 侦听器放在 onClick 函数中,但它根本不起作用。

<button onclick="sample(event)">Click Me!</button>

function sample(event){
    if (event.ctrlKey){
       alert('Button click with ctrlKey pressing.');
    }else{
       alert('Button click without ctrlKey pressing.');
    }
}

事件对象是否有按键按下。检查然后使用它。

Example

我成功了。

Adobe ScriptUI 环境允许您使用 Keyboard state 对象随时监控键盘状态。您可以从:ScriptUI.environment.keyboardState 获取。它具有 altKeyctrlKey 等属性,return 是一个基于是否按下键的布尔值。您所要做的就是将对象初始化放入按钮的onClick事件中:

button.onClick = function() {
    isCtrlPressed = ScriptUI.environment.keyboardState.ctrlKey;
}

有关更多信息,请参阅 Adob​​e JavaScript 工具指南的第 155 页