2011-08-12 158 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