Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Detecting on-screen keyboard vs. hardware keyboard

edited April 2013 in Questions Posts: 580

Is it possible to tell if a user is using a hardware keyboard vs. the onscreen keyboard? I've dug around and I can't seem to find anything, but this would be a very useful feature.

For my part, I'd like to know this so that, if using the onscreen keyboard, I can shift my typing area into view if needed, but if using a hardware keyboard, I wouldn't need to do anything.

UIKit has a nice feature where you can set a callback, and whenever the keyboard is displayed/hidden, it calls that callback with information about how the keyboard is going to be displayed: it's ending frame size, the animation curve used to show/hide the display, and some other stuff I can't remember. This is awesome because you can synchronize your view's animation with the on screen keyboard if necessary.

If there current is no functionality to detect hw/sw keyboard, I propose that the callback feature be added to the feature tracker. If there is, please point me to it so I can use it :)


  • Posts: 521

    I haven't tried it, but I think you can figure it out since the HEIGHT value changes if it is an onscreen keyboard.

  • Posts: 666

    I never noticed the height value change! Very interesting!

  • edited April 2013 Posts: 580

    Actually I tried didn't seem to change.

    EDIT: I tried it again as a sanity most definitely does not change the HEIGHT value when the onscreen keyboard is presented.

  • SimeonSimeon Admin Mod
    edited April 2013 Posts: 5,708

    @toadkick having access to the keyboard height is important. Do you have any ideas about how you could see the API looking on this functionality?

  • edited April 2013 Posts: 580

    @Simeon: I'm thinking that whenever the keyboard shows/hides, Codea could check for these global callbacks and execute them if they exist:

    function keyboardWillShow(height, duration, easing) end function keyboardWillHide(duration, easing) end

    The easing is not strictly necessary, but would be nice to have if Codea can map the easing curve used by UIKit to a corresponding easing mode for tween.lua.

    I'm not sure whether the entire frame (rect) for they keyboard or just the height is needed, but I suspect that just the height should be enough.

    I'm definitely open to suggestions, they may be better ways to handle this.

  • edited March 2014 Posts: 505

    it would, finally, be so great, if HEIGHT would change when software-keyboard is showing - or TTL exposes the keyboard position vector (which is 'nil' when 'not isShowingKeyboard()')

  • Posts: 1,595

    @se24vad definitely the second one, a lot of my code relies on HEIGHT for positioning objects, they'd get squashed at the bottom of the screen behind the keyboard if this was the case. Does the second one give a different vector or remain nil with hard keyboard

  • Hello, just revisiting this post.. is there a way to detect on screen keyboard versus external now ?
    my app is displaying text and scrolling but the text is going either behind the keyboard or there is a big blank at the bottom if I use an external keyboard and try to rely on isKeyboardShowing(). Any idea ?


  • dave1707dave1707 Mod
    edited September 2019 Posts: 9,467

    @dlpnet As far as I know, there isn't a way to detect the external keyboard yet. I never use an external keyboard, but I recently bought a $1 external keyboard just to try it. It works OK, but I prefer the built in keyboard. Anyways, I used the external keyboard and I couldn't figure out a way to detect if the external or the built in keyboard was being used. For now, maybe you can use the parameter.boolean to select whether the built in or external keyboard is being used.

    PS. Any code you use for the parameter.boolean could be used when code is added to detect the external keyboard.

  • SimeonSimeon Admin Mod
    Posts: 5,708

    I will expose the height of the keyboard in a future release, either through the layout module or elsewhere.

  • Excellent and layout seems fine. Thank you

  • AnatolyAnatoly Mod
    Posts: 893

    @Simeon it be great to also add a fully keyboard set to it (types), as an example:

    • LINK could have a .com button near to the space bar,
    • PHONE would only show the 0123456789*+ buttons
    • EMAIL could already show the @-character on the first page of the keyboard.
    • PASSWORD, NAME AND SIRNAME (But also PASSWORD and PHONE) could suggest the correct data from your suggested words.

    But generally, a fully customizable keyboard would be preferred.

Sign In or Register to comment.