// Programmer Dvorak, by Roland Kaufmann <rlndkfmn at gmail dot com>
// License: BSD, available at <http://www.kaufmann.no/roland/dvorak/license.html>
// Main features: Numbers are in shift position (like French), symbols have been
// placed in locations that give good hand-alternation and finger rolling with
// symbols that usually follows, accented characters are possible for I18N.
partial alphanumeric_keys
xkb_symbols "dvp" {
    include "us(dvorak)"

    name[Group1] = "USA - Programmer Dvorak";

    //             Unmodified       Shift           AltGr            Shift+AltGr
    // symbols row, left side
    key <TLDE> { [ dollar,          asciitilde,     dead_tilde                  ] };
    key <AE01> { [ ampersand,       1                                           ] };
    key <AE02> { [ bracketleft,     2,              currency                    ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE03> { [ braceleft,       3,              cent                        ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE04> { [ braceright,      4,              yen                         ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE05> { [ parenleft,       5,              EuroSign                    ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE06> { [ equal,           6,              sterling                    ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };

    // symbols row, right side
    key <AE07> { [ asterisk,        7                                           ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE08> { [ parenright,      8,              onehalf                     ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE09> { [ plus,            9                                           ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE10> { [ bracketright,    0                                           ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE11> { [ exclam,          percent,        exclamdown                  ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <AE12> { [ numbersign,      grave,          dead_grave                  ] };
    key <BKSP> { [ BackSpace                                                    ] };

    // upper row, left side
    key <AD01> { [ semicolon,       colon,          dead_diaeresis              ] };
    key <AD02> { [ comma,           less,           guillemotleft               ] };
    key <AD03> { [ period,          greater,        guillemotright              ] };
    key <AD04> { [ p,               P,              paragraph,       section    ] };
    key <AD05> { [ y,               Y,              udiaeresis,      Udiaeresis ] };

    // upper row, right side
    key <AD08> { [ c,               C,              ccedilla,        Ccedilla   ] };
    key <AD09> { [ r,               R,              registered,      trademark  ] };
    key <AD11> { [ slash,           question,       questiondown                ] };
    key <AD12> { [ at,              asciicircum,    dead_circumflex, dead_caron ] };

    // home row, left side
    key <AC01> { [ a,               A,              aring,           Aring      ] };
    key <AC02> { [ o,               O,              oslash,          Ooblique   ] };
    key <AC03> { [ e,               E,              ae,              AE         ] };
    key <AC04> { [ u,               U,              eacute,          Eacute     ] };

    // home row, right side
    key <AC06> { [ d,               D,              eth,             ETH        ] };
    key <AC07> { [ h,               H,              dead_acute                  ] };
    key <AC08> { [ t,               T,              thorn,           THORN      ] };
    key <AC09> { [ n,               N,              ntilde,          Ntilde     ] };
    key <AC10> { [ s,               S,              ssharp                      ] };
    key <AC11> { [ minus,           underscore,     hyphen                      ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
    key <BKSL> { [ backslash,       bar                                         ] };

    // lower row, left side
    key <AB01> { [ apostrophe,      quotedbl,       dead_acute                  ] };
};
