I'm new the the Twiddler community. While looking for a layout the concept of multi-button per row intrigued me. However, I'm a new twiddler user so what do I know about making layouts? Not much, but I am familiar with Satisfiability Modulo Theories (SMT) solvers. An SMT solver is a program that searchs for a solution to a logical problem. You can model a lot of interesting problems as SMT problems and then ask the SMT solver to solve it for you.
Here is the twiddler problem for the SMT solver: "Given the frequency of the alphabet, 2-grams, 3-grams, 4-grams, and 5-grams. Given the cost of pressing any given chord. Out of all-possible twiddler configurations which one is optimal?"
That is the basic idea, but in practice that problem is much too hard to solve (The SMT solver would run for weeks, years, millennia? I'm not sure.). Still though the SMT solver can search a large space and we can help it out a bit. Notice the "we" in that last sentence: I can design the SMT solver problem, but I can't create a good configuration by myself.
I have already programmed a large chunk of the SMT problem here.
Here are the only guiding principles so far:
- (LMR) and (LR) mulit-row presses are not allowed.
- Multi-character sequences must be made up of the buttons used in the alphabet characters (Taken from TabSpace.).
If this is to succeed here are somethings that WE need to decide:
- What is the cost of pressing a chord? Currently I have all chords cost 0.5 seconds, this is clearly wrong. It seems unrealistic to find the cost of every single chord, so we should approximate. What about finding the cost of every two finger combination (5 * 5 * 6 = 150) plus every one finger cost (5 * 4 = 20)?
- What about space, backspace, tab, numbers, etc? They need to go somewhere, my model only looks at the alphabet.
- What should we use for n-gram frequency? I used this, but we can change that.
- Should we fix chords to allow a degree of backward compatibility with some existing configurations?
- I know some combinations of multi-button row chords do not work because of button wiring. Which are these?
A note on SMT solvers: SMT solvers are pretty cool, but you need to banish the idea that they will provide us a perfect solution. More realistically they will give us a handful of good solutions. We then take those good solutions and modify them a bit until we get a solution we are happy with.
Please let me know if you are interested in helping out!