I use an Ergodox Infinity which has 'layers'. All keys are programmable and you assign keys to toggle/activate a layer. Its essentially extra shift keys - one layer turns my whole keyboard to symbols and another makes the home position for my right hand a num pad without having to move my hand. Pretty slick once you have it setup and get used to it, takes a lot of work to get there though.