If you use something like autohotkey every keyboard is programmable. It probably depends exactly what you want.
I just set the keys on my numeric keypad to trading functions (and I could alt, ctrl, or shft them for 3+ times the number of functions). But you get the idea.