我有一个键盘事件监听器,当我激活数字锁时,我正在监听number pad key codes(1到9);这很好用。但是,在我的应用程序中,我还想允许使用修饰键(CTRL)和数字键盘键。奇怪的是,当按住CTRL时,按1或3不会产生任何键盘事件,而2和4 - 9会产生预期的事件。 我在谷歌搜索之后看到过这个问题的其他参考,所以我不认为这必须是特定于Flash的,但我还没有找到任何答案。
我尝试使用SHIFT作为修饰符,但这只会导致从数字键盘生成键代码,就像数字锁定已关闭一样(例如,SHIFT + Numpad1返回结束键代码,无论数字锁定状态如何) - 显然这是故意的Windows行为。由于altcodes,ALT不适用于小键盘。
有关如何获取CTRL + Numpad1和CTRL + Numpad3以生成键盘事件的任何想法?或者他们为什么没有解释?
编辑:我尝试在Firefox中使用这些组合键,因为enriquein建议如下,并且所有组合键都工作正常,这让我相信这可能是特定于Flash的问题,或者至少不是硬件问题。
答案 0 :(得分:0)
过去我在特定键盘上使用键盘键遇到了问题。各种键组合无法在特定键盘上注册,并且您使用的键盘可能在这种情况下不会生成任何事件。它不能保证工作,但我建议尝试不同的键盘(不同的供应商等),看看是否有效。如果您使用非英语键盘,它也可能是本地化键盘的问题。
答案 1 :(得分:0)
我几乎可以肯定它与Flash没有关系,因为我在本地化键盘上遇到了类似的问题,并且根本无法为某些键或键组合生成事件。
尝试枚举所有关键事件并搜索它们映射到的内容,或google evtest.c,编译并运行它,看看它有什么用。
答案 2 :(得分:0)
确实看起来它的键盘特定。当我在Firefox中阅读此问题时,我尝试了按键组合,它们触发了与按Ctrl + Number(切换到标签#Number)相同的事件。
这是使用标准的US / 101键英文键盘(没有额外的媒体按钮或任何东西)。
答案 3 :(得分:0)
某些键盘未注册某些键组合。我认为这取决于它们如何组合在一起。例如,有些人可能会注册左手Ctrl +组合键但不能按Ctrl +同一个键!
解决方法是检测Ctrl键的按键和按键事件。
然后,您可以为Ctrl + numpad键引发自定义事件,或者使用volatile标志来显示Ctrl键状态。