【问题标题】:Send a key combination (meta key and keycode) via the Android API通过 Android API 发送组合键(元键和键码)
【发布时间】:2011-10-25 18:42:02
【问题描述】:

我不知道如何使用 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 类,但至少找不到一个代码示例。

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

提前谢谢你!

【问题讨论】:

    标签: android keyevent android-input-method key-events


    【解决方案1】:

    我只是同时放置了两个元键修饰符,它起作用了......

    例如KeyEvent.META_SHIFT_LEFT_ON | KeyEvent.META_SHIFT_ON

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-08
      • 2014-02-28
      • 1970-01-01
      • 2017-10-30
      • 1970-01-01
      • 2013-01-13
      • 2011-06-15
      • 1970-01-01
      相关资源
      最近更新 更多