I would like to see something that records your keystrokes and gives you stats on what you type the most. Then spits out a keyboard arrangement to start from.
Not sure how you'd get around it being a huge security risk? Maybe only write totals for keypresses every 30 minutes?
Edited to add: Does anyone daily-drive a Keyboardio Model 100? I really liked the concept and participated in the kickstarter, but unfortunately found I didn't enjoy using it that much.
I've settled on a Keychron Q10 with the Alice layout[1]. It's a nice compromise between the full on split and standard keyboards. It's nice and heavy, with QMK/VIA customization, and some useful macro keys I assign to some Emacs shortcuts like M-x and C-g. I do wish it had a thumb wheel and/or some Moonlander-style thumb keys below the space bars.
The problem with that - the same problem layouts like Dvorak have but worse - is that I sometimes have to use other computers. Any custom layout will be great for me - once I put forth the effort to learn it of course, but since it will only be for me nobody else can use my computer (This computer I'm using now I don't care as only I touch it). However I have computers that others in my family also use, computers at work where sometimes I share a keyboard. All of that becomes impossible and that negative is greater than any potential benefit.
It's my own experience, and it anecdotally seemed to be shared with other people who have modified their main keyboard:
The regular qwerty/qwertz keyboards are so ingrained in our muscle memory and society (think touchscreen keyboards) that they still work as backups and you do not "forget" how to efficiently use regular keyboards. I guess it does depend on how often you're swapping around.
I started with Dvorak young - about the same time I was learning "proper" typing (as opposed to hunt and peck). I wasn't good enough at QWERTY to go back and so I eventually had to give up. Besides, all the studies of typing I've seen are not compelling - most don't try to control for that fact the alternative layout users are likely to study typing and thus be better than average.
I've used Dvorak essentially full-time for the last 20 years and I can still type in QWERTY. In fact, I just switched to QWERTY just now to type this and it feels a bit awkward and I make some typos, but it's perfectly usable.
The hardest part of switching is punctuation and shortcut keys, not the letters themselves. But I can use other people's computers and usually most people don't know that anything's odd.
My top menu bar has a toggle to switch layouts, so anyone can use my machine. I can also still type QWERTY, so I can use any other machine. These are non-problems.
> I would like to see something that records your keystrokes and gives you stats on what you type the most. ... Not sure how you'd get around it being a huge security risk?
A small program that locally collects data and lets you analyze it locally is pretty much a definition of a computer! IMHO this is not the place to worry about a security risk.
Note that the author had video of herself typing and it probably didn't trigger the "security risk" reflex because it's so obviously safe -- safe enough to post in this case. I mean I'm typing right now and when I push the "reply" button the result of my typing will be posted right to the Internet with no access restriction!.
Anyway, with that out of the way: I like your idea. With the raw data stream you can look not just for simple frequency but n-grams as well. The same data stream could be used to design single-handed chord keyboards as well, and even malleable layouts for programs with shitty key assignments (I refuse to call them "shortcuts").
I wrote a little Emacs Lisp for this, never published it. I kinda doubt that a similar script would be as easy to write for an OS less friendly than Emacs.
You don't need a keylogger. Just take some things you've written and count the characters. It won't be exact since it excludes rewrites but the distribution should be very close.
This bad approach is why backspace and cursors keys are ignored in many layouts because they don't appear in the text corpus, which is a bigger issue than rewrites
You do need a keylogger, and a context-aware one at that for proper analysis, otherwise it's better to just use an existing layout, won't get much extra from personal corpus anyway, so not worth the effort to do a poor personalized analysis
The SwiftKey keyboard (mobile) used to (maybe even today) ask for your Gmail account, goes through your stuff, recognizes your style and includes your vocabulary.
Ignoring the obvious privacy issues, it provides great suggestions and learns some words that are not in the other keyboards' dictionaries.
Maybe you could apply the same for aiding an algorithm to create a personalized keyboard layout.
At least for any defined set of layouts, you could infer what those other keypresses would be and compare their efficiencies. Still a compromise but it satisfies all the security issues.
If you do go down this rabbit hole, you probably want to optimize hand alternation. That is, it is not enough to keep the high value letters home row, you probably want to split them between hands, while keeping them home row. Similarly, the slowest combinations of characters will be the ones that force a finger to go from top to bottom row. On qwerty, as an example, 'cemetery' would be pretty bad for the opening two letters.
That's been made many times, but it may not be as useful as it sounds. You might learn something about what special characters you use more than the average person, but outside that, generic datasets are good enough. If you have a reasonable variety of thumb keys (instead of a single giant spacebar), you are probably better off putting your symbols on another layer anyway. Keyboard layout improvement is relatively logarithmic: you can only optimize so well for the set of permutations of keys you will type. Eventually, the variety of permutations becomes a ceiling for optimization. Any recent intentionally optimized layout will be drastically better than qwerty, marginally better than Dvorak, and roughly comparable to Colemak.
--
I've been using a Model 01 (the original release of the 100) for a few years now. It's to the point where several switches are wearing out from regular use. I happen to enjoy nearly every design decision, but am most particularly fond of the thumb clusters. I plan to eventually build a dactyl-like from scratch, with very similar thumb clusters. My favorite feature by far is the thumb-knuckle/palm key.
When I switched to the Model 01, I also learned the Workman layout. Changing both together helped isolate the change of muscle memory to its own additive context. Right now, while I'm away from home, I'm typing on a traditional board (a generic laptop) configured with qwerty. I would rather be at home typing on my Model 01, but I can live without it: the traditional qwerty experience is no worse than it was before.
If you want a privacy-compatible logger, simply record every two-key sequence with a counter on each. That way, order is obscured, but you have a relational graph.
> I would like to see something that records your keystrokes and gives you stats on what you type the most. Then spits out a keyboard arrangement to start from.
> Not sure how you'd get around it being a huge security risk? Maybe only write totals for keypresses every 30 minutes?
I did this once with a terrible script that just recorded keys with... I forget, probably either xev or `xinput test`. Anyways, yes, huge potential security/privacy risk but IMO it's fine if you keep it local and don't persist to disk without encryption (read: put the file on an encrypted filesystem or tmpfs). I specifically didn't want just the per-key total presses because I was interested in use of shortcuts and common substrings (IIRC I was looking at what to make macros of to save typing); if you just care about what actual keys get pressed the most and are only looking at rearranging the same keys then aggregation might make it safer.
Once you have a corpus of your own personal text, I'd recommend to use the current best analyzer, oxeylyzer[0]. You can find more details on the Alternate Keyboard Layout discord.
It also has a “personalized layout”, though when I tried it a few years ago (using a chapter from a novel I wrote as input), I was unimpressed and stuck with Colemak.
I’ve been tinkering with some ideas around this based on the Halmak project [1] which used a genetic algorithm to choose the layout. Some day I’ll do a writeup about it.
I daily drive the Keyboardio Model 100. I like it a lot, but I really would like to remap a few of the special characters. It works fantastically well for just arbitrary documents, but writing C++ is frustrating. The custom shape of all the keycaps makes it basically impossible to remap without just using clear keycaps.
Just look at the wear on your keys. Based on a keyboard's wear pattern you can often tell what someone does for their job, even down to the programming language used or specific apps.
Not sure how you'd get around it being a huge security risk? Maybe only write totals for keypresses every 30 minutes?
Edited to add: Does anyone daily-drive a Keyboardio Model 100? I really liked the concept and participated in the kickstarter, but unfortunately found I didn't enjoy using it that much.
I've settled on a Keychron Q10 with the Alice layout[1]. It's a nice compromise between the full on split and standard keyboards. It's nice and heavy, with QMK/VIA customization, and some useful macro keys I assign to some Emacs shortcuts like M-x and C-g. I do wish it had a thumb wheel and/or some Moonlander-style thumb keys below the space bars.
[1] https://www.keychron.com/products/keychron-q10-alice-layout-...