Skip to content
"Dvorak-Qwerty ⌘" (DQ) keyboard layout for Windows and Unix/Linux/X
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
unix Fix ctrl+shift+x hotkeys in systemtap implementation. Dec 12, 2017
windows Update e-mail address. Feb 4, 2013 Update README to list modern implementations Jan 2, 2018

Dvorak with Qwerty hotkeys

On Mac OSX, there is a keyboard layout known as "Dvorak-Qwerty ⌘". This layout normally acts like Dvorak, but when the command key is held, it becomes Qwerty. I find this layout has two significant advantages over straight Dvorak:

  • The common copy/paste hotkeys X, C, and V remain on the left hand, and so can be used while the right hand is on the mouse.
  • Holding the control key with my pinky tends to make it hard for me to remember where many keys are located, because my hands are no longer positioned as they would be when touch-typing. Meanwhile, the labels on my keyboard are Qwerty, because I no longer bother reconfiguring them physically. With the Dvorak-Qwerty layout, I can look at the keyboard to find the key I want.

Unfortunately, the layout is not shipped with Windows or most Unix variants. Worse, while it's technically possible to implement DQ as a standard XKB layout on Unix systems, the layout appears to expose bugs in many Unix apps making it unusable. Instead, we're forced to write code that MITMs and rewrites keystrokes.

This project provides several different implementations of the Dvorak-Qwerty layout on various operating systems.


By me:

  • xdq.c - Implements DQ on X (Unix/Linux) using X Grabs. See comments at top of file for instructions. WARNING: This doesn't work on Wayland, which many distros are moving to as of late 2017. It's also pretty hacky due to the nature of X grabs.
  • dvorak-qwerty.stp - Implements DQ on Linux by monkey-patching the kernel using SystemTap. This is totally nuts but it works and ultimately is way cleaner than xdq.c.

By others (I have not tested these):

  • Thomas Bocek's implementation using Linux's /dev/uinput and EVIOCGRAB. This looks similar to my SystemTap-based implementation, without injecting code into kernelspace.


By me:

  • - Implements DQ on Windows. Source code and compiled binaries included. WARNING: This code was originally written literally half my lifetime ago and I have not used it in nearly a decade since I don't use Windows anymore. I hear it still works, though.

By others (I have not tested these):

You can’t perform that action at this time.