首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何覆盖系统内部处理的捷径

如何覆盖系统内部处理的捷径
EN

Stack Overflow用户
提问于 2016-01-25 10:17:44
回答 1查看 32关注 0票数 1

如何通过Processing录制系统正在使用的快捷方式

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

在按Esc-key键的同时自动关闭窗口,但仍会在Processing中接收keyCode

代码语言:javascript
复制
void keyPressed() {
    println(keyCode);
}

所以我的问题是。当它触发系统事件时,我如何仍然接收Esc-key。或者更好的是全部覆盖系统事件。

EN

回答 1

Stack Overflow用户

发布于 2016-01-25 10:36:40

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

代码语言:javascript
复制
void keyPressed(){
  if(key==27){
    < insert code here >
    key=0;
  }
}

这会使进程误以为退出键不是按下的键。

另一方面,操作系统的快捷键不能被重写(例如,windows force中的alt-f4会关闭应用程序。这不能被禁用,因为这是你退出一个不让你离开它的界面的程序的方式)。这是一项安全功能。

<------------------------------------------------------>

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

代码语言:javascript
复制
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时,这是不好的做法,不要模仿它,我输入得很快。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34984152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档