Granted, I only hooked up 4 number pads, but the program is simple and extensible.
I used actkbd to fetch the keyboard input and xdotool to send the Unicode character requested to the active window – eg. Chromium and Twitter. There is a configuration file for every keyboard, so switching out characters and adding new keyboards is easy.
After downloading and compiling actkbd (it’s simple: wget that archive, untar it and then just
make;sudo make install.
Don’t forget to install
xdotool and Chomium: Firefox doesn’t like unicode characters coming from a keyboard (there would be multiple workarounds, like entering them via ctrl+shift+u->hexcode or using xclip to copy and send ctrl+v to paste a char.)
The configuration is very simple: for every keyboard n connected, a actkbd<n>.conf file is created. For every key one line is added:
98::grab:xdotool key U1f600
where 98 is the scancode of the key and U1f600 is the character you want to display. To get the scancode run
sudo actkbd -s -n -d /dev/input/by-id/... and start pressing keys.
Now all you would need to do is run an instance of actkbd for every keyboard like this:
sudo actkbd -d /dev/input/by-id/usb-<bla> -c actkbd<n>.conf -D
But now see it in action (evil vertical video here, normal video below):