如何超越系统内部处理的捷径

时间:2016-01-25 02:17:44

标签: java macos keyboard keyboard-shortcuts processing

如何使用Processing记录系统正在使用的快捷方式?

如果我尝试记录Apple-Key + Alt-key + Esc-key(在OSX中打开强制退出应用程序窗口),Esc-key永远不会到达{{1}事件。

虽然按keyPressed会自动关闭窗口,但仍会在Processing中收到keyCode:

Esc-key

所以我的问题是。如何在发生系统事件时仍然收到void keyPressed() { println(keyCode); } 。或者甚至更好地覆盖系统事件。

1 个答案:

答案 0 :(得分:0)

如果我没记错的话,退出函数的退出会在keyPressed()事件之后运行,所以你可以这样做:

void keyPressed(){
  if(key==27){
    < insert code here >
    key=0;
  }
}

这将欺骗处理认为转义键不是按下的键。

另一方面操作系统键绑定无法覆盖(例如windows force中的alt-f4关闭一个应用程序。这不能被禁用,因为这是你离开一个不会让你离开它的界面的程序)。这是一项安全功能。

&LT; --------------------------------------------- ---------&GT;

旁注:如果你想计算多个按键,就像你的应用程序退出示例一样,即使在同一时间按下它们,每次按下都会触发一个keyPressed事件,因此你必须记录keyPressed时按下的键。 )被触发并记录当触发keyReleased()时它们不再被保持。示例代码:

boolean isControlPressed=false;


void keyPressed(){
  if(key==CODED && keyCode==CONTROL)isControllPressed=true;
  else if(key == 'c' || key == 'C'){
    if(isControlPressed){
      //do control-c stuff
    }
  }
}

void keyReleased(){
  if(key==CODED && keyCode==CONTROL)isControllPressed=false;
}

编辑:我在检查是否为c时检查是否为CODED是不好的做法,不要模仿,我正在快速打字。

此外,我认为应用程序关闭时会运行一个函数,如果这是一个问题,您可以使用它来快速保存数据