【问题标题】:How do I detect if a button was clicked with a keyboard key pressed? (Ctrl-click, Alt-click etc.)如何检测是否在按下键盘键的情况下单击了按钮? (Ctrl 键单击、Alt 键单击等)
【发布时间】:2017-07-13 10:51:02
【问题描述】:

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

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

我已经设法用

检测到按键
myPanel.addEventListener("keydown", function (kd) {alert(kd.keyIdentifier); return(kd.keyIdentifier);});

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

【问题讨论】:

    标签: javascript mouseevent keyboard-events extendscript adobe-scriptui


    【解决方案1】:

    我设法让它工作。

    Adobe ScriptUI 环境让您可以使用Keyboard state 对象随时监控键盘状态。您可以从:ScriptUI.environment.keyboardState 获取。它具有诸如altKeyctrlKey 等属性,这些属性根据按键是否被按下来返回一个布尔值。只需将对象初始化放入按钮的onClick 事件中即可:

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

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

    【讨论】:

      【解决方案2】:
      <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

      【讨论】:

      • 很遗憾,这在 Adob​​e ScriptUI 环境中不起作用
      猜你喜欢
      • 2012-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-13
      • 2017-09-20
      • 1970-01-01
      相关资源
      最近更新 更多