gpt4 book ai didi

java - 如何覆盖系统内部处理的快捷方式

转载 作者:太空宇宙 更新时间:2023-11-04 13:00:35 25 4
gpt4 key购买 nike

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

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

单独按 Esc 键 会关闭窗口,但仍会收到 Processing 中的 keyCode :

void keyPressed() {
println(keyCode);
}

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

最佳答案

如果我没记错的话,退出函数在 keyPressed() 事件之后运行,因此您可以执行以下操作:

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

这会欺骗处理,让其认为退出键不是按下的键。

另一方面,操作系统的按键绑定(bind)无法被覆盖(例如,Windows 中的 alt-f4 会强制关闭应用程序。这不能被禁用,因为这是您退出不让您离开其界面的程序的方式)。这是一项安全功能。

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

旁注:如果您想计算多个按键(例如应用程序退出示例),则每次按下都会触发 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;
}

编辑:在检查 key 是否为 c 时,我不检查 key 是否已编码,这是不好的做法,不要效仿,我打字很快。

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

关于java - 如何覆盖系统内部处理的快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34984152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com