Hacker News new | past | comments | ask | show | jobs | submit login
Markovkeyboard: Keyboard layout that changes by Markov frequency (github.com/shapr)
124 points by luu on June 4, 2019 | hide | past | favorite | 54 comments



This reminds me of Dasher:

https://en.wikipedia.org/wiki/Dasher_(software)

https://dasher.zone/

A little dizzying to use but a great fusion of some nice concepts. And for its target audience probably a lot more possible than a traditional keyboard.


Dasher is such a novel concept of a keyboard it's almost alien. I love everything about it. You can install it on Ubuntu with:

apt-get install dasher (https://packages.ubuntu.com/disco/dasher)

And here is Dasher's source code: https://github.com/GNOME/dasher


There was/is a similar keyboard available for Android, by Italian developers. It featured hexagon keys with the most popular keys being in the middle. Apart from that it didn't adapt though. It was featured on HN. (Had to look it up, the name is Keybee [1])

[1] https://keybee.it/


Someone should make Dasher into a "hyperbolic descent runner" text entry game.


Someone I studied with made a keyboard that changed the size of keys based on the probability that they are used next.

It was unusable. Because of the constant size changes you would hit the wrong keys and some were getting so small you couldn't hit them anymore.


anecdata: smartphone keyboards do this invisibly, no visual change but the most probable next keys get larger input geometry so that even if you don't hit it right, it will register.


I'd love to be able to see statistics about hits and misses on this, because in more than 10 years of touchscreen smartphone usage, I'm still yet to type even a single sentence correctly. I hold out hope for a decent dialling wand.


Look into the MessagEase keyboard. It's IMO about the optimum available phone keyboard input. With a little practice you can touch-type naturally, though it's never going to be as fast as a full size keyboard of course.

Really the only downside is having to put a bit of effort into learning it, but for the amount of time I personally spend typing on the phone over the years, it's well worth it.

I also tried other keyboard formats. 8pen was kind of interesting, but I could never get it very consistent myself, it felt more like a gimmick.


A few years ago, there was a product on the play store called 8pen[0] which had a huge learning curve but was insanely useful. I was able to type while running on the treadmill, or with my phone under my desk in class. Unfortunately they took it off the play store for reasons I don't understand

[0]: http://www.8pen.com/


Yeah 8pen was the one that first got me interested in alternative input methods. It was quite cool coming from boring horrible qwerty phone keyboards. I personally couldn't quite get it down, my consistency was very low. Still, sad to hear it's not available anymore, from what I heard it worked quite well for some.


I switched entirely over to MessagEase a few months ago. Getting deterministic results from typing still feels refreshing, even now.

I'll second the recommendation.


Same, even if I can type blindfolded on my laptop. But the regular users do fine. Which let me think it's optimized for limited message delivery in size and vocabulary.

Indeed, I noticed that if I disable auto-correct then keep using very simple words, and short messages, I have much less problems.

Of course, answering with emojis mean no risk of typos.


I wonder if this is the cause of many of my misspellings on my phone.

Often I'm trying to type in names of wines, domaines, vineyards, etc. - the CellarTracker app is probably the destination of the majority of my keystrokes. I could swear sometimes that the wrong character got entered even though I was pretty sure I hit the right key.

And of course now I'll be hypersensitive to this possibility, and cherry-pick evidence to confirm my suspicions.


Do you have a source for that? I'm quite interested in reading about it.


Apple version[0], Microsoft's take [1], related research by Google [2]. My Google keywords were 'smartphone keyboard dynamic touch targets' btw.

[0] https://www.cnet.com/news/iphone-keyboard-learns-what-you-ty...

[1] https://www.microsoft.com/en-us/research/wp-content/uploads/...

[2] https://static.googleusercontent.com/media/research.google.c...


Swiftkey has a "tap map" screen[0] that shows the adjustments it's made.

[0]: https://i.imgur.com/q42xiqg.jpg


It was in a video about the early development of the iphone IIRC, they were discussing how much detail went into the keyboard. I don't have the url in mind right now sorry.


I believe the first version of the iPhone OS did this. It was terrible (often it was literally impossible to type the thing you wanted) and they quickly replaced it with autocorrect instead.


hm interesting, from memory it was a bit of glorifying the history of the iphone and its innovation, so maybe they hid how user felt. But to me it felt like real great work...


phew.. I think that someone might have been me, if you're talking about qwerted? https://vimeo.com/8716996


Pretty much, yes ;)


You can replace a whole keyboard with markovian 1D input. See Dasher project for that, it's an interesting input method. (Swiping keyboards use something of that, but work on word basis not letter.)

https://en.m.wikipedia.org/wiki/Dasher_(software)


>The Big Idea: Static keyboard layouts are boring and predictable. Let's spice up the whole idea of keyboard layouts by having the layout CHANGE WHILE YOU ARE TYPING!


I giggled at;

>how do I make it stop?


>how do I make it stop?

That's the most frequent question I have when I try something new with my computer. Sign me "card-carrying TechnoDolt"


Could be useful for hunt-and-peck typers, although I'm not sure there are many emacs users like that...


what a polite way to describe someones typing? :D i'm more of a wack-a-mole typer


Next step: a car dashboard layout that changes by markov frequency.


Battle ready Gundam with full panoply of armaments and transdermal neural interface, that changes by markov frequency.


He he :)


what about: car control bindings (incl wheel left, wheel right, the pedal, the other pedal, the third pedal, gearstick movements) that change by markov frequency


Colemak's 4 transitional learning layouts, called Tarmak, also bases its stepped changes on learned key use frequency.

https://forum.colemak.com/topic/1858-learn-colemak-in-steps-...

https://colemak.com/


This is very similar to my first foray into programming - a small script that outputs how likely each letter is to occur, given some input string: https://github.com/jake-mason/probability_keyboard


It's in elisp? Of course it is. It's emacs!


Could almost be usable with something like an Optimus keyboard [1]

[1] https://www.artlebedev.com/optimus/popularis/


after a while the keyboard stabilises. they should share a pretrained keyboard for "regular" English, fixed. I wonder how different it would be to all the other keyboards currently available


But how do you type when your fingers are on top of the keys? I suggest braille display keycaps instead of LED screen keycaps!


This is a really fun idea!

I wonder if any research has been done since Colemak was released about the optimal keyboard layout for English. Because letter positioning is not the only concern - you also need to worry about how easy it is to type common sequences of letters - finding the optimal layout is probably a very hard problem, requiring sophisticated mathematical analysis.

I can vouch for the advantages of using Dvorak, but I would totally consider a switch if someone had a "provably optimal" layout.


There's a project called Carpalx [1] which is dedicated to trying to optimize keyboard layouts. The three layouts it offers as fully optimal according to their measurements (each with its own restrictions) seem to offer quite some improvement, though their names aren't quite as nice as some of the more popular alternatives (copied from [2] + some clarification):

- QFMLWY - this is best layout obtained by relocating all QWERTY letters

- QGMLWB - this optimized layout uses a Colemak-like character layout [ie. where the P and ; keys are swapped]

- QGMLWY - this is similar to the layout above, but keeps ZXCV in place

It's an interesting project but the inconveniences of switching from QWERTY to an alternative already stops me from switching to Dvorak or Colemak, so I doubt I'll move to something even more obscure any time soon.

[1] http://mkweb.bcgsc.ca/carpalx/

[2] http://mkweb.bcgsc.ca/carpalx/?full_optimization


I've been a happy QFMLWY user for many years. It greatly eased my wrist pain and I feel a lot more efficient at typing. It took me about a month to switch from QWERTY, going cold turkey. I highly recommend it. The drawback is that I'm now not able to touch type on a QWERTY layout anymore. However, I think that's only because I no longer need that skill. I presume that if I had to type on QWERTY regularly, I'd be able to touch type on both layouts.


Thanks, I've been looking at this site. QGMLWB seems pretty decent and KDE actually has support for Carpalx layouts already, so switching would be easy.

It's surprising that the layout didn't move more punctuation and symbols around - the Qwerty default positions for the comma and period are surely not optimal (bottom row, ring finger for period). I wonder what results one would get running the same algorithm but allowing these changes as well.


Update for anyone who was curious about that last point: I figured out how to use the simulated annealing software on that website, which allows you to use a custom mask for the characters than can be swapped. On my very first run I got a result better than QGMLWB: in fact QGMLWB requires 2.5% more effort to type the training corpus than the one I generated.

I bet a huge win would be moving the exclamation point, but I haven't figured out how to allow the program to remap shifted keys.


Agreed, I've been using Dvorak for almost 10 years now. It's more comfortable, and I can type roughly 20WPM faster compared to when I was using qwerty. That being said, switching to something better really does sound interesting.


There is space for improvement. I tried the neo-layout for a while which is optimized for German and it certainly feels good. However:

1. you have a hard time with every single set of default shortcuts there is

2. as soon as you switch languages it falls apart

3. as soon as you are using someone elses Computer it falls apart

I started to use the English layout with some custom mappings (for Umlauts) entirely and never looked back. The gap towards the default German one is not too big to slow you down too much, yet programming doesn’t feel like a total pain.


I use a Dvorak layout with the I and U reversed as in Dutch and English the I is used more frequent. I could change and optimize more but then I compatibility would be less (remapping is not always easy). I can fallback to qwerty if needed. Ad 3: I use Karabiner-Elements on MacOS en Autohotkey on Windows to easily switch. I sometimes write German, but I don't bother with the umlauts, I suffix with e... not sure if a German reader finds that annoying.


I think German readers are used to read oe and ae and ue instead of ö, ä, ü etc.

Decreases parsability slighty because you might not be used to the visual pattern of the whole word, but unless you are writing a book, nobody will bother. Germans themselves would write it that way if the font has no umlauts or they are stuck with ASCII for other reasons.

I mapped right alt + a to ä, right alt + s to ß etc, which works quite well. The thing I like best is right alt + number for superscript number, because you can quickly make footnotes in any text that way.

What I liked about the neo layout is the concept of having different “layers”, for mathematical notations, greek letters etc. and this only shows how little thought actually went into most official layouts..


That's a great tip, it's obvious but I didn't think of that as I only incidentally write German. Layers are nice, but they can also be implemented in Dvorak.


As a Dvorak user, I'm already paying these penalties, so switching to another layout wouldn't be that big a deal.

On another note, I'm rather skeptical of Colemak and other layouts that overly resemble Qwerty. It seems almost certain that they're sacrificing some degree of improvement for similarity to the layout most people are already familiar with. That's the main reason I learned and continue to use Dvorak.


I'm also a long time Dvorak user and I looked into other layouts and while some of them seemed interesting or even superior to Dvorak the difference is probably too small to justify learning a new layout. Even the Colemak FAQ says as much: https://colemak.com/FAQ#Is_it_worth_switching_from_Dvorak_to...

>I'm rather skeptical of Colemak and other layouts that overly resemble Qwerty. It seems almost certain that they're sacrificing some degree of improvement for similarity to the layout

You might be wrong about that, see http://mkweb.bcgsc.ca/carpalx/?popular_alternatives for a rather in-depth analysis of keyboard layouts. Some QWERTY-like layouts manage to score overall better, although the difference is not huge.

Personally these days I'm more interesting in experimenting with different keyboard shapes rather than tweaking the layout some more. I'm currently playing with OpenSCAD to create a custom 3D printed split ortholinear keyboard in the spirit of the Dactyl.


The workman layout seems to have the most thought behind it: https://workmanlayout.org/

If I put in effort to tune the markov keyboard, I'll use the workman approach, right now the code isn't as smart as it could be.


Neat. Although obviously not feasible, the overall idea isn't that far removed from the sentence prediction/completion that all mobile keyboards do today.


Why predict the next letter when you can just predict the whole sentence? https://youtu.be/9BnLbv6QYcA?t=62


Next goal: MLPkeyboard :)


sounds like a doable third-party keyboard app on smartphones




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: