Simple Touch Keyboard



  • Hi guys

    I've started to code a simple touch keyboard. I am still experimenting but I thought I'll share what I have so far.

    0_1601310889045_M5Core2TouchKeyboard1.png

    You can find more pictures here: https://www.gwendesign.com/kb/m5stack/m5core2/#simple-touch-keyboard

    You can find the code here: https://github.com/felmue/M5Core2/blob/fm-touch-keyboard-1/examples/Basics/keyboard/keyboard.ino

    Happy Stacking!
    Felix


  • M5Stack

    @felmue Cool!



  • Very nice!

    I made some changes to the syntax of the library to make it all much cooler, but very easy fixes. See my post (soon) on the other thread.



  • Hi @Rop

    thank you and thank you for the heads up. I am looking forward to experimenting with your latest improvements.

    Cheers
    Felix



  • Hi guys

    I've updated the keyboard to use the latest and greatest visual touch button library from @Rop. It includes a blinking cursor and already entered text can be deleted by long pressing button A.

    https://github.com/felmue/M5Core2/blob/fm-visual-touch-keyboard-2/examples/Basics/keyboard/keyboard.ino

    Have fun!
    Felix



  • Hi guys

    Touch Keyboard is now available as library: https://github.com/felmue/GDTouchKeyboard

    Cheers
    Felix



  • Hi Felix!
    Rop has moved his current work on his fork from the visual branch to master and has eliminated the Event object.
    He says this is the last big reorg, so the absence of Event is clearly permanent.
    Do you plan to update your library to track? I'm working on a project that has become dependent on both Rop's fork and your library, so I have to give up one or the other at this point.
    If you're busy on other things I understand; I may take a stab at it myself, but just wanted to find out your plans before making mine...



  • Hi Van

    thank you for pointing that out. No worries, I've adapted the touch keyboard library to the new reality without Event object. I am happy you find the touch keyboard useful.

    Have fun!
    Felix



  • Works like a champ! Thanks, Felix--sorry it took me so long to circle back and try it out.
    Rop has reved two more times; I'm on the latest and this seems to work fine.



  • Hi Van

    no worries and thank you for the feedback. Glad to hear it's working and useful.

    Happy Stacking!
    Felix



  • Tried my hand at a keyboard too... (Can't type on non-qwerty...)

    Found that the horizontal precision is actually nice on this touch sensor, it's the vertical registration where I go wrong the most. So I made a keyboard with only three rows of keys, and I can actually type on it. Trick for me is to briefly but consciously look at a key before hitting it: as soon as I start relying on muscle memory my error rate goes way up. Also find that if correcting mistakes is easy enough and doesn't lead to additional mistakes, it's OK to have some misses. Try the experimental branch on my repo, the Touch / Keyboard example for a taste.

    The help screen (which now just says "HELP"), will eventually explain that space is swipe right, backspace is swipe left and to get upper case, just drag a letter upwards. If you move across the typed text you move the caret unless text is wider than window, then you (smoothly..) drag the text. In that case drag down to bottom key row and then sideways to move caret. You can grab the text anywhere above the keys, even in the help/prompt bar.

    Note that I used sprites both for the text entry field and also (briefly) for the keyboard change so that I prevent flicker. Also, there's now M5.Buttons.pushState() and M5.Buttons.popState() to save and restore buttons, gestures and eventhandlers so that one can switch context (such as into and out of keyboard mode) without setting up one's entire environment again.

    Lots of emerging thoughts on how to structurally build out from here, but also just happily playing around building cool stuff and seeing how I would most like things to work for people to program with ease.



  • Hello Rop

    nice, now we already have two keyboard layouts (anybody working on Dvorak?).

    I like your solution for uppercase letters and the caret handling is nifty - well done.

    Cheers
    Fexli