Skip to content

fix(symbian): normalize E7 letter keys - #187

Merged
doodlewind merged 1 commit into
mainfrom
fix/symbian-letter-key-normalization
Jul 26, 2026
Merged

fix(symbian): normalize E7 letter keys#187
doodlewind merged 1 commit into
mainfrom
fix/symbian-letter-key-normalization

Conversation

@doodlewind

Copy link
Copy Markdown
Collaborator

What changed

  • normalize Qt/S60 lowercase ASCII letter keysyms before PocketJS button/native-key mapping
  • apply the same normalization to key press and release events
  • keep Qt special keys, punctuation, Unicode, and Fn-generated secondary characters unchanged
  • add a C/C++98-compatible runtime helper and compile-time regression fixture
  • pin the new runtime header in the Symbian qmake and npm package surfaces

Root cause

Qt 4.7's Symbian backend forwards ordinary character keysyms directly. On the Nokia E7, an unshifted physical W arrives as lowercase ASCII w, while the PocketJS host only matched uppercase Qt::Key_W (and likewise for A/S/D/R/E). Special keys such as Enter, Backspace, and arrows use Qt's special-key translation and therefore continued to work.

Impact

Unshifted E7 letter controls now reach native extensions and standard PocketJS button mappings. This restores OpenStrike WASD movement, R reload, and E fire without adding application-specific handling.

Validation

  • bunx tsc --noEmit
  • bun test tests/symbian-runtime.test.ts (14/14)
  • bun test tests/npm-package.test.ts (3/3)
  • git diff --check
  • host C++98 compile
  • pinned GCCE arm-none-symbianelf-g++ -std=gnu++98 -Werror compile
  • independent review: no P0-P2 findings

Real-device verification will follow through the OpenStrike 0.3.1 package before this PocketJS target's hardware acceptance is closed.

@doodlewind
doodlewind marked this pull request as ready for review July 26, 2026 00:29
@doodlewind
doodlewind merged commit e8a8e80 into main Jul 26, 2026
@doodlewind
doodlewind deleted the fix/symbian-letter-key-normalization branch July 26, 2026 00:29
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.

1 participant