Bug 99011

Summary: XKB_FIXED_LAYOUT for ergodox?
Product: Wayland Reporter: camalot
Component: libinputAssignee: Wayland bug list <wayland-bugs>
Status: RESOLVED WONTFIX QA Contact:
Severity: normal    
Priority: medium CC: peter.hutterer
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description camalot 2016-12-07 03:10:38 UTC
I saw Peter's post about the new XKB_FIXED_LAYOUT here:

http://who-t.blogspot.com/2016/12/new-udev-property-xkbfixedlayout-for.html

It got me wondering whether it would be appropriate to apply this to highly programmable keyboards like the Ergodox, Kinesis, etc.  Usually the user of these devices programs the layout they want into the device.  In my example, I'm currently using an Ergodox programmed with a modified colemak layout.  This produces the correct results when the Gnome keyboard layout is the standard "English (US)" and with the standard layout on Mac OS/X, Windows, etc.  I like it this way because I can just plug in the keyboard anywhere and have the setup I want.

However, since I've gotten used to colemak, when I'm typing on my laptop's built-in keyboard I switch the Gnome layout to "English (Colemak)".  I'm frequently confused when I put the laptop in the dock and then I got the wrong characters when I press keys on the Ergodox. It's especially confusing because usually I'm typing into a lock screen where I can't see the actual characters being generated. After a few failed password attempts I realize that I'm probably in the wrong keyboard layout and switch it and everything is fine.

This is a long way of saying that if the ergodox had XKB_FIXED_LAYOUT set to "English (US)" or whatever, I wouldn't have this problem. I could just leave the laptop set on "English (Colemak)" and my laptop keyboard and my Ergodox would both work as expected.  I think this would be really cool, but I suppose there is a possibility out there that someone has programmed a keyboard like the Ergodox to expect the host computer has a some other layout, in which case this change could frustrate them. In general I think that is fairly unlikely since the programming systems for these keyboards don't generally make that easy, but you never know...
Comment 1 Peter Hutterer 2016-12-07 04:20:34 UTC
hmm, I'm going to say "no" here, mostly because the use-case we were aiming for with this property are devices that are more restricted than some programmable keyboard and where the layout is truly fixed and applying *any* layout is just wrong.

In your case here that's not quite the case, it's rather that users program the keyboard to do something else but can that be expected of *all* users?

Note that I'm speaking for the general case here, you can override things locally and hope for the desktop environments to do the right thing :)
after all, GNOME won't care *why* a keyboard has the fixed layout tag set.
Comment 2 camalot 2016-12-07 05:02:20 UTC
I understand. Would the local override take the form of a udev rule that somehow sets that property?
Comment 3 Peter Hutterer 2016-12-07 05:52:38 UTC
look at the top of the 60-keyboard.hwdb file, I think it explains how to do local entries with files in /etc/ (if not, 60-evdev.hwdb does). Then you can just add the entry in a separate file and be done with it, no rules needed as long as you use known match strings.
Comment 4 camalot 2016-12-08 16:41:18 UTC
Peter, thank you for the pointer to instructions on how to modify the hwdb keyboard rules. I wasn't aware of that and it will be very useful. Also, thank you for all the other great work you do ensuring that our Linux desktops work well!

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.