Я не могу понять, как отправить комбинацию мета-ключа (например, CTRL) и кода клавиши (например, для RETURN) с Android (я использую уровень 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 с мета-ключами и / или комбинациями клавиш, но не смог найти хотя бы один пример кода.
Итак,В заключение: кто-нибудь имел опыт работы с классом KeyEvent и может показать, как отправить простую комбинацию клавиш (например, SHIFT + ENTER) через API Android?
Заранее спасибо!