Tag: keypress autorepeat keyrelease

如何知道用户何时真正发布了Java中的密钥?

(为清晰起见编辑) 我想检测用户何时按下并释放Java Swing中的键,忽略键盘自动重复function。 我也希望在Linux,Mac OS和Windows上使用纯Java方法。 要求: 当用户按下某个键时,我想知道它是什么键; 当用户释放一些密钥时,我想知道它是什么密钥; 我想忽略系统自动重复选项:我希望每次按键时只接收一个按键事件,每个按键释放只需一个按键释放事件; 如果可能的话,我会使用第1至第3项来知道用户是否一次持有多个键(即,她点击’a’并且没有释放它,她点击“Enter”)。 我在Java中面临的问题是,在Linux下,当用户持有一些密钥时,有许多keyPress和keyRelease事件被触发(因为键盘重复function)。 我尝试了一些没有成功的方法 : 获取关键事件的最后一次发生 – 在Linux中,它们似乎为零重复,但是,在Mac OS中它们不是; 仅当当前keyCode与最后一个keyCode不同时才考虑事件 – 这样用户就不能连续两次击中相同的键; 这是代码的基本(非工作)部分: import java.awt.event.KeyListener; public class Example implements KeyListener { public void keyTyped(KeyEvent e) { } public void keyPressed(KeyEvent e) { System.out.println(“KeyPressed: “+e.getKeyCode()+”, ts=”+e.getWhen()); } public void keyReleased(KeyEvent e) { System.out.println(“KeyReleased: “+e.getKeyCode()+”, ts=”+e.getWhen()); } } 当用户持有密钥(即“p”)时,系统显示: […]