Okay, I'm at my wit's end. Has anyone managed to get a non-qwerty layout to work properly with ctrl and fn?
Some keys have fn-chords with behavior, like play, volume, brightness. And some keys have ctrl-chords with behavior, like ctrl-c for copy and ctrl-v for paste.
As far as I can see, both of these are implemented atop the android key codes, not the mapped characters. So KEY_V, while it may be emitted from any of the physical key switches (via kernel patch and/or kl file), and may have any different physical label on the keycap, and may be mapped to another character for typing (via kcm file), is still the key you use with ctrl for paste, and the key you use with fn for volume-up.
But some keyboards, like dvorak, have the volume-up label on a different keycap than the letter V. No amount of messing with the kernel scancode map, or the kcm character map, or the kl keylayout, seems able to rectify this. It seems I need to make a change somewhere in android's input layer, and Planet hasn't released the source for their build (have they?).
For example, I'm guessing they may have added code here:
https://android.googlesource.com/platform/f...nager.java#2660to take the screenshot only when KEYCODE_R is pressed. But on the dvorak layout, the key that takes a screenshot is P. So they must be using kcm to tell android that KEY R has base: 'p'. But then you won't be able to use ctrl-c/ctrl-v for copy/paste. And indeed, on my device with dvorak keycaps, it doesn't work (I can either have the fn keys work or the ctrl keys work, but not both.)
The same problem should apply to AZERTY users. Are you able to use ctrl-a for select all in gmail or chrome? Are you able to use ctrl-w to close a chrome tab? It seems impossible to support this while also supporting fn-A for MEDIA_PLAY_PAUSE and fn-Z for MEDIA_PREVIOUS, as is painted on the keycaps.
Any pointers would be much appreciated.