我不知道如何发送一个元键(如CTRL)和一个键码(如返回)与Android的组合(我使用API级别11 = 3.0版)。
类KeyEvent的文档提到了像META_CTRL_ON这样的常量,并且还支持元键的键码常量(例如KEYCODE_CTRL_LEFT)。
我使用Javascript关键事件测试器来测试由我的输入法编辑器(IME)生成的输出。顺便说一句,我的目标是开发一个软件键盘。
如果我对文档的理解正确,执行以下代码只发送CTRL键就足够了:
this.sendDownUpKeyEvents(KeyEvent.KEYCODE_CTRL_RIGHT);
但是当它在Javascript Key Event Tester上执行时(见上文),什么也没发生。
所以我需要得到一个线索如何发送元密钥只有和发送元密钥与另一个密钥的组合。我还尝试了以下发送SHIFT+ENTER(一个具体的例子):
private void _sendShiftEnter() {
this.sendDownKeyEvent(KeyEvent.KEYCODE_SHIFT_LEFT);
final long eventTime = SystemClock.uptimeMillis();
this.getCurrentInputConnection().sendKeyEvent(
new KeyEvent(
eventTime, // The time (in uptimeMillis()) at which this key code originally went down.
eventTime, // The time (in uptimeMillis()) at which this event happened.
KeyEvent.ACTION_DOWN, // Action code: either ACTION_DOWN, ACTION_UP, or ACTION_MULTIPLE.
KeyEvent.KEYCODE_ENTER, // The key code.
0, // A repeat count for down events (> 0 if this is after the initial down) or event count for multiple events.
KeyEvent.META_SHIFT_ON, // Flags indicating which meta keys are currently pressed.
0, // The device ID that generated the key event.
0, // Raw device scan code of the event.
KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE, // The flags for this key event.
InputDevice.SOURCE_KEYBOARD // The input source such as SOURCE_KEYBOARD.
)
);
}
同样的问题也出现在这里:唯一可识别的键是ENTER。
我已经在互联网上搜索了几个小时的例子,如何使用KeyEvent类与元键和/或键组合,但找不到至少一个例子的代码。
所以,总结一下:有没有人有KeyEvent类的经验,可以向我展示如何通过Android API发送一个简单的键组合(例如SHIFT+ENTER) ?
提前感谢!
我只是把两个元键修饰符在同一时间,它工作…
例如KeyEvent.META_SHIFT_LEFT_ON | KeyEvent.META_SHIFT_ON