2011-08-12 26 views
6

Androidでメタキー(CTRLなど)とキーコード(RETURNなど)を組み合わせて送信する方法がわかりませんAPIレベル11 =バージョン3.0)。Android API経由でキーの組み合わせ(メタキーとキーコード)を送信

META_CTRL_ONのような定数を言及し、また、メタキーのキーコード定数(例えばKEYCODE_CTRL_LEFT)をサポートしていKeyEventクラスのドキュメント。

Javascript Key Event Testerを使用して、入力メソッドエディタ(IME)で生成された出力をテストしています。ところで、私の目標は、ソフトウェアキーボードを開発することです。

私は正しい文書を理解していれば、キーCTRL のみを送信するために、次のコードを実行するのに十分であろう:

this.sendDownUpKeyEvents(KeyEvent.KEYCODE_CTRL_RIGHT); 

しかし、これは(Javascriptのキーイベントテスターに​​対して実行されたときに上記を参照)、 何も起こりません。

私は、メタキーを他のキーと組み合わせて送るには、だけを送信する手がかりを得る必要があります。私はまた、SHIFTを送信+(具体例)を入力するには、以下を試してみました:

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クラスをメタキーやキーの組み合わせで使用する方法については、数時間インターネットを既に検索しましたが、少なくとも1つのコード例は見つかりませんでした。

結論として:KeyEventクラスを経験したことがありますか?アンドロイドAPIを使用して簡単なキーの組み合わせ(例:SHIFT + ENTER)を送信する方法を教えてください。

ありがとうございます!

答えて

0

私は、同時に両方のメタ修飾キーを入れて、それが働いた...

を例KeyEvent.META_SHIFT_LEFT_ON | KeyEvent.META_SHIFT_ONため。

関連する問題