ics 中的默认键盘(使用 4.0.4 测试)允许您使用移动键(使用 dpad 或键盘箭头)“选择”屏幕键盘上的键。通过单击选定的键被键入。
我正在编写一个需要此功能的新输入法。我尝试了一些示例键盘,例如 sdk 中包含的 Softkeyboard 示例。但那些行为不同。按下移动键不允许选择键盘上的键。相反,它在输入区域中移动光标。
我还检查了 LatinIME 包,但找不到负责所需行为的代码部分。任何见解都会有所帮助!
到目前为止,我的假设是选择的视觉表示是通过 state_active 完成的。至少这是我在查看样式定义后得出的结论。似乎负责的方法是 InputMethodService 中的 onKeyUp/onKeyDown。LatinIME 不会覆盖这些方法。
编辑:此时我确信这不是 AOSP LatinIME,即使它显示为“Android 键盘 (AOSP)”。我已经用 android mini PC(MK808 和 UG802)对此进行了测试。似乎他们对 IME 有一个补充。在显示 InputView 的情况下按下 DPAD 键会给出以下输出:
D/LatinKeyboardView( 487): ##----- keycout = 39 ------@@@
I/LatinKeyboardView( 487): ######## index=37, y= 271 x =1107
I/LatinKeyboardView( 487): ######## index=37---action =0---code =45
D/PointerTracker( 487): -------- release old key ---------------
I/LatinKeyboardView( 487): SendKeyEvent2Touch m_iIndexCurKey=37 m_iKeyCount =39 keyCode =21
我在谷歌上找不到任何关于此的内容。我想听听有关如何实施这一点的建议。