2014-01-15 55 views
0

谁能告诉我什么机器人按键是在Mac上的“控制”键? 我试过VK_Control,VK_META,CTRL_MASK和CTRL_DOWN_MASK还是什么都没有。Mac上的“控制”键的机器人按键

请注意:它是唯一的控制键在旁边的“fn”键左侧的mac。不是选项或命令。谢谢

+0

我不是S为什么KeyEvent.VK_CONTROL不起作用。你能提供一个你试用过的可运行的例子吗? – MadProgrammer

+0

另外我应该提到的是,我试图让Android模拟器旋转 'robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_F12); robot.keyRelease(KeyEvent.VK_CONTROL); robot.keyRelease(KeyEvent.VK_F12);' – JJacquet

+0

尝试添加['autoDelay'](http://docs.oracle.com/javase/7/docs/api/java/awt/Robot.html#setAutoDelay( int)),我发现这在很多情况下都有帮助 – MadProgrammer

回答

0

我认为这是代码59 - 见here

+0

使用__magic numbers__实际上是一个坏主意。它可能会随时改变,而且不容易被读取,重构或搜索。 – Seagull

+0

59并没有工作,但很好的参考键码。我希望它是一个新的mac键盘表示。非常感谢,关闭。 – JJacquet

0

使用数字常量不好。我可以在Groovy中提供运行示例,这将证明Robot.keyPress(KeyEvent.VK_CONTROL)正在完美运行。可能吧,你忘了拨打电话​​?

P.S.经测试在MacOS MAVERIC与Java 1.6这样的片段。(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); 
} }  }) } 
+0

我在keyevent中使用release,但仍然没有得到我需要的结果。 'robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_F12); robot.keyRelease(KeyEvent.VK_CONTROL); robot.keyRelease(KeyEvent.VK_F12);' – JJacquet

+0

@jermobileqa回答编辑。我无法检查,Android模拟器是否获得正确的击键,但它在其他应用程序中工作(选中Ctrl + O,Ctrl + S) – Seagull