Scripting

Keyboard Setup For Dvorak

Using xmodmap to change layouts.

The dvorak key layouts in xmodmap are based on a US rather than UK physical keyboard.

This means that the \| key next to the L-Shift is <> and the #~ key next to the return key is mapped to \|.

Also, you will have to set up gnome, fluxbox etc individually to allow a keymap swap.

Here is how to switch keyboards easily and reconfigure the keys so that 3£ the \| and the #~ work correctly for a UK/GB keyboard.

Create a file /usr/bin/asdf with the following contents :

(:source:) #!/bin/bash xmodmap /usr/share/xmodmap/xmodmap.dvorak xmodmap -e "keycode 12 = 3 sterling" xmodmap -e "keycode 94 = backslash bar" #This one corrects the numeric keypad . character not working xmodmap -e "keycode 91 = KP_Decimal KP_Delete" xmodmap -e "keycode 51 = numbersign asciitilde" #These correct the Terminal switching not working properly - you may not need them. xmodmap -e "keycode 67 = F1 XF86_Switch_VT_1" xmodmap -e "keycode 68 = F2 XF86_Switch_VT_2" xmodmap -e "keycode 69 = F3 XF86_Switch_VT_3" xmodmap -e "keycode 70 = F4 XF86_Switch_VT_4" xmodmap -e "keycode 71 = F5 XF86_Switch_VT_5" xmodmap -e "keycode 72 = F6 XF86_Switch_VT_6" xmodmap -e "keycode 73 = F7 XF86_Switch_VT_7" xmodmap -e "keycode 74 = F8 XF86_Switch_VT_8" xmodmap -e "keycode 75 = F9 XF86_Switch_VT_9" xmodmap -e "keycode 76 = F10 XF86_Switch_VT_10"

Create another file /usr/bin/aoeu with the contents :

(:source:) #!/bin/bash xmodmap /usr/share/xmodmap/xmodmap.uk

Alter permissions to make them executable.

(:source:) # chmod +x /usr/bin/aoeu # chmod +x /usr/bin/asdf

Then, you can switch between keyboards by typing aoeu or asdf in a terminal or in the run application applet.

Setting up Keymaps for Gnome/KDE to make a UK keyboard work the same as the Windows dvorak keyboard

(except for the # is swapped with £ on the 3 key)

vi /usr/share/X11/xkb/symbols/gb

At the bottom, the dvorak section should look like :

(:source:) // Dvorak (UK) keymap (by odaen) allowing the usage of // the £ and ? key and swapping the @ and " keys. partial alphanumeric_keys xkb_symbols "dvorak" { include "us(dvorak)" name[Group1]="United Kingdom - Dvorak"; key <BKSL> { [ numbersign, asciitilde ] }; key <AE02> { [ 2, at, twosuperior, NoSymbol ] }; // key <AE02> { [ 2, quotedbl, twosuperior, NoSymbol ] }; key <AE03> { [ 3, sterling, threesuperior, NoSymbol ] }; key <AE04> { [ 4, dollar, EuroSign, NoSymbol ] }; key <LSGT> { [ backslash, bar ] }; key <AD01> { [ apostrophe, quotedbl ] }; // key <AD01> { [ apostrophe, at ] }; };

This prevents swapping of the \| and #~ keys. It also keeps the US mapping of the '" and 2@ keys as I am used to these from using the US-only dvorak keyboard in windows.

You can replicate the aoeu and asdf file tricks above for easy non-mouse switching. To do this,

asdf file just has :

(:source:) #!/bin/bash setxkbmap gb -variant dvorak

aoeu file just has :

(:source:) #!/bin/bash setxkbmap gb

Alter permissions to make them executable.

(:source:) # chmod +x /usr/bin/aoeu # chmod +x /usr/bin/asdf

Or just as one long thing to cut and paste:

(:source:) if ! [ -d ~/bin ]; then mkdir ~/bin export PATH="~/bin:$PATH" fi cat > ~/bin/aoeu <<EOF #!/bin/bash setxkbmap gb EOF cat > ~/bin/asdf <<EOF #!/bin/bash setxkbmap gb -variant dvorak EOF chmod +x ~/bin/aoeu chmod +x ~/bin/asdf echo 'use the command "aoeu" to switch to uk' echo 'use the command "asdf" to switch to dvorak' echo 'done.'