• G
    Reland: Use dispatchKeyEventPreIme, and handle keys sent to... · 3cd70f2c
    Greg Spencer 提交于
    Reland: Use dispatchKeyEventPreIme, and handle keys sent to InputConnection.sendKeyEvent on Android (#21979)
    
    This re-lands #21163, which was reverted in #21513
    
    Now that flutter/flutter#67359 has landed, this change will no longer cause spaces (and other shortcuts) to be ignored in text fields if there is no action associated with the intent, even if there is a shortcut key mapping to an intent.
    
    Here's the original PR description:
    
    This switches from using dispatchKeyEvent to using dispatchKeyEventPreIme so that keys can be intercepted before they reach the IME and be handled by the framework.
    
    It also now intercepts key events sent to InputConnection.sendKeyEvent, as some IMEs do (e.g. the Hacker's Keyboard), and sends the to Flutter before sending them to the IME (which it now only does if they are not handled by the framework).
    
    This fixes the problem where pressing TAB on a hardware keyboard sends the tab to both the text field and to the focus traversal system.
    
    Note that we still can't intercept all keystrokes given to a soft keyboard, only those which the soft keyboard decides to send to InputConnection.sendKeyEvent.
    3cd70f2c
AndroidKeyProcessorTest.java 7.6 KB