Dvorak keyboard drivers for Windows

Introduction

These are some alternative keyboard layout drivers for Windows, mostly focused around improving support for the Dvorak keyboard layout, which is sorely lacking.

The original concept is from early 2012 when I started to learn the Dvorak layout. Some other variants were added to the list later as I needed them or others requested them.

Originally a Ginever Alliance project, hence GA in the name of the driver files.

Why did you make these?

Windows has three layers of key identification: the key itself, the virtual mapping of that key (the VKEY), and the symbol that is typed by that key for each modifier combination. For example, in a typical QWERTY layout, you have "the R key maps to the virtual R key and types R". For most situations, it's the VKEY being used to bind keyboard behaviour; for example, games normally map movement to VKEY-W, VKEY-A, VKEY-S, VKEY-D rather than W-A-S-D, and the copy shortcut is actually CTRL+[VKEY-C] rather than CTRL+[C-key] or CTRL+[key that types the letter C]. Most end-users don't notice this behaviour because, traditionally, the VKEY and the symbol being typed are configured to be a 1-to-1 match.

This setup where the VKEY and the symbol match causes problems when trying to switch to Dvorak. The only available Dvorak keyboard driver shipped with Windows is a US Dvorak layout driver which has Dvorak VKEYS. In our previous example, this gives "the R key maps to the virtual P key and types P". Unfortunately, Dvorak VKEYS just plain suck. Everything is designed to assume you have a QWERTY keyboard, from keyboard shortcuts to default mappings in video games, so if you're stuck with Dvorak VKEYS, you are stuck pressing CTRL+[dvorak-C] to copy, which is the same as CTRL+[qwerty-I], and that's just not enjoyable. Gaming also becomes a living hell, having to redo keybinds for every single game; some don't have rebindable keys at all and often they are totally unplayable. Several other problems add on to this to make Dvorak VKEYS completely impractical.

Even worse, UK typers are completely shafted with no driver at all.

What you really want is QWERTY VKEYS. This gives something closer to "the R key maps to the virtual R key and types P" - so the keyboard is treated as a QWERTY keyboard everywhere except typing into a text box, which will get the symbols from Dvorak. And voila! Thanks to having QWERTY VKEYS, the Dvorak keyboard is suddenly no longer a complete nightmare to switch to! Hooray!

Fortunately it is easy to make a custom driver with this functionality. So that's exactly what I did!

What drivers have you made available?

There are five drivers available.

For UK typists, the main driver is UKGADVQV, which provides a UK Dvorak layout with QWERTY VKEYS. There is also a variant driver UKGADVQ2 which maps caps lock to backspace, similarly to Colemak.

For US typists, the main driver is USGADVQV and the variant is USGADVQ2; they offer the same functionality as their UK counterparts.

The fifth driver is UHGADVRG, a hybrid layout for UK typists who have ended up with a US layout keyboard. I made this to use with my first laptop, which was unfortunately stuck with exactly such a keyboard.

All drivers have extended character options when pressing the right Alt key (normally Alt-Gr) and the available character selection is larger than with the traditional QWERTY driver. For example, you can get the degrees symbol by pressing AltGr+[VKEY-Q]. Some users may find this useful.

UKGADVQV and UHGADVRG have been regularly used. In particular, I have used UKGADVQV every day at both home and work for over a decade with no major problems. The only time I have problems is when programs read the symbol being typed in order to execute commands rather than the VKEY; you then get inconsistent behaviour. All other use cases work 100% perfect.

How did you make these?

Most of these were built with MSKLC 1.4. A few I had to adjust the source code by hand before compiling the DLL. Either way, very simple to do.

What kinds of software incorrectly read the symbol instead of the VKEY to determine key behaviour?

Programs ported from Linux are notorious for this, especially those based on GNOME, but this is usually a bug in the port. Cygwin's bash terminal also seems to look at characters rather than VKEYS so you're still stuck pressing CTRL+[dvorak-C] to interrupt, CTRL+[dvorak-R] to look back through command history, etc. Adobe software is also particularly bad; Photoshop is really only usable with a QWERTY keyboard (sorry).

That being said, Windows software should be using VKEYS exclusively for this stuff. Failure to do so is bad/shitty programming and you should bitch at the developer.

Anything else?

These drivers are tested and verified to be working under Windows 7, 8, 8.1, 10 and 11. Based on the MSKLC documentation, I believe they should also be compatible with Windows 2000, XP and Vista (although I've not tested them on Windows versions that old). Anyway, I expect these drivers to continue to work indefinitely on all future versions, as the keyboard layout driver files have remained essentially unchanged for over 20 years.

To use a driver, just run the setup.exe as administrator to install it. Then you can select it from Control Panel or Settings.

Downloads

Downloads can be found >> HERE <<

License

Licensed under WTFPL version 2. Stupidly easy for me to make, so I honestly don't care what you do with it. Have fun typing I guess.

---------------------------------------------------------------------

           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
                   Version 2, December 2004
 
Copyright (C) 2004 Sam Hocevar 

Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
 
           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

 0. You just DO WHAT THE FUCK YOU WANT TO.

---------------------------------------------------------------------

I use Mac or Linux, do you have any suggestions for those platforms?

Unix-based platforms like Mac and Linux don't really support VKEYS or any equivalent concept, so trying to configure the same behaviour is basically impossible. Linux software in particular generally reads the symbol being typed by a key in order to determine what behaviour to perform, so there is no way to have any sort of full "Dvorak only in text boxes" experience like Windows allows for.

Because of this, about the best option available is just to set up your system so that the symbol being typed switches back to QWERTY whenever a modifier key is held down. This allows at least keyboard shortcuts to be tolerable.

Mac already has a good option available - a layout called "Dvorak with Qwerty-Command" ships with the OS out of the box, although it's for US typists only. If you're a UK typist, you can make something similar for UK keyboards using Ukelele which is completely free.

For Linux, I recommend Dvorak Qwerty Keyboard remapping for Linux by Thomas Bocek - I've been using it a while without issues.

You then just have to say "fuck it" for games and don't play any unless they have the option to rebind controls, or alternatively switch back to QWERTY when gaming, and then put up with in-game chat boxes being inconsistent with the rest of your typing experience. Certainly not ideal, but gaming outside of Windows has always sucked regardless (although software like Proton is changing that situation, so this might become more annoying in future).