Bug 137072

Summary: iOS Hardware Keyboard events have ctrlKey = true set when CapsLock is on
Product: WebKit Reporter: Alan <areeve>
Component: UI EventsAssignee: Nobody <webkit-unassigned>
Severity: Normal CC: ap, areeve, dbates, enrica, pkoszulinski, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: iPhone / iPad   
OS: iOS 7.0   
Bug Depends on:    
Bug Blocks: 190571    

Description Alan 2014-09-24 12:40:44 PDT
When a hardware keyboard is connected to an iPad (Bluetooth or physically connected) and the keyboard has its CapsLock key on then keyboard events (keydown/keypress/keyup) detected via JavaScript all have the ctrlKey property as 'true'. This has been tested on several iPads/keyboards and I am told this worked ok in iOS 6.
Comment 1 Radar WebKit Bug Importer 2014-09-24 18:26:25 PDT
Comment 2 Alexey Proskuryakov 2014-09-24 18:27:17 PDT
Could you please test on iOS 8?
Comment 3 Alan 2014-10-07 11:53:43 PDT
Was finally able to test this on iOS 8 (8.0.2) and the result was the same. When the Caps-Lock key is on the ctrl key flag comes through as true in the javascript event. When Caps-Lock is off and the Ctrl key is pressed the ctrl key flag comes through as false.
Comment 4 Piotrek Koszuliński (Reinmar) 2014-10-08 07:19:26 PDT
This issue affects CKEditor pretty badly (http://dev.ckeditor.com/ticket/12477). I guess that every application which has some keystrokes handling have the same problem.
Comment 5 Alan 2015-04-23 12:33:05 PDT
I just tried on iOS 8.2 and this is STILL broken. Also tried on iOS 6.1 and it doesn't work there either so perhaps STILL broken is wrong and this never worked.

This is a major impediment to anyone trying to use a JavaScript based editor such as CKEditor on iOS. Any plans to fix this any time soon?
Comment 6 Daniel Bates 2018-09-27 14:26:28 PDT
Alan, are you still able to reproduce this issue? I am not seeing this behavior on iOS 12 when I disable "Switching Languages using Caps Lock" (*) and testing using <https://unixpapa.com/js/testkey.html> with showing modifiers checked.

(*) Ensure a hardware keyboard is attached or paired and then open the Settings app and choose General > Keyboards > Hardware Keyboard. Then disable "Switching Languages using Caps Lock".
Comment 7 Daniel Bates 2019-06-14 21:08:22 PDT
I am unable to reproduce this issue. Closing Resolved Configuration Changed.