2011-08-12 53 views
6

我无法弄清楚如何使用Android(我正在使用)发送元密钥(例如CTRL)和密钥组合(例如用于RETURN)的组合API等级11 =版本3.0)。通过Android API发送密钥组合(元密钥和密钥代码)

KeyEvent提到常数等META_CTRL_ON的类的文件,同时还支持用于元键键码常数(例如KEYCODE_CTRL_LEFT)。

我正在使用Javascript Key Event Tester来测试由我的输入法编辑器(IME)生成的输出。顺便说一句,我的目标是开发一个软件键盘。

如果我理解的文档正确的,这将足以执行以下代码发送CTRL键只有

this.sendDownUpKeyEvents(KeyEvent.KEYCODE_CTRL_RIGHT); 

但是,当这对JavaScript的关键事件测试执行(见上文), 什么都没发生。

所以我需要知道如何发送元键只有发送元键与另一个键的组合。我也试过以下发送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。

我已经在Internet上搜索了几个小时的例子,如何使用带有元键和/或键组合的类,但是找不到至少一个代码示例。

总而言之:有没有人使用KeyEvent类,并且可以演示如何通过Android API发送简单的键组合(例如SHIFT + ENTER)?

预先感谢您!

回答

0

我只是把两元的关键调节剂在同一时间,和它的工作...

例如KeyEvent.META_SHIFT_LEFT_ON | KeyEvent.META_SHIFT_ON