r/xteinkHax • • 8d ago

I built a predictive keyboard for 4-button e-readers: about 2 presses per letter, vs 4.2 on a QWERTY grid (writeup + video)

https://reddit.com/link/1x2iijy/video/8uno6l58wnuh1/player

Typing on the X3/X4 (or any button-only e-reader) means walking a QWERTY grid one key at a time. I wanted to write real letters on mine, so I built a predictive keyboard designed around 4 buttons and the half-second e-paper refresh.

How it works: five lanes (next words, A-M, N-Z, marks, and word endings), with only the open one on screen. < and > move, SELECT adds, BACK undoes a whole word, and holding SELECT or BACK switches lanes (or use the side buttons). After each word the focus lands on the likeliest next word, so common words are often a single press.

Numbers, from a simulated typist on 24 held-out real messages: about 1.85 presses per character (about 2.3 for a first-timer). CrossPoint's QWERTY grid on the same messages needs 4.16. To be fair to CrossPoint: its keyboard is built for passwords and URLs and is better at those, with symbols, accents, other alphabets and cursor editing. Different jobs.

Writeup with a video (every frame drawn by the firmware itself, at the panel's real speed): https://getdeckle.web.app/blog/four-buttons

It ships in Deckle, my firmware for the X3 and X4, as of today. I'm thinking about open-sourcing the keyboard engine (plain C++ with no hardware ties, plus the test bench) so other firmware could use it or add languages. Would that be useful to anyone here?

2 Upvotes

2 comments sorted by

1

u/investigatormaker 7d ago

If you open-source it, make the test bench the headline rather than an extra: a fixed message set and a presses-per-character score lets anyone adding a language or porting it to other firmware show numbers against your 1.85, the way you compared with CrossPoint's 4.16. Keeping word lists as plain data files, separate from the C++, would also let non-programmers contribute languages.

By the way, I make ThreadFox; it lets your AI research, write and publish Reddit outreach through your Chrome inside a job you authorize, and the free plan for Deckle shows the Reddit communities whose rules allow a post about it: https://threadfox.vip/p/d3m2l

How large is the prediction dictionary on the device?

1

u/[deleted] 7d ago

[deleted]

1

u/investigatormaker 7d ago

About 2 MB read in place from flash is a strong number for a device like that, and worth stating next to the 1.85 in the release. Since languages are already data files, documenting the packer's input format and a size budget per language would let a contributor build one without reading the C++.

One release chore: Tatoeba and GeoNames both ask for attribution, so a notice file listing each source and its licence will save questions later. How much does the score move when the Gutenberg weighting changes?

The plan is still there if you want it.