Paging all keyboard geeks: key/combo to show/hide onscreen keyboard from external keyboard with iPadOS?

My keyboard of choice is a Corne (a split, mechanical keyboard) which I use daily with an iPad Pro 11". I manage my keymap with QMK firmware.

There’s a very useful third-party iOS keyboard (LazyBoard) that I occasionally call upon while typing, but it irks me that in order to invoke it while using an external keyboard, I have to reach out and touch the onscreen keyboard icon, then the second keyboard icon that appears. I’d love to make this happen without raising my hands from the keyboard.

I know. It’s a minor tweak in the grand scheme of things. :nerd_face:

As far as I understand it, the eject key on an external Apple keyboard in iOS is supposed to have the effect of hiding/showing the virtual keyboard (so sayeth stackexchange), but I’ve added an eject key to my QMK keymap and that does nothing. Anyone have any suggestions for a key, combo or settings configuration that might do the job?

I already know that CTRL + SPACE switches between different virtual keyboards, but that happens in the background, without calling up the newly selected keyboard. Pre iOS 14, I believe the keyboard symbol in the bottom right hand corner of the iPadOS interface used to simply be an downward pointing arrow; I’ve read in other posts that simply tapping and holding that would raise the keyboard…

Thanks in advance for any suggestions…

Bonus points: if any external keyboard users currently testing the iOS 15 beta have anything to report about any changes in managing virtual keyboards, I’m all ears.

You need a Mac. :slightly_smiling_face: This is why I won’t use an iPad for anything more than reading.

Thanks, karlnyhus! iPadOS and iPads definitely have limits. Fortunately, this isn’t one of them. To be fair, you’re not 100% wrong— I still needed to turn to my MacBook to flash the firmware on my keyboard. However…

I’ve solved this particular issue with a little help from the QMK/OLKB Discord. TLDR: I now have a key on my mechanical keyboard that toggles the onscreen keyboard on my iPad. Read on for a little more detail, if you’re so inclined…

For anyone who doesn’t know: QMK is firmware that sits on the keyboard itself, allowing you to define your own keymap and macros. Because these customisations live in the firmware, they’re availble to you regardless which computer/tablet you plug that keyboard into (except where a particular keycode might not be supported by a particular OS).

To make this show/hide keyboard button, I was directed towards QMK macros (QMK Firmware). Basically: in my keymap, I had to define a new keycode…

enum custom_keycodes {

map that keycode to an actual key in the keymap layout, and map the new keycode to an output…

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {
        case MY_KEYB:
            if (record->event.pressed) {
            } else {
            return false;
    return true;

Compile, flash, done. Obvs a little daunting if you’re not used to messing around with firmware, but if you’ve read this far, you either know what I’m talking about here or you’ve got enough tenacity to muddle your way through.

Sure, it took a couple of hours, but the vast majority of that time was spent casting around for suggestions in different forums; once I knew what needed to be done, it took about 10-15 minutes, and even that was only because I’m not familiar with C.

Hope this helps someone else in the future. :nerd_face:

Sidenote: I’ve got a few Macs lying around (an Air, a Mac Mini, and the MacBook I mentioned— all past their respective sell-by dates but still in good health). “Work” means different things for different people, and I still fallback to a Mac for specific tasks (telemeets with screensharing, some coding, firmware updates…) but for a long time now, I’ve found iPads to be the most versatile computing devices I’ve thus far used to get the majority of what I need to do done. :wink: