Tag: 键盘事件

将键盘重新映射到较低级别

我们正在替换最初为MSDOS编写的遗留C应用程序(是的,信不信由你!)。 此应用程序使用一个特殊重映射的键盘拦截DOS键盘中断(记住??!)有时会改变用户按下的键的扫描码,以便进行不同的处理。 然后在按键上放置特殊标签,告诉用户这些按键的“新”含义。 需要新的Java版本来保留目标用户群非常熟悉的键盘布局。 我们尝试做的一个例子如下: 您可能从未想过这一点,但现代电话的数字键盘与计算机键盘的数字键盘相反。 前者1-2-3位于顶行,后者位于底行。 我们需要使键盘的数字键盘看起来像电话。 让我们说,当用户在数字键盘上输入“7”时,我们希望它看起来好像输入“1”,当他输入“8”时,我们想要一个“2”,当他输入“3”时我们想要一个“9”。 我们还需要做更多的事情来模拟DOS应用程序,但我们现在甚至无法解决这个简单的案例。 我已经遍布Key Binding,KeyAdapters,KeyListeners,甚至KeyEventDispatcher,我无法做到这一点。 我很确定我们必须在Java允许的最低级别上工作,以尽可能接近遗留应用程序的工作。 不用说,我们希望最干净的实现成为可能,这样应用程序级代码就不会被inputMaps和actionMaps等所困扰。尽可能地,这需要全局处理。 有人可以帮忙吗?

通过Java程序禁用Ctrl-Alt-Delete事件

我正在使用JDesktopPane创建桌面应用程序。 我差不多完成了,但是当我按下ctrl + alt + del时 ,它会离开我的应用程序。 我该如何防止这种行为?

将按键发送到JTextField

我正在尝试将文本输入模拟到JTextField 。 我有一个1字符长的字符串,其中包含我要添加的字母,然后运行: receiver.dispatchEvent(new KeyEvent(this, KeyEvent.KEY_TYPED, 0, this.shifted?KeyEvent.SHIFT_DOWN_MASK:0, KeyEvent.VK_UNDEFINED, text.charAt(0))); 但这似乎并没有改变内容。 我在这里想念的是什么?

用Java编写游戏的键盘输入

我正在用Java编写游戏,现在它是Swing + JOGL – 一个带有GLCanvas的JFrame。 我使用keyPressed等事件处理输入( jframe.addKeyListener(…) ),它似乎无法正常工作: 当我同时关闭3个键时,它们没有正确注册 – 显然这是键盘故障,我必须找到一个替代控制方案。 窗口丢失后,重新获得焦点,输入完全停止工作…… 我究竟做错了什么? 有没有更好的方法来处理Java中的键盘输入? (我宁愿切换到另一个库,比如LWJGL ……除非我别无选择)。

FullScreen Swing组件无法在Mac OS X Mountain Lion上的Java 7上接收键盘输入

更新12/21: 7u10最近发布。 确认: 问题仍然存在 值得庆幸的是,解决方法仍然有效! 更新11/7: 我们有一个解决方法! 来自Oracle的Leonid Romanov在openjdk.java.net邮件列表中提供了一些有关正在发生的事情的见解 : 好吧,虽然我还不是100%肯定,但看起来当我们进入全屏时,其他一些窗口成为第一响应者,因此发出哔哔声。 您可以尝试以下解决方法:在框架上调用setFullScreenWindow()之后,调用setVisible(false),然后调用setVisible(true)。 理论上,这应该恢复正确的第一响应者。 似乎有用的代码片段很简单: dev.setFullScreenWindow(f); f.setVisible(false); f.setVisible(true); 我更新了示例代码,可以打开和关闭此修复程序; 每次窗口进入全屏时都需要它。 在我更复杂的应用程序的更大的上下文中,我仍然在全屏窗口中的子组件上遇到键盘焦点问题,鼠标单击导致我的窗口失去焦点。 (我猜它会转到上面提到的不受欢迎的第一响应者窗口。)当我有关于这种情况的更多信息时,我会报告回来 – 我还不能在较小的样本中重现它。 更新10/31: 示例代码的主要更新: 包括在FullScreen独占模式和Lion风格的全屏模式之间切换 侦听KeyboardFocusManager以显示当前焦点组件的层次结构 使用输入映射和KeyListener来尝试捕获输入 还与同事一起进行了更多挖掘,试图找出问题: 在一方面,我们尝试覆盖RT.jar中的一些方法,以查看屏幕设备的选择方式是否存在问题。 还尝试了Toolkit.beep()function的入口点,以查看警报声是否来自Java端 – 似乎没有。 另一方面,很明显即使是本机方也没有接收键盘事件。 同事将此归因于7月6日从AWTView到NSWindow的转换。 已找到一些现有的Oracle错误,您可以在此处查找: 8000276:[macosx] graphicsDevice.setFullScreenWindow(frame)崩溃JVM 8000430:[macosx] java.awt.FileDialog在macosx上发布 7175707:[macosx] PIT:8 b43不再在AppKit线程问题上运行 更新10/26: 感谢@maslovalex下面关于工作于7u5的Applet的评论,我回过头来仔细研究了与OSX的JDK版本的兼容性: 10.7.1 with 7u4:Fullscreen Works! 10.7.1 with 7u5:Fullscreen Works! 10.7.5与7u5:全屏工作! 10.7.5与7u6:全屏rest:( […]