Disclaimer: This is a brainstorm. As I will be having future financial troubles, this project may or may not come to reality, although, I really hope it will.
Layout:
http://www.keyboard-layout-editor.com/#/layouts/9ad15d7ba1b2d5b50dc951c051d37f6cIf the link fails to work:
https://github.com/trillobite/keyboardLayoutI have been planning on building a custom keyboard specifically designed for programmers. I am a VIM user, as you can tell by the design, but I wanted to add a bit of a custom aspect:
1. I replaced the windows key with a Fn key, this will allow the H J K L keys to report an arrow key-press.
Reason: When renaming files on the desktop, it would be nice to hit ctrl + a to highlight the text, then press Fn + L to bring the cursor to the end of the text, when simply wanting to remove a few characters off the end of the text, without my right hand leaving the home row on the keyboard.
2. Row of programmable keys on the right to set custom macro's. These can memorize a large array of key strokes.
Reason: If a process or a chunk of code needs to be manually injected into many files, one could hit MACRO then the key to program, type out the code as normal, and when finished, hit the MACRO key once more. The code written will be stored within the macro key, and pressing that key would cause it to write out the entire text, with each key stroke set to delay 100ms (approximately).
3. DELETE key is placed next to the BACKSPACE.
Reason: It's more logical.
4. END placed next to RETURN.
Reason: When coding, sometimes your in the middle of a line of text. Sometimes you just want to hit the end key, then start a new line of code with RETURN. Placing these keys near each other improves efficiency, and less hand movement.
5. INS (insert) key is removed!
Reason: I hate that key, and why is it usually placed next to backspace? So you hit it thinking your hitting backspace and screw up your code... yea, my blood boils, so it's GONE! A Fn + BACKSPACE will cause the keyboard to report the INS key press.
6. VIM key added.
Reason: It's simply another macro key, it's used to be able to start VIM with a macro. In Ubuntu 14.04 that would be CTRL + ALT + T. Would be able to reprogram to any key combination.
7. :Q, and :W added.
Reason: Some find it faster to hit one key in which it executes: Esc : q. For some, pressing one key to quit vim keeps their minds focused on the code, rather than the key combinations. :q! was not added, as it can be accidentally pressed, and all unsaved data would be lost.
This keyboard is designed to be compact, so it can be placed into a backpack. At least for me, I come to work with a laptop, and wish to use the same setup at home for personal coding projects.
If I built this keyboard, I would probably produce a controller which uses the Arduino, as it would allow me to produce a keyboard which is fully programmable, without the need for any drivers being placed on the computer in use.
This keyboard will use a DIN or PS2 out, as simple converters can be used in order to plug into USB. This will also allow the keyboard to be used on much older DOS computers. For me, this would be great, as I would like to have ONE keyboard to use on all of my systems.
Another reason: I need to refresh my C++ programming skills. I have a certificate, but I need some practice. All drivers (if any) and code will be placed on GitHub. I plan on making this 100% open-source.
Some information I have referenced so far:
http://www.arduino.cc/en/Reference/MouseKeyboardhttp://www.arduino.cc/en/Tutorial/KeyboardControllerhttp://hackaday.com/2012/06/29/turning-an-arduino-into-a-usb-keyboard/https://geekhack.org/index.php?topic=65341.0Anyone who has any comments, concerns, or any other forms of input, please reply