【问题标题】:Robot Keypress for the "control" key on macMac上“控制”键的机器人按键
【发布时间】:2014-01-15 20:36:01
【问题描述】:

谁能告诉我Mac上“控制”键的Robot Keypress是什么? 我试过 VK_Control、VK_META、CTRL_MASK 和 CTRL_DOWN_MASK 还是没有。

请注意:它是 mac 上唯一的控制键,靠近左侧的“fn”键。不是选项或命令。谢谢

【问题讨论】:

  • 我不确定为什么 KeyEvent.VK_CONTROL 不起作用。你能提供一个你尝试过的可运行的例子吗?
  • 我应该提到的其他一点是我正在尝试让 Android 模拟器旋转 robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_F12); robot.keyRelease(KeyEvent.VK_CONTROL); robot.keyRelease(KeyEvent.VK_F12);
  • 尝试添加autoDelay,我发现这在很多情况下都有帮助
  • 是的!就是这样,谢谢你,先生。在方法之间暂停线程是诀窍。问题解决了

标签: java macos keypress awtrobot


【解决方案1】:

我认为是代码 59 - 请参阅 here

【讨论】:

  • 使用幻数实际上是个坏主意。它随时可能发生变化,不容易阅读、重构或搜索。
  • 59 没用,但很好的参考了键码。我希望这是一个较新的 mac 键盘表示。不过谢谢,关闭。
【解决方案2】:

使用数字常量很糟糕。我可以在 Groovy 中提供运行示例,这将证明 Robot.keyPress(KeyEvent.VK_CONTROL) 运行良好。可能是你忘了打电话给releaseKey

附:使用 Java 1.6 在 Macos Maveric 上测试,带有这样的 sn-p。(Groovy)

EDITED(我可能想,您需要更改 CtrlF12 发布顺序。F12 应该是释放,而 Ctrl 仍然按下,那么修饰符将被正确设置,F12 将被视为 Ctrl+F12)

new SwingBuilder().frame(pack: true, show: true, defaultCloseOperation: JFrame.EXIT_ON_CLOSE) {
    textField(keyPressed: { KeyEvent e ->
        println("$e.keyCode, $e.modifiers") // prints 123 2 in response to Robot event.
        if (e.keyCode == KeyEvent.VK_SPACE)
        {
            new Robot().with {
                robot.keyPress(KeyEvent.VK_CONTROL);
                robot.keyPress(KeyEvent.VK_F12);
                robot.keyRelease(KeyEvent.VK_F12); // Release it first.
                robot.keyRelease(KeyEvent.VK_CONTROL);
}    }     }) }

【讨论】:

  • 我在 keyevent 中使用 release,但仍然没有得到我需要的结果。 robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_F12); robot.keyRelease(KeyEvent.VK_CONTROL); robot.keyRelease(KeyEvent.VK_F12);
  • @jermobileqa 答案已编辑。我无法检查,Android 模拟器是否获得正确的击键,但它在其他应用程序中有效(选中 Ctrl+O、Ctrl+S)
猜你喜欢
  • 1970-01-01
  • 2017-01-25
  • 1970-01-01
  • 2019-06-22
  • 2018-04-17
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
  • 1970-01-01
相关资源
最近更新 更多