Developing a custom virtual keyboard for Windows 10

Robert picture Robert · Oct 20, 2015 · Viewed 7.1k times · Source

I would like to create a custom virtual keyboard for touch on Windows 10. I am primarily a developer but if Windows 10 Dev is anything like the previous version, I'll probably have to revert back to C/C++. I want to be able to define everything, shape, regions, and data that it spits out when keys are pressed.

Windows 10 has a keyboard selection menu (see picture), I would like it to integrate with this so that it can be used with the native keyboard interfaces.

enter image description here

I'm an experienced programmer of business applications but I have no idea where to start with this. I saw this article for a Windows 7 keyboard but I'm hoping that things have changed for Windows 10.

My questions are:

  1. Is it possible to create a custome virtual keyboard that integrates natively?
  2. How do I integrate it with the Windows 10 Virtual Keyboard selector (pictured)?
  3. Where do I start?

Any help/direction/words of wisdom would be appreciated.

Update: I think maybe I haven't explained it very well. I want to build a virtual keyboard that isn't in the same shape as a normal one and essentially works like a shortcut keyboard. You tap a key and it insert a preset snippet of text in to the context window. And is selectable from the virtual keyboard options pictured (blue bit).

Answer

Mottie picture Mottie · Oct 23, 2015

Update:

I just tried using the Keyboard Layout Manager... OMG, so much easier to use than MSKLC, and it works on Windows 10; but I was still seeing the "Unavailable input method" message.


Actually, I just added a custom layout using MS Keyboard Layout Creator.

Changing the layout also modifies how the physical keyboard maps keys.

The trick is you can develop a new layout on Windows 10, but you can't use the "Build DLL and Setup Package" method on Windows 10 because the program needs .NET frameworks 2.0. I tried installing v2.0 on my system, but it just would not do it. I was able to build the files on a Windows 8.1 system.

Steps to take:

  1. Download & install MS Keyboard Layout Creator on a Windows 8.1 or older systemv
  2. Make sure .NET Framework 3.5 (includes .NET 2.0 and 3.0) or older is installed
  3. Design your layout; before saving, make sure to remember what base language is set.
  4. Project > Validate Layout
  5. Project > Build DLL and Setup Package
  6. A folder containing the following structure will be created ("mylayout" will be the name you chose)

    mylayout
     |_ amd64
     |  |_ Mylayout.dll
     |_ i386 
     |  |_ Mylayout.dll
     |_ ia64
     |  |_ Mylayout.dll
     | wow64
     |  |_ Mylayout.dll
     |_ Mylayout_amd64.msi
     |_ Mylayout_i386.msi
     |_ Mylayout_ia64.msi
     |_ setup.exe
    
  7. Install the appropriate file

  8. The custom keyboard should now show up as a dropdown in the virtual keyboard, if not select "Language preferences".
  9. You should now be on the "Country or Region" page. From here if the keyboard is based on a language, the language will show up here, or it may be added in an existing language (e.g. "English (United States)")... click on the language, then select "Options".
  10. You should see your custom keyboard added here. If not, select "Additional date, time & regional settings", then "Change input methods". Then click on the "Options" in the custom language. It should let you preview the layout from here.

Caveat: Initially, I chose a base "UK" layout & a Gaelic language option showed up. This did add an option to the virtual keyboard language selector, but on the second time around I started with a base US Dvorak layout and the selection would not show up for me. In the control panel input method section, I saw a "Unavailable input method" message. I'm not sure how to get around that issue.

Maybe you'll have better luck.