Androidでメタキー(CTRLなど)とキーコード(RETURNなど)の組み合わせを送信する方法がわかりません(APIレベル11 =バージョン3.0を使用しています)。
KeyEventクラスのドキュメントには、META_CTRL_ONなどの定数が記載されており、メタキーのキーコード定数(KEYCODE_CTRL_LEFTなど)もサポートされています。
Javascript Key Event Testerを使用して、入力方式エディター(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クラスを使用する方法の例をインターネットで数時間検索しましたが、コードの例が少なくとも1つ見つかりませんでした。
つまり、結論として、KeyEventクラスの経験があり、Android APIを介してキーの単純な組み合わせ(SHIFT + ENTERなど)を送信する方法を教えてくれる人はいますか?
前もって感謝します!