Skip to content

Feature request: Option to show on-screen keyboard with physical keyboard connected #1900

@sienks

Description

@sienks

Use Cases

When using a Bluetooth keyboard (or other HID accessories such as media remotes, presentation clickers, or smart rings), the on-screen keyboard is hidden as soon as the device is enabled as an input device in the Bluetooth settings menu. Android treats the connected Bluetooth keyboard as the sole input method and suppresses the on-screen keyboard.

This issue is documented on GrapheneOS, where the system level "Show on-screen keyboard" toggle (under Settings → System → Languages & Input → Physical Keyboard) is no longer exposed in the UI. See: GrapheneOS/os-issue-tracker#5055

As a workaround, I applied the following via ADB:

adb shell settings put secure show_ime_with_hard_keyboard 1

This successfully forces the on-screen keyboard to remain visible alongside the Bluetooth keyboard/HID device. However, this is a global system setting that affects all keyboards, requires ADB access, and is not discoverable by typical users.

Proposal

Add a toggle in FUTO Keyboard's settings, e.g. "Show keyboard when physical keyboard is connected", that overrides the default behavior of hiding the on screen keyboard when a hardware/HID keyboard is detected.

Note to devs: I used AI to generate the following suggestion:

The implementation should be straightforward, override onEvaluateInputViewShown() in the InputMethodService subclass to return true when the user has enabled this setting:

@Override
public boolean onEvaluateInputViewShown() {
    if (mPrefs.getBoolean("show_with_physical_keyboard", false)) {
        return true;
    }
    return super.onEvaluateInputViewShown();
}

This is the same approach used by Gboard (via its own internal setting) and Hacker's Keyboard (via its "Show soft keyboard: Always" option). It requires no special permissions and works across all Android versions and ROMs.

References

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions