Keyboard layouts are numerous. Some time ago, friends of mine tried to persuade me to settle for a Dvorak layout. They proposed the BÉPO, though the programmer Dvorak would be more adapted to my professional life.
The idea was attractive. I never settled, though. Why, do you ask? The answer is simple: to be efficient on a keyboard, you need to know its layout by heart and be able to blind-type. This comes naturally after some practice.
However, switching to a keyboard layout has a learning curve. I would not mind if I were able to use the same layout everywhere, but when at work, I must comply with the hardware and rules (“Do not change the configuration of your machine! Get accustomed to your keyboard.”). And sometimes the access restrictions too (“Your rights are not sufficient to configure your clock.”).
In my not-so-long career, I have already had to use several variants of AZERTY and QWERTZ. I sometimes guess type on the Alcibiade‘s laptop, which is an AZERTY configured in international QWERTY. And then I come home and meet yet another variant of AZERTY.
How then to go and try to learn yet another layout?
One time when confronted with a QWERTZ and the explicit order not to change my configuration (as it could mess things up if they ever needed to remote control my machine), I imagined something.
To a keyboard layout adapter
The main use-case derives from my own and many variants exist. For almost anyone who type daily but does not have the liberty to control his/her computer, if they have a favorite keyboard (either because it is mechanical or because of its special layout), you just plug an adapter between the keyboard and the computer. Ta-da!
How would it work? Well, you plug an adapter between the keyboard and the machine, and the adapter must map the signals your keyboard sends to the one the computer expects. Simple as that. Basically, you transport the signal mapping work to an external device.
I discussed the idea with a genius tinkerer I know (Xevel‘s the nick) and he assured me it would be possible. We even endeavored to make this concrete but had no time to bring it to an end.
Now, if the idea seduces someone with the idea, I Open Source it rather than letting rot in a dark corner of my mind.
Inputs and outputs
The adapter was imagined to be just a box on the cable between the computer and the keyboard. As a consequence, it should have:
- a USB input where the keyboard is plugged in.
- a USB output plugged into the computer.
There should be no need to plug any extra power source in normal use.
Using this adapter should be as transparent as possible and require no change in the environment. The aim is to allow the use of a custom keyboard when all you could do is to unplug a keyboard to plug another in.
As a consequence, there must be:
- no need for any extra power source.
- no need for any driver or piece of software.
Ideally, the computer should only detect a standard keyboard.
The user of this adapter should be able to configure the input and output layouts and the box would do the mapping.
The how is mostly free. Basically, the adapter is a microcontroller which converts signals to values according to the input layout and then back to signals according to the output layout. Both layout are allowed to change but they are mostly static data.
I first thought of swappable maps you could transport with the adapter, easily switching from one to another. Xevel’s idea was only programmatic, allowing you to change the layouts using a specifically designed piece of software (which is actually preferable for durability but possibly a pain for mobility).
Another possibility would be a mobile app with Bluetooth connection to the device for configuration, which would be great for mobility, would allow fine-tuning for specific computers, and so on. Upside: great for mobility (though you may need to include the possibility to have several profiles on the app or configurations on the device). Downside: this is getting really complicated for such a little gizmo. And less eco-friendly.
So that’s it. If you ever choose to build this, send me prototypes and free goodies (I am still interested in this but I make do in the meantime).