看起来很傻,但我无法从KeyEvent中获取元状态,从onKeyListener访问。尝试了我拥有的所有键盘和模拟器。
是否按下Shift,Ctrl等键,keyEvent.getMetaState()返回0.可能它适用于TextListener,但我不需要它来输入文本,我只想区分Tab和Shift +标签
感谢您提供的预期帮助。
更新。我刚才想到的是,按字母键报告元状态,但不报告其他键。
例如,如果我按左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等组合吗?
答案 0 :(得分:0)
是的,这真的是关于android配置文件。
您可以在/system/usr/kychars/Generic.kcm(或相应供应商的文件)中修改TAB条目,并为shift添加一行,如下所示:
key TAB {
label: '\t'
base: '\t'
shift: '\t'
ctrl, alt, meta: none
}
有些设备使用的是qwerty.kcm,它已经存在换档线。他们应该没有入侵就能正常工作。 BTW,unicode为Shift + TAB提供了一个特殊代码\ u21B9,但它可能无法被Android识别。