I have already had a fiddle with xkb. I found it irritating that I had to guess what keyboard setting I had to use to get the multimedia keys on the Dell Latitude I use to work. As it turns out, I wrote an entire keyboard description, which is now in the standard xkb-config project. So my name is on a very small piece of Linux. Yay me!
And yet, I was not satisfied. You see, I have always had this idea that since a keyboard turns an arbitrary keystroke into an arbitrary character on the screen, that you should be able to tell it precisely what characters result from a given set of keystrokes.
It is, of course, not that simple. In windows, for example, if you don't have the right tool to hack up something, then you're stuck with the (undocumented) Windows en intl keyboard. Which has its charms, but is tight around the shoulders and itches something shocking. In Linux, you actually have the option of doing something about it, that is, the tools are right there, but almost no-one knows how to use them. There's xmodmap, for example. That seems to be depricated, though, in favour of xkb. Don't get me wrong, xkb will do wonderful things, but you have to know what you're doing. I reckon that there are about a couple of dozen people on the planet who have a deep understanding of how xkb and its myriad of config files works. I think that I am among them... or at least, I aspire to be, one day.
Again, there is no documentation. (Or what there is is patchy and less than useful. Maybe I shall have to make that a project, in my copious free time.) It is, while more powerful than xmodmap, also more restricted because there is, as far as I can see, no way to have a local configuration. That is, there is no way to have a user set of configs which a user can select from. If you want to add a new keyboard configuration, or geometry, or variant, or whatever, then you have to hack it into place in /etc/X11/xkb/*/*. And be ready for it to be overwritten next time xkb-config is upgraded.
Anyway, I've hacked up a keyboard which almost suits me. It has the standard keys in their normal places (for the us(intl) variant), but gets interesting in the upper register. ( Aside on 'Mode' and 'Compose' )
So, I wrote my own keyboard. I'm calling it “Paleographic Roman”, because that is basically what it is designed around dealing with. Because I like Latin, Old English and Irish Gaelic, those languages are dealt with especially, but Norse and other European languages should be coped with more or less easily. I tried to make it that if <MODE>+x gives a character, that <MODE>+<SHIFT>+x will give you the uppercase form if available. All characters are in the standard Unicode set. While I have chosen characters from the MUFI standard set, no character is included if it is in the Private Use Area. And preference is given to characters, as diacritics can be obtained through dead keys and Compose. But, given all that, here's what I have:
( Keystroke tables galore! )So now I can type ¡Holá!, or Tá mé i'mo tuirseaċt ⁊ táim ag obair fós, or Þorfinnʀ ⁊ Ranúlfʀ, or Hƿæt! Ƿé ᵹardéna in ᵹéar-dǽᵹum, or Fōȝt he wiþ þat Ȝrēne kniȝt ariȝt, all straight from the keyboard, no further fiddling needed! (Well, some, because some programs don't deal with some Unicode combinations as they should, but nevermind, it works well enough, most of the time.)