How to calculate the ideal keyboard layout for programmers

ergonomicskeyboardkeyboard-layoutkeylogger

I'm thinking about creating a new keyboard layout for programming. Now I mostly program in HTML, JavaScript/jQuery/CoffeeScript, CSS/LESS/SASS, though I may dabble in shell scripting & RegEx soon, with perhaps LUA, C++, & Java in a few years. I want to have scientific proof to the key's placements. I do have ideas/requirements, some invented myself, some taken or derived from others:

  • Almost All keys may be re-arranged
    • RETURN, Left SHIFT, Left CONTROL, SPACE-bar, & TAB need to stay, but all others, including numbers, symbols, & movement keys are open to moving
    • Might be optimal to leave zxcv & perhhaps s to stay in place, due to common Undo/Cut/Copy/Paste/Save habits 🙂
    • DELETE key likely to be moved to where CAPS LOCK is 🙂
    • Unlikely to keep matching brackets like (){}[]<> next to each other; see below
  • The only accurate way IMHO to count key usage is by key-logging, not key counts of files:
    • Much of "programming" is sending emails, posting to forums, twitter, bug reporting, web surfing, etc.
    • I believe much of keyboard usage is "movement"; tabbing between fields, page down, moving cursors around, etc. These are not captured by file outputs
    • Many editors use auto-complete & macros, so close-deliminators: )}]> may not be as often typed as openers, thus only key-logging & not parsing files will accurate.

So my questions:

  1. What are safe free/open source software keyloggers, that will not upload files unless you send a separate file yourself? I would prefer NOT to collect log-in names & passwords, not only for security but also for because that can throw of my analysis IMHO.
  2. What programs can be used client-side to digest single & pair key-counts? Or how to best build one?
  3. Where is it best to find volunteers to help out?

Best research so far:
http://www.michaelcapewell.com/projects/keyboard/layout_capewell.htm

http://viralintrospection.wordpress.com/category/technology/keyboard-layouts/

& Wikipedia: Keyboard_layout#Non-QWERTY_keyboards_for_Latin_scripts

TIA!

Best Answer

Use a program like WhatPulse to record which keys are hit, and how many times.

After asking on the FreeNode IRC network about how to get the key frequencies together, a user lead me to this:

  1. Get your text, such as a program(s), and copy them.
  2. Go to http://type.trmnl.org/
  3. Under the buttons, Be Sure to uncheck 'autostart with clipboard contents on paste'
  4. Then, paste your program into the text box.
  5. Press Cntrl+Shift+K, which will open a console.
  6. Type in count_digraphs() and press Enter.

The results are read like this: "ar" 7 17 10 "ra" which means 'ar' was pressed 7 times, 'ra' was pressed 10 times, and all together 'ar' and 'ra' were pressed 17 times together

Related Question