flipturn.org - stuff. things. other stuff.

Dvorak Keyboard

This is the Dvorak-like layout that I use on all my machines. It is not a true Dvorak because I have left some of the symbol keys in their traditional placements. Being a unix-type and a programmer, deviating slightly from the standard Dvorak keyboard made my life a bit easier. None of the alphabetic characters have changed locations from the standard Dvorak, but most of the symbols are in better positions for programming.


I have this layout available in many different formats: an X11 xmodmap table for Unix machines, a Linux keyboard translation table that remaps the keys in all modes (including X), a DOS keymap.sys file that you put in your CONFIG.SYS, a translation table for Windows 95/98, a keyboard translation DLL for Windows NT, a DLL for Windows XP, and another DLL for Win2k.

An archive containing all of the fixes for the various platforms is available here; you may need to use the Save Link As... method of your browser!

Once you have the archive file, uncompress it into a temporary directory. Utilities for each operating system are in separate directories, and the usage of each is outlined below:


I used to use a compiled program to set the keymap in X, but I ran across Nick Reinking's site where he instead used xmodmap files. A much better solution! So, I modified the xmodmap files to match my layout. Load the dvorak keyboard with xmodmap dvorak.xmodmap and convert back to qwerty with xmodmap undvorak.xmodmap.

I also created an XKB layout that allows for internationalization and deadkeys -- see the xkb.txt file in the archive.


Install this keymap using the program "loadkeys" and the keyboard will be remapped for the console and X11. (If you are using XFree86 4.0, add the line Option "XkbDisable" to the InputDevice section of your XF86Config. If you are using XFree86 3.3.6 or earlier, add XkbDisable to the Keyboard Section of XF86Config.

  1. loadkeys dvorak.map
  2. If you want to compile this keymap into the kernel, use this command to generate the C code, and recompile the kernel. loadkeys --mktable dvorak.map > /usr/src/linux/drivers/char/defkeymap.c


Added robm keymapping to /usr/shar/X11/xkb/symbols, and added a stanza to /etc/X11/xkb/base.xml but it's not currently working.


Copy dvorak-robm.keylayout to your ~/Library/Keyboard Layouts directory, or the system ~/Library/Keyboard Layouts directory if you want the keyboard available for all users. You'll have to go into the International system preferences and to select the keyboard layout.

If you want to create your own OSX keyboard layout, you can use the ukelele editor or you can edit the XML file by hand using the Apple Technical Note as a guide and this virtual keycode reference


Windows 95/98 keyboard translation. After following a similar procedure to activate the Microsoft-supplied Dvorak keyboard, replace the Kbddv.kbd in your \\Windows\System directory with this one. Reboot the system and you should have my modified dvorak.


Windows NT 3.51/4.0 keyboard translation. I documented the process I went through to convert the NT "standard Dvorak" DLL to my Dvorak. A recipe to set up the driver is as follows:

  1. Install the Microsoft-supplied Dvorak keyboard using the Keyboard Control Panel.
  2. Change back to the US Standard keyboard
  3. Copy my kbddv.ddl over the Microsoft supplied kbddv.dll in the \Winnt\System32 directory.
  4. Change back to the US Dvorak keyboard in the Keyboard Control Panel, answering Yes to the question Would you like to skip the file copying and use the existing files? question.

xp / 2000

I used the Microsoft Keyboard Layout Creator to create the custom layout, replacing the old way of changing out the kbddv.dll. To install this layout, use the dvorakrm.msi installer in the download. Note that you have to run that in place, because it needs to find the i386 directory -- I couldn't figure out how to make a single-package install file.

I've also included the source for the keyboard layout creator if you want to modify it further.


Really, you should upgrade your system. :) To use the keymap.sys DOS program, add a line in your config.sys that looks like this:


You will have to change the path to reflect the actual location of the program on your computer.