Programmable keyboards with free and open firmware are not just geek toys but an accessibility tools.
I was just able to create a new layer in Vial that moves the arrow keys to the left side of the keyboard and maps them to s/z/x/c to make them easier to use in some keyboard shortcuts after breaking my right hand.