So, I am not a GUI Wizzard, nor I want to be. Programmable mouse and second monitor allow me to perform most of the task as fast as I can process them anyway. But, if I were to design "perfect" GUI, it would not require lifting your hands most of the time. All thanks to using all three of modifier keys, mouse gestures and radial menus - because all of these are options multiplayers, and they reach their true potential only when combined.
First - modifier keys. ALL they do is modify and allow other stuff - if you press one by accident, nothing happens. Two of them should be enough - but you can have more, as long as they are in comfortable positions. I choose two because that's how many legs most of us have. Legs that, you guess it, could press these two extra keys. One at a time, or both - all comfortable. That gives us 4 possible states - one for "normal" use and 3 for all the fun.
Second - we use gestures. Because each gesture is actually 3 gestures depending on modifier keys, we don't need fancy ones. Just simple directional A-B and A-B-A, approximation to one of 8 cardinal directions, is 48 very unique, very easy gestures. We could have more, but we don't need them. That's because even after we reserve some for things like copy and and paste and other always useful stuff, we still have plenty to bring up...
Third - radial menus. Even after mapping most used functions, we still have plenty of gestures to use. Instead of spending them on single thing, we instead use each one to bring up different radial menu. Because that gives us so many combinations we can keep the menus small - especially if we allow nesting and scrolling and other types of menus when there are too many options. And they will be all annotated at all times, with nice icons and all that. Because we can do that - they will only show when we want them to show.
Now, the problem can be memorizing what radial menu has what. There are two solutions - clickable sidebar that you can toggle any time, that also functions as hub for easy modification of these menus. And... simply not using that many at first. Sure, this is basically total replacement of normal GUI, but nothing stops you from having both installed and slowly switching as you learn. You don't need quick access to every program and every file on your computer.
So, this is nice GUI with minimal modifications to hardware (you can just use mouse with 2 programmable buttons). But these two buttons can not only be used for a gestures - they can also be used with keyboard. Not so you can have over 400 keys (I mean, if you want, sure). It allows you to START smaller. People are typing with just a few fingers every day - One (supported) hand, after some practice, will suffice for most but especially typing-heavy applications, like programming. But even there, modifiers under your feed allow you to always keep your hand where you want them - or to make even more shortcuts, for even faster computer use. And if you hate mouse so much, you can use other input device. The implementation is not so important - it's all about amplifying already existing techniques.