BryceCovert
April 29th, 2008, 10:10 PM
I've been a dvorak typist for about two years now, and while I love my keyboard layout, I have never been able to adjust to how frustrating one-handed tasks like Ctrl-C and Ctrl-V have become. In trying to resolve this problem, I have found a number of posts, but no one seems to have figured out how to emulate apple's dvorak-qwerty layout. Through some resources online, specifically http://forums.gentoo.org/viewtopic-p-5077984.html#5077984. After tweaking crzysdrs's work, it seems like I have a fully functioning dvorak-qwerty keyboard layout.
Here is the howto to implement the dvorak-qwerty keyboard layout for linux.
Add this to /usr/share/X11/xkb/types/basic
default xkb_types "basic" {
...
type "CONTROL_Q" {
modifiers = Shift+Lock+Control;
map[None] = Level1;
map[Shift] = Level2;
map[Lock] = Level2;
map[Control] = Level3;
level_name[Level1] = "Base";
level_name[Level2] = "Caps";
level_name[Level3] = "Control";
preserve[Control] = Control;
};
...
};
Then add this to /usr/share/X11/xkb/symbols/us
partial alphanumeric_keys
xkb_symbols "dvorakqwerty" {
name[Group1]= "U.S. English - Dvorak/Qwerty";
// Alphanumeric section
key <TLDE> { [ grave, asciitilde ] };
key <AE01> { [ 1, exclam ] };
key <AE02> { [ 2, at ] };
key <AE03> { [ 3, numbersign ] };
key <AE04> { [ 4, dollar ] };
key <AE05> { [ 5, percent ] };
key <AE06> { [ 6, asciicircum ] };
key <AE07> { [ 7, ampersand ] };
key <AE08> { [ 8, asterisk ] };
key <AE09> { [ 9, parenleft ] };
key <AE10> { [ 0, parenright ] };
key <AE11> { [ bracketleft, braceleft ] };
key <AE12> { [ bracketright, braceright ] };
key <AD01> {
type = "CONTROL_Q",
symbols[Group1] = [ apostrophe, quotedbl, q ]
};
key <AD02> {
type = "CONTROL_Q",
symbols[Group1] = [ comma, less, w ]
};
key <AD03> {
type = "CONTROL_Q",
symbols[Group1] = [ period, greater,e ]
};
key <AD04> {
type = "CONTROL_Q",
symbols[Group1] = [ p, P, r ]
};
key <AD05> {
type = "CONTROL_Q",
symbols[Group1] = [ y, Y, t ]
};
key <AD06> {
type = "CONTROL_Q",
symbols[Group1] = [ f, F, y ]
};
key <AD07> {
type = "CONTROL_Q",
symbols[Group1] = [ g, G, u ]
};
key <AD08> {
type = "CONTROL_Q",
symbols[Group1] = [ c, C, j ]
};
key <AD09> {
type = "CONTROL_Q",
symbols[Group1] = [ r, R, o ]
};
key <AD10> {
type = "CONTROL_Q",
symbols[Group1] = [ l, L, p ]
};
key <AD11> { [ slash, question ] };
key <AD12> { [ equal, plus ] };
key <AC01> {
type = "CONTROL_Q",
symbols[Group1] = [ a, A, a ]
};
key <AC02> {
type = "CONTROL_Q",
symbols[Group1] = [ o, O, s ]
};
key <AC03> {
type = "CONTROL_Q",
symbols[Group1] = [ e, E, d ]
};
key <AC04> {
type = "CONTROL_Q",
symbols[Group1] = [ u, U, f ]
};
key <AC05> {
type = "CONTROL_Q",
symbols[Group1] = [ i, I, g ]
};
key <AC06> {
type = "CONTROL_Q",
symbols[Group1] = [ d, D, h ]
};
key <AC07> {
type = "CONTROL_Q",
symbols[Group1] = [ h, H, j ]
};
key <AC08> {
type = "CONTROL_Q",
symbols[Group1] = [ t, T, k ]
};
key <AC09> {
type = "CONTROL_Q",
symbols[Group1] = [ n, N, l ]
};
key <AC10> { [ s, S ] };
key <AC11> { [ minus, underscore ] };
key <AB01> {
type = "CONTROL_Q",
symbols[Group1] = [ semicolon, colon, z ]
};
key <AB02> {
type = "CONTROL_Q",
symbols[Group1] = [ q, Q, x ]
};
key <AB03> {
type = "CONTROL_Q",
symbols[Group1] = [ j, J, c ]
};
key <AB04> {
type = "CONTROL_Q",
symbols[Group1] = [ k, K, v ]
};
key <AB05> {
type = "CONTROL_Q",
symbols[Group1] = [ x, X, b ]
};
key <AB06> {
type = "CONTROL_Q",
symbols[Group1] = [ b, B, n ]
};
key <AB07> {
type = "CONTROL_Q",
symbols[Group1] = [ m, M, m ]
};
key <AB08> { [ w, W ] };
key <AB09> { [ v, V ] };
key <AB10> { [ z, Z ] };
};
Finally, change /etc/X11/xorg.conf to change your keyboard variant to our new custom variant.
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
Option "XkbVariant" "dvorakqwerty"
EndSection
Ctrl-Alt-Backspace, and gnome will ask you which settings you would like to use. Choose X's settings, and you can now press Ctrl-C, Ctrl-V, and the like in qwerty, while still typing using the dvorak layout for everything else.
Bryce
Here is the howto to implement the dvorak-qwerty keyboard layout for linux.
Add this to /usr/share/X11/xkb/types/basic
default xkb_types "basic" {
...
type "CONTROL_Q" {
modifiers = Shift+Lock+Control;
map[None] = Level1;
map[Shift] = Level2;
map[Lock] = Level2;
map[Control] = Level3;
level_name[Level1] = "Base";
level_name[Level2] = "Caps";
level_name[Level3] = "Control";
preserve[Control] = Control;
};
...
};
Then add this to /usr/share/X11/xkb/symbols/us
partial alphanumeric_keys
xkb_symbols "dvorakqwerty" {
name[Group1]= "U.S. English - Dvorak/Qwerty";
// Alphanumeric section
key <TLDE> { [ grave, asciitilde ] };
key <AE01> { [ 1, exclam ] };
key <AE02> { [ 2, at ] };
key <AE03> { [ 3, numbersign ] };
key <AE04> { [ 4, dollar ] };
key <AE05> { [ 5, percent ] };
key <AE06> { [ 6, asciicircum ] };
key <AE07> { [ 7, ampersand ] };
key <AE08> { [ 8, asterisk ] };
key <AE09> { [ 9, parenleft ] };
key <AE10> { [ 0, parenright ] };
key <AE11> { [ bracketleft, braceleft ] };
key <AE12> { [ bracketright, braceright ] };
key <AD01> {
type = "CONTROL_Q",
symbols[Group1] = [ apostrophe, quotedbl, q ]
};
key <AD02> {
type = "CONTROL_Q",
symbols[Group1] = [ comma, less, w ]
};
key <AD03> {
type = "CONTROL_Q",
symbols[Group1] = [ period, greater,e ]
};
key <AD04> {
type = "CONTROL_Q",
symbols[Group1] = [ p, P, r ]
};
key <AD05> {
type = "CONTROL_Q",
symbols[Group1] = [ y, Y, t ]
};
key <AD06> {
type = "CONTROL_Q",
symbols[Group1] = [ f, F, y ]
};
key <AD07> {
type = "CONTROL_Q",
symbols[Group1] = [ g, G, u ]
};
key <AD08> {
type = "CONTROL_Q",
symbols[Group1] = [ c, C, j ]
};
key <AD09> {
type = "CONTROL_Q",
symbols[Group1] = [ r, R, o ]
};
key <AD10> {
type = "CONTROL_Q",
symbols[Group1] = [ l, L, p ]
};
key <AD11> { [ slash, question ] };
key <AD12> { [ equal, plus ] };
key <AC01> {
type = "CONTROL_Q",
symbols[Group1] = [ a, A, a ]
};
key <AC02> {
type = "CONTROL_Q",
symbols[Group1] = [ o, O, s ]
};
key <AC03> {
type = "CONTROL_Q",
symbols[Group1] = [ e, E, d ]
};
key <AC04> {
type = "CONTROL_Q",
symbols[Group1] = [ u, U, f ]
};
key <AC05> {
type = "CONTROL_Q",
symbols[Group1] = [ i, I, g ]
};
key <AC06> {
type = "CONTROL_Q",
symbols[Group1] = [ d, D, h ]
};
key <AC07> {
type = "CONTROL_Q",
symbols[Group1] = [ h, H, j ]
};
key <AC08> {
type = "CONTROL_Q",
symbols[Group1] = [ t, T, k ]
};
key <AC09> {
type = "CONTROL_Q",
symbols[Group1] = [ n, N, l ]
};
key <AC10> { [ s, S ] };
key <AC11> { [ minus, underscore ] };
key <AB01> {
type = "CONTROL_Q",
symbols[Group1] = [ semicolon, colon, z ]
};
key <AB02> {
type = "CONTROL_Q",
symbols[Group1] = [ q, Q, x ]
};
key <AB03> {
type = "CONTROL_Q",
symbols[Group1] = [ j, J, c ]
};
key <AB04> {
type = "CONTROL_Q",
symbols[Group1] = [ k, K, v ]
};
key <AB05> {
type = "CONTROL_Q",
symbols[Group1] = [ x, X, b ]
};
key <AB06> {
type = "CONTROL_Q",
symbols[Group1] = [ b, B, n ]
};
key <AB07> {
type = "CONTROL_Q",
symbols[Group1] = [ m, M, m ]
};
key <AB08> { [ w, W ] };
key <AB09> { [ v, V ] };
key <AB10> { [ z, Z ] };
};
Finally, change /etc/X11/xorg.conf to change your keyboard variant to our new custom variant.
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
Option "XkbVariant" "dvorakqwerty"
EndSection
Ctrl-Alt-Backspace, and gnome will ask you which settings you would like to use. Choose X's settings, and you can now press Ctrl-C, Ctrl-V, and the like in qwerty, while still typing using the dvorak layout for everything else.
Bryce