Skip to content

fix: register physical Tab key on iPadOS hardware keyboards#14

Merged
LukeGus merged 1 commit into
Termix-SSH:dev-1.4.0from
ZacharyZcR:fix/ipad-physical-tab-key
May 29, 2026
Merged

fix: register physical Tab key on iPadOS hardware keyboards#14
LukeGus merged 1 commit into
Termix-SSH:dev-1.4.0from
ZacharyZcR:fix/ipad-physical-tab-key

Conversation

@ZacharyZcR
Copy link
Copy Markdown
Member

Summary

  • Fix Tab key not working with iPadOS Magic Keyboard: The native iOS keyboard module registered Shift+Tab via UIKeyCommand but not bare Tab. Without an explicit registration with wantsPriorityOverSystemBehavior, iOS intercepts the Tab key for its own UI focus navigation, so it never reaches the terminal.
  • Consolidate Tab handling in JS: Both Tab and Shift+Tab are now handled in a single branch, sending \t or \x1b[Z respectively.

Files Changed

File Change
modules/hardware-keyboard/ios/HardwareKeyboardModule.swift Register unmodified Tab UIKeyCommand with priority over system
app/tabs/sessions/Sessions.tsx Handle both Tab and Shift+Tab in one condition

Test plan

  • Connect to a host on iPad with Magic Keyboard
  • Press Tab — should trigger tab completion in the shell
  • Press Shift+Tab — should send reverse-tab (\x1b[Z)
  • Verify Ctrl+key combinations still work
  • Verify arrow keys, Escape still work

Fixes Termix-SSH/Support#557

The native module only registered Shift+Tab but not bare Tab, so iOS
intercepted it for UI focus navigation. Register an unmodified Tab
UIKeyCommand with wantsPriorityOverSystemBehavior and handle both
Tab and Shift+Tab in the same JS branch.

Fixes Termix-SSH/Support#557
@LukeGus LukeGus changed the base branch from main to dev-1.4.0 May 29, 2026 04:11
@LukeGus LukeGus merged commit 1334cb9 into Termix-SSH:dev-1.4.0 May 29, 2026
@ZacharyZcR ZacharyZcR deleted the fix/ipad-physical-tab-key branch May 31, 2026 11:05
LukeGus added a commit that referenced this pull request Jun 3, 2026
* fix: register physical Tab key on iPadOS/iOS hardware keyboards (#14)

The native module only registered Shift+Tab but not bare Tab, so iOS
intercepted it for UI focus navigation. Register an unmodified Tab
UIKeyCommand with wantsPriorityOverSystemBehavior and handle both
Tab and Shift+Tab in the same JS branch.

Fixes Termix-SSH/Support#557

* fix: pass jumpHosts, forceKeyboardInteractive, and overrideCredentialUsername to terminal connection (#15)

These fields were defined on SSHHost but omitted from the terminal
hostConfig passthrough. Without jumpHosts the backend cannot route
through jump servers; without forceKeyboardInteractive hosts that
require keyboard-interactive auth fail silently; without
overrideCredentialUsername shared credentials use the wrong username.

Fixes Termix-SSH/Support#422
Fixes Termix-SSH/Support#638

* fix: improve mobile terminal scroll recovery (#17)

* Add mobile remote desktop sessions (#18)

* feat: add mobile remote desktop sessions

* feat: add remote desktop input controls

* feat: polish remote desktop controls

* feat: add mobile terminal font selection (#19)

* feat: add mobile shift tab hotkey (#20)

* feat: initial UI redesign

* feat: revamp server login system

* chore: update app icon/background color

* fix: remove unused fields in the settings tab

* feat: improve the user pin system and update all settings modals to use new ui

* fix: active server not updating unless app restarts

* feat: add version in settings

* feat: improve host page UI (updated host form and added credential management)

* fix: preserve composed iOS terminal input

* ci: restore mobile checks

* feat: rewrite of connection system for all types

* fix: preserve mobile jump hosts (#30)

* fix: guard android user ca trust (#29)

* fix: capture ios hardware tab key (#27)

* fix: reset terminal input after special keys (#28)

* fix: open oidc in system browser (#26)

* fix: preserve websocket auth context (#25)

* fix: keep none-auth terminal prompts alive (#23)

* fix: allow local network SSL in Android app (#21)

* feat: allow oidc passkeys

* feat: bundeled xterm into app and added docker loading screen

* feat: add 2fa, api key, and active sessions to settings and addressed multiple bug fixes and inconsistencies with termix web

* chore: update repo images and readme

* chore: update readme to split table for screenshots

* chore: rename ios to apple in build workflow

* fix: android build failure

* feat: add snippet management and fix several bugs

* fix: web login and oidc incorrect logic

* chore: run linter

---------

Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] IPadOS Magic Keyboard not working

2 participants