2022-07-10 16:36:49 +02:00
# I2C Puppet mods for Linux systems
The original version lacked certain characters, such as < ESCAPE > , and the characters "< >{}[]^& %=\"
which made it difficult to use on Linux systems
This version of the firmware has been modified to support Linux systems.
The following changes have been made
2022-07-10 17:12:49 +02:00
- The backspace key works during the GUI login
- The Sym key not acts as a Control key, so SYM+C is Control-C
- The four top button keys are now used to provide the missing characters.
2022-07-10 16:36:49 +02:00
The original definiton of the keys were this
2022-07-12 14:43:49 +02:00
| | L1 | L2 | R1 | R2 | SPKR | Mic| BS | NL | SPACE |
2022-07-10 17:12:49 +02:00
| ------|-------|-------|-------|-------|------|----|---|---|---------|
2022-07-12 14:43:49 +02:00
| none | | | | | $ | ~ | \b| \n| space |
2022-07-11 20:39:08 +02:00
| Alt | | | | | \` | 0 | | | |
2022-07-10 17:12:49 +02:00
| Shift | | | | | $ | | | | |
2022-07-12 14:43:49 +02:00
| Sym | | | | | $ | | |\| | tab |
2022-07-10 16:36:49 +02:00
2022-07-10 17:12:49 +02:00
This firmware adds the following mappings
2022-07-10 16:36:49 +02:00
2022-07-10 17:12:49 +02:00
| | L1 | L2 | R1 | R2 | SPKR | Mic| BS| NL| SPACE |
| ------|--------|-------|-------|-------|------|----|---|---|---------|
2022-07-11 20:50:12 +02:00
| none | escape | % | = | \\ | $ | ~ | \b| \n| space |
2022-07-11 20:39:08 +02:00
| Alt | > | ] | } | & | \` | 0 | | | |
2022-07-10 17:12:49 +02:00
| Shift | < | ] | { | ^ | $ | ~ | \b| | |
2022-07-11 20:50:12 +02:00
| Sym | | | | | $ | ~ | \b|\| | tab |
2022-07-10 16:36:49 +02:00
2022-07-10 17:12:49 +02:00
## Linux Debug tips
2022-07-10 16:36:49 +02:00
The keyboard was two "outputs" - one is the USB HID interface, the other is the serial port.
Any printf() command goes to the serial port.
When the keyboard is plugged into a Linux system, a new TTY interface will appear. I usually use "ls -lt /dev/tty* | head"
to learn the name, as the newest port will appear first. On my system, it's /dev/ttyACM0
So on one terminal, I type
2022-07-10 17:12:49 +02:00
cat -v < /dev/ttyACM0
2022-07-10 16:36:49 +02:00
while on a second terminal window, I type
2022-07-10 17:12:49 +02:00
cat -v
2022-07-10 16:36:49 +02:00
The first one will print all of the printf output, and the second will show you how the keyboard works normally.
2022-07-10 17:12:49 +02:00
## Compiling firmware on Linux
2022-07-10 16:36:49 +02:00
I edit the files in < GIT > /ic2_puppet/all/ using my preferred editor. In my case, I use emacs. I have the keystroke combination "Control-C M" bound to compile, using
2022-07-10 17:12:49 +02:00
(global-set-key "\C-cm" 'compile)
2022-07-10 16:36:49 +02:00
And when I press these keys, emacs saves all files, and recompiles the
code. I have a small hub with switchable on/off ports, and restart the
keyboard into boot mode, and then do a "make install" to load the new
firmware
2022-07-10 17:12:49 +02:00
## TODO
2022-07-10 16:36:49 +02:00
Currently - the SYM+Button keys are defined as the character "x" to indicate it's not been specified.
I'l like to make these keys to the 4 arrow keys.
Also - it might be possible to create key combinations by combining the modified keys, like SYM+Alt+key