WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED DUPLICATE of
bug 290779
301563
JavaScript key events not firing for dual-mode bluetooth (keyboard) devices on iOS/iPadOS
https://bugs.webkit.org/show_bug.cgi?id=301563
Summary
JavaScript key events not firing for dual-mode bluetooth (keyboard) devices o...
Ewout - 8:45 Tools
Reported
2025-10-28 03:20:28 PDT
Since iOS18.5 (or maybe 18.4), bluetooth pedals that present themselves as both a Keyboard and Pointing device no longer trigger keyup and keydown to be fired in JavaScript. This prevents web apps from handling these events to override the browser's default behaviour and perform custom actions such as turning pages, enable automatic scrolling etc. Example devices are the Coda STOMP Mini (
https://www.codamusictech.com/products/stomp-mini-page-turner-app-controller
) and JOYO JSP-01 (
https://www.joyoaudio.com/product/285.html
). These are bluetooth pedals that send Left, Right, Up, Down, PageUp, PageDown and/or Space and Enter keys, and are used to by many musicians to enable hands-free paging in music apps. Similar devices from other manufacturers such as AirTurn, PageFlip and Donner do still trigger these events, probably because they identify themselves as a Keyboard HID device only. If another bluetooth keyboard is connected, pressing a pedal on the JOYO and Coda pedals DO trigger the JavaScript events. As soon as there are no other bluetooth keyboards connected, the key events for pedal presses are not fired anymore. I have contacted Coda Music Tech about this issue, they managed to reproduce the issue with iPadOS18.7 and reported back to me: "iPadOS 18.7 Safari blocks JavaScript keyboard event listeners from receiving events from dual-mode HID devices (devices that present as both keyboard and pointing device) when Safari is in Desktop Mode. Our pedal uses this dual-mode design to trigger automatic virtual keyboard activation when users need text input. The browser still processes keystrokes—but JavaScript event handlers never fire." Code to reproduce: window.addEventListener('keydown', (event) => { console.log('Received keydown event:', event); // Not fired }); Summary: - Affected devices: bluetooth devices that use dual-mode (both keyboard and pointing device) do not trigger JavaScript key events in Safari on iOS/iPadOS since 18.5 (or maybe 18.4). - Non-affected devices: bluetooth devices that present themselves as Keyboard only work as expected and do trigger JavaScript key events. - Affected devices work as expected once, and as long as another non-affected device is also connected to the iPhone/iPad - Tested non-working devices: iOS18.5, iPadOS18.7.1 - Tested working devices: iPadOS15 - Affected devices have been tested and work as expected with other browsers (Chrome, Edge, Firefox) on other platforms (MacOS, Android, Windows, Linux).
Attachments
Add attachment
proposed patch, testcase, etc.
Alexey Proskuryakov
Comment 1
2025-10-28 08:37:37 PDT
*** This bug has been marked as a duplicate of
bug 290779
***
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug