C-API User Input - DPad Keyboard RFC

Background: [C-API] Get User Input? - #5 by UrlOfSandwich

Since there's no C-API keyboard, I cogitated a bit on how to enter text. Sure an on-screen keyboard works ... at least for Latin-based glyphs. One of the problems with this is the number of clicks needed to get from Q->G (5) or Q->P (9 if there's no wrap-around). An then if it's not QWERTY, I spend ages just finding the letter... But is there an alternative?

Anyway, I came up with a D-Pad concept, possibly I've read/seen it somewhere else, but I didn't find anything searching. The idea is to split the possible letter-space set into quadrants of letters, but with a nod to their frequency. (Ref: Letter Frequency for English). It doesn't have to be Latin, Hiragana (~50 glyps) or Cyrillic (~32 glyphs) could be similarly split. Whatever the letter-frequency is for the system language, we'd use that (assuming it's available to the C-API).


With this layout, I can get to any English letter in 3-clicks.

As a quadrant-block of letters is selected by the user, that sub-range is then further re-spread around the quadrants. In the example above A and E are significantly more common than anything in BCD, so they are split out into their own button. Once a click is made on a single letter, that becomes part of the input and the quadrants return to full-alphabet.

I thought about splitting the letters up in non-alphabetical order. This allows you to put the most common letters on single keys, and the uh, "junk" remaining letters on [Down], but I think then makes it a "knowledge based" thing for the user to type quickly, and at least for me, is non-intuitive. So in the example above, all of BCD are more common than F, but I think having the circle say A, E, D, BCF is not worth the initial confusion. You're breaking the alphabetical model.

  • A long tap on (A) button submits the whole input
  • A quick tap on (A) button drops the keypad-set back one step.
  • A long tap on (B) changes the character set, maybe upper->lower case, digits, punctuation.
  • A quick tap on (B) is backspace on the input.

What do you think? Does this idea have legs?
Do we have enough pixel-resolution to show "abcdef" (etc.) in buttons. Maybe "A→F" ??!

Maybe I should make a prototype. I don't want to, I just want to write my game, but "needs must" and all that.

PS> If you have any thoughts, especially quality-criticism, I want to hear it. Especially from non-English speaking people.


First piece of criticism then:

Double letters are much slower than a cursor-over-letter-matrix model, since you only need to find the letter once, then select twice.

Thought: For the most common double letters, maybe these can take up a place down on the "lower levels", so maybe there's o but also oo.

I made a quick prototype in python+pygame.
The video I made about 5 minutes after getting it working, and I'm pretty slow.
Also - "Helloworld" seems to be full of low-frequency consonants :wink:


Notes: My laptop has a 4k screen (which seemed like a good idea at the time), so I'm actually having trouble reading the first "full alphabet" screen. The "dial" is 120 pixels across.

It would look nicer if the quadrant went black/inverted for a bit before switching to the next layout.

You might wanna look at Valve's Daisy wheel input system for steam. from what I recall some people really liked it and some people hated it. I think a lot of what worked and didn't work would translate to your system.

1 Like

Ooh! Thanks for that, I've never seen it before.

So the "petal" goes live when pressing up/left/diagonal etc. ?

How do you backspace?

Yes as I recall that is correct, and I think there was a dedicated button for backspace.