在 Android 中检测物理键盘上的 Shift + Enter

Detect Shift + Enter on physical keyboard in Android

在为 Chromebook 准备我的 Android 应用程序并使用物理键盘时,我想在 EditText 中区分接收 "Enter"(keyEvent 66)和 "Shift+Enter"(也是 keyEvent 66 显然)来自物理键盘。我尝试了多种不同的解决方案,例如

我还没有找到使用 onKeyUp()、onKeyPreIme()、editText.setOnKeyListener(...) 或 editText.addTextChangedListener(new TextWatcher() {...} ).我在获取 Enter 事件时没有遇到任何问题,但是 Shift+Enter 在我尝试过的所有方式中都与 Enter 事件没有区别。所以我的问题是:是否有任何其他 Android 开发人员找到了从物理键盘正确捕获 Shift+Enter 的方法?

我有同样的问题,我通过检测 "Shift" 向下和 "Shift" 向上事件修复了它,并定义了一个存储状态的布尔值。 这是我的代码,希望对你有帮助。

final boolean[] isPressed = {false};
    inputEditText.setOnKeyListener(new View.OnKeyListener() {
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            // If the event is a key-down event on the "enter" button
            if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
                    (keyCode == KeyEvent.KEYCODE_ENTER)) {

                if (isPressed[0]) {

                   // Shift + Enter pressed

                    return false;
                } else {

                  // Enter pressed                  

                    return true;
                }
            }

            if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
                    (keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT)) {
                isPressed[0] = true;
                return false;
            }

            if ((event.getAction() == KeyEvent.ACTION_UP) &&
                    (keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT)) {
                isPressed[0] = false;
                return false;
            }


            return false;
        }
    });