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.
<rdar://problem/18449540>
Could you please test on iOS 8?
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.
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.
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?
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".
I am unable to reproduce this issue. Closing Resolved Configuration Changed.