// $XdotOrg$
//
// $XFree86: xc/programs/xkbcomp/symbols/pc/pc,v 1.9 2003/06/09 19:59:46 dawes Exp $

partial hidden alphanumeric_keys modifier_keys 
xkb_symbols "basic" {

    key <ESC>  {	[ Escape			]	};

    // 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> {	[     minus,	underscore	]	};
    key <AE12> {	[     equal,	plus		]	};

    key <BKSP> {
        type="CTRL+ALT",
        symbols[Group1]= [ BackSpace,   Terminate_Server ]
    };

    key  <TAB> {	[ 	Tab,	ISO_Left_Tab	]	};
    key <RTRN> {	[ Return			]	};

    key <CAPS> {	[	Caps_Lock		]	};

    key <LFSH> {	[ 	 Shift_L		]	};
    key <BKSL> {	[ backslash,	bar		]	};

    key <LCTL> {	[ 	 Control_L		]	};
    key <SPCE> {	[ 	 space			]	};

    key <RTSH> {	[ 	Shift_R		]	};
    key <LALT> {	[ 	Alt_L	 	]	};
    key <RCTL> {	[ 	Control_R	]	};
    key <RALT> {	[	Alt_R		]	};

    // End alphanumeric section

    // Begin "Function" section
    key <FK01> {
        type="CTRL+ALT",
        symbols[Group1]= [ F1,	XF86_Switch_VT_1 ]
    };
    key <FK02> {
        type="CTRL+ALT",
        symbols[Group1]= [ F2,	XF86_Switch_VT_2 ]
    };
    key <FK03> {
        type="CTRL+ALT",
        symbols[Group1]= [ F3,	XF86_Switch_VT_3 ]
    };
    key <FK04> {
        type="CTRL+ALT",
        symbols[Group1]= [ F4,	XF86_Switch_VT_4 ]
    };
    key <FK05> {
        type="CTRL+ALT",
        symbols[Group1]= [ F5,	XF86_Switch_VT_5 ]
    };
    key <FK06> {
        type="CTRL+ALT",
        symbols[Group1]= [ F6,	XF86_Switch_VT_6 ]
    };
    key <FK07> {
        type="CTRL+ALT",
        symbols[Group1]= [ F7,	XF86_Switch_VT_7 ]
    };
    key <FK08> {
        type="CTRL+ALT",
        symbols[Group1]= [ F8,	XF86_Switch_VT_8 ]
    };
    key <FK09> {
        type="CTRL+ALT",
        symbols[Group1]= [ F9,	XF86_Switch_VT_9 ]
    };
    key <FK10> {
        type="CTRL+ALT",
        symbols[Group1]= [ F10,	XF86_Switch_VT_10 ]
    };
    key <FK11> {
        type="CTRL+ALT",
        symbols[Group1]= [ F11,	XF86_Switch_VT_11 ]
    };
    key <FK12> {
        type="CTRL+ALT",
        symbols[Group1]= [ F12,	XF86_Switch_VT_12 ]
    };
    // End "Function" section

    // Begin "Editing" section
    key <PRSC> {
	type= "PC_SYSRQ",
	symbols[Group1]= [ Print, Sys_Req ]
    };
    key <SYRQ> {
	type= "PC_SYSRQ",
	symbols[Group1]= [ Print, Sys_Req ]
    };
    key <SCLK> {  [  Scroll_Lock	]	};
    key <PAUS> {
	type= "PC_BREAK",
	symbols[Group1]= [ Pause, Break ]
    };
    key <BRK> {
	type= "PC_BREAK",
	symbols[Group1]= [ Pause, Break ]
    };
    key  <INS> {	[  Insert		]	};
    key <HOME> {	[  Home			]	};
    key <PGUP> {	[  Prior		]	};
    key <DELE> {	[  Delete		]	};
    key  <END> {	[  End			]	};
    key <PGDN> {	[  Next			]	};

    key   <UP> {	[  Up			]	};
    key <LEFT> {	[  Left			]	};
    key <DOWN> {	[  Down			]	};
    key <RGHT> {	[  Right		]	};

    // End "Editing" section, begin "Keypad"
    key <NMLK> {	[  Num_Lock, Pointer_EnableKeys		]	};

// Ungrab cancels server/keyboard/pointer grabs
    key <KPDV> {
        type="CTRL+ALT",
        symbols[Group1]= [ KP_Divide,	XF86_Ungrab ]
    };

// ClsGrb kills whichever client has a grab in effect
    key <KPMU> {
        type="CTRL+ALT",
        symbols[Group1]= [ KP_Multiply,	XF86_ClearGrab ]
    };

// -VMode switches to the previous video mode
    key <KPSU> {
        type="CTRL+ALT",
        symbols[Group1]= [ KP_Subtract,	XF86_Prev_VMode ]
    };

    key  <KP7> {	[  KP_Home,	KP_7	]	};
    key  <KP8> {	[  KP_Up,	KP_8	]	};
    key  <KP9> {	[  KP_Prior,	KP_9	]	};

// +VMode switches to the next video mode
    key <KPAD> {
        type="CTRL+ALT",
        symbols[Group1]= [ KP_Add,	XF86_Next_VMode ]
    };

    key  <KP4> {	[  KP_Left,	KP_4	]	};
    key  <KP5> {	[  KP_Begin,	KP_5	]	};
    key  <KP6> {	[  KP_Right,	KP_6	]	};

    key  <KP1> {	[  KP_End,	KP_1	]	};
    key  <KP2> {	[  KP_Down,	KP_2	]	};
    key  <KP3> {	[  KP_Next,	KP_3	]	};
    key <KPEN> {	[  	KP_Enter	]	};
    key <KPEQ> {	[  	KP_Equal	]	};

    key  <KP0> {	[  KP_Insert,	KP_0	]	};
    key <KPDL> {  	[  KP_Delete,	KP_Decimal ]	};
    // End "Keypad" section

    // begin modifier mappings
    modifier_map Shift  { Shift_L, Shift_R };
    modifier_map Lock   { Caps_Lock, ISO_Lock };
    modifier_map Control{ Control_L, Control_R };
    modifier_map Mod2   { Num_Lock };

    //  Fake keys for virtual<->real modifiers mapping 
    key <LVL3> {	[ ISO_Level3_Shift	]	};
    key <MDSW> {	[ Mode_switch 		]	};
    modifier_map Mod5   { <LVL3>, <MDSW> };

    key <ALT>  {	[ NoSymbol, Alt_L	]	};
    modifier_map Mod1   { <ALT>, <LALT> };

    key <META> {	[ NoSymbol, Meta_L	]	};
    modifier_map Mod1   { <META> };

    key <SUPR> {	[ NoSymbol, Super_L	]	};
    modifier_map Mod4   { <SUPR> };

    key <HYPR> {	[ NoSymbol, Hyper_L	]	};
    modifier_map Mod4   { <HYPR> };
};

// definition for the PC-AT type 101 key keyboard
xkb_symbols "pc101" {
    include "pc/pc(basic)"
    key <LALT> {	[ 	Alt_L,	Meta_L 		]	};
    key <RALT> {	[	Alt_R,	Meta_R		]	};

};

// definition for the extra key on 102-key keyboards
xkb_symbols "pc102" {
    include "pc/pc(pc101)"
    key <LSGT> { [      less,    greater,          bar,    brokenbar ]	};
};

// definition for the extra keys on 104-key "Windows95" keyboards
default
xkb_symbols "pc104" {
    include "pc/pc(basic)"
    key <LALT> {	[ 	Alt_L,	Meta_L		]	};
    key <RALT> {	[	Alt_R,	Meta_R		]	};
    key <LWIN> {	[	Super_L			]	};
    key <RWIN> {	[	Super_R			]	};
    key <MENU> {	[	Menu			]	};

};

// defintion which includes both the Windows95 keyboards _and_
// the extra key on most European keyboards.
xkb_symbols "pc105" {
    include "pc/pc(pc104)"
    key <LSGT> { [      less,    greater,          bar,    brokenbar ]	};
};

// common keys which can be overwritten in some layouts
xkb_symbols "common" {

    // 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> {	[     minus,	underscore	]	};
    key <AE12> {	[     equal,	plus		]	};

    key <BKSL> {	[ backslash,	bar		]	};
    key <SPCE> {	[ 	 space			]	};

    // "Keypad" section
    key <KPDL> {  	[  KP_Delete,	KP_Decimal	]	};

    // extra keys on 104-key "Windows95" keyboards
    key <LWIN> {	[	Super_L			]	};
    key <RWIN> {	[	Super_R			]	};
    key <MENU> {	[	Menu			]	};

    // the extra key on most European keyboards
    key <LSGT> { [      less,    greater,          bar,    brokenbar ]	};
};
