Dvorak-intl-code Keyboard Layout Update

Dvorak-intl-code is a keyboard layout optimized for polyglot hackers I’ve started working on and using in 2008. This article demonstrates how to easily create your own keyboard layout by extending an existing one, storing your config in your home directory and load it with a command which .xinitrc or whatever can call. Just add a file in ~/.xkb/symbols, for example I put mine in /home/jpic/.xkb/symbols/code, and looks as such: // Dvorak variant for polyglot coder [Read More]

Dvorak-intl-code

After upgrading Ubuntu, I had to redo my custom dvorak layout.

To enable it, the only way I’ve found is to add the layout to /usr/share/X11/xkb/us.

Then you can enable it through a GUI, or with command:

setxkbmap us dvorak-intl-code

It is optimized for multilinguists and hackers:

// Dvorak international with dead keys and optimisations for code
// Olivier Mehani (shtrom-xorg@ssji.net) & James Pic
// Reproduce the per-key mapping of us(intl) for the dvorak layout
// aka "I just swapped my keys over"
// Symbols and numbers swapped for code
// colon and semi colon swapped for vim
partial alphanumeric_keys
xkb_symbols "dvorak-intl-code" {

    name[Group1]= "English (Dvorak international with dead keys)";

    include "us(dvorak)"

    key <tlde> { [dead_grave, dead_tilde,         grave,       asciitilde ] };

    key <ae01> { [     exclam,     1,    exclamdown,      onesuperior ] };
    key <ae02> { [         at,     2,   twosuperior, dead_doubleacute ] };
    key <ae03> { [ numbersign,     3, threesuperior,      dead_macron ] };
    key <ae04> { [     dollar,     4,      currency,         sterling ] };
    key <ae05> { [    percent,     5,      EuroSign,     dead_cedilla ] };
    key <ae06> { [asciicircum,     6,    onequarter,  dead_circumflex ] };
    key <ae07> { [  ampersand,     7,       onehalf,    dead_horn ] };
    key <ae08> { [   asterisk,     8, threequarters,      dead_ogonek ] };
    key <ae09> { [  parenleft,     9, leftsinglequotemark, dead_breve ] };
    key <ae10> { [ parenright,     0, rightsinglequotemark, dead_abovering ] };
    key <ae11> { [ bracketleft,  braceleft,  guillemotleft, leftdoublequotemark ] };
    key <ae12> { [bracketright, braceright, guillemotright, rightdoublequotemark ] };

    key <ad01> { [ apostrophe,        quotedbl, dead_acute, dead_diaeresis ] };
    key <ad02> { [     comma,       less,      ccedilla,         Ccedilla ] };
    key <ad03> { [    period,    greater, dead_abovedot,       dead_caron ] };
    key <ad04> { [     p,          P,    odiaeresis,       Odiaeresis ] };
    key <ad05> { [     y,          Y,    udiaeresis,       Udiaeresis ] };
    // key <ad06> { [      f,   F       ]   };
    // key <ad07> { [      g,   G       ]   };
    key <ad08> { [     c,          C,     copyright,             cent ] };
    key <ad09> { [     r,          R,    registered,       registered ] };
    key <ad10> { [     l,          L,        oslash,         Ooblique ] };
    key <ad11> { [     slash,   question,  questiondown,        dead_hook ] };
    // key <ad12> { [     equal,       plus,      multiply,         division ] };

    key <ac01> { [     a,          A,        aacute,           Aacute ] };
    key <ac02> { [     o,          O,        oacute,           Oacute ] };
    key <ac03> { [     e,          E,        eacute,           Eacute ] };
    key <ac04> { [     u,          U,        uacute,           Uacute ] };
    key <ac05> { [     i,          I,        iacute,           Iacute ] };
    key <ac06> { [     d,          D,           eth,              ETH ] };
    // key <ac07> { [      h,   H       ]   };
    key <ac08> { [     t,          T,         thorn,            THORN ] };
    key <ac09> { [     n,          N,        ntilde,           Ntilde ] };
    key <ac10> { [     s,          S,        ssharp,          section ] };
    // key <ac11> { [     minus, underscore,           yen,    dead_belowdot ] };

    key <ab01> { [      colon, semicolon,     paragraph,           degree ] };
    key <ab02> { [     q,          Q,    adiaeresis,       Adiaeresis ] };
    // key <ab03> { [      j,   J       ]   };
    key <ab04> { [     k,          K,            oe,               OE ] };
    // key <ab05> { [      x,   X       ]   };
    // key <ab06> { [      b,   B       ]   };
    key <ab07> { [     m,          M,            mu,               mu ] };
    key <ab08> { [     w,          W,         aring,            Aring ] };
    // key <ab09> { [      v,   V       ]   };
    key <ab10> { [     z,          Z,            ae,               AE ] };

    key <bksl> { [ backslash,        bar,       notsign,        brokenbar ] };

    include "level3(ralt_switch)"
}; </bksl></ab10></ab09></ab08></ab07></ab06></ab05></ab04></ab03></ab02></ab01></ac11></ac10></ac09></ac08></ac07></ac06></ac05></ac04></ac03></ac02></ac01></ad12></ad11></ad10></ad09></ad08></ad07></ad06></ad05></ad04></ad03></ad02></ad01></ae12></ae11></ae10></ae09></ae08></ae07></ae06></ae05></ae04></ae03></ae02></ae01></tlde>