Saturday, February 20, 2010

Control-key behavior for non-Qwerty layouts

I type with Dvorak, but I keep a Qwerty layout installed for when other people need to type on my computer. Normally this works well, but the one holdout is gnome-terminal. Today I found out that it's not a bug, but a feature:

What happens is that gnome-terminal, knowing better than I do what keyboard layout I would like to be using, switches back to the system default layout whenever control is pressed. When I press control-D, it switches me to Qwerty and generates control-S. There's no option. It insists on helping me no matter how much I would rather it didn't.

This was a really disappointing thing to learn. The situation is wrong on multiple levels:

  • There is already an elaborate system in place to handle issues like this: the X keyboard layout, which maps keycodes to keysyms. It's the approach taken on Windows and Macs to this problem, and it works fine for X, too. Despite the existing solution, Gnome invents their own kludge that reinterprets what the layout layer already decided.
  • There is no option for this behavior. It's pure "do what I mean", and if it guesses wrong, you're only recourse is not to use the app at all.
  • There is a long list of complaining users on the bug log, and they are met by being told their use case is outnumbered so go away. This is not a good reaction to people who have totally normal setups that worked in previous versions of the system.
  • No other apps do this annoying remap. Thus, even if I wanted it to happen, I would only get it in gnome-terminal. Thus, it doesn't even solve the problem for people who like this layout. People who like it still need to change their keyboard layout, anyway.

As far as I can tell, the solution that will be adopted is to adjust the heuristic. Count me underwhelmed. The whole feature should be scrapped, but instead it's being further refined. In short, I agree with Simon Kagedal's conclusion:

Personally I feel that the way (I think) Windows works would be the best, i.e. that the keymaps themselves contain the correct information on how modifiers should work...

No comments: