geekhack
geekhack Community => Ergonomics => Topic started by: oneproduct on Wed, 07 January 2015, 02:20:12
-
I've always been interested in trying more optimal keyboard layouts. As several other people did, I wrote a program that tries to algorithmically determine some good layouts based on some heuristics. I had been using http://patorjk.com/keyboard-layout-analyzer as a sort of second opinion to make sure that my program and heuristics weren't nonsense and luckily it turns out that both my program and that website said they were good.
The problem I had with working on layouts is that I could sometimes see some changes which are either obvious to the human eye but not something that the algorithm would catch each time or changes that were actually less good heuristically but which I perceived would be much more human friendly in terms of comfort. This made me want to make a few hand edits, and this was both awkward and slow to do both in my program and in that online keyboard layout analyzer.
So I made this real time, interactive one which lest you edit the layout or add additional text on the fly.
I just want to add a few more things to it and I'll upload it somewhere so that hopefully some people will find it useful.
Any thoughts or suggestions would be welcome!
-
My problem with all those layout analyzers is that I never write books.
I'm a programmer writing in Dutch and English and so these tests aren't really representative.
It would be cool if the tool could read WhatPulse data, at this moment I do that manually in a Excel but the only problem that I have is that I cannot detect combinations of letters like 'TH'
Looks nice though!
-
Neat tool. I’d skip the single-number metric: all the other ones I’ve seen are basically someone’s arbitrary preferences, not grounded in anything empirical (and usually not even grounded in plausible reasoning).
-
My problem with all those layout analyzers is that I never write books.
I'm a programmer writing in Dutch and English and so these tests aren't really representative.
It would be cool if the tool could read WhatPulse data, at this moment I do that manually in a Excel but the only problem that I have is that I cannot detect combinations of letters like 'TH'
Looks nice though!
You could point to some code files and it could read those as well. At the moment you'd have to change the extension to .txt to do so but I could easily remove that.
Is there a specific format to WhatPulse data? Perhaps I could read that. I guess I might go download that myself to try it out.
I probably have to add some more support for languages that have larger character sets. How many alphabetical keys do you have on a Dutch layout keyboard? In English we just have the 26 but I imagine that getting characters with accents either requires additional keys or a modifier key.
Neat tool. I’d skip the single-number metric: all the other ones I’ve seen are basically someone’s arbitrary preferences, not grounded in anything empirical (and usually not even grounded in plausible reasoning).
Very true. My idea was to have sliders where you could personally determine the weight of every statistic so that you can use your own heuristics, but even then that would only work for statistics that I bothered to calculate.
-
I got Colmak for all the things I entered. Very cool!
-
If you mean with the patorjk layout analyzer you'll want to try some of the other predefined options in the layout configurator. There's several that outdo it like MTGAP and balance twelve for example.
I'm working on one of my own that says it bests even those though! :D But it's all based on what heuristics you use, so there's no real right answer.
-
This looks great but I'm not sure about the 30 key limitation. This just ignores numbers, symbols and modifiers which are critical to analyse code because of case sensitivity and heavy symbol use. It also ignores the thumbs which limits you to traditional keyboard layouts; the maltron layout puts the E on the left thumb, for example. I guess this is understandable as most people use a more or less standard layout, but there is a lot of interest in layouts for the ergodox. I have to admit bias on the last part because I don't want to give up the use of my left thumb. :p
-
I'm a programmer, but in general I find the following two things are generally true:
1. Numbers and symbols aren't a large part of "regular" text.
2. When programming you don't need super fast access to symbols.
So because of that I'm mostly just interested in being able to type regular text quickly for emails, documentation and instant messaging.
I have a kinesis, ergodox and truly ergonomic which all have multiple thumb keys. However I don't find it important to include thumb keys in the layout analyzer as I consider a thumb press to be "free." It neither contributes to penalties such as "same finger" nor bonuses such as "alternation." So long as you don't put two letters on a thumb I guess...
I could expand it to include thumb keys of course, which is why I was asking for suggestions and comments. :)
-
Nobody is realistically going to change around the layout of the number keys anyways...
When do you plan on releasing the program Oneproduct.
-
I'd like to release it right now pretty much, at least a first version. But it turns out it might be tricky trying to package it up to be usable for other people due to some dependencies you need which aren't typically on most people's machines. Looking into it!
-
You're probably right about the numbers themselves although I think I have seen the suggestion that numbers should be something like 8642013579. I'm a programmer too and I find that the placement of the symbols makes a big difference. For example I type the left bracket and curly brace an awful lot, but type the right ones rarely because the IDE adds them for me. I debated placement of those keys on my ergogox which is why I thought it would be nice to be able to analyze them. I actually placed the first key on the caps lock location which I wouldn't be able to analyze in the application as it currently stands. So I guess the bottom line is that I want to be able to analyze more than just the letters. ;D
-
I'm a programmer, but in general I find the following two things are generally true:
1. Numbers and symbols aren't a large part of "regular" text.
2. When programming you don't need super fast access to symbols.
So because of that I'm mostly just interested in being able to type regular text quickly for emails, documentation and instant messaging.
I have a kinesis, ergodox and truly ergonomic which all have multiple thumb keys. However I don't find it important to include thumb keys in the layout analyzer as I consider a thumb press to be "free." It neither contributes to penalties such as "same finger" nor bonuses such as "alternation." So long as you don't put two letters on a thumb I guess...
I could expand it to include thumb keys of course, which is why I was asking for suggestions and comments. :)
I'd like to see it with the thumb keys. I played around with thumb keys and mtgap/patorjk optimization last year, and came up with something like:
[attach=1]
Then I took the above as a guide and threw in the kitchen sink, just because I could.
[attach=2]
It would be interesting to see how they rate. :D
-
I have another suggestion for your application; a comparison between two layouts. When making change it would be nice to be able to easily see the deltas in the computed statistics. I suppose you could run two copies of the application but it would be nice to show the actual value changes and maybe a percentage.
-
Um... I don't know if you can do this..
But the most time consuming task is NOT where each key is as long as it's UNDER the hand..
The most time consuming task is any transitions that require LIFTING the hand.. or turning the wrist
So you really shouldn't be analyzing return to base finger position at all.. as most experienced typists don't do that..
You should be analyzing transitions like h to p, n to . , q to t , a to g
Things like like.. and of course b to 3, c to 4, c to 5..
The typical keyboard analysis from base position is fundamentally flawed and completely useless...
-
I have another suggestion for your application; a comparison between two layouts. When making change it would be nice to be able to easily see the deltas in the computed statistics. I suppose you could run two copies of the application but it would be nice to show the actual value changes and maybe a percentage.
I've actually wanted the same! I'll do this as my next thing. I've been taking screenshots of one layout then switching to another and comparing them. :D
Um... I don't know if you can do this..
But the most time consuming task is NOT where each key is as long as it's UNDER the hand..
The most time consuming task is any transitions that require LIFTING the hand.. or turning the wrist
So you really shouldn't be analyzing return to base finger position at all.. as most experienced typists don't do that..
You should be analyzing transitions like h to p, n to . , q to t , a to g
Things like like.. and of course b to 3, c to 4, c to 5..
The typical keyboard analysis from base position is fundamentally flawed and completely useless...
I'll actually don't measure distances at all at the moment, as like you said, they're often kind of flawed. I do agree with you on twisting and lifting though. I'll see if I can find some intelligent way to measure that.
-
Little off topic but last night I was just asking if you were still around here :D You still have those NIQMODS on that Realforce?
-
I do indeed.
-
I'm curious to know what language you used and if you plan on releasing anytime soon? :p You've made me interested in playing with layouts and I've been using MTGAP. I want to tweak it but I've been far too spoiled by writing code in Java/C# to do much. (It uses c++ in C style.)
-
It's in C++ as well actually, so maybe you wouldn't be any better off. ;)
Though it's really not a ton of code or anything and there aren't a ton of really specific C++ things going on.
I've been meaning to release it, but every time I go look up the documentation about how you're supposed to actually distribute it (written with Qt framework) it turns out it's a huge hassle, especially if you use the MSVC compiler which I am using. Soooo... some part laziness hah. Someday... lol.
-
Unrelated to the main goal of your program, but since some of the functionality is there I wonder if you would consider adding an onscreen keyboard practice feature sometime in the future. This is not something which I have managed to find in any typing tutor software out there, and might be fun to check your typing habits etc.
I don't think it would be essential to have many features, the main idea would be an onscreen keyboard in the user's layout that reacts to pressed inputs, whilst allowing the input to flow to a text area or another focused application. Of course, if it did parse sample typing texts the keyboard could then offer quick feedback on hit key vs target. A real-life testing feature to go with all those interesting numbers =)
-
C++ isn't really a problem, but the way MTGAP is written as plain C without classes but using C++ and Posix libraries in places is not so great for me. Mainly it's no written so that you can easily use it as a library. Still it's all good, I just started playing around with a project on my own. I'll probably learn more that way.