看起来很傻,但我无法从从 onKeyListener 访问的 KeyEvent 中获取元状态。尝试使用我拥有的所有键盘和模拟器。
无论是否按下 Shift、Ctrl 等键,keyEvent.getMetaState() 都会返回 0。可能它适用于 TextListener,但我不需要它来输入文本,我只想区分 Tab 和 Shift+Tab。
感谢您的预期帮助。
更新。我刚刚发现的是元状态是针对字母键报告的,而不是针对其他键的。
例如,如果我按下左 Shift+T,系统会为 KEYCODE_SHIFT_LEFT 和 KEYCODE_T 生成 KeyEvent,而 KEYCODE_T 的 KeyEvent 设置了 META_SHIFT_ON。您可以使用 Shift+TAB+T 欺骗系统,在这种情况下,为 KEYCODE_T 和 KEYCODE_TAB 设置 META_SHIFT_ON。但是,使用 Shift+TAB 不会生成 KEYCODE_SHIFT_LEFT 的 KeyEvent,并且元状态不受影响。
也许需要更新系统键盘配置文件以允许像 Shift+TAB 这样的组合?