
// based on a keyboard map from an 'xkb/symbols/dk' file
//
// $XFree86: xc/programs/xkbcomp/symbols/pc/dvorak,v 1.7 2004/04/03 13:43:42 pascal Exp $

partial default alphanumeric_keys
xkb_symbols "basic" {

    name[Group1]= "Dvorak";

    // Alphanumeric section

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

    key <AE01> { [	    1,	exclam 		]	};
    key <AE02> { [	    2,	at		]	};
    key <AE03> { [	    3,	numbersign	]	};
    key <AE04> { [	    4,	dollar		]	};
    key <AE05> { [	    5,	percent		]	};
    key <AE06> { [	    6,	asciicircum, dead_circumflex, dead_circumflex ]	};
    key <AE07> { [	    7,	ampersand	]	};
    key <AE08> { [	    8,	asterisk	]	};
    key <AE09> { [	    9,	parenleft,  dead_grave]	};
    key <AE10> { [	    0,	parenright	]	};
    key <AE11> { [ bracketleft,	braceleft	]	};
    key <AE12> { [ bracketright, braceright,  dead_tilde] };

    key <AD01> { [  apostrophe,	quotedbl, dead_acute, dead_diaeresis	] };
    key <AD02> { [	comma,	less,   dead_cedilla, dead_caron	] };
    key <AD03> { [      period,	greater, dead_abovedot, periodcentered	] };
    key <AD04> { [	    p,	P		]	};
    key <AD05> { [	    y,	Y		]	};
    key <AD06> { [	    f,	F		]	};
    key <AD07> { [	    g,	G		]	};
    key <AD08> { [	    c,	C		]	};
    key <AD09> { [	    r,	R		]	};
    key <AD10> { [	    l,	L		]	};
    key <AD11> { [	slash,	question	]	};
    key <AD12> { [	equal,	plus		]	};

    key <AC01> { [	    a,	A 		]	};
    key <AC02> { [	    o,	O		]	};
    key <AC03> { [	    e,	E		]	};
    key <AC04> { [	    u,	U		]	};
    key <AC05> { [	    i,	I		]	};
    key <AC06> { [	    d,	D		]	};
    key <AC07> { [	    h,	H		]	};
    key <AC08> { [	    t,	T		]	};
    key <AC09> { [	    n,	N		]	};
    key <AC10> { [	    s,	S		]	};
    key <AC11> { [	minus,	underscore	]	};

    key <AB01> { [   semicolon,	colon, dead_ogonek, dead_doubleacute ] };
    key <AB02> { [	    q,	Q		]	};
    key <AB03> { [	    j,	J		]	};
    key <AB04> { [	    k,	K		]	};
    key <AB05> { [	    x,	X		]	};
    key <AB06> { [	    b,	B		]	};
    key <AB07> { [	    m,	M		]	};
    key <AB08> { [	    w,	W		]	};
    key <AB09> { [	    v,	V		]	};
    key <AB10> { [	    z,	Z		]	};

    include "level3(ralt_switch_multikey)"
};

// Norwegian Dvorak
partial alphanumeric_keys 
xkb_symbols "no" {
    include "pc/dvorak(basic)"

    key <TLDE> { [	  bar,	section, brokenbar, paragraph	] };

    key <AE01> { [	    1,	exclam, exclamdown, onesuperior	] };
    key <AE02> { [	    2,	quotedbl,   at,     twosuperior	] };
    key <AE03> { [	    3,	numbersign, sterling, threesuperior ] };
    key <AE04> { [	    4,	dollar,     currency,onequarter	] };
    key <AE05> { [	    5,	percent,    onehalf,	onehalf	] };
    key <AE06> { [	    6,	ampersand,  threequarters, threequarters ] };
    key <AE07> { [	    7,	slash,      braceleft, division	] };
    key <AE08> { [	    8,	parenleft,  bracketleft		] };
    key <AE09> { [	    9,	parenright, bracketright	] };
    key <AE10> { [	    0,	equal,	    braceright		] };
    key <AE11> { [	 plus,	question,   plusminus, questiondown ] };
    key <AE12> { [   backslash,	grave,	    dead_acute,	dead_grave  ] };

    key <AD01> { [       aring,	Aring,  braceright, bracketright ] };
    key <AD02> { [	comma,	semicolon, dead_cedilla, cedilla ] };
    key <AD03> { [      period,	colon,  periodcentered		 ] };
    key <AD04> { [	    p,	P,      thorn,	THORN		 ] };
    key <AD05> { [	    y,	Y,      yen			 ] };
    key <AD06> { [	    f,	F,      ordfeminine		 ] };
    key <AD08> { [	    c,	C,      ccedilla, copyright	 ] };
    key <AD09> { [	    r,	R,      registered		 ] };
    key <AD11> { [  apostrophe,	asterisk, dead_circumflex, acute ] };
    key <AD12> { [  asciitilde,	asciicircum, dead_diaeresis, dead_tilde	] };

    key <AC03> { [	    e,	E,      EuroSign,	cent	 ] };
    key <AC05> { [	    i,	I,      idotless,       Iabovedot] };
    key <AC06> { [	    d,	D,      eth,		ETH	 ] };
    key <AC10> { [	    s,	S,      ssharp			 ] };
    key <AC11> { [	minus,	underscore, hyphen,	diaeresis] };

    key <AB01> { [	   ae,	AE,     braceleft,	bracketleft] };
    key <AB05> { [	    x,	X,      multiply		 ] };
    key <AB07> { [	    m,	M,	mu			 ] };
    key <BKSL> { [	 less,	greater, guillemotleft, guillemotright	] };

    key <SPCE> { [	 space,	space, nobreakspace, nobreakspace] };

    key <LSGT> { [	oslash,	Ooblique,  bar,	backslash	 ] };

};

// Swedish Dvorak
partial alphanumeric_keys 
xkb_symbols "se" {
    include "pc/dvorak(no)"

    key <TLDE> { [     section,	onehalf		]	};

    key <AE04> { [	    4,	currency,   dollar,    onequarter	] };
    key <AE11> { [        plus,	question,   backslash, questiondown	] };
    key <AE12> { [  dead_acute, dead_grave, backslash, grave		] };

    key <AD01> { [  odiaeresis,  Odiaeresis, braceright, bracketright	] };
    key <AD02> { [       aring,	Aring	  	]	};
    key <AD03> { [  adiaeresis,	Adiaeresis	]	};
    key <AD11> { [           q,	Q       	]	};
    key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde, asciicircum ] };

    key <AB01> { [     comma,    semicolon, dead_cedilla, cedilla	] };
    key <AB02> { [    period,    colon,     periodcentered		] };

    key <BKSL> { [      less,	greater,    bar,	brokenbar	] };

    key <LSGT> { [ apostrophe,   asterisk,  bar,	backslash	] };

};
// Swedish Dvorak alias
partial alphanumeric_keys 
xkb_symbols "sv" {
    include "pc/dvorak(se)"
};

// Dvorak (UK) keymap (by odaen) allowing the usage of
// the £ and ? key and swapping the @ and " keys.

partial alphanumeric_keys
xkb_symbols "gb" {
    include "pc/dvorak(basic)"

    key <BKSL> { [ numbersign,	asciitilde	] };
    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,	at		] };
};

// Keymap Dvorak pour le Français
// par Josselin Mouette <josselin.mouette@ens-lyon.org>.

partial alphanumeric_keys
xkb_symbols "fr" {

    name[Group1]= "French dvorak";

    key <TLDE>  { [         oe,       OE,              ae,             AE ] };

    key <AE01>  { [      slash,        1,       ampersand,    onesuperior ] };
    key <AE02>  { [       plus,        2,      asciitilde,    twosuperior ] };
    key <AE03>  { [      minus,        3,      numbersign,  threesuperior ] };
    key <AE04>  { [   asterisk,        4,            less,  guillemotleft ] };
    key <AE05>  { [      equal,        5,         greater, guillemotright ] };
    key <AE06>  { [  backslash,        6,              at,        notsign ] };
    key <AE07>  { [  parenleft,        7, dead_circumflex,       multiply ] };
    key <AE08>  { [      grave,        8,      dead_grave,       division ] };
    key <AE09>  { [ parenright,        9,     asciicircum,      plusminus ] };
    key <AE10>  { [   quotedbl,        0,  dead_diaeresis, dead_diaeresis ] };
    key <AE11>  { [bracketleft,   braceleft,          bar,         degree ] };
    key <AE12>  { [bracketright, braceright,      percent,        percent ] };

    key <AD01>  { [      colon, question,        question,   questiondown ] };
    key <AD02>  { [     agrave,   Agrave,           aring,          Aring ] };
    key <AD03>  { [     eacute,   Eacute,        EuroSign,           cent ] };
    key <AD04>  { [          g,        G,          oslash,       Ooblique ] };
    key <AD05>  { [     period,   exclam,  periodcentered,     exclamdown ] };
    key <AD06>  { [          h,        H,             eth,            ETH ] };
    key <AD07>  { [          v,        V              ] };
    key <AD08>  { [          c,        C,       copyright,     registered ] };
    key <AD09>  { [          m,        M,              mu,             mu ] };
    key <AD10>  { [          k,        K,          dollar,         dollar ] };
    key <AD11>  { [     egrave,   Egrave,        sterling,       sterling ] };
    key <AD12>  { [          z,        Z,             yen,            yen ] };

    key <AC01>  { [          o,        O,     ocircumflex,    Ocircumflex ] };
    key <AC02>  { [          a,        A,     acircumflex,    Acircumflex ] };
    key <AC03>  { [          u,        U,     ucircumflex,    Ucircumflex ] };
    key <AC04>  { [          e,        E,     ecircumflex,    Ecircumflex ] };
    key <AC05>  { [          b,        B,          ssharp,         ssharp ] };
    key <AC06>  { [          f,        F      ] };
    key <AC07>  { [          s,        S      ] };
    key <AC08>  { [          t,        T,           thorn,          THORN ] };
    key <AC09>  { [          n,        N,          ntilde,         Ntilde ] };
    key <AC10>  { [          d,        D,         section,        section ] };
    key <AC11>  { [          w,        W,       paragraph,      paragraph ] };
    key <BKSL>  { [     ugrave,   Ugrave,       masculine,    ordfeminine ] };

    key <AB01>  { [ apostrophe, underscore,    dead_acute,         macron ] };
    key <AB02>  { [          q,        Q,   guillemotleft,  guillemotleft ] };
    key <AB03>  { [     comma, semicolon,  guillemotright, guillemotright ] };
    key <AB04>  { [          i,        I,     icircumflex,    Icircumflex ] };
    key <AB05>  { [          y,        Y,      ydiaeresis,     Ydiaeresis ] };
    key <AB06>  { [          x,        X,      ediaeresis,     Ediaeresis ] };
    key <AB07>  { [          r,        R,      udiaeresis,     Udiaeresis ] };
    key <AB08>  { [          l,        L,      adiaeresis,     Adiaeresis ] };
    key <AB09>  { [          p,        P,      odiaeresis,     Odiaeresis ] };
    key <AB10>  { [          j,        J,      idiaeresis,     Idiaeresis ] };

    key <SPCE>  { [      space,    space,    nobreakspace,   nobreakspace ] };
    key <LSGT>  { [   ccedilla, Ccedilla      ] };

    include "level3(ralt_switch_multikey)"
};


// Polish Dvorak keymaps
// by Rafal Rzepecki <divide@users.sf.net>

// The default keymap "pl" places Polish quotes on quotemark key and 
// moves the dead symbols from there to "1/!" key. If you are used to default 
// dead keys placement, you could use "pl_altquotes"; in this layout 
// dead keys remain in the old place, whereas Polish quotes are placed on the
// "1/!" key. If you do not use Polish quotes at all, you can use "pl_basic" map.

// Basic Polish keymap (without Polish quotes)
partial alphanumeric_keys 
xkb_symbols "pl_basic" {
    include "pc/dvorak(basic)"
    
    name[Group1] = "Polish Dvorak";

    key <AD08> { [	    c,	C,	cacute,	Cacute		]	};
    key <AD10> { [	    l,	L,     lstroke, Lstroke		]	};
    key <AC01> { [	    a,	A,     aogonek, Aogonek		]	};
    key <AC02> { [	    o,	O,      oacute, Oacute		]	};
    key <AC03> { [	    e,	E,     eogonek, Eogonek		]	};
    key <AC09> { [	    n,	N,      nacute, Nacute		]	};
    key <AC10> { [	    s,	S,      sacute, Sacute		]	};
    key <AB09> { [	    v,	V,      zacute, Zacute		]	};
    key <AB10> { [	    z,	Z,   zabovedot, Zabovedot	]	};
    
    // this to allow writing ALL CAPS with a Shift key
    include "level3(ralt_switch)"

    // use one of compose:* options to choose Multi_key, if you will,
    // or layout +level3(ralt_switch_multikey) to revert standard behaviour
};

// Default Polish keymap with Polish quotes on quotemark key
partial alphanumeric_keys
xkb_symbols "pl" {
    include "pc/dvorak(pl_basic)"
    
    key <AD01> { [  apostrophe,	quotedbl, doublelowquotemark, rightdoublequotemark	] };

    // Dead symbols moved to this key
    key <AE01> { [	    1,	exclam, dead_acute, dead_diaeresis 		]	};
};

// Polish keymap with Polish quotes on key "1/!"
partial alphanumeric_keys
xkb_symbols "pl_altquotes" {
    include "pc/dvorak(pl_basic)"

    key <AE01> { [	    1,	exclam, doublelowquotemark, rightdoublequotemark	]	};
};

// German Dvorak
partial alphanumeric_keys 
xkb_symbols "de" {
    include "pc/dvorak(basic)"

    key <TLDE> { [	dead_circumflex,	degree,		notsign,	notsign		]	};
    key <AE01> { [	1,			exclam,		onesuperior			]	};
    key <AE02> { [	2,			quotedbl,	twosuperior			]	};
    key <AE03> { [	3,			section,	threesuperior,	sterling	]	};
    key <AE04> { [	4,			dollar,		onequarter,	currency	]	};
    key <AE05> { [	5,			percent,	onehalf				]	};
    key <AE06> { [	6,			ampersand,	threequarters			]	};
    key <AE07> { [	7,			slash,		braceleft			]	};
    key <AE08> { [	8,			parenleft,	bracketleft			]	};
    key <AE09> { [	9,			parenright,	bracketright,	plusminus	]	};
    key <AE10> { [	0,			equal,		braceright,	degree		]	};
    key <AE11> { [	ssharp,			question,	backslash,	questiondown	]	};
    key <AE12> { [	dead_acute,		dead_grave,	dead_cedilla,	dead_ogonek	]	};
    key <AB02> { [	q,			Q,		at				]	};
    key <AD08> { [	c,			C,		cent				]	};
    key <AC03> { [	e,			E,		EuroSign			]	};
    key <AC02> { [	o,			O,		oslash				]	};
    key <AD11> { [	udiaeresis,		Udiaeresis,	dead_diaeresis	 		]	};
    key <AD12> { [      plus,			asterisk,	dead_tilde,	dead_macron	]	};
    key <AD01> { [ 	odiaeresis,		Odiaeresis,	dead_doubleacute		]	};
    key <AB01> { [ 	adiaeresis,		Adiaeresis,	dead_circumflex			]	};
    key <LSGT> { [      less,			greater,	bar				]	};
    key <AD05> { [	y,			Y,		guillemotleft,	less		]	};
    key <AB07> { [	m,			M,		mu				]	};
    key <AD02> { [	comma,			semicolon					]	};
    key <AD03> { [	period,			colon,		periodcentered,	division	]	};
    key <BKSL> { [	numbersign,		apostrophe,	dead_grave			]	};
};

partial alphanumeric_keys
xkb_symbols "de_nodeadkeys" {

    // modify the German layout to not have any dead keys

    include "pc/dvorak(de)"

    key <TLDE>  { [asciicircum,    degree,      notsign,      notsign ] };
    key <AE12>  { [     acute,      grave,      cedilla,      cedilla ] };
    key <AD11>  { [udiaeresis, Udiaeresis,    diaeresis,    diaeresis ] };
    key <AD12>  { [      plus,   asterisk,   asciitilde,       macron ] };
    key <AD01>  { [odiaeresis, Odiaeresis,  doubleacute,  doubleacute ] };
    key <AB01>  { [adiaeresis, Adiaeresis,  asciicircum,  asciicircum ] };
    key <BKSL>  { [numbersign, apostrophe,        grave,        grave ] };
    key <AC11>  { [     minus, underscore, dead_belowdot,    abovedot ] };
};

partial alphanumeric_keys
xkb_symbols "de_deadgraveacute" {
    // modify the German layout to have only acute and grave
    // as dead keys (tilde and circumflex are needed as spacing characters
    // in many programming languages)

    include "pc/dvorak(de)"

    key <TLDE>  { [asciicircum,    degree,      notsign,      notsign ] };
    key <AD12>  { [      plus,   asterisk,   asciitilde,  dead_macron ] };
    key <BKSL>  { [numbersign, apostrophe,        grave,        grave ] };
};

partial alphanumeric_keys
xkb_symbols "de_deadacute" {
    // modify the German layout to have only acute as
    // dead keys (ASCII grave, tilde and circumflex are needed as
    // spacing characters in many programming languages and text formatters)

    include "pc/dvorak(de_deadgraveacute)"

    key <AE12>  { [dead_acute,      grave, dead_cedilla,  dead_ogonek ] };
    key <BKSL>  { [numbersign, apostrophe,   dead_grave,   dead_grave ] };
};
