const char *srcdir = getenv("srcdir");
snprintf(path, PATH_MAX - 1,
- "%s/test/data/%s", srcdir ? srcdir : ".", path_rel);
+ "%s/test/data/%s", srcdir ? srcdir : ".",
+ path_rel ? path_rel : "");
return path;
}
struct xkb_context *
test_get_context(void)
{
- return xkb_context_new(0);
+ struct xkb_context *ctx = xkb_context_new(XKB_CONTEXT_NO_DEFAULT_INCLUDES);
+
+ if (!ctx)
+ return NULL;
+
+ xkb_context_include_path_append(ctx, test_get_path(""));
+
+ return ctx;
}
struct xkb_keymap *
--- /dev/null
+default partial xkb_compatibility "basic" {
+ interpret AccessX_Enable {
+ action= LockControls(controls=AccessXKeys);
+ };
+};
+
+partial xkb_compatibility "full" {
+
+ interpret AccessX_Enable {
+ action= LockControls(controls=AccessXKeys);
+ };
+
+ interpret AccessX_Feedback_Enable {
+ action= LockControls(controls=AccessXFeedback);
+ };
+
+ interpret RepeatKeys_Enable {
+ action= LockControls(controls=RepeatKeys);
+ };
+
+ interpret SlowKeys_Enable {
+ action= LockControls(controls=SlowKeys);
+ };
+
+ interpret BounceKeys_Enable {
+ action= LockControls(controls=BounceKeys);
+ };
+
+ interpret StickyKeys_Enable {
+ action= LockControls(controls=StickyKeys);
+ };
+
+ interpret MouseKeys_Enable {
+ action= LockControls(controls=MouseKeys);
+ };
+
+ interpret MouseKeys_Accel_Enable {
+ action= LockControls(controls=MouseKeysAccel);
+ };
+
+ interpret Overlay1_Enable {
+ action= LockControls(controls=Overlay1);
+ };
+
+ interpret Overlay2_Enable {
+ action= LockControls(controls=Overlay2);
+ };
+
+ interpret AudibleBell_Enable {
+ action= LockControls(controls=AudibleBell);
+ };
+};
--- /dev/null
+// Minimal set of symbol interpretations to provide
+// reasonable default behavior (Num lock, shift and
+// caps lock and mode switch) and set up the
+// automatic updating of common keyboard LEDs.
+
+default xkb_compatibility "basic" {
+ virtual_modifiers NumLock,AltGr;
+
+ interpret.repeat= False;
+ setMods.clearLocks= True;
+ latchMods.clearLocks= True;
+ latchMods.latchToLock= True;
+
+ interpret Shift_Lock+AnyOf(Shift+Lock) {
+ action= LockMods(modifiers=Shift);
+ };
+
+ interpret Any+Lock {
+ action= LockMods(modifiers=Lock);
+ };
+
+ interpret Num_Lock+Any {
+ virtualModifier= NumLock;
+ action= LockMods(modifiers=NumLock);
+ };
+
+ interpret Mode_switch {
+ useModMapMods= level1;
+ virtualModifier= AltGr;
+ action= SetGroup(group=+1);
+ };
+
+ interpret Any + Any {
+ action= SetMods(modifiers=modMapMods);
+ };
+
+ group 2 = AltGr;
+ group 3 = AltGr;
+ group 4 = AltGr;
+
+ include "ledcaps"
+ include "lednum"
+ indicator "Shift Lock" {
+ !allowExplicit;
+ whichModState= Locked;
+ modifiers= Shift;
+ };
+};
--- /dev/null
+partial xkb_compatibility "caps_lock" {
+ // Keysym Caps_Lock locks Lock modifier.
+ // With this, the keysym Caps_Lock can be used without binding the whole
+ // key to a real modifier.
+ // This is essential when you don't want to use caps lock on the first
+ // level.
+ // This should not have any compatibility issues when used together with
+ // other layouts which don't utilize this capability.
+ interpret Caps_Lock {
+ action = LockMods(modifiers = Lock);
+ };
+};
--- /dev/null
+default xkb_compatibility "complete" {
+ include "basic"
+ augment "iso9995"
+ augment "mousekeys"
+ augment "accessx(full)"
+ augment "misc"
+ augment "xfree86"
+ augment "level5"
+ augment "caps(caps_lock)"
+};
--- /dev/null
+default xkb_compatibility "default" {
+ include "basic"
+ augment "mousekeys"
+ augment "accessx(basic)"
+ augment "misc"
+ augment "iso9995"
+ augment "level5"
+// ??should be changed/renamed/removed
+// augment "xfree86"
+ augment "japan"
+ augment "caps(caps_lock)"
+};
--- /dev/null
+// Fairly complete set of symbol interpretations
+// to provide reasonable default behavior
+
+default partial xkb_compatibility "default" {
+ virtual_modifiers LevelThree,AltGr;
+
+ interpret.repeat= False;
+ setMods.clearLocks= True;
+ latchMods.clearLocks= True;
+ latchMods.latchToLock= True;
+
+ interpret ISO_Lock+Any {
+ action= ISOLock(affect= all,modifiers=modMapMods);
+ };
+
+ interpret ISO_Level2_Latch+Shift {
+ useModMapMods= level1;
+ action= LatchMods(modifiers=Shift);
+ };
+
+ interpret ISO_Level3_Shift+Any {
+ useModMapMods= level1;
+ virtualModifier= LevelThree;
+ action= SetMods(modifiers=LevelThree);
+ };
+
+ interpret ISO_Level3_Shift {
+ action= SetMods(modifiers=LevelThree);
+ };
+
+ interpret ISO_Level3_Latch+Any {
+ useModMapMods= level1;
+ virtualModifier= LevelThree;
+ action= LatchMods(modifiers=LevelThree);
+ };
+
+ interpret ISO_Level3_Latch {
+ action= LatchMods(modifiers=LevelThree);
+ };
+
+ interpret ISO_Level3_Lock+Any {
+ useModMapMods= level1;
+ virtualModifier= LevelThree;
+ action= LockMods(modifiers=LevelThree);
+ };
+
+ interpret ISO_Level3_Lock {
+ action= LockMods(modifiers=LevelThree);
+ };
+
+ interpret ISO_Group_Latch {
+ useModMapMods= level1;
+ virtualModifier= AltGr;
+ action= LatchGroup(group=2);
+ };
+
+ interpret ISO_Next_Group {
+ useModMapMods= level1;
+ virtualModifier= AltGr;
+ action= LockGroup(group=+1);
+ };
+
+ interpret ISO_Prev_Group {
+ useModMapMods= level1;
+ virtualModifier= AltGr;
+ action= LockGroup(group=-1);
+ };
+ interpret ISO_First_Group {
+ action= LockGroup(group=1);
+ };
+
+ interpret ISO_Last_Group {
+ action= LockGroup(group=2);
+ };
+
+ indicator "Group 2" {
+ !allowExplicit;
+ groups= All-Group1;
+ };
+};
--- /dev/null
+// Use Caps Lock LED to show either Caps Lock, Group, or Shift Lock state
+
+default partial xkb_compatibility "caps_lock" {
+ indicator "Caps Lock" {
+ !allowExplicit;
+ whichModState= Locked;
+ modifiers= Lock;
+ };
+};
+
+partial xkb_compatibility "group_lock" {
+ indicator "Caps Lock" {
+ modifiers= None;
+ groups=All-group1;
+ };
+};
+
+partial xkb_compatibility "shift_lock" {
+ indicator "Caps Lock" {
+ whichModState= Locked;
+ modifiers= Shift;
+ };
+};
--- /dev/null
+// Use Num Lock LED to show either Num Lock, Group, or Shift Lock state
+
+default partial xkb_compatibility "num_lock" {
+ indicator "Num Lock" {
+ !allowExplicit;
+ whichModState= Locked;
+ modifiers= NumLock;
+ };
+};
+
+partial xkb_compatibility "group_lock" {
+ indicator "Num Lock" {
+ modifiers= None;
+ groups=All-group1;
+ };
+};
+
+partial xkb_compatibility "shift_lock" {
+ indicator "Num Lock" {
+ whichModState= Locked;
+ modifiers= Shift;
+ };
+};
--- /dev/null
+// Use Scroll Lock LED to show either Scroll Lock, Group, or Shift Lock state
+
+default partial xkb_compatibility "scroll_lock" {
+ indicator "Scroll Lock" {
+ allowExplicit;
+ whichModState= Locked;
+ modifiers= ScrollLock;
+ };
+};
+
+partial xkb_compatibility "group_lock" {
+ indicator "Scroll Lock" {
+ modifiers= None;
+ groups=All-group1;
+ };
+};
+
+partial xkb_compatibility "shift_lock" {
+ indicator "Scroll Lock" {
+ whichModState= Locked;
+ modifiers= Shift;
+ };
+};
--- /dev/null
+// Fairly complete set of symbol interpretations
+// to provide reasonable default behavior
+
+default partial xkb_compatibility "default" {
+ virtual_modifiers LevelFive;
+
+ interpret.repeat= False;
+ setMods.clearLocks= True;
+ latchMods.clearLocks= True;
+ latchMods.latchToLock= True;
+
+ interpret ISO_Level5_Shift+Any {
+ useModMapMods= level1;
+ virtualModifier= LevelFive;
+ action= SetMods(modifiers=LevelFive);
+ };
+
+ interpret ISO_Level5_Shift {
+ action= SetMods(modifiers=LevelFive);
+ };
+
+ interpret ISO_Level5_Latch+Any {
+ virtualModifier= LevelFive;
+ action= LatchMods(modifiers=LevelFive);
+ };
+
+ interpret ISO_Level5_Latch {
+ action= LatchMods(modifiers=LevelFive);
+ };
+
+ interpret ISO_Level5_Lock+Any {
+ virtualModifier= LevelFive;
+ action= LockMods(modifiers=LevelFive);
+ };
+
+ interpret ISO_Level5_Lock {
+ action= LockMods(modifiers=LevelFive);
+ };
+};
+partial xkb_compatibility "level5_lock" {
+ // This defines a Level5-Lock using the NumLock real modifier in order to
+ // create arbitrary level-behaviour, which would not be possible with the
+ // virtual modifier.
+ // See also: types/level5 : EIGHT_LEVEL_LEVEL_FIVE_LOCK
+ // See also: symbols/level5(lock)
+ virtual_modifiers NumLock;
+
+ interpret ISO_Level5_Lock {
+ action = LockMods(modifiers = NumLock);
+ };
+};
--- /dev/null
+default partial xkb_compatibility "misc" {
+
+ virtual_modifiers Alt,Meta,Super,Hyper,ScrollLock;
+
+ // Interpretations for some other useful keys
+
+ interpret Terminate_Server {
+ action = Terminate();
+ };
+
+ setMods.clearLocks= True;
+
+ // Sets the "Alt" virtual modifier
+
+ interpret Alt_L+Any {
+ //useModMapMods= level1;
+ virtualModifier= Alt;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Alt_L {
+ action = SetMods(modifiers=Alt);
+ };
+
+ interpret Alt_R+Any {
+ //useModMapMods= level1;
+ virtualModifier= Alt;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Alt_R {
+ action = SetMods(modifiers=Alt);
+ };
+
+ // Sets the "Meta" virtual modifier
+
+ interpret Meta_L+Any {
+// useModMapMods= level1;
+ virtualModifier= Meta;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Meta_L {
+ action = SetMods(modifiers=Meta);
+ };
+
+ interpret Meta_R+Any {
+ //useModMapMods= level1;
+ virtualModifier= Meta;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Meta_R {
+ action = SetMods(modifiers=Meta);
+ };
+
+ // Sets the "Super" virtual modifier
+
+ interpret Super_L+Any {
+// useModMapMods= level1;
+ virtualModifier= Super;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Super_L {
+ action = SetMods(modifiers=Super);
+ };
+
+ interpret Super_R+Any {
+ //useModMapMods= level1;
+ virtualModifier= Super;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Super_R {
+ action = SetMods(modifiers=Super);
+ };
+
+ // Sets the "Hyper" virtual modifier
+
+ interpret Hyper_L+Any {
+// useModMapMods= level1;
+ virtualModifier= Hyper;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Hyper_L {
+ action = SetMods(modifiers=Hyper);
+ };
+
+ interpret Hyper_R+Any {
+ //useModMapMods= level1;
+ virtualModifier= Hyper;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Hyper_R {
+ action = SetMods(modifiers=Hyper);
+ };
+
+ // Sets the "ScrollLock" virtual modifier and
+ // makes it actually lock when pressed. Sets
+ // up a map for the scroll lock indicator.
+ interpret Scroll_Lock+Any {
+ virtualModifier= ScrollLock;
+ action = LockMods(modifiers=modMapMods);
+ };
+
+ include "ledscroll"
+
+ include "misc(assign_shift_left_action)"
+};
+
+partial xkb_compatibility "assign_shift_left_action" {
+ // Because of the irrevertable modifier mapping in symbols/pc <LFSH> is
+ // getting bound to the Lock modifier when using
+ // symbols/shift(both_capslock), creating unwanted behaviour.
+ // This is a quirk, to circumvent the problem.
+ interpret Shift_L {
+ action = SetMods(modifiers = Shift);
+ };
+};
--- /dev/null
+// Interpretations for arrow keys and a bunch of other
+// common keysyms which make it possible to bind "mouse"
+// keys using xmodmap and activate or deactivate them
+// from the keyboard.
+
+default partial xkb_compatibility "mousekeys" {
+
+ // Keypad actions.
+ //
+ interpret.repeat= True;
+
+ interpret KP_1 {
+ action = MovePtr(x=-1,y= +1);
+ };
+ interpret KP_End {
+ action = MovePtr(x=-1,y= +1);
+ };
+
+ interpret KP_2 {
+ action = MovePtr(x=+0,y= +1);
+ };
+ interpret KP_Down {
+ action = MovePtr(x=+0,y= +1);
+ };
+
+ interpret KP_3 {
+ action = MovePtr(x=+1,y=+1);
+ };
+ interpret KP_Next {
+ action = MovePtr(x=+1,y=+1);
+ };
+
+ interpret KP_4 {
+ action = MovePtr(x=-1,y=+0);
+ };
+ interpret KP_Left {
+ action = MovePtr(x=-1,y=+0);
+ };
+
+ interpret KP_6 {
+ action = MovePtr(x=+1,y=+0);
+ };
+ interpret KP_Right {
+ action = MovePtr(x=+1,y=+0);
+ };
+
+ interpret KP_7 {
+ action = MovePtr(x=-1,y=-1);
+ };
+ interpret KP_Home {
+ action = MovePtr(x=-1,y=-1);
+ };
+
+ interpret KP_8 {
+ action = MovePtr(x=+0,y=-1);
+ };
+ interpret KP_Up {
+ action = MovePtr(x=+0,y=-1);
+ };
+
+ interpret KP_9 {
+ action = MovePtr(x=+1,y=-1);
+ };
+ interpret KP_Prior {
+ action = MovePtr(x=+1,y=-1);
+ };
+
+ interpret KP_5 {
+ action = PointerButton(button=default);
+ };
+ interpret KP_Begin {
+ action = PointerButton(button=default);
+ };
+
+ interpret KP_F2 {
+ action = SetPtrDflt(affect=defaultButton,button=1);
+ };
+ interpret KP_Divide {
+ action = SetPtrDflt(affect=defaultButton,button=1);
+ };
+
+ interpret KP_F3 {
+ action = SetPtrDflt(affect=defaultButton,button=2);
+ };
+ interpret KP_Multiply {
+ action = SetPtrDflt(affect=defaultButton,button=2);
+ };
+
+ interpret KP_F4 {
+ action = SetPtrDflt(affect=defaultButton,button=3);
+ };
+ interpret KP_Subtract {
+ action = SetPtrDflt(affect=defaultButton,button=3);
+ };
+
+ interpret KP_Separator {
+ action = PointerButton(button=default,count=2);
+ };
+ interpret KP_Add {
+ action = PointerButton(button=default,count=2);
+ };
+
+ interpret KP_0 {
+ action = LockPointerButton(button=default,affect=lock);
+ };
+ interpret KP_Insert {
+ action = LockPointerButton(button=default,affect=lock);
+ };
+
+ interpret KP_Decimal {
+ action = LockPointerButton(button=default,affect=unlock);
+ };
+ interpret KP_Delete {
+ action = LockPointerButton(button=default,affect=unlock);
+ };
+
+ // Additional mappings for Solaris keypad compatibility
+ interpret F25 { // aka KP_Divide
+ action = SetPtrDflt(affect=defaultButton,button=1);
+ };
+ interpret F26 { // aka KP_Multiply
+ action = SetPtrDflt(affect=defaultButton,button=2);
+ };
+ interpret F27 { // aka KP_Home
+ action = MovePtr(x=-1,y=-1);
+ };
+ interpret F29 { // aka KP_Prior
+ action = MovePtr(x=+1,y=-1);
+ };
+ interpret F31 { // aka KP_Begin
+ action = PointerButton(button=default);
+ };
+ interpret F33 { // aka KP_End
+ action = MovePtr(x=-1,y= +1);
+ };
+ interpret F35 { // aka KP_Next
+ action = MovePtr(x=+1,y=+1);
+ };
+
+ interpret.repeat= False;
+
+
+ // New Keysym Actions.
+ //
+ interpret Pointer_Button_Dflt {
+ action= PointerButton(button=default);
+ };
+ interpret Pointer_Button1 {
+ action= PointerButton(button=1);
+ };
+ interpret Pointer_Button2 {
+ action= PointerButton(button=2);
+ };
+ interpret Pointer_Button3 {
+ action= PointerButton(button=3);
+ };
+ interpret Pointer_DblClick_Dflt {
+ action= PointerButton(button=default,count=2);
+ };
+ interpret Pointer_DblClick1 {
+ action= PointerButton(button=1,count=2);
+ };
+ interpret Pointer_DblClick2 {
+ action= PointerButton(button=2,count=2);
+ };
+ interpret Pointer_DblClick3 {
+ action= PointerButton(button=3,count=2);
+ };
+ interpret Pointer_Drag_Dflt {
+ action= LockPointerButton(button=default);
+ };
+ interpret Pointer_Drag1 {
+ action= LockPointerButton(button=1);
+ };
+ interpret Pointer_Drag2 {
+ action= LockPointerButton(button=2);
+ };
+ interpret Pointer_Drag3 {
+ action= LockPointerButton(button=3);
+ };
+
+ interpret Pointer_EnableKeys {
+ action= LockControls(controls=MouseKeys);
+ };
+ interpret Pointer_Accelerate {
+ action= LockControls(controls=MouseKeysAccel);
+ };
+ interpret Pointer_DfltBtnNext {
+ action= SetPtrDflt(affect=defaultButton,button= +1);
+ };
+ interpret Pointer_DfltBtnPrev {
+ action= SetPtrDflt(affect=defaultButton,button= -1);
+ };
+
+
+ // Allow an indicator for MouseKeys.
+ indicator "Mouse Keys" {
+// !allowExplicit;
+ indicatorDrivesKeyboard;
+ controls= MouseKeys;
+ };
+};
--- /dev/null
+default partial xkb_compatibility "pc" {
+
+ // Sets the "Alt" virtual modifier
+
+ virtual_modifiers Alt;
+
+ setMods.clearLocks= True;
+ interpret Alt_L+Any {
+ virtualModifier= Alt;
+ action = SetMods(modifiers=modMapMods);
+ };
+
+ interpret Alt_R+Any {
+ virtualModifier= Alt;
+ action = SetMods(modifiers=modMapMods);
+ };
+};
--- /dev/null
+// XFree86 special keysyms
+
+default partial xkb_compatibility "basic" {
+
+ interpret.repeat= True;
+
+ interpret XF86_Switch_VT_1 {
+ action = SwitchScreen(Screen=1, !SameServer);
+ };
+ interpret XF86_Switch_VT_2 {
+ action = SwitchScreen(Screen=2, !SameServer);
+ };
+ interpret XF86_Switch_VT_3 {
+ action = SwitchScreen(Screen=3, !SameServer);
+ };
+ interpret XF86_Switch_VT_4 {
+ action = SwitchScreen(Screen=4, !SameServer);
+ };
+ interpret XF86_Switch_VT_5 {
+ action = SwitchScreen(Screen=5, !SameServer);
+ };
+ interpret XF86_Switch_VT_6 {
+ action = SwitchScreen(Screen=6, !SameServer);
+ };
+ interpret XF86_Switch_VT_7 {
+ action = SwitchScreen(Screen=7, !SameServer);
+ };
+ interpret XF86_Switch_VT_8 {
+ action = SwitchScreen(Screen=8, !SameServer);
+ };
+ interpret XF86_Switch_VT_9 {
+ action = SwitchScreen(Screen=9, !SameServer);
+ };
+ interpret XF86_Switch_VT_10 {
+ action = SwitchScreen(Screen=10, !SameServer);
+ };
+ interpret XF86_Switch_VT_11 {
+ action = SwitchScreen(Screen=11, !SameServer);
+ };
+ interpret XF86_Switch_VT_12 {
+ action = SwitchScreen(Screen=12, !SameServer);
+ };
+
+ interpret XF86LogGrabInfo {
+ action = Private(type=0x86, data="PrGrbs");
+ };
+ interpret XF86LogWindowTree {
+ action = Private(type=0x86, data="PrWins");
+ };
+
+ interpret XF86_Next_VMode {
+ action = Private(type=0x86, data="+VMode");
+ };
+ interpret XF86_Prev_VMode {
+ action = Private(type=0x86, data="-VMode");
+ };
+};
+
+partial xkb_compatibility "grab_break" {
+ interpret XF86_Ungrab {
+ action = Private(type=0x86, data="Ungrab");
+ };
+ interpret XF86_ClearGrab {
+ action = Private(type=0x86, data="ClsGrb");
+ };
+};
--- /dev/null
+
+// keycode aliases for phonetic keyboard maps
+
+default
+xkb_keycodes "qwerty" {
+
+ alias <LatQ> = <AD01>;
+ alias <LatW> = <AD02>;
+ alias <LatE> = <AD03>;
+ alias <LatR> = <AD04>;
+ alias <LatT> = <AD05>;
+ alias <LatY> = <AD06>;
+ alias <LatU> = <AD07>;
+ alias <LatI> = <AD08>;
+ alias <LatO> = <AD09>;
+ alias <LatP> = <AD10>;
+
+ alias <LatA> = <AC01>;
+ alias <LatS> = <AC02>;
+ alias <LatD> = <AC03>;
+ alias <LatF> = <AC04>;
+ alias <LatG> = <AC05>;
+ alias <LatH> = <AC06>;
+ alias <LatJ> = <AC07>;
+ alias <LatK> = <AC08>;
+ alias <LatL> = <AC09>;
+
+ alias <LatZ> = <AB01>;
+ alias <LatX> = <AB02>;
+ alias <LatC> = <AB03>;
+ alias <LatV> = <AB04>;
+ alias <LatB> = <AB05>;
+ alias <LatN> = <AB06>;
+ alias <LatM> = <AB07>;
+};
+
+xkb_keycodes "azerty" {
+
+ alias <LatA> = <AD01>;
+ alias <LatZ> = <AD02>;
+ alias <LatE> = <AD03>;
+ alias <LatR> = <AD04>;
+ alias <LatT> = <AD05>;
+ alias <LatY> = <AD06>;
+ alias <LatU> = <AD07>;
+ alias <LatI> = <AD08>;
+ alias <LatO> = <AD09>;
+ alias <LatP> = <AD10>;
+
+ alias <LatQ> = <AC01>;
+ alias <LatS> = <AC02>;
+ alias <LatD> = <AC03>;
+ alias <LatF> = <AC04>;
+ alias <LatG> = <AC05>;
+ alias <LatH> = <AC06>;
+ alias <LatJ> = <AC07>;
+ alias <LatK> = <AC08>;
+ alias <LatL> = <AC09>;
+ alias <LatM> = <AC10>;
+
+ alias <LatW> = <AB01>;
+ alias <LatX> = <AB02>;
+ alias <LatC> = <AB03>;
+ alias <LatV> = <AB04>;
+ alias <LatB> = <AB05>;
+ alias <LatN> = <AB06>;
+};
+
+xkb_keycodes "qwertz" {
+
+ alias <LatQ> = <AD01>;
+ alias <LatW> = <AD02>;
+ alias <LatE> = <AD03>;
+ alias <LatR> = <AD04>;
+ alias <LatT> = <AD05>;
+ alias <LatZ> = <AD06>;
+ alias <LatU> = <AD07>;
+ alias <LatI> = <AD08>;
+ alias <LatO> = <AD09>;
+ alias <LatP> = <AD10>;
+
+ alias <LatA> = <AC01>;
+ alias <LatS> = <AC02>;
+ alias <LatD> = <AC03>;
+ alias <LatF> = <AC04>;
+ alias <LatG> = <AC05>;
+ alias <LatH> = <AC06>;
+ alias <LatJ> = <AC07>;
+ alias <LatK> = <AC08>;
+ alias <LatL> = <AC09>;
+
+ alias <LatY> = <AB01>;
+ alias <LatX> = <AB02>;
+ alias <LatC> = <AB03>;
+ alias <LatV> = <AB04>;
+ alias <LatB> = <AB05>;
+ alias <LatN> = <AB06>;
+ alias <LatM> = <AB07>;
+};
--- /dev/null
+// translation from evdev scancodes to something resembling xfree86 keycodes.
+
+default xkb_keycodes "evdev" {
+ minimum = 8;
+ maximum = 255;
+
+ # Added for pc105 compatibility
+ <LSGT> = 94;
+
+ <TLDE> = 49;
+ <AE01> = 10;
+ <AE02> = 11;
+ <AE03> = 12;
+ <AE04> = 13;
+ <AE05> = 14;
+ <AE06> = 15;
+ <AE07> = 16;
+ <AE08> = 17;
+ <AE09> = 18;
+ <AE10> = 19;
+ <AE11> = 20;
+ <AE12> = 21;
+ <BKSP> = 22;
+
+ <TAB> = 23;
+ <AD01> = 24;
+ <AD02> = 25;
+ <AD03> = 26;
+ <AD04> = 27;
+ <AD05> = 28;
+ <AD06> = 29;
+ <AD07> = 30;
+ <AD08> = 31;
+ <AD09> = 32;
+ <AD10> = 33;
+ <AD11> = 34;
+ <AD12> = 35;
+ <BKSL> = 51;
+ alias <AC12> = <BKSL>;
+ <RTRN> = 36;
+
+ <CAPS> = 66;
+ <AC01> = 38;
+ <AC02> = 39;
+ <AC03> = 40;
+ <AC04> = 41;
+ <AC05> = 42;
+ <AC06> = 43;
+ <AC07> = 44;
+ <AC08> = 45;
+ <AC09> = 46;
+ <AC10> = 47;
+ <AC11> = 48;
+
+ <LFSH> = 50;
+ <AB01> = 52;
+ <AB02> = 53;
+ <AB03> = 54;
+ <AB04> = 55;
+ <AB05> = 56;
+ <AB06> = 57;
+ <AB07> = 58;
+ <AB08> = 59;
+ <AB09> = 60;
+ <AB10> = 61;
+ <RTSH> = 62;
+
+ <LALT> = 64;
+ <LCTL> = 37;
+ <SPCE> = 65;
+ <RCTL> = 105;
+ <RALT> = 108;
+ // Microsoft keyboard extra keys
+ <LWIN> = 133;
+ <RWIN> = 134;
+ <COMP> = 135;
+ alias <MENU> = <COMP>;
+
+ <ESC> = 9;
+ <FK01> = 67;
+ <FK02> = 68;
+ <FK03> = 69;
+ <FK04> = 70;
+ <FK05> = 71;
+ <FK06> = 72;
+ <FK07> = 73;
+ <FK08> = 74;
+ <FK09> = 75;
+ <FK10> = 76;
+ <FK11> = 95;
+ <FK12> = 96;
+
+ <PRSC> = 107;
+ // <SYRQ> = 107;
+ <SCLK> = 78;
+ <PAUS> = 127;
+ // <BRK> = 419;
+
+ <INS> = 118;
+ <HOME> = 110;
+ <PGUP> = 112;
+ <DELE> = 119;
+ <END> = 115;
+ <PGDN> = 117;
+
+ <UP> = 111;
+ <LEFT> = 113;
+ <DOWN> = 116;
+ <RGHT> = 114;
+
+ <NMLK> = 77;
+ <KPDV> = 106;
+ <KPMU> = 63;
+ <KPSU> = 82;
+
+ <KP7> = 79;
+ <KP8> = 80;
+ <KP9> = 81;
+ <KPAD> = 86;
+
+ <KP4> = 83;
+ <KP5> = 84;
+ <KP6> = 85;
+
+ <KP1> = 87;
+ <KP2> = 88;
+ <KP3> = 89;
+ <KPEN> = 104;
+
+ <KP0> = 90;
+ <KPDL> = 91;
+ <KPEQ> = 125;
+
+ <FK13> = 191;
+ <FK14> = 192;
+ <FK15> = 193;
+ <FK16> = 194;
+ <FK17> = 195;
+ <FK18> = 196;
+ <FK19> = 197;
+ <FK20> = 198;
+ <FK21> = 199;
+ <FK22> = 200;
+ <FK23> = 201;
+ <FK24> = 202;
+
+ // Keys that are generated on Japanese keyboards
+
+ //<HZTG> = 93; // Hankaku/Zenkakau toggle - not actually used
+ alias <HZTG> = <TLDE>;
+ <HKTG> = 101; // Hiragana/Katakana toggle
+ <AB11> = 97; // backslash/underscore
+ <HENK> = 100; // Henkan
+ <MUHE> = 102; // Muhenkan
+ <AE13> = 132; // Yen
+ <KATA> = 98; // Katakana
+ <HIRA> = 99; // Hiragana
+ <JPCM> = 103; // KPJPComma
+ //<RO> = 97; // Romaji
+
+ // Keys that are generated on Korean keyboards
+
+ <HNGL> = 130; // Hangul Latin toggle
+ <HJCV> = 131; // Hangul to Hanja conversion
+
+ // Solaris compatibility
+
+ alias <LMTA> = <LWIN>;
+ alias <RMTA> = <RWIN>;
+ <MUTE> = 121;
+ <VOL-> = 122;
+ <VOL+> = 123;
+ <POWR> = 124;
+ <STOP> = 136;
+ <AGAI> = 137;
+ <PROP> = 138;
+ <UNDO> = 139;
+ <FRNT> = 140;
+ <COPY> = 141;
+ <OPEN> = 142;
+ <PAST> = 143;
+ <FIND> = 144;
+ <CUT> = 145;
+ <HELP> = 146;
+
+ // Extended keys that may be generated on "Internet" keyboards.
+ // evdev has standardize names for these.
+
+ <LNFD> = 109; // #define KEY_LINEFEED 101
+ <I120> = 120; // #define KEY_MACRO 112
+ <I126> = 126; // #define KEY_KPPLUSMINUS 118
+ <I128> = 128; // #define KEY_SCALE 120
+ <I129> = 129; // #define KEY_KPCOMMA 121
+ <I147> = 147; // #define KEY_MENU 139
+ <I148> = 148; // #define KEY_CALC 140
+ <I149> = 149; // #define KEY_SETUP 141
+ <I150> = 150; // #define KEY_SLEEP 142
+ <I151> = 151; // #define KEY_WAKEUP 143
+ <I152> = 152; // #define KEY_FILE 144
+ <I153> = 153; // #define KEY_SENDFILE 145
+ <I154> = 154; // #define KEY_DELETEFILE 146
+ <I155> = 155; // #define KEY_XFER 147
+ <I156> = 156; // #define KEY_PROG1 148
+ <I157> = 157; // #define KEY_PROG2 149
+ <I158> = 158; // #define KEY_WWW 150
+ <I159> = 159; // #define KEY_MSDOS 151
+ <I160> = 160; // #define KEY_COFFEE 152
+ <I161> = 161; // #define KEY_DIRECTION 153
+ <I162> = 162; // #define KEY_CYCLEWINDOWS 154
+ <I163> = 163; // #define KEY_MAIL 155
+ <I164> = 164; // #define KEY_BOOKMARKS 156
+ <I165> = 165; // #define KEY_COMPUTER 157
+ <I166> = 166; // #define KEY_BACK 158
+ <I167> = 167; // #define KEY_FORWARD 159
+ <I168> = 168; // #define KEY_CLOSECD 160
+ <I169> = 169; // #define KEY_EJECTCD 161
+ <I170> = 170; // #define KEY_EJECTCLOSECD 162
+ <I171> = 171; // #define KEY_NEXTSONG 163
+ <I172> = 172; // #define KEY_PLAYPAUSE 164
+ <I173> = 173; // #define KEY_PREVIOUSSONG 165
+ <I174> = 174; // #define KEY_STOPCD 166
+ <I175> = 175; // #define KEY_RECORD 167
+ <I176> = 176; // #define KEY_REWIND 168
+ <I177> = 177; // #define KEY_PHONE 169
+ <I178> = 178; // #define KEY_ISO 170
+ <I179> = 179; // #define KEY_CONFIG 171
+ <I180> = 180; // #define KEY_HOMEPAGE 172
+ <I181> = 181; // #define KEY_REFRESH 173
+ <I182> = 182; // #define KEY_EXIT 174
+ <I183> = 183; // #define KEY_MOVE 175
+ <I184> = 184; // #define KEY_EDIT 176
+ <I185> = 185; // #define KEY_SCROLLUP 177
+ <I186> = 186; // #define KEY_SCROLLDOWN 178
+ <I187> = 187; // #define KEY_KPLEFTPAREN 179
+ <I188> = 188; // #define KEY_KPRIGHTPAREN 180
+ <I189> = 189; // #define KEY_NEW 181
+ <I190> = 190; // #define KEY_REDO 182
+ <I208> = 208; // #define KEY_PLAYCD 200
+ <I209> = 209; // #define KEY_PAUSECD 201
+ <I210> = 210; // #define KEY_PROG3 202
+ <I211> = 211; // #define KEY_PROG4 203 conflicts with AB11
+ <I212> = 212; // #define KEY_DASHBOARD 204
+ <I213> = 213; // #define KEY_SUSPEND 205
+ <I214> = 214; // #define KEY_CLOSE 206
+ <I215> = 215; // #define KEY_PLAY 207
+ <I216> = 216; // #define KEY_FASTFORWARD 208
+ <I217> = 217; // #define KEY_BASSBOOST 209
+ <I218> = 218; // #define KEY_PRINT 210
+ <I219> = 219; // #define KEY_HP 211
+ <I220> = 220; // #define KEY_CAMERA 212
+ <I221> = 221; // #define KEY_SOUND 213
+ <I222> = 222; // #define KEY_QUESTION 214
+ <I223> = 223; // #define KEY_EMAIL 215
+ <I224> = 224; // #define KEY_CHAT 216
+ <I225> = 225; // #define KEY_SEARCH 217
+ <I226> = 226; // #define KEY_CONNECT 218
+ <I227> = 227; // #define KEY_FINANCE 219
+ <I228> = 228; // #define KEY_SPORT 220
+ <I229> = 229; // #define KEY_SHOP 221
+ <I230> = 230; // #define KEY_ALTERASE 222
+ <I231> = 231; // #define KEY_CANCEL 223
+ <I232> = 232; // #define KEY_BRIGHTNESSDOWN 224
+ <I233> = 233; // #define KEY_BRIGHTNESSUP 225
+ <I234> = 234; // #define KEY_MEDIA 226
+ <I235> = 235; // #define KEY_SWITCHVIDEOMODE 227
+ <I236> = 236; // #define KEY_KBDILLUMTOGGLE 228
+ <I237> = 237; // #define KEY_KBDILLUMDOWN 229
+ <I238> = 238; // #define KEY_KBDILLUMUP 230
+ <I239> = 239; // #define KEY_SEND 231
+ <I240> = 240; // #define KEY_REPLY 232
+ <I241> = 241; // #define KEY_FORWARDMAIL 233
+ <I242> = 242; // #define KEY_SAVE 234
+ <I243> = 243; // #define KEY_DOCUMENTS 235
+ <I244> = 244; // #define KEY_BATTERY 236
+ <I245> = 245; // #define KEY_BLUETOOTH 237
+ <I246> = 246; // #define KEY_WLAN 238
+ <I247> = 247; // #define KEY_UWB 239
+ <I248> = 248; // #define KEY_UNKNOWN 240
+ <I249> = 249; // #define KEY_VIDEO_NEXT 241
+ <I250> = 250; // #define KEY_VIDEO_PREV 242
+ <I251> = 251; // #define KEY_BRIGHTNESS_CYCLE 243
+ <I252> = 252; // #define KEY_BRIGHTNESS_ZERO 244
+ <I253> = 253; // #define KEY_DISPLAY_OFF 245
+
+ // Fake keycodes for virtual keys
+ <LVL3> = 92;
+ <MDSW> = 203;
+ <ALT> = 204;
+ <META> = 205;
+ <SUPR> = 206;
+ <HYPR> = 207;
+
+ indicator 1 = "Caps Lock";
+ indicator 2 = "Num Lock";
+ indicator 3 = "Scroll Lock";
+ indicator 4 = "Compose";
+ indicator 5 = "Kana";
+ indicator 6 = "Sleep";
+ indicator 7 = "Suspend";
+ indicator 8 = "Mute";
+ indicator 9 = "Misc";
+ indicator 10 = "Mail";
+ indicator 11 = "Charging";
+
+ alias <ALGR> = <RALT>;
+
+ // For Brazilian ABNT2
+ alias <KPPT> = <I129>;
+};
+
+// PC98
+xkb_keycodes "pc98" {
+ include "evdev(evdev)"
+};
xkb_keymap {
- xkb_keycodes { include "xfree86+aliases(qwerty)" };
+ xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us" };
xkb_keymap {
- xkb_keycodes { include "xfree86+aliases(qwerty)" };
+ xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us" };
};
default xkb_keymap {
- xkb_keycodes { include "xfree86+aliases(qwertz)" };
+ xkb_keycodes { include "evdev+aliases(qwertz)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+de" };
--- /dev/null
+// DO NOT EDIT THIS FILE - IT WAS AUTOGENERATED BY merge.sh FROM rules/*.part
+//
+// Rules for resolving XKB components for use with XFree86
+// Copyright 1996 by Joseph Moss
+//
+// 2002 Modifier: Ivan Pascal The XFree86 Project
+//
+
+// If you want non-latin layouts implicitly include the en_US layout
+// uncomment lines below
+//! $nonlatin = am ara ben bd bg bt by cs deva ge gh gr guj guru il \
+// in ir iku jp kan kh kr la lao lk mk mm mn mv mal ori pk \
+// ru scc sy syr tel th tj tam ua uz
+
+// PC models
+! $pcmodels = pc101 pc102 pc104 pc105
+
+// Microsoft models (using MS geometry)
+! $msmodels = microsoft microsoft4000 microsoft7000 microsoftpro microsoftprousb microsoftprose
+
+// Nokia devices and keyboards
+! $nokiamodels = nokiasu8w nokiarx44 nokiarx51
+
+// PC geometries - they have special geometry but symbols are mostly pc105
+! $pcgeometries = latitude
+
+// TypeMatrix geometries
+! $tmgeometries = tm2020 tm2030PS2 tm2030USB tm2030USB-102 tm2030USB-106
+
+// Layouts that provide further specializations for the OLPC
+! $olpclayouts = af am ara br ca es et fr it kh kz in mn np ru th tr us
+
+! $macbooks = macbook78 macbook79
+! $maclaptop = ibook powerbook macbook78 macbook79
+! $applealu = applealu_ansi applealu_iso applealu_jis
+! $macs = macintosh macintosh_old ibook powerbook macbook78 macbook79
+
+! $macvendorlayouts = ch de dk fi fr gb is it latam nl no pt se us
+
+! $azerty = be fr
+! $qwertz = al cz de hr hu ro si sk
+
+! $inetkbds = acer_c300 acer_ferrari4k acer_laptop \
+ airkey \
+ apple armada azonaRF2300 \
+ benqx brother \
+ btc5113rf btc9000 btc9000a btc9001ah btc5090 btc9019u \
+ cherryblue cherrybluea cherryblueb \
+ cherrycyboard cherrycmexpert \
+ chicony chicony0108 chicony0420 chicony9885 \
+ compalfl90 \
+ compaqeak8 compaqik7 compaqik13 compaqik18 \
+ creativedw7000 \
+ cymotionlinux \
+ dell dellm65 inspiron dellusbmm \
+ emachines ennyah_dkb1008 evdev \
+ genius geniuscomfy2 \
+ gyration honeywell_euroboard \
+ hp250x hp5xx hp500fa hpdv5 \
+ hpi6 hpxe3gc hpxe3gf hpxe4xxx hpxt1000 hpzt11xx htcdream \
+ ibm_spacesaver ipaq inspiron intel \
+ logiaccess logicda logicink \
+ logiex110 logiclx300 \
+ logiinkse logiinkseusb logiitc logiik \
+ logitech_base itouch logiultrax \
+ logitech_g15 \
+ logidinovo logidinovoedge \
+ microsoft4000 microsoft7000 microsoftinet microsoftprousb microsoftprooem microsoftprose \
+ microsoftoffice microsoftmult \
+ mx1998 mx2500 mx2750 \
+ oretec \
+ pc105 \
+ presario propeller \
+ qtronix \
+ rapidaccess rapidaccess2 thinkpad60 \
+ samsung4500 samsung4510 \
+ silvercrest \
+ sk1300 sk2500 sk6200 sk7100 \
+ sven sven303 symplon \
+ toshiba_s3000 trust trustda \
+ unitekkb1925 yahoo
+
+// all layouts with 3rd and 4th groups
+! $threelevellayouts = al az \
+ be br bt \
+ ca ch cs cz \
+ de dk \
+ ee es \
+ fi fo fr \
+ gb gr \
+ hu \
+ ie ir is it \
+ latam \
+ lk lt \
+ mn mt \
+ nl no \
+ pl pt \
+ ro \
+ se sk \
+ tr \
+ us \
+ vn \
+ za
+
+! $evdevkbds = ibm_spacesaver
+
+! $thinkpads = thinkpad thinkpad60 thinkpadz60
+
+! $sun_t6_custom = ara be br ca ch cz de dk \
+ ee es fi fr gb gr it kr \
+ lt lv nl no pl pt ro ru \
+ se sk tr tw ua
+
+! $htcdreamlayouts = us it de
+
+! $dvoraklayouts = br ca de ee es fr gb no pl se us
+
+! model = keycodes
+ pc98 = evdev(pc98)
+ applealu_jis = evdev+macintosh(jisevdev)
+ * = evdev
+
+! layout[1] = keycodes
+ $azerty = +aliases(azerty)
+ $qwertz = +aliases(qwertz)
+ * = +aliases(qwerty)
+
+! layout = keycodes
+ $azerty = +aliases(azerty)
+ $qwertz = +aliases(qwertz)
+ * = +aliases(qwerty)
+
+! option = keycodes
+ apple:badmap = +macintosh(badmap)
+ apple:goodmap = +macintosh(goodmap)
+
+! model layout = geometry
+ thinkpad us = thinkpad(us)
+
+! model = geometry
+ microsoftelite = microsoft(elite)
+ $msmodels = microsoft(natural)
+ dell101 = dell(dell101)
+ dellm65 = dell(dellm65)
+ latitude = dell(latitude)
+ flexpro = keytronic(FlexPro)
+ hp6000 = hp(omnibook)
+ hpmini110 = hp(mini110)
+ hpdv5 = hp(dv5)
+ omnikey101 = northgate(omnikey101)
+ sanwaskbkg3 = sanwa(sanwaskbkg3)
+ $pcmodels = pc(%m)
+ $pcgeometries = pc(%m)
+ everex = everex(STEPnote)
+ thinkpad = thinkpad(intl)
+ thinkpad60 = thinkpad(60)
+ thinkpadz60 = thinkpad(60)
+ $tmgeometries = typematrix(%m)
+ winbook = winbook(XP5)
+ pc98 = nec(pc98)
+ $applealu = macintosh(%m)
+ $macbooks = macintosh(%m)
+ $macs = macintosh(macintosh)
+ hhk = hhk(basic)
+ kinesis = kinesis(model100)
+ $nokiamodels = nokia(%m)
+ * = pc(pc104)
+
+! model layout variant = symbols
+ * ben basic = pc+in(ben)
+ * ben probhat = pc+in(ben_probhat)
+ * dev basic = pc+in(deva)
+ * dvorak $dvoraklayouts = pc+%v(dvorak)
+ * dvorak basic = pc+us(dvorak)
+ * dvorak pl_basic = pc+pl(dvorak)
+ * dvorak pl = pc+pl(dvorak_quotes)
+ * dvorak pl_altquotes = pc+pl(dvorak_altquotes)
+ * dzdwi basic = pc+bt(basic)
+ * fi basic = pc+fi(classic)
+ * ge azerty_tskapo = pc+fr(geo)
+ * guj basic = pc+in(guj)
+ * gur basic = pc+in(guru)
+ * ie laptop = pc+ie(basic)
+ * ie CloGaelachLaptop = pc+ie(CloGaelach)
+ * in urd = pc+in(urd-phonetic)
+ * iu basic = pc+ca(ike)
+ * lo basic = pc+la(basic)
+ * kan basic = pc+in(kan)
+ * mal basic = pc+in(mal)
+ * mal mlplusnum = pc+in(mal)
+ * ogham basic = pc+ie(ogam)
+ * ogham laptop = pc+ie(ogam)
+ * ogham is434 = pc+ie(ogam_is434)
+ * ogham is434laptop = pc+ie(ogam_is434)
+ * ori basic = pc+in(ori)
+ * ro de = pc+ro(winkeys)
+ * ro us = pc+ro(std)
+ * ro academic = pc+ro(std)
+ * ro std_comma = pc+ro(std)
+ * ro comma = pc+ro(basic)
+ * ru os = pc+ru(os_legacy)
+ * pk urd = pc+pk(urd-phonetic)
+ * sapmi basic = pc+no(smi)
+ * sapmi nodeadkeys = pc+no(smi_nodeadkeys)
+ * sapmi sefi = pc+fi(smi)
+ * sin phonetic-static = pc+in(sin_phonetic)
+ * syr basic = pc+sy(syc)
+ * syr phonetic = pc+sy(syc_phonetic)
+ * tam INSCRIPT = pc+in(tam)
+ * tam UNI = pc+in(tam_unicode)
+ * tam NUMERAL-KEYBOARD = pc+in(tam_keyboard_with_numerals)
+ * tam TAB = pc+in(tam_TAB)
+ * tam TSCII = pc+in(tam_TSCII)
+ * tel basic = pc+in(tel)
+ * yu basic = pc+srp(latin)
+ * yu unicode = pc+srp(latinunicode)
+ * yu yz = pc+srp(latinyz)
+ * yu unicodeyz = pc+srp(latinunicodeyz)
+ classmate us intl = pc+us(classmate-intl)
+ classmate us alt-intl = pc+us(classmate-alt-intl)
+ classmate us altgr-intl = pc+us(classmate-altgr-intl)
+ nokiarx51 cz qwerty = nokia_vndr/rx-51(cz_qwerty)
+
+! model layout = symbols
+ * ar = pc+ara
+ * ben = pc+in(ben)
+ * bs = pc+ba
+ * cs = pc+rs
+ * cz_qwerty = pc+cz(qwerty)
+ * dev = pc+in(deva)
+ * dvorak = pc+us(dvorak)
+ * dzdwi = pc+bt
+ * el = pc+gr
+ * en_US = pc+latin
+ * guj = pc+in(guj)
+ * gur = pc+in(guru)
+ * iu = pc+ca(ike)
+ * lo = pc+la
+ * kan = pc+in(kan)
+ * mi = pc+mao
+ * ml = pc+in(mal)
+ * ogham = pc+ie(ogam)
+ * ori = pc+ie(ori)
+ * sapmi = pc+no(smi)
+ * sr = pc+srp
+ * syr = pc+sy(syc)
+ * tel = pc+in(tel)
+ * tml = pc+in(tam)
+ * yu = pc+srp
+ * fr-latin9 = pc+fr(latin9)
+ * us_intl = pc+us(alt-intl)
+ * ben(basic) = pc+in(ben)
+ * ben(probhat) = pc+in(ben_probhat)
+ * dev(basic) = pc+in(deva)
+ * dvorak($dvoraklayouts) = pc+%v(dvorak)
+ * dvorak(basic) = pc+us(dvorak)
+ * dvorak(pl_basic) = pc+pl(dvorak)
+ * dvorak(pl) = pc+pl(dvorak_quotes)
+ * dvorak(pl_altquotes) = pc+pl(dvorak_altquotes)
+ * dzdwi(basic) = pc+bt(basic)
+ * fi(basic) = pc+fi(classic)
+ * ge(azerty_tskapo) = pc+fr(geo)
+ * guj(basic) = pc+in(guj)
+ * gur(basic) = pc+in(guru)
+ * ie(laptop) = pc+ie(basic)
+ * ie(CloGaelachLaptop) = pc+ie(CloGaelach)
+ * in(urd) = pc+in(urd-phonetic)
+ * iu(basic) = pc+ca(ike)
+ * lo(basic) = pc+la(basic)
+ * kan(basic) = pc+in(kan)
+ * mal(basic) = pc+in(mal)
+ * mal(mlplusnum) = pc+in(mal)
+ * ogham(basic) = pc+ie(ogam)
+ * ogham(laptop) = pc+ie(ogam)
+ * ogham(is434) = pc+ie(ogam_is434)
+ * ogham(is434laptop) = pc+ie(ogam_is434)
+ * ori(basic) = pc+in(ori)
+ * ro(de) = pc+ro(winkeys)
+ * ro(us) = pc+ro(std)
+ * ro(academic) = pc+ro(std)
+ * ro(std_comma) = pc+ro(std)
+ * ro(comma) = pc+ro(basic)
+ * ru(os) = pc+ru(os_legacy)
+ * pk(urd) = pc+pk(urd-phonetic)
+ * sapmi(basic) = pc+no(smi)
+ * sapmi(nodeadkeys) = pc+no(smi_nodeadkeys)
+ * sapmi(sefi) = pc+fi(smi)
+ * sin(phonetic-static) = pc+in(sin_phonetic)
+ * syr(basic) = pc+sy(syc)
+ * syr(phonetic) = pc+sy(syc_phonetic)
+ * tam(INSCRIPT) = pc+in(tam)
+ * tam(UNI) = pc+in(tam_unicode)
+ * tam(NUMERAL-KEYBOARD) = pc+in(tam_keyboard_with_numerals)
+ * tam(TAB) = pc+in(tam_TAB)
+ * tam(TSCII) = pc+in(tam_TSCII)
+ * tel(basic) = pc+in(tel)
+ * yu(basic) = pc+srp(latin)
+ * yu(unicode) = pc+srp(latinunicode)
+ * yu(yz) = pc+srp(latinyz)
+ * yu(unicodeyz) = pc+srp(latinunicodeyz)
+ ataritt $nonlatin = xfree68_vndr/ataritt(us)+%l%(v):2
+ ataritt * = xfree68_vndr/ataritt(us)+%l%(v)
+ amiga $nonlatin = xfree68_vndr/amiga(usa1)+%l%(v):2
+ amiga * = xfree68_vndr/amiga(usa1)+%l%(v)
+ classmate us = pc+%l(classmate)
+ empty * = empty(basic)
+ * empty = empty(basic)
+ sun4 $nonlatin = latin+sun_vndr/us(type4)+%l%(v):2
+ sun4 * = latin+sun_vndr/us(type4)+%l%(v)
+ sun5 $nonlatin = latin+sun_vndr/us(type5)+%l%(v):2
+ sun5 * = latin+sun_vndr/us(type5)+%l%(v)
+ sun6 us = pc+sun_vndr/us(type6)
+ sun6 en_US = pc+sun_vndr/us(type6)+iso9995-3(basic)
+ sun6 $sun_t6_custom = pc+sun_vndr/us(type6)+sun_vndr/%l%(v)
+ sun6 * = pc+sun_vndr/us(type6)+%l%(v)
+ sun6euro us = pc+sun_vndr/us(type6)
+ sun6euro en_US = pc+sun_vndr/us(type6)+iso9995-3(basic)
+ sun6euro $sun_t6_custom = pc+sun_vndr/us(type6)+sun_vndr/%l%(v)
+ sun6euro * = pc+sun_vndr/us(type6)+%l%(v)
+ pc98 nec_vndr/jp = nec_vndr/jp(pc98)
+ macintosh_old us = macintosh_vndr/us(oldmac)
+ macintosh_old en_US = macintosh_vndr/us(oldmac)
+ macintosh_old $macvendorlayouts = macintosh_vndr/us(oldmac)+macintosh_vndr/%l%(v)
+ macintosh_old $nonlatin = macintosh_vndr/us(oldmac)+%l%(v):2
+ macintosh_old * = macintosh_vndr/us(oldmac)+%l%(v)
+ applealu_jis jp = macintosh_vndr/apple(alukbd)+macintosh_vndr/jp(usmac)+macintosh_vndr/jp(mac):2
+ applealu_jis * = macintosh_vndr/apple(alukbd)+%l%(v)+macintosh_vndr/jp(mac):2
+ $applealu $macvendorlayouts = macintosh_vndr/apple(alukbd)+macintosh_vndr/%l%(v)
+ $applealu * = macintosh_vndr/apple(alukbd)+%l%(v)
+ $macs en_US = pc+macintosh_vndr/us(extended)
+ $macs $macvendorlayouts = pc+macintosh_vndr/%l%(v)
+ nokiarx44 * = nokia_vndr/rx-44(%l)
+ nokiarx51 cz(qwerty) = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(cz_qwerty)
+ nokiarx51 * = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(%l%_v)
+ nokiasu8w * = nokia_vndr/su-8w(%l)
+ olpc $olpclayouts = olpc+%l%(m)
+ olpc * = olpc+%l%(v)
+ $thinkpads br = pc+br(thinkpad)
+ htcdream $htcdreamlayouts = %l(htcdream)
+ * $nonlatin = pc+us+%l%(v):2
+ * * = pc+%l%(v)
+
+! model layout[1] = symbols
+ * ar = pc+ara%(v[1])
+ * ben = pc+in(ben)
+ * bs = pc+ba%(v[1])
+ * cs = pc+rs%(v[1])
+ * cz_qwerty = pc+cz(qwerty)
+ * dev = pc+in(deva)
+ * dvorak = pc+us(dvorak)
+ * dzdwi = pc+bt%(v[1])
+ * el = pc+gr%(v[1])
+ * en_US = pc+latin%(v[1])
+ * guj = pc+in(guj)
+ * gur = pc+in(guru)
+ * iu = pc+ca(ike)
+ * lo = pc+la%(v[1])
+ * kan = pc+in(kan)
+ * mi = pc+mao%(v[1])
+ * ml = pc+in(mal)
+ * ogham = pc+ie(ogam)
+ * ori = pc+ie(ori)
+ * sapmi = pc+no(smi)
+ * sr = pc+srp%(v[1])
+ * syr = pc+sy(syc)
+ * tel = pc+in(tel)
+ * tml = pc+in(tam)
+ * yu = pc+srp%(v[1])
+ * fr-latin9 = pc+fr(latin9)
+ * us_intl = pc+us(alt-intl)
+ * ben(basic) = pc+in(ben)
+ * ben(probhat) = pc+in(ben_probhat)
+ * dev(basic) = pc+in(deva)
+ * dvorak($dvoraklayouts) = pc+%v(dvorak)
+ * dvorak(basic) = pc+us(dvorak)
+ * dvorak(pl_basic) = pc+pl(dvorak)
+ * dvorak(pl) = pc+pl(dvorak_quotes)
+ * dvorak(pl_altquotes) = pc+pl(dvorak_altquotes)
+ * dzdwi(basic) = pc+bt(basic)
+ * fi(basic) = pc+fi(classic)
+ * ge(azerty_tskapo) = pc+fr(geo)
+ * guj(basic) = pc+in(guj)
+ * gur(basic) = pc+in(guru)
+ * ie(laptop) = pc+ie(basic)
+ * ie(CloGaelachLaptop) = pc+ie(CloGaelach)
+ * in(urd) = pc+in(urd-phonetic)
+ * iu(basic) = pc+ca(ike)
+ * lo(basic) = pc+la(basic)
+ * kan(basic) = pc+in(kan)
+ * mal(basic) = pc+in(mal)
+ * mal(mlplusnum) = pc+in(mal)
+ * ogham(basic) = pc+ie(ogam)
+ * ogham(laptop) = pc+ie(ogam)
+ * ogham(is434) = pc+ie(ogam_is434)
+ * ogham(is434laptop) = pc+ie(ogam_is434)
+ * ori(basic) = pc+in(ori)
+ * ro(de) = pc+ro(winkeys)
+ * ro(us) = pc+ro(std)
+ * ro(academic) = pc+ro(std)
+ * ro(std_comma) = pc+ro(std)
+ * ro(comma) = pc+ro(basic)
+ * ru(os) = pc+ru(os_legacy)
+ * pk(urd) = pc+pk(urd-phonetic)
+ * sapmi(basic) = pc+no(smi)
+ * sapmi(nodeadkeys) = pc+no(smi_nodeadkeys)
+ * sapmi(sefi) = pc+fi(smi)
+ * sin(phonetic-static) = pc+in(sin_phonetic)
+ * syr(basic) = pc+sy(syc)
+ * syr(phonetic) = pc+sy(syc_phonetic)
+ * tam(INSCRIPT) = pc+in(tam)
+ * tam(UNI) = pc+in(tam_unicode)
+ * tam(NUMERAL-KEYBOARD) = pc+in(tam_keyboard_with_numerals)
+ * tam(TAB) = pc+in(tam_TAB)
+ * tam(TSCII) = pc+in(tam_TSCII)
+ * tel(basic) = pc+in(tel)
+ * yu(basic) = pc+srp(latin)
+ * yu(unicode) = pc+srp(latinunicode)
+ * yu(yz) = pc+srp(latinyz)
+ * yu(unicodeyz) = pc+srp(latinunicodeyz)
+ ataritt * = xfree68_vndr/ataritt(us)+%l[1]%(v[1])
+ amiga * = xfree68_vndr/amiga(usa1)+%l[1]%(v[1])
+ sun4 * = latin+sun_vndr/us(type4)+%l[1]%(v[1])
+ sun5 * = latin+sun_vndr/us(type5)+%l[1]%(v[1])
+ macintosh_old us = macintosh_vndr/us(oldmac)
+ macintosh_old $macvendorlayouts = macintosh_vndr/us(oldmac)+macintosh_vndr/%l[1]%(v[1])
+ macintosh_old * = macintosh_vndr/us(oldmac)+%l[1]%(v[1])
+ applealu_jis us = macintosh_vndr/apple(alukbd)+macintosh_vndr/jp(usmac)
+ $applealu $macvendorlayouts = macintosh_vndr/apple(alukbd)+macintosh_vndr/%l[1]%(v[1])
+ $applealu * = macintosh_vndr/apple(alukbd)+%l[1]%(v[1])
+ $macs $macvendorlayouts = pc+macintosh_vndr/%l[1]%(v[1])
+ nokiarx51 cz(qwerty) = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(cz_qwerty)
+ nokiarx51 * = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(%l[1]%_v[1])
+ $thinkpads br = pc+%l[1](thinkpad)
+ * * = pc+%l[1]%(v[1])
+
+! model layout[1] variant[1] = symbols
+ * ben basic = pc+in(ben)
+ * ben probhat = pc+in(ben_probhat)
+ * dev basic = pc+in(deva)
+ * dvorak $dvoraklayouts = pc+%v(dvorak)
+ * dvorak basic = pc+us(dvorak)
+ * dvorak pl_basic = pc+pl(dvorak)
+ * dvorak pl = pc+pl(dvorak_quotes)
+ * dvorak pl_altquotes = pc+pl(dvorak_altquotes)
+ * dzdwi basic = pc+bt(basic)
+ * fi basic = pc+fi(classic)
+ * ge azerty_tskapo = pc+fr(geo)
+ * guj basic = pc+in(guj)
+ * gur basic = pc+in(guru)
+ * ie laptop = pc+ie(basic)
+ * ie CloGaelachLaptop = pc+ie(CloGaelach)
+ * in urd = pc+in(urd-phonetic)
+ * iu basic = pc+ca(ike)
+ * lo basic = pc+la(basic)
+ * kan basic = pc+in(kan)
+ * mal basic = pc+in(mal)
+ * mal mlplusnum = pc+in(mal)
+ * ogham basic = pc+ie(ogam)
+ * ogham laptop = pc+ie(ogam)
+ * ogham is434 = pc+ie(ogam_is434)
+ * ogham is434laptop = pc+ie(ogam_is434)
+ * ori basic = pc+in(ori)
+ * ro de = pc+ro(winkeys)
+ * ro us = pc+ro(std)
+ * ro academic = pc+ro(std)
+ * ro std_comma = pc+ro(std)
+ * ro comma = pc+ro(basic)
+ * ru os = pc+ru(os_legacy)
+ * pk urd = pc+pk(urd-phonetic)
+ * sapmi basic = pc+no(smi)
+ * sapmi nodeadkeys = pc+no(smi_nodeadkeys)
+ * sapmi sefi = pc+fi(smi)
+ * sin phonetic-static = pc+in(sin_phonetic)
+ * syr basic = pc+sy(syc)
+ * syr phonetic = pc+sy(syc_phonetic)
+ * tam INSCRIPT = pc+in(tam)
+ * tam UNI = pc+in(tam_unicode)
+ * tam NUMERAL-KEYBOARD = pc+in(tam_keyboard_with_numerals)
+ * tam TAB = pc+in(tam_TAB)
+ * tam TSCII = pc+in(tam_TSCII)
+ * tel basic = pc+in(tel)
+ * yu basic = pc+srp(latin)
+ * yu unicode = pc+srp(latinunicode)
+ * yu yz = pc+srp(latinyz)
+ * yu unicodeyz = pc+srp(latinunicodeyz)
+
+! model layout[2] = symbols
+ * ar = +ara%(v[2]):2
+ * ben = +in(ben):2
+ * bs = +ba%(v[2]):2
+ * cs = +rs%(v[2]):2
+ * cz_qwerty = +cz(qwerty):2
+ * dev = +in(deva):2
+ * dvorak = +us(dvorak):2
+ * dzdwi = +bt%(v[2]):2
+ * el = +gr%(v[2]):2
+ * en_US = +latin%(v[2]):2
+ * guj = +in(guj):2
+ * gur = +in(guru):2
+ * iu = +ca(ike):2
+ * lo = +la%(v[2]):2
+ * kan = +in(kan):2
+ * mi = +mao%(v[2]):2
+ * ml = +in(mal):2
+ * ogham = +ie(ogam):2
+ * ori = +ie(ori):2
+ * sapmi = +no(smi):2
+ * sr = +srp%(v[2]):2
+ * syr = +sy(syc):2
+ * tel = +in(tel):2
+ * tml = +in(tam):2
+ * yu = +srp%(v[2]):2
+ * fr-latin9 = +fr(latin9):2
+ * us_intl = +us(alt-intl):2
+ * ben(basic) = +in(ben):2
+ * ben(probhat) = +in(ben_probhat):2
+ * dev(basic) = +in(deva):2
+ * dvorak($dvoraklayouts) = +%v(dvorak):2
+ * dvorak(basic) = +us(dvorak):2
+ * dvorak(pl_basic) = +pl(dvorak):2
+ * dvorak(pl) = +pl(dvorak_quotes):2
+ * dvorak(pl_altquotes) = +pl(dvorak_altquotes):2
+ * dzdwi(basic) = +bt(basic):2
+ * fi(basic) = +fi(classic):2
+ * ge(azerty_tskapo) = +fr(geo):2
+ * guj(basic) = +in(guj):2
+ * gur(basic) = +in(guru):2
+ * ie(laptop) = +ie(basic):2
+ * ie(CloGaelachLaptop) = +ie(CloGaelach):2
+ * in(urd) = +in(urd-phonetic):2
+ * iu(basic) = +ca(ike):2
+ * lo(basic) = +la(basic):2
+ * kan(basic) = +in(kan):2
+ * mal(basic) = +in(mal):2
+ * mal(mlplusnum) = +in(mal):2
+ * ogham(basic) = +ie(ogam):2
+ * ogham(laptop) = +ie(ogam):2
+ * ogham(is434) = +ie(ogam_is434):2
+ * ogham(is434laptop) = +ie(ogam_is434):2
+ * ori(basic) = +in(ori):2
+ * ro(de) = +ro(winkeys):2
+ * ro(us) = +ro(std):2
+ * ro(academic) = +ro(std):2
+ * ro(std_comma) = +ro(std):2
+ * ro(comma) = +ro(basic):2
+ * ru(os) = +ru(os_legacy):2
+ * pk(urd) = +pk(urd-phonetic):2
+ * sapmi(basic) = +no(smi):2
+ * sapmi(nodeadkeys) = +no(smi_nodeadkeys):2
+ * sapmi(sefi) = +fi(smi):2
+ * sin(phonetic-static) = +in(sin_phonetic):2
+ * syr(basic) = +sy(syc):2
+ * syr(phonetic) = +sy(syc_phonetic):2
+ * tam(INSCRIPT) = +in(tam):2
+ * tam(UNI) = +in(tam_unicode):2
+ * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):2
+ * tam(TAB) = +in(tam_TAB):2
+ * tam(TSCII) = +in(tam_TSCII):2
+ * tel(basic) = +in(tel):2
+ * yu(basic) = +srp(latin):2
+ * yu(unicode) = +srp(latinunicode):2
+ * yu(yz) = +srp(latinyz):2
+ * yu(unicodeyz) = +srp(latinunicodeyz):2
+ nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):2
+ nokiarx51 * = +nokia_vndr/rx-51(%l[2]%_v[2]):2
+ * * = +%l[2]%(v[2]):2
+
+! model layout[3] = symbols
+ * ar = +ara%(v[3]):3
+ * ben = +in(ben):3
+ * bs = +ba%(v[3]):3
+ * cs = +rs%(v[3]):3
+ * cz_qwerty = +cz(qwerty):3
+ * dev = +in(deva):3
+ * dvorak = +us(dvorak):3
+ * dzdwi = +bt%(v[3]):3
+ * el = +gr%(v[3]):3
+ * en_US = +latin%(v[3]):3
+ * guj = +in(guj):3
+ * gur = +in(guru):3
+ * iu = +ca(ike):3
+ * lo = +la%(v[3]):3
+ * kan = +in(kan):3
+ * mi = +mao%(v[3]):3
+ * ml = +in(mal):3
+ * ogham = +ie(ogam):3
+ * ori = +ie(ori):3
+ * sapmi = +no(smi):3
+ * sr = +srp%(v[3]):3
+ * syr = +sy(syc):3
+ * tel = +in(tel):3
+ * tml = +in(tam):3
+ * yu = +srp%(v[3]):3
+ * fr-latin9 = +fr(latin9):3
+ * us_intl = +us(alt-intl):3
+ * ben(basic) = +in(ben):3
+ * ben(probhat) = +in(ben_probhat):3
+ * dev(basic) = +in(deva):3
+ * dvorak($dvoraklayouts) = +%v(dvorak):3
+ * dvorak(basic) = +us(dvorak):3
+ * dvorak(pl_basic) = +pl(dvorak):3
+ * dvorak(pl) = +pl(dvorak_quotes):3
+ * dvorak(pl_altquotes) = +pl(dvorak_altquotes):3
+ * dzdwi(basic) = +bt(basic):3
+ * fi(basic) = +fi(classic):3
+ * ge(azerty_tskapo) = +fr(geo):3
+ * guj(basic) = +in(guj):3
+ * gur(basic) = +in(guru):3
+ * ie(laptop) = +ie(basic):3
+ * ie(CloGaelachLaptop) = +ie(CloGaelach):3
+ * in(urd) = +in(urd-phonetic):3
+ * iu(basic) = +ca(ike):3
+ * lo(basic) = +la(basic):3
+ * kan(basic) = +in(kan):3
+ * mal(basic) = +in(mal):3
+ * mal(mlplusnum) = +in(mal):3
+ * ogham(basic) = +ie(ogam):3
+ * ogham(laptop) = +ie(ogam):3
+ * ogham(is434) = +ie(ogam_is434):3
+ * ogham(is434laptop) = +ie(ogam_is434):3
+ * ori(basic) = +in(ori):3
+ * ro(de) = +ro(winkeys):3
+ * ro(us) = +ro(std):3
+ * ro(academic) = +ro(std):3
+ * ro(std_comma) = +ro(std):3
+ * ro(comma) = +ro(basic):3
+ * ru(os) = +ru(os_legacy):3
+ * pk(urd) = +pk(urd-phonetic):3
+ * sapmi(basic) = +no(smi):3
+ * sapmi(nodeadkeys) = +no(smi_nodeadkeys):3
+ * sapmi(sefi) = +fi(smi):3
+ * sin(phonetic-static) = +in(sin_phonetic):3
+ * syr(basic) = +sy(syc):3
+ * syr(phonetic) = +sy(syc_phonetic):3
+ * tam(INSCRIPT) = +in(tam):3
+ * tam(UNI) = +in(tam_unicode):3
+ * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):3
+ * tam(TAB) = +in(tam_TAB):3
+ * tam(TSCII) = +in(tam_TSCII):3
+ * tel(basic) = +in(tel):3
+ * yu(basic) = +srp(latin):3
+ * yu(unicode) = +srp(latinunicode):3
+ * yu(yz) = +srp(latinyz):3
+ * yu(unicodeyz) = +srp(latinunicodeyz):3
+ nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):3
+ nokiarx51 * = +nokia_vndr/rx-51(%l[3]%_v[3]):3
+ * * = +%l[3]%(v[3]):3
+
+! model layout[4] = symbols
+ * ar = +ara%(v[4]):4
+ * ben = +in(ben):4
+ * bs = +ba%(v[4]):4
+ * cs = +rs%(v[4]):4
+ * cz_qwerty = +cz(qwerty):4
+ * dev = +in(deva):4
+ * dvorak = +us(dvorak):4
+ * dzdwi = +bt%(v[4]):4
+ * el = +gr%(v[4]):4
+ * en_US = +latin%(v[4]):4
+ * guj = +in(guj):4
+ * gur = +in(guru):4
+ * iu = +ca(ike):4
+ * lo = +la%(v[4]):4
+ * kan = +in(kan):4
+ * mi = +mao%(v[4]):4
+ * ml = +in(mal):4
+ * ogham = +ie(ogam):4
+ * ori = +ie(ori):4
+ * sapmi = +no(smi):4
+ * sr = +srp%(v[4]):4
+ * syr = +sy(syc):4
+ * tel = +in(tel):4
+ * tml = +in(tam):4
+ * yu = +srp%(v[4]):4
+ * fr-latin9 = +fr(latin9):4
+ * us_intl = +us(alt-intl):4
+ * ben(basic) = +in(ben):4
+ * ben(probhat) = +in(ben_probhat):4
+ * dev(basic) = +in(deva):4
+ * dvorak($dvoraklayouts) = +%v(dvorak):4
+ * dvorak(basic) = +us(dvorak):4
+ * dvorak(pl_basic) = +pl(dvorak):4
+ * dvorak(pl) = +pl(dvorak_quotes):4
+ * dvorak(pl_altquotes) = +pl(dvorak_altquotes):4
+ * dzdwi(basic) = +bt(basic):4
+ * fi(basic) = +fi(classic):4
+ * ge(azerty_tskapo) = +fr(geo):4
+ * guj(basic) = +in(guj):4
+ * gur(basic) = +in(guru):4
+ * ie(laptop) = +ie(basic):4
+ * ie(CloGaelachLaptop) = +ie(CloGaelach):4
+ * in(urd) = +in(urd-phonetic):4
+ * iu(basic) = +ca(ike):4
+ * lo(basic) = +la(basic):4
+ * kan(basic) = +in(kan):4
+ * mal(basic) = +in(mal):4
+ * mal(mlplusnum) = +in(mal):4
+ * ogham(basic) = +ie(ogam):4
+ * ogham(laptop) = +ie(ogam):4
+ * ogham(is434) = +ie(ogam_is434):4
+ * ogham(is434laptop) = +ie(ogam_is434):4
+ * ori(basic) = +in(ori):4
+ * ro(de) = +ro(winkeys):4
+ * ro(us) = +ro(std):4
+ * ro(academic) = +ro(std):4
+ * ro(std_comma) = +ro(std):4
+ * ro(comma) = +ro(basic):4
+ * ru(os) = +ru(os_legacy):4
+ * pk(urd) = +pk(urd-phonetic):4
+ * sapmi(basic) = +no(smi):4
+ * sapmi(nodeadkeys) = +no(smi_nodeadkeys):4
+ * sapmi(sefi) = +fi(smi):4
+ * sin(phonetic-static) = +in(sin_phonetic):4
+ * syr(basic) = +sy(syc):4
+ * syr(phonetic) = +sy(syc_phonetic):4
+ * tam(INSCRIPT) = +in(tam):4
+ * tam(UNI) = +in(tam_unicode):4
+ * tam(NUMERAL-KEYBOARD) = +in(tam_keyboard_with_numerals):4
+ * tam(TAB) = +in(tam_TAB):4
+ * tam(TSCII) = +in(tam_TSCII):4
+ * tel(basic) = +in(tel):4
+ * yu(basic) = +srp(latin):4
+ * yu(unicode) = +srp(latinunicode):4
+ * yu(yz) = +srp(latinyz):4
+ * yu(unicodeyz) = +srp(latinunicodeyz):4
+ nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):4
+ nokiarx51 * = +nokia_vndr/rx-51(%l[4]%_v[4]):4
+ * * = +%l[4]%(v[4]):4
+
+! model layout[2] variant[2] = symbols
+ * ben basic = +in(ben):2
+ * ben probhat = +in(ben_probhat):2
+ * dev basic = +in(deva):2
+ * dvorak $dvoraklayouts = +%v(dvorak):2
+ * dvorak basic = +us(dvorak):2
+ * dvorak pl_basic = +pl(dvorak):2
+ * dvorak pl = +pl(dvorak_quotes):2
+ * dvorak pl_altquotes = +pl(dvorak_altquotes):2
+ * dzdwi basic = +bt(basic):2
+ * fi basic = +fi(classic):2
+ * ge azerty_tskapo = +fr(geo):2
+ * guj basic = +in(guj):2
+ * gur basic = +in(guru):2
+ * ie laptop = +ie(basic):2
+ * ie CloGaelachLaptop = +ie(CloGaelach):2
+ * in urd = +in(urd-phonetic):2
+ * iu basic = +ca(ike):2
+ * lo basic = +la(basic):2
+ * kan basic = +in(kan):2
+ * mal basic = +in(mal):2
+ * mal mlplusnum = +in(mal):2
+ * ogham basic = +ie(ogam):2
+ * ogham laptop = +ie(ogam):2
+ * ogham is434 = +ie(ogam_is434):2
+ * ogham is434laptop = +ie(ogam_is434):2
+ * ori basic = +in(ori):2
+ * ro de = +ro(winkeys):2
+ * ro us = +ro(std):2
+ * ro academic = +ro(std):2
+ * ro std_comma = +ro(std):2
+ * ro comma = +ro(basic):2
+ * ru os = +ru(os_legacy):2
+ * pk urd = +pk(urd-phonetic):2
+ * sapmi basic = +no(smi):2
+ * sapmi nodeadkeys = +no(smi_nodeadkeys):2
+ * sapmi sefi = +fi(smi):2
+ * sin phonetic-static = +in(sin_phonetic):2
+ * syr basic = +sy(syc):2
+ * syr phonetic = +sy(syc_phonetic):2
+ * tam INSCRIPT = +in(tam):2
+ * tam UNI = +in(tam_unicode):2
+ * tam NUMERAL-KEYBOARD = +in(tam_keyboard_with_numerals):2
+ * tam TAB = +in(tam_TAB):2
+ * tam TSCII = +in(tam_TSCII):2
+ * tel basic = +in(tel):2
+ * yu basic = +srp(latin):2
+ * yu unicode = +srp(latinunicode):2
+ * yu yz = +srp(latinyz):2
+ * yu unicodeyz = +srp(latinunicodeyz):2
+
+! model layout[3] variant[3] = symbols
+ * ben basic = +in(ben):3
+ * ben probhat = +in(ben_probhat):3
+ * dev basic = +in(deva):3
+ * dvorak $dvoraklayouts = +%v(dvorak):3
+ * dvorak basic = +us(dvorak):3
+ * dvorak pl_basic = +pl(dvorak):3
+ * dvorak pl = +pl(dvorak_quotes):3
+ * dvorak pl_altquotes = +pl(dvorak_altquotes):3
+ * dzdwi basic = +bt(basic):3
+ * fi basic = +fi(classic):3
+ * ge azerty_tskapo = +fr(geo):3
+ * guj basic = +in(guj):3
+ * gur basic = +in(guru):3
+ * ie laptop = +ie(basic):3
+ * ie CloGaelachLaptop = +ie(CloGaelach):3
+ * in urd = +in(urd-phonetic):3
+ * iu basic = +ca(ike):3
+ * lo basic = +la(basic):3
+ * kan basic = +in(kan):3
+ * mal basic = +in(mal):3
+ * mal mlplusnum = +in(mal):3
+ * ogham basic = +ie(ogam):3
+ * ogham laptop = +ie(ogam):3
+ * ogham is434 = +ie(ogam_is434):3
+ * ogham is434laptop = +ie(ogam_is434):3
+ * ori basic = +in(ori):3
+ * ro de = +ro(winkeys):3
+ * ro us = +ro(std):3
+ * ro academic = +ro(std):3
+ * ro std_comma = +ro(std):3
+ * ro comma = +ro(basic):3
+ * ru os = +ru(os_legacy):3
+ * pk urd = +pk(urd-phonetic):3
+ * sapmi basic = +no(smi):3
+ * sapmi nodeadkeys = +no(smi_nodeadkeys):3
+ * sapmi sefi = +fi(smi):3
+ * sin phonetic-static = +in(sin_phonetic):3
+ * syr basic = +sy(syc):3
+ * syr phonetic = +sy(syc_phonetic):3
+ * tam INSCRIPT = +in(tam):3
+ * tam UNI = +in(tam_unicode):3
+ * tam NUMERAL-KEYBOARD = +in(tam_keyboard_with_numerals):3
+ * tam TAB = +in(tam_TAB):3
+ * tam TSCII = +in(tam_TSCII):3
+ * tel basic = +in(tel):3
+ * yu basic = +srp(latin):3
+ * yu unicode = +srp(latinunicode):3
+ * yu yz = +srp(latinyz):3
+ * yu unicodeyz = +srp(latinunicodeyz):3
+
+! model layout[4] variant[4] = symbols
+ * ben basic = +in(ben):4
+ * ben probhat = +in(ben_probhat):4
+ * dev basic = +in(deva):4
+ * dvorak $dvoraklayouts = +%v(dvorak):4
+ * dvorak basic = +us(dvorak):4
+ * dvorak pl_basic = +pl(dvorak):4
+ * dvorak pl = +pl(dvorak_quotes):4
+ * dvorak pl_altquotes = +pl(dvorak_altquotes):4
+ * dzdwi basic = +bt(basic):4
+ * fi basic = +fi(classic):4
+ * ge azerty_tskapo = +fr(geo):4
+ * guj basic = +in(guj):4
+ * gur basic = +in(guru):4
+ * ie laptop = +ie(basic):4
+ * ie CloGaelachLaptop = +ie(CloGaelach):4
+ * in urd = +in(urd-phonetic):4
+ * iu basic = +ca(ike):4
+ * lo basic = +la(basic):4
+ * kan basic = +in(kan):4
+ * mal basic = +in(mal):4
+ * mal mlplusnum = +in(mal):4
+ * ogham basic = +ie(ogam):4
+ * ogham laptop = +ie(ogam):4
+ * ogham is434 = +ie(ogam_is434):4
+ * ogham is434laptop = +ie(ogam_is434):4
+ * ori basic = +in(ori):4
+ * ro de = +ro(winkeys):4
+ * ro us = +ro(std):4
+ * ro academic = +ro(std):4
+ * ro std_comma = +ro(std):4
+ * ro comma = +ro(basic):4
+ * ru os = +ru(os_legacy):4
+ * pk urd = +pk(urd-phonetic):4
+ * sapmi basic = +no(smi):4
+ * sapmi nodeadkeys = +no(smi_nodeadkeys):4
+ * sapmi sefi = +fi(smi):4
+ * sin phonetic-static = +in(sin_phonetic):4
+ * syr basic = +sy(syc):4
+ * syr phonetic = +sy(syc_phonetic):4
+ * tam INSCRIPT = +in(tam):4
+ * tam UNI = +in(tam_unicode):4
+ * tam NUMERAL-KEYBOARD = +in(tam_keyboard_with_numerals):4
+ * tam TAB = +in(tam_TAB):4
+ * tam TSCII = +in(tam_TSCII):4
+ * tel basic = +in(tel):4
+ * yu basic = +srp(latin):4
+ * yu unicode = +srp(latinunicode):4
+ * yu yz = +srp(latinyz):4
+ * yu unicodeyz = +srp(latinunicodeyz):4
+
+! model = symbols
+ $evdevkbds = +inet(evdev)+inet(%m)
+ applealu_jis = +inet(evdev)+macintosh_vndr/jp(alujiskeys)
+ * = +inet(evdev)
+
+! layout variant = compat
+ de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock)
+
+! layout[1] variant[1] = compat
+ de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock)
+
+! layout[2] variant[2] = compat
+ de neo = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2
+
+! layout[3] variant[3] = compat
+ de neo = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3
+
+! layout[4] variant[4] = compat
+ de neo = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4
+
+! model layout = compat
+ pc98 nec_vndr/jp = pc98(basic)
+ * jp = complete+japan
+ olpc * = olpc
+ * * = complete
+
+! model layout[1] = compat
+ * * = complete
+
+! model = types
+ $macs = complete+numpad(mac)
+ $applealu = complete+numpad(mac)
+ $nokiamodels = complete+nokia
+ * = complete
+
+! layout option = symbols
+ $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle)
+ * misc:typo = +typo(base)
+
+! layout[1] option = symbols
+ $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):1
+ * misc:typo = +typo(base):1
+
+! layout[2] option = symbols
+ $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):2
+ * misc:typo = +typo(base):2
+
+! layout[3] option = symbols
+ $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):3
+ * misc:typo = +typo(base):3
+
+! layout[4] option = symbols
+ $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):4
+ * misc:typo = +typo(base):4
+
+! option = symbols
+ grp:shift_toggle = +group(shifts_toggle)
+ altwin:menu = +altwin(menu)
+ altwin:meta_alt = +altwin(meta_alt)
+ altwin:ctrl_win = +altwin(ctrl_win)
+ altwin:ctrl_alt_win = +altwin(ctrl_alt_win)
+ altwin:meta_win = +altwin(meta_win)
+ altwin:left_meta_win = +altwin(left_meta_win)
+ altwin:hyper_win = +altwin(hyper_win)
+ altwin:alt_super_win = +altwin(alt_super_win)
+ altwin:swap_lalt_lwin = +altwin(swap_lalt_lwin)
+ grp:switch = +group(switch)
+ grp:lswitch = +group(lswitch)
+ grp:win_switch = +group(win_switch)
+ grp:lwin_switch = +group(lwin_switch)
+ grp:rwin_switch = +group(rwin_switch)
+ grp:toggle = +group(toggle)
+ grp:shifts_toggle = +group(shifts_toggle)
+ grp:ctrls_toggle = +group(ctrls_toggle)
+ grp:alts_toggle = +group(alts_toggle)
+ grp:caps_toggle = +capslock(grouplock)
+ grp:caps_switch = +capslock(groupshift)
+ grp:shift_caps_toggle = +group(shift_caps_toggle)
+ grp:shift_caps_switch = +group(shift_caps_switch)
+ grp:win_menu_switch = +group(win_menu_switch)
+ grp:alt_caps_toggle = +group(alt_caps_toggle)
+ grp:alt_space_toggle = +group(alt_space_toggle)
+ grp:menu_toggle = +group(menu_toggle)
+ grp:lwin_toggle = +group(lwin_toggle)
+ grp:rwin_toggle = +group(rwin_toggle)
+ grp:lshift_toggle = +group(lshift_toggle)
+ grp:rshift_toggle = +group(rshift_toggle)
+ grp:rctrl_switch = +group(rctrl_switch)
+ grp:lctrl_toggle = +group(lctrl_toggle)
+ grp:rctrl_toggle = +group(rctrl_toggle)
+ grp:lalt_toggle = +group(lalt_toggle)
+ grp:sclk_toggle = +group(sclk_toggle)
+ grp:lctrl_rctrl_switch = +group(lctrl_rctrl_switch)
+ grp:lctrl_lwin_rctrl_menu = +group(lctrl_lwin_rctrl_menu)
+ grp:lctrl_lalt_toggle = +group(lctrl_lalt_toggle)
+ grp:rctrl_ralt_toggle = +group(rctrl_ralt_toggle)
+ grp:ctrl_alt_toggle = +group(ctrl_alt_toggle)
+ grp:ctrl_alt_toggle_bidir = +group(ctrl_alt_toggle_bidir)
+ grp:lctrl_lshift_toggle = +group(lctrl_lshift_toggle)
+ grp:rctrl_rshift_toggle = +group(rctrl_rshift_toggle)
+ grp:ctrl_shift_toggle = +group(ctrl_shift_toggle)
+ grp:ctrl_shift_toggle_bidir = +group(ctrl_shift_toggle_bidir)
+ grp:lalt_lshift_toggle = +group(lalt_lshift_toggle)
+ grp:ralt_rshift_toggle = +group(ralt_rshift_toggle)
+ grp:alt_shift_toggle = +group(alt_shift_toggle)
+ grp:alt_shift_toggle_bidir = +group(alt_shift_toggle_bidir)
+ lv3:switch = +level3(switch)
+ lv3:ralt_switch = +level3(ralt_switch)
+ lv3:ralt_switch_multikey = +level3(ralt_switch_multikey)
+ lv3:ralt_alt = +level3(ralt_alt)
+ lv3:lalt_switch = +level3(lalt_switch)
+ lv3:alt_switch = +level3(alt_switch)
+ lv3:menu_switch = +level3(menu_switch)
+ lv3:win_switch = +level3(win_switch)
+ lv3:lwin_switch = +level3(lwin_switch)
+ lv3:rwin_switch = +level3(rwin_switch)
+ lv3:enter_switch = +level3(enter_switch)
+ caps:capslock = +capslock(capslock)
+ caps:numlock = +capslock(numlock)
+ caps:shiftlock = +capslock(shiftlock)
+ caps:swapescape = +capslock(swapescape)
+ caps:escape = +capslock(escape)
+ caps:backspace = +capslock(backspace)
+ caps:super = +capslock(super)
+ caps:hyper = +capslock(hyper)
+ caps:none = +capslock(none)
+ caps:ctrl_modifier = +capslock(ctrl_modifier)
+ ctrl:nocaps = +ctrl(nocaps)
+ ctrl:lctrl_meta = +ctrl(lctrl_meta)
+ ctrl:swapcaps = +ctrl(swapcaps)
+ ctrl:ac_ctrl = +ctrl(ac_ctrl)
+ ctrl:aa_ctrl = +ctrl(aa_ctrl)
+ ctrl:rctrl_ralt = +ctrl(rctrl_ralt)
+ ctrl:menu_rctrl = +ctrl(menu_rctrl)
+ ctrl:ralt_rctrl = +ctrl(ralt_rctrl)
+ compose:ralt = +compose(ralt)
+ compose:lwin = +compose(lwin)
+ compose:rwin = +compose(rwin)
+ compose:menu = +compose(menu)
+ compose:lctrl = +compose(lctrl)
+ compose:rctrl = +compose(rctrl)
+ compose:caps = +compose(caps)
+ compose:102 = +compose(102)
+ compose:paus = +compose(paus)
+ compose:prsc = +compose(prsc)
+ compose:sclk = +compose(sclk)
+ srvrkeys:none = +srvr_ctrl(no_srvr_keys)
+ eurosign:e = +eurosign(e)
+ eurosign:2 = +eurosign(2)
+ eurosign:4 = +eurosign(4)
+ eurosign:5 = +eurosign(5)
+ rupeesign:4 = +rupeesign(4)
+ keypad:oss = +keypad(oss)
+ keypad:legacy = +keypad(legacy)
+ keypad:legacy_wang = +keypad(legacy_wang)
+ keypad:oss_wang = +keypad(oss_wang)
+ keypad:future = +keypad(future)
+ keypad:future_wang = +keypad(future_wang)
+ keypad:hex = +keypad(ops)+keypad(hex)
+ keypad:atm = +keypad(ops)+keypad(hex)+keypad(atm)
+ nbsp:none = +nbsp(none)
+ nbsp:level2 = +nbsp(level2)
+ nbsp:level3 = +nbsp(level3)
+ nbsp:level3s = +nbsp(level3s)
+ nbsp:level3n = +nbsp(level3n)
+ nbsp:level4 = +nbsp(level4)
+ nbsp:level4n = +nbsp(level4n)
+ nbsp:level4nl = +nbsp(level4nl)
+ japan:nicola_f_bs = +jp(nicola_f_bs)
+ japan:hztg_escape = +jp(hztg_escape)
+ kpdl:dot = +kpdl(dot)
+ kpdl:comma = +kpdl(comma)
+ kpdl:dotoss = +kpdl(dotoss)
+ kpdl:dotoss_latin9 = +kpdl(dotoss_latin9)
+ kpdl:commaoss = +kpdl(commaoss)
+ kpdl:momayyezoss = +kpdl(momayyezoss)
+ kpdl:kposs = +kpdl(kposs)
+ kpdl:semi = +kpdl(semi)
+ shift:breaks_caps = +shift(breaks_caps)
+ esperanto:qwerty = +epo(qwerty)
+ esperanto:dvorak = +epo(dvorak)
+ terminate:ctrl_alt_bksp = +terminate(ctrl_alt_bksp)
+ keypad:pointerkeys = +keypad(pointerkeys)
+ apple:alupckeys = +macintosh_vndr/apple(alupckeys)
+ shift:both_capslock = +shift(both_capslock)
+ shift:lshift_both_capslock = +shift(lshift_both_capslock)
+ shift:rshift_both_capslock = +shift(rshift_both_capslock)
+ shift:both_capslock_cancel = +shift(both_capslock_cancel)
+ shift:lshift_both_capslock_cancel = +shift(lshift_both_capslock_cancel)
+ shift:rshift_both_capslock_cancel = +shift(rshift_both_capslock_cancel)
+ shift:both_shiftlock = +shift(both_shiftlock)
+ shift:lshift_both_shiftlock = +shift(lshift_both_shiftlock)
+ shift:rshift_both_shiftlock = +shift(rshift_both_shiftlock)
+ lv3:caps_switch = +level3(caps_switch)
+ lv3:bksl_switch = +level3(bksl_switch)
+ lv3:lsgt_switch = +level3(lsgt_switch)
+ lv3:caps_switch_latch = +level3(caps_switch_latch)
+ lv3:bksl_switch_latch = +level3(bksl_switch_latch)
+ lv3:lsgt_switch_latch = +level3(lsgt_switch_latch)
+ lv5:lsgt_switch_lock = +level5(lsgt_switch_lock)
+ lv5:ralt_switch_lock = +level5(ralt_switch_lock)
+ lv5:lwin_switch_lock = +level5(lwin_switch_lock)
+ lv5:rwin_switch_lock = +level5(rwin_switch_lock)
+ lv5:lsgt_switch_lock_cancel = +level5(lsgt_switch_lock_cancel)
+ lv5:ralt_switch_lock_cancel = +level5(ralt_switch_lock_cancel)
+ lv5:lwin_switch_lock_cancel = +level5(lwin_switch_lock_cancel)
+ lv5:rwin_switch_lock_cancel = +level5(rwin_switch_lock_cancel)
+
+
+
+! option = compat
+ grp_led:num = +lednum(group_lock)
+ grp_led:caps = +ledcaps(group_lock)
+ grp_led:scroll = +ledscroll(group_lock)
+ caps:shiftlock = +ledcaps(shift_lock)
+ grab:break_actions = +xfree86(grab_break)
--- /dev/null
+partial modifier_keys
+xkb_symbols "meta_alt" {
+ key <LALT> { [ Alt_L, Meta_L ] };
+ key <RALT> { type[Group1] = "TWO_LEVEL",
+ symbols[Group1] = [ Alt_R, Meta_R ] };
+ modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
+// modifier_map Mod4 {};
+};
+
+// Control is mapped to the Win-keys (and the usual Ctrl keys).
+partial modifier_keys
+xkb_symbols "ctrl_win" {
+ key <LWIN> { [ Control_L ] };
+ key <RWIN> { [ Control_R ] };
+ modifier_map Control { <LWIN>, <RWIN> };
+};
+
+// Ctrl is mapped to the Alt-keys, Alt is mapped to the Win-keys, Win is mapped to the Ctrl-keys.
+partial modifier_keys
+xkb_symbols "ctrl_alt_win" {
+ key <LALT> { [ Control_L, Control_L ] };
+ key <RALT> { type[Group1] = "TWO_LEVEL",
+ symbols[Group1] = [ Control_R, Control_R ] };
+ key <LWIN> { [ Alt_L, Meta_L ] };
+ key <RWIN> { [ Alt_R, Meta_R ] };
+ modifier_map Control { <RALT>, <LALT> };
+ modifier_map Mod1 { <LWIN>, <RWIN> };
+};
+
+
+partial modifier_keys
+xkb_symbols "meta_win" {
+ key <LALT> { [ Alt_L, Alt_L ] };
+ key <RALT> { type[Group1] = "TWO_LEVEL",
+ symbols[Group1] = [ Alt_R, Alt_R ] };
+ key <LWIN> { [ Meta_L ] };
+ key <RWIN> { [ Meta_R ] };
+ modifier_map Mod1 { Alt_L, Alt_R };
+ modifier_map Mod4 { <META>, Meta_L, Meta_R };
+};
+
+partial modifier_keys
+xkb_symbols "left_meta_win" {
+ key <LALT> { [ Alt_L, Alt_L ] };
+ key <LWIN> { [ Meta_L ] };
+ modifier_map Mod1 { Alt_L };
+ modifier_map Mod4 { <META>, Meta_L };
+};
+
+partial modifier_keys
+xkb_symbols "hyper_win" {
+ key <LWIN> { [ Hyper_L ] };
+ key <RWIN> { [ Hyper_R ] };
+ modifier_map Mod4 { Hyper_L, Hyper_R };
+};
+
+// Use Menu for the menu key
+partial modifier_keys
+xkb_symbols "menu" {
+ key <MENU> { [ Menu ] };
+};
+
+// Layout for Tux key caps with additional right Alt key
+partial modifier_keys
+xkb_symbols "alt_super_win" {
+ key <LALT> { [ Alt_L, Meta_L ] };
+ key <RWIN> { [ Alt_R, Meta_R ] };
+ key <LWIN> { [ Super_L ] };
+ key <MENU> { [ Super_R ] };
+ modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
+ modifier_map Mod4 { Super_L, Super_R };
+};
+
+partial modifier_keys
+xkb_symbols "swap_lalt_lwin" {
+ key <LALT> { type[Group1] = "ONE_LEVEL",
+ symbols[Group1] = [ Super_L ] };
+ key <LWIN> { [ Alt_L, Meta_L ] };
+};
--- /dev/null
+default partial
+xkb_symbols "fr" {
+ name[Group1] = "French (Canada)";
+
+ key <TLDE> { [ numbersign, bar, backslash ] };
+ key <AE01> { [ 1, exclam, plusminus ] };
+ key <AE02> { [ 2, quotedbl, at ] };
+ key <AE03> { [ 3, slash, sterling ] };
+ key <AE04> { [ 4, dollar, cent ] };
+ key <AE05> { [ 5, percent, currency ] };
+ key <AE06> { [ 6, question, notsign ] };
+ key <AE07> { [ 7, ampersand, brokenbar ] };
+ key <AE08> { [ 8, asterisk, twosuperior ] };
+ key <AE09> { [ 9, parenleft, threesuperior ] };
+ key <AE10> { [ 0, parenright, onequarter ] };
+ key <AE11> { [ minus, underscore, onehalf ] };
+ key <AE12> { [ equal, plus, threequarters ] };
+
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E ] };
+ key <AD04> { [ r, R ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ y, Y ] };
+ key <AD07> { [ u, U ] };
+ key <AD08> { [ i, I ] };
+ key <AD09> { [ o, O, section ] };
+ key <AD10> { [ p, P, paragraph ] };
+ key <AD11> { [dead_circumflex, dead_circumflex, bracketleft ] };
+ key <AD12> { [ dead_cedilla, dead_diaeresis, bracketright ] };
+
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ s, S ] };
+ key <AC03> { [ d, D ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ j, J ] };
+ key <AC08> { [ k, K ] };
+ key <AC09> { [ l, L ] };
+ key <AC10> { [ semicolon, colon, asciitilde ] };
+ key <AC11> { [dead_grave, dead_grave, braceleft ] };
+ key <BKSL> { [ less, greater, braceright ] };
+
+ key <LSGT> { [guillemotleft, guillemotright, degree] };
+ key <AB01> { [ z, Z ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ c, C ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ b, B ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ m, M, mu ] };
+ key <AB08> { [ comma, apostrophe, macron ] };
+ key <AB09> { [ period, period, hyphen ] };
+ key <AB10> { [ eacute, Eacute, dead_acute ] };
+
+ key <SPCE> { [ space, space, nobreakspace ] };
+
+ include "level3(ralt_switch)"
+};
+
+xkb_symbols "fr-dvorak" {
+ name[Group1] = "French (Canada, Dvorak)";
+
+ key <TLDE> { [ numbersign, bar, backslash ] };
+ key <AE01> { [ 1, exclam, plusminus ] };
+ key <AE02> { [ 2, quotedbl, at ] };
+ key <AE03> { [ 3, slash, sterling ] };
+ key <AE04> { [ 4, dollar, cent ] };
+ key <AE05> { [ 5, percent, currency ] };
+ key <AE06> { [ 6, question, notsign ] };
+ key <AE07> { [ 7, ampersand, brokenbar ] };
+ key <AE08> { [ 8, asterisk, twosuperior ] };
+ key <AE09> { [ 9, parenleft, threesuperior ] };
+ key <AE10> { [ 0, parenright, onequarter ] };
+ key <AE11> { [dead_circumflex, dead_circumflex, bracketleft ] };
+ key <AE12> { [ dead_cedilla, dead_diaeresis, bracketright ] };
+
+ key <AD01> { [dead_grave, dead_grave, braceleft ] };
+ key <AD02> { [ comma, apostrophe, macron ] };
+ key <AD03> { [ period, period, hyphen ] };
+ key <AD04> { [ p, P, paragraph ] };
+ 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> { [ eacute, Eacute, dead_acute ] };
+ key <AD12> { [ equal, plus, threequarters ] };
+
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ o, O, section ] };
+ 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, onehalf ] };
+ key <BKSL> { [ less, greater, braceright ] };
+
+ key <LSGT> { [guillemotleft, guillemotright, degree] };
+ key <AB01> { [ semicolon, colon, asciitilde ] };
+ key <AB02> { [ q, Q ] };
+ key <AB03> { [ j, J ] };
+ key <AB04> { [ k, K ] };
+ key <AB05> { [ x, X ] };
+ key <AB06> { [ b, B ] };
+ key <AB07> { [ m, M, mu ] };
+ key <AB08> { [ w, W ] };
+ key <AB09> { [ v, V ] };
+ key <AB10> { [ z, Z ] };
+
+ key <SPCE> { [ space, space, nobreakspace ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial
+xkb_symbols "fr-legacy" {
+
+ name[Group1] = "French (Canada, legacy)";
+
+ include "ca(fr)"
+
+ key <TLDE> { [ degree, degree, notsign ] };
+ key <AE01> { [ 1, exclam, onesuperior ] };
+
+ key <AE03> { [ 3, numbersign, threesuperior ] };
+ key <AE04> { [ 4, dollar, onequarter ] };
+ key <AE05> { [ 5, percent, onehalf ] };
+ key <AE06> { [ 6, question, threequarters ] };
+ key <AE07> { [ 7, ampersand, braceleft ] };
+ key <AE08> { [ 8, asterisk, bracketleft ] };
+ key <AE09> { [ 9, parenleft, bracketright, plusminus ] };
+ key <AE10> { [ 0, parenright, braceright ] };
+ key <AE11> { [ minus, underscore, bar, questiondown] };
+ key <AE12> { [ equal, plus, dead_cedilla ] };
+
+ key <AD04> { [ r, R, paragraph, registered ] };
+ key <AD06> { [ y, Y, yen ] };
+ key <AD09> { [ o, O, oslash, Ooblique ] };
+ key <AD10> { [ p, P, thorn, THORN ] };
+ key <AD11> { [dead_circumflex, dead_circumflex, degree ] };
+ key <AD12> { [ ccedilla, Ccedilla, dead_tilde, dead_diaeresis ] };
+
+ key <AC01> { [ a, A, ae, AE ] };
+ key <AC02> { [ s, S, ssharp, section ] };
+ key <AC03> { [ d, D, eth, ETH ] };
+ key <AC04> { [ f, F, ordfeminine ] };
+ key <AC10> { [ semicolon, colon, dead_acute, dead_acute ] };
+ key <AC11> { [ egrave, Egrave ] };
+ key <BKSL> { [ agrave, Agrave, dead_grave ] };
+
+ key <LSGT> { [ ugrave, Ugrave, backslash, bar ] };
+ key <AB01> { [ z, Z, guillemotleft ] };
+ key <AB02> { [ x, X, guillemotright ] };
+ key <AB03> { [ c, C, cent, copyright ] };
+ key <AB07> { [ m, M, mu, masculine ] };
+ key <AB08> { [ comma, apostrophe, less ] };
+ key <AB09> { [ period, period, greater ] };
+ key <AB10> { [ eacute, Eacute, slash ] };
+};
+
+partial
+xkb_symbols "multi" {
+
+ name[Group1] = "Canadian Multilingual (first part)";
+
+ include "ca(fr)"
+
+ key <TLDE> { [ slash, backslash, bar ] };
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, question ] };
+ key <AE07> { [ 7, ampersand, braceleft ] };
+ key <AE08> { [ 8, asterisk, braceright ] };
+ key <AE09> { [ 9, parenleft, bracketleft ] };
+ key <AE10> { [ 0, parenright, bracketright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus, notsign ] };
+
+ key <AD09> { [ o, O ] };
+ key <AD10> { [ p, P ] };
+ key <AD11> { [dead_circumflex, dead_diaeresis, dead_grave ] };
+ key <AD12> { [ ccedilla, Ccedilla, asciitilde ] };
+
+ key <AC10> { [ semicolon, colon, degree ] };
+ key <AC11> { [ egrave, Egrave ] };
+ key <BKSL> { [ agrave, Agrave ] };
+
+ key <LSGT> { [ ugrave, Ugrave ] };
+ key <AB01> { [ z, Z, guillemotleft ] };
+ key <AB02> { [ x, X, guillemotright ] };
+ key <AB08> { [ comma, apostrophe, less ] };
+ key <AB09> { [ period, quotedbl, greater ] };
+ key <AB10> { [ eacute, Eacute ] };
+};
+
+partial
+xkb_symbols "multi-2gr" {
+
+ name[Group1] = "Canadian Multilingual (second part)";
+
+ key <TLDE> { [ NoSymbol, hyphen ] };
+ key <AE01> { [ onesuperior, exclamdown ] };
+ key <AE02> { [ twosuperior, NoSymbol ] };
+ key <AE03> { [ threesuperior, sterling ] };
+ key <AE04> { [ onequarter, currency ] };
+ key <AE05> { [ onehalf,threeeighths ] };
+ key <AE06> { [ threequarters, fiveeighths ] };
+ key <AE07> { [ NoSymbol,seveneighths ] };
+ key <AE08> { [ NoSymbol, trademark ] };
+ key <AE09> { [ NoSymbol, plusminus ] };
+
+ key <AE11> { [ NoSymbol, questiondown] };
+ key <AE12> { [ dead_cedilla, dead_ogonek ] };
+
+ key <AD01> { [ NoSymbol, Greek_OMEGA ] };
+ key <AD02> { [ lstroke, Lstroke ] };
+ key <AD03> { [ oe, OE ] };
+ key <AD04> { [ paragraph, registered ] };
+ key <AD05> { [ tslash, Tslash ] };
+ key <AD06> { [ leftarrow, yen ] };
+ key <AD07> { [ downarrow, uparrow ] };
+ key <AD08> { [ rightarrow, idotless ] };
+ key <AD09> { [ oslash, Ooblique ] };
+ key <AD10> { [ thorn, THORN ] };
+ key <AD11> { [ NoSymbol, dead_abovering ] };
+ key <AD12> { [ dead_tilde, dead_macron ] };
+
+ key <AC01> { [ ae, AE ] };
+ key <AC02> { [ ssharp, section ] };
+ key <AC03> { [ eth, ETH ] };
+ key <AC04> { [ NoSymbol, ordfeminine ] };
+ key <AC05> { [ eng, ENG ] };
+ key <AC06> { [ hstroke, Hstroke ] };
+ key <AC07> { [ U0133, U0132 ] };
+ key <AC08> { [ kra, NoSymbol ] };
+ key <AC09> { [ U0140, U013F ] };
+ key <AC10> { [ dead_acute, dead_doubleacute ] };
+ key <AC11> { [ NoSymbol, dead_caron ] };
+ key <BKSL> { [ NoSymbol, dead_breve ] };
+
+
+ key <LSGT> { [ NoSymbol, brokenbar ] };
+
+ key <AB03> { [ cent, copyright ] };
+ key <AB04> { [ leftdoublequotemark, leftsinglequotemark ] };
+ key <AB05> { [ rightdoublequotemark, rightsinglequotemark ] };
+ key <AB06> { [ U0149, U266A ] };
+ key <AB07> { [ mu, masculine ] };
+ key <AB08> { [ Greek_horizbar, multiply ] };
+ key <AB09> { [ periodcentered, division ] };
+ key <AB10> { [ NoSymbol, dead_abovedot ] };
+
+};
+
+// based on
+// Inuktitut keyboard for X11
+// written by Pablo Saratxaga <pablo@mandrakesoft.com>
+
+alphanumeric_keys
+xkb_symbols "ike" {
+
+ name[Group1]= "Inuktitut";
+
+ key <AE01> { [ 0x01001595, 1 ] };
+ key <AE02> { [ 0x01001449, 2 ] };
+ key <AE03> { [ 0x01001550, 3 ] };
+ key <AE04> { [ 0x01001483, 4 ] };
+ key <AE05> { [ 0x01001466, 5 ] };
+ key <AE06> { [ 0x01001585, 6 ] };
+ key <AE07> { [ 0x010014bb, 7 ] };
+ key <AE08> { [ 0x010014d0, 8 ] };
+ key <AE09> { [ 0x010014ea, 9 ] };
+ key <AE10> { [ 0x0100153e, 0 ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ 0x0100155d, equal ] };
+
+ key <AD01> { [ 0x0100158f, 0x0100148b ] };
+ key <AD02> { [ 0x01001403, 0x01001431 ] };
+ key <AD03> { [ 0x0100157f, 0x01001546 ] };
+ key <AD04> { [ 0x0100146d, 0x01001596 ] };
+ key <AD05> { [ 0x0100144e, 0x01001671 ] };
+ key <AD06> { [ 0x010014ef, 0x01001673 ] };
+ key <AD07> { [ 0x010014a5, 0x01001675 ] };
+ key <AD08> { [ 0x010014c2, 0x010015a4 ] };
+ key <AD09> { [ 0x010014d5, 0x010015a0 ] };
+ key <AD10> { [ 0x01001528, 0x010015a6 ] };
+ key <AD11> { [ 0x010014a1, 0x01001505 ] };
+ key <AD12> { [ dead_abovedot, 0x0100141e] };
+
+ key <AC01> { [ 0x01001591, 0x0100148d ] };
+ key <AC02> { [ 0x01001405, 0x01001433 ] };
+ key <AC03> { [ 0x01001581, 0x01001548 ] };
+ key <AC04> { [ 0x0100146f, 0x01001555 ] };
+ key <AC05> { [ 0x01001450, parenleft ] };
+ key <AC06> { [ 0x010014f1, parenright ] };
+ key <AC07> { [ 0x010014a7, 0x0100152a ] };
+ key <AC08> { [ 0x010014c4, 0x01001557 ] };
+ key <AC09> { [ 0x010014d7, 0x010015a2 ] };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ apostrophe, quotedbl ] };
+
+ key <AB01> { [ 0x01001593, 0x01001490 ] };
+ key <AB02> { [ 0x0100140a, 0x01001438 ] };
+ key <AB03> { [ 0x01001583, 0x0100154b ] };
+ key <AB04> { [ 0x01001472, question ] };
+ key <AB05> { [ 0x01001455, 0x0100157c ] };
+ key <AB06> { [ 0x010014f4, 0x010014c7 ] };
+ key <AB07> { [ 0x010014aa, 0x010014da ] };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ 0x0100152d, 0x01001559 ] };
+
+ key <TLDE> { [ 0x0100157b, 0x01001575 ] };
+ key <LSGT> { [ 0x01001579, 0x01001577 ] };
+ key <BKSL> { [ backslash, bar ] };
+
+// End alphanumeric section
+};
+
+partial
+xkb_symbols "multix" {
+
+ name[Group1] = "Canadian Multilingual";
+
+ key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC";
+ key <TLDE> { [ slash, backslash, bar, NoSymbol,
+ NoSymbol, hyphen ] };
+ key <AE01> { [ 1, exclam, plusminus, NoSymbol,
+ onesuperior, exclamdown ] };
+ key <AE02> { [ 2, at, at, NoSymbol,
+ twosuperior, NoSymbol ] };
+ key <AE03> { [ 3, numbersign, sterling, NoSymbol,
+ threesuperior, sterling ] };
+ key <AE04> { [ 4, dollar, cent, NoSymbol,
+ onequarter, currency ] };
+ key <AE05> { [ 5, percent, currency, NoSymbol,
+ onehalf, threeeighths ] };
+ key <AE06> { [ 6, question, notsign, NoSymbol,
+ threequarters, fiveeighths ] };
+ key <AE07> { [ 7, ampersand, braceleft, NoSymbol,
+ NoSymbol, seveneighths ] };
+ key <AE08> { [ 8, asterisk, braceright, NoSymbol,
+ NoSymbol, trademark ] };
+ key <AE09> { [ 9, parenleft, bracketleft, NoSymbol,
+ NoSymbol, plusminus ] };
+ key <AE10> { [ 0, parenright, bracketright, NoSymbol ] };
+ key <AE11> { [ minus, underscore, onehalf, NoSymbol,
+ NoSymbol, questiondown] };
+ key <AE12> { [ equal, plus, notsign, NoSymbol,
+ dead_cedilla, dead_ogonek ] };
+
+ key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC";
+ key <AD01> { [ q, Q, NoSymbol, NoSymbol,
+ NoSymbol, Greek_OMEGA ] };
+ key <AD02> { [ w, W, NoSymbol, NoSymbol,
+ lstroke, Lstroke ] };
+ key <AD03> { [ e, E, NoSymbol, NoSymbol,
+ oe, OE ] };
+ key <AD04> { [ r, R, NoSymbol, NoSymbol,
+ paragraph, registered ] };
+ key <AD05> { [ t, T, NoSymbol, NoSymbol,
+ tslash, Tslash ] };
+ key <AD06> { [ y, Y, NoSymbol, NoSymbol,
+ leftarrow, yen ] };
+ key <AD07> { [ u, U, NoSymbol, NoSymbol,
+ downarrow, uparrow ] };
+ key <AD08> { [ i, I, NoSymbol, NoSymbol,
+ rightarrow, idotless ] };
+ key <AD09> { [ o, O, section, NoSymbol,
+ oslash, Ooblique ] };
+ key <AD10> { [ p, P, paragraph, NoSymbol,
+ thorn, THORN ] };
+
+ key.type[group1]="EIGHT_LEVEL";
+ key <AD11> { [dead_circumflex, dead_diaeresis, dead_grave, NoSymbol,
+ NoSymbol, dead_abovering ] };
+
+ key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC";
+ key <AD12> { [ ccedilla, Ccedilla, asciitilde, NoSymbol,
+ dead_tilde, dead_macron ] };
+
+ key <AC01> { [ a, A, NoSymbol, NoSymbol,
+ ae, AE ] };
+ key <AC02> { [ s, S, NoSymbol, NoSymbol,
+ ssharp, section ] };
+ key <AC03> { [ d, D, NoSymbol, NoSymbol,
+ eth, ETH ] };
+ key <AC04> { [ f, F, NoSymbol, NoSymbol,
+ NoSymbol, ordfeminine ] };
+ key <AC05> { [ g, G, NoSymbol, NoSymbol,
+ eng, ENG ] };
+ key <AC06> { [ h, H, NoSymbol, NoSymbol,
+ hstroke, Hstroke ] };
+ key <AC07> { [ j, J, NoSymbol, NoSymbol,
+ U0133, U0132 ] };
+ key <AC08> { [ k, K, NoSymbol, NoSymbol,
+ kra, NoSymbol ] };
+ key <AC09> { [ l, L, NoSymbol, NoSymbol,
+ U0140, U013F ] };
+
+ key.type[group1]="EIGHT_LEVEL";
+ key <AC10> { [ semicolon, colon, degree, NoSymbol,
+ dead_acute, dead_doubleacute ] };
+
+ key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC";
+ key <AC11> { [ egrave, Egrave, braceleft, NoSymbol,
+ NoSymbol, dead_caron ] };
+ key <BKSL> { [ agrave, Agrave, braceright, NoSymbol,
+ NoSymbol, dead_breve ] };
+
+ key <LSGT> { [ ugrave, Ugrave, degree, NoSymbol,
+ NoSymbol, brokenbar ] };
+
+ key.type[group1]="FOUR_LEVEL_SEMIALPHABETIC";
+ key <AB01> { [ z, Z, guillemotleft, NoSymbol ] };
+ key <AB02> { [ x, X, guillemotright, NoSymbol ] };
+
+ key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC";
+ key <AB03> { [ c, C, NoSymbol, NoSymbol,
+ cent, copyright ] };
+ key <AB04> { [ v, V, NoSymbol, NoSymbol,
+ leftdoublequotemark, leftsinglequotemark ] };
+ key <AB05> { [ b, B, NoSymbol, NoSymbol,
+ rightdoublequotemark, rightsinglequotemark ] };
+ key <AB06> { [ n, N, NoSymbol, NoSymbol,
+ U0149, U266A ] };
+ key <AB07> { [ m, M, mu, NoSymbol,
+ mu, masculine ] };
+ key <AB08> { [ comma, apostrophe, less, NoSymbol,
+ Greek_horizbar, multiply ] };
+ key <AB09> { [ period, quotedbl, greater, NoSymbol,
+ periodcentered, division ] };
+ key <AB10> { [ eacute, Eacute, dead_acute, NoSymbol,
+ NoSymbol, dead_abovedot ] };
+
+ include "nbsp(level3s)"
+
+ modifier_map Control{ Control_L };
+
+ include "level3(ralt_switch)"
+ include "level5(rctrl_switch)"
+};
+
+// OLPC Section
+xkb_symbols "olpc" {
+
+ include "ca(fr)"
+
+ key <AE02> { [ 2, quotedbl, ograve, Ograve ] };
+ key <AE03> { [ 3, slash, at, VoidSymbol ] };
+
+ key <AD03> { [ e, E, EuroSign, VoidSymbol] };
+
+ key <AB09> { [ period, period, 0x1002010 ] };
+
+ key <I219> { [ guillemotleft, guillemotright, degree, VoidSymbol ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "eng" {
+ name[Group1] = "English (Canada)";
+ include "us(basic)"
+};
+
+// EXTRAS:
+
+partial alphanumeric_keys
+xkb_symbols "kut" {
+
+ //Ejective U0313 and compose accents are from shs layout
+ include "ca(shs)"
+
+ name[Group1]= "Kutenai";
+
+ // Alphanumeric section
+
+ // Alveolar Click
+ key <AD05> { [ t, T,U01C2 ,U01C2 ] };
+
+ //Cent sign
+ key <AB03> { [ c, C,U00A2,U00A2 ] };
+
+ //Mid dot
+ key <AB09> { [ period, greater,U00B7 ] };
+
+ //Glottal stop
+ key <AB10> { [ slash, question, U0294 ] };
+
+ //COMBINING COMMA ABOVE RIGHT
+ key <AC11> { [ apostrophe, quotedbl, U0315,U0315 ] };
+
+ //MODIFIER LETTER RIGHT HALF RING
+ key <AC10> { [ semicolon, colon,U02BE,U02BE ] };
+};
+
+// Secwepemctsin keyboard for X11
+// written by Neskie Manuel <neskiem@gmail.com>
+
+partial alphanumeric_keys
+xkb_symbols "shs" {
+
+ include "us"
+
+ name[Group1]= "Secwepemctsin";
+
+ //Using Dead key to get COMBINING COMMA ABOVE for ejectives on
+ //q, l, t, s, m, g, k, p, w, y, r
+ //XCompose key is used for the other accute and grave.
+
+ key <AB08> { [ comma, less, U0313 ] };
+ key <AC01> { [ a, A, aacute, Aacute ] };
+ key <AD03> { [ e, E, eacute, Eacute ] };
+ key <AD07> { [ u, U, uacute, Uacute ] };
+ key <AD08> { [ i, I, iacute, Iacute ] };
+ key <AD09> { [ o, O, oacute, Oacute ] };
+
+ include "level3(ralt_switch)"
+ include "compose(rctrl)"
+};
+
--- /dev/null
+default partial hidden modifier_keys
+xkb_symbols "capslock" {
+ replace key <CAPS> { [ Caps_Lock ] };
+ modifier_map Lock { Caps_Lock };
+};
+
+partial hidden modifier_keys
+xkb_symbols "shiftlock" {
+ replace key <CAPS> { [ Shift_Lock ] };
+ modifier_map Shift { Shift_Lock };
+};
+
+partial hidden modifier_keys
+xkb_symbols "grouplock" {
+ replace key <CAPS> { [ ISO_Next_Group, Caps_Lock ] };
+};
+
+partial hidden modifier_keys
+xkb_symbols "swapescape" {
+ key <CAPS> { [ Escape ] };
+ key <ESC> { [ Caps_Lock ] };
+};
+
+partial hidden modifier_keys
+xkb_symbols "groupshift" {
+ key <CAPS> {
+ type[Group1]="PC_ALT_LEVEL2",
+ [ Mode_switch, Caps_Lock ]
+ };
+};
+
+partial hidden modifier_keys
+xkb_symbols "escape" {
+ key <CAPS> { [ Escape ] };
+};
+
+partial hidden modifier_keys
+xkb_symbols "backspace" {
+ key <CAPS> { [ BackSpace ] };
+};
+
+partial hidden modifier_keys
+xkb_symbols "super" {
+ key <CAPS> { [ Super_L ] };
+ modifier_map Mod4 { <CAPS> };
+};
+
+partial hidden modifier_keys
+xkb_symbols "hyper" {
+ key <CAPS> { [ Hyper_L ] };
+ modifier_map Mod4 { <CAPS> };
+};
+
+partial hidden modifier_keys
+xkb_symbols "none" {
+ key <CAPS> { [ VoidSymbol ] };
+};
+
+partial hidden modifier_keys
+xkb_symbols "numlock" {
+ key <CAPS> { [ Num_Lock ] };
+};
+
+// This changes the modifier behavior of the <CAPS> key.
+// The keysym will be reset to Caps_Lock
+partial hidden modifier_keys
+xkb_symbols "ctrl_modifier" {
+ replace key <CAPS> {
+ type[Group1] = "ONE_LEVEL",
+ symbols[Group1] = [ Caps_Lock ],
+ actions[Group1] = [ SetMods(modifiers=Control) ]
+ };
+ modifier_map Control { <CAPS> };
+};
--- /dev/null
+partial modifier_keys
+xkb_symbols "ralt" {
+ key <RALT> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "lwin" {
+ key <LWIN> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "rwin" {
+ key <RWIN> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "menu" {
+ key <MENU> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "rctrl" {
+ key <RCTL> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "lctrl" {
+ key <LCTL> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "caps" {
+ key <CAPS> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "102" {
+ key <LSGT> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "paus" {
+ key <PAUS> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "prsc" {
+ key <PRSC> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
+
+partial modifier_keys
+xkb_symbols "sclk" {
+ key <SCLK> { type[Group1]="TWO_LEVEL", [ Multi_key, Multi_key ] };
+};
--- /dev/null
+// eliminate the caps lock key completely (replace with control)
+partial modifier_keys
+xkb_symbols "nocaps" {
+ replace key <CAPS> { [ Control_L, Control_L ] };
+ modifier_map Control { <CAPS>, <LCTL> };
+};
+
+// replace left control with Meta
+xkb_symbols "lctrl_meta" {
+ replace key <LCTL> { [ Meta_L ] };
+};
+
+// swap the caps lock key with the left control key
+partial modifier_keys
+xkb_symbols "swapcaps" {
+ replace key <CAPS> { [ Control_L ] };
+ replace key <LCTL> { [ Caps_Lock ] };
+};
+
+// moves the control key to the middle row and the caps lock
+// to the bottom row. Only works if the geometry or keycodes
+// file has defined appropriate aliases for the keys in question.
+partial modifier_keys
+xkb_symbols "ac_ctrl" {
+ replace key <AC00> { [ Control_L ] };
+ replace key <AA00> { [ Caps_Lock ] };
+};
+
+// Moves the control key to the bottom row and the caps lock
+// to the middle row. Only works if the geometry or keycodes
+// file has defined appropriate aliases for the keys in question.
+partial modifier_keys
+xkb_symbols "aa_ctrl" {
+ replace key <AA00> { [ Control_L ] };
+ replace key <AC00> { [ Caps_Lock ] };
+};
+
+// Right Ctrl works as Right Alt
+partial modifier_keys
+xkb_symbols "rctrl_ralt" {
+ key <RCTL> { symbols[Group1]= [ Alt_R ] };
+};
+
+// Menu works as Right Ctrl
+partial modifier_keys
+xkb_symbols "menu_rctrl" {
+ replace key <MENU> { [ Control_R, Control_R ] };
+ modifier_map Control { Control_L, <MENU> };
+};
+
+// right alt functions as another ctrl key
+partial modifier_keys
+xkb_symbols "ralt_rctrl" {
+ replace key <RALT> { type[Group1] = "TWO_LEVEL",
+ symbols[Group1] = [ Control_R, Control_R ] };
+ modifier_map Control { <RALT> };
+};
--- /dev/null
+// based on a keyboard map from an 'xkb/symbols/de' file
+
+default
+xkb_symbols "basic" {
+
+ include "latin(type4)"
+
+ name[Group1]="German";
+
+ key <AE02> { [ 2, quotedbl, twosuperior, oneeighth ] };
+ key <AE03> { [ 3, section, threesuperior, sterling ] };
+ key <AE04> { [ 4, dollar, onequarter, currency ] };
+
+ key <AE11> {type[Group1]="FOUR_LEVEL_PLUS_LOCK", symbols[Group1]=
+ [ssharp, question, backslash, questiondown, 0x1001E9E ]};
+// The unicode capital letter sharp s U+1E9E is transformed to "SS"
+// to match the rules for capitalizing sharp s in german.
+// If the capital sharp s is needed, delete the line
+// starting with <U1E9C> from /usr/share/X11/locale/iso8859-15/Compose.
+// If both doubled S and capital sharp s are needed, use 0x1001E9E
+// for capital sharp s and some free unicode codepoint like 0x1001E9C
+// for doubled S. Don`t forget to change this in the Compose file, too.
+
+ key <AE12> { [dead_acute, dead_grave, dead_cedilla, dead_ogonek ] };
+
+ key <AD03> { [ e, E, EuroSign, EuroSign ] };
+ key <AD06> { [ z, Z, leftarrow, yen ] };
+ key <AD11> { [udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] };
+ key <AD12> { [ plus, asterisk, dead_tilde, dead_macron ] };
+
+ key <AC02> { [ s, S, U017F, U1E9E ] };
+ key <AC07> { [ j, J, dead_belowdot, dead_abovedot ] };
+ key <AC10> { [odiaeresis, Odiaeresis, dead_doubleacute, dead_belowdot ] };
+ key <AC11> { [adiaeresis, Adiaeresis, dead_circumflex, dead_caron ] };
+ key <TLDE> { [dead_circumflex, degree, U2032, U2033 ] };
+
+ key <BKSL> { [numbersign, apostrophe, rightsinglequotemark, dead_breve ] };
+ key <AB01> { [ y, Y, guillemotright, U203A ] };
+ key <AB02> { [ x, X, guillemotleft, U2039 ] };
+ key <AB04> { [ v, V, doublelowquotemark, singlelowquotemark ] };
+ key <AB05> { [ b, B, leftdoublequotemark, leftsinglequotemark ] };
+ key <AB06> { [ n, N, rightdoublequotemark, rightsinglequotemark ] };
+ key <AB08> { [ comma, semicolon, periodcentered, multiply ] };
+ key <AB09> { [ period, colon, U2026, division ] };
+ key <AB10> { [ minus, underscore, endash, emdash ] };
+
+ include "kpdl(comma)"
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "nodeadkeys" {
+
+ // modify the basic German layout to not have any dead keys
+
+ include "de(basic)"
+ name[Group1]="German (eliminate dead keys)";
+
+ 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 <AC10> { [odiaeresis, Odiaeresis, doubleacute, doubleacute ] };
+ key <AC11> { [adiaeresis, Adiaeresis, asciicircum, asciicircum ] };
+ key <BKSL> { [numbersign, apostrophe, grave, grave ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "deadgraveacute" {
+ // modify the basic German layout to have only acute and grave
+ // as dead keys (tilde and circumflex are needed as spacing characters
+ // in many programming languages)
+
+ include "de(basic)"
+ name[Group1]="German (dead grave acute)";
+
+ key <TLDE> { [asciicircum, degree, notsign, notsign ] };
+ key <AD12> { [ plus, asterisk, asciitilde, dead_macron ] };
+ key <BKSL> { [numbersign, apostrophe, grave, grave ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "deadacute" {
+ // modify the basic 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 "de(deadgraveacute)"
+
+ name[Group1]="German (dead acute)";
+
+ key <AE12> { [dead_acute, grave, dead_cedilla, dead_ogonek ] };
+ key <BKSL> { [numbersign, apostrophe, dead_grave, dead_grave ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "ro" {
+ // add romanian-specific letters to the basic German layout.
+ // Romanian symbols are accessible with combination of <AltGr> and
+ // 'a', 's', 't', 'i', 'ä (ä)' (+<Shift> for capital letters).
+ // To view romanian-specific symbols, add "export LC_CTYPE=ro_RO"
+ // or "export LC_CTYPE=de_DE.utf8" to your .profile.
+
+ include "de(basic)"
+
+ name[Group1]="Romanian (Germany)";
+
+ key <AD05> { [ t, T, tcedilla, Tcedilla ] };
+ key <AD08> { [ i, I, icircumflex, Icircumflex ] };
+ key <AC01> { [ a, A, acircumflex, Acircumflex ] };
+ key <AC02> { [ s, S, scedilla, Scedilla ] };
+ key <AC11> { [ adiaeresis, Adiaeresis, abreve, Abreve ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "ro_nodeadkeys" {
+ // add romanian-specific letters to the German nodeadkeys layout.
+ // Read the comment for de_ro !
+
+ include "de(nodeadkeys)"
+ name[Group1]="Romanian (Germany, eliminate dead keys)";
+
+ key <AD05> { [ t, T, tcedilla, Tcedilla ] };
+ key <AD08> { [ i, I, icircumflex, Icircumflex ] };
+ key <AC01> { [ a, A, acircumflex, Acircumflex ] };
+ key <AC02> { [ s, S, scedilla, Scedilla ] };
+ key <AC11> { [ adiaeresis, Adiaeresis, abreve, Abreve ] };
+};
+
+// German Dvorak keymap by Thorsten Staerk (www.staerk.de/thorsten)
+// Have acute and grave as dead keys, tilde and circumflex alive as they are needed
+// in many programming languages.
+// to use this keymap, use a 105-key-keyboard and the command setxkbmap -model pc105 -layout dvorak -variant de
+// source: http://www-lehre.informatik.uni-osnabrueck.de/~rfreund/dvorak.php
+partial alphanumeric_keys
+xkb_symbols "dvorak" {
+ include "us(dvorak)"
+
+ name[Group1]="German (Dvorak)";
+
+ key <TLDE> { [ asciicircum, degree ] };
+
+ key <AE01> { [ 1, exclam, onesuperior ] };
+ key <AE02> { [ 2, quotedbl, twosuperior ] };
+ key <AE03> { [ 3, section, threesuperior ] };
+ key <AE04> { [ 4, dollar, bar ] };
+ key <AE05> { [ 5, percent, bar ] };
+ key <AE06> { [ 6, ampersand, brokenbar ] };
+ key <AE07> { [ 7, slash, braceleft ] };
+ key <AE08> { [ 8, parenleft, bracketleft ] };
+ key <AE09> { [ 9, parenright, bracketright ] };
+ key <AE10> { [ 0, equal, braceright ] };
+ key <AE11> { [ plus, asterisk, asciitilde ] };
+ key <AE12> { [ less, greater, dead_grave ] };
+
+ key <AD01> { [ udiaeresis, Udiaeresis, at ] };
+ key <AD02> { [ comma, semicolon, dead_diaeresis ] };
+ key <AD03> { [ period, colon ] };
+ key <AD08> { [ c, C, copyright, Cacute ] };
+ key <AD09> { [ t, T, trademark ] };
+ key <AD10> { [ z, Z, zabovedot, Zabovedot ] };
+ key <AD11> { [ question, ssharp ] };
+ key <AD12> { [ slash, backslash, dead_acute ] };
+
+ key <AC01> { [ a, A, at, aogonek ] };
+ key <AC02> { [ o, O, oacute, Oacute ] };
+ key <AC03> { [ e, E, EuroSign, eogonek ] };
+ key <AC04> { [ i, I ] };
+ key <AC05> { [ u, U ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ d, D ] };
+ key <AC08> { [ r, R, registered ] };
+ key <AC09> { [ n, N, nacute, Nacute ] };
+ key <AC10> { [ s, S, sacute, Sacute] };
+ key <AC11> { [ l, L, lstroke, Lstroke ] };
+
+ key <AB01> { [ odiaeresis, Odiaeresis ] };
+ key <AB02> { [ q, Q, at ] };
+ key <AB07> { [ m, M, mu ] };
+ key <AB10> { [ numbersign, apostrophe ] };
+
+ key <BKSL> { [ minus, underscore, hyphen, diaeresis] };
+
+ key <LSGT> { [ adiaeresis, Adiaeresis, bar ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "Sundeadkeys" {
+
+ // For naming consistency
+
+ include "de(basic)"
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "sundeadkeys" {
+
+ // For naming consistency
+
+ include "de(Sundeadkeys)"
+
+ name[Group1]="German (Sun dead keys)";
+};
+
+
+// German Neo-Layout Version 2
+// adopted 2004 by Hanno Behrens <Hanno.Behrens@gmx.de>
+// inspired by Dvorak/de-ergo http://www.goebel-consult.de/de-ergo/
+//
+// Authors:
+// Stephan Hilb <stephan at ehilb dot de>
+// <lucky at zankt dot net>
+// Benjamin Kellermann <Benjamin dot Kellermann at gmx dot Germany>
+// Erik Streb <mail at erikstreb dot de>
+// and many other contributors
+//
+// http://www.neo-layout.org
+//
+// $Revision$, $Date$
+
+partial alphanumeric_keys modifier_keys keypad_keys
+xkb_symbols "neo_base" {
+
+ // Levels in Neo jargon
+ // --------------------------------------------------------------
+ // Ebene 1: normal
+ // Ebene 2: Shift
+ // Ebene 3: Mod3
+ // Ebene 4: Mod4 (for marking something use Shift + Mod4)
+ // Ebene 5: Shift + Mod3
+ // Ebene 6: Mod3 + Mod4
+ // Compose (not a level): Mod3 + Tab
+ // Feststelltaste (Capslock): Shift + Shift
+ // Mod4-Lock: Mod4 + Mod4
+ // Mod4-Lock: Shift + Mod3 + Tab
+
+ // Legend
+ // ===============
+ // Levels in Xkbmap jargon to be found here in the definitions.
+ // These are the levels used, and Xorg's translations:
+ // --------------------------------------------------------------
+ // Xorg: Level1 Level2 Level3 Level4 Level5 Level6 Level7 Level8
+ // Neo: Ebene1 Ebene2 Ebene3 Ebene5 Ebene4 Pseudo-Ebene Ebene6 ???
+ // Keys (Neo): None Shift Mod3 Mod3 + Shift Mod4 Mod4 + Shift Mod3 + Mod4 Mod3 + Mod4 + Shift
+
+
+ // Alphanumeric-keys
+ // ===============
+ key.type[Group1] = "EIGHT_LEVEL";
+
+ // Tab as Multi_key (Compose)
+ // --------------------------------------------------------------
+ key <TAB> { [ Tab, ISO_Left_Tab, Multi_key, ISO_Level5_Lock, NoSymbol, NoSymbol, NoSymbol, ISO_Level5_Lock ] };
+
+
+ // Number row
+ // --------------------------------------------------------------
+ key <TLDE> { [ dead_circumflex, dead_caron, U21BB, U02DE, dead_abovedot, Pointer_EnableKeys, dead_belowdot, NoSymbol ] };
+
+ key <AE01> { [ 1, degree, onesuperior, onesubscript, ordfeminine, NoSymbol, notsign, NoSymbol ] };
+ key <AE02> { [ 2, section, twosuperior, twosubscript, masculine, NoSymbol, logicalor, NoSymbol ] };
+ key <AE03> { [ 3, U2113, threesuperior, threesubscript, numerosign, NoSymbol, logicaland, NoSymbol ] };
+ key <AE04> { [ 4, guillemotright, U203A, femalesymbol, NoSymbol, NoSymbol, U22A5, NoSymbol ] };
+ key <AE05> { [ 5, guillemotleft, U2039, malesymbol, periodcentered, NoSymbol, U2221, NoSymbol ] };
+ key <AE06> { [ 6, dollar, cent, U26A5, sterling, NoSymbol, U2225, NoSymbol ] };
+
+ key <AE07> { [ 7, EuroSign, yen, U03F0, currency, NoSymbol, rightarrow, NoSymbol ] };
+ key <AE08> { [ 8, doublelowquotemark, singlelowquotemark, U27E8, Tab, ISO_Left_Tab, U221E, NoSymbol ] };
+ key <AE09> { [ 9, leftdoublequotemark, leftsinglequotemark, U27E9, KP_Divide, KP_Divide, variation, NoSymbol ] };
+ key <AE10> { [ 0, rightdoublequotemark, rightsinglequotemark, zerosubscript, KP_Multiply, KP_Multiply, emptyset, NoSymbol ] };
+
+ key <AE11> { [ minus, emdash, NoSymbol, U2011, KP_Subtract, KP_Subtract, hyphen, NoSymbol ] };
+ key <AE12> { [ dead_grave, dead_cedilla, dead_abovering, dead_dasia, dead_diaeresis, NoSymbol, dead_macron, NoSymbol ] };
+
+ // Top row
+ // --------------------------------------------------------------
+ key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC";
+ key <AD01> { [ x, X, ellipsis, Greek_xi, Prior, Prior, Greek_XI, NoSymbol ] };
+ key <AD02> { [ v, V, underscore, NoSymbol, BackSpace, BackSpace, radical, NoSymbol ] };
+ key <AD03> { [ l, L, bracketleft, Greek_lambda, Up, Up, Greek_LAMBDA, NoSymbol ] };
+ key <AD04> { [ c, C, bracketright, Greek_chi, Delete, Delete, U2102, NoSymbol ] };
+ key <AD05> { [ w, W, asciicircum, Greek_omega, Next, Next, Greek_OMEGA, NoSymbol ] };
+
+ key <AD06> { [ k, K, exclam, Greek_kappa, exclamdown, NoSymbol, multiply, NoSymbol ] };
+ key <AD07> { [ h, H, less, Greek_psi, KP_7, KP_7, Greek_PSI, NoSymbol ] };
+ key <AD08> { [ g, G, greater, Greek_gamma, KP_8, KP_8, Greek_GAMMA, NoSymbol ] };
+ key <AD09> { [ f, F, equal, Greek_phi, KP_9, KP_9, Greek_PHI, NoSymbol ] };
+ key <AD10> { [ q, Q, ampersand, U03D5, KP_Add, KP_Add, U211A, NoSymbol ] };
+
+ key <AD11> { [ ssharp, U1E9E, U017F, Greek_finalsmallsigma, U2212, NoSymbol, jot, NoSymbol ] };
+
+ key.type[Group1] = "EIGHT_LEVEL";
+ key <AD12> { [ dead_acute, dead_tilde, dead_stroke, dead_psili, dead_doubleacute, NoSymbol, dead_breve, NoSymbol ] };
+
+ // Middle row
+ // --------------------------------------------------------------
+ key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC";
+ key <AC01> { [ u, U, backslash, NoSymbol, Home, Home, includedin, NoSymbol ] };
+ key <AC02> { [ i, I, slash, Greek_iota, Left, Left, integral, NoSymbol ] };
+ key <AC03> { [ a, A, braceleft, Greek_alpha, Down, Down, U2200, NoSymbol ] };
+ key <AC04> { [ e, E, braceright, Greek_epsilon, Right, Right, U2203, NoSymbol ] };
+ key <AC05> { [ o, O, asterisk, Greek_omicron, End, End, elementof, NoSymbol ] };
+
+ key <AC06> { [ s, S, question, Greek_sigma, questiondown, NoSymbol, Greek_SIGMA, NoSymbol ] };
+ key <AC07> { [ n, N, parenleft, Greek_nu, KP_4, KP_4, U2115, NoSymbol ] };
+ key <AC08> { [ r, R, parenright, Greek_rho, KP_5, KP_5, U211D, NoSymbol ] };
+ key <AC09> { [ t, T, minus, Greek_tau, KP_6, KP_6, partialderivative, NoSymbol ] };
+ key <AC10> { [ d, D, colon, Greek_delta, KP_Separator, comma, Greek_DELTA, NoSymbol ] };
+
+ key <AC11> { [ y, Y, at, Greek_upsilon, period, KP_Decimal, nabla, NoSymbol ] };
+
+ // Bottom row
+ // --------------------------------------------------------------
+ key <AB01> { [ udiaeresis, Udiaeresis, numbersign, NoSymbol, Escape, Escape, union, NoSymbol ] };
+ key <AB02> { [ odiaeresis, Odiaeresis, dollar, U03F5, Tab, Tab, intersection, NoSymbol ] };
+ key <AB03> { [ adiaeresis, Adiaeresis, bar, Greek_eta, Insert, Insert, U2135, NoSymbol ] };
+ key <AB04> { [ p, P, asciitilde, Greek_pi, Return, Return, Greek_PI, NoSymbol ] };
+ key <AB05> { [ z, Z, grave, Greek_zeta, Undo, Undo, U2124, NoSymbol ] };
+
+ key <AB06> { [ b, B, plus, Greek_beta, colon, NoSymbol, U21D0, NoSymbol ] };
+ key <AB07> { [ m, M, percent, Greek_mu, KP_1, KP_1, ifonlyif, NoSymbol ] };
+ key.type[Group1] = "EIGHT_LEVEL";
+ key <AB08> { [ comma, endash, quotedbl, U03F1, KP_2, KP_2, U21D2, NoSymbol ] };
+ key <AB09> { [ period, enfilledcircbullet, apostrophe, U03D1, KP_3, KP_3, U21A6, NoSymbol ] };
+ key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC";
+ key <AB10> { [ j, J, semicolon, Greek_theta, semicolon, NoSymbol, Greek_THETA, NoSymbol ] };
+ key.type[Group1] = "EIGHT_LEVEL";
+
+ // Space key
+ // --------------------------------------------------------------
+ key <SPCE> { [ space, space, space, nobreakspace, KP_0, KP_0, U202F, NoSymbol ] };
+
+
+ // Keypad-keys
+ // ===============
+
+ // The former Numlock key:
+ key <NMLK> { [ Tab, ISO_Left_Tab, equal, approxeq, notequal, Pointer_EnableKeys, identical, NoSymbol ] };
+
+ // Topmost row
+ // --------------------------------------------------------------
+ key <KPDV> { [ KP_Divide, KP_Divide, division, U2300, U2215, NoSymbol, U2223, NoSymbol ] };
+ key <KPMU> { [ KP_Multiply, KP_Multiply, U2219, U2299, multiply, NoSymbol, U2297, NoSymbol ] };
+ key <KPSU> { [ KP_Subtract, KP_Subtract, U2212, U2296, U2216, NoSymbol, U2238, NoSymbol ] };
+
+ // Top row
+ // --------------------------------------------------------------
+ key <KP7> { [ KP_7, U2714, U2195, U226A, KP_Home, KP_Home, upstile, NoSymbol ] };
+ key <KP8> { [ KP_8, U2718, uparrow, intersection, KP_Up, KP_Up, U22C2, NoSymbol ] };
+ key <KP9> { [ KP_9, dagger, U20D7, U226B, KP_Prior, KP_Prior, U2309, NoSymbol ] };
+ key <KPAD> { [ KP_Add, KP_Add, plusminus, U2295, U2213, NoSymbol, U2214, NoSymbol ] };
+
+ // Middle row
+ // --------------------------------------------------------------
+ key <KP4> { [ KP_4, club, leftarrow, includedin, KP_Left, KP_Left, U2286, NoSymbol ] };
+ key <KP5> { [ KP_5, EuroSign, colon, U22B6, KP_Begin, KP_Begin, U22B7, NoSymbol ] };
+ key <KP6> { [ KP_6, U2023, rightarrow, includes, KP_Right, KP_Right, U2287, NoSymbol ] };
+
+ // Bottom row
+ // --------------------------------------------------------------
+ key <KP1> { [ KP_1, diamond, U2194, lessthanequal, KP_End, KP_End, downstile, NoSymbol ] };
+ key <KP2> { [ KP_2, heart, downarrow, union, KP_Down, KP_Down, U22C3, NoSymbol ] };
+ key <KP3> { [ KP_3, U2660, U21CC, greaterthanequal, KP_Next, KP_Next, U230B, NoSymbol ] };
+ key <KPEN> { [ KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, KP_Enter, NoSymbol ] };
+ key <KPEQ> { [ KP_Equal, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol ] };
+
+ // Bottommost row
+ // --------------------------------------------------------------
+ key <KP0> { [ KP_0, U2423, percent, U2030, KP_Insert, KP_Insert, U25A1, NoSymbol ] };
+ key <KPDL> { [ KP_Separator, period, comma, minutes, KP_Delete, KP_Delete, seconds, NoSymbol ] };
+};
+
+partial alphanumeric_keys modifier_keys keypad_keys
+xkb_symbols "neo" {
+
+ include "de(neo_base)"
+
+ name[Group1]= "German (Neo 2)";
+
+ include "shift(both_capslock)"
+ include "level3(caps_switch)"
+ include "level3(bksl_switch)"
+ include "level5(lsgt_switch)"
+ include "level5(ralt_switch)"
+};
+
+// Copied from macintosh_vndr/de
+// olh@suse.de very close to MacOS map
+
+partial alphanumeric_keys
+xkb_symbols "mac" {
+
+ include "de"
+ name[Group1]= "German (Macintosh)";
+
+ // Alphanumeric section
+ key <AE01> { [ 1, exclam, exclamdown, at ] };
+ key <AE05> { [ 5, percent, bracketleft ] };
+ key <AE06> { [ 6, ampersand, bracketright ] };
+ key <AE07> { [ 7, slash, bar, backslash ] };
+ key <AE08> { [ 8, parenleft, braceleft, asciitilde ] };
+ key <AE09> { [ 9, parenright, braceright ] };
+ key <AD01> { [ q, Q, guillemotleft, guillemotright ] };
+ key <AD04> { [ r, R, registered ] };
+ key <AD07> { [ u, U, diaeresis, Aacute ] };
+ key <AD08> { [ i, I, slash, Ucircumflex ] };
+ key <AD11> { [ udiaeresis, Udiaeresis, periodcentered, degree ] };
+ key <AD12> { [ plus, asterisk, asciitilde ] };
+ key <AC01> { [ a, A, aring, Aring ] };
+ key <AC05> { [ g, G, copyright ] };
+ key <AC06> { [ h, H, ordfeminine ] };
+ key <AC09> { [ l, L, at ] };
+ key <AC10> { [ odiaeresis, Odiaeresis, dead_acute ] };
+ key <AB06> { [ n, N, asciitilde ] };
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "mac_nodeadkeys" {
+ // modify the standard German mac layout to not have any dead keys
+ include "de(mac)"
+ name[Group1]= "German (Macintosh, eliminate dead keys)";
+ key <AE04> { [ 4, dollar, onequarter, currency ] };
+
+ key <TLDE> { [ asciicircum, degree, notsign ] };
+ key <AE12> { [ acute, grave, cedilla ] };
+ key <AD11> { [ udiaeresis, Udiaeresis, diaeresis ] };
+ key <AD12> { [ plus, asterisk, asciitilde, macron ] };
+ key <AC10> { [ odiaeresis, Odiaeresis, acute ] };
+ key <AC11> { [ adiaeresis, Adiaeresis, asciicircum ] };
+
+ key <BKSL> { [ numbersign, apostrophe, grave ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "dsb"
+{
+ name[Group1] = "Lower Sorbian";
+ include "latin(basic)"
+ include "level3(ralt_switch)"
+ include "kpdl(comma)"
+ key <AB01> { [ z, Z, zcaron, Zcaron ] };
+ key <AB02> { [ x, X, zacute, Zacute ] };
+ key <AB03> { [ c, C, cacute, Cacute ] };
+ key <AB04> { [ v, V, ccaron, Ccaron ] };
+ key <AB06> { [ n, N, nacute, Nacute ] };
+ key <AC02> { [ s, S, sacute, Sacute ] };
+ key <AC03> { [ d, D, scaron, Scaron ] };
+ key <AC04> { [ f, F ] };
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E, ecaron, Ecaron ] };
+ key <AD04> { [ r, R, racute, Racute ] };
+ key <AD05> { [ t, T, U20B5, EuroSign ] };
+ key <AD09> { [ o, O, oacute, Oacute ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "dsb_qwertz"
+{
+ name[Group1] = "Lower Sorbian (qwertz)";
+ include "latin(basic)"
+ include "level3(ralt_switch)"
+ include "kpdl(comma)"
+ key <AB01> { [ y, Y ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ c, C, cacute, Cacute ] };
+ key <AB04> { [ v, V, ccaron, Ccaron ] };
+ key <AB06> { [ n, N, nacute, Nacute ] };
+ key <AC02> { [ s, S, sacute, Sacute ] };
+ key <AC03> { [ d, D, scaron, Scaron ] };
+ key <AC04> { [ f, F ] };
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E, ecaron, Ecaron ] };
+ key <AD04> { [ r, R, racute, Racute ] };
+ key <AD05> { [ t, T, U20B5, EuroSign ] };
+ key <AD06> { [ z, Z, zcaron, Zcaron ] };
+ key <AD07> { [ u, U, zacute, Zacute ] };
+ key <AD09> { [ o, O, oacute, Oacute ] };
+};
+
+// layout for Russian letters on an german keyboard
+// based on US-RU layout by Ivan Popov <pin@konvalo.org> 2005-07-17
+// adopted for german layout by Alexey Fisher <bug-track@fisher-privat.net> 2010-08-19
+
+partial alphanumeric_keys
+xkb_symbols "ru" {
+
+ include "de(basic)"
+
+ name[Group1]= "Russian (Germany, phonetic)";
+
+key.type[group1]="FOUR_LEVEL_ALPHABETIC";
+
+ key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
+ key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <LatW> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <TLDE> { [ Cyrillic_io, Cyrillic_IO, asciitilde ] };
+ key <LatX> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <LatI> { [ Cyrillic_i, Cyrillic_I ] };
+ key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
+ key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
+ key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <LatH> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <AC10> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA, plus, asterisk ] };
+ key <AE12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
+ key <LatY> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <LatV> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+ key <AC11> { [ Cyrillic_e, Cyrillic_E ] };
+ key <BKSL> { [ Cyrillic_yu, Cyrillic_YU, numbersign, apostrophe ] };
+ key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "htcdream" {
+ include "inet(htcdream)"
+
+ name[Group1]= "German";
+
+ //second row
+ key <AD01> { [ q, Q, Tab, Tab ] };
+ key <AD02> { [ w, W, grave, grave ] };
+ key <AD03> { [ e, E, EuroSign, EuroSign ] };
+ key <AD04> { [ r, R, underscore, underscore ] };
+ key <AD05> { [ t, T, sterling, sterling] };
+ key <AD06> { [ z, Z, division, division ] };
+ key <AD07> { [ u, U, udiaeresis, udiaeresis ] };
+ key <AD08> { [ i, I, minus, minus ] };
+ key <AD09> { [ o, O, odiaeresis, odiaeresis ] };
+ key <AD10> { [ p, P, equal, equal ] };
+
+ //third row
+ key <AC01> { [ a, A, adiaeresis, adiaeresis ] };
+ key <AC02> { [ s, S, ssharp, ssharp] };
+ key <AC03> { [ d ,D, backslash, backslash ] };
+ key <AC04> { [ f, F, braceleft, braceleft ] };
+ key <AC05> { [ g, G, braceright, braceright ] };
+ key <AC06> { [ h, H, multiply, multiply ] };
+ key <AC07> { [ j, J, colon, colon ] };
+ key <AC08> { [ k, K, plus, plus ] };
+ key <AC09> { [ l, L, apostrophe, apostrophe ] };
+
+ //forth row
+ key <AB01> { [ y, Y, bar, bar ] };
+ key <AB02> { [ x, X, bracketleft, bracketleft ] };
+ key <AB03> { [ c, C, bracketright, bracketright ] };
+ key <AB04> { [ v, V, less, less ] };
+ key <AB05> { [ b, B, greater, greater ] };
+ key <AB06> { [ n, N, semicolon, semicolon ] };
+ key <AB07> { [ m, M, quotedbl, quotedbl ] };
+ key <AB08> { [ comma, comma, question, question ] };
+
+ //fifth row
+ key <FK15> { [ at, at, asciitilde, asciitilde ] };
+
+ include "level3(alt_switch)"
+};
+
+// EXTRAS:
+
+partial alphanumeric_keys
+xkb_symbols "us" {
+ include "us"
+
+ name[Group1]="German (US keyboard with German letters)";
+
+ key <AC01> { [ a, A, adiaeresis, Adiaeresis ] };
+ key <AC02> { [ s, S, ssharp, ssharp ] };
+ key <AC10> { [ semicolon, colon, odiaeresis, Odiaeresis ] };
+ key <AC11> { [ apostrophe, quotedbl, adiaeresis, Adiaeresis ] };
+ key <AD03> { [ e, E, EuroSign, EuroSign ] };
+ key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
+ key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };
+ key <AD11> { [ bracketleft, braceleft, udiaeresis, Udiaeresis ] };
+ key <AE03> { [ 3, numbersign, section, section ] };
+ key <AE11> { [ minus, underscore, ssharp, question ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "hu" {
+
+ // modify the basic German layout to not have any dead keys and add Hungarian letters
+
+ include "de(basic)"
+ name[Group1]="German (with Hungarian letters and no dead keys)";
+
+ key <AB01> { [ y, Y, guillemotleft, less ] };
+ key <AC10> { [odiaeresis, Odiaeresis, eacute, Eacute ] };
+ key <AC11> { [adiaeresis, Adiaeresis, aacute, Aacute] };
+ key <AD03> { [ e, E, EuroSign, EuroSign ] };
+ key <AD06> { [ z, Z, leftarrow, yen ] };
+ key <AD07> { [ u, U, uacute, Uacute ] };
+ key <AD08> { [ i, I, iacute, Iacute ] };
+ key <AD09> { [ o, O, odoubleacute,Odoubleacute ] };
+ key <AD11> { [udiaeresis, Udiaeresis, udoubleacute,Udoubleacute ] };
+ key <AD12> { [ plus, asterisk, asciitilde, macron ] };
+ key <AE12> { [ acute, grave, oacute, Oacute ] };
+ key <BKSL> { [numbersign, apostrophe, grave, grave ] };
+ key <TLDE> { [asciicircum, degree, notsign, notsign ] };
+
+
+};
--- /dev/null
+// Most keyboards have the EuroSign engraved on the E key
+partial
+xkb_symbols "e" {
+ key <AD03> { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] };
+};
+
+// Many Apple keyboards have the EuroSign engraved on the 2 key
+partial
+xkb_symbols "2" {
+ key <AE02> { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] };
+};
+
+// Some keyboards have the EuroSign engraved on the 4 key
+partial
+xkb_symbols "4" {
+ key <AE04> { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] };
+};
+
+// Many keyboards have the EuroSign engraved on the 5 key
+partial
+xkb_symbols "5" {
+ key <AE05> { [ NoSymbol, NoSymbol, EuroSign, NoSymbol ] };
+};
--- /dev/null
+// using the group(switch) map, the right alt key temporarily chooses
+// the second keyboard group (until it is released).
+//
+partial modifier_keys
+xkb_symbols "switch" {
+ key <RALT> {
+ symbols[Group1]= [ Mode_switch, Multi_key ],
+ virtualMods= AltGr
+ };
+};
+
+// using the group(lswitch) map, the left alt key temporarily chooses
+// the second keyboard group (until it is released).
+//
+partial modifier_keys
+xkb_symbols "lswitch" {
+ key <LALT> {
+ symbols[Group1]= [ Mode_switch, Multi_key ],
+ virtualMods= AltGr
+ };
+};
+
+
+// using the group(win_switch) map, both Windows'logo keys temporarily
+// choose the second keyboard group (until release). If you use this
+// map, you would declare you keyboard as pc101 or pc102 instead of
+// pc104 or pc105.
+partial modifier_keys
+xkb_symbols "win_switch" {
+ include "group(lwin_switch)"
+ include "group(rwin_switch)"
+};
+
+// using the group(lwin_switch) map, the left Windows' logo key
+// temporarily chooses the second keyboard group (until it is
+// released). If you use this map, you would declare you keyboard as
+// pc101 or pc102 instead of pc104 or pc105.
+partial modifier_keys
+xkb_symbols "lwin_switch" {
+ key <LWIN> {
+ symbols[Group1] = [ Mode_switch, Multi_key ],
+ virtualMods= AltGr
+ };
+};
+
+// using the group(rwin_switch) map, the right Windows' logo key
+// temporarily chooses the second keyboard group (until it is
+// released). If you use this map, you would declare you keyboard as
+// pc101 or pc102 instead of pc104 or pc105.
+partial modifier_keys
+xkb_symbols "rwin_switch" {
+ key <RWIN> {
+ symbols[Group1] = [ Mode_switch, Multi_key ],
+ virtualMods= AltGr
+ };
+};
+
+// Right Ctrl key temporary chooses the second keyboard group.
+// Needed mainly for Canadian keyboard
+partial modifier_keys
+xkb_symbols "rctrl_switch" {
+ key <RCTL> {
+ symbols[Group1]= [ Mode_switch ]
+ };
+};
+
+// using the group(toggle) map, pressing the right alt key switches to
+// the next sequential group (until the next explicit group change).
+partial modifier_keys
+xkb_symbols "toggle" {
+ virtual_modifiers AltGr;
+ key <RALT> {
+ symbols[Group1]= [ ISO_Next_Group ],
+ virtualMods= AltGr
+ };
+};
+
+// using the group(shifts_toggle) map, pressing both shift keys together
+// locks the next or previous sequential keyboard group
+// (depending on which shift is pressed first - right or left,
+// correspongingly)
+partial modifier_keys
+xkb_symbols "shifts_toggle" {
+ key <LFSH> { [ Shift_L, ISO_Prev_Group ] };
+ key <RTSH> { [ Shift_R, ISO_Next_Group ] };
+};
+
+// using the group(shift_caps_toggle) map, pressing:
+// Shift+Caps Lock toggles group
+partial modifier_keys
+xkb_symbols "shift_caps_toggle" {
+ key <CAPS> { [ Caps_Lock, ISO_Next_Group ] };
+};
+
+// using the group(shift_caps_switch) map, pressing:
+// Caps Lock selects the first group
+// Shift+Caps Lock selects the last group
+partial modifier_keys
+xkb_symbols "shift_caps_switch" {
+ key <CAPS> { [ ISO_First_Group, ISO_Last_Group ] };
+};
+
+// using the group(win_menu_switch) map, pressing:
+// LWIN selects the first group
+// RWIN or MENU selects the last group
+partial modifier_keys
+xkb_symbols "win_menu_switch" {
+ virtual_modifiers AltGr;
+ key <LWIN> {
+ virtualMods= AltGr,
+ symbols[Group1] = [ ISO_First_Group ]
+ };
+ key <MENU> {
+ virtualMods= AltGr,
+ symbols[Group1] = [ ISO_Last_Group ]
+ };
+ key <RWIN> {
+ virtualMods= AltGr,
+ symbols[Group1] = [ ISO_Last_Group ]
+ };
+};
+
+// using the group(lctrl_rctrl_switch) map, pressing:
+// Left Control selects the first group
+// Right Control selects the last group
+partial modifier_keys
+xkb_symbols "lctrl_rctrl_switch" {
+ virtual_modifiers AltGr;
+ key <LCTL> {
+ virtualMods= AltGr,
+ symbols[Group1] = [ ISO_First_Group ]
+ };
+ key <RCTL> {
+ virtualMods= AltGr,
+ symbols[Group1] = [ ISO_Last_Group ]
+ };
+};
+
+
+//
+// CTRL-SHIFT toggle section
+//
+partial modifier_keys
+xkb_symbols "lctrl_lshift_toggle" {
+ key <LFSH> {
+ type[Group1]="PC_CONTROL_LEVEL2",
+ symbols[Group1]= [ Shift_L, ISO_Next_Group ]
+ };
+ key <LCTL> { [ Control_L, ISO_Next_Group ] };
+};
+
+partial modifier_keys
+xkb_symbols "lctrl_lshift_toggle_rev" {
+ key <LFSH> {
+ type[Group1]="PC_CONTROL_LEVEL2",
+ symbols[Group1]= [ Shift_L, ISO_Prev_Group ]
+ };
+ key <LCTL> { [ Control_L, ISO_Prev_Group ] };
+};
+
+partial modifier_keys
+xkb_symbols "rctrl_rshift_toggle" {
+ key <RTSH> {
+ type[Group1]="PC_CONTROL_LEVEL2",
+ symbols[Group1]= [ Shift_R, ISO_Next_Group ]
+ };
+ key <RCTL> { [ Control_R, ISO_Next_Group ] };
+};
+
+partial modifier_keys
+xkb_symbols "ctrl_shift_toggle" {
+ include "group(lctrl_lshift_toggle)"
+ include "group(rctrl_rshift_toggle)"
+};
+
+partial modifier_keys
+xkb_symbols "ctrl_shift_toggle_bidir" {
+ include "group(lctrl_lshift_toggle_rev)"
+ include "group(rctrl_rshift_toggle)"
+};
+
+
+//
+// CTRL-ALT toggle section
+//
+partial modifier_keys
+xkb_symbols "lctrl_lalt_toggle" {
+ virtual_modifiers Alt;
+ key <LALT> {
+ type[Group1]="PC_CONTROL_LEVEL2",
+ symbols[Group1]= [ NoSymbol, ISO_Next_Group ],
+ virtualMods= Alt
+ };
+ key <LCTL> {
+ type[Group1]="PC_ALT_LEVEL2",
+ symbols[Group1]= [ Control_L, ISO_Next_Group ]
+ };
+};
+
+partial modifier_keys
+xkb_symbols "lctrl_lalt_toggle_rev" {
+ virtual_modifiers Alt;
+ key <LALT> {
+ type[Group1]="PC_CONTROL_LEVEL2",
+ symbols[Group1]= [ NoSymbol, ISO_Prev_Group ],
+ virtualMods= Alt
+ };
+ key <LCTL> {
+ type[Group1]="PC_ALT_LEVEL2",
+ symbols[Group1]= [ Control_L, ISO_Prev_Group ]
+ };
+};
+
+partial modifier_keys
+xkb_symbols "rctrl_ralt_toggle" {
+ virtual_modifiers Alt;
+ key <RALT> {
+ type[Group1]="PC_CONTROL_LEVEL2",
+ symbols[Group1]= [ NoSymbol, ISO_Next_Group ],
+ virtualMods= Alt
+ };
+ key <RCTL> {
+ type[Group1]="PC_ALT_LEVEL2",
+ symbols[Group1]= [ Control_R, ISO_Next_Group ]
+ };
+};
+
+partial modifier_keys
+xkb_symbols "ctrl_alt_toggle" {
+ include "group(lctrl_lalt_toggle)"
+ include "group(rctrl_ralt_toggle)"
+};
+
+partial modifier_keys
+xkb_symbols "ctrl_alt_toggle_bidir" {
+ include "group(lctrl_lalt_toggle_rev)"
+ include "group(rctrl_ralt_toggle)"
+};
+
+
+//
+// ALT-SHIFT toggle section
+//
+partial modifier_keys
+xkb_symbols "lalt_lshift_toggle" {
+ virtual_modifiers Alt;
+ key <LALT> {
+ symbols[Group1]= [ NoSymbol, ISO_Next_Group ],
+ virtualMods= Alt
+ };
+ key <LFSH> {
+ type[Group1]="PC_ALT_LEVEL2",
+ symbols[Group1]= [ Shift_L, ISO_Next_Group ]
+ };
+};
+
+partial modifier_keys
+xkb_symbols "lalt_lshift_toggle_rev" {
+ virtual_modifiers Alt;
+ key <LALT> {
+ symbols[Group1]= [ NoSymbol, ISO_Prev_Group ],
+ virtualMods= Alt
+ };
+ key <LFSH> {
+ type[Group1]="PC_ALT_LEVEL2",
+ symbols[Group1]= [ Shift_L, ISO_Prev_Group ]
+ };
+};
+
+partial modifier_keys
+xkb_symbols "ralt_rshift_toggle" {
+ virtual_modifiers Alt;
+ key <RALT> {
+ symbols[Group1]= [ NoSymbol, ISO_Next_Group ],
+ virtualMods= Alt
+ };
+ key <RTSH> {
+ type[Group1]="PC_ALT_LEVEL2",
+ symbols[Group1]= [ Shift_R, ISO_Next_Group ]
+ };
+};
+
+partial modifier_keys
+xkb_symbols "alt_shift_toggle" {
+ include "group(lalt_lshift_toggle)"
+ include "group(ralt_rshift_toggle)"
+};
+
+partial modifier_keys
+xkb_symbols "alt_shift_toggle_bidir" {
+ include "group(lalt_lshift_toggle_rev)"
+ include "group(ralt_rshift_toggle)"
+};
+
+
+// using the group(menu_toggle) map, pressing:
+// Menu key toggles groups
+// Shift+Menu acts as Menu
+partial modifier_keys
+xkb_symbols "menu_toggle" {
+ key <MENU> { [ ISO_Next_Group, Menu ] };
+};
+
+// using the group(lwin_toggle) map, pressing the left Windows' logo key
+// toggles groups. If you use this map, you would declare you keyboard
+// as pc101 or pc102 instead of pc104 or pc105.
+partial modifier_keys
+xkb_symbols "lwin_toggle" {
+ virtual_modifiers AltGr;
+ key <LWIN> {
+ virtualMods= AltGr,
+ symbols[Group1] = [ ISO_Next_Group ]
+ };
+};
+
+// using the group(rwin_toggle) map, pressing the right Windows' logo key
+// toggles groups. If you use this map, you would declare you keyboard
+// as pc101 or pc102 instead of pc104 or pc105.
+partial modifier_keys
+xkb_symbols "rwin_toggle" {
+ virtual_modifiers AltGr;
+ key <RWIN> {
+ virtualMods= AltGr,
+ symbols[Group1] = [ ISO_Next_Group ]
+ };
+};
+
+// Both Ctrls pressed together toggle group
+partial modifier_keys
+xkb_symbols "ctrls_toggle" {
+ virtual_modifiers LControl, RControl;
+ key <LCTL> {
+ type[Group1]="PC_RCONTROL_LEVEL2",
+ symbols[Group1]= [ NoSymbol, ISO_Prev_Group ],
+ virtualMods= LControl
+ };
+ key <RCTL> {
+ type[Group1]="PC_LCONTROL_LEVEL2",
+ symbols[Group1]= [ NoSymbol, ISO_Next_Group ],
+ virtualMods= RControl
+ };
+};
+
+// Both Alts pressed together toggle group
+partial modifier_keys
+xkb_symbols "alts_toggle" {
+ virtual_modifiers LAlt, RAlt;
+ key <LALT> {
+ type[Group1]="PC_RALT_LEVEL2",
+ symbols[Group1]= [ NoSymbol, ISO_Prev_Group ],
+ virtualMods= LAlt
+ };
+ key <RALT> {
+ type[Group1]="PC_LALT_LEVEL2",
+ symbols[Group1]= [ NoSymbol, ISO_Next_Group ],
+ virtualMods= RAlt
+ };
+};
+
+// Left Shift key toggles group
+partial modifier_keys
+xkb_symbols "lshift_toggle" {
+ virtual_modifiers AltGr;
+ key <LFSH> {
+ symbols[Group1]= [ ISO_Next_Group ],
+ virtualMods= AltGr
+ };
+};
+
+// Right Shift key toggles group
+partial modifier_keys
+xkb_symbols "rshift_toggle" {
+ virtual_modifiers AltGr;
+ key <RTSH> {
+ symbols[Group1]= [ ISO_Next_Group ],
+ virtualMods= AltGr
+ };
+};
+
+// Left Alt key toggles group
+partial modifier_keys
+xkb_symbols "lalt_toggle" {
+ virtual_modifiers AltGr;
+ key <LALT> {
+ symbols[Group1]= [ ISO_Next_Group ],
+ virtualMods= AltGr
+ };
+};
+
+// Left Ctrl key toggles group
+partial modifier_keys
+xkb_symbols "lctrl_toggle" {
+ virtual_modifiers AltGr;
+ key <LCTL> {
+ symbols[Group1]= [ ISO_Next_Group ],
+ virtualMods= AltGr
+ };
+};
+
+// Right Ctrl key toggles group
+partial modifier_keys
+xkb_symbols "rctrl_toggle" {
+ virtual_modifiers AltGr;
+ key <RCTL> {
+ symbols[Group1]= [ ISO_Next_Group ],
+ virtualMods= AltGr
+ };
+};
+
+// using the group(alt_caps_toggle) map, pressing:
+// Alt+Caps Lock toggles group
+// Caps Lock toggles caps lock
+partial modifier_keys
+xkb_symbols "alt_caps_toggle" {
+ key <CAPS> {
+ type="PC_ALT_LEVEL2",
+ symbols[Group1]= [ Caps_Lock, ISO_Next_Group]
+ };
+};
+
+partial hidden modifier_keys
+xkb_symbols "olpc" {
+ key <I219> { [ ISO_Next_Group, ISO_Prev_Group ] };
+};
+
+partial modifier_keys
+xkb_symbols "alt_space_toggle" {
+ key <SPCE> {
+ type[Group1]="PC_ALT_LEVEL2",
+ symbols[Group1]= [ space, ISO_Next_Group ]
+ };
+};
+
+// using the group(sclk_toggle) map, pressing the Scroll Lock key
+// toggles groups.
+partial modifier_keys
+xkb_symbols "sclk_toggle" {
+ virtual_modifiers AltGr;
+ key <SCLK> {
+ virtualMods= AltGr,
+ symbols[Group1] = [ ISO_Next_Group ]
+ };
+};
+
+// Control_L+Win_L locks the first group (presumably Lat).
+// Control_R+Menu locks the second group (presumably Rus).
+partial modifier_keys
+xkb_symbols "lctrl_lwin_rctrl_menu" {
+ key <LWIN> {
+ type[ Group1 ] = "PC_CONTROL_LEVEL2",
+ symbols[ Group1 ] = [ Super_L, ISO_First_Group ]
+ };
+ key <MENU> {
+ type[ Group1 ] = "PC_CONTROL_LEVEL2",
+ symbols[ Group1 ] = [ Menu, ISO_Last_Group ]
+ };
+}; // lctrl_lwin_rctrl_menu
--- /dev/null
+// based on a keyboard map from an 'xkb/symbols/il' file
+
+// This is a partial implemetation of the Israeli standard SI-1452
+// It does not implement changes to the English layout ("Alt-English"),
+// as I believe that it is not the job of this layout to modify the English
+// layout.
+partial default alphanumeric_keys
+xkb_symbols "basic" {
+ // uses the kbd layout in use in Israel.
+
+ name[Group1]= "Hebrew";
+
+ key <AD01> { [ slash, Q ] };
+ key <AD02> { [ apostrophe, W ] };
+ key <AD04> { [ hebrew_resh, R ] };
+ key <AD05> { [ hebrew_aleph,T ] };
+ key <AD06> { [ hebrew_tet, Y ] };
+ key <AD07> { [ hebrew_waw, U ] };
+ key <AD08> { [ hebrew_finalnun, I ] };
+ key <AD09> { [ hebrew_finalmem, O ] };
+ key <AD10> { [ hebrew_pe, P ] };
+
+ key <AC02> { [ hebrew_dalet,S ] };
+ key <AC03> { [ hebrew_gimel,D ] };
+ key <AC04> { [ hebrew_kaph, F ] };
+ key <AC05> { [ hebrew_ayin, G ] };
+ key <AC06> { [ hebrew_yod, H ] };
+ key <AC07> { [ hebrew_chet, J ] };
+ key <AC08> { [ hebrew_lamed, K ] };
+ key <AC09> { [ hebrew_finalkaph, L ] };
+ key <AC10> { [ hebrew_finalpe, colon ] };
+ key <AC11> { [ comma, quotedbl ] };
+
+ key <AB01> { [ hebrew_zain, Z ] };
+ key <AB02> { [ hebrew_samech, X ] };
+ key <AB03> { [ hebrew_bet, C ] };
+ key <AB04> { [ hebrew_he, V ] };
+ key <AB05> { [ hebrew_nun, B ] };
+ key <AB06> { [ hebrew_mem, N ] };
+ key <AB07> { [ hebrew_zade, M ] };
+ // Mirrored:
+ key <AB08> { [ hebrew_taw, greater ] };
+ key <AB09> { [ hebrew_finalzade, less ] };
+
+ key.type[Group1] = "THREE_LEVEL";
+
+ key <TLDE> { [ semicolon, asciitilde,0x10005b0 ]}; // Sheva
+ key <AB10> { [ period, question, 0x10005c3 ]}; // Sof Pasuq
+ key <AD03> { [ hebrew_qoph, E, EuroSign ]};
+ key <AC01> { [ hebrew_shin, A, 0x10020AA ]};
+
+ // The following may get overriden by the iso9995-3(basic101) symbols.
+ // therefore they are included here.
+ // Including them isn't a great idea (for instance: what if group 1 uses
+ // UK keyboard mapping, and maps shift-3 to sterling? This mapping won't
+ // preserve that, and I'm not sure that this is a good feature.
+ key <AE01> { [ 1, exclam , 0x10005b1 ]}; // H. Segol
+ key <AE02> { [ 2, at , 0x10005b2 ]}; // H. Patah
+ key <AE03> { [ 3, numbersign , 0x10005b3 ]}; // H. Qamats
+ key <AE04> { [ 4, dollar , 0x10005b4 ]}; // Hiriq
+ key <AE05> { [ 5, percent , 0x10005b5 ]}; // Tsere
+ key <AE06> { [ 6, asciicircum , 0x10005b6 ]}; // Segol
+ key <AE07> { [ 7, ampersand , 0x10005b7 ]}; // Patah
+ key <AE08> { [ 8, asterisk , 0x10005b8 ]}; // Qamats
+ // Mirrored:
+ key <AE09> { [ 9, parenright , 0x10005c2 ]}; // Sin dot
+ key <AE10> { [ 0, parenleft , 0x10005c1 ]}; // Shin dot
+ key <AE11> { [ minus, underscore , 0x10005b9 ]}; // Holam
+ key <AE12> { [ equal, plus , 0x10005bc ]}; // Dagesh/Shuruq
+
+ // Mirrored:
+ key <AD11> { [ bracketright, braceright, 0x10005bf ]}; // Rafe
+ key <AD12> { [ bracketleft, braceleft, 0x10005bd ]}; // Meteg
+
+ key <BKSL> { [ backslash, bar, 0x10005bb ]}; // Qubuts
+
+ include "level3(ralt_switch)"
+};
+
+
+// nikud patter based on Dekel Tsur's Hebrew mapping for LyX
+partial alphanumeric_keys
+xkb_symbols "lyx" {
+ name[Group1]= "Hebrew (lyx)";
+
+ key <TLDE> { [ semicolon, asciitilde ] };
+ // On some key (e.g. AD01, right below) there is not yet mapping for the
+ // second shift level. Since I could not figure a simple way to map this
+ // to "emit nothing", it is currently mapped to the same letter of the
+ // first shift level (avoiding mapping may risk it be used by a character
+ // from a different group).
+ key <AD01> { [ slash, slash ] };
+ key <AD02> { [ apostrophe, apostrophe ] };
+ key <AD03> { [ hebrew_qoph, 0x10005b8 ] }; // Qamats
+ key <AD04> { [ hebrew_resh, 0x10005bc ] }; // Dagesh/Shuruq
+ key <AD05> { [ hebrew_aleph, 0x100200e ] }; // LRM
+ key <AD06> { [ hebrew_tet, 0x100200f ] }; // RLM
+ key <AD07> { [ hebrew_waw, 0x10005b9 ] }; // Holam
+ key <AD08> { [ hebrew_finalnun,hebrew_finalnun] };
+ key <AD09> { [ hebrew_finalmem,hebrew_finalmem] };
+ key <AD10> { [ hebrew_pe, 0x10005b7 ] }; // Patah
+
+ key <AC01> { [ hebrew_shin, 0x10005b0 ] }; // Sheva
+ key <AC02> { [ hebrew_dalet, 0x10005bc ] }; // Dagesh/Shuruq
+ key <AC03> { [ hebrew_gimel, hebrew_gimel ] };
+ key <AC04> { [ hebrew_kaph, hebrew_kaph ] };
+ key <AC05> { [ hebrew_ayin, 0x10005c2 ] }; // Sin dot
+ key <AC06> { [ hebrew_yod, 0x10005c1 ] }; // Shin dot
+ key <AC07> { [ hebrew_chet, 0x10005b4 ] }; // Hiriq
+ key <AC08> { [ hebrew_lamed, 0x10020aa ] }; // NIS
+ key <AC09> { [ hebrew_finalkaph,hebrew_finalkaph] };
+ key <AC10> { [ hebrew_finalpe, colon ] };
+ key <AC11> { [ comma, quotedbl ] };
+
+ key <AB01> { [ hebrew_zain, hebrew_zain ] };
+ key <AB02> { [ hebrew_samech,0x10005b6 ] }; // Segol
+ key <AB03> { [ hebrew_bet, 0x10005bb ] }; // Qubuts
+ key <AB04> { [ hebrew_he, 0x10005b1 ] }; // H. Segol
+ key <AB05> { [ hebrew_nun, 0x10005b2 ] }; // H. Patah
+ key <AB06> { [ hebrew_mem, 0x10005b3 ] }; // H. Qamats
+ key <AB07> { [ hebrew_zade, 0x10005b5 ] }; // Tsere
+ key <AB08> { [ hebrew_taw, greater ] };
+ key <AB09> { [ hebrew_finalzade, less ] };
+ key <AB10> { [ period, question ] };
+
+ // Note the parens mirroring below:
+ key <AD11> { [ bracketright, braceright ] };
+ key <AD12> { [ bracketleft, braceleft ] };
+ key <AE09> { [ 9 , parenright ] };
+ key <AE10> { [ 0 , parenleft ] };
+
+ key <AE11> { [ minus , 0x10005be ] }; // H. Hiphen
+ key <AE12> { [ equal , plus ] };
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "phonetic" {
+
+ // uses the phonetic layout from old Slackware 'il.map' file
+
+ name[Group1]= "Hebrew (phonetic)";
+
+ key <AE12> { [ equal, plus, hebrew_doublelowline, hebrew_doublelowline ]};
+
+ key <LatQ> { [ hebrew_qoph, hebrew_qoph ] };
+ key <LatW> { [ hebrew_waw, hebrew_waw ] };
+ key <LatE> { [ hebrew_aleph, hebrew_aleph ] };
+ key <LatR> { [ hebrew_resh, hebrew_resh ] };
+ key <LatT> { [ hebrew_taw, hebrew_tet ] };
+ key <LatY> { [ hebrew_ayin, hebrew_ayin ] };
+ key <LatU> { [ hebrew_waw, hebrew_waw ] };
+ key <LatI> { [ hebrew_yod, hebrew_yod ] };
+ key <LatO> { [ hebrew_samech, hebrew_samech ] };
+ key <LatP> { [ hebrew_pe, hebrew_finalpe ] };
+
+ key <LatA> { [ hebrew_aleph, hebrew_aleph ] };
+ key <LatS> { [ hebrew_shin, hebrew_shin ] };
+ key <LatD> { [ hebrew_dalet, hebrew_dalet ] };
+ key <LatF> { [ hebrew_pe, hebrew_finalpe ] };
+ key <LatG> { [ hebrew_gimel, hebrew_gimel ] };
+ key <LatH> { [ hebrew_he, hebrew_he ] };
+ key <LatJ> { [ hebrew_yod, hebrew_yod ] };
+ key <LatK> { [ hebrew_kaph, hebrew_finalkaph ] };
+ key <LatL> { [ hebrew_lamed, hebrew_lamed ] };
+
+ key <LatZ> { [ hebrew_zain, hebrew_zain ] };
+ key <LatX> { [ hebrew_chet, hebrew_chet ] };
+ key <LatC> { [ hebrew_zade, hebrew_finalzade ] };
+ key <LatV> { [ hebrew_waw, hebrew_waw ] };
+ key <LatB> { [ hebrew_bet, hebrew_bet ] };
+ key <LatN> { [ hebrew_nun, hebrew_finalnun ] };
+ key <LatM> { [ hebrew_mem, hebrew_finalmem ] };
+};
+
+// The 'Biblical Hebrew' keyboard layout as defined by Tiro for use with the
+// 'SBL Hebrew' font was added 2006.11.13 by Sebastian J. Bronner
+// <waschtl@sbronner.com>. Its primary features (as compared to the lyx layout)
+// are that the consonants are in the Israeli standard positions, that a great
+// multitude of glyphs can be input directly from the keyboard, and that it is
+// the closest thing to a standard layout a theologian can hope for.
+// Documentation (including printable keyboard tables), SBL Hebrew font, and
+// keyboard layout for Windows are available at
+// http://www.sbl-site.org/Resources/Resources_BiblicalFonts.aspx.
+//
+// It is of interest that the 'basic' layout defined first in this file (as
+// ships with x.org disagrees in the non-consonant characters that the Tiro-
+// layout claims to be the Israeli standard. Tiros apparent diligence in the
+// PDF-documentation accompanying the keyboard-layout-files lead me to put
+// greater stock in their claim than in this file. Therefore, the 'biblical'
+// layout below does not include 'il(basic)' but redoes the _whole_ thing from
+// scratch.
+
+partial alphanumeric_keys
+xkb_symbols "biblical" {
+ name[Group1]= "Hebrew (Biblical, Tiro)";
+ key.type = "FOUR_LEVEL_SEMIALPHABETIC";
+
+ key <TLDE> { [ U05C3, U05AE, semicolon, asciitilde ] };
+ key <AE01> { [ 1, U05A9, VoidSymbol, exclam ] };
+ key <AE02> { [ 2, U0599, VoidSymbol, at ] };
+ key <AE03> { [ 3, U0592, VoidSymbol, numbersign ] };
+ key <AE04> { [ 4, U05AF, NewSheqelSign, dollar ] };
+ key <AE05> { [ 5, VoidSymbol, U200D, percent ] };
+ key <AE06> { [ 6, U05B9, U200C, asciicircum ] };
+ key <AE07> { [ 7, U05BF, U034F, ampersand ] };
+ key <AE08> { [ 8, U05C2, U200E, asterisk ] };
+ key <AE09> { [ 9, U05C1, U200F, parenright ] };
+ key <AE10> { [ 0, U059D, U25CC, parenleft ] };
+ key <AE11> { [ U05BE, U05A0, minus, underscore ] };
+ key <AE12> { [ equal, U05BC, VoidSymbol, plus ] };
+
+ key <AD01> { [ U0307, U05C4, U0308, slash ] };
+ key <AD02> { [ U05F3, U05AC, U05F4, apostrophe ] };
+ key <AD03> { [ hebrew_qoph, U05AB, U20AC ] };
+ key <AD04> { [ hebrew_resh, U059F ] };
+ key <AD05> { [ hebrew_aleph, U0593 ] };
+ key <AD06> { [ hebrew_tet, U059E ] };
+ key <AD07> { [ hebrew_waw, U059C, U05F0 ] };
+ key <AD08> { [ hebrew_finalnun, U05A1 ] };
+ key <AD09> { [ hebrew_finalmem, U0595 ] };
+ key <AD10> { [ hebrew_pe, U0594 ] };
+ key <AD11> { [ bracketright, U0597, VoidSymbol, braceright ] };
+ key <AD12> { [ bracketleft, U0598, VoidSymbol, braceleft ] };
+ key <BKSL> { [ U05C0, U05A8, backslash, bar ] };
+
+ key <AC01> { [ hebrew_shin, U05BD ] };
+ key <AC02> { [ hebrew_dalet, U05B0 ] };
+ key <AC03> { [ hebrew_gimel, U05BB ] };
+ key <AC04> { [ hebrew_kaph, U05B4 ] };
+ key <AC05> { [ hebrew_ayin, U05B1 ] };
+ key <AC06> { [ hebrew_yod, U05B6, U05F2 ] };
+ key <AC07> { [ hebrew_chet, U05B5, U05F1 ] };
+ key <AC08> { [ hebrew_lamed, U05B3 ] };
+ key <AC09> { [ hebrew_finalkaph, U05B8, U05C7 ] };
+ key <AC10> { [ hebrew_finalpe, U05B2, VoidSymbol, colon ] };
+ key <AC11> { [ U059a, U05B7, comma, quotedbl ] };
+
+ key <AB01> { [ hebrew_zain, U05C5 ] };
+ key <AB02> { [ hebrew_samech, U05A4 ] };
+ key <AB03> { [ hebrew_bet, U05AA, U05A2 ] };
+ key <AB04> { [ hebrew_he, U05A6 ] };
+ key <AB05> { [ hebrew_nun, U05A5, U05C6 ] };
+ key <AB06> { [ hebrew_mem, U05A7 ] };
+ key <AB07> { [ hebrew_zade, U059B ] };
+ key <AB08> { [ hebrew_taw, U0591, VoidSymbol, greater ] };
+ key <AB09> { [ hebrew_finalzade, U0596, VoidSymbol, less ] };
+ key <AB10> { [ U05AD, U05A3, period, question ] };
+
+ key <SPCE> { [ space, space, thinspace, nobreakspace ] };
+};
--- /dev/null
+// This layout includes all Indian layouts, including:
+// - Bengali
+// - Gujarati
+// - Kannada
+// - Malayalam
+// - Oriya
+// - Tamil
+// - Telugu
+// - Urdu
+
+// Links:
+// - Indic INSCRIPT keyboard layout diagrams:
+// http://java.sun.com/products/jfc/tsc/articles/InputMethod/indiclayout.html
+// - Bengali Baishakhi (Bengali layouts):
+// - Bengali Baishakhi Inscript (Bengali layouts):
+// - Bengali Bornona (Bengali layouts):
+// - Uni Gitanjali (Bengali layouts):
+// http://nltr.org
+// - Ekusheyr Shadhinota (Bengali layouts):
+// http://ekushey.org/projects/shadhinota/index.html
+// - Microsoft Windows XP SP2: Indic Language Standards - an Introduction:
+// http://www.bhashaindia.com/MSProducts/XpSp2/Articles/IndicLanguageStandards.aspx
+
+// based on a keyboard map from an 'xkb/symbols/dev' file
+
+// Devangari is the default. Kill me if I am wrong:)
+default partial alphanumeric_keys
+xkb_symbols "deva" {
+ // March 2004 -- David Holl <smyrph+dev_xkb@ece.wpi.edu>
+ name[Group1]="Indian";
+
+ key.type="FOUR_LEVEL";
+
+ key <TLDE> { [ U094a, U0912, grave, asciitilde ] };
+ key <AE01> { [ U0967, U090d, 1, exclam ] };
+ key <AE02> { [ U0968, U0945, 2, at ] };
+ // Shift+AE0[3-8] really need to return a macro of keys defined by
+ // INSCRIPT in place of the symbols that are here for now. But this
+ // requires XKB to map 1 key into two to three other key presses.
+ key <AE03> { [ U0969, numbersign, 3, numbersign ] };
+ key <AE04> { [ U096a, dollar, 4, dollar ] };
+ key <AE05> { [ U096b, percent, 5, percent ] };
+ key <AE06> { [ U096c, asciicircum, 6, asciicircum ] };
+ key <AE07> { [ U096d, ampersand, 7, ampersand ] };
+ key <AE08> { [ U096e, asterisk, 8, asterisk ] };
+ key <AE09> { [ U096f, parenleft, 9, parenleft ] };
+ key <AE10> { [ U0966, parenright, 0, parenright ] };
+ key <AE11> { [ minus, U0903, minus, underscore ] };
+ key <AE12> { [ U0943, U090b, U0944, U0960 ] };
+
+ key <AD01> { [ U094c, U0914 ] };
+ key <AD02> { [ U0948, U0910 ] };
+ key <AD03> { [ U093e, U0906 ] };
+ key <AD04> { [ U0940, U0908, U0963, U0961 ] };
+ key <AD05> { [ U0942, U090a ] };
+ key <AD06> { [ U092c, U092d ] };
+ key <AD07> { [ U0939, U0919 ] };
+ key <AD08> { [ U0917, U0918, U095a ] };
+ key <AD09> { [ U0926, U0927 ] };
+ key <AD10> { [ U091c, U091d, U095b ] };
+ key <AD11> { [ U0921, U0922, U095c, U095d ] };
+ key <AD12> { [ U093c, U091e ] };
+ // I added \ / ? | for shell-convenience (file names and piping)
+ key <BKSL> { [ U0949, U0911, U005C, U007C ] };
+
+ key <AC01> { [ U094b, U0913 ] };
+ key <AC02> { [ U0947, U090f ] };
+ key <AC03> { [ U094d, U0905 ] };
+ key <AC04> { [ U093f, U0907, U0962, U090c ] };
+ key <AC05> { [ U0941, U0909 ] };
+ key <AC06> { [ U092a, U092b, NoSymbol, U095e ] };
+ key <AC07> { [ U0930, U0931 ] };
+ key <AC08> { [ U0915, U0916, U0958, U0959 ] };
+ key <AC09> { [ U0924, U0925 ] };
+ key <AC10> { [ U091a, U091b, U0952 ] };
+ key <AC11> { [ U091f, U0920, NoSymbol, U0951 ] };
+
+ key <AB01> { [ U0946, U090e, U0953 ] };
+ key <AB02> { [ U0902, U0901, NoSymbol, U0950 ] };
+ key <AB03> { [ U092e, U0923, U0954 ] };
+ key <AB04> { [ U0928, U0929 ] };
+ key <AB05> { [ U0935, U0934 ] };
+ key <AB06> { [ U0932, U0933 ] };
+ key <AB07> { [ U0938, U0936 ] };
+ key <AB08> { [ comma, U0937, U0970 ] };
+ key <AB09> { [ period, U0964, U0965, U093d ] };
+ // I added \ / ? | for shell-convenience (file names and piping)
+ key <AB10> { [ U092f, U095f, slash, question ] };
+
+ // space, space, Zero-Width-Non-Joiner (ZWNJ), Zero-Width-Joiner (ZWJ):
+ include "nbsp(zwnj3zwj4)"
+};
+
+//Name : Bolnagri (Combined)
+//Description : A phonetic keyboard layout for Devnagari(Hindi)
+// http://www.indlinux.org/wiki/index.php/BolNagri
+//NOTE : This is a combined map of bolnagri_matras and bolnagri_vowels.
+//Inspired by "devrom" keymap by Steve Smith for the windows tool "keyman"
+//Original Author : Noah Levitt<nlevitt at columbia.edu>
+//Past Authors : Pramod.R <pramodr at gmail.com> and Ravikant <ravikant at sarai.net>
+// Current Main.: G Karunakar <karunakar@sarai.net>
+
+partial alphanumeric_keys
+xkb_symbols "bolnagri" {
+ name[Group1] = "Hindi (Bolnagri)";
+ key.type="FOUR_LEVEL";
+ //Top Alphanumeric row
+ // Roman digits
+ key <TLDE> { [ U0902, U0901, apostrophe, asciitilde ] }; // apostrophe: anusvara, candrabindu
+ key <AE01> { [ 1, exclam, U0967, exclam ] };
+ key <AE02> { [ 2, at, U0968, at ] };
+ key <AE03> { [ 3, numbersign, U0969, numbersign ] };
+ key <AE04> { [ 4, dollar, U096A, dollar ] };
+ key <AE05> { [ 5, percent, U096B, percent ] };
+ key <AE06> { [ 6, asciicircum, U096C, asciicircum ] };
+ key <AE07> { [ 7, ampersand, U096D, ampersand ] };
+ key <AE08> { [ 8, asterisk, U096E, asterisk ] };
+ key <AE09> { [ 9, parenleft, U096F, parenleft ] };
+ key <AE10> { [ 0, parenright, U0966, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+ key <BKSL> { [ U0964, U0965, U007C, U005C ] }; //pipe : danda, double danda
+
+ //Q Row
+ key <AD01> { [ U200C, U200D ] }; // Q: ZWNJ, ZWJ
+ key <AD02> { [ U0935, U950 ] }; // W: wa, OM
+ key <AD03> { [ U0947, U0948, U090F, U0910 ] }; // E: e, ai matras
+ key <AD04> { [ U0930, U0943 ] }; // R: ra, vocalic Ri
+ key <AD05> { [ U0924, U0925 ] }; // T: ta, tha
+ key <AD06> { [ U092f, U091E ] }; // Y: ya, nya
+ key <AD07> { [ U0941, U0942, U0909, U090A ] }; // U: u, uu matras
+ key <AD08> { [ U093F, U0940, U0907, U0908 ] }; // I: i, ii matras
+ key <AD09> { [ U094B, U094C, U0913, U0914 ] }; // O: o, au matras
+ key <AD10> { [ U092A, U092B ] }; // P: pa, pha
+ key <AD11> { [ bracketleft, braceleft ] };
+ key <AD12> { [ bracketright, braceright ] };
+
+ //A Row
+ key <AC01> { [ U093E, U0906, U0905, U0906 ] }; // A: aa
+ key <AC02> { [ U0938, U0937 ] }; // S: sa, ssa
+ key <AC03> { [ U0926, U0927 ] }; // D: da, dha
+ key <AC04> { [ U091F, U0920 ] }; // F: TA, THA
+ key <AC05> { [ U0917, U0918 ] }; // G: ga, gha
+ key <AC06> { [ U0939, U0903 ] }; // H: ha, visarg
+ key <AC07> { [ U091C, U091D ] }; // J: ja, jha
+ key <AC08> { [ U0915, U0916 ] }; // K: ka, kha
+ key <AC09> { [ U0932, U0962 ] }; // L: la, vocalic L or lru matra`
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [apostrophe, quotedbl ] };
+
+ //Z Row
+ key <AB01> { [ U0936, U0945 ] }; // Z: sha, akaar candra
+ key <AB02> { [ U094D, U0949 ] }; // X: halant, aakaar candra
+ key <AB03> { [ U091A, U091B ] }; // C: ca, cha
+ key <AB04> { [ U0921, U0922 ] }; // V: da, dha
+ key <AB05> { [ U092C, U092D ] }; // B: ba, bha
+ key <AB06> { [ U0928, U0923 ] }; // N: na, nha
+ key <AB07> { [ U092E, U093D, U092E, U093D ] }; // M: ma, avagraha
+ key <AB08> { [ comma, U0970 ] };// comma: comma, dev abbreviation sign
+ key <AB09> { [ period, U093C ] }; // period: period, nukta
+ key <AB10> { [ slash, question ] };
+
+ // begin modifier mappings
+// modifier_map Shift { Shift_L };
+// modifier_map Lock { Caps_Lock };
+// modifier_map Control{ Control_L };
+// modifier_map Mod3 { Mode_switch };
+ include "level3(ralt_switch)"
+};
+
+// based on a keyboard map from an 'xkb/symbols/ben' file
+
+partial alphanumeric_keys
+xkb_symbols "ben" {
+ name[Group1]= "Bengali (India)";
+
+ // Mainly numbers.
+ key <AE01> { [ U09E7 ] };
+ key <AE02> { [ U09E8 ] };
+ key <AE03> { [ U09E9 ] };
+ key <AE04> { [ U09EA ] };
+ key <AE05> { [ U09EB ] };
+ key <AE06> { [ U09EC ] };
+ key <AE07> { [ U09ED ] };
+ key <AE08> { [ U09EE ] };
+ key <AE09> { [ U09EF, parenleft ] };
+ key <AE10> { [ U09E6, parenright ] };
+ key <AE11> { [ minus, U0983 ] };
+ key <AE12> { [ U098B, U09C3 ] };
+
+// Mainly long vowels
+
+ key <AD01> { [ U09CC, U0994 ] };
+ key <AD02> { [ U09C8, U0990 ] };
+ key <AD03> { [ U09BE, U0986 ] };
+ key <AD04> { [ U09C0, U0988 ] };
+ key <AD05> { [ U09C2, U098A ] };
+
+// Mainly voiced consonants
+
+ key <AD06> { [ U09AC, U09AD ] };
+ key <AD07> { [ U09B9, U0999 ] };
+ key <AD08> { [ U0997, U0998 ] };
+ key <AD09> { [ U09A6, U09A7 ] };
+ key <AD10> { [ U099C, U099D ] };
+ key <AD11> { [ U09A1, U09A2 ] };
+ key <AD12> { [ U09BC, U099E ] };
+
+// Mainly short vowels
+ key <AC01> { [ U09CB, U0993 ] };
+ key <AC02> { [ U09C7, U098F ] };
+ key <AC03> { [ U09CD, U0985 ] };
+ key <AC04> { [ U09BF, U0987 ] };
+ key <AC05> { [ U09C1, U0989 ] };
+
+
+// Mainly unvoiced consonants
+
+ key <AC06> { [ U09AA, U09AB ] };
+ key <AC07> { [ U09B0, U09DD ] };
+ key <AC08> { [ U0995, U0996 ] };
+ key <AC09> { [ U09A4, U09A5 ] };
+ key <AC10> { [ U099A, U099B ] };
+ key <AC11> { [ U099F, U09A0 ] };
+ key <BKSL> { [ U005C, U007C ] };
+
+ key <AB01> { [ z, Z ] };
+ key <AB02> { [ U0982, U0981 ] };
+ key <AB03> { [ U09AE, U09A3 ] };
+ key <AB04> { [ U09A8, U09A8 ] };
+ key <AB05> { [ U09AC, U09AC ] };
+ key <AB06> { [ U09B2, U09B2 ] };
+ key <AB07> { [ U09B8, U09B6 ] };
+ key <AB08> { [ comma, U09B7 ] };
+ key <AB09> { [ period, U0964 ] };
+ key <AB10> { [ U09DF, U09AF ] };
+};
+
+xkb_symbols "ben_probhat" {
+ name[Group1]= "Bengali (India, Probhat)";
+ key <ESC> { [ Escape ] };
+
+// numbers
+ key <TLDE> { [ U200D, asciitilde ] };
+ key <AE01> { [ U09E7, exclam ] };
+ key <AE02> { [ U09E8, at ] };
+ key <AE03> { [ U09E9, numbersign ] };
+ key <AE04> { [ U09EA, U09F3 ] };
+ key <AE05> { [ U09EB, percent ] };
+ key <AE06> { [ U09EC, asciicircum ] };
+ key <AE07> { [ U09ED, U099E ] };
+ key <AE08> { [ U09EE, U09CE ] };
+ key <AE09> { [ U09EF, parenleft ] };
+ key <AE10> { [ U09E6, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+ key <BKSP> { [ BackSpace ] };
+
+// tab, q to ]
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> { [ U09A6, U09A7 ] };
+ key <AD02> { [ U09C2, U098A ] };
+ key <AD03> { [ U09C0, U0988 ] };
+ key <AD04> { [ U09B0, U09DC ] };
+ key <AD05> { [ U099F, U09A0 ] };
+ key <AD06> { [ U098F, U0990 ] };
+ key <AD07> { [ U09C1, U0989 ] };
+ key <AD08> { [ U09BF, U0987 ] };
+ key <AD09> { [ U0993, U0994 ] };
+ key <AD10> { [ U09AA, U09AB ] };
+ key <AD11> { [ U09C7, U09C8 ] };
+ key <AD12> { [ U09CB, U09CC ] };
+ key <RTRN> { [ Return ] };
+
+// caps, a to '
+// key <CAPS> { [ Caps_Lock ] };
+ key <AC01> { [ U09BE, U0985 ] };
+ key <AC02> { [ U09B8, U09B7 ] };
+ key <AC03> { [ U09A1, U09A2 ] };
+ key <AC04> { [ U09A4, U09A5 ] };
+ key <AC05> { [ U0997, U0998 ] };
+ key <AC06> { [ U09B9, U0983 ] };
+ key <AC07> { [ U099C, U099D ] };
+ key <AC08> { [ U0995, U0996 ] };
+ key <AC09> { [ U09B2, U0982 ] };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ quoteright, quotedbl ] };
+
+// shift, z to /
+// key <LFSH> { [ Shift_L ] };
+ key <AB01> { [ U09DF, U09AF ] };
+ key <AB02> { [ U09B6, U09DD ] };
+ key <AB03> { [ U099A, U099B ] };
+ key <AB04> { [ U0986, U098B ] };
+ key <AB05> { [ U09AC, U09AD ] };
+ key <AB06> { [ U09A8, U09A3 ] };
+ key <AB07> { [ U09AE, U0999 ] };
+ key <AB08> { [ comma, U09C3 ] };
+ key <AB09> { [ U0964, U0981 ] };
+ key <AB10> { [ U09CD, question ] };
+ key <BKSL> { [ U200C, U0965 ] };
+
+// key <LCTL> { [ Control_L ] };
+// key <SPCE> { [ space ] };
+
+// modifier_map Shift { Shift_L };
+// modifier_map Lock { Caps_Lock };
+// modifier_map Control{ Control_L };
+
+};
+
+// Bengali Baishakhi, Bengali Baishakhi Inscript, Bengali Bornona, Uni Gitanjali Layouts are added by Promathesh Mandal <promathesh812004@gmail.com>
+
+xkb_symbols "ben_baishakhi" {
+ name[Group1]= "Bengali (India, Baishakhi)";
+ key <ESC> { [ Escape ] };
+
+// numbers
+ key <TLDE> { [ 0x100200D, 0x100200C ] };
+ key <AE01> { [ 0x10009E7, exclam ] };
+ key <AE02> { [ 0x10009E8, at ] };
+ key <AE03> { [ 0x10009E9, numbersign ] };
+ key <AE04> { [ 0x10009EA, dollar, 0x10009F2 ] };
+ key <AE05> { [ 0x10009EB, percent ] };
+ key <AE06> { [ 0x10009EC, asciicircum, 0x10009D7 ] };
+ key <AE07> { [ 0x10009ED, ampersand ] };
+ key <AE08> { [ 0x10009EE, asterisk,0x10009FA ] };
+ key <AE09> { [ 0x10009EF, parenleft ] };
+ key <AE10> { [ 0x10009E6, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+ key <BKSP> { [ BackSpace ] };
+
+// tab, q to ]
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> { [ 0x10009A1, 0x10009A2 ] };
+ key <AD02> { [ 0x10009C0 , 0x10009C2 ] };
+ key <AD03> { [ 0x10009C7, 0x100098F, 0x1000990 ] };
+ key <AD04> { [ 0x10009B0 , 0x10009C3, 0x100098B ] };
+ key <AD05> { [ 0x100099F, 0x10009A0 ] };
+ key <AD06> { [ 0x10009AF, 0x10009DF ] };
+ key <AD07> { [ 0x10009C1, 0x1000989, 0x100098A ] };
+ key <AD08> { [ 0x10009BF, 0x1000987, 0x1000988 ] };
+ key <AD09> { [ 0x10009CB, 0x1000993, 0x1000994 ] };
+ key <AD10> { [ 0x10009AA, 0x10009AB ] };
+ key <AD11> { [ bracketleft, braceleft] };
+ key <AD12> { [ bracketright, braceright ] };
+ key <RTRN> { [ Return ] };
+
+// caps, a to '
+// key <CAPS> { [ Caps_Lock ] };
+ key <AC01> { [ 0x10009BE, 0x1000985, 0x1000986 ] };
+ key <AC02> { [ 0x10009B8, 0x10009B6, 0x10009B7 ] };
+ key <AC03> { [ 0x10009A6, 0x10009A7 ] };
+ key <AC04> { [ 0x10009A4, 0x10009A5, 0x10009CE ] };
+ key <AC05> { [ 0x1000997, 0x1000998 ] };
+ key <AC06> { [ 0x10009CD, 0x10009B9, 0x1000983 ] };
+ key <AC07> { [ 0x100099C, 0x100099D ] };
+ key <AC08> { [ 0x1000995, 0x1000996 ] };
+ key <AC09> { [ 0x10009B2, 0x1000964, 0x100098C ] };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ quoteright, quotedbl ] };
+
+// shift, z to /
+// key <LFSH> { [ Shift_L ] };
+ key <AB01> { [ 0x10009C8, 0x10009CC ] };
+ key <AB02> { [ 0x10009DC, 0x10009DD ] };
+ key <AB03> { [ 0x100099A, 0x100099B ] };
+ key <AB04> { [ 0x10009F1, 0x10009F0 ] };
+ key <AB05> { [ 0x10009AC, 0x10009AD ] };
+ key <AB06> { [ 0x10009A8, 0x10009A3, 0x100099E ] };
+ key <AB07> { [ 0x10009AE, 0x1000999, 0x1000981 ] };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ period, greater,0x10009BC ] };
+ key <AB10> { [ slash, question, 0x1000982 ] };
+ key <BKSL> { [ backslash, bar ] };
+
+// third level with right-alt
+ include "level3(ralt_switch)"
+
+// key <LCTL> { [ Control_L ] };
+// key <SPCE> { [ space ] };
+
+// modifier_map Shift { Shift_L };
+// modifier_map Lock { Caps_Lock };
+// modifier_map Control{ Control_L };
+
+
+};
+
+xkb_symbols "ben_inscript" {
+ name[Group1]= "Bengali (India, Baishakhi Inscript)";
+
+ // Mainly numbers.
+ key <TLDE> { [ 0x100200D, 0x100200C ] };
+ key <AE01> { [ 0x10009E7 ] };
+ key <AE02> { [ 0x10009E8 ] };
+ key <AE03> { [ 0x10009E9 ] };
+ key <AE04> { [ 0x10009EA ] };
+ key <AE05> { [ 0x10009EB ] };
+ key <AE06> { [ 0x10009EC ] };
+ key <AE07> { [ 0x10009ED ] };
+ key <AE08> { [ 0x10009EE ] };
+ key <AE09> { [ 0x10009EF, parenleft ] };
+ key <AE10> { [ 0x10009E6, parenright ] };
+ key <AE11> { [ minus, 0x1000983 ] };
+ key <AE12> { [ 0x10009C3, 0x100098B ] };
+
+// Mainly long vowels
+
+ key <AD01> { [ 0x10009CC, 0x1000994 ] };
+ key <AD02> { [ 0x10009C8, 0x1000990 ] };
+ key <AD03> { [ 0x10009BE, 0x1000986 ] };
+ key <AD04> { [ 0x10009C0, 0x1000988 ] };
+ key <AD05> { [ 0x10009C2, 0x100098A ] };
+
+// Mainly voiced consonants
+
+ key <AD06> { [ 0x10009AC, 0x10009AD ] };
+ key <AD07> { [ 0x10009B9, 0x1000999 ] };
+ key <AD08> { [ 0x1000997, 0x1000998 ] };
+ key <AD09> { [ 0x10009A6, 0x10009A7 ] };
+ key <AD10> { [ 0x100099C, 0x100099D ] };
+ key <AD11> { [ 0x10009A1, 0x10009A2 ] };
+ key <AD12> { [ 0x10009BC, 0x100099E ] };
+
+// Mainly short vowels
+ key <AC01> { [ 0x10009CB, 0x1000993 ] };
+ key <AC02> { [ 0x10009C7, 0x100098F ] };
+ key <AC03> { [ 0x10009CD, 0x1000985 ] };
+ key <AC04> { [ 0x10009BF, 0x1000987 ] };
+ key <AC05> { [ 0x10009C1, 0x1000989 ] };
+
+
+// Mainly unvoiced consonants
+
+ key <AC06> { [ 0x10009AA, 0x10009AB ] };
+ key <AC07> { [ 0x10009B0, 0x10009DD ] };
+ key <AC08> { [ 0x1000995, 0x1000996 ] };
+ key <AC09> { [ 0x10009A4, 0x10009A5 ] };
+ key <AC10> { [ 0x100099A, 0x100099B ] };
+ key <AC11> { [ 0x100099F, 0x10009A0 ] };
+ key <BKSL> { [ backslash, bar ] };
+
+ key <AB01> { [ 0x10009CE ] };
+ key <AB02> { [ 0x1000982, 0x1000981 ] };
+ key <AB03> { [ 0x10009AE, 0x10009A3 ] };
+ key <AB04> { [ 0x10009A8, 0x10009A8 ] };
+ key <AB05> { [ 0x10009AC, 0x10009AC ] };
+ key <AB06> { [ 0x10009B2, 0x10009B2 ] };
+ key <AB07> { [ 0x10009B8, 0x10009B6 ] };
+ key <AB08> { [ comma, 0x10009B7 ] };
+ key <AB09> { [ period, 0x1000964 ] };
+ key <AB10> { [ 0x10009DF, 0x10009AF ] };
+};
+
+xkb_symbols "ben_gitanjali" {
+ name[Group1]= "Bengali (India, Uni Gitanjali)";
+ key <ESC> { [ Escape ] };
+
+// numbers
+ key <TLDE> { [ colon, question ] };
+ key <AE01> { [ 0x10009E7, 0x10009CE ] };
+ key <AE02> { [ 0x10009E8, quoteright ] };
+ key <AE03> { [ 0x10009E9, numbersign ] };
+ key <AE04> { [ 0x10009EA, 0x10009F3 ] };
+ key <AE05> { [ 0x10009EB, slash ] };
+ key <AE06> { [ 0x10009EC, period ] };
+ key <AE07> { [ 0x10009ED, ampersand ] };
+ key <AE08> { [ 0x10009EE, asterisk ] };
+ key <AE09> { [ 0x10009EF, parenleft ] };
+ key <AE10> { [ 0x10009E6, parenright ] };
+ key <AE11> { [ minus, 0x1000983 ] };
+ key <AE12> { [ 0x10009C3, 0x100098B ] };
+ key <BKSP> { [ BackSpace ] };
+
+// tab, q to ]
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> { [ 0x10009D7, 0x1000994 ] };
+ key <AD02> { [ 0x10009C8, 0x1000990 ] };
+ key <AD03> { [ 0x10009BE, 0x1000985 ] };
+ key <AD04> { [ 0x10009C0, 0x1000988 ] };
+ key <AD05> { [ 0x10009C2, 0x100098A ] };
+ key <AD06> { [ 0x10009AC, 0x10009AD ] };
+ key <AD07> { [ 0x10009B9, 0x1000999 ] };
+ key <AD08> { [ 0x1000997, 0x1000998 ] };
+ key <AD09> { [ 0x10009A6, 0x10009A7 ] };
+ key <AD10> { [ 0x100099C, 0x100099D ] };
+ key <AD11> { [ 0x10009A1, 0x10009A2 ] };
+ key <AD12> { [ 0x100200C, 0x100099E ] };
+ key <RTRN> { [ Return ] };
+
+// caps, a to '
+// key <CAPS> { [ Caps_Lock ] };
+ key <AC01> { [ 0x100200D, 0x1000993 ] };
+ key <AC02> { [ 0x10009C7, 0x100098F ] };
+ key <AC03> { [ 0x10009CD ] };
+ key <AC04> { [ 0x10009BF, 0x1000987 ] };
+ key <AC05> { [ 0x10009C1, 0x1000989 ] };
+ key <AC06> { [ 0x10009AA, 0x10009AB ] };
+ key <AC07> { [ 0x10009B0, 0x10009F0 ] };
+ key <AC08> { [ 0x1000995, 0x1000996 ] };
+ key <AC09> { [ 0x10009A4, 0x10009A5 ] };
+ key <AC10> { [ 0x100099A, 0x100099B ] };
+ key <AC11> { [ 0x100099F, 0x10009A0 ] };
+
+// shift, z to /
+// key <LFSH> { [ Shift_L ] };
+ key <AB01> { [ 0x10009C7, 0x100098F ] };
+ key <AB02> { [ 0x1000982, 0x1000981 ] };
+ key <AB03> { [ 0x10009AE, 0x10009A3 ] };
+ key <AB04> { [ 0x10009A8, 0x10009DC ] };
+ key <AB05> { [ 0x10009F1, 0x10009DD ] };
+ key <AB06> { [ 0x10009B2 ] };
+ key <AB07> { [ 0x10009B8, 0x10009B6 ] };
+ key <AB08> { [ comma, 0x10009B7 ] };
+ key <AB09> { [ 0x1000964, 0x10009FA ] };
+ key <AB10> { [ 0x10009AF, 0x10009DF ] };
+ key <BKSL> { [ backslash, bar ] };
+
+// third level with right-win
+// include "level3(lwin_switch)"
+
+// key <LCTL> { [ Control_L ] };
+// key <SPCE> { [ space ] };
+
+// modifier_map Shift { Shift_L };
+// modifier_map Lock { Caps_Lock };
+// modifier_map Control{ Control_L };
+
+
+};
+
+
+xkb_symbols "ben_bornona" {
+ name[Group1]= "Bengali (India, Bornona)";
+ key <ESC> { [ Escape ] };
+
+// numbers
+ key <TLDE> { [ 0x100200D, 0x100200C ] };
+ key <AE01> { [ 0x10009E7, exclam ] };
+ key <AE02> { [ 0x10009E8, 0x1000981 ] };
+ key <AE03> { [ 0x10009E9, numbersign ] };
+ key <AE04> { [ 0x10009EA, 0x10009F3 ] };
+ key <AE05> { [ 0x10009EB, percent ] };
+ key <AE06> { [ 0x10009EC, 0x1000983 ] };
+ key <AE07> { [ 0x10009ED, 0x10009CE ] };
+ key <AE08> { [ 0x10009EE, asterisk ] };
+ key <AE09> { [ 0x10009EF, parenleft ] };
+ key <AE10> { [ 0x10009E6, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+ key <BKSP> { [ BackSpace ] };
+
+// tab, q to ]
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> { [ 0x1000982, 0x1000999, 0x10009D7 ] };
+ key <AD02> { [ 0x10009A2, 0x10009A0, 0x100098A ] };
+ key <AD03> { [ 0x10009C7, 0x10009C8, 0x1000988 ] };
+ key <AD04> { [ 0x10009B0, 0x10009C3, 0x100098B ] };
+ key <AD05> { [ 0x10009A4, 0x100099F ] };
+ key <AD06> { [ 0x10009A7, 0x10009A5, 0x100098F ] };
+ key <AD07> { [ 0x10009C1, 0x10009C2, 0x1000989 ] };
+ key <AD08> { [ 0x10009BF, 0x10009C0, 0x1000987 ] };
+ key <AD09> { [ 0x10009CB, 0x10009CC, 0x1000993 ] };
+ key <AD10> { [ 0x10009AA, 0x1000990, 0x1000994 ] };
+ key <AD11> { [ 0x100005B, 0x100007B, 0x10009DC ] };
+ key <AD12> { [ 0x100005D, 0x100007D ] };
+ key <RTRN> { [ Return ] };
+
+// caps, a to '
+// key <CAPS> { [ Caps_Lock ] };
+ key <AC01> { [ 0x10009BE, 0x1000985, 0x10009F4 ] };
+ key <AC02> { [ 0x10009B8, 0x10009B6, 0x10009F5 ] };
+ key <AC03> { [ 0x10009A6, 0x10009A1, 0x10009F8 ] };
+ key <AC04> { [ 0x10009AB ] };
+ key <AC05> { [ 0x1000997, 0x1000998 ] };
+ key <AC06> { [ 0x10009CD, 0x10009B9 ] };
+ key <AC07> { [ 0x100099C, 0x100099D ] };
+ key <AC08> { [ 0x1000995, 0x1000996 ] };
+ key <AC09> { [ 0x10009B2, 0x1000964 ] };
+ key <AC10> { [ semicolon, 0x100003A ] };
+ key <AC11> { [ quoteright, quotedbl ] };
+
+// shift, z to /
+// key <LFSH> { [ Shift_L ] };
+ key <AB01> { [ 0x10009AF, 0x10009DC ] };
+ key <AB02> { [ 0x10009B7, 0x10009DD, 0x10009FA ] };
+ key <AB03> { [ 0x100099A, 0x100099B ] };
+ key <AB04> { [ 0x10009AD ] };
+ key <AB05> { [ 0x10009AC, 0x10009DF ] };
+ key <AB06> { [ 0x10009A8, 0x10009A3 ] };
+ key <AB07> { [ 0x10009AE, 0x100099E ] };
+ key <AB08> { [ comma, 0x100003C ] };
+ key <AB09> { [ 0x100002E, 0x100003E ] };
+ key <AB10> { [ 0x100002F, question ] };
+ key <BKSL> { [ 0x10009F1, 0x10009F0 ] };
+
+// key <LCTL> { [ Control_L ] };
+// key <SPCE> { [ space ] };
+
+// modifier_map Shift { Shift_L };
+// modifier_map Lock { Caps_Lock };
+// modifier_map Control{ Control_L };
+// third level with right-alt
+ include "level3(ralt_switch)"
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "guj" {
+ name[Group1]= "Gujarati";
+
+ // Mainly numbers.
+ key <AE01> { [ U0AE7, U0A8D ] };
+ key <AE02> { [ U0AE8, U0AC5 ] };
+ key <AE03> { [ U0AE9 ] };
+ key <AE04> { [ U0AEA ] };
+ key <AE05> { [ U0AEB ] };
+ key <AE06> { [ U0AEC ] };
+ key <AE07> { [ U0AED ] };
+ key <AE08> { [ U0AEE ] };
+ key <AE09> { [ U0AEF, parenleft ] };
+ key <AE10> { [ U0AE6, parenright ] };
+ key <AE11> { [ minus, U0A83 ] };
+ key <AE12> { [ U0A8B, U0AC3 ] };
+
+// Mainly long vowels
+
+ key <AD01> { [ U0ACC, U0A94 ] };
+ key <AD02> { [ U0AC8, U0A90 ] };
+ key <AD03> { [ U0ABE, U0A86 ] };
+ key <AD04> { [ U0AC0, U0A88 ] };
+ key <AD05> { [ U0AC2, U0A8A ] };
+
+// Mainly voiced consonants
+
+ key <AD06> { [ U0AAC, U0AAD ] };
+ key <AD07> { [ U0AB9, U0A99 ] };
+ key <AD08> { [ U0A97, U0A98 ] };
+ key <AD09> { [ U0AA6, U0AA7 ] };
+ key <AD10> { [ U0A9C, U0A9D ] };
+ key <AD11> { [ U0AA1, U0AA2 ] };
+ key <AD12> { [ U0ABC, U0A9E ] };
+
+// Mainly short vowels
+ key <AC01> { [ U0ACB, U0A93 ] };
+ key <AC02> { [ U0AC7, U0A8F ] };
+ key <AC03> { [ U0ACD, U0A85 ] };
+ key <AC04> { [ U0ABF, U0A87 ] };
+ key <AC05> { [ U0AC1, U0A89 ] };
+
+// Mainly unvoiced consonants
+
+ key <AC06> { [ U0AAA, U0AAB ] };
+ key <AC07> { [ U0AB0, U0AB0 ] };
+ key <AC08> { [ U0A95, U0A96 ] };
+ key <AC09> { [ U0AA4, U0AA5 ] };
+ key <AC10> { [ U0A9A, U0A9B ] };
+ key <AC11> { [ U0A9F, U0AA0 ] };
+ key <BKSL> { [ U0AC9, U0A91 ] };
+
+ key <AB01> { [ z , Z ] };
+ key <AB02> { [ U0A82, U0A81 ] };
+ key <AB03> { [ U0AAE, U0AA3 ] };
+ key <AB04> { [ U0AA8, U0AA8 ] };
+ key <AB05> { [ U0AB5, U0AB5 ] };
+ key <AB06> { [ U0AB2, U0AB3 ] };
+ key <AB07> { [ U0AB8, U0AB6 ] };
+ key <AB08> { [ comma, U0AB7 ] };
+ key <AB09> { [ period, U0964 ] };
+ key <AB10> { [ U0AAF, question ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "kan" {
+
+ // Inscript layout for Kannada
+ // Author : G Karunakar <karunakar@freedomink.org>
+ // Date : Wed Nov 13 17:22:58 IST 2002
+ // Kannada digits mapped in basic only
+
+ name[Group1]= "Kannada";
+
+ key <TLDE> { [ U0cca, U0c92 ] };
+ key <AE01> { [ U0ce7 ] };
+ key <AE02> { [ U0ce8 ] };
+ key <AE03> { [ U0ce9 ] };
+ key <AE04> { [ U0cea ] };
+ key <AE05> { [ U0ceb ] };
+ key <AE06> { [ U0cec ] };
+ key <AE07> { [ U0ced ] };
+ key <AE08> { [ U0cee ] };
+ key <AE09> { [ U0cef ] };
+ key <AE10> { [ U0ce6 ] };
+ key <AE11> { [ U0c83 ] };
+ key <AE12> { [ U0cc3, U0c8b ] };
+
+ key <AD01> { [ U0ccc, U0c94 ] };
+ key <AD02> { [ U0cc8, U0c90 ] };
+ key <AD03> { [ U0cbe, U0c86 ] };
+ key <AD04> { [ U0cc0, U0c88 ] };
+ key <AD05> { [ U0cc2, U0c8a ] };
+ key <AD06> { [ U0cac, U0cad ] };
+ key <AD07> { [ U0cb9, U0c99 ] };
+ key <AD08> { [ U0c97, U0c98 ] };
+ key <AD09> { [ U0ca6, U0ca7 ] };
+ key <AD10> { [ U0c9c, U0c9d ] };
+ key <AD11> { [ U0ca1, U0ca2 ] };
+ key <AD12> { [ U0cbc, U0c9e ] };
+
+ key <AC01> { [ U0ccb, U0c93 ] };
+ key <AC02> { [ U0cc7, U0c8f ] };
+ key <AC03> { [ U0ccd, U0c85 ] };
+ key <AC04> { [ U0cbf, U0c87 ] };
+ key <AC05> { [ U0cc1, U0c89 ] };
+ key <AC06> { [ U0caa, U0cab ] };
+ key <AC07> { [ U0cb0, U0cb1 ] };
+ key <AC08> { [ U0c95, U0c96 ] };
+ key <AC09> { [ U0ca4, U0ca5 ] };
+ key <AC10> { [ U0c9a, U0c9b ] };
+ key <AC11> { [ U0c9f, U0ca0 ] };
+
+ key <AB01> { [ U0cc6, U0c8e ] };
+ key <AB02> { [ U0c82 ] };
+ key <AB03> { [ U0cae, U0ca3 ] };
+ key <AB04> { [ U0ca8 ] };
+ key <AB05> { [ U0cb5, U0cb4 ] };
+ key <AB06> { [ U0cb2, U0cb3 ] };
+ key <AB07> { [ U0cb8, U0cb6 ] };
+ key <AB08> { [ comma , U0cb7 ] };
+ key <AB09> { [ period ] };
+ key <AB10> { [ U0caf, U0040 ] };
+
+ key <RALT> {
+ symbols[Group1] = [ Mode_switch, Multi_key ],
+ virtualMods = AltGr
+ };
+
+};
+
+// Description : A keymap for Malayalam
+// Encoding : Unicode (http://www.unicode.org)
+// Author : Baiju M <baiju@freeshell.org>
+// Date : Sat Aug 17 21:10:48 IST 2002
+// Mapping:
+
+partial alphanumeric_keys
+xkb_symbols "mal" {
+
+ name[Group1] = "Malayalam";
+
+ //From grave to backslash (\)
+
+ key <TLDE> { [ U0d4a , U0d12 ] };
+
+// svu:
+// These lines were in former "mal" variant -
+// but the digits are replaced with the ones from 'mal_plusnum' -
+// for the integrity of all Indian layouts
+//
+// 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 <AE01> { [ U0d67 , exclam ] };
+ key <AE02> { [ U0d68 , at ] };
+ key <AE03> { [ U0d69 , numbersign ] };
+ key <AE04> { [ U0d6a , dollar ] };
+ key <AE05> { [ U0d6b , percent ] };
+ key <AE06> { [ U0d6c , asciicircum ] };
+ key <AE07> { [ U0d6d , ampersand ] };
+ key <AE08> { [ U0d6e , asterisk ] };
+ key <AE09> { [ U0d6f , parenleft ] };
+ key <AE10> { [ U0d66 , parenright ] };
+
+ key <AE11> { [ minus , U0d03 ] };
+ key <AE12> { [ U0d43 , U0d0b ] };
+ key <BKSL> { [U0200c, U05C ]};//bksl: ZWNJ
+
+
+ // From 'q' to right bracket (])
+
+ key <AD01> { [ U0d4c , U0d14 ] };
+ key <AD02> { [ U0d48 , U0d10 ] };
+ key <AD03> { [ U0d3e , U0d06 ] };
+ key <AD04> { [ U0d40 , U0d08 ] };
+ key <AD05> { [ U0d42 , U0d0a ] };
+ key <AD06> { [ U0d2c , U0d2d ] };
+ key <AD07> { [ U0d39 , U0d19 ] };
+ key <AD08> { [ U0d17 , U0d18 ] };
+ key <AD09> { [ U0d26 , U0d27 ] };
+ key <AD10> { [ U0d1c , U0d1d ] };
+ key <AD11> { [ U0d21 , U0d22 ] };
+ key <AD12> { [ U0200d , U0d1e ] };
+
+ // From 'a' to apostrophe (')
+
+ key <AC01> { [ U0d4b , U0d13 ] };
+ key <AC02> { [ U0d47 , U0d0f ] };
+ key <AC03> { [ U0d4d , U0d05 ] };
+ key <AC04> { [ U0d3f , U0d07 ] };
+ key <AC05> { [ U0d41 , U0d09 ] };
+ key <AC06> { [ U0d2a , U0d2b ] };
+ key <AC07> { [ U0d30 , U0d31 ] };
+ key <AC08> { [ U0d15 , U0d16 ] };
+ key <AC09> { [ U0d24 , U0d25 ] };
+ key <AC10> { [ U0d1a , U0d1b ] };
+ key <AC11> { [ U0d1f , U0d20 ] };
+
+ // From 'z' to slash (/)
+
+ key <AB01> { [ U0d46 , U0d0e ] };
+ key <AB02> { [ U0d02 , U200b ] };//X:ZWSP
+ key <AB03> { [ U0d2e , U0d23 ] };
+ key <AB04> { [ U0d28 ] };
+ key <AB05> { [ U0d35 , U0d34 ] };
+ key <AB06> { [ U0d32 , U0d33 ] };
+ key <AB07> { [ U0d38 , U0d36 ] };
+ key <AB08> { [ comma , U0d37 ] };
+ key <AB09> { [ period , U0200d ] };
+ key <AB10> { [ U0d2f , question ] };
+
+};
+
+//Name : Lalitha
+//Description : A transliteration keyboard layout for Malayalam
+//Original Author : Noah Levitt<nlevitt at columbia.edu>
+//Current Main : Jinesh K.J<jinesh.k@gmail.com>, Swathantra Malayalam Computing (SMC)<smc-discuss@googlegroups.com>
+
+partial alphanumeric_keys
+xkb_symbols "mal_lalitha" {
+ name[Group1] = "Malayalam (Lalitha)";
+ key.type="FOUR_LEVEL";
+ //Top Alphanumeric row
+ // Roman digits
+ key <TLDE> { [ U0D4D, U0D02, apostrophe, asciitilde ] }; // apostrophe: virama(chandrakala),anusvara
+ key <AE01> { [ 1, exclam, U0D67, exclam ] };
+ key <AE02> { [ 2, at, U0D68, at ] };
+ key <AE03> { [ 3, numbersign, U0D69, numbersign ] };
+ key <AE04> { [ 4, dollar, U0D6A, dollar ] };
+ key <AE05> { [ 5, percent, U0D6B, percent ] };
+ key <AE06> { [ 6, asciicircum, U0D6C, asciicircum ] };
+ key <AE07> { [ 7, ampersand, U0D6D, ampersand ] };
+ key <AE08> { [ 8, asterisk, U0D6E, asterisk ] };
+ key <AE09> { [ 9, parenleft, U0D6F, parenleft ] };
+ key <AE10> { [ 0, parenright, U0D66, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+ key <BKSL> { [ U005C, U007C, U200C ] };//backslash:pipe,backslash,ZWNJ
+
+ //Q Row
+ key <AD01> { [ U0D48, U0D4C, U0D10, U0D14 ] }; // Q: ai and au matras
+ key <AD02> { [ U0D35 ] }; // W: wa, OM
+ key <AD03> { [ U0D46, U0D47, U0D0E, U0D0F ] }; // E: e,ee matras
+ key <AD04> { [ U0D30, U0D31, U0D43, U0D0B ] }; // R: ra,rra, vocalic Ri
+ key <AD05> { [ U0D24, U0D25, U0D1F, U0D20 ] }; // T: tha, ttha,ta,tta
+ key <AD06> { [ U0D2f ] }; // Y: ya
+ key <AD07> { [ U0D41, U0D42, U0D09, U0D0A ] }; // U: u, uu matras
+ key <AD08> { [ U0D3F, U0D40, U0D07, U0D08 ] }; // I: i, ii matras
+ key <AD09> { [ U0D4A, U0D4B, U0D12, U0D13 ] }; // O: o, oo matras
+ key <AD10> { [ U0D2A ] }; // P: pa
+ key <AD11> { [ bracketleft, braceleft ] };//braceleft:
+ key <AD12> { [ bracketright, braceright ] };//braceright:
+
+ //A Row
+ key <AC01> { [ U0D3E, U0D05, U0D06, U0D05 ] }; // A: a,aa
+ key <AC02> { [ U0D38, U0D37 ] }; // S: sa, ssa
+ key <AC03> { [ U0D26, U0D27, U0D21, U0D22 ] }; // D: soft da,soft dda,hard da,hard dda,
+ key <AC04> { [ U0D2B ] }; // F: pha
+ key <AC05> { [ U0D17, U0D18 ] }; // G: ga, gha
+ key <AC06> { [ U0D39, U0D03 ] }; // H: ha, visarg
+ key <AC07> { [ U0D1C, U0D1D ] }; // J: ja, jha
+ key <AC08> { [ U0D15, U0D16 ] }; // K: ka, kha
+ key <AC09> { [ U0D32, U0D33 ] }; // L: la, vocalic L or lru matra`
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [apostrophe, quotedbl ] };
+
+ //Z Row
+ key <AB01> { [ U0D34, U0D36 ] }; // Z: sha,zha
+ key <AB02> { [ U0D4D, U200B ] }; // X: chandrakala,ZWSP
+ key <AB03> { [ U0D1A, U0D1B ] }; // C: ca, cha
+ key <AB04> { [ U0D35, U200D ] }; // V: va,ZWJ
+ key <AB05> { [ U0D2C, U0D2D ] }; // B: ba, bha
+ key <AB06> { [ U0D28, U0D23, U0D19, U0D1E ] }; // N: na, hard na,nga,nha
+ key <AB07> { [ U0D2E, U0D02 ] }; // M: ma
+ key <AB08> { [ comma, U003C ] };// comma: comma
+ key <AB09> { [ period, U003E ] }; // period: period
+ key <AB10> { [ slash, question ] };
+
+ // begin modifier mappings
+// modifier_map Shift { Shift_L };
+// modifier_map Lock { Caps_Lock };
+// modifier_map Control{ Control_L };
+// modifier_map Mod3 { Mode_switch };
+ include "level3(ralt_switch)"
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "ori" {
+ // Inscript layout for Oriya
+ // Author: G Karunakar <karunakar@freedomink.org>
+ // Date: Wed Nov 13 18:16:19 IST 2002
+
+ name[Group1]= "Oriya";
+
+ key <AE01> { [ U0b67 ] };
+ key <AE02> { [ U0b68 ] };
+ key <AE03> { [ U0b69 ] };
+ key <AE04> { [ U0b6a ] };
+ key <AE05> { [ U0b6b ] };
+ key <AE06> { [ U0b6c ] };
+ key <AE07> { [ U0b6d ] };
+ key <AE08> { [ U0b6e ] };
+ key <AE09> { [ U0b6f ] };
+ key <AE10> { [ U0b66 ] };
+ key <AE11> { [ U0b03 ] };
+ key <AE12> { [ U0b43, U0b0b ] };
+
+ key <AD01> { [ U0b4c, U0b14 ] };
+ key <AD02> { [ U0b48, U0b10 ] };
+ key <AD03> { [ U0b3e, U0b06 ] };
+ key <AD04> { [ U0b40, U0b08 ] };
+ key <AD05> { [ U0b42, U0b0a ] };
+ key <AD06> { [ U0b2c, U0b2d ] };
+ key <AD07> { [ U0b39, U0b19 ] };
+ key <AD08> { [ U0b17, U0b18 ] };
+ key <AD09> { [ U0b26, U0b27 ] };
+ key <AD10> { [ U0b1c, U0b1d ] };
+ key <AD11> { [ U0b21, U0b22 ] };
+ key <AD12> { [ U0b3c, U0b1e ] };
+
+ key <AC01> { [ U0b4b, U0b13 ] };
+ key <AC02> { [ U0b47, U0b0f ] };
+ key <AC03> { [ U0b4d, U0b05 ] };
+ key <AC04> { [ U0b3f, U0b07 ] };
+ key <AC05> { [ U0b41, U0b09 ] };
+ key <AC06> { [ U0b2a, U0b2b ] };
+ key <AC07> { [ U0b30 ] };
+ key <AC08> { [ U0b15, U0b16 ] };
+ key <AC09> { [ U0b24, U0b25 ] };
+ key <AC10> { [ U0b1a, U0b1b ] };
+ key <AC11> { [ U0b1f, U0b20 ] };
+
+ key <AB02> { [ U0b02, U0b01 ] };
+ key <AB03> { [ U0b2e, U0b23 ] };
+ key <AB04> { [ U0b28 ] };
+ key <AB05> { [ U0b35 ] };
+ key <AB06> { [ U0b32, U0b33 ] };
+ key <AB07> { [ U0b38, U0b36 ] };
+ key <AB08> { [ comma , U0b37 ] };
+ key <AB09> { [ period ] };
+ key <AB10> { [ U0b2f, U0040 ] };
+
+ key <RALT> {
+ symbols[Group1] = [ Mode_switch, Multi_key ],
+ virtualMods = AltGr
+ };
+};
+
+// based on a keyboard map from an 'xkb/symbols/tml' file
+// INSCRIPT
+partial alphanumeric_keys
+xkb_symbols "tam" {
+ name[Group1]= "Tamil";
+
+ key <TLDE> { [ U0BCA, U0B92 ] };
+
+ // Mainly numbers.
+ key <AE01> { [ U0BE7 ] };
+ key <AE02> { [ U0BE8 ] };
+ key <AE03> { [ U0BE9 ] };
+ key <AE04> { [ U0BEA ] };
+ key <AE05> { [ U0BEB ] };
+ key <AE06> { [ U0BEC ] };
+ key <AE07> { [ U0BED ] };
+ key <AE08> { [ U0BEE ] };
+ key <AE09> { [ U0BEF, parenleft ] };
+ key <AE10> { [ U0BF0, parenright ] };
+ key <AE11> { [ U0BF1, U0B83 ] };
+ key <AE12> { [ U0BF2, plus ] };
+
+// Mainly long vowels
+
+ key <AD01> { [ U0BCC, U0B94 ] };
+ key <AD02> { [ U0BC8, U0B90 ] };
+ key <AD03> { [ U0BBE, U0B86 ] };
+ key <AD04> { [ U0BC0, U0B88 ] };
+ key <AD05> { [ U0BC2, U0B8A ] };
+
+// Mainly voiced consonants
+
+ key <AD07> { [ U0BB9, U0B99 ] };
+ key <AD10> { [ U0B9c ] };
+ key <AD12> { [ U0B9E ] };
+
+// Mainly short vowels
+ key <AC01> { [ U0BCB, U0B93 ] };
+ key <AC02> { [ U0BC7, U0B8F ] };
+ key <AC03> { [ U0BCD, U0B85 ] };
+ key <AC04> { [ U0BBF, U0B87 ] };
+ key <AC05> { [ U0BC1, U0B89 ] };
+
+// Mainly unvoiced consonants
+
+ key <AC06> { [ U0BAA ] };
+ key <AC07> { [ U0BB0, U0BB1 ] };
+ key <AC08> { [ U0B95 ] };
+ key <AC09> { [ U0BA4 ] };
+ key <AC10> { [ U0B9A ] };
+ key <AC11> { [ U0B9F ] };
+ key <BKSL> { [ U005C, U007C ] };//backslash-bar - Changed to Unicode
+
+ key <AB01> { [ U0BC6, U0B8E ] };
+ key <AB02> { [ U0B82 ] };
+ key <AB03> { [ U0BAE, U0BA3 ] };
+ key <AB04> { [ U0BA8, U0BA9 ] };
+ key <AB05> { [ U0BB5, U0BB4 ] };
+ key <AB06> { [ U0BB2, U0BB3 ] };
+ key <AB07> { [ U0BB8, U0BB6 ] };
+ key <AB08> { [ comma, U0BB7 ] };
+ key <AB09> { [ period, U0964 ] };
+ key <AB10> { [ U0BAF, question ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "tam_unicode" {
+
+// Description: A keymap based on the TamilNet'99 typewriter keyboard
+// Encoding: Unicode (http://www.unicode.org)
+// Author: Thuraiappah Vaseeharan <vasee@ieee.org>
+// Modifed by: Malathi S <malathiramya@gmail.com>
+// Secondary contact: Sri Ramadoss M <amachu@au-kbc.org>
+// Date : Fri Sep 4 11:32:00 CST 2009
+// Mapping:
+
+ name[Group1]= "Tamil (Unicode)";
+
+ // granthas
+ key <TLDE> { [ apostrophe, asciitilde ] };
+ key <AE01> { [ U0031, exclam ] } ;
+ key <AE02> { [ U0032, at ] } ;
+ key <AE03> { [ U0033, numbersign ] } ;
+ key <AE04> { [ U0034, U0BF9 ] } ;
+ key <AE05> { [ U0035, percent ] } ;
+ key <AE06> { [ U0036, asciicircum ] } ;
+ key <AE07> { [ U0037, ampersand ] } ;
+ key <AE08> { [ U0038, asterisk ] } ;
+ key <AE09> { [ U0039, parenleft ] } ;
+ key <AE10> { [ U0030, parenright ] } ;
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+
+
+ // Qrow
+ key <AD01> { [ U0B9E, U0BB6 ] };
+ key <AD02> { [ U0BB1, U0BB7 ] };
+ key <AD03> { [ U0BA8, U0BB8 ] };
+ key <AD04> { [ U0B9A, U0BB9 ] };
+ key <AD05> { [ U0BB5, U0B9C ] };
+ key <AD06> { [ U0BB2 ] };
+ key <AD07> { [ U0BB0 ] };
+ key <AD08> { [ U0BC8, U0B90 ] };
+ key <AD09> { [ U0BCA, U0BCB ] };
+ key <AD10> { [ U0BBF, U0BC0 ] };
+ key <AD11> { [ U0BC1, U0BC2 ] };
+
+ // Arow
+ key <AC01> { [ U0BAF ] };
+ key <AC02> { [ U0BB3 ] };
+ key <AC03> { [ U0BA9 ] };
+ key <AC04> { [ U0B95 ] };
+ key <AC05> { [ U0BAA ] };
+ key <AC06> { [ U0BBE, U0BB4 ] };
+ key <AC07> { [ U0BA4 ] };
+ key <AC08> { [ U0BAE ] };
+ key <AC09> { [ U0B9F ] };
+ key <AC10> { [ U0BCD, U0B83 ] };
+ key <AC11> { [ U0B99 ] };
+
+ // Zrow
+ key <AB01> { [ U0BA3 ] };
+ key <AB02> { [ U0B92, U0B93 ] };
+ key <AB03> { [ U0B89, U0B8A ] };
+ key <AB04> { [ U0B8E, U0B8F ] };
+ key <AB05> { [ U0BC6, U0BC7 ] };
+ key <AB06> { [ U0B94, U0BCC ] };
+ key <AB07> { [ U0B85, U0B86 ] };
+ key <AB08> { [ U0B87, U0B88 ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "tam_keyboard_with_numerals" {
+
+// Description: A keymap based on the TamilNet'99 typewriter keyboard
+// Encoding: Unicode (http://www.unicode.org)
+// Author: Malathi S <malathiramya@gmail.com>
+// Secondary contact: Sri Ramadoss M <amachu@au-kbc.org>
+// Date : Fri Sep 4 11:33:00 CST 2009
+// Mapping:
+
+ name[Group1]= "Tamil (keyboard with numerals)";
+
+ // Mainly numbers.
+ key <TLDE> { [ apostrophe, asciitilde ] };
+ key <AE01> { [ U0BE7, exclam ] };
+ key <AE02> { [ U0BE8, at ] };
+ key <AE03> { [ U0BE9, numbersign ] };
+ key <AE04> { [ U0BEA, U0BF9 ] };
+ key <AE05> { [ U0BEB, percent ] };
+ key <AE06> { [ U0BEC, asciicircum ] };
+ key <AE07> { [ U0BED, ampersand ] };
+ key <AE08> { [ U0BEE, asterisk ] };
+ key <AE09> { [ U0BEF, parenleft ] };
+ key <AE10> { [ U0BE6, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+
+
+ // Qrow
+ key <AD01> { [ U0B9E, U0BB6 ] };
+ key <AD02> { [ U0BB1, U0BB7 ] };
+ key <AD03> { [ U0BA8, U0BB8 ] };
+ key <AD04> { [ U0B9a, U0BB9 ] };
+ key <AD05> { [ U0BB5, U0B9c ] };
+ key <AD06> { [ U0BB2 ] };
+ key <AD07> { [ U0BB0 ] };
+ key <AD08> { [ U0BC8, U0B90 ] };
+ key <AD09> { [ U0BCA, U0BCB ] };
+ key <AD10> { [ U0BBF, U0BC0 ] };
+ key <AD11> { [ U0BC1, U0BC2 ] };
+
+ // Arow
+ key <AC01> { [ U0BAF ] };
+ key <AC02> { [ U0BB3 ] };
+ key <AC03> { [ U0BA9 ] };
+ key <AC04> { [ U0B95 ] };
+ key <AC05> { [ U0BAA ] };
+ key <AC06> { [ U0BBE, U0BB4 ] };
+ key <AC07> { [ U0BA4 ] };
+ key <AC08> { [ U0BAE ] };
+ key <AC09> { [ U0B9F ] };
+ key <AC10> { [ U0BCD, U0B83 ] };
+ key <AC11> { [ U0B99 ] };
+
+ // Zrow
+ key <AB01> { [ U0BA3 ] };
+ key <AB02> { [ U0B92, U0B93 ] };
+ key <AB03> { [ U0B89, U0B8A ] };
+ key <AB04> { [ U0B8E, U0B8F ] };
+ key <AB05> { [ U0BC6, U0BC7 ] };
+ key <AB06> { [ U0B94, U0BCC ] };
+ key <AB07> { [ U0B85, U0B86 ] };
+ key <AB08> { [ U0B87, U0B88 ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "tam_TSCII" {
+
+// Description : A Tamil typewrite-style keymap
+// loosely based on TamilNet'99 reommendations
+// Encoding : TSCII (http://www.tscii.org)
+// Author : Thuraiappah Vaseeharan <vasee@ieee.org>
+// Last Modified: Sat Jan 5 17:11:26 CST 2002
+
+ name[Group1]= "Tamil (TSCII typewriter)";
+
+ key <AE01> { [ 0x10000b7, 0x10000a4 ] }; // aytham
+ key <AE02> { [ 0x1000082, 0x10000a5 ] }; // shri
+ key <AE03> { [ 0x1000083, 0x1000088 ] }; // ja
+ key <AE04> { [ 0x1000084, 0x1000089 ] }; // sha
+ key <AE05> { [ 0x1000085, 0x100008a ] }; // sa
+ key <AE06> { [ 0x1000086, 0x100008b ] }; // ha
+ key <AE07> { [ 0x1000087, 0x100008c ] }; // ksha
+
+ // Qrow
+ key <AD01> { [ 0x10000bb, 0x100009a ] }; // nja
+ key <AD02> { [ 0x10000c8, 0x10000da ] }; // Ra
+ key <AD03> { [ 0x10000bf, 0x10000d1 ] }; // NNa
+ key <AD04> { [ 0x10000ba, 0x10000cd ] }; // ca
+ key <AD05> { [ 0x10000c5, 0x10000d7 ] }; // va
+ key <AD06> { [ 0x10000c4, 0x10000d6 ] }; // la
+ key <AD07> { [ 0x10000c3, 0x10000d5 ] }; // ra
+ key <AD08> { [ 0x10000a8, 0x10000b3 ] }; // sangili, ai
+ key <AD09> { [ 0x10000ca, 0x10000cb ] }; // di, dI
+ key <AD10> { [ 0x10000a2, 0x10000a3 ] }; // visiri
+ key <AD11> { [ dead_acute, 0x10000a3 ] }; // Ukaaram
+
+ // Arow
+ key <AC01> { [ 0x10000c2, 0x10000d4 ] }; // ya
+ key <AC02> { [ 0x10000c7, 0x10000d9 ] }; // La
+ key <AC03> { [ 0x10000c9, 0x10000db ] }; // na
+ key <AC04> { [ 0x10000b8, 0x10000cc ] }; // ka
+ key <AC05> { [ 0x10000c0, 0x10000d2 ] }; // pa
+ key <AC06> { [ dead_grave,0x10000a1 ] }; // pulli,aravu
+ key <AC07> { [ 0x10000be, 0x10000d0 ] }; // tha
+ key <AC08> { [ 0x10000c1, 0x10000d3 ] }; // ma
+ key <AC09> { [ 0x10000bc, 0x10000ce ] }; // da
+ key <AC10> { [ 0x10000c6, 0x10000d8 ] }; // zha
+ key <AC11> { [ 0x10000b9, 0x1000099 ] }; // nga
+
+ // Zrow
+ key <AB01> { [ 0x10000bd, 0x10000cf ] }; // Na
+ key <AB02> { [ 0x10000b4, 0x10000b5 ] }; // o, O
+ key <AB03> { [ 0x10000af, 0x10000b0 ] }; // u, U
+ key <AB04> { [ 0x10000b1, 0x10000b2 ] }; // e, E
+ key <AB05> { [ 0x10000a6, 0x10000a7 ] }; // kombus
+ key <AB06> { [ 0x10000b6, 0x10000aa ] }; // au
+ key <AB07> { [ 0x10000ab, 0x10000ac ] }; // a, A
+ key <AB08> { [ 0x10000fe, 0x10000ae ] }; // i, I
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "tam_TAB" {
+
+// Description: A keymap based on the TamilNet'99 typewriter keyboard
+// Encoding: TAB (http://www.tamilnet99.org)
+// Author: Thuraiappah Vaseeharan <t_vasee@yahoo.com>
+// Date : Sun Aug 12 02:23:00 CDT 2001
+
+ name[Group1]= "Tamil (TAB typewriter)";
+
+ // numeral row
+ key <AE01> { [ 0x10000e7, 0x10000a7 ] } ;
+ key <AE02> { [ 0x10000fa, 0x10000a8 ] } ;
+ key <AE03> { [ 0x10000fb ] } ;
+ key <AE04> { [ 0x10000fc ] } ;
+ key <AE05> { [ 0x10000fd ] } ;
+ key <AE06> { [ 0x10000fe ] } ;
+ key <AE07> { [ 0x10000ff ] } ;
+
+ // q-row
+ key <AD01> { [ 0x10000eb, 0x10000b3 ] };
+ key <AD02> { [ 0x10000f8, 0x10000c1 ] };
+ key <AD03> { [ 0x10000ef, 0x10000b8 ] };
+ key <AD04> { [ 0x10000ea, 0x10000b2 ] };
+ key <AD05> { [ 0x10000f5, 0x10000be ] };
+ key <AD06> { [ 0x10000f4, 0x10000bd ] };
+ key <AD07> { [ 0x10000f3, 0x10000bc ] };
+ key <AD08> { [ 0x10000ac, 0x10000e4 ] };
+ key <AD09> { [ 0x10000ae, 0x10000af ] };
+ key <AD10> { [ 0x10000a4, 0x10000a6 ] };
+ key <AD11> { [ dead_circumflex, 0x10000a6 ] }; // Ukaaram
+
+ // a-row
+ key <AC01> { [ 0x10000f2, 0x10000bb ] };
+ key <AC02> { [ 0x10000f7, 0x10000c0 ] };
+ key <AC03> { [ 0x10000f9, 0x10000c2 ] };
+ key <AC04> { [ 0x10000e8, 0x10000b0 ] };
+ key <AC05> { [ 0x10000f0, 0x10000b9 ] };
+ key <AC06> { [ 0x10000a2, 0x10000a3 ] };
+ key <AC07> { [ 0x10000ee, 0x10000b6 ] };
+ key <AC08> { [ 0x10000f1, 0x10000ba ] };
+ key <AC09> { [ 0x10000ec, 0x10000b4 ] };
+ key <AC10> { [ 0x10000f6, 0x10000bf ] };
+ key <AC11> { [ 0x10000e9, 0x10000b1 ] };
+
+ // z-row
+ key <AB01> { [ 0x10000ed, 0x10000b5 ] };
+ key <AB02> { [ 0x10000e5, 0x10000e6 ] };
+ key <AB03> { [ 0x10000e0, 0x10000e1 ] };
+ key <AB04> { [ 0x10000e2, 0x10000e3 ] };
+ key <AB05> { [ 0x10000aa, 0x10000ab ] };
+ key <AB06> { [ 0x10000ac, 0x10000a3 ] };
+ key <AB07> { [ 0x10000dc, 0x10000dd ] };
+ key <AB08> { [ 0x10000de, 0x10000df ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "tel" {
+
+ // Inscript layout for Telugu using Unicode
+ // Author: G Karunakar <karunakar@freedomink.org>
+ // Date:
+ // See layout at http://www.indlinux.org/keymap/telugu.php
+
+ name[Group1]= "Telugu";
+
+ key <TLDE> { [ U0c4a, U0c12 ] };
+ key <AE01> { [ U0c67 ] };
+ key <AE02> { [ U0c68 ] };
+ key <AE03> { [ U0c69, numbersign ] };
+ key <AE04> { [ U0c6a, dollar ] };
+ key <AE05> { [ U0c6b, percent ] };
+ key <AE06> { [ U0c6c, asciicircum ] };
+ key <AE07> { [ U0c6d, ampersand ] };
+ key <AE08> { [ U0c6e, asterisk ] };
+ key <AE09> { [ U0c6f, parenleft ] };
+ key <AE10> { [ U0c66, parenright ] };
+ key <AE11> { [ U0c03, underscore ] };
+ key <AE12> { [ U0c43, U0c0b ] };
+ key <BKSP> { [ BackSpace ] };
+
+ key <AD01> { [ U0c4c, U0c14 ] };
+ key <AD02> { [ U0c48, U0c10 ] };
+ key <AD03> { [ U0c3e, U0c06 ] };
+ key <AD04> { [ U0c40, U0c08 ] };
+ key <AD05> { [ U0c42, U0c0a ] };
+ key <AD06> { [ U0c2c, U0c2d ] };
+ key <AD07> { [ U0c39, U0c19 ] };
+ key <AD08> { [ U0c17, U0c18 ] };
+ key <AD09> { [ U0c26, U0c27 ] };
+ key <AD10> { [ U0c1c, U0c1d ] };
+ key <AD11> { [ U0c21, U0c22 ] };
+ key <AD12> { [ U0c1e ] };
+
+ key <AC01> { [ U0c4b, U0c13 ] };
+ key <AC02> { [ U0c47, U0c0f ] };
+ key <AC03> { [ U0c4d, U0c05 ] };
+ key <AC04> { [ U0c3f, U0c07 ] };
+ key <AC05> { [ U0c41, U0c09 ] };
+ key <AC06> { [ U0c2a, U0c2b ] };
+ key <AC07> { [ U0c30, U0c31 ] };
+ key <AC08> { [ U0c15, U0c16 ] };
+ key <AC09> { [ U0c24, U0c25 ] };
+ key <AC10> { [ U0c1a, U0c1b ] };
+ key <AC11> { [ U0c1f, U0c20 ] };
+
+ key <AB01> { [ U0c46, U0c0e ] };
+ key <AB02> { [ U0c02, U0c01 ] };
+ key <AB03> { [ U0c2e, U0c23 ] };
+ key <AB04> { [ U0c28 ] };
+ key <AB05> { [ U0c35 ] };
+ key <AB06> { [ U0c32, U0c33 ] };
+ key <AB07> { [ U0c38, U0c36 ] };
+ key <AB08> { [ comma , U0c37 ] };
+ key <AB09> { [ period ] };
+ key <AB10> { [ U0c2f, U0040 ] };
+
+ key <RALT> {
+ symbols[Group1] = [ Mode_switch, Multi_key ],
+ virtualMods = AltGr
+ };
+};
+
+partial alphanumeric_keys
+xkb_symbols "urd-phonetic" {
+ include "pk(urd-phonetic)"
+ name[Group1]= "Urdu (phonetic)";
+};
+
+partial alphanumeric_keys
+xkb_symbols "urd-phonetic3" {
+ include "pk(urd-crulp)"
+ name[Group1]= "Urdu (alternative phonetic)";
+};
+
+partial alphanumeric_keys
+xkb_symbols "urd-winkeys" {
+ include "pk(urd-nla)"
+ name[Group1]= "Urdu (WinKeys)";
+};
+
+// based on a keyboard map from an 'xkb/symbols/gur' file
+
+partial alphanumeric_keys
+xkb_symbols "guru" {
+ name[Group1]= "Punjabi (Gurmukhi)";
+
+ // Mainly numbers.
+ key <AE01> { [ U0A67 ] };
+ key <AE02> { [ U0A68 ] };
+ key <AE03> { [ U0A69, U0A71 ] };
+ key <AE04> { [ U0A6A, U0A74 ] };
+ key <AE05> { [ U0A6B, U262C ] };
+ key <AE06> { [ U0A6C ] };
+ key <AE07> { [ U0A6D ] };
+ key <AE08> { [ U0A6e ] };
+ key <AE09> { [ U0A6F, parenleft ] };
+ key <AE10> { [ U0A66, parenright ] };
+ key <AE11> { [ gur_visarga ] };
+ key <AE12> { [ equal, plus ] };
+
+// Mainly long vowels
+
+ key <AD01> { [ U0A4C, U0A14 ] };
+ key <AD02> { [ U0A48, U0A10 ] };
+ key <AD03> { [ U0A3E, U0A06 ] };
+ key <AD04> { [ U0A40, U0A08 ] };
+ key <AD05> { [ U0A42, U0A0A ] };
+
+// Mainly voiced consonants
+
+ key <AD06> { [ U0A2C, U0A2D ] };
+ key <AD07> { [ U0A39, U0A19 ] };
+ key <AD08> { [ U0A17, U0A18 ] };
+ key <AD09> { [ U0A26, U0A27 ] };
+ key <AD10> { [ U0A1C, U0A1D ] };
+ key <AD11> { [ U0A21, U0A22 ] };
+ key <AD12> { [ U0A3C, U0A1E ] };
+
+// Mainly short vowels
+ key <AC01> { [ U0A4B, U0A13 ] };
+ key <AC02> { [ U0A47, U0A0F ] };
+ key <AC03> { [ U0A4D, U0A05 ] };
+ key <AC04> { [ U0A3F, U0A07 ] };
+ key <AC05> { [ U0A41, U0A09 ] };
+
+// Mainly unvoiced consonants
+
+ key <AC06> { [ U0A2A, U0A2B ] };
+ key <AC07> { [ U0A30, U0A5C ] };
+ key <AC08> { [ U0A15, U0A16 ] };
+ key <AC09> { [ U0A24, U0A25 ] };
+ key <AC10> { [ U0A1A, U0A1B ] };
+ key <AC11> { [ U0A1F, U0A20 ] };
+ key <BKSL> { [ U005C, U007C ] };
+
+ key <AB01> { [ z, U0A01 ] };
+ key <AB02> { [ U0A02, U0A70, U0A71 ] };
+ key <AB03> { [ U0A2E, U0A23 ] };
+ key <AB04> { [ U0A28, U0A28 ] };
+ key <AB05> { [ U0A35, U0A35 ] };
+ key <AB06> { [ U0A32, U0A33 ] };
+ key <AB07> { [ U0A38, U0A36 ] };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ period, U0964 ] };
+ key <AB10> { [ U0A2F, question ] };
+};
+
+//Name : Jhelum (Refind Inscript)
+//Description : A Jhelum keyboard layout for Gurmukhi (Punjabi)
+// http://www.satluj.org/Jhelum.html
+//Modified for Inscript to make
+//Original Author : Amanpreet Singh Alam <apreet.alam@gmail.com
+
+partial alphanumeric_keys
+xkb_symbols "jhelum" {
+ name[Group1] = "Punjabi (Gurmukhi Jhelum)";
+ key.type="FOUR_LEVEL";
+ //Top Alphanumeric row
+ // Roman digits
+ key <TLDE> { [ apostrophe, asciitilde, U0A02,U0A01 ] }; // apostrophe: anusvara, candrabindu
+ key <AE01> { [ 1,exclam, U0A67, exclam ] };
+ key <AE02> { [ 2,at, U0A68, at ] };
+ key <AE03> { [ 3,numbersign, U0A69, numbersign ] };
+ key <AE04> { [ 4,dollar, U0A6A, dollar ] };
+ key <AE05> { [ 5,percent,U0A6B, percent ] };
+ key <AE06> { [ 6,asciicircum, U0A6C,asciicircum ] };
+ key <AE07> { [ 7,ampersand,U0A6D,ampersand ] };
+ key <AE08> { [ 8,asterisk,U0A6E, asterisk ] };
+ key <AE09> { [ 9,parenleft,U0A6F,parenleft ] };
+ key <AE10> { [ 0,parenright,U0A66,parenright ] };
+ key <AE11> { [ minus,underscore] };
+ key <AE12> { [ equal,plus] };
+ key <BKSL> { [ U0964,U0965,U007C,U005C] }; //pipe : danda, double danda
+
+ //Q Row
+ key <AD01> { [ U0A4C, U0A14 ] }; // Q: oo, ooh
+ key <AD02> { [ U0A48, U0A10 ] }; // W: ee, ae
+ key <AD03> { [ U0A3E, U0A06 ] }; // E: a, aa
+ key <AD04> { [ U0A40, U0A08 ] }; // R: ee, ai
+ key <AD05> { [ U0A42, U0A0A ] }; // T: u, uu
+ key <AD06> { [ U0A30, U0A5C ] }; // Y: ra, raa
+ key <AD07> { [ U0A26, U0A27 ] }; // U: tha, thha
+ key <AD08> { [ U0A17, U0A18 ] }; // I:ga, gha
+ key <AD09> { [ U0A24, U0A1F ] }; // O: ta, tha
+ key <AD10> { [ U0A2A, U0A5E ] }; // P: pa, pha
+ key <AD11> { [ U0A21, U0A22, bracketleft, braceleft ] };
+ key <AD12> { [ U0A19, U0A1E, bracketright, braceright ] };
+
+ //A Row
+ key <AC01> { [ U0A4B, U0A13 ] }; // A: o, oo
+ key <AC02> { [ U0A40, U0A0F ] }; // S: e, ee
+ key <AC03> { [ U0A4D, U0A05 ] }; // D: halant, aa
+ key <AC04> { [ U0A3F, U0A07 ] }; // F: i, aa
+ key <AC05> { [ U0A41, U0A09 ] }; // G: u, uh
+ key <AC06> { [ U0A39, U0A20 ] }; // H: ha, thha
+ key <AC07> { [ U0A1C, U0A1D ] }; // J: ja, jha
+ key <AC08> { [ U0A15, U0A16 ] }; // K: ka, kha
+ key <AC09> { [ U0A32, U0A25 ] }; // L: la, tha
+ key <AC10> { [ U0A38, semicolon, colon ] }; //; sa
+ key <AC11> { [apostrophe, quotedbl ] };
+
+ //Z Row
+ key <AB01> { [ U0A71, U0A3C ] }; // Z: addak, par bindi
+ key <AB02> { [ U0A02, U0A70 ] }; // X: bindi, tippi
+ key <AB03> { [ U0A1A, U0A1B ] }; // C: ca, cha
+ key <AB04> { [ U0A35, U0A2F ] }; // V: va, ya
+ key <AB05> { [ U0A2C, U0A2D ] }; // B: ba, bha
+ key <AB06> { [ U0A28, U0A23 ] }; // N: na, nha
+ key <AB07> { [ U0A2E, U0A2E ] }; // M: ma
+ key <AB08> { [ comma, U262C ] };// comma: comma, dev abbreviation sign
+ key <AB09> { [ period, U0A74 ] }; // period: period, nukta
+ key <AB10> { [ slash, question ] };
+
+// begin modifier mappings
+// modifier_map Shift { Shift_L };
+// modifier_map Lock { Caps_Lock };
+// modifier_map Control{ Control_L };
+// modifier_map Mod3 { Mode_switch };
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "olpc" {
+
+// Contact: Walter Bender <walter@laptop.org>
+
+ include "in(deva)"
+ key <TLDE> { [ U094A, U0912 ] }; // DEVANAGARI VOWEL SIGN SHORT O; DEVANAGARI LETTER SHORT O
+ key <AE01> { [ U0967, U090D ] }; // DEVANAGARI DIGIT ONE; DEVANAGARI LETTER CANDRA E
+ key <AE02> { [ U0968, U0945 ] }; // DEVANAGARI DIGIT TWO; DEVANAGARI VOWEL SIGN CANDRA E
+ key <AE03> { [ U0969 ] }; // DEVANAGARI DIGIT THREE;
+ key <AE04> { [ U096A ] }; // DEVANAGARI DIGIT FOUR;
+ key <AE05> { [ U096B ] }; // DEVANAGARI DIGIT FIVE;
+ key <AE06> { [ U096C ] }; // DEVANAGARI DIGIT SIX;
+ key <AE07> { [ U096D ] }; // DEVANAGARI DIGIT SEVEN;
+ key <AE08> { [ U096E ] }; // DEVANAGARI DIGIT EIGHT;
+ key <AE09> { [ U096F, parenleft ] }; // DEVANAGARI DIGIT NINE;
+ key <AE10> { [ U0966, parenright ] }; // DEVANAGARI DIGIT ZERO;
+ key <AE11> { [ minus, U0903 ] }; // DEVANAGARI SIGN VISARGA;
+ key <AE12> { [ U0943, U090B ] }; // DEVANAGARI VOWEL SIGN VOCALIC R; DEVANAGARI LETTER VOCALIC R
+
+ key <AD01> { [ U094C, U0914 ] }; // DEVANAGARI VOWEL SIGN AU; DEVANAGARI LETTER AU
+ key <AD02> { [ U0948, U0910 ] }; // DEVANAGARI VOWEL SIGN AI; DEVANAGARI LETTER AI
+ key <AD03> { [ U093E, U0906 ] }; // DEVANAGARI VOWEL SIGN AA; DEVANAGARI LETTER AA
+ key <AD04> { [ U0940, U0908 ] }; // DEVANAGARI VOWEL SIGN II; DEVANAGARI LETTER II
+ key <AD05> { [ U0942, U090A ] }; // DEVANAGARI VOWEL SIGN UU; DEVANAGARI LETTER UU
+ key <AD06> { [ U092C, U092D ] }; // DEVANAGARI LETTER BA; DEVANAGARI LETTER BHA
+ key <AD07> { [ U0939, U0919 ] }; // DEVANAGARI LETTER HA; DEVANAGARI LETTER NGA
+ key <AD08> { [ U0917, U0918 ] }; // DEVANAGARI LETTER GA; DEVANAGARI LETTER GHA
+ key <AD09> { [ U0926, U0927 ] }; // DEVANAGARI LETTER DA; DEVANAGARI LETTER DHA
+ key <AD10> { [ U091C, U091D ] }; // DEVANAGARI LETTER JA; DEVANAGARI LETTER JHA
+ key <AD11> { [ U0921, U0922 ] }; // DEVANAGARI LETTER DDA; DEVANAGARI LETTER DDHA
+ key <AD12> { [ U093C, U091E ] }; // DEVANAGARI SIGN NUKTA; DEVANAGARI LETTER NYA
+
+ key <BKSL> { [ U0949, U0911 ] }; // DEVANAGARI VOWEL SIGN CANDRA O; DEVANAGARI LETTER CANDRA O
+
+ key <AC01> { [ U094B, U0913 ] }; // DEVANAGARI VOWEL SIGN O; DEVANAGARI LETTER O
+ key <AC02> { [ U0947, U090F ] }; // DEVANAGARI VOWEL SIGN E; DEVANAGARI LETTER E
+ key <AC03> { [ U094D, U0905 ] }; // DEVANAGARI SIGN VIRAMA; DEVANAGARI LETTER A
+ key <AC04> { [ U093F, U0907 ] }; // DEVANAGARI VOWEL SIGN I; DEVANAGARI LETTER I
+ key <AC05> { [ U0941, U0909 ] }; // DEVANAGARI VOWEL SIGN U; DEVANAGARI LETTER U
+ key <AC06> { [ U092A, U092B ] }; // DEVANAGARI LETTER PA; DEVANAGARI LETTER PHA
+ key <AC07> { [ U0930, U0931 ] }; // DEVANAGARI LETTER RA; DEVANAGARI LETTER RRA
+ key <AC08> { [ U0915, U0916 ] }; // DEVANAGARI LETTER KA; DEVANAGARI LETTER KHA
+ key <AC09> { [ U0924, U0925 ] }; // DEVANAGARI LETTER TA; DEVANAGARI LETTER THA
+ key <AC10> { [ U091A, U091B ] }; // DEVANAGARI LETTER CA; DEVANAGARI LETTER CHA
+ key <AC11> { [ U091F, U0920 ] }; // DEVANAGARI LETTER TTA; DEVANAGARI LETTER TTHA
+
+ key <AB01> { [ U0946, U090E ] }; // DEVANAGARI VOWEL SIGN SHORT E; DEVANAGARI LETTER SHORT E
+ key <AB02> { [ U0902, U0901 ] }; // DEVANAGARI SIGN ANUSVARA; DEVANAGARI SIGN CANDRABINDU
+ key <AB03> { [ U092E, U0923 ] }; // DEVANAGARI LETTER MA; DEVANAGARI LETTER NNA
+ key <AB04> { [ U0928, U0929 ] }; // DEVANAGARI LETTER NA; DEVANAGARI LETTER NNNA
+ key <AB05> { [ U0935, U0934 ] }; // DEVANAGARI LETTER VA; DEVANAGARI LETTER LLLA
+ key <AB06> { [ U0932, U0933 ] }; // DEVANAGARI LETTER LA; DEVANAGARI LETTER LLA
+ key <AB07> { [ U0938, U0936 ] }; // DEVANAGARI LETTER SA; DEVANAGARI LETTER SHA
+ key <AB08> { [ comma, U0937 ] }; // DEVANAGARI LETTER SSA
+ key <AB09> { [ period, U0964 ] }; // DEVANAGARI DANDA
+ key <AB10> { [ U092F, U095F ] }; // DEVANAGARI LETTER YA; DEVANAGARI LETTER YYA
+
+ // space, space, Zero-Width-Non-Joiner (ZWNJ), Zero-Width-Joiner (ZWJ):
+ include "nbsp(zwnj3zwj4)"
+
+ include "group(olpc)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "hin-wx" {
+
+ name[Group1]= "Hindi (Wx)";
+
+ key <TLDE> { [ grave, asciitilde, 2, 3 ] };
+
+ key <AE01> { [ 0x1000967, exclam ] };
+ key <AE02> { [ 0x1000968, at ] };
+ key <AE03> { [ 0x1000969 , numbersign ] };
+ key <AE04> { [ 0x100096A , dollar ] };
+ key <AE05> { [ 0x100096B , percent ] };
+ key <AE06> { [ 0x100096C , asciicircum ] };
+ key <AE07> { [ 0x100096D , ampersand ] };
+ key <AE08> { [ 0x100096e , asterisk ] };
+ key <AE09> { [ 0x100096F, parenleft ] };
+ key <AE10> { [ 0x1000966, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+
+
+ key <AD01> { [ 0x1000943, 0x1000944, 0x100090B, 0x1000960] };
+ key <AD02> { [ 0x1000924, 0x1000925 ] };
+ key <AD03> { [ 0x1000947, 0x1000948, 0x100090F, 0x1000910] };
+ key <AD04> { [ 0x1000930, 0x1000937 ] };
+ key <AD05> { [ 0x100091F, 0x1000920 ] };
+
+
+ key <AD06> { [ 0x100092F ] };
+ key <AD07> { [ 0x1000941, 0x1000942, 0x1000909, 0x100090A ] };
+ key <AD08> { [ 0x100093F, 0x1000940, 0x1000907, 0x1000908 ] };
+ key <AD09> { [ 0x100094B, 0x100094C, 0x1000913, 0x1000914] };
+ key <AD10> { [ 0x100092A, 0x100092B ] };
+ key <AD11> { [ bracketleft, braceleft ] };
+ key <AD12> { [ bracketright, braceright ] };
+ key <BKSL> { [ backslash, bar, 0x1000964, 0x1000965 ] };
+
+ key <AC01> { [ 0x100094D, 0x100093E, 0x1000905,0x1000906 ] };
+ key <AC02> { [ 0x1000938, 0x1000936 ] };
+ key <AC03> { [ 0x1000921, 0x1000922 ] };
+ key <AC04> { [ 0x1000919, 0x100091E ] };
+ key <AC05> { [ 0x1000917, 0x1000918 ] };
+
+
+ key <AC06> { [ 0x1000939, 0x1000903 ] };
+ key <AC07> { [ 0x100091C, 0x100091D ] };
+ key <AC08> { [ 0x1000915, 0x1000916 ] };
+ key <AC09> { [ 0x1000932, 0x1000962, 0x1000933, 0x100090C] };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ quoteright, quotedbl ] };
+
+ key <AB01> { [ 0x1000901, 0x100093C, 0x100093D, 0x1000950] };
+ key <AB02> { [ 0x1000926, 0x1000927 ] };
+ key <AB03> { [ 0x100091A, 0x100091B ] };
+ key <AB04> { [ 0x1000935, dead_V ] };
+ key <AB05> { [ 0x100092C, 0x100092D ] };
+ key <AB06> { [ 0x1000928, 0x1000923 ] };
+ key <AB07> { [ 0x100092E, 0x1000902 ] };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ slash, question ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "eng" {
+
+ name[Group1]= "English (India, with RupeeSign)";
+
+ include "us(basic)"
+
+ include "rupeesign(4)"
+
+ include "level3(ralt_switch)"
+};
+
+
+// Description : Enhanced INSCRIPT keymap for Malayalam
+// Encoding : Unicode (http://www.unicode.org)
+// Author : Mahesh T Pai <paivakil@gmail.com>
+// Date : March, 2011
+// Source : http://www.nongnu.org/smc/docs/images/ml_inscript_layout.jpg
+// Comment : Based on the Inscript Keyboard created by M Baiju
+// Mapping:
+
+partial alphanumeric_keys
+xkb_symbols "mal_enhanced" {
+
+ name[Group1] = "Malayalam (enhanced Inscript with Rupee Sign)";
+
+ //From grave to backslash (\)
+
+ key <TLDE> { [ U0d4a , U0d12 ] };
+ key <AE01> { [ U0d67 , exclam ] };
+ key <AE02> { [ U0d68 , at ] };
+ key <AE03> { [ U0d69 , numbersign ] };
+ key <AE04> { [ U0d6a , dollar ] };
+ key <AE05> { [ U0d6b , percent ] };
+ key <AE06> { [ U0d6c , asciicircum ] };
+ key <AE07> { [ U0d6d , ampersand ] };
+ key <AE08> { [ U0d6e , U0d7e ] };
+ key <AE09> { [ U0d6f , parenleft ] };
+ key <AE10> { [ U0d66 , parenright ] };
+
+ key <AE11> { [ minus , U0d03 ] };
+ key <AE12> { [ U0d43 , U0d0b ] };
+ key <BKSL> { [ U0d7c , U05C ] }; //bksl: chillu RR
+
+
+ // From 'q' to right bracket (])
+
+ key <AD01> { [ U0d57 , U0d14 ] };
+ key <AD02> { [ U0d48 , U0d10 ] };
+ key <AD03> { [ U0d3e , U0d06 ] };
+ key <AD04> { [ U0d40 , U0d08 ] };
+ key <AD05> { [ U0d42 , U0d0a ] };
+ key <AD06> { [ U0d2c , U0d2d ] };
+ key <AD07> { [ U0d39 , U0d19 ] };
+ key <AD08> { [ U0d17 , U0d18 ] };
+ key <AD09> { [ U0d26 , U0d27 ] };
+ key <AD10> { [ U0d1c , U0d1d ] };
+ key <AD11> { [ U0d21 , U0d22 ] };
+ key <AD12> { [ U0200d , U0d1e ] };
+
+ // From 'a' to apostrophe (')
+
+ key <AC01> { [ U0d4b , U0d13 ] };
+ key <AC02> { [ U0d47 , U0d0f ] };
+ key <AC03> { [ U0d4d , U0d05 ] };
+ key <AC04> { [ U0d3f , U0d07 ] };
+ key <AC05> { [ U0d41 , U0d09 ] };
+ key <AC06> { [ U0d2a , U0d2b ] };
+ key <AC07> { [ U0d30 , U0d31 ] };
+ key <AC08> { [ U0d15 , U0d16 ] };
+ key <AC09> { [ U0d24 , U0d25 ] };
+ key <AC10> { [ U0d1a , U0d1b ] };
+ key <AC11> { [ U0d1f , U0d20 ] };
+
+ // From 'z' to slash (/)
+
+ key <AB01> { [ U0d46 , U0d0e ] };
+ key <AB02> { [ U0d02 , U0d7a ] };
+ key <AB03> { [ U0d2e , U0d23 ] };
+ key <AB04> { [ U0d28 , U0d7b ] };
+ key <AB05> { [ U0d35 , U0d34 ] };
+ key <AB06> { [ U0d32 , U0d33 ] };
+ key <AB07> { [ U0d38 , U0d36 ] };
+ key <AB08> { [ comma , U0d37 ] };
+ key <AB09> { [ period , U0d7d ] }; //chillu l
+ key <AB10> { [ U0d2f , question ] };
+
+ // hope this includes the rupee sign at alt + 4
+
+ include "rupeesign(4)"
+ include "level3(ralt_switch)"
+
+};
+
--- /dev/null
+// EAK (Easy Access, Internet, Multimedia, PDA) keyboards
+// Copyright (C) 2002 Stanislav Brabec <sbrabec@suse.cz>
+//
+// Based on LinEAK project
+// LinEAK - Linux support for Easy Access and Internet Keyboards
+// Copyright (C) 2001, 2002 Mark Smulders <Mark@PIRnet.nl>
+
+// Usage in XF86Config:
+// Option "XkbLayout" "my_kb_layout"
+// Option "XkbVariant" "my_kb_variant"
+// Option "XkbModel" "my_eak_type"
+// Option "XkbRules" "xfree86"
+// Simple command line usage:
+// setxkbmap 'my_kb_layout' -variant 'my_kb_variant' -model 'my_eak_type'
+
+// All keyboards listed here should be also mentioned in
+// rules/base, base.lst and base.xml.
+
+// Very common set of media keys
+partial hidden alphanumeric_keys
+xkb_symbols "media_common" {
+ key <I01> { [ XF86AudioMedia ] };
+ key <I10> { [ XF86AudioPrev ] };
+ key <I19> { [ XF86AudioNext ] };
+ key <I20> { [ XF86AudioMute ] };
+ key <I22> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I24> { [ XF86AudioStop, XF86Eject ] };
+ key <I2E> { [ XF86AudioLowerVolume ] };
+ key <I30> { [ XF86AudioRaiseVolume ] };
+ key <K5A> { [ XF86Eject ] };
+ key <K6C> { [ XF86Eject ] };
+};
+
+// popular web navigation combination
+partial hidden alphanumeric_keys
+xkb_symbols "nav_common" {
+ key <I21> { [ XF86Calculator ] };
+ key <I32> { [ XF86WWW ] };
+ key <I65> { [ XF86Search ] };
+ key <I66> { [ XF86Favorites ] };
+ key <I67> { [ XF86Reload ] };
+ key <I68> { [ XF86Stop ] };
+ key <I69> { [ XF86Forward ] };
+ key <I6A> { [ XF86Back ] };
+ key <I6B> { [ XF86MyComputer ] };
+ key <I6C> { [ XF86Mail ] };
+ key <I6D> { [ XF86AudioMedia ] };
+};
+
+// ACPI Standard
+partial hidden alphanumeric_keys
+xkb_symbols "acpi_common" {
+ key <I5E> { [ XF86PowerOff ] };
+ key <I5F> { [ XF86Standby ] };
+ key <I63> { [ XF86WakeUp ] };
+ key <I74> { [ XF86Battery ] };
+ key <I76> { [ XF86WLAN ] };
+ key <I16> { [ XF86Sleep ] };
+};
+
+// Combined sections, for simplicity
+partial hidden alphanumeric_keys
+xkb_symbols "media_nav_common" {
+ include "inet(media_common)"
+ include "inet(nav_common)"
+};
+
+partial hidden alphanumeric_keys
+xkb_symbols "media_nav_acpi_common" {
+ include "inet(media_common)"
+ include "inet(nav_common)"
+ include "inet(acpi_common)"
+};
+
+partial hidden alphanumeric_keys
+xkb_symbols "nav_acpi_common" {
+ include "inet(nav_common)"
+ include "inet(acpi_common)"
+};
+
+partial hidden alphanumeric_keys
+xkb_symbols "media_acpi_common" {
+ include "inet(media_common)"
+ include "inet(acpi_common)"
+};
+
+// Evdev Standardized Keycodes
+partial alphanumeric_keys
+xkb_symbols "evdev" {
+ key <MUTE> { [ XF86AudioMute ] };
+ key <VOL-> { [ XF86AudioLowerVolume ] };
+ key <VOL+> { [ XF86AudioRaiseVolume ] };
+ key <POWR> { [ XF86PowerOff ] };
+ key <STOP> { [ Cancel ] };
+ key <AGAI> { [ Redo ] };
+ key <PROP> { [ SunProps ] };
+ key <UNDO> { [ Undo ] };
+ key <FRNT> { [ SunFront ] };
+ key <COPY> { [ XF86Copy ] };
+ key <OPEN> { [ SunOpen ] };
+ key <PAST> { [ XF86Paste ] };
+ key <FIND> { [ Find ] };
+ key <CUT> { [ XF86Cut ] };
+ key <HELP> { [ Help ] };
+ key <LNFD> { [ Linefeed ] };
+
+// Commented out because HZTG has same keycode as TLDE
+// key <HZTG> { [ Zenkaku_Hankaku ] };
+
+ key <HKTG> { [ Hiragana_Katakana ] };
+ key <HENK> { [ Henkan ] };
+ key <MUHE> { [ Muhenkan ] };
+ key <KATA> { [ Katakana ] };
+ key <HIRA> { [ Hiragana ] };
+ key <RO> { [ Romaji ] };
+
+ key <HNGL> { [ Hangul ] };
+ key <HJCV> { [ Hangul_Hanja ] };
+ key <FK21> { [ XF86TouchpadToggle ] };
+ key <FK22> { [ XF86TouchpadOn ] };
+ key <FK23> { [ XF86TouchpadOff ] };
+
+// key <I120> { [ ] }; // KEY_MACRO
+ key <I126> { [ plusminus ] };
+ key <I128> { [ XF86LaunchA ] };
+ key <I147> { [ XF86MenuKB ] };
+ key <I148> { [ XF86Calculator ] };
+// key <I149> { [ ] }; // KEY_SETUP
+ key <I150> { [ XF86Sleep ] };
+ key <I151> { [ XF86WakeUp ] };
+ key <I152> { [ XF86Explorer ] };
+ key <I153> { [ XF86Send ] };
+// key <I154> { [ ] }; // KEY_DELETEFILE
+ key <I155> { [ XF86Xfer ] };
+ key <I156> { [ XF86Launch1 ] };
+ key <I157> { [ XF86Launch2 ] };
+ key <I158> { [ XF86WWW ] };
+ key <I159> { [ XF86DOS ] };
+ key <I160> { [ XF86ScreenSaver ] };
+// key <I161> { [ ] }; // KEY_DIRECTION
+ key <I162> { [ XF86RotateWindows ] };
+ key <I163> { [ XF86Mail ] };
+ key <I164> { [ XF86Favorites ] };
+ key <I165> { [ XF86MyComputer ] };
+ key <I166> { [ XF86Back ] };
+ key <I167> { [ XF86Forward ] };
+// key <I168> { [ ] }; // KEY_CLOSECD (opposite of eject)
+ key <I169> { [ XF86Eject ] };
+ key <I170> { [ XF86Eject, XF86Eject ] };
+ key <I171> { [ XF86AudioNext ] };
+ key <I172> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I173> { [ XF86AudioPrev ] };
+ key <I174> { [ XF86AudioStop, XF86Eject ] };
+ key <I175> { [ XF86AudioRecord ] };
+ key <I176> { [ XF86AudioRewind ] };
+ key <I177> { [ XF86Phone ] };
+// key <I178> { [ ] }; // KEY_ISO
+ key <I179> { [ XF86Tools ] };
+ key <I180> { [ XF86HomePage ] };
+ key <I181> { [ XF86Reload ] };
+ key <I182> { [ XF86Close ] };
+// key <I183> { [ ] }; // KEY_MOVE
+// key <I184> { [ ] }; // KEY_EDIT
+ key <I185> { [ XF86ScrollUp ] };
+ key <I186> { [ XF86ScrollDown ] };
+ key <I187> { [ parenleft ] };
+ key <I188> { [ parenright ] };
+ key <I189> { [ XF86New ] };
+ key <I190> { [ Redo ] };
+ key <I192> { [ XF86LaunchA ] };
+ key <I193> { [ XF86LaunchC ] };
+ key <I194> { [ XF86LaunchD ] };
+ key <I195> { [ XF86LaunchE ] };
+ key <I196> { [ XF86LaunchF ] };
+ key <I208> { [ XF86AudioPlay ] };
+ key <I209> { [ XF86AudioPause ] };
+ key <I210> { [ XF86Launch3 ] };
+ key <I211> { [ XF86Launch4 ] };
+ key <I212> { [ XF86LaunchB ] };
+ key <I213> { [ XF86Suspend ] };
+ key <I214> { [ XF86Close ] };
+ key <I215> { [ XF86AudioPlay ] };
+ key <I216> { [ XF86AudioForward ] };
+// key <I217> { [ ] }; // KEY_BASSBOOST
+ key <I218> { [ Print ] };
+// key <I219> { [ ] }; // KEY_HP
+ key <I220> { [ XF86WebCam ] };
+// key <I221> { [ ] }; // KEY_SOUND
+// key <I222> { [ ] }; // KEY_QUESTION
+ key <I223> { [ XF86Mail ] };
+ key <I224> { [ XF86Messenger ] }; // KEY_CHAT
+ key <I225> { [ XF86Search ] };
+ key <I226> { [ XF86Go ] }; // KEY_CONNECT
+ key <I227> { [ XF86Finance ] };
+ key <I228> { [ XF86Game ] }; // KEY_SPORT
+ key <I229> { [ XF86Shop ] };
+// key <I230> { [ ] }; // KEY_ALTERASE
+ key <I231> { [ Cancel ] };
+ key <I232> { [ XF86MonBrightnessDown ] };
+ key <I233> { [ XF86MonBrightnessUp ] };
+ key <I234> { [ XF86AudioMedia ] };
+ key <I235> { [ XF86Display ] };
+ key <I236> { [ XF86KbdLightOnOff ] }; // KEY_KBDILLUMTOGGLE
+ key <I237> { [ XF86KbdBrightnessDown ] }; // KEY_KBDILLUMDOWN
+ key <I238> { [ XF86KbdBrightnessUp ] }; // KEY_KBDILLUMUP
+ key <I239> { [ XF86Send ] };
+ key <I240> { [ XF86Reply ] };
+ key <I241> { [ XF86MailForward ] };
+ key <I242> { [ XF86Save ] };
+ key <I243> { [ XF86Documents ] };
+ key <I244> { [ XF86Battery ] };
+ key <I245> { [ XF86Bluetooth ] };
+ key <I246> { [ XF86WLAN ] };
+// key <I249> { [ ] }; // KEY_VIDEO_NEXT -- drive next video source
+// key <I250> { [ ] }; // KEY_VIDEO_PREV -- drive previous video source
+// key <I251> { [ ] }; // KEY_BRIGHTNESS_CYCLE -- bright up, max++ == min
+// key <I252> { [ ] }; // KEY_BRIGHTNESS_ZERO -- brightness off
+// key <I253> { [ ] }; // KEY_DISPLAY_OFF -- turn off display
+// key <I254> { [ ] }; // KEY_WIMAX
+ key <I255> { [ XF86Hibernate ] }; // KEY_HIBERNATE
+
+ key <FK13> { [ XF86Tools ] };
+ key <FK14> { [ XF86Launch5 ] };
+ key <FK15> { [ XF86Launch6 ] };
+ key <FK16> { [ XF86Launch7 ] };
+ key <FK17> { [ XF86Launch8 ] };
+ key <FK18> { [ XF86Launch9 ] };
+};
+
+
+// Acer AirKey V
+partial alphanumeric_keys
+xkb_symbols "airkey" {
+ include "inet(acpi_common)"
+ key <I13> { [ XF86AudioNext ] };
+ key <I15> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I16> { [ XF86Mail ] };
+ key <I18> { [ XF86AudioPrev ] };
+ key <I19> { [ XF86AudioMute ] };
+ key <I24> { [ XF86WWW ] };
+ key <I26> { [ XF86AudioLowerVolume ] };
+ key <I2D> { [ XF86AudioRaiseVolume ] };
+ key <I2F> { [ XF86Terminal ] };
+ key <I31> { [ XF86AudioStop, XF86Eject ] };
+};
+
+// Acer C300 Laptop
+partial alphanumeric_keys
+xkb_symbols "acer_c300" {
+ include "inet(nav_common)"
+ key <I17> { [ F14 ] };
+ key <I1F> { [ F13 ] };
+ key <I20> { [ XF86AudioMute ] };
+ key <I2E> { [ XF86AudioLowerVolume ] };
+ key <I30> { [ XF86AudioRaiseVolume ] };
+ key <I5E> { [ XF86Launch2 ] };
+ key <I75> { [ Help ] };
+ key <XFER> { [ XF86Launch1 ] };
+};
+
+// Acer Ferrari 4000 Keyboard
+// From Alex Dubov <oakad@yahoo.com>
+partial alphanumeric_keys
+xkb_symbols "acer_ferrari4k" {
+ include "inet(media_nav_common)"
+ key <I24> { [ dollar ] };
+ key <I25> { [ EuroSign ] };
+ key <I26> { [ XF86Display ] };
+ // Missing keycodes - set-up with setkeycodes
+ key <I70> { [ Help ] };
+ key <I71> { [ XF86Launch1 ] };
+ key <I72> { [ XF86Launch2 ] };
+ key <I73> { [ XF86Launch3 ] };
+ key <I74> { [ XF86Launch4 ] };
+};
+
+// Acer Laptop (Generic layout for Acer laptops from 2004 onwards)
+// From Carlos Corbacho <cathectic@gmail.com>
+// Keys marked (HAL) require HAL 0.5.10 (or newer) to be set up correctly
+// (Your laptop must also be added to hal-info)
+// (Not all these keys will be available on every Acer laptop)
+partial alphanumeric_keys
+xkb_symbols "acer_laptop" {
+ include "inet(media_nav_acpi_common)"
+ key <I17> { [ XF86Launch2 ] }; // "P" or "P2" (HAL)
+ key <I1F> { [ XF86Launch1 ] }; // "e" or "P1" (HAL)
+
+ // Hotkeys (Function)
+ // Launch Keys
+ // Device keys
+ key <I56> { [ XF86Display ] }; // Fn+F5 (HAL)
+ key <I71> { [ XF86Launch4 ] }; // Fn+F3 (HAL)
+ key <I72> { [ XF86LaunchB ] }; // Bluetooth (HAL)
+ key <I73> { [ XF86LaunchA ] }; // Wireless (HAL)
+ key <I75> { [ Help ] }; // Fn+F1 (HAL)
+ key <I79> { [ XF86Launch5 ] }; // Fn+F7 (HAL)
+ key <K66> { [ XF86Launch3 ] }; // Fn+F2 (HAL)
+
+ // Special Characters
+ // To avoid setting a precedent/ standard that will be broken in later
+ // versions of HAL, these keys are commented out for now. When they are no
+ // longer marked 'FIXME' and have saner keycodes, these two entries can be
+ // fixed and permanently uncommented. In the meantime, just uncomment these
+ // to make the keys work
+// key <K5D> { [ EuroSign ] }; // Euro (HAL)
+// key <K5E> { [ dollar ] }; // Dollar (HAL)
+};
+
+// Azona
+
+// Azona RF2300 wireless Internet Keyboard
+partial alphanumeric_keys
+xkb_symbols "azonaRF2300" {
+ // From Radics Laszlo <garaboncias@mailbox.hu>
+ include "inet(nav_acpi_common)"
+ key <I02> { [ XF86HomePage ] };
+ key <I17> { [ XF86AudioStop ] };
+ key <I1E> { [ XF86AudioRaiseVolume ] };
+ key <I1F> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I22> { [ XF86AudioNext ] };
+ key <I24> { [ XF86AudioPrev ] };
+ key <I25> { [ XF86AudioLowerVolume ] };
+ key <I26> { [ XF86AudioMute ] };
+ key <I3C> { [ XF86Copy ] };
+ key <I78> { [ XF86Cut ] };
+// key <RCTL> { [ XF86Paste ] };
+};
+
+
+// Brother
+
+// Brother Internet Keyboard
+partial alphanumeric_keys
+xkb_symbols "brother" {
+ include "inet(acpi_common)"
+ key <I10> { [ XF86ScrollUp ] };
+ key <I12> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I17> { [ XF86AudioPrev ] };
+ key <I18> { [ XF86ScrollDown ] };
+ key <I19> { [ XF86ZoomOut ] };
+ key <I1E> { [ XF86AudioMute ] };
+ key <I21> { [ XF86WWW ] };
+ key <I22> { [ Menu ] };
+ key <I23> { [ XF86AudioStop ] };
+ key <I24> { [ XF86Calculator ] };
+ key <I25> { [ XF86Xfer ] };
+ key <I26> { [ XF86Mail ] };
+ key <I2E> { [ XF86AudioNext ] };
+ key <I30> { [ XF86AudioRaiseVolume ] };
+ key <I32> { [ XF86ZoomIn ] };
+ key <I68> { [ XF86AudioLowerVolume ] };
+};
+
+
+// BTC
+
+// BTC 5113RF Multimedia
+partial alphanumeric_keys
+xkb_symbols "btc5113rf" {
+ include "inet(acpi_common)"
+ key <I10> { [ XF86AudioStop ] };
+ key <I12> { [ XF86AudioMute ] };
+ key <I19> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I1E> { [ XF86AudioRaiseVolume ] };
+ key <I20> { [ XF86Favorites ] };
+ key <I21> { [ XF86Eject ] };
+ key <I22> { [ XF86AudioPrev ] };
+ key <I24> { [ XF86AudioNext ] };
+ key <I25> { [ XF86AudioLowerVolume ] };
+ key <I26> { [ XF86Back ] };
+ key <I30> { [ XF86WWW ] };
+ key <I32> { [ XF86Search ] };
+};
+
+
+// BTC 9000
+partial alphanumeric_keys
+xkb_symbols "btc9000" {
+ include "inet(acpi_common)"
+ key <I10> { [ XF86AudioStop ] };
+ key <I12> { [ XF86AudioMute ] };
+ key <I19> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I1E> { [ XF86AudioRaiseVolume ] };
+ key <I20> { [ XF86Favorites ] };
+ key <I21> { [ XF86AudioMedia ] };
+ key <I22> { [ XF86AudioPrev ] };
+ key <I24> { [ XF86AudioNext ] };
+ key <I25> { [ XF86AudioLowerVolume ] };
+ key <I26> { [ XF86Reload ] };
+ key <I2E> { [ XF86Mail ] };
+ key <I30> { [ XF86HomePage ] };
+ key <I32> { [ XF86Search ] };
+};
+
+// BTC 9000A
+partial alphanumeric_keys
+xkb_symbols "btc9000a" {
+ include "inet(acpi_common)"
+ key <I10> { [ XF86AudioStop ] };
+ key <I12> { [ XF86AudioMute ] };
+ key <I19> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I1E> { [ XF86AudioRaiseVolume ] };
+ key <I20> { [ XF86Favorites ] };
+ key <I21> { [ XF86Eject ] };
+ key <I22> { [ XF86AudioPrev ] };
+ key <I24> { [ XF86AudioNext ] };
+ key <I25> { [ XF86AudioLowerVolume ] };
+ key <I26> { [ XF86HomePage ] };
+ key <I2E> { [ Help ] };
+ key <I30> { [ XF86WWW ] };
+ key <I32> { [ XF86Search ] };
+};
+
+// BTC 9001AH
+xkb_symbols "btc9001ah" {
+ include "inet(acpi_common)"
+ key <I02> { [ XF86HomePage ] };
+ key <I17> { [ XF86AudioStop ] };
+ key <I1E> { [ XF86AudioRaiseVolume ] };
+ key <I1F> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I22> { [ XF86AudioNext ] };
+ key <I24> { [ XF86AudioPrev ] };
+ key <I25> { [ XF86AudioLowerVolume ] };
+ key <I26> { [ XF86AudioMute ] };
+ key <I6C> { [ XF86Mail ] };
+ key <RWIN> { [ XF86Eject ] };
+};
+
+// BTC 5090
+partial alphanumeric_keys
+xkb_symbols "btc5090" {
+ include "inet(media_nav_acpi_common)"
+ key <I26> { [ XF86Start ] };
+ key <I33> { [ XF86Eject ] };
+};
+
+// BTC 9019U
+partial alphanumeric_keys
+xkb_symbols "btc9019u" {
+ include "inet(media_nav_acpi_common)"
+ key <FK17> { [ XF86Search ] };
+ key <I02> { [ XF86HomePage ] };
+};
+
+// Cherry Blue Line
+
+// Cherry Blue Line CyBo@rd
+partial alphanumeric_keys
+xkb_symbols "cherryblue" {
+ include "inet(nav_common)"
+ key <FK16> { [ XF86Reload ] };
+ key <I02> { [ XF86HomePage ] };
+ key <I17> { [ XF86AudioStop ] };
+ key <I1E> { [ XF86AudioRaiseVolume ] };
+ key <I1F> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I22> { [ XF86AudioNext ] };
+ key <I24> { [ XF86AudioPrev ] };
+ key <I25> { [ XF86AudioLowerVolume ] };
+ key <I26> { [ XF86AudioMute ] };
+ key <I63> { [ XF86Standby ] };
+ key <PRSC> { [ XF86Terminal ] };
+ key <XFER> { [ XF86Go ] };
+};
+
+// Cherry CyMotion Master XPress
+partial alphanumeric_keys
+xkb_symbols "cherryblueb" {
+ include "inet(media_nav_common)"
+ key <FK16> { [ XF86Reload ] };
+ key <I02> { [ XF86HomePage ] };
+ key <I07> { [ XF86Forward ] };
+ key <I08> { [ XF86Back ] };
+ key <I0A> { [ XF86Copy ] };
+ key <I0B> { [ XF86ScrollUp ] };
+ key <I12> { [ XF86ScrollDown ] };
+ key <I17> { [ XF86Cut ] };
+ key <I18> { [ XF86Paste ] };
+ key <I1E> { [ XF86AudioRaiseVolume ] };
+ key <I25> { [ XF86AudioLowerVolume ] };
+ key <I26> { [ XF86AudioMute ] };
+ key <I2C> { [ XF86Book ] };
+ key <I32> { [ XF86Finance ] };
+ key <I63> { [ XF86Standby ] };
+ key <I67> { [ XF86AudioRewind ] };
+ key <I70> { [ XF86Eject ] };
+ key <I71> { [ XF86Book ] };
+ key <I72> { [ XF86Book ] };
+ key <PRSC> { [ XF86Terminal ] };
+ key <XFER> { [ XF86Go ] };
+};
+
+// Cherry Blue Line CyBo@rd (alternate option)
+partial alphanumeric_keys
+xkb_symbols "cherrybluea" {
+ include "inet(media_nav_acpi_common)"
+ key <I6D> { [ XF86Go ] };
+};
+
+// Cherry CyBo@rd USB-Hub
+partial alphanumeric_keys
+xkb_symbols "cherrycyboard" {
+ include "inet(media_nav_acpi_common)"
+ key <FK17> { [ XF86Search ] };
+ key <I02> { [ XF86HomePage ] };
+ key <K67> { [ XF86Terminal ] };
+ key <XFER> { [ XF86AudioMedia ] };
+};
+
+// Cherry CyMotion Expert
+partial alphanumeric_keys
+xkb_symbols "cherrycmexpert" {
+ include "inet(cherryblueb)"
+ include "inet(acpi_common)"
+ key <FK15> { [ XF86Mail ] };
+};
+
+
+// Chicony
+
+// Chicony Internet Keyboard
+partial alphanumeric_keys
+xkb_symbols "chicony" {
+ include "inet(acpi_common)"
+ key <I12> { [ XF86AudioMute ] };
+ key <I17> { [ XF86Mail ] };
+ key <I19> { [ XF86AudioLowerVolume ] };
+ key <I1E> { [ XF86Forward ] };
+ key <I20> { [ XF86AudioNext ] };
+ key <I21> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I22> { [ XF86AudioPrev ] };
+ key <I23> { [ XF86AudioRaiseVolume ] };
+ key <I24> { [ XF86AudioStop ] };
+ key <I25> { [ XF86Back ] };
+ key <I26> { [ XF86LaunchB ] };
+ key <I2E> { [ XF86LaunchC ] };
+ key <I30> { [ XF86LaunchA ] };
+ key <I32> { [ XF86WWW ] };
+ key <I5F> { [ XF86ContrastAdjust ] };
+ key <I63> { [ XF86BrightnessAdjust ] };
+};
+
+// Chicony KU-0108
+partial alphanumeric_keys
+xkb_symbols "chicony0108" {
+ include "inet(cherrycyboard)"
+};
+
+// Chicony KU-0420 AKA Targus Slim Internet Media USB Keyboard
+partial alphanumeric_keys
+xkb_symbols "chicony0420" {
+ include "inet(media_nav_acpi_common)"
+ key <I01> { [ XF86AudioMedia ] };
+ key <K67> { [ XF86MyComputer ] };
+};
+
+// Chicony KB-9885
+partial alphanumeric_keys
+xkb_symbols "chicony9885" {
+ include "inet(acpi_common)"
+ key <I12> { [ XF86AudioMute ] };
+ key <I17> { [ XF86Mail ] };
+ key <I19> { [ XF86AudioLowerVolume ] };
+ key <I1E> { [ XF86Forward ] };
+ key <I20> { [ XF86AudioNext ] };
+ key <I21> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I22> { [ XF86AudioPrev ] };
+ key <I23> { [ XF86AudioRaiseVolume ] };
+ key <I24> { [ XF86AudioStop ] };
+ key <I25> { [ XF86Back ] };
+ key <I26> { [ XF86LaunchB ] };
+ key <I2E> { [ XF86LaunchC ] };
+ key <I30> { [ XF86LaunchA ] };
+ key <I32> { [ XF86WWW ] };
+};
+
+
+// Compaq
+
+// Compaq Easy Access Keyboard
+partial alphanumeric_keys
+xkb_symbols "compaqeak8" {
+ key <I13> { [ XF86Community ] };
+ key <I14> { [ XF86Market ] };
+ key <I15> { [ XF86Meeting ] };
+ key <I1A> { [ XF86Search ] };
+ key <I1B> { [ XF86News ] };
+ key <I1E> { [ XF86Mail ] };
+ key <I1F> { [ XF86HomePage ] };
+ key <I23> { [ XF86WWW ] };
+};
+
+// Compaq Internet Keyboard (7 keys)
+partial alphanumeric_keys
+xkb_symbols "compaqik7" {
+ key <I12> { [ XF86LightBulb ] };
+ key <I1E> { [ XF86Mail ] };
+ key <I21> { [ XF86Search ] };
+ key <I23> { [ Help ] };
+ key <I25> { [ XF86VendorHome ] };
+ key <I26> { [ XF86HomePage ] };
+ key <I32> { [ XF86Shop ] };
+};
+
+// Compaq Internet Keyboard (13 keys)
+partial alphanumeric_keys
+xkb_symbols "compaqik13" {
+ include "inet(media_acpi_common)"
+ key <I1E> { [ XF86Mail ] };
+ key <I1F> { [ XF86Go ] };
+ key <I21> { [ XF86Search ] };
+ key <I23> { [ XF86WWW ] };
+ key <I32> { [ XF86Shop ] };
+};
+
+// Compaq Internet Keyboard (18 keys)
+partial alphanumeric_keys
+xkb_symbols "compaqik18" {
+ include "inet(media_acpi_common)"
+ key <I12> { [ XF86LightBulb ] };
+ key <I18> { [ XF86Eject ] };
+ key <I1E> { [ XF86Mail ] };
+ key <I1F> { [ XF86Go ] };
+ key <I21> { [ XF86Search ] };
+ key <I23> { [ XF86WWW ] };
+ key <I25> { [ XF86VendorHome ] };
+ key <I26> { [ XF86Community ] };
+ key <I32> { [ XF86Shop ] };
+ key <I68> { [ Print ] };
+};
+
+
+// Laptop/notebook Compaq (eg. Armada, Evo) Laptop Keyboard
+partial alphanumeric_keys
+xkb_symbols "armada" {
+ include "inet(media_acpi_common)"
+ key <I1A> { [ XF86Search ] };
+ key <I1E> { [ XF86Mail ] };
+ key <I1F> { [ XF86HomePage ] };
+ key <I23> { [ XF86WWW ] };
+ key <I59> { [ XF86Launch2 ] }; // Battery Monitor
+ key <I6F> { [ XF86AudioMedia ] };
+ key <I75> { [ XF86Launch0 ] }; // Info Center
+};
+
+// Laptop/notebook Compaq (eg. Presario) Internet Keyboard
+partial alphanumeric_keys
+xkb_symbols "presario" {
+ include "inet(media_acpi_common)"
+ key <I14> { [ XF86Q ] };
+ key <I18> { [ XF86Launch2 ] };
+ key <I1E> { [ XF86Mail ] };
+ key <I1F> { [ XF86Launch1 ] };
+ key <I23> { [ XF86WWW ] };
+ key <I32> { [ XF86Shop ] };
+ key <I75> { [ XF86AudioMedia ] };
+};
+
+// Compaq iPaq Keyboard
+partial alphanumeric_keys
+xkb_symbols "ipaq" {
+ key <FK16> { [ XF86Shop ] };
+ key <I02> { [ XF86Standby ] };
+ key <I65> { [ XF86Search ] };
+ key <I66> { [ XF86Travel ] };
+ key <I69> { [ XF86BackForward ] };
+ key <I6A> { [ XF86Q ] };
+ key <I6C> { [ XF86Mail ] };
+};
+
+
+// Dell
+
+partial alphanumeric_keys
+xkb_symbols "dell" {
+ include "inet(acpi_common)"
+ key <I12> { [ XF86Mail ] };
+ key <I1E> { [ XF86Search ] };
+ key <I26> { [ XF86HomePage ] };
+};
+
+// Dell Precision M65
+partial alphanumeric_keys
+xkb_symbols "dellm65" {
+ include "inet(media_common)"
+ key <I04> { [ XF86PowerOff ] };
+ key <LWIN> { [ Super_L ] };
+};
+
+// Laptop/notebook Dell Inspiron 8xxx
+partial alphanumeric_keys
+xkb_symbols "inspiron" {
+ include "inet(media_common)"
+ key <I02> { [ XF86AudioStop ] };
+ key <I04> { [ XF86AudioNext ] };
+ key <I21> { [ XF86Eject ] };
+ key <I56> { [ XF86Display ] };
+ key <NFER> { [ XF86AudioPrev ] };
+ key <XFER> { [ XF86AudioPlay, XF86AudioPause ] };
+};
+
+// DELL USB Multimedia Keyboard (former 8135, generalized, superset of 8125)
+partial alphanumeric_keys
+xkb_symbols "dellusbmm" {
+ // Describes the extra keys on a SK-8135 Multimedia keyboard
+ // From Olivier Lahaye <olivier dot lahaye at motorola dot com>
+ include "inet(media_nav_acpi_common)"
+ key <I02> { [ XF86HomePage ] };
+ key <K67> { [ XF86MyComputer ] };
+ key <XFER> { [ XF86AudioMedia ] };
+};
+
+
+// Diamond
+
+// Diamond 9801 / 9802 series
+partial alphanumeric_keys
+xkb_symbols "diamond" {
+ include "inet(media_nav_acpi_common)"
+ key <I6D> { [ XF86Go ] };
+};
+
+
+// Ennyah
+
+// Ennyah DKB-1008
+partial alphanumeric_keys
+xkb_symbols "ennyah_dkb1008" {
+ include "inet(media_nav_acpi_common)"
+ key <XFER> { [ XF86AudioMedia ] };
+};
+
+
+// Genius
+
+// Genius Comfy KB-16M / Genius MM Keyboard KWD-910
+partial alphanumeric_keys
+xkb_symbols "genius" {
+ include "inet(media_acpi_common)"
+ key <I12> { [ XF86AudioRaiseVolume ] };
+ key <I17> { [ XF86Calculator ] };
+ key <I19> { [ XF86AudioLowerVolume ] };
+ key <I1E> { [ XF86Forward ] };
+ key <I21> { [ XF86AudioNext ] };
+ key <I23> { [ XF86AudioPrev ] };
+ key <I25> { [ XF86Back ] };
+ key <I26> { [ XF86ScreenSaver ] };
+ key <I2E> { [ XF86Mail ] };
+ key <I30> { [ XF86Eject ] };
+ key <I32> { [ XF86WWW ] };
+};
+
+
+// GeniusComfy21e
+partial alphanumeric_keys
+xkb_symbols "geniuscomfy2" {
+ // Describes the extra keys on a Genius Comfy KB-21e-Scroll
+ // From Radics Laszlo <garaboncias@mailbox.hu>
+ include "inet(media_nav_acpi_common)"
+ key <I23> { [ Return ] };
+};
+
+// Gyration
+
+partial alphanumeric_keys
+xkb_symbols "gyration" {
+ include "inet(nav_common)"
+ key <FK16> { [ XF86Reload ] };
+ key <I02> { [ XF86HomePage ] };
+ key <I17> { [ XF86AudioStop ] };
+ key <I1E> { [ XF86AudioRaiseVolume ] };
+ key <I1F> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I22> { [ XF86AudioNext ] };
+ key <I24> { [ XF86AudioPrev ] };
+ key <I25> { [ XF86AudioLowerVolume ] };
+ key <I26> { [ XF86AudioMute ] };
+};
+
+
+// Hewlett-Packard
+
+// Hewlett-Packard Internet Keyboard
+partial alphanumeric_keys
+xkb_symbols "hpi6" {
+ include "inet(media_nav_acpi_common)"
+ key <I02> { [ XF86HomePage ] };
+ key <I12> { [ XF86Search ] };
+ key <I14> { [ XF86VendorHome ] };
+ key <I15> { [ XF86Community ] };
+ key <I16> { [ XF86AudioMedia ] };
+ key <I18> { [ XF86Eject ] };
+ key <I1E> { [ XF86Shop ] };
+ key <I1F> { [ XF86Launch1 ] };
+ key <I26> { [ Help ] };
+ key <I27> { [ XF86Finance ] };
+ key <I39> { [ Print ] };
+ key <I75> { [ Help ] };
+};
+
+// Hewlett-Packard SK-2501, SK-2505 Multimedia Keyboard
+partial alphanumeric_keys
+xkb_symbols "hp250x" {
+ key <I12> { [ XF86Tools ] };
+ key <I17> { [ XF86Search ] };
+ key <I18> { [ XF86Eject ] };
+ key <I1E> { [ XF86Mail ] };
+ key <I20> { [ XF86AudioMute ] };
+ key <I21> { [ XF86Launch5 ] };
+ key <I22> { [ XF86Launch3 ] };
+ key <I23> { [ XF86Launch2 ] };
+ key <I24> { [ XF86Launch4 ] };
+ key <I25> { [ XF86Standby ] };
+ key <I26> { [ Help ] };
+ key <I2E> { [ XF86AudioLowerVolume ] };
+ key <I30> { [ XF86AudioRaiseVolume ] };
+ key <I32> { [ XF86WWW ] };
+};
+
+// Hewlett-Packard Omnibook XE3 GC, GD, GE and Pavilion N5xxx
+partial alphanumeric_keys
+xkb_symbols "hpxe3gc" {
+ // Describes the OneTouch buttons on HP Omnibook XE3 GC and
+ // HP Pavilion N52XX models.
+ // See http://sourceforge.net/projects/omke for details on enabling
+ // these keys
+ include "inet(media_common)"
+ key <I71> { [ Help ] };
+ key <I72> { [ XF86Launch1 ] };
+ key <I73> { [ XF86WWW ] };
+ key <I74> { [ XF86Mail ] };
+};
+
+// Hewlett-Packard Omnibook XE3 GF
+partial alphanumeric_keys
+xkb_symbols "hpxe3gf" {
+ // Describes the OneTouch buttons on HP Omnibook XE3 GF models.
+ // See http://sourceforge.net/projects/omke for details on enabling
+ // these keys
+ include "inet(media_nav_common)"
+ key <I73> { [ Help ] };
+ key <I74> { [ XF86Launch1 ] };
+};
+
+// Hewlett-Packard Omnibook XT1000
+partial alphanumeric_keys
+xkb_symbols "hpxt1000" {
+ // Describes the OneTouch buttons on HP Omnibook XT1000 models.
+ // See http://sourceforge.net/projects/omke for details on enabling
+ // these keys
+ include "inet(media_nav_common)"
+ key <I71> { [ XF86Launch3 ] };
+ key <I72> { [ Help ] };
+ key <I73> { [ XF86Launch2 ] };
+ key <I74> { [ XF86Launch1 ] };
+};
+
+// Hewlett-Packard Pavilion ZT11xx
+partial alphanumeric_keys
+xkb_symbols "hpzt11xx" {
+ // Describes the OneTouch buttons on HP Pavilion ZT11xx models.
+ // See http://sourceforge.net/projects/omke for details on enabling
+ // these keys
+ include "inet(media_nav_common)"
+ key <I71> { [ XF86Launch3 ] };
+ key <I72> { [ Help ] };
+ key <I73> { [ XF86Launch2 ] };
+ key <I74> { [ XF86Launch1 ] };
+};
+
+// Hewlett-Packard Pavilion dv5
+partial alphanumeric_keys
+xkb_symbols "hpdv5" {
+ // Describes the OneTouch buttons on HP Pavilion dv5 models.
+ // See http://sourceforge.net/projects/omke for details on enabling
+ // these keys
+ include "inet(media_common)"
+ key <I12> { [ XF86ScreenSaver ] };
+ key <I32> { [ XF86WWW ] };
+ key <I75> { [ Help ] };
+ key <K6D> { [ XF86Launch1 ] };
+};
+
+// Hewlett-Packard Omnibook XE4xxx and ZE4xxx
+partial alphanumeric_keys
+xkb_symbols "hpxe4xxx" {
+ // Describes the OneTouch buttons on HP Omnibook XE4xxx and ZE4xxx
+ // models.
+ // See http://sourceforge.net/projects/omke for details on enabling
+ // these keys
+ include "inet(media_nav_common)"
+ key <I70> { [ Help ] };
+ key <I71> { [ XF86Launch2 ] };
+ key <I73> { [ XF86Launch1 ] };
+};
+
+// Hewlett-Packard Omnibook 500 FA
+partial alphanumeric_keys
+xkb_symbols "hp500fa" {
+ // Describes the OneTouch buttons on HP Omnibook 500 FA models.
+ // See http://sourceforge.net/projects/omke for details on enabling
+ // these keys
+ key <I73> { [ Help ] };
+ key <I74> { [ XF86Launch1 ] };
+};
+
+// Hewlett-Packard Omnibook 5xx
+partial alphanumeric_keys
+xkb_symbols "hp5xx" {
+ // Describes the OneTouch buttons on HP Omnibook 5xx models.
+ // See http://sourceforge.net/projects/omke for details on enabling
+ // these keys
+ include "inet(media_common)"
+ key <I73> { [ Help ] };
+ key <I74> { [ XF86Launch1 ] };
+};
+
+
+// Honeywell
+
+// Honeywell Euroboard
+partial alphanumeric_keys
+xkb_symbols "honeywell_euroboard" {
+ // January 2002
+ // Scott Penrose <scottp@dd.com.au>
+ // http://linux.dd.com.au/quest/linux/keyboard/honeywell/
+ key <I10> { [ XF86Game ] };
+ key <I12> { [ XF86AudioPrev ] };
+ key <I17> { [ XF86Eject ] };
+ key <I18> { [ XF86Launch2 ] };
+ key <I19> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I1E> { [ XF86Launch1 ] };
+ key <I20> { [ XF86AudioMute ] };
+ key <I22> { [ XF86AudioNext ] };
+ key <I23> { [ XF86AudioStop ] };
+ key <I24> { [ XF86Mail ] };
+ key <I25> { [ XF86ScreenSaver ] };
+ key <I26> { [ XF86Calculator ] };
+ key <I2E> { [ XF86AudioLowerVolume ] };
+ key <I30> { [ XF86AudioRaiseVolume ] };
+ key <I32> { [ XF86WWW ] };
+};
+
+
+// IBM
+
+
+// IBM Rapid Access
+partial alphanumeric_keys
+xkb_symbols "rapidaccess" {
+ key <I12> { [ XF86AudioMute ] };
+ key <I17> { [ XF86Launch2 ] };
+ key <I1E> { [ XF86AudioLowerVolume ] };
+ key <I20> { [ XF86AudioRaiseVolume ] };
+ key <I21> { [ XF86AudioNext ] };
+ key <I22> { [ XF86AudioPause ] };
+ key <I22> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I23> { [ XF86AudioPrev ] };
+ key <I24> { [ XF86AudioStop ] };
+ key <I25> { [ XF86Standby ] };
+ key <I26> { [ Help ] };
+ key <I2E> { [ XF86Launch4 ] };
+ key <I30> { [ XF86Launch3 ] };
+ key <I32> { [ XF86Launch1 ] };
+};
+
+// IBM Rapid Access II
+partial alphanumeric_keys
+xkb_symbols "rapidaccess2" {
+ include "inet(acpi_common)"
+ key <I12> { [ XF86AudioNext ] };
+ key <I17> { [ XF86Favorites ] };
+ key <I1E> { [ XF86AudioMute ] };
+ key <I20> { [ XF86AudioStop ] };
+ key <I21> { [ XF86AudioLowerVolume ] };
+ key <I22> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I23> { [ XF86AudioRaiseVolume ] };
+ key <I24> { [ XF86AudioPrev ] };
+ key <I25> { [ XF86HomePage ] };
+ key <I26> { [ XF86Shop ] };
+ key <I2E> { [ XF86Search ] };
+ key <I30> { [ XF86MyComputer ] };
+ key <I32> { [ XF86VendorHome ] };
+};
+
+// IBM ThinkPad 60 series
+partial alphanumeric_keys
+xkb_symbols "thinkpad60" {
+ include "inet(media_nav_common)"
+ key <I1F> { [ XF86VendorHome ] };
+};
+
+// IBM Space Saver
+partial alphanumeric_keys
+xkb_symbols "ibm_spacesaver" {
+ key <NMLK> {
+ type="ONE_LEVEL",
+ symbols[Group1]= [ Num_Lock ]
+ };
+};
+
+// Logitech
+
+// Logitech common definitions
+partial hidden alphanumeric_keys
+xkb_symbols "logitech_base" {
+ include "inet(media_nav_acpi_common)"
+ key <I02> { [ XF86HomePage ] };
+ key <I15> { [ XF86Community ] };
+ key <I16> { [ XF86ScrollClick ] };
+ key <I21> { [ XF86VendorHome ] };
+ key <I3B> { [ XF86New ] };
+ key <I3C> { [ XF86Reply ] };
+ key <I43> { [ XF86MyComputer ] };
+ key <I44> { [ XF86Documents ] };
+ key <I57> { [ XF86Pictures ] };
+ key <I58> { [ XF86Music ] };
+};
+
+// Logitech second set of common keys
+partial hidden alphanumeric_keys
+xkb_symbols "logitech_set3" {
+ key <I17> { [ XF86AudioStop ] };
+ key <I1E> { [ XF86AudioRaiseVolume ] };
+ key <I1F> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I22> { [ XF86AudioNext ] };
+ key <I24> { [ XF86AudioPrev ] };
+ key <I25> { [ XF86AudioLowerVolume ] };
+ key <I26> { [ XF86AudioMute ] };
+ key <I44> { [ XF86New ] }; // F1
+ key <I45> { [ XF86Reply ] }; // F2
+ key <I4A> { [ XF86Send ] }; // F4
+ key <I54> { [ Print ] }; // F7
+ key <I55> { [ XF86Save ] }; // F8
+ key <I56> { [ XF86Documents ] }; // F10
+ key <I69> { [ XF86Go ] };
+ key <XFER> { [ XF86AudioMedia ] };
+};
+
+// Logitech Access Keyboard
+partial alphanumeric_keys
+xkb_symbols "logiaccess" {
+ include "inet(logitech_base)"
+ key <FK13> { [ XF86MailForward ] };
+ key <FK14> { [ XF86Send ] };
+ key <I11> { [ XF86Messenger ] };
+ key <I12> { [ XF86WebCam ] };
+};
+
+// Logitech Cordless Desktop (alternate option)
+partial alphanumeric_keys
+xkb_symbols "logicda" {
+ include "inet(logitech_base)"
+ include "inet(logitech_set3)"
+};
+
+// Logitech Internet Navigator Keyboard
+partial alphanumeric_keys
+xkb_symbols "logicink" {
+ include "inet(logitech_base)"
+ key <I11> { [ XF86Shop ] };
+ key <I12> { [ XF86VendorHome ] };
+ key <I13> { [ XF86Finance ] };
+ key <I14> { [ XF86Start ] };
+};
+
+// Logitech Cordless Desktop EX110
+partial alphanumeric_keys
+xkb_symbols "logiex110" {
+ include "inet(logitech_base)"
+ key <I2F> { [ XF86Close ] }; // Close
+
+// Extended function keys
+// In the Console before starting X
+// Using setkeycodes e03b 212 e03c 213 e03d 214 e03e 215 e03f 216 e040 217
+// setkeycodes e041 218 e042 219 e043 220 e044 221 e057 222 e058 223 6d 206
+// *=keys that are there but need different symbol names.
+ key <I3B> { [ Help ] }; // F1
+ key <FK13> { [ XF86Word ] }; // F2
+ key <FK14> { [ XF86Excel ] }; // F3
+ key <FK15> { [ XF86Pictures ] }; // F4
+ key <FK16> { [ Undo ] }; // F5
+ key <I65> { [ Redo ] }; // F6 *
+ key <I42> { [ Print ] }; // F7
+ key <I43> { [ XF86Save ] }; // F8
+ key <I44> { [ XF86Launch1 ] }; // F9 *
+ key <I45> { [ XF86Launch2 ] }; // F10
+ key <I14> { [ XF86Launch3 ] }; // F11
+ key <I4A> { [ XF86Launch4 ] }; // F12
+};
+
+// Logitech iTouch Internet Navigator Keyboard SE
+partial alphanumeric_keys
+xkb_symbols "logiinkse" {
+ include "inet(logitech_base)"
+ key <FK13> { [ XF86MailForward ] }; // F3
+ key <FK14> { [ XF86Send ] }; // F4
+ key <FK15> { [ Undo ] }; // F5
+ key <FK16> { [ Redo ] }; // F6
+ key <FK17> { [ Print ] }; // F7
+ key <I11> { [ XF86Messenger ] };
+ key <I12> { [ XF86WebCam ] };
+ key <I13> { [ XF86VendorHome ] };
+ key <I14> { [ XF86Shop ] };
+ key <I42> { [ XF86Save ] }; // F8
+};
+
+// Logitech iTouch Internet Navigator Keyboard SE (USB)
+partial alphanumeric_keys
+xkb_symbols "logiinkseusb" {
+ include "inet(logitech_base)"
+ include "inet(logitech_set3)"
+};
+
+// Logitech iTouch Cordless Keyboard (model Y-RB6)
+partial alphanumeric_keys
+xkb_symbols "logiitc" {
+ include "inet(logitech_base)"
+ key <I2F> { [ XF86AudioRaiseVolume ] };
+
+ // Just to override RaiseVolume from logitech_base,
+ // since no keysym can have two keycodes, see
+ // https://bugs.freedesktop.org/show_bug.cgi?id=7095
+ key <I30> { [ XF86Launch1 ] };
+};
+
+// Logitech Internet Keyboard
+partial alphanumeric_keys
+xkb_symbols "logiik" {
+ include "inet(logitech_base)"
+ key <I12> { [ Find ] };
+ key <I17> { [ Print ] };
+ key <I18> { [ XF86Favorites ] };
+ key <I19> { [ XF86Reload ] };
+ key <I1E> { [ XF86Search ] };
+ key <I20> { [ XF86HotLinks ] };
+ key <I22> { [ XF86Forward ] };
+ key <I23> { [ XF86HomePage ] };
+ key <I24> { [ XF86Stop ] };
+ key <I25> { [ XF86OpenURL ] };
+ key <I26> { [ XF86AddFavorite ] };
+ key <I32> { [ XF86History ] };
+ key <I7A> { [ XF86WWW ] };
+};
+
+// Logitech iTouch
+partial alphanumeric_keys
+xkb_symbols "itouch" {
+ include "inet(logitech_base)"
+ key <I1F> { [ XF86AudioMute ] };
+ key <I2B> { [ XF86AudioLowerVolume ] };
+ key <I2D> { [ XF86AudioRaiseVolume ] };
+};
+
+// Logitech UltraX Cordless Media Desktop
+partial alphanumeric_keys
+xkb_symbols "logiultraxc" {
+ key <FK16> { [ XF86AudioMute ] };
+ key <FK17> { [ XF86AudioLowerVolume ] };
+ key <I2B> { [ XF86AudioNext ] };
+ key <I2D> { [ XF86AudioPrev ] };
+ key <I2C> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <KPDC> { [ XF86AudioRaiseVolume ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "logidinovo" {
+ include "inet(media_nav_common)"
+ key <I02> { [ XF86HomePage ] };
+ key <I12> { [ XF86Standby ] };
+ key <I17> { [ XF86Search ] };
+ key <I21> { [ XF86AudioRaiseVolume ] };
+ key <K66> { [ XF86AudioLowerVolume ] };
+ key <KPDC> { [ XF86AudioMute ] };
+ key <XFER> { [ XF86AudioMedia ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "logidinovoedge" {
+ include "inet(media_acpi_common)"
+ key <I02> { [ XF86HomePage ] };
+ key <I6C> { [ XF86Mail ] };
+ key <FK17> { [ XF86Search ] };
+ key <XFER> { [ XF86AudioMedia ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "logitech_g15" {
+ include "inet(media_nav_acpi_common)"
+ key <AE13> { [ XF86Messenger ] };
+ key <HKTG> { [ XF86Launch7 ] };
+ key <I02> { [ XF86Launch9 ] };
+ key <I04> { [ XF86Phone ] };
+ key <I08> { [ XF86LaunchD ] };
+ key <I09> { [ XF86Support ] };
+ key <I0F> { [ XF86LaunchF ] };
+ key <I16> { [ XF86LogOff ] };
+ key <I18> { [ XF86Launch5 ] };
+ key <I21> { [ XF86Travel ] };
+ key <I23> { [ XF86Spell ] };
+ key <I31> { [ XF86Launch4 ] };
+ key <I3C> { [ XF86Music ] };
+ key <I42> { [ XF86Forward ] };
+ key <I43> { [ XF86Send ] };
+ key <I57> { [ XF86Save ] };
+ key <I64> { [ XF86Pictures ] };
+ key <I67> { [ XF86LaunchA ] };
+ key <I76> { [ XF86iTouch ] };
+ key <I77> { [ XF86Launch3 ] };
+ key <I79> { [ XF86ToDoList ] };
+ key <I7B> { [ XF86Calculator ] };
+ key <K5A> { [ XF86VendorHome ] };
+ key <K5D> { [ XF86Away ] };
+ key <K5E> { [ XF86WebCam ] };
+ key <K5F> { [ XF86Launch0 ] };
+ key <K63> { [ XF86Launch6 ] };
+ key <K6D> { [ XF86Calendar ] };
+ key <K71> { [ XF86LaunchB ] };
+ key <K72> { [ XF86LaunchC ] };
+ key <K74> { [ XF86WWW ] };
+ key <K75> { [ XF86LaunchE ] };
+ key <II5D> { [ XF86Launch1 ] };
+ key <NFER> { [ XF86Launch2 ] };
+ key <XFER> { [ XF86Launch8 ] };
+};
+
+
+// Memorex
+
+// Memorex MX1998
+partial alphanumeric_keys
+xkb_symbols "mx1998" {
+ include "inet(media_acpi_common)"
+ key <DOWN> { [ XF86ScrollDown ] };
+ key <I12> { [ XF86AudioRewind ] };
+ key <I17> { [ XF86Close ] };
+ key <I18> { [ XF86Xfer ] };
+ key <I1E> { [ XF86AudioRecord ] };
+ key <I21> { [ XF86Documents ] };
+ key <I23> { [ XF86Game ] };
+ key <I25> { [ XF86Calculator ] };
+ key <I26> { [ Menu ] };
+ key <I32> { [ XF86WWW ] };
+ key <I57> { [ XF86WakeUp ] };
+ key <I68> { [ XF86DOS ] };
+ key <I7A> { [ XF86ScreenSaver ] };
+ key <UP> { [ XF86ScrollUp ] };
+};
+
+// Memorex MX2500 EZ-Access Keyboard
+partial alphanumeric_keys
+xkb_symbols "mx2500" {
+ include "inet(media_nav_acpi_common)"
+ key <I12> { [ XF86Clear ] };
+ key <I13> { [ XF86Phone ] };
+ key <I14> { [ XF86DOS ] };
+ key <I17> { [ XF86Close ] };
+ key <I18> { [ XF86Xfer ] };
+ key <I1E> { [ XF86Eject ] };
+ key <I1F> { [ XF86Documents ] };
+ key <I26> { [ XF86News ] };
+ key <I6B> { [ XF86WakeUp ] };
+ key <I6D> { [ XF86RotateWindows ] };
+};
+
+// Memorex MX2750
+partial alphanumeric_keys
+xkb_symbols "mx2750" {
+ include "inet(media_nav_acpi_common)"
+ key <I32> { [ XF86Launch0 ] };
+};
+
+
+// Microsoft
+
+// Microsoft Natural Wireless Ergonomic Keyboard 4000
+partial alphanumeric_keys
+xkb_symbols "microsoft4000" {
+ include "inet(media_nav_common)"
+ key <I192> { [ XF86Launch1 ] };
+ key <I193> { [ XF86Launch2 ] };
+ key <I194> { [ XF86Launch3 ] };
+ key <I195> { [ XF86Launch4 ] };
+ key <I196> { [ XF86Launch5 ] };
+// Missing because of lack of support from kbd driver: Zoom in and
+// slider.
+};
+
+// Microsoft Natural Wireless Ergonomic Keyboard 7000
+partial alphanumeric_keys
+xkb_symbols "microsoft7000" {
+ include "inet(media_nav_common)"
+ key <I07> { [ Undo ] };
+ key <I09> { [ XF86New ] };
+ key <I0A> { [ Redo ] };
+ key <I0E> { [ XF86MailForward ] };
+ key <I2F> { [ XF86Close ] };
+ key <I39> { [ Print ] };
+ key <I55> { [ XF86Save ] };
+ key <I5A> { [ XF86Send ] };
+ key <I62> { [ Help ] };
+ key <I64> { [ XF86Reply ] };
+ key <I76> { [ parenleft ] };
+ key <I7B> { [ parenright ] };
+ key <K59> { [ KP_Equal ] };
+ key <K64> { [ XF86Open ] };
+// Missing because of lack of support from kbd driver: Spell, Launch,
+// and Zoom in and out buttons.
+};
+
+// Microsoft Internet Keyboard
+partial alphanumeric_keys
+xkb_symbols "microsoftinet" {
+ include "inet(nav_acpi_common)"
+ key <I68> { [ XF86AudioStop ] };
+};
+
+// Microsoft Natural Keyboard Pro USB
+partial alphanumeric_keys
+ xkb_symbols "microsoftprousb" {
+ include "inet(nav_common)"
+ key <FK16> { [ XF86Reload ] };
+ key <I01> { [ XF86AudioMedia ] };
+ key <I02> { [ XF86HomePage ] };
+ key <I17> { [ XF86AudioStop ] };
+ key <I1E> { [ XF86AudioRaiseVolume ] };
+ key <I1F> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I22> { [ XF86AudioNext ] };
+ key <I24> { [ XF86AudioPrev ] };
+ key <I25> { [ XF86AudioLowerVolume ] };
+ key <I26> { [ XF86AudioMute ] };
+ key <I63> { [ XF86Standby ] };
+ // Internet Section -- Left Side
+ // Multimedia Section -- Right Side
+ // My Computer Section -- Far Right
+ // My computer maps to printscreen, so leaving commented out for now
+ // key <PRSC> { [ XF86MyComputer ] };
+};
+
+// Microsoft Natural Keyboard Pro OEM
+partial alphanumeric_keys
+xkb_symbols "microsoftprooem" {
+ include "inet(media_nav_common)"
+ key <FK17> { [ XF86Search ] };
+ key <I02> { [ XF86HomePage ] };
+ key <I63> { [ XF86Standby ] };
+ key <K67> { [ XF86MyComputer ] };
+// Internet Section -- Left Side
+// Multimedia Section -- Right Side
+// My Computer Section -- Far Right
+};
+
+// Microsoft Internet Keyboard Pro, Swedish
+partial alphanumeric_keys
+xkb_symbols "microsoftprose" {
+ include "inet(nav_common)"
+ key <FK16> { [ XF86Reload ] };
+ key <I02> { [ XF86HomePage ] };
+ key <I17> { [ XF86AudioStop ] };
+ key <I1E> { [ XF86AudioRaiseVolume ] };
+ key <I1F> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I22> { [ XF86AudioNext ] };
+ key <I24> { [ XF86AudioPrev ] };
+ key <I25> { [ XF86AudioLowerVolume ] };
+ key <I26> { [ XF86AudioMute ] };
+ key <I63> { [ XF86Standby ] };
+ key <I68> { [ XF86AudioStop ] };
+ key <PRSC> { [ XF86MyComputer ] };
+ key <XFER> { [ XF86AudioMedia ] };
+};
+
+// Microsoft Office Keyboard
+partial alphanumeric_keys
+xkb_symbols "microsoftoffice" {
+ include "inet(nav_acpi_common)"
+ key <BRK> { [ XF86Calendar ] };
+ key <END> { [ Undo ] };
+ key <I02> { [ XF86HomePage ] };
+ key <I1E> { [ XF86AudioLowerVolume ] };
+ key <I25> { [ XF86AudioRaiseVolume ] };
+ key <I26> { [ XF86AudioMute ] };
+ key <I3C> { [ XF86Cut ] };
+ key <I4A> { [ XF86LogOff ] };
+ key <I54> { [ XF86ApplicationLeft ] };
+ key <I55> { [ XF86TaskPane ] };
+ key <I56> { [ XF86Spell ] };
+ key <I57> { [ XF86WWW ] };
+ key <I58> { [ XF86New ] };
+ key <I59> { [ XF86Open ] };
+ key <I5A> { [ XF86Close ] };
+ key <I62> { [ Help ] };
+ key <I64> { [ XF86Save ] };
+ key <I67> { [ Print ] };
+ key <I6D> { [ XF86OfficeHome ] };
+ key <I70> { [ Redo ] };
+ key <I71> { [ XF86Reply ] };
+ key <I72> { [ XF86MailForward ] };
+ key <I73> { [ XF86Send ] };
+ key <I78> { [ XF86Copy ] };
+ key <MOAR> { [ XF86ApplicationRight ] };
+ key <RCTL> { [ XF86Paste ] };
+};
+
+// Microsoft Wireless Multimedia Keyboard 1.0A
+partial alphanumeric_keys
+xkb_symbols "microsoftmult" {
+ include "inet(media_nav_acpi_common)"
+ key <AE13> { [ XF86Messenger ] };
+ key <FK14> { [ XF86New ] };
+ key <FK15> { [ XF86Open ] };
+ key <FK16> { [ XF86Close ] };
+ key <FK17> { [ XF86Reply ] };
+ key <I07> { [ Redo ] };
+ key <I08> { [ Undo ] };
+ key <I16> { [ XF86LogOff ] };
+ key <I23> { [ XF86Spell ] };
+ key <I3B> { [ Help ] };
+ key <I3C> { [ XF86Music ] };
+ key <I42> { [ XF86Forward ] };
+ key <I43> { [ XF86Send ] };
+ key <I57> { [ XF86Save ] };
+ key <I58> { [ Print ] };
+ key <I64> { [ XF86Pictures ] };
+ key <I80> { [ XF86Documents ] };
+};
+
+
+// Oretec
+
+// Oretec MCK-800 MM/Internet keyboard
+partial alphanumeric_keys
+xkb_symbols "oretec" {
+ include "inet(acpi_common)"
+ key <I10> { [ XF86ScrollUp ] };
+ key <I12> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I17> { [ XF86AudioPrev ] };
+ key <I18> { [ XF86ScrollDown ] };
+ key <I19> { [ XF86ZoomOut ] };
+ key <I1E> { [ XF86AudioMute ] };
+ key <I21> { [ XF86WWW ] };
+ key <I22> { [ Menu ] };
+ key <I23> { [ XF86AudioStop ] };
+ key <I24> { [ XF86Calculator ] };
+ key <I25> { [ XF86Xfer ] };
+ key <I26> { [ XF86Mail ] };
+ key <I2E> { [ XF86AudioNext ] };
+ key <I30> { [ XF86AudioRaiseVolume ] };
+ key <I32> { [ XF86ZoomIn ] };
+ key <I68> { [ XF86AudioLowerVolume ] };
+};
+
+
+// Propeller
+
+// Propeller Voyager (KTEZ-1000)
+partial alphanumeric_keys
+xkb_symbols "propeller" {
+ include "inet(media_common)"
+ key <I12> { [ XF86AudioRewind ] };
+ key <I17> { [ XF86Close ] };
+ key <I18> { [ XF86Xfer ] };
+ key <I1E> { [ XF86AudioRecord ] };
+ key <I21> { [ XF86Documents ] };
+ key <I23> { [ XF86Game ] };
+ key <I25> { [ XF86Calculator ] };
+ key <I26> { [ Menu ] };
+ key <I32> { [ XF86WWW ] };
+ key <I68> { [ XF86DOS ] };
+ key <I7A> { [ XF86Standby ] };
+};
+
+
+// QTronix
+
+// QTronix Scorpius 98N+
+partial alphanumeric_keys
+xkb_symbols "qtronix" {
+ key <I10> { [ XF86ScrollDown ] };
+ key <I12> { [ XF86Forward ] };
+ key <I13> { [ XF86WakeUp ] };
+ key <I17> { [ XF86Search ] };
+ key <I18> { [ XF86Standby ] };
+ key <I19> { [ XF86ScrollUp ] };
+ key <I1E> { [ XF86Back ] };
+ key <I1F> { [ XF86Reload ] };
+ key <I20> { [ XF86AudioRaiseVolume ] };
+ key <I21> { [ XF86AudioPrev ] };
+ key <I22> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I23> { [ XF86AudioNext ] };
+ key <I24> { [ XF86AudioStop ] };
+ key <I25> { [ XF86HomePage ] };
+ key <I26> { [ XF86AudioMute ] };
+ key <I2E> { [ XF86AudioLowerVolume ] };
+ key <I30> { [ XF86AudioRecord ] };
+ key <I31> { [ XF86PowerOff ] };
+ key <I32> { [ XF86Stop ] };
+ key <I68> { [ XF86Calculator ] };
+};
+
+
+// Samsung
+
+// Samsung SDM 4500P
+partial alphanumeric_keys
+xkb_symbols "samsung4500" {
+ include "inet(media_nav_acpi_common)"
+ key <AE13> { [ XF86Launch4 ] };
+ key <I02> { [ XF86Launch1 ] };
+ key <I04> { [ XF86Launch3 ] };
+ key <I06> { [ XF86Launch5 ] };
+ key <I09> { [ XF86Close ] };
+ key <I0A> { [ XF86Book ] };
+ key <I18> { [ XF86Eject ] };
+ key <I26> { [ Help ] };
+ key <I59> { [ XF86Explorer ] };
+ key <NFER> { [ XF86Launch2 ] };
+};
+
+// Samsung SDM 4510P
+partial alphanumeric_keys
+xkb_symbols "samsung4510" {
+ include "inet(media_acpi_common)"
+ key <I02> { [ XF86Launch1 ] };
+ key <I04> { [ XF86Launch3 ] };
+ key <I18> { [ XF86Eject ] };
+ key <NFER> { [ XF86Launch2 ] };
+};
+
+
+// SK
+
+// SK-1300
+partial alphanumeric_keys
+xkb_symbols "sk1300" {
+ include "inet(media_common)"
+ key <I12> { [ XF86Eject ] };
+ key <I1E> { [ XF86Forward ] };
+ key <I20> { [ XF86WWW ] };
+ key <I25> { [ XF86Standby ] };
+ key <I26> { [ XF86Back ] };
+ key <I32> { [ XF86Stop ] };
+};
+
+// SK-2500
+partial alphanumeric_keys
+xkb_symbols "sk2500" {
+ include "inet(media_nav_common)"
+ key <I12> { [ XF86AudioRewind ] };
+ key <I17> { [ XF86Close ] };
+ key <I18> { [ XF86Eject ] };
+ key <I18> { [ XF86Eject ] };
+ key <I19> { [ XF86Forward ] };
+ key <I1E> { [ XF86AudioRecord ] };
+ key <I23> { [ XF86Xfer ] };
+ key <I25> { [ XF86PowerOff ] };
+ key <I26> { [ Menu ] };
+ key <I7A> { [ XF86ScreenSaver ] };
+};
+
+// SK-6200
+partial alphanumeric_keys
+xkb_symbols "sk6200" {
+ include "inet(acpi_common)"
+ key <I12> { [ XF86Favorites ] };
+ key <I14> { [ XF86AudioLowerVolume ] };
+ key <I16> { [ XF86AudioRaiseVolume ] };
+ key <I17> { [ XF86Back ] };
+ key <I19> { [ XF86Forward ] };
+ key <I1E> { [ XF86WWW ] };
+ key <I20> { [ XF86AudioMute ] };
+ key <I21> { [ XF86AudioNext ] };
+ key <I22> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I23> { [ XF86AudioPrev ] };
+ key <I24> { [ XF86AudioStop ] };
+ key <I32> { [ XF86Mail ] };
+};
+
+// SK-7100
+partial alphanumeric_keys
+xkb_symbols "sk7100" {
+ include "inet(media_common)"
+ key <I12> { [ XF86AudioPause ] };
+ key <I17> { [ XF86Close ] };
+ key <I18> { [ XF86Video ] };
+ key <I1E> { [ XF86Eject ] };
+ key <I25> { [ XF86CD ] };
+ key <I26> { [ XF86Display ] };
+ key <I32> { [ XF86WWW ] };
+};
+
+
+// Sven
+
+// SVEN Ergonomic 2500
+partial alphanumeric_keys
+xkb_symbols "sven" {
+ include "inet(acpi_common)"
+ key <I10> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I12> { [ XF86Forward ] };
+ key <I17> { [ XF86AudioRaiseVolume ] };
+ key <I18> { [ XF86ZoomOut ] };
+ key <I19> { [ XF86AudioPrev ] };
+ key <I1A> { [ XF86AudioStop ] };
+ key <I1E> { [ XF86HomePage ] };
+ key <I20> { [ XF86Mail ] };
+ key <I21> { [ XF86ZoomIn ] };
+ key <I22> { [ XF86MyComputer ] };
+ key <I23> { [ XF86Stop ] };
+ key <I24> { [ XF86ScreenSaver ] };
+ key <I25> { [ XF86AudioLowerVolume ] };
+ key <I26> { [ XF86AudioMute ] };
+ key <I28> { [ XF86Calculator ] };
+ key <I29> { [ XF86Reload ] };
+ key <I2E> { [ XF86Search ] };
+ key <I30> { [ XF86Favorites ] };
+ key <I31> { [ XF86ScrollUp ] };
+ key <I32> { [ XF86ScrollDown ] };
+ key <I62> { [ XF86AudioNext ] };
+ key <I68> { [ XF86Back ] };
+};
+
+// SVEN Slim 303
+partial alphanumeric_keys
+xkb_symbols "sven303" {
+ key <I11> { [ XF86PowerOff ] };
+ key <I12> { [ XF86Sleep ] };
+ key <I16> { [ XF86WakeUp ] };
+};
+
+
+// Symplon
+
+// Symplon PaceBook (tablet PC)
+partial alphanumeric_keys
+xkb_symbols "symplon" {
+ include "inet(nav_acpi_common)"
+ key <HOME> { [ XF86RotationPB ] };
+ key <I13> { [ XF86SplitScreen ] };
+ key <I14> { [ XF86Support ] };
+ key <I17> { [ XF86New ] };
+ key <I21> { [ XF86User2KB ] };
+ key <I25> { [ XF86RotationKB ] };
+ key <I26> { [ XF86MenuKB ] };
+ key <I6B> { [ XF86User1KB ] };
+ key <PAUS> { [ XF86UserPB ] };
+ key <UP> { [ XF86MenuPB ] };
+};
+
+// Toshiba
+
+// Toshiba Satellite S3000
+partial alphanumeric_keys
+xkb_symbols "toshiba_s3000" {
+ include "inet(media_common)"
+ // Describes the Special buttons on Toshiba Satellite 3000 models.
+ // See http://sourceforge.net/projects/omke for details on enabling
+ // these keys
+ key <I06> { [ XF86Launch1 ] };
+ key <I13> { [ XF86Launch2 ] };
+ key <I71> { [ XF86WWW ] };
+ key <I73> { [ XF86Mail ] };
+ key <I75> { [ XF86AudioRaiseVolume ] };
+ key <I76> { [ XF86AudioLowerVolume ] };
+};
+
+// Trust
+
+// Trust Wireless Keyboard Classic
+partial alphanumeric_keys
+xkb_symbols "trust" {
+ include "inet(media_nav_acpi_common)"
+ key <I11> { [ XF86ScreenSaver ] };
+ key <I1E> { [ XF86Eject ] };
+};
+
+
+// Trust Direct Access Keyboard
+partial alphanumeric_keys
+xkb_symbols "trustda" {
+ include "inet(media_common)"
+ key <I12> { [ XF86AudioRewind ] };
+ key <I17> { [ XF86Close ] };
+ key <I18> { [ XF86Eject ] };
+ key <I1E> { [ XF86AudioRecord ] };
+ key <I23> { [ XF86Xfer ] };
+ key <I25> { [ XF86Standby ] };
+ key <I26> { [ Help ] };
+ key <I32> { [ XF86WWW ] };
+ key <I7A> { [ XF86Away ] };
+};
+
+
+// YaHoo!
+
+// Yahoo! Internet Keyboard
+partial alphanumeric_keys
+xkb_symbols "yahoo" {
+ include "inet(acpi_common)"
+ key <I11> { [ XF86AudioPrev ] };
+ key <I12> { [ XF86AudioPlay, XF86AudioPause ] };
+ key <I1E> { [ XF86AudioStop ] };
+ key <I1F> { [ XF86AudioNext ] };
+ key <I20> { [ XF86AudioRecord ] };
+ key <I21> { [ XF86AudioLowerVolume ] };
+ key <I22> { [ XF86AudioRaiseVolume ] };
+ key <I23> { [ XF86AudioMute ] };
+ key <I24> { [ XF86Close ] };
+ key <I25> { [ XF86Calculator ] };
+ key <I26> { [ Help ] };
+ key <I27> { [ XF86Mail ] };
+ key <I28> { [ XF86WWW ] };
+};
+
+// Apple keyboards (macbooks, powerbooks, powermac G5, etc)
+partial alphanumeric_keys
+xkb_symbols "apple" {
+// Really brightness up/down
+ key <II65> { [ XF86BrightnessAdjust ] };
+ key <I54> { [ XF86BrightnessAdjust ] };
+ key <I20> { [ XF86AudioMute ] };
+ key <I2E> { [ XF86AudioLowerVolume ] };
+ key <I30> { [ XF86AudioRaiseVolume ] };
+ key <I56> { [ XF86RotateWindows ] };
+// Really keyboard backlight off/up/down
+ key <I57> { [ XF86Launch0 ] };
+ key <I58> { [ XF86Launch1 ] };
+ key <I59> { [ XF86Launch2 ] };
+ key <I5E> { [ XF86PowerOff ] };
+ key <K5D> { [ F13 ] };
+ key <K5E> { [ F14 ] };
+ key <K5F> { [ F15 ] };
+ key <K6C> { [ XF86Eject ] };
+ key <II5D> { [ F16 ] };
+ key <KPEQ> { [ KP_Equal ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "cymotionlinux" {
+ include "inet(media_nav_acpi_common)"
+ key <I07> { [ Undo ] };
+ key <I0A> { [ Redo ] };
+ key <I0F> { [ XF86ScrollDown ] };
+ key <I17> { [ XF86Launch2 ] };
+ key <I1F> { [ XF86Launch1 ] };
+ key <I28> { [ XF86MenuKB ] };
+ key <I2B> { [ XF86Launch3 ] };
+ key <I3C> { [ XF86Cut ] };
+ key <I78> { [ XF86Copy ] };
+ key <K65> { [ XF86Paste ] };
+ key <K75> { [ XF86ScrollUp ] };
+ key <XFER> { [ XF86AudioMedia ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "silvercrest" {
+ include "inet(media_nav_acpi_common)"
+ key <I02> { [ XF86HomePage ] };
+ key <I21> { [ XF86Launch2 ] };
+ key <K67> { [ XF86Launch1 ] };
+};
+
+// eMachines
+
+partial alphanumeric_keys
+xkb_symbols "emachines" {
+ include "inet(media_nav_acpi_common)"
+ key <I32> { [ XF86iTouch ] };
+ key <KP0> { [ KP_0 ] };
+ key <KP1> { [ KP_1 ] };
+ key <KP2> { [ KP_2 ] };
+ key <KP3> { [ KP_3 ] };
+ key <KP4> { [ KP_4 ] };
+ key <KP5> { [ KP_5 ] };
+ key <KP6> { [ KP_6 ] };
+ key <KP7> { [ KP_7 ] };
+ key <KP8> { [ KP_8 ] };
+ key <KP9> { [ KP_9 ] };
+ key <KPAD> { [ KP_Add ] };
+ key <KPDL> { [ KP_Decimal ] };
+ key <KPDV> { [ KP_Divide ] };
+ key <KPMU> { [ KP_Multiply ] };
+ key <KPSU> { [ KP_Subtract ] };
+};
+
+// BenQ
+
+//
+// BenQ X*
+// (X730, X500, X800)
+//
+// to make the FN_LOCK and CONFIG key work on the BenQ X500 , use ...
+// setkeycodes e074 130 # KEY_PROPS from /usr/include/linux/input.h
+// setkeycodes e075 171 # KEY_CONFIG from /usr/include/linux/input.h
+partial alphanumeric_keys
+xkb_symbols "benqx" {
+ include "inet(media_nav_acpi_common)"
+ key <I02> { [ XF86ModeLock ] };
+ key <I21> { [ XF86WWW ] };
+ key <I2B> { [ XF86Go ] };
+ key <I31> { [ XF86Calendar ] };
+};
+
+// Intel
+
+// Intel Classmate
+partial alphanumeric_keys
+xkb_symbols "classmate" {
+ key <I2E> { [ XF86AudioLowerVolume ] };
+ key <I30> { [ XF86AudioRaiseVolume ] };
+};
+
+// Unitek
+
+partial alphanumeric_keys
+xkb_symbols "unitekkb1925" {
+ include "inet(media_nav_common)"
+ key <I0C> { [ XF86AudioMute ] };
+ key <I11> { [ XF86PowerOff ] };
+ key <I12> { [ XF86Sleep ] };
+ key <I16> { [ XF86WakeUp ] };
+ key <I18> { [ XF86Search ] };
+ key <I1A> { [ XF86Reload ] };
+};
+
+// Creative
+
+// Creative Desktop Wireless 7000
+partial alphanumeric_keys
+xkb_symbols "creativedw7000" {
+ include "inet(media_nav_acpi_common)"
+ key <I66> { [ XF86Pictures ] };
+};
+
+// Compal
+
+// Compal FL90
+partial alphanumeric_keys
+xkb_symbols "compalfl90" {
+ include "inet(media_nav_acpi_common)"
+ key <I54> { [ XF86MonBrightnessUp ] };
+ key <II65> { [ XF86MonBrightnessDown ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "pc105" {
+ include "inet(media_nav_acpi_common)"
+};
+
+// HTC Dream
+partial alphanumeric_keys
+xkb_symbols "htcdream" {
+ key <BKSP> { [ BackSpace ] };
+ key <RTRN> { [ Return ] };
+
+ //first row
+ key <AE01> { [ 1, 1, exclam, exclam ] };
+ key <AE02> { [ 2, 2, at, at ] };
+ key <AE03> { [ 3, 3, numbersign, numbersign ] };
+ key <AE04> { [ 4, 4, dollar, dollar ] };
+ key <AE05> { [ 5, 5, percent, percent ] };
+ key <AE06> { [ 6, 6, dead_circumflex, dead_circumflex ] };
+ key <AE07> { [ 7, 7, ampersand, ampersand ] };
+ key <AE08> { [ 8, 8, asterisk, asterisk ] };
+ key <AE09> { [ 9, 9, parenleft, parenleft ] };
+ key <AE10> { [ 0, 0, parenright, parenright ] };
+
+ //fifth row
+ key <LFSH> { [ Shift_L ] };
+ key <SPCE> { [ space ] };
+ key <AB09> { [ period, period, slash, slash ] };
+ key <RTSH> { [ Shift_R ] };
+
+ //modifiers
+ modifier_map Shift { <LFSH>, <RTSH> };
+};
--- /dev/null
+partial hidden keypad_keys
+xkb_symbols "overlay" {
+ include "keypad(overlay1)"
+};
+
+partial hidden keypad_keys
+xkb_symbols "overlay1" {
+
+ // Begin "Keypad" section
+
+ key <KP7> { [ KP_Home ], overlay1=<KO7> };
+ key <KP8> { [ KP_Up ], overlay1=<KO8> };
+ key <KP9> { [ KP_Prior ], overlay1=<KO9> };
+
+ key <KP4> { [ KP_Left ], overlay1=<KO4> };
+ key <KP5> { [ KP_Begin ], overlay1=<KO5> };
+ key <KP6> { [ KP_Right ], overlay1=<KO6> };
+
+ key <KP1> { [ KP_End ], overlay1=<KO1> };
+ key <KP2> { [ KP_Down ], overlay1=<KO2> };
+ key <KP3> { [ KP_Next ], overlay1=<KO3> };
+
+ key <KP0> { [ KP_Insert ], overlay1=<KO0> };
+ key <KPDL> { [ KP_Delete ], overlay1=<KODL> };
+
+ key <KO7> { [ KP_7 ] };
+ key <KO8> { [ KP_8 ] };
+ key <KO9> { [ KP_9 ] };
+
+ key <KO4> { [ KP_4 ] };
+ key <KO5> { [ KP_5 ] };
+ key <KO6> { [ KP_6 ] };
+
+ key <KO1> { [ KP_1 ] };
+ key <KO2> { [ KP_2 ] };
+ key <KO3> { [ KP_3 ] };
+
+ key <KO0> { [ KP_0 ] };
+ key <KODL> { [ KP_Decimal ] };
+
+ // End "Keypad" section
+};
+
+partial hidden keypad_keys
+xkb_symbols "overlay2" {
+
+ // Begin "Keypad" section
+
+ key <KP7> { [ KP_Home ], overlay2=<KO7> };
+ key <KP8> { [ KP_Up ], overlay2=<KO8> };
+ key <KP9> { [ KP_Prior ], overlay2=<KO9> };
+
+ key <KP4> { [ KP_Left ], overlay2=<KO4> };
+ key <KP5> { [ KP_Begin ], overlay2=<KO5> };
+ key <KP6> { [ KP_Right ], overlay2=<KO6> };
+
+ key <KP1> { [ KP_End ], overlay2=<KO1> };
+ key <KP2> { [ KP_Down ], overlay2=<KO2> };
+ key <KP3> { [ KP_Next ], overlay2=<KO3> };
+
+ key <KP0> { [ KP_Insert ], overlay2=<KO0> };
+ key <KPDL> { [ KP_Delete ], overlay2=<KODL> };
+
+ key <KO7> { [ KP_7 ] };
+ key <KO8> { [ KP_8 ] };
+ key <KO9> { [ KP_9 ] };
+
+ key <KO4> { [ KP_4 ] };
+ key <KO5> { [ KP_5 ] };
+ key <KO6> { [ KP_6 ] };
+
+ key <KO1> { [ KP_1 ] };
+ key <KO2> { [ KP_2 ] };
+ key <KO3> { [ KP_3 ] };
+
+ key <KO0> { [ KP_0 ] };
+ key <KODL> { [ KP_Decimal ] };
+
+ // End "Keypad" section
+};
+
+partial hidden default keypad_keys
+xkb_symbols "x11" {
+// Ungrab cancels server/keyboard/pointer grabs
+ key <KPDV> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86_Ungrab ]
+ };
+
+// ClsGrb kills whichever client has a grab in effect
+ key <KPMU> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86_ClearGrab ]
+ };
+
+// -VMode switches to the previous video mode
+ key <KPSU> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, 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, KP_Add, KP_Add, 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 ] };
+ key <KPPT> { [ KP_Decimal, KP_Decimal ] };
+};
+
+
+// Legacy PC keypad definition
+// Copyright © 2006-2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+keypad_keys
+xkb_symbols "legacy" {
+
+ include "keypad(core)"
+ include "keypad(legacymath)"
+ include "keypad(legacynumber)"
+ include "kpdl(dot)"
+};
+
+
+// Legacy Wang 725-3771-ae and 725-3771-uk keypad definition
+// Copyright © 2006-2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+keypad_keys
+xkb_symbols "legacy_wang" {
+
+ include "keypad(core)"
+ include "keypad(legacymath)"
+ include "keypad(legacynumber_wang)"
+ include "kpdl(dot)"
+};
+
+
+// Complete new keypad definition
+// Copyright © 2006-2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+keypad_keys
+xkb_symbols "oss" {
+
+ include "keypad(core)"
+ include "keypad(ossmath)"
+ include "keypad(ossnumber)"
+ include "kpdl(dotoss)"
+};
+
+
+// Latin9 restriction of new keypad definition
+// Copyright © 2006-2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+keypad_keys
+xkb_symbols "oss_latin9" {
+
+ include "keypad(core)"
+ include "keypad(ossmath_latin9)"
+ include "keypad(legacynumber)"
+ include "kpdl(dotoss_latin9)"
+};
+
+
+// Wang 725-3771-ae and 725-3771-uk keypad variant of oss keypad
+// Copyright © 2006-2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+keypad_keys
+xkb_symbols "oss_wang" {
+
+ include "keypad(core)"
+ include "keypad(ossmath)"
+ include "keypad(ossnumber_wang)"
+ include "kpdl(dotoss)"
+};
+
+
+// Forward-looking keypad definition
+// Won't work with applications that make ASCII assumptions
+// Copyright © 2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+keypad_keys
+xkb_symbols "future" {
+
+ include "keypad(core)"
+ include "keypad(futuremath)"
+ include "keypad(ossnumber)"
+ include "kpdl(commaoss)"
+};
+
+
+// Forward-looking keypad definition
+// Won't work with applications that make ASCII assumptions
+// Copyright © 2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+keypad_keys
+xkb_symbols "future_wang" {
+
+ include "keypad(core)"
+ include "keypad(futuremath)"
+ include "keypad(ossnumber_wang)"
+ include "kpdl(commaoss)"
+};
+
+
+// Keypad keys nobody changes
+// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+partial keypad_keys
+xkb_symbols "core" {
+
+ modifier_map Mod2 { Num_Lock };
+
+ key <NMLK> { [ Num_Lock, Pointer_EnableKeys ] };
+ key <KPEN> { [ KP_Enter ] };
+ key <KPEQ> { [ KP_Equal ] };
+};
+
+
+// Legacy keypad math area
+// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+//
+// ┏━━━━━┱─────┬─────┬─────┐
+// ┃Num ┃ ₁ │ ₂ │ ₃ │ ₁ <XF86_Ungrab>
+// ┃Lock⇭┃ / │ * │ - │ ₂ <XF86_ClearGrab>
+// ┡━━━━━╃─────┼─────┼─────┤ ₃ <XF86_Prev_VMode>
+// │ ₄ │ ₄ <XF86_Next_VMode>
+// │ │
+// ┤ │ 1 None
+// │ │ 2 Ctrl+Alt
+// │ + │
+// ╆━━━━━┪
+partial keypad_keys
+xkb_symbols "legacymath" {
+
+ key.type[Group1]="CTRL+ALT" ;
+
+ key <KPDV> { [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86_Ungrab ] }; // / <XF86_Ungrab>
+ key <KPMU> { [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86_ClearGrab ] }; // * <XF86_ClearGrab>
+ key <KPSU> { [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86_Prev_VMode ] }; // - <XF86_Prev_VMode>
+
+ key <KPAD> { [ KP_Add, KP_Add, KP_Add, KP_Add, XF86_Next_VMode ] }; // + <XF86_Next_VMode>
+
+};
+
+
+// Keypad math area with non-CS operators
+// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+//
+// ┏━━━━━┱─────┬─────┬─────┐
+// ┃Num ┃ ∕ ₁ │ . ₂ │ − ₃ │ ₁ <XF86_Ungrab>
+// ┃Lock⇭┃ / ÷ │ * × │ - − │ ₂ <XF86_ClearGrab>
+// ┡━━━━━╃─────┼─────┼─────┤ ₃ <XF86_Prev_VMode>
+// │ + ₄ │ ₄ <XF86_Next_VMode>
+// │ │
+// ┤ │ 1 None
+// │ │ 2 Level3 ⇮
+// │ + + │ 3 Shift+Level3 ⇧⇮
+// ╆━━━━━┪ 4 Ctrl+Alt
+partial keypad_keys
+xkb_symbols "ossmath" {
+
+ key.type[Group1]="FOUR_LEVEL_X" ;
+
+ key <KPDV> { [ KP_Divide, 0x1002215, 0x10000F7, XF86_Ungrab ] }; // / ∕ ÷ <XF86_Ungrab>
+ key <KPMU> { [ KP_Multiply, 0x10022C5, 0x10000D7, XF86_ClearGrab ] }; // * ⋅ × <XF86_ClearGrab>
+ key <KPSU> { [ KP_Subtract, 0x1002212, 0x1002212, XF86_Prev_VMode ] }; // - − − <XF86_Prev_VMode>
+
+ key <KPAD> { [ KP_Add, 0x100002B, 0x100002B, XF86_Next_VMode ] }; // + + + <XF86_Next_VMode>
+
+};
+
+
+// Keypad math area with non-CS operators in first levels
+// As demanded by users not interested in legacy pre-unicode junk
+// Copyright © 2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+//
+// ┏━━━━━┱─────┬─────┬─────┐
+// ┃Num ┃ / ₁ │ * ₂ │ - ₃ │ ₁ <XF86_Ungrab>
+// ┃Lock⇭┃ ∕ ÷ │ . × │ − − │ ₂ <XF86_ClearGrab>
+// ┡━━━━━╃─────┼─────┼─────┤ ₃ <XF86_Prev_VMode>
+// │ + ₄ │ ₄ <XF86_Next_VMode>
+// │ │
+// ┤ │ 1 None
+// │ │ 2 Level3 ⇮
+// │ + + │ 3 Shift+Level3 ⇧⇮
+// ╆━━━━━┪ 4 Ctrl+Alt
+partial keypad_keys
+xkb_symbols "futuremath" {
+
+ key.type[Group1]="FOUR_LEVEL_X" ;
+
+ key <KPDV> { [ 0x1002215, KP_Divide, 0x10000F7, XF86_Ungrab ] }; // ∕ / ÷ <XF86_Ungrab>
+ key <KPMU> { [ 0x10022C5, KP_Multiply, 0x10000D7, XF86_ClearGrab ] }; // ⋅ * × <XF86_ClearGrab>
+ key <KPSU> { [ 0x1002212, KP_Subtract, 0x1002212, XF86_Prev_VMode ] }; // − - − <XF86_Prev_VMode>
+
+ key <KPAD> { [ 0x100002B, KP_Add, 0x100002B, XF86_Next_VMode ] }; // + + + <XF86_Next_VMode>
+};
+
+
+// Keypad math area with non-CS operators, restricted to latin9
+// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+//
+// ┏━━━━━┱─────┬─────┬─────┐
+// ┃Num ┃ / ₁ │ · ₂ │ - ₃ │ ₁ <XF86_Ungrab>
+// ┃Lock⇭┃ / ÷ │ * × │ - - │ ₂ <XF86_ClearGrab>
+// ┡━━━━━╃─────┼─────┼─────┤ ₃ <XF86_Prev_VMode>
+// │ + ₄ │ ₄ <XF86_Next_VMode>
+// │ │
+// ┤ │ 1 None
+// │ │ 2 Level3 ⇮
+// │ + + │ 3 Shift+Level3 ⇧⇮
+// ╆━━━━━┪ 4 Ctrl+Alt
+partial keypad_keys
+xkb_symbols "ossmath_latin9" {
+
+ key.type[Group1]="FOUR_LEVEL_X";
+
+ key <KPDV> { [ KP_Divide, slash, division, XF86_Ungrab ] }; // / / ÷ <XF86_Ungrab>
+ key <KPMU> { [ KP_Multiply, periodcentered, multiply, XF86_ClearGrab ] }; // * · × <XF86_ClearGrab>
+ key <KPSU> { [ KP_Subtract, minus, minus, XF86_Prev_VMode ] }; // - - - <XF86_Prev_VMode>
+
+ key <KPAD> { [ KP_Add, plus, plus, XF86_Next_VMode ] }; // + + + <XF86_Next_VMode>
+};
+
+
+// Legacy keypad number area
+// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+//
+// ┏━━━━━┱ ⇱ Home
+// ┃Num ┃ ⇲ End
+// ┃Lock⇭┃ ⇞ Page up
+// ┡━━━━━╃─────┼─────┼ ⇟ Page down
+// │ 7 │ 8 │ 9 │ ⇞ Page up
+// │ ⇱ │ ⇧ │ ⇞ │ ⎀ Insert
+// ├─────┼─────┼─────┤ ␥ Delete
+// │ 4 │ 5 │ 6 │ ⇦⇧⇨⇩ Directions
+// │ ⇦ │ │ ⇨ │
+// ├─────┼─────┼─────╆
+// │ 1 │ 2 │ 3 ┃
+// │ ⇲ │ ⇩ │ ⇟ ┃ 1 None
+// ├─────┴─────┼─────┨ 2 Num Lock ⇭
+// │ 0 │
+// │ ⎀ │
+// └───────────┴
+partial keypad_keys
+xkb_symbols "legacynumber" {
+
+ key.type[Group1]="KEYPAD" ;
+
+ key <KP7> { [ KP_Home, KP_7 ] }; // <home> 7
+ key <KP8> { [ KP_Up, KP_8 ] }; // <up> 8
+ key <KP9> { [ KP_Prior, KP_9 ] }; // <prior> 9
+
+ key <KP4> { [ KP_Left, KP_4 ] }; // <left> 4
+ key <KP5> { [ KP_Begin, KP_5 ] }; // <begin> 5
+ key <KP6> { [ KP_Right, KP_6 ] }; // <right> 6
+
+ key <KP1> { [ KP_End, KP_1 ] }; // <end> 1
+ key <KP2> { [ KP_Down, KP_2 ] }; // <down> 2
+ key <KP3> { [ KP_Next, KP_3 ] }; // <next> 3
+
+ key <KP0> { [ KP_Insert, KP_0 ] }; // <insert> 0
+};
+
+
+// Legacy Wang 725-3771-ae and 725-3771-uk keypad number area
+// Copyright © 2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+// This is actually a three-level keypad, declared as four-level
+// to avoid defining a new type
+//
+// ┏━━━━━┱ ⇱ Home
+// ┃Num ┃ ⇲ End
+// ┃Lock⇭┃ ⇞ Page up
+// ┡━━━━━╃─────┼─────┼ ⇟ Page down
+// │ 7 │ 8 │ 9 │ ⇞ Page up
+// │ ⇱ < │ ⇧ > │ ⇞ ^ │ ⎀ Insert
+// ├─────┼─────┼─────┤ ␥ Delete
+// │ 4 │ 5 │ 6 │ ⇦⇧⇨⇩ Directions
+// │ ⇦ [ │ ] │ ⇨ $ │
+// ├─────┼─────┼─────╆
+// │ 1 │ 2 │ 3 ┃
+// │ ⇲ & │ ⇩ @ │ ⇟ # ┃ 1 None
+// ├─────┴─────┼─────┨ 2 Num Lock ⇭
+// │ 0 │ 3 Level3 ⇮
+// │ ⎀ │
+// └───────────┴
+partial keypad_keys
+xkb_symbols "legacynumber_wang" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KP7> { [ KP_Home, KP_7, less ] }; // <home> 7 <
+ key <KP8> { [ KP_Up, KP_8, greater ] }; // <up> 8 >
+ key <KP9> { [ KP_Prior, KP_9, asciicircum ] }; // <prior> 9 ^
+
+ key <KP4> { [ KP_Left, KP_4, bracketleft ] }; // <left> 4 [
+ key <KP5> { [ KP_Begin, KP_5, bracketright ] }; // <begin> 5 ]
+ key <KP6> { [ KP_Right, KP_6, dollar ] }; // <right> 6 $
+
+ key <KP1> { [ KP_End, KP_1, ampersand ] }; // <end> 1 &
+ key <KP2> { [ KP_Down, KP_2, at ] }; // <down> 2 @
+ key <KP3> { [ KP_Next, KP_3, numbersign ] }; // <next> 3 #
+
+ key <KP0> { [ KP_Insert, KP_0, apostrophe ] }; // <insert> 0 '
+};
+
+
+// Keypad number area with arrow symbols
+// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+//
+// ┏━━━━━┱ ⇱ Home
+// ┃Num ┃ ⇲ End
+// ┃Lock⇭┃ ⇞ Page up
+// ┡━━━━━╃─────┼─────┼ ⇟ Page down
+// │ 7 ⇖ │ 8 ⇑ │ 9 ⇗ │ ⇞ Page up
+// │ ⇱ ↖ │ ⇧ ↑ │ ⇞ ↗ │ ⎀ Insert
+// ├─────┼─────┼─────┤ ␥ Delete
+// │ 4 ⇐ │ 5 ⇔ │ 6 ⇗ │ ⇦⇧⇨⇩ Directions
+// │ ⇦ ← │ ↔ │ ⇨ ↗ │ ⍽ narrow no-break space
+// ├─────┼─────┼─────╆
+// │ 1 ⇙ │ 2 ⇓ │ 3 ⇘ ┃
+// │ ⇲ ↙ │ ⇩ ↓ │ ⇟ ↘ ┃ 1 None
+// ├─────┴─────┼─────┨ 2 Num Lock ⇭
+// │ 0 ⇕ │ 3 Level3 ⇮
+// │ ⎀ ↕ │ 4 Shift+Level3 ⇧⇮
+// └───────────┴
+partial keypad_keys
+xkb_symbols "ossnumber" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KP7> { [ KP_Home, KP_7, 0x1002196, 0x10021D6 ] }; // <home> 7 ↖ ⇖
+ key <KP8> { [ KP_Up, KP_8, 0x1002191, 0x10021D1 ] }; // <up> 8 ↑ ⇑
+ key <KP9> { [ KP_Prior, KP_9, 0x1002197, 0x10021D7 ] }; // <prior> 9 ↗ ⇗
+
+ key <KP4> { [ KP_Left, KP_4, 0x1002190, 0x10021D0 ] }; // <left> 4 ← ⇐
+ key <KP5> { [ KP_Begin, KP_5, 0x1002194, 0x10021D4 ] }; // <begin> 5 ↔ ⇔
+ key <KP6> { [ KP_Right, KP_6, 0x1002192, 0x10021D2 ] }; // <right> 6 → ⇒
+
+ key <KP1> { [ KP_End, KP_1, 0x1002199, 0x10021D9 ] }; // <end> 1 ↙ ⇙
+ key <KP2> { [ KP_Down, KP_2, 0x1002193, 0x10021D3 ] }; // <down> 2 ↓ ⇓
+ key <KP3> { [ KP_Next, KP_3, 0x1002198, 0x10021D8 ] }; // <next> 3 ↘ ⇘
+
+ key <KP0> { [ KP_Insert, KP_0, 0x1002195, 0x10021D5 ] }; // <insert> 0 ↕ ⇕
+};
+
+
+// Wang 725-3771-ae and 725-3771-uk keypad number area with additional arrow symbols
+// Copyright © 2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+//
+// ┏━━━━━┱ ⇱ Home
+// ┃Num ┃ ⇲ End
+// ┃Lock⇭┃ ⇞ Page up
+// ┡━━━━━╃─────┼─────┼ ⇟ Page down
+// │ 7 ↖ │ 8 ↑ │ 9 ↗ │ ⇞ Page up
+// │ ⇱ < │ ⇧ > │ ⇞ ^ │ ⎀ Insert
+// ├─────┼─────┼─────┤ ␥ Delete
+// │ 4 ← │ 5 ↔ │ 6 → │ ⇦⇧⇨⇩ Directions
+// │ ⇦ [ │ ] │ ⇨ $ │ ⍽ narrow no-break space
+// ├─────┼─────┼─────╆
+// │ 1 ↙ │ 2 ↓ │ 3 ↘ ┃
+// │ ⇲ & │ ⇩ @ │ ⇟ # ┃ 1 None
+// ├─────┴─────┼─────┨ 2 Num Lock ⇭
+// │ 0 ↕ │ 3 Level3 ⇮
+// │ ⎀ ' │ 4 Shift+Level3 ⇧⇮
+// └───────────┴
+partial keypad_keys
+xkb_symbols "ossnumber_wang" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KP7> { [ KP_Home, KP_7, less, 0x1002196 ] }; // <home> 7 < ↖
+ key <KP8> { [ KP_Up, KP_8, greater, 0x1002191 ] }; // <up> 8 > ↑
+ key <KP9> { [ KP_Prior, KP_9, asciicircum, 0x1002197 ] }; // <prior> 9 ^ ↗
+
+ key <KP4> { [ KP_Left, KP_4, bracketleft, 0x1002190 ] }; // <left> 4 [ ←
+ key <KP5> { [ KP_Begin, KP_5, bracketright, 0x1002194 ] }; // <begin> 5 ] ↔
+ key <KP6> { [ KP_Right, KP_6, dollar, 0x1002192 ] }; // <right> 6 $ →
+
+ key <KP1> { [ KP_End, KP_1, ampersand, 0x1002199 ] }; // <end> 1 & ↙
+ key <KP2> { [ KP_Down, KP_2, at, 0x1002193 ] }; // <down> 2 @ ↓
+ key <KP3> { [ KP_Next, KP_3, numbersign, 0x1002198 ] }; // <next> 3 # ↘
+
+ key <KP0> { [ KP_Insert, KP_0, apostrophe, 0x1002195 ] }; // <insert> 0 ' ↕
+};
+
+// Standard base "pc" layout only contains cursor keys, and then gets
+// augmented with the digits later. If you define your own layout for
+// the numpad you can inherit the cursors, but you'll have to define
+// the digits yourself. This module can be included in the rules to
+// define math operators; these are the variants used in computer
+// languages that are based on ASCII. NoSymbol doesn't mean that
+// nothing is bound to the key but that no assignment is done here.
+// srvr_ctrl(stdkeypad) and keypad(x11) declare the operator keys to
+// be of type CTRL+ALT in order to assign server control events to
+// them, but it uses the second level which is overwritten if we have
+// more than one definition (shift state) for the key. Instead, here
+// the commands are put at the fourth level.
+partial keypad_keys
+xkb_symbols "ops" {
+ key <KPDV> { [ NoSymbol, slash, NoSymbol, XF86_Ungrab ] };
+ key <KPMU> { [ NoSymbol, asterisk, NoSymbol, XF86_ClearGrab ] };
+ key <KPSU> { [ NoSymbol, minus, NoSymbol, XF86_Prev_VMode ] };
+ key <KPAD> { [ NoSymbol, plus, NoSymbol, XF86_Next_VMode ] };
+ key <KPEQ> { [ NoSymbol, equal ] };
+};
+
+// Hexadecimal Numpad, by Roland Kaufmann <rlndkfmn at gmail dot com>
+// License: BSD (also covers variant with ATM digit order)
+// Third-level gives the letters used in hexadecimal numbers, or
+// columns in small spreadsheets. As a bonus, having 'e' available at
+// the center of the keyboard makes it easy to enter floating point
+// numbers in scientific notation.
+// Equal is added to start formulas (most numpads on PCs don't have
+// their own equal key), comma as a list separator (as most
+// programming languages wants period as a decimal separator) and
+// colon to enter times and ranges. Someone also may want to represent
+// multiplication and division in prose using x and colon.
+// Two first levels are specified as NoSymbol to not override any
+// previous specification. Combine this with another keypad specifier,
+// e.g. "legacy".
+partial keypad_keys
+xkb_symbols "hex" {
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ // None NumLock AltGr
+ // symbol row
+ key <KPDV> { [ NoSymbol, NoSymbol, parenleft ] };
+ key <KPMU> { [ NoSymbol, NoSymbol, parenright ] };
+ key <KPSU> { [ NoSymbol, NoSymbol, dollar ] };
+
+ // upper row
+ key <KP7> { [ NoSymbol, NoSymbol, a ] };
+ key <KP8> { [ NoSymbol, NoSymbol, b ] };
+ key <KP9> { [ NoSymbol, NoSymbol, c ] };
+
+ // home row
+ key <KP4> { [ NoSymbol, NoSymbol, d ] };
+ key <KP5> { [ NoSymbol, NoSymbol, e ] };
+ key <KP6> { [ NoSymbol, NoSymbol, f ] };
+ key <KPAD> { [ NoSymbol, NoSymbol, comma ] };
+
+ // lower row
+ key <KP1> { [ NoSymbol, NoSymbol, equal ] };
+ key <KP2> { [ NoSymbol, NoSymbol, x ] };
+ key <KP3> { [ NoSymbol, NoSymbol, colon ] };
+
+ // decimal row
+ key <KP0> { [ NoSymbol, NoSymbol, backslash ] };
+};
+
+// Main numbers follows the traditions from ATMs and phones with
+// numbers increasing downwards to the right. (It is easier to
+// change the keyboard layout than to reprogram your local ATM;
+// also cell-phones are becoming more common while calculators are
+// becoming more rare).
+// First level is left unspecified, so it may be combined with another
+// layout, e.g. "legacy".
+partial keypad_keys
+xkb_symbols "atm" {
+ // upper row
+ key <KP7> { [ NoSymbol, KP_1 ] };
+ key <KP8> { [ NoSymbol, KP_2 ] };
+ key <KP9> { [ NoSymbol, KP_3 ] };
+
+ // lower row
+ key <KP1> { [ NoSymbol, KP_7 ] };
+ key <KP2> { [ NoSymbol, KP_8 ] };
+ key <KP3> { [ NoSymbol, KP_9 ] };
+};
+
+
+partial default modifier_keys
+xkb_symbols "pointerkeys" {
+ key <NMLK> { [ Num_Lock, Pointer_EnableKeys ] };
+};
+
+// Only numbers, operators and decimal separator,
+// as seen on keypad overlay on Japanese keyboard.
+// ┌─┬─┬─┬─┐
+// │7│8│9│*│
+// ├─┼─┼─┼─┤
+// │4│5│6│-│
+// ├─┼─┼─┼─┤
+// │1│2│3│+│
+// ├─┼─┼─┼─┤
+// │0│ │·│/│
+// └─┴─┴─┴─┘
+partial keypad_keys
+xkb_symbols "numoperdecsep" {
+ key <KO7> { [ KP_7 ] };
+ key <KO8> { [ KP_8 ] };
+ key <KO9> { [ KP_9 ] };
+// ClsGrb kills whichever client has a grab in effect
+ key <KOMU> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86_ClearGrab ]
+ };
+
+ key <KO4> { [ KP_4 ] };
+ key <KO5> { [ KP_5 ] };
+ key <KO6> { [ KP_6 ] };
+// -VMode switches to the previous video mode
+ key <KOSU> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86_Prev_VMode ]
+ };
+
+ key <KO1> { [ KP_1 ] };
+ key <KO2> { [ KP_2 ] };
+ key <KO3> { [ KP_3 ] };
+// +VMode switches to the next video mode
+ key <KOAD> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86_Next_VMode ]
+ };
+
+ key <KO0> { [ KP_0 ] };
+ key <KODL> { [ KP_Decimal ] };
+// Ungrab cancels server/keyboard/pointer grabs
+ key <KODV> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86_Ungrab ]
+ };
+};
--- /dev/null
+// The <KPDL> key is a mess.
+// It was probably originally meant to be a decimal separator.
+// Except since it was declared by USA people it didn't use the original
+// SI separator "," but a "." (since then the USA managed to f-up the SI
+// by making "." an accepted alternative, but standards still use "," as
+// default)
+// As a result users of SI-abiding countries expect either a "." or a ","
+// or a "decimal_separator" which may or may not be translated in one of the
+// above depending on applications.
+// It's not possible to define a default per-country since user expectations
+// depend on the conflicting choices of their most-used applications,
+// operating system, etc. Therefore it needs to be a configuration setting
+// Copyright © 2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+
+
+// Legacy <KPDL> #1
+// This assumes KP_Decimal will be translated in a dot
+partial keypad_keys
+xkb_symbols "dot" {
+
+ key.type[Group1]="KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, KP_Decimal ] }; // <delete> <separator>
+};
+
+
+// Legacy <KPDL> #2
+// This assumes KP_Separator will be translated in a comma
+partial keypad_keys
+xkb_symbols "comma" {
+
+ key.type[Group1]="KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, KP_Separator ] }; // <delete> <separator>
+};
+
+
+// Period <KPDL>, usual keyboard serigraphy in most countries
+partial keypad_keys
+xkb_symbols "dotoss" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, period, comma, 0x100202F ] }; // <delete> . , ⍽ (narrow no-break space)
+};
+
+
+// Period <KPDL>, usual keyboard serigraphy in most countries, latin-9 restriction
+partial keypad_keys
+xkb_symbols "dotoss_latin9" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, period, comma, nobreakspace ] }; // <delete> . , ⍽ (no-break space)
+};
+
+
+// Comma <KPDL>, what most non anglo-saxon people consider the real separator
+partial keypad_keys
+xkb_symbols "commaoss" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, comma, period, 0x100202F ] }; // <delete> , . ⍽ (narrow no-break space)
+};
+
+
+// Momayyez <KPDL>: Bahrain, Iran, Iraq, Kuwait, Oman, Qatar, Saudi Arabia, Syria, UAE
+partial keypad_keys
+xkb_symbols "momayyezoss" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, 0x100066B, comma, 0x100202F ] }; // <delete> ? , ⍽ (narrow no-break space)
+};
+
+
+// Abstracted <KPDL>, pray everything will work out (it usually does not)
+partial keypad_keys
+xkb_symbols "kposs" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KPDL> { [ KP_Delete, KP_Decimal, KP_Separator, 0x100202F ] }; // <delete> ? ? ⍽ (narrow no-break space)
+};
+
+// Spreadsheets may be configured to use the dot as decimal
+// punctuation, comma as a thousands separator and then semi-colon as
+// the list separator. Of these, dot and semi-colon is most important
+// when entering data by the keyboard; the comma can then be inferred
+// and added to the presentation afterwards. Using semi-colon as a
+// general separator may in fact be preferred to avoid ambiguities
+// in data files. Most times a decimal separator is hard-coded, it
+// seems to be period, probably since this is the syntax used in
+// (most) programming languages.
+partial keypad_keys
+xkb_symbols "semi" {
+
+ key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+ key <KPDL> { [ NoSymbol, NoSymbol, semicolon ] };
+};
--- /dev/null
+// Common Latin alphabet layout
+
+default partial
+xkb_symbols "basic" {
+
+ key <AE01> { [ 1, exclam, onesuperior, exclamdown ] };
+ key <AE02> { [ 2, at, twosuperior, oneeighth ] };
+ key <AE03> { [ 3, numbersign, threesuperior, sterling ] };
+ key <AE04> { [ 4, dollar, onequarter, dollar ] };
+ key <AE05> { [ 5, percent, onehalf, threeeighths ] };
+ key <AE06> { [ 6, asciicircum, threequarters, fiveeighths ] };
+ key <AE07> { [ 7, ampersand, braceleft, seveneighths ] };
+ key <AE08> { [ 8, asterisk, bracketleft, trademark ] };
+ key <AE09> { [ 9, parenleft, bracketright, plusminus ] };
+ key <AE10> { [ 0, parenright, braceright, degree ] };
+ key <AE11> { [ minus, underscore, backslash, questiondown ] };
+ key <AE12> { [ equal, plus, dead_cedilla, dead_ogonek ] };
+
+ key <AD01> { [ q, Q, at, Greek_OMEGA ] };
+ key <AD02> { [ w, W, lstroke, Lstroke ] };
+ key <AD03> { [ e, E, e, E ] };
+ key <AD04> { [ r, R, paragraph, registered ] };
+ key <AD05> { [ t, T, tslash, Tslash ] };
+ key <AD06> { [ y, Y, leftarrow, yen ] };
+ key <AD07> { [ u, U, downarrow, uparrow ] };
+ key <AD08> { [ i, I, rightarrow, idotless ] };
+ key <AD09> { [ o, O, oslash, Ooblique ] };
+ key <AD10> { [ p, P, thorn, THORN ] };
+ key <AD11> { [bracketleft, braceleft, dead_diaeresis, dead_abovering ] };
+ key <AD12> { [bracketright, braceright, dead_tilde, dead_macron ] };
+
+ key <AC01> { [ a, A, ae, AE ] };
+ key <AC02> { [ s, S, ssharp, section ] };
+ key <AC03> { [ d, D, eth, ETH ] };
+ key <AC04> { [ f, F, dstroke, ordfeminine ] };
+ key <AC05> { [ g, G, eng, ENG ] };
+ key <AC06> { [ h, H, hstroke, Hstroke ] };
+ key <AC07> { [ j, J, j, J ] };
+ key <AC08> { [ k, K, kra, ampersand ] };
+ key <AC09> { [ l, L, lstroke, Lstroke ] };
+ key <AC10> { [ semicolon, colon, dead_acute, dead_doubleacute ] };
+ key <AC11> { [apostrophe, quotedbl, dead_circumflex, dead_caron ] };
+ key <TLDE> { [ grave, asciitilde, notsign, notsign ] };
+
+ key <BKSL> { [ backslash, bar, dead_grave, dead_breve ] };
+ key <AB01> { [ z, Z, guillemotleft, less ] };
+ key <AB02> { [ x, X, guillemotright, greater ] };
+ key <AB03> { [ c, C, cent, copyright ] };
+ key <AB04> { [ v, V, leftdoublequotemark, leftsinglequotemark ] };
+ key <AB05> { [ b, B, rightdoublequotemark, rightsinglequotemark ] };
+ key <AB06> { [ n, N, n, N ] };
+ key <AB07> { [ m, M, mu, masculine ] };
+ key <AB08> { [ comma, less, horizconnector, multiply ] };
+ key <AB09> { [ period, greater, periodcentered, division ] };
+ key <AB10> { [ slash, question, dead_belowdot, dead_abovedot ] };
+
+};
+
+// Northern Europe ( Danish, Finnish, Norwegian, Swedish) common layout
+
+partial
+xkb_symbols "type2" {
+
+ include "latin"
+
+ key <AE01> { [ 1, exclam, exclamdown, onesuperior ] };
+ key <AE02> { [ 2, quotedbl, at, twosuperior ] };
+ key <AE03> { [ 3, numbersign, sterling, threesuperior] };
+ key <AE04> { [ 4, currency, dollar, onequarter ] };
+ key <AE05> { [ 5, percent, onehalf, cent ] };
+ key <AE06> { [ 6, ampersand, yen, fiveeighths ] };
+ key <AE07> { [ 7, slash, braceleft, division ] };
+ key <AE08> { [ 8, parenleft, bracketleft, guillemotleft] };
+ key <AE09> { [ 9, parenright, bracketright, guillemotright] };
+ key <AE10> { [ 0, equal, braceright, degree ] };
+
+ key <AD03> { [ e, E, EuroSign, cent ] };
+ key <AD04> { [ r, R, registered, registered ] };
+ key <AD05> { [ t, T, thorn, THORN ] };
+ key <AD09> { [ o, O, oe, OE ] };
+ key <AD11> { [ aring, Aring, dead_diaeresis, dead_abovering ] };
+ key <AD12> { [dead_diaeresis, dead_circumflex, dead_tilde, dead_caron ] };
+
+ key <AC01> { [ a, A, ordfeminine, masculine ] };
+
+ key <AB03> { [ c, C, copyright, copyright ] };
+ key <AB08> { [ comma, semicolon, dead_cedilla, dead_ogonek ] };
+ key <AB09> { [ period, colon, periodcentered, dead_abovedot ] };
+ key <AB10> { [ minus, underscore, dead_belowdot, dead_abovedot ] };
+};
+
+// Slavic Latin ( Albanian, Croatian, Polish, Slovene, Yugoslav)
+// common layout
+
+partial
+xkb_symbols "type3" {
+
+ include "latin"
+
+ key <AD01> { [ q, Q, backslash, Greek_OMEGA ] };
+ key <AD02> { [ w, W, bar, Lstroke ] };
+ key <AD06> { [ z, Z, leftarrow, yen ] };
+
+ key <AC04> { [ f, F, bracketleft, ordfeminine ] };
+ key <AC05> { [ g, G, bracketright, ENG ] };
+ key <AC08> { [ k, K, lstroke, ampersand ] };
+
+ key <AB01> { [ y, Y, guillemotleft, less ] };
+ key <AB04> { [ v, V, at, grave ] };
+ key <AB05> { [ b, B, braceleft, apostrophe ] };
+ key <AB06> { [ n, N, braceright, braceright ] };
+ key <AB07> { [ m, M, section, masculine ] };
+ key <AB08> { [ comma, semicolon, less, multiply ] };
+ key <AB09> { [ period, colon, greater, division ] };
+};
+
+// Another one Latin common layout
+// (German, Estonian, Spanish, Icelandic, Italian, Latin American, Portuguese)
+
+partial
+xkb_symbols "type4" {
+
+ include "latin"
+
+ key <AE02> { [ 2, quotedbl, at, oneeighth ] };
+ key <AE06> { [ 6, ampersand, notsign, fiveeighths ] };
+ key <AE07> { [ 7, slash, braceleft, seveneighths ] };
+ key <AE08> { [ 8, parenleft, bracketleft, trademark ] };
+ key <AE09> { [ 9, parenright, bracketright, plusminus ] };
+ key <AE10> { [ 0, equal, braceright, degree ] };
+
+ key <AD03> { [ e, E, EuroSign, cent ] };
+
+ key <AB08> { [ comma, semicolon, horizconnector, multiply ] };
+ key <AB09> { [ period, colon, periodcentered, division ] };
+ key <AB10> { [ minus, underscore, dead_belowdot, dead_abovedot ] };
+};
+
+partial
+xkb_symbols "nodeadkeys" {
+
+ key <AE12> { [ equal, plus, cedilla, ogonek ] };
+ key <AD11> { [bracketleft, braceleft, diaeresis, degree ] };
+ key <AD12> { [bracketright, braceright, asciitilde, macron ] };
+ key <AC10> { [ semicolon, colon, acute, doubleacute ] };
+ key <AC11> { [apostrophe, quotedbl, asciicircum, caron ] };
+ key <BKSL> { [ backslash, bar, grave, breve ] };
+ key <AB10> { [ slash, question, dead_belowdot, abovedot ] };
+};
+
+partial
+xkb_symbols "type2_nodeadkeys" {
+
+ include "latin(nodeadkeys)"
+
+ key <AD11> { [ aring, Aring, diaeresis, degree ] };
+ key <AD12> { [ diaeresis, asciicircum, asciitilde, caron ] };
+ key <AB08> { [ comma, semicolon, cedilla, ogonek ] };
+ key <AB09> { [ period, colon, periodcentered, abovedot ] };
+ key <AB10> { [ minus, underscore, dead_belowdot, abovedot ] };
+};
+
+partial
+xkb_symbols "type3_nodeadkeys" {
+
+ include "latin(nodeadkeys)"
+};
+
+partial
+xkb_symbols "type4_nodeadkeys" {
+
+ include "latin(nodeadkeys)"
+
+ key <AB10> { [ minus, underscore, dead_belowdot, abovedot ] };
+};
+
+// Added 2008.03.05 by Marcin Woliński
+// See http://marcinwolinski.pl/keyboard/ for a description.
+// Used by pl(intl)
+//
+// ┌────┐
+// │ 2 4│ 2 = Shift, 4 = Level3 + Shift
+// │ 1 3│ 1 = Normal, 3 = Level3
+// └────┘
+// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
+// │ ~ ~ │ ! ' │ @ " │ # ˝ │ $ ¸ │ % ˇ │ ^ ^ │ & ˘ │ * ˙ │ ( ̣ │ ) ° │ _ ¯ │ + ˛ ┃ ⌫ Back ┃
+// │ ` ` │ 1 ¡ │ 2 © │ 3 • │ 4 § │ 5 € │ 6 ¢ │ 7 − │ 8 × │ 9 ÷ │ 0 ° │ - – │ = — ┃ space ┃
+// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
+// ┃ ┃ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { « │ } » ┃ Enter ┃
+// ┃Tab ↹ ┃ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ ‹ │ ] › ┃ ⏎ ┃
+// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃
+// ┃ ┃ A │ S │ D │ F │ G │ H │ J │ K │ L │ : “ │ " ” │ | ¶ ┃ ┃
+// ┃Caps ⇬ ┃ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; ‘ │ ' ’ │ \ ┃ ┃
+// ┣━━━━━━━━┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫
+// ┃ │ Z │ X │ C │ V │ B │ N │ M │ < „ │ > · │ ? ¿ ┃ ┃
+// ┃Shift ⇧ │ z │ x │ c │ v │ b │ n │ m │ , ‚ │ . … │ / ⁄ ┃Shift ⇧ ┃
+// ┣━━━━━━━┳━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛
+// ┃ ┃ ┃ ┃ ␣ ⍽ ┃ ┃ ┃ ┃
+// ┃Ctrl ┃Meta ┃Alt ┃ ␣ Space ⍽ ┃AltGr ⇮┃Menu ┃Ctrl ┃
+// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
+
+partial
+xkb_symbols "intl" {
+
+ key <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] };
+ key <AE01> { [ 1, exclam, exclamdown, dead_acute ] };
+ key <AE02> { [ 2, at, copyright, dead_diaeresis ] };
+ key <AE03> { [ 3, numbersign, U2022, dead_doubleacute ] }; // U+2022 is bullet (the name bullet doesn't work)
+ key <AE04> { [ 4, dollar, section, dead_cedilla ] };
+ key <AE05> { [ 5, percent, EuroSign, dead_caron ] };
+ key <AE06> { [ 6, asciicircum, cent, dead_circumflex ] };
+ key <AE07> { [ 7, ampersand, U2212, dead_breve ] }; // U+2212 is MINUS SIGN
+ key <AE08> { [ 8, asterisk, multiply, dead_abovedot ] };
+ key <AE09> { [ 9, parenleft, division, dead_belowdot ] };
+ key <AE10> { [ 0, parenright, degree, dead_abovering ] };
+ key <AE11> { [ minus, underscore, endash, dead_macron ] };
+ key <AE12> { [ equal, plus, emdash, dead_ogonek ] };
+
+ key <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E ] };
+ key <AD04> { [ r, R ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ y, Y ] };
+ key <AD07> { [ u, U ] };
+ key <AD08> { [ i, I ] };
+ key <AD09> { [ o, O ] };
+ key <AD10> { [ p, P ] };
+ key <AD11> { [bracketleft, braceleft, U2039, guillemotleft ] };
+ key <AD12> { [bracketright, braceright, U203A, guillemotright ] };
+
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ s, S ] };
+ key <AC03> { [ d, D ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ j, J ] };
+ key <AC08> { [ k, K ] };
+ key <AC09> { [ l, L ] };
+ key <AC10> { [ semicolon, colon, leftsinglequotemark, leftdoublequotemark ] };
+ key <AC11> { [apostrophe, quotedbl, rightsinglequotemark, rightdoublequotemark ] };
+
+ key <BKSL> { [ backslash, bar, NoSymbol, paragraph ] };
+ key <AB01> { [ z, Z ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ c, C ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ b, B ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ m, M ] };
+ key <AB08> { [ comma, less, singlelowquotemark, doublelowquotemark ] };
+ key <AB09> { [ period, greater, ellipsis, periodcentered ] };
+ key <AB10> { [ slash, question, U2044, questiondown ] }; // U+2044 is FRACTION SLASH
+
+};
--- /dev/null
+// these variants assign various XKB keycodes to ISO_Level3_Shift so that
+// the third shift level can be reached
+//
+
+// the default behavior is for the right Alt key (AltGr) to generate the
+// third engraved symbol
+default partial modifier_keys
+xkb_symbols "ralt_switch" {
+ key <RALT> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+// Right Alt key never chooses 3rd level.
+// This option attempts to undo the effect of a layout's
+// including ralt_switch. You may also want to select another
+// level3 option that maps the level3 shift to some other key.
+partial modifier_keys
+xkb_symbols "ralt_alt" {
+ key <RALT> {
+ type[Group1]="TWO_LEVEL",
+ type[Group2]="TWO_LEVEL",
+ type[Group3]="TWO_LEVEL",
+ type[Group4]="TWO_LEVEL",
+ symbols[Group1] = [ Alt_R, Meta_R ],
+ symbols[Group2] = [ Alt_R, Meta_R ],
+ symbols[Group3] = [ Alt_R, Meta_R ],
+ symbols[Group4] = [ Alt_R, Meta_R ]
+ };
+ modifier_map Mod1 { <RALT> };
+};
+
+partial modifier_keys
+xkb_symbols "ralt_switch_multikey" {
+ key <RALT> {
+ type[Group1]="TWO_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift, Multi_key ]
+ };
+};
+
+// special case or right Alt switch - for use with grp:alts_toggle
+//
+partial hidden modifier_keys
+xkb_symbols "ralt_switch_for_alts_toggle" {
+ virtual_modifiers LAlt, AlGr;
+ key <LALT> {
+ type[Group1]="PC_RALT_LEVEL2",
+ symbols[Group1] = [ Alt_L, ISO_Prev_Group, ISO_Prev_Group ],
+ virtualMods= LAlt
+ };
+ key <RALT> {
+ type[Group1]="PC_ALT_LEVEL2",
+ symbols[Group1] = [ ISO_Level3_Shift, ISO_Next_Group ],
+ virtualMods= AltGr
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+// using the level(alt_switch) map, either Alt key temporarily chooses
+// the third shift level. (Mostly be used to imitate Mac OS functionality.)
+partial modifier_keys
+xkb_symbols "alt_switch" {
+ include "level3(lalt_switch)"
+ include "level3(ralt_switch)"
+};
+
+partial modifier_keys
+xkb_symbols "lalt_switch" {
+ key <LALT> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { <LALT> };
+};
+
+// using the level(switch) map, the right Control key temporarily
+// chooses the third shift level (until it is released).
+partial modifier_keys
+xkb_symbols "switch" {
+ key <RCTL> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+// using the level(menu_switch) map, the Menu key temporarily
+// chooses the third shift level (until it is released).
+partial modifier_keys
+xkb_symbols "menu_switch" {
+ key <MENU> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+// using the level3(win_switch) map, the either Windows' logo key
+// temporarily chooses the third shift level.
+partial modifier_keys
+xkb_symbols "win_switch" {
+ include "level3(lwin_switch)"
+ include "level3(rwin_switch)"
+};
+
+// using the level3(lwin_switch) map, the left Windows' logo key
+// temporarily chooses the third shift level.
+partial modifier_keys
+xkb_symbols "lwin_switch" {
+ key <LWIN> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+// using the level(rwin_switch) map, the right Windows' logo key
+// temporarily chooses the third shift level. If you use this map,
+// you should define your keyboard as pc101 or pc102 instead of pc104
+// or pc105.
+partial modifier_keys
+xkb_symbols "rwin_switch" {
+ key <RWIN> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+// using the level3(enter_switch) map, the Enter key on the keypad
+// temporarily chooses the third shift level. This is especially
+// useful for Mac laptops which miss the right Alt key.
+partial modifier_keys
+xkb_symbols "enter_switch" {
+ key <KPEN> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "caps_switch" {
+ key <CAPS> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "bksl_switch" {
+ key <BKSL> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "lsgt_switch" {
+ key <LSGT> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "caps_switch_latch" {
+ key <CAPS> {
+ type[Group1]="THREE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "bksl_switch_latch" {
+ key <BKSL> {
+ type[Group1]="THREE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "lsgt_switch_latch" {
+ key <LSGT> {
+ type[Group1]="THREE_LEVEL",
+ symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
+ };
+ modifier_map Mod5 { ISO_Level3_Shift };
+};
--- /dev/null
+// these variants assign various XKB keycodes to ISO_Level5_Shift so that
+// the third shift level can be reached
+//
+
+// using the level(switch) map, the right Control key temporarily
+// chooses the fifth shift level (until it is released).
+partial modifier_keys
+xkb_symbols "rctrl_switch" {
+ key <RCTL> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level5_Shift ]
+ };
+ modifier_map Mod3 { ISO_Level5_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "lsgt_switch" {
+ key <LSGT> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level5_Shift ]
+ };
+ modifier_map Mod3 { ISO_Level5_Shift };
+};
+
+partial modifier_keys
+xkb_symbols "ralt_switch" {
+ key <RALT> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1] = [ ISO_Level5_Shift ]
+ };
+ modifier_map Mod3 { ISO_Level5_Shift };
+};
+
+
+// The following modifier keys are used to switch to the third shift and to set a
+// corresponding lock, implemented as NumLock.
+
+partial modifier_keys
+xkb_symbols "lock" {
+ // This adds the definitions needed to create a level5-lock behaviour, using
+ // the real modifier NumLock as a lock indicator.
+ // See also: types/level5 : EIGHT_LEVEL_LEVEL_FIVE_LOCK
+ // See also: compat/level5(level5_lock)
+ key.type[Group1] = "ONE_LEVEL";
+
+ replace key <MDSW> {
+ vmods = LevelFive,
+ symbols[Group1] = [ ISO_Level5_Shift ],
+ actions[Group1] = [ SetMods(modifiers=LevelFive) ]
+ };
+ modifier_map Mod3 { <MDSW> };
+
+ replace key <HYPR> {
+ vmods = NumLock,
+ symbols[Group1] = [ NoSymbol ],
+ actions[Group1] = [ SetMods(modifiers=NumLock) ]
+ };
+ modifier_map Mod2 { <HYPR> };
+};
+
+partial modifier_keys
+xkb_symbols "lsgt_switch_lock" {
+
+ include "level5(lock)"
+
+ key <LSGT> {
+ type[Group1] = "EIGHT_LEVEL",
+ symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
+ };
+};
+
+partial modifier_keys
+xkb_symbols "lwin_switch_lock" {
+
+ include "level5(lock)"
+
+ key <LWIN> {
+ type[Group1] = "EIGHT_LEVEL",
+ symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
+ };
+};
+
+partial modifier_keys
+xkb_symbols "ralt_switch_lock" {
+
+ include "level5(lock)"
+
+ key <RALT> {
+ type[Group1] = "EIGHT_LEVEL",
+ symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
+ };
+};
+
+partial modifier_keys
+xkb_symbols "rwin_switch_lock" {
+
+ include "level5(lock)"
+
+ key <RWIN> {
+ type[Group1] = "EIGHT_LEVEL",
+ symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
+ };
+};
+
+partial modifier_keys
+xkb_symbols "lsgt_switch_lock_cancel" {
+
+ include "level5(lock)"
+
+ key <LSGT> {
+ type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
+ symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
+ };
+};
+
+partial modifier_keys
+xkb_symbols "lwin_switch_lock_cancel" {
+
+ include "level5(lock)"
+
+ key <LWIN> {
+ type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
+ symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
+ };
+};
+
+partial modifier_keys
+xkb_symbols "ralt_switch_lock_cancel" {
+
+ include "level5(lock)"
+
+ key <RALT> {
+ type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
+ symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
+ };
+};
+
+partial modifier_keys
+xkb_symbols "rwin_switch_lock_cancel" {
+
+ include "level5(lock)"
+
+ key <RWIN> {
+ type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
+ symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
+ };
+};
--- /dev/null
+// Let Space key provide No-Break Space (NBSP), Narrow No-Break Space (NNBSP),
+// Zero-Width Non-Joiner (ZWNJ), and Zero-Width Joiner (ZWJ) for the desired
+// levels.
+
+
+////////////////////////////////////////
+// Only Space
+
+partial
+xkb_symbols "none" {
+ key <SPCE> {
+ type[Group1]="ONE_LEVEL",
+ symbols[Group1]= [ space ]
+ };
+};
+
+
+////////////////////////////////////////
+// No-Break Space
+
+partial
+xkb_symbols "level2" {
+ key <SPCE> {
+ type[Group1]="TWO_LEVEL",
+ symbols[Group1]= [ space, nobreakspace ]
+ };
+};
+
+
+// level3 & level3ns provide no-breaking spaces starting from level3
+// This is good for typographers but experience shows many users accidently
+// type no-breaking spaces on the CLI (resulting in errors)
+// Used by fr(latin9) and lt(std)
+partial
+xkb_symbols "level3" {
+ key <SPCE> {
+ type[Group1]="FOUR_LEVEL",
+ symbols[Group1]= [ space, space, nobreakspace ]
+ };
+};
+
+// level3s kills fourth level
+// Used by ca(multix)
+partial
+xkb_symbols "level3s" {
+ key <SPCE> {
+ type[Group1]="FOUR_LEVEL",
+ symbols[Group1]= [ space, space, nobreakspace, NoSymbol ]
+ };
+};
+
+// for this reason pushing no-breaking spaces to level4 is the safe default nowadays
+partial
+xkb_symbols "level4" {
+ key <SPCE> {
+ type[Group1]="FOUR_LEVEL",
+ symbols[Group1]= [ space, space, space, nobreakspace ]
+ };
+};
+
+
+////////////////////////////////////////
+// Narrow No-Break Space
+
+// level3n provides narrow no-breaking space in addition to the normal one
+partial
+xkb_symbols "level3n" {
+ key <SPCE> {
+ type[Group1]="FOUR_LEVEL",
+ symbols[Group1]= [ space, space, nobreakspace, 0x100202F ]
+ };
+};
+
+// level4n provides narrow no-breaking space in addition to the normal one
+partial
+xkb_symbols "level4n" {
+ key <SPCE> {
+ type[Group1]="EIGHT_LEVEL",
+ symbols[Group1]= [ space, space, space, nobreakspace, space, 0x100202F, NoSymbol, NoSymbol ]
+ };
+};
+
+// level4nl provides narrow no-breaking space in addition to the normal one
+// without forcing the use of level5 for mostly four-level layouts
+// Used by fr(oss), be(oss)…
+partial
+xkb_symbols "level4nl" {
+ key <SPCE> {
+ type[Group1]="LOCAL_EIGHT_LEVEL",
+ symbols[Group1]= [ space, space, space, nobreakspace, space, 0x100202F, NoSymbol, NoSymbol ]
+ };
+};
+
+
+////////////////////////////////////////
+// Zero-Width Non-Joiner & Zero-Width Joiner
+// Author: Behnam Esfahbod <behnam@esfahbod.info>
+
+// ZWNJ and ZWJ are widely used in Persian, Kurdinsh, Pashto, Uzbek and other
+// languages that use PersoArabic script.
+
+
+// ZWNJ on level 2
+partial
+xkb_symbols "zwnj2" {
+ key <SPCE> {
+ type[Group1]="TWO_LEVEL",
+ symbols[Group1]= [ space, 0x100200c ]
+ };
+};
+
+
+// ZWNJ on level 2
+// ZWJ on level 3
+partial
+xkb_symbols "zwnj2zwj3" {
+ key <SPCE> {
+ type[Group1]="FOUR_LEVEL",
+ symbols[Group1]= [ space, 0x100200c, 0x100200d ]
+ };
+};
+
+
+// ZWNJ on level 2
+// ZWJ on level 3
+// NBSP on level 4
+partial
+xkb_symbols "zwnj2zwj3nb4" {
+ key <SPCE> {
+ type[Group1]="FOUR_LEVEL",
+ symbols[Group1]= [ space, 0x100200c, 0x100200d, nobreakspace ]
+ };
+};
+
+// ZWNJ on level 2
+// NBSP on level 3
+// Used by ir(ku_ara), af(basic), af(ps), af(uz), af(olpc-fa), af(olpc-ps), af(olpc-uz)
+partial
+xkb_symbols "zwnj2nb3" {
+ key <SPCE> {
+ type[Group1]="FOUR_LEVEL",
+ symbols[Group1]= [ space, 0x100200c, nobreakspace ]
+ };
+};
+
+
+// ZWNJ on level 2
+// NBSP on level 3
+partial
+xkb_symbols "zwnj2nb3s" {
+ key <SPCE> {
+ type[Group1]="FOUR_LEVEL",
+ symbols[Group1]= [ space, 0x100200c, nobreakspace, NoSymbol ]
+ };
+};
+
+
+// ZWNJ on level 2
+// NBSP on level 3
+// ZWJ on level 4
+partial
+xkb_symbols "zwnj2nb3zwj4" {
+ key <SPCE> {
+ type[Group1]="FOUR_LEVEL",
+ symbols[Group1]= [ space, 0x100200c, nobreakspace, 0x100200d ]
+ };
+};
+
+
+// ZWNJ on level 2
+// NBSP on level 3
+// NNBSP on level 4
+// Used by ir(pes)
+partial
+xkb_symbols "zwnj2nb3nnb4" {
+ key <SPCE> {
+ type[Group1]="FOUR_LEVEL",
+ symbols[Group1]= [ space, 0x100200c, nobreakspace, 0x100202F ]
+ };
+};
+
+
+// ZWNJ on level 3
+// ZWJ on level 4
+// Used by in(deva), in(olpc)
+partial
+xkb_symbols "zwnj3zwj4" {
+ key <SPCE> {
+ type[Group1]="FOUR_LEVEL",
+ symbols[Group1]= [ space, space, 0x100200c, 0x100200d ]
+ };
+};
+
+
+// NBSP on level 2
+// ZWNJ on level 3
+// Used by lk(sin_phonetic)
+partial
+xkb_symbols "nb2zwnj3s" {
+ key <SPCE> {
+ type[Group1]="FOUR_LEVEL",
+ symbols[Group1]= [ space, nobreakspace, 0x100200c, NoSymbol ]
+ };
+};
--- /dev/null
+default partial alphanumeric_keys modifier_keys
+xkb_symbols "pc105" {
+
+ key <ESC> { [ Escape ] };
+
+ // the extra key on most European keyboards
+ key <LSGT> { [ less, greater, bar, brokenbar ] };
+
+ // these keys are common to all layouts
+ key <BKSL> { [ backslash, bar ] };
+ key <SPCE> { [ space ] };
+
+ include "srvr_ctrl(fkey2vt)"
+ include "pc(editing)"
+ include "keypad(x11)"
+
+ key <BKSP> { [ BackSpace, BackSpace ] };
+
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <RTRN> { [ Return ] };
+
+ key <CAPS> { [ Caps_Lock ] };
+
+ key <NMLK> { [ Num_Lock ] };
+
+ key <LFSH> { [ Shift_L ] };
+ key <LCTL> { [ Control_L ] };
+
+ key <LWIN> { [ Super_L ] };
+
+ key <RTSH> { [ Shift_R ] };
+ key <RCTL> { [ Control_R ] };
+
+ key <RWIN> { [ Super_R ] };
+
+ key <MENU> { [ Menu ] };
+
+ // 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 };
+ modifier_map Mod4 { Super_L, Super_R };
+
+ // 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 ] };
+ include "altwin(meta_alt)"
+
+ 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> };
+
+ key <OUTP> { [ XF86Display ] };
+ key <KITG> { [ XF86KbdLightOnOff ] };
+ key <KIDN> { [ XF86KbdBrightnessDown ] };
+ key <KIUP> { [ XF86KbdBrightnessUp ] };
+};
+
+partial hidden alphanumeric_keys
+xkb_symbols "editing" {
+ key <PRSC> {
+ type= "PC_ALT_LEVEL2",
+ symbols[Group1]= [ Print, Sys_Req ]
+ };
+ key <SCLK> { [ Scroll_Lock ] };
+ key <PAUS> {
+ type= "PC_CONTROL_LEVEL2",
+ 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 ] };
+};
--- /dev/null
+// based on
+// russian standard keyboard
+// AEN <aen@logic.ru>
+// 2001/12/23 by Leon Kanter <leon@blackcatlinux.com>
+// 2005/12/09 Valery Inozemtsev <shrek@altlinux.ru>
+
+// Windows layout
+partial default alphanumeric_keys
+xkb_symbols "winkeys" {
+ include "ru(common)"
+
+ name[Group1]= "Russian";
+
+ key <AE03> { [ 3, numerosign ] };
+ key <AE04> { [ 4, semicolon ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, colon ] };
+ key <AE07> { [ 7, question ] };
+ key <AE08> { [ 8, asterisk ] };
+
+ key <AB10> { [ period, comma ] };
+ key <BKSL> { [ backslash, slash ] };
+};
+
+partial hidden alphanumeric_keys
+xkb_symbols "common" {
+
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, quotedbl ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, asterisk ] };
+ key <AE05> { [ 5, colon ] };
+ key <AE06> { [ 6, comma ] };
+ key <AE07> { [ 7, period ] };
+ key <AE08> { [ 8, semicolon ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+ key <AE12> { [ equal, plus ] };
+ key <BKSL> { [ backslash, bar ] };
+ key <AB10> { [ slash, question ] };
+ key <LSGT> { [ slash, bar ] };
+
+ key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] };
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U ] };
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN ] };
+ key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <AC04> { [ Cyrillic_a, Cyrillic_A ] };
+ key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <AC06> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O ] };
+ key <AC08> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <AC09> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <AC11> { [ Cyrillic_e, Cyrillic_E ] };
+ key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] };
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <AB04> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
+ key <AB06> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
+
+ key.type[group1]="TWO_LEVEL";
+
+ include "kpdl(comma)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "legacy" {
+ include "ru(common)"
+
+ name[Group1]= "Russian (legacy)";
+};
+
+partial alphanumeric_keys
+xkb_symbols "olpc" {
+
+ include "ru(common)"
+
+ key <TLDE> { [ 0x01000451, 0x01000401, grave ] }; // Ñ‘, Ð
+ key <AE03> { [ 3, numbersign, 0x01002116 ] }; // â„–
+ key <AE04> { [ 4, dollar, semicolon ] };
+ key <AE06> { [ 6, asciicircum, colon ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE09> { [ 9, parenleft, acute ] };
+ key <AC12> { [ backslash, bar, slash ] };
+
+ include "group(olpc)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "typewriter" {
+ include "ru(common)"
+ name[Group1]= "Russian (typewriter)";
+ key <TLDE> { [ bar, plus ] };
+ key <AE01> { [ numerosign, 1 ] };
+ key <AE02> { [ minus, 2 ] };
+ key <AE03> { [ slash, 3 ] };
+ key <AE04> { [ quotedbl, 4 ] };
+ key <AE05> { [ colon, 5 ] };
+ key <AE06> { [ comma, 6 ] };
+ key <AE07> { [ period, 7 ] };
+ key <AE08> { [ underscore, 8 ] };
+ key <AE09> { [ question, 9 ] };
+ key <AE10> { [ percent, 0 ] };
+ key <AE11> { [ exclam, equal ] };
+ key <AE12> { [ semicolon, backslash ] };
+
+ key <BKSL> { [ parenright, parenleft ] };
+
+ key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN ] };
+ key <AB10> { [ Cyrillic_io, Cyrillic_IO ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "typewriter-legacy" {
+ include "ru(common)"
+ name[Group1]= "Russian (typewriter, legacy)";
+ key <TLDE> { [ apostrophe, quotedbl ] };
+ key <AE01> { [ exclam, 1 ] };
+ key <AE02> { [ numerosign, 2 ] };
+ key <AE03> { [ slash, 3 ] };
+ key <AE04> { [ semicolon, 4 ] };
+ key <AE05> { [ colon, 5 ] };
+ key <AE06> { [ comma, 6 ] };
+ key <AE07> { [ period, 7 ] };
+ key <AE08> { [ underscore, 8 ] };
+ key <AE09> { [ question, 9 ] };
+ key <AE10> { [ percent, 0 ] };
+ key <BKSL> { [ parenleft, parenright ] };
+
+ key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN ] };
+ key <AB10> { [ Cyrillic_io, Cyrillic_IO ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "phonetic" {
+
+ name[Group1]= "Russian (phonetic)";
+
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, Cyrillic_io ] };
+ key <AE04> { [ 4, Cyrillic_IO ] };
+ key <AE05> { [ 5, Cyrillic_hardsign ] };
+ key <AE06> { [ 6, Cyrillic_HARDSIGN ] };
+ key <AE07> { [ 7, ampersand ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AE09> { [ 9, parenleft ] };
+ key <AE10> { [ 0, parenright ] };
+ key <AE11> { [ minus, underscore ] };
+
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ slash, question ] };
+ key <AB08> { [ comma, less ] };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ apostrophe, quotedbl ] };
+ key <LSGT> { [ bar, brokenbar ] };
+
+ key <TLDE> { [ Cyrillic_yu, Cyrillic_YU ] };
+ key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] };
+ key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
+ key <LatW> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <LatX> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
+ key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <LatV> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <LatH> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <LatY> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
+ key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <LatI> { [ Cyrillic_i, Cyrillic_I ] };
+ key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
+ key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
+
+ key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] };
+ key <AE12> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <BKSL> { [ Cyrillic_e, Cyrillic_E ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "phonetic_winkeys" {
+
+ include "ru(phonetic)"
+ name[Group1]= "Russian (phonetic WinKeys)";
+
+ key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <LatH> { [ Cyrillic_che, Cyrillic_CHE ] };
+ key <AE12> { [ Cyrillic_softsign, Cyrillic_softsign ] };
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "tt" {
+ include "ru(winkeys)"
+ name[Group1]= "Tatar";
+
+ key.type[group1]="FOUR_LEVEL";
+
+ key <TLDE> { [ 0x010004bb, 0x010004ba,
+ Cyrillic_io, Cyrillic_IO ] };
+ key <AD02> { [ 0x010004e9, 0x010004e8,
+ Cyrillic_tse, Cyrillic_TSE ] };
+ key <AD09> { [ 0x010004d9, 0x010004d8,
+ Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <AD12> { [ 0x010004af, 0x010004ae,
+ Cyrillic_hardsign,Cyrillic_HARDSIGN ] };
+ key <AC10> { [ 0x010004a3, 0x010004a2,
+ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <AB07> { [ 0x01000497, 0x01000496,
+ Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "os_legacy" {
+ include "ru(common)"
+
+ name[Group1]= "Ossetian (legacy)";
+
+ key <TLDE> { [ Cyrillic_e, Cyrillic_E ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] };
+ key <AC11> { [ 0x010004D5, 0x010004D4 ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "os_winkeys" {
+ include "ru(winkeys)"
+
+ name[Group1]= "Ossetian (WinKeys)";
+
+ key <TLDE> { [ Cyrillic_e, Cyrillic_E ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] };
+ key <AC11> { [ 0x010004D5, 0x010004D4 ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "cv" {
+ include "ru(winkeys)"
+
+ name[Group1]= "Chuvash";
+
+ key.type[group1]="FOUR_LEVEL";
+
+ key <AD03> { [ Cyrillic_u, Cyrillic_U,
+ 0x010004f3, 0x010004f2 ] };
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE,
+ 0x01000115, 0x01000114 ] };
+ key <AC04> { [ Cyrillic_a, Cyrillic_A,
+ abreve, Abreve ] };
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES,
+ ccedilla, Ccedilla ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "udm" {
+ include "ru(winkeys)"
+
+ name[Group1]= "Udmurt";
+
+ key.type[group1]="FOUR_LEVEL";
+
+ key <AE01> { [ question, exclam, 1, 1 ] };
+ key <AE02> { [ parenleft, quotedbl, 2, 2 ] };
+ key <AE03> { [ parenright, numerosign, 3, 3 ] };
+ key <AE04> { [ colon, semicolon, 4, 4 ] };
+ key <AE05> { [ asterisk, percent, 5, 5 ] };
+ key <AE06> { [ 0x010004dd, 0x010004dc, 6, 6 ] };
+ key <AE07> { [ 0x010004e7, 0x010004e6, 7, 7 ] };
+ key <AE08> { [ 0x010004f5, 0x010004f4, 8, 8 ] };
+ key <AE09> { [ 0x010004e5, 0x010004e4, 9, 9 ] };
+ key <AE10> { [ 0x010004df, 0x010004de, 0, 0 ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "cv_latin" {
+ include "us(alt-intl)"
+
+ name[Group1]= "Chuvash (Latin)";
+
+ key.type[group1]="FOUR_LEVEL";
+
+ key <AD01> { [ q, Q, 0x01000161, 0x01000160 ] };
+ key <AD02> { [ w, W, udiaeresis, Udiaeresis ] };
+ key <AD03> { [ e, E, 0x01000115, 0x01000114 ] };
+ key <AD07> { [ u, U, udiaeresis, Udiaeresis ] };
+ key <AD08> { [ i, I, 0x0100012d, 0x0100012c ] };
+ key <AD09> { [ o, O, odiaeresis, Odiaeresis ] };
+ key <AC01> { [ a, A, abreve, Abreve ] };
+ key <AC02> { [ s, S, scedilla, Scedilla ] };
+ key <AC05> { [ g, G, gbreve, Gbreve ] };
+ key <AC07> { [ j, J, 0x01000131, 0x01000130 ] };
+ key <AB03> { [ c, C, ccedilla, Ccedilla ] };
+
+ include "level3(ralt_switch)"
+
+};
+
+// Komi language layout
+// based on
+// russian standard keyboard
+// Vlad Shakhov <lumpen.intellectual@gmail.com>
+// Last Changes 2007/10/23 by Vlad Shakhov <lumpen.intellectual@gmail.com>
+
+partial alphanumeric_keys
+xkb_symbols "kom" {
+
+ include "ru(winkeys)"
+
+ name[Group1]= "Komi";
+
+ key.type[group1]="FOUR_LEVEL_ALPHABETIC";
+
+// cyrilllic o with diaeresis
+ key <AC07> { [ Cyrillic_o, Cyrillic_O,
+ U04E7, U04E6 ] };
+
+// hard I as additional key for soft Cyrillic_I
+ key <AB05> { [ Cyrillic_i, Cyrillic_I,
+ Ukrainian_i, Ukrainian_I ] };
+
+ include "level3(ralt_switch)"
+};
+
+// Yakut language layout
+// 2008/04/23 Yakov Aleksandrov <bertjickty@yandex.ru>
+// 2008/04/23 Anatoliy Zhozhikov <jav@sitc.ru>
+// 2008/04/23 Aleksandr Varlamov
+partial alphanumeric_keys
+xkb_symbols "sah" {
+
+ include "ru(winkeys)"
+
+ name[Group1]= "Yakut";
+
+ key.type[group1]="FOUR_LEVEL_ALPHABETIC";
+
+ key <TLDE> { [ Cyrillic_io, Cyrillic_IO,
+ U04EB, U04EA ] };
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI,
+ U048B, U048A ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U,
+ Cyrillic_u_straight, Cyrillic_U_straight ] };
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA,
+ U04C4, U04C3 ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN,
+ U04A5, U04A4 ] };
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE,
+ U0495, U0494 ] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE,
+ U04E1, U04E0 ] };
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA,
+ Cyrillic_shha, Cyrillic_SHHA ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O,
+ Cyrillic_o_bar, Cyrillic_O_bar ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE,
+ U0461, U0460 ] };
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE,
+ Cyrillic_u_macron, Cyrillic_U_macron ] };
+ key <AB04> { [ Cyrillic_em, Cyrillic_EM,
+ U04C8, U04C7 ] };
+ key <AB05> { [ Cyrillic_i, Cyrillic_I,
+ Cyrillic_i_macron, Cyrillic_I_macron ] };
+
+ include "level3(ralt_switch)"
+};
+
+
+//Kalmyk language layout
+//based on the Kalmyk language layout: http://soft.oyrat.org/
+//Nikolay Korneev <halmg@oyrat.org>
+//Toli Miron <mirontoli@gmail.com>
+
+partial alphanumeric_keys
+xkb_symbols "xal" {
+ include "ru(winkeys)"
+
+ name[Group1]= "Kalmyk";
+
+ key.type[group1]="FOUR_LEVEL";
+
+ key <AE01> { [ question, exclam, 1 ] };
+ key <AE02> { [ numerosign, quotedbl, 2 ] };
+ key <AE03> { [ Cyrillic_u_straight, Cyrillic_U_straight, 3 ] };
+ key <AE04> { [ Cyrillic_schwa, Cyrillic_SCHWA, 4 ] };
+ key <AE05> { [ asterisk, percent, 5 ] };
+ key <AE06> { [ Cyrillic_en_descender, Cyrillic_EN_descender, 6 ] };
+ key <AE07> { [ Cyrillic_o_bar, Cyrillic_O_bar, 7 ] };
+ key <AE08> { [ Cyrillic_shha, Cyrillic_SHHA, 8 ] };
+ key <AE09> { [ Cyrillic_zhe_descender, Cyrillic_ZHE_descender, 9 ] };
+ key <AE10> { [ semicolon, colon, 0 ] };
+
+ key <TLDE> { [ parenleft, parenright, Cyrillic_io, Cyrillic_IO ] };
+
+ key <AD02> { [ Cyrillic_tse, Cyrillic_TSE, dollar ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U, EuroSign ] };
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered ] };
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE, trademark ] };
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA, bracketleft ] };
+ key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, bracketright ] };
+ key <AC11> { [ Cyrillic_e, Cyrillic_E, apostrophe ] };
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES, copyright ] };
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE, less ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU, greater ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "dos" {
+
+ include "ru(common)"
+
+ name[Group1]= "Russian (DOS)";
+
+ key <TLDE> { [ parenright, parenleft ] };
+ key <AE04> { [ 4, currency ] };
+ key <AE09> { [ 9, question ] };
+ key <AE10> { [ 0, percent ] };
+
+ key <AB10> { [ Cyrillic_io, Cyrillic_IO ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "bak" {
+ include "ru(winkeys)"
+
+ name[Group1]= "Bashkirian";
+ key.type[group1]="FOUR_LEVEL";
+
+ key <TLDE> { [ 0x010004d9, 0x010004d8, Cyrillic_io, Cyrillic_IO ] };
+ key <AE01> { [ exclam, quotedbl, 1, 1 ] };
+ key <AE02> { [ 0x010004e9, 0x010004e8, 2, 2 ] };
+ key <AE03> { [ 0x010004a1, 0x010004a0, 3, 3 ] };
+ key <AE04> { [ 0x01000493, 0x01000492, 4, 4 ] };
+ key <AE05> { [ 0x010004ab, 0x010004aa, 5, 5 ] };
+ key <AE06> { [ colon, semicolon, 6, 6 ] };
+ key <AE07> { [ 0x01000499, 0x01000498, 7, 7 ] };
+ key <AE08> { [ 0x010004bb, 0x010004ba, 8, 8 ] };
+ key <AE09> { [ question, parenleft, 9, 9 ] };
+ key <AE10> { [ numerosign, parenright, 0, 0 ] };
+ key <AE11> { [ minus, percent, minus, underscore ]};
+ key <AE12> { [ 0x010004af, 0x010004ae, equal, plus ]};
+ key <BKSL> { [ 0x010004a3, 0x010004a2, backslash, slash ]};
+
+ include "level3(ralt_switch)"
+};
+
+// Serbian charecters added as third level symbols to Russian keyboard layout.
+
+partial alphanumeric_keys
+xkb_symbols "srp" {
+ include "ru(common)"
+ include "level3(ralt_switch)"
+
+ name[Group1]= "Serbian (Russia)";
+
+ key <AE03> { [ 3, numerosign ] };
+ key <AE04> { [ 4, semicolon ] };
+ key <AE05> { [ 5, percent ] };
+ key <AE06> { [ 6, colon ] };
+ key <AE07> { [ 7, question ] };
+ key <AE08> { [ 8, asterisk ] };
+ key <AB10> { [ period, comma ] };
+ key <BKSL> { [ backslash, slash ] };
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, U458, U408 ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN, U45A, U40A ] };
+ key <AC08> { [ Cyrillic_el, Cyrillic_EL, U459, U409 ] };
+ key <AC09> { [ Cyrillic_de, Cyrillic_DE, U45F, U40F ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, U452, U402 ] };
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE, U45B, U40B ] };
+};
+
+// Mari language layout
+// based on Russian standard keyboard
+// http://www.marlamuter.ru/
+partial alphanumeric_keys
+xkb_symbols "chm" {
+ include "ru(common)"
+
+ name[Group1]= "Mari";
+
+ key.type[group1]="FOUR_LEVEL_ALPHABETIC";
+ key <AC04> { [ Cyrillic_a, Cyrillic_A, U04D3, U04D2 ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U, U04F1, U04F0 ] };
+ key <AC02> { [ Cyrillic_ui, Cyrillic_UI, U04F9, U04F8 ] };
+ key <AD06> { [ Cyrillic_n, Cyrillic_N, U04A5, U04A4 ] };
+ key <AC11> { [ Cyrillic_e, Cyrillic_E, U04E9, U04E8 ] };
+ key <AC10> { [ Cyrillic_zh, Cyrillic_ZH, U04EB, U04EA ] };
+ key <AC01> { [ Cyrillic_f, Cyrillic_F, UF537, UF536 ] };
+
+ include "level3(ralt_switch)"
+};
+
+// EXTRAS:
+
+// Church Slavonic language layout
+// based on
+// russian standard keyboard
+// Aleksandr Andreev and Yuri Shardt
+// Last Changes 2010/08/01. Contact <aleksandr.andreev@gmail.com>
+
+partial alphanumeric_keys
+xkb_symbols "chu"
+{
+ name[Group1]= "Church Slavonic";
+ key <TLDE> { [ U0457, U0407, U0482, U20DD ] }; // ї Ї ҂ e.g: а⃝ where the last is a combining ten thousands sign
+ key <AE01> { [ U0461, U0460, U047D, U047C] }; // ѡ Ѡ ѽ Ѽ
+ key <AE02> { [ U0454, U0404, U0465, U0464] }; // є Є ѥ Ѥ
+ key <AE03> { [ U046F, U046E, U0469, U0468] }; // ѯ Ѯ ѩ Ѩ
+ key <AE04> { [ U0471, U0470, U046D, U046C] }; // ѱ Ѱ ѭ Ѭ
+ key <AE05> { [ U0473, U0472, UA657, UA656] }; // ѳ Ѳ iotified A
+ key <AE06> { [ U0475, U0474, U0477, U0476] }; // ѵ Ѵ ѷ Ѷ
+ key <AE07> { [ U047B, U047A, UA64D, UA64C] }; // ѻ Ѻ ꙍ Ꙍ
+ key <AE08> { [ U047F, U047E, U046B, U046A] }; // ѿ Ѿ ѫ Ѫ
+ key <AE09> { [ U0455, U0405, parenleft, U002A ] }; // ѕ Ѕ ( *
+ key <AE10> { [ Cyrillic_u, Cyrillic_U, parenright, U0488 ] }; // у У ) NB: for diagraph Ouk, use Cyrillic_o + Cyrillic_u
+ key <AE11> { [ U0483, U0486, U0487, U005F] }; // а҃ а҆ а҇, _ (titlo, psili, pokrytie, underscore)
+ key <AE12> { [ U0301, U0300, U0484, UA67E] }; // а̀ а́ а҄ ꙾ (oxia, varia, kamora, kavyka)
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, U0456 ] };
+ key <AD02> { [ Cyrillic_tse, Cyrillic_TSE, U2DF0 ] };
+ key <AD03> { [ UA64B, UA64A, U2DF9 ] }; // Cyrillic monograph Uk (not U)!
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA, U2DE6 ] };
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE, U2DF7 ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN, U2DE9 ] };
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, U2DE2 ] };
+ key <AD08> { [ Cyrillic_sha, Cyrillic_SHA, U2DF2 ] };
+ key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA, U2DF3 ] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, U2DE5 ] };
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA, U2DEF ] };
+ key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN, UA67D ] }; // Payerok
+ key <BKSL> { [backslash, slash, colon, question] }; // \ / : ? (note, for Slavonic question use semicolon
+ key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <AC03> { [ Cyrillic_ve, Cyrillic_VE, U2DE1 ] };
+ key <AC04> { [ Cyrillic_a, Cyrillic_A, U2DF6 ] };
+ key <AC05> { [ Cyrillic_pe, Cyrillic_PE, U2DEB ] };
+ key <AC06> { [ Cyrillic_er, Cyrillic_ER, U2DEC ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O, U2DEA ] };
+ key <AC08> { [ Cyrillic_el, Cyrillic_EL, U2DE7 ] };
+ key <AC09> { [ Cyrillic_de, Cyrillic_DE, U2DE3 ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, U2DE4 ] };
+ key <AC11> { [ U0463, U0462, U2DFA ] }; // Yat
+ key <AB01> { [ U0467, U0466, U2DFD ] }; // Small Yus
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE, U2DF1 ] };
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES, U2DED ] };
+ key <AB04> { [ Cyrillic_em, Cyrillic_EM, U2DE8 ] };
+ key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
+ key <AB06> { [ Cyrillic_te, Cyrillic_TE, U2DEE ] };
+ key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE, U2DE0 ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU, U2DFB ] };
+ key <AB10> { [ period, comma, semicolon, exclam ] };
+};
+
+
+// RUU (Russian-Ukrainian United keyboard layout).
+// Modified Russian standart keyboard with third level contains Ukrainian
+// and Belorusian alphabetic letters and commonly used Unicode symbols.
+// Description http://wiki.opennet.ru/RUU [russian]
+// Vasyĺ V. Vercynśkyj <fuckel@ukr.net>
+// Last Changes 2011/05/11
+//
+// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
+// │ ' ~ │ ! ≈ │ " ∞ │ № ₴ │ ; € │ % ‰ │ : ≤ │ ? ≥ │ * × │ ( { │ ) } │ _ – │ + ± ┃ ⌫ ┃
+// │ ’ ́ │ 1 ÷ │ 2 ¤ │ 3 § │ 4 $ │ 5 ° │ 6 < │ 7 > │ 8 • │ 9 [ │ 0 ] │ - — │ = ≠ ┃Backspace┃
+// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
+// ┃ ┃ Й │ Ц │ У Ў │ К │ Е Ё │ Н │ Г Ґ │ Ш │ Щ │ З │ Х │ Ъ Ї ┃ Enter ┃
+// ┃ Tab ↹ ┃ й │ ц │ у ў │ к ® │ е ё │ н │ г ґ │ ш │ щ │ з │ х │ ъ ї ┃ ⏎ ┃
+// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃
+// ┃ Caps ┃ Ф │ Ы І │ В │ А │ П │ Р │ О │ Л │ Д │ Ж │ Э Є │ | ¦ ┃ ┃
+// ┃ Lock ⇬ ┃ ф │ ы і │ в │ а │ п │ р │ о │ л │ д │ ж │ э є │ / \ ┃ ┃
+// ┣━━━━━━━━┻━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┲━━━┷━━━━━┻━━━━━━┫
+// ┃ ┃ Я │ Ч │ С │ М │ И │ Т │ Ь │ Б „ │ Ю “ │ , … ┃ ┃
+// ┃ Shift ⇧ ┃ я │ ч │ с © │ м │ и │ т ™ │ ь µ │ б « │ ю » │ . / ┃ Shift ⇧ ┃
+// ┣━━━━━━━┳━━┻━━━━┳┷━━━━━┷┱────┴─────┴─────┴─────┴─────┴─────┴┲━━━━┷━━┳━━┻━━━━┳━━━━━━━┳━━━┛
+// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
+// ┃ Ctrl ┃ Meta ┃ Alt ┃ Space ┃AltGr ⇮┃ Menu ┃ Ctrl ┃
+// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
+
+
+
+partial alphanumeric_keys
+xkb_symbols "ruu" {
+ include "ru(common)"
+
+ name[Group1]= "Russian (with Ukrainian-Belorussian layout)";
+
+ key <TLDE> { [ U2019, apostrophe, U0301, asciitilde ] }; // Apostrophe and Stress symbol
+ key <AE01> { [ 1, exclam, U00F7, U2248 ] }; // Division Sign and Almost Equal To
+ key <AE02> { [ 2, quotedbl, currency, infinity ] };
+ key <AE03> { [ 3, numerosign, U00A7, U20B4 ] }; // Paragraph and Hryvnia sign
+ key <AE04> { [ 4, semicolon, dollar, EuroSign ] };
+ key <AE05> { [ 5, percent, degree, U2030 ] }; // Per Mille Sign
+ key <AE06> { [ 6, colon, less, U2264 ] }; // Less-Than Or Equal To
+ key <AE07> { [ 7, question, greater, U2265 ] }; // Greater-Than Or Equal To
+ key <AE08> { [ 8, asterisk, enfilledcircbullet, U00D7 ] }; // Multiplication Sign
+ key <AE09> { [ 9, parenleft, bracketleft, braceleft ] };
+ key <AE10> { [ 0, parenright, bracketright, braceright ] };
+ key <AE11> { [ minus, underscore, emdash, endash ] };
+ key <AE12> { [ equal, plus, notequal, plusminus ] };
+ key <AD03> { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ] };
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered ] }; // Registered tm
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] };
+ key <AD07> { [Cyrillic_ge, Cyrillic_GE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, U00B6 ] }; // Pilcrow Sign
+ key <AD12> { [Cyrillic_hardsign, Cyrillic_HARDSIGN, Ukrainian_yi, Ukrainian_YI ] };
+ key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU, Ukrainian_i, Ukrainian_I ] };
+ key <AC11> { [ Cyrillic_e, Cyrillic_E, Ukrainian_ie,Ukrainian_IE ] };
+ key <BKSL> { [ slash, bar, backslash, U00A6 ] }; // Broken Bar
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES, copyright ] };
+ key <AB06> { [ Cyrillic_te, Cyrillic_TE, trademark ] };
+ key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, U00B5 ] }; // Micro Sign
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU, guillemotright, leftdoublequotemark ] };
+ key <AB10> { [ period, comma, slash, ellipsis ] };
+
+ include "level3(ralt_switch)"
+};
--- /dev/null
+partial modifier_keys
+xkb_symbols "breaks_caps" {
+ key <LFSH> {
+ type = "ALPHABETIC",
+ actions [Group1] = [
+ SetMods(modifiers=Shift),
+ SetMods(modifiers=Shift+Lock,clearLocks)
+ ]
+ };
+ key <RTSH> {
+ type = "ALPHABETIC",
+ actions [Group1] = [
+ SetMods(modifiers=Shift),
+ SetMods(modifiers=Shift+Lock,clearLocks)
+ ]
+ };
+};
+
+// When pressed together with another Shift key, set/release Lock.
+partial modifier_keys
+xkb_symbols "lshift_both_capslock" {
+ key <LFSH> {
+ type[Group1]="TWO_LEVEL",
+ symbols[Group1] = [ Shift_L, Caps_Lock ]
+ };
+};
+// When pressed together with another Shift key, set or unset Lock.
+partial modifier_keys
+xkb_symbols "rshift_both_capslock" {
+ key <RTSH> {
+ type[Group1]="TWO_LEVEL",
+ symbols[Group1] = [ Shift_R, Caps_Lock ]
+ };
+};
+partial modifier_keys
+xkb_symbols "both_capslock" {
+ include "shift(lshift_both_capslock)"
+ include "shift(rshift_both_capslock)"
+};
+
+// Release Lock when pressed alone and set Lock when pressed with another Shift key.
+partial modifier_keys
+xkb_symbols "lshift_both_capslock_cancel" {
+ key <LFSH> {
+ type[Group1]="ALPHABETIC",
+ symbols[Group1] = [ Shift_L, Caps_Lock ]
+ };
+};
+// Release Lock when pressed alone and set Lock when pressed with another Shift key.
+partial modifier_keys
+xkb_symbols "rshift_both_capslock_cancel" {
+ key <RTSH> {
+ type[Group1]="ALPHABETIC",
+ symbols[Group1] = [ Shift_R, Caps_Lock ]
+ };
+};
+partial modifier_keys
+xkb_symbols "both_capslock_cancel" {
+ include "shift(lshift_both_capslock_cancel)"
+ include "shift(rshift_both_capslock_cancel)"
+};
+
+
+// When pressed together with another Shift key, lock/unlock Shift.
+partial modifier_keys
+xkb_symbols "lshift_both_shiftlock" {
+ key <LFSH> {
+ type[Group1]="TWO_LEVEL",
+ symbols[Group1] = [ Shift_L, Shift_Lock ]
+ };
+};
+// When pressed together with another Shift key, lock/unlock Shift.
+partial modifier_keys
+xkb_symbols "rshift_both_shiftlock" {
+ key <RTSH> {
+ type[Group1]="TWO_LEVEL",
+ symbols[Group1] = [ Shift_R, Shift_Lock ]
+ };
+};
+partial modifier_keys
+xkb_symbols "both_shiftlock" {
+ include "shift(lshift_both_shiftlock)"
+ include "shift(rshift_both_shiftlock)"
+};
--- /dev/null
+// Actions which control the server's behavior
+
+partial keypad_keys function_keys
+xkb_symbols "xfree86" {
+ include "srvr_ctrl(stdkeypad)"
+ include "srvr_ctrl(fkey2vt)"
+};
+
+partial keypad_keys
+xkb_symbols "stdkeypad" {
+
+// Ungrab cancels server/keyboard/pointer grabs
+ key <KPDV> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86_Ungrab ]
+ };
+
+// ClsGrb kills whichever client has a grab in effect
+ key <KPMU> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86_ClearGrab ]
+ };
+
+// -VMode switches to the previous video mode
+ key <KPSU> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86_Prev_VMode ]
+ };
+
+// +VMode switches to the next video mode
+ key <KPAD> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86_Next_VMode]
+ };
+
+};
+
+partial function_keys
+xkb_symbols "fkey2vt" {
+
+ key <FK01> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F1, F1, F1, F1, XF86_Switch_VT_1 ]
+ };
+
+ key <FK02> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F2, F2, F2, F2, XF86_Switch_VT_2 ]
+ };
+
+ key <FK03> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F3, F3, F3, F3, XF86_Switch_VT_3 ]
+ };
+
+ key <FK04> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F4, F4, F4, F4, XF86_Switch_VT_4 ]
+ };
+
+ key <FK05> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F5, F5, F5, F5, XF86_Switch_VT_5 ]
+ };
+
+ key <FK06> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F6, F6, F6, F6, XF86_Switch_VT_6 ]
+ };
+
+ key <FK07> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F7, F7, F7, F7, XF86_Switch_VT_7 ]
+ };
+
+ key <FK08> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F8, F8, F8, F8, XF86_Switch_VT_8 ]
+ };
+
+ key <FK09> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F9, F9, F9, F9, XF86_Switch_VT_9 ]
+ };
+
+ key <FK10> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F10, F10, F10, F10, XF86_Switch_VT_10 ]
+ };
+
+ key <FK11> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F11, F11, F11, F11, XF86_Switch_VT_11 ]
+ };
+
+ key <FK12> {
+ type="CTRL+ALT",
+ symbols[Group1]= [ F12, F12, F12, F12, XF86_Switch_VT_12 ]
+ };
+
+};
+
+partial function_keys keypad_keys
+xkb_symbols "no_srvr_keys" {
+
+ key.type="TWO_LEVEL";
+
+ key <FK01> { [ F1, F1 ] };
+ key <FK02> { [ F2, F2 ] };
+ key <FK03> { [ F3, F3 ] };
+ key <FK04> { [ F4, F4 ] };
+ key <FK05> { [ F5, F5 ] };
+ key <FK06> { [ F6, F6 ] };
+ key <FK07> { [ F7, F7 ] };
+ key <FK08> { [ F8, F8 ] };
+ key <FK09> { [ F9, F9 ] };
+ key <FK10> { [ F10, F10 ] };
+ key <FK11> { [ F11, F11 ] };
+ key <FK12> { [ F12, F12 ] };
+
+ key <KPDV> { [ KP_Divide, KP_Divide ] };
+ key <KPMU> { [ KP_Multiply, KP_Multiply ] };
+ key <KPSU> { [ KP_Subtract, KP_Subtract ] };
+ key <KPAD> { [ KP_Add, KP_Add ] };
+};
--- /dev/null
+partial default modifier_keys
+xkb_symbols "ctrl_alt_bksp" {
+ key <BKSP> {
+ type="CTRL+ALT",
+ symbols[Group1] = [ NoSymbol, NoSymbol, NoSymbol, NoSymbol, Terminate_Server ]
+ };
+};
--- /dev/null
+default
+partial alphanumeric_keys modifier_keys
+xkb_symbols "basic" {
+
+ name[Group1]= "English (US)";
+
+ // 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 <AD01> { [ q, Q ] };
+ key <AD02> { [ w, W ] };
+ key <AD03> { [ e, E ] };
+ key <AD04> { [ r, R ] };
+ key <AD05> { [ t, T ] };
+ key <AD06> { [ y, Y ] };
+ key <AD07> { [ u, U ] };
+ key <AD08> { [ i, I ] };
+ key <AD09> { [ o, O ] };
+ key <AD10> { [ p, P ] };
+ key <AD11> { [ bracketleft, braceleft ] };
+ key <AD12> { [ bracketright, braceright ] };
+
+ key <AC01> { [ a, A ] };
+ key <AC02> { [ s, S ] };
+ key <AC03> { [ d, D ] };
+ key <AC04> { [ f, F ] };
+ key <AC05> { [ g, G ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ j, J ] };
+ key <AC08> { [ k, K ] };
+ key <AC09> { [ l, L ] };
+ key <AC10> { [ semicolon, colon ] };
+ key <AC11> { [ apostrophe, quotedbl ] };
+
+ key <AB01> { [ z, Z ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ c, C ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ b, B ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ m, M ] };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ period, greater ] };
+ key <AB10> { [ slash, question ] };
+
+ key <BKSL> { [ backslash, bar ] };
+ // End alphanumeric section
+};
+
+partial alphanumeric_keys
+xkb_symbols "euro" {
+
+ name[Group1]= "English (US, with euro on 5)";
+
+ include "us(basic)"
+
+ include "eurosign(5)"
+
+ include "level3(ralt_switch)"
+};
+
+
+partial alphanumeric_keys
+xkb_symbols "intl" {
+
+ name[Group1]= "English (US, international with dead keys)";
+
+ include "us(basic)"
+
+ // Alphanumeric section
+ key <TLDE> { [dead_grave, dead_tilde, grave, asciitilde ] };
+ key <AE01> { [ 1, exclam, exclamdown, onesuperior ] };
+ key <AE02> { [ 2, at, twosuperior, dead_doubleacute ] };
+ key <AE03> { [ 3, numbersign, threesuperior, dead_macron ] };
+ key <AE04> { [ 4, dollar, currency, sterling ] };
+ key <AE05> { [ 5, percent, EuroSign, dead_cedilla ] };
+ key <AE06> { [ 6, dead_circumflex, onequarter, asciicircum ] };
+ key <AE07> { [ 7, ampersand, onehalf, dead_horn ] };
+ key <AE08> { [ 8, asterisk, threequarters, dead_ogonek ] };
+ key <AE09> { [ 9, parenleft, leftsinglequotemark, dead_breve ] };
+ key <AE10> { [ 0, parenright, rightsinglequotemark, dead_abovering ] };
+ key <AE11> { [ minus, underscore, yen, dead_belowdot ] };
+ key <AE12> { [ equal, plus, multiply, division ] };
+
+ key <AD01> { [ q, Q, adiaeresis, Adiaeresis ] };
+ key <AD02> { [ w, W, aring, Aring ] };
+ key <AD03> { [ e, E, eacute, Eacute ] };
+ key <AD04> { [ r, R, registered, registered ] };
+ key <AD05> { [ t, T, thorn, THORN ] };
+ key <AD06> { [ y, Y, udiaeresis, Udiaeresis ] };
+ key <AD07> { [ u, U, uacute, Uacute ] };
+ key <AD08> { [ i, I, iacute, Iacute ] };
+ key <AD09> { [ o, O, oacute, Oacute ] };
+ key <AD10> { [ p, P, odiaeresis, Odiaeresis ] };
+ key <AD11> { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] };
+ key <AD12> { [bracketright, braceright, guillemotright, rightdoublequotemark ] };
+
+ key <AC01> { [ a, A, aacute, Aacute ] };
+ key <AC02> { [ s, S, ssharp, section ] };
+ key <AC03> { [ d, D, eth, ETH ] };
+ key <AC04> { [ f, F, f, F ] };
+ key <AC05> { [ g, G, g, G ] };
+ key <AC06> { [ h, H, h, H ] };
+ key <AC07> { [ j, J, j, J ] };
+ key <AC08> { [ k, K, oe, OE ] };
+
+ key <AC09> { [ l, L, oslash, Ooblique ] };
+ key <AC10> { [ semicolon, colon, paragraph, degree ] };
+ key <AC11> { [dead_acute, dead_diaeresis, apostrophe, quotedbl ] };
+
+ key <AB01> { [ z, Z, ae, AE ] };
+ key <AB02> { [ x, X, x, X ] };
+ key <AB03> { [ c, C, copyright, cent ] };
+ key <AB04> { [ v, V, v, V ] };
+ key <AB05> { [ b, B, b, B ] };
+ key <AB06> { [ n, N, ntilde, Ntilde ] };
+ key <AB07> { [ m, M, mu, mu ] };
+ key <AB08> { [ comma, less, ccedilla, Ccedilla ] };
+ key <AB09> { [ period, greater, dead_abovedot, dead_caron ] };
+ key <AB10> { [ slash, question, questiondown, dead_hook ] };
+ key <BKSL> { [ backslash, bar, notsign, brokenbar ] };
+
+ include "level3(ralt_switch)"
+};
+
+// Based on symbols/us_intl keyboard map:
+// Dead-keys definition for a very simple US/ASCII layout.
+// by Conectiva (http://www.conectiva.com.br)
+// modified by Ricardo Y. Igarashi (iga@that.com.br)
+
+// Added the following deadkeys, to make it truly international:
+//
+// dead_macron: on AltGr-minus
+// dead_breve: on AltGr-parenleft
+// dead_abovedot: on AltGr-period
+// dead_abovering: on AltGr-0
+// dead_doubleacute: on AltGr-equal (as quotedbl is already used)
+// dead_caron: on AltGr-less (AltGr-shift-comma)
+// dead_cedilla: on AltGr-comma
+// dead_ogonek: on AltGr-semicolon
+// dead_belowdot: on AltGr-underscore (AltGr-shift-minus)
+// dead_hook: on AltGr-question
+// dead_horn: on AltGr-plus (AltGr-shift-equal)
+// dead_diaeresis: on AltGr-colon (Alt-shift-semicolon)
+//
+// those were already there:
+// dead_grave
+// dead_acute
+// dead_circumflex
+// dead_tilde
+// dead_diaeresis
+
+partial alphanumeric_keys
+xkb_symbols "alt-intl" {
+
+ name[Group1]= "English (US, alternative international)";
+
+ include "us"
+
+ key <TLDE> { [ dead_grave, dead_tilde, grave, asciitilde ] };
+ key <AE05> { [ 5, percent, EuroSign ] };
+ key <AE06> { [ 6, dead_circumflex, asciicircum, asciicircum ] };
+ key <AE09> { [ 9, parenleft, leftsinglequotemark, dead_breve ] };
+ key <AE10> { [ 0, parenright, rightsinglequotemark, dead_abovering ] };
+ key <AE11> { [ minus, underscore, dead_macron, dead_belowdot ] };
+ key <AE12> { [ equal, plus, dead_doubleacute, dead_horn ] };
+
+ key <AD03> { [ e, E, EuroSign, cent ] };
+
+ key <AC10> { [ semicolon, colon, dead_ogonek, dead_diaeresis ] };
+ key <AC11> { [ dead_acute, dead_diaeresis, apostrophe, quotedbl ] };
+
+ key <AB08> { [ comma, less, dead_cedilla, dead_caron ] };
+ key <AB09> { [ period, greater, dead_abovedot, dead_circumflex ] };
+ key <AB10> { [ slash, question, dead_hook, dead_hook ] };
+
+ include "level3(ralt_switch)"
+};
+
+// based on a keyboard map from an 'xkb/symbols/dk' file
+
+partial alphanumeric_keys
+xkb_symbols "dvorak" {
+
+ name[Group1]= "English (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 ] };
+
+ key <BKSL> { [ backslash, bar ] };
+};
+
+// Dvorak international with dead keys
+// Olivier Mehani (shtrom-xorg@ssji.net)
+// Reproduce the per-key mapping of us(intl) for the dvorak layout
+// aka "I just swapped my keys over"
+partial alphanumeric_keys
+xkb_symbols "dvorak-intl" {
+
+ name[Group1]= "English (Dvorak international with dead keys)";
+
+ include "us(dvorak)"
+
+ key <TLDE> { [dead_grave, dead_tilde, grave, asciitilde ] };
+
+ key <AE01> { [ 1, exclam, exclamdown, onesuperior ] };
+ key <AE02> { [ 2, at, twosuperior, dead_doubleacute ] };
+ key <AE03> { [ 3, numbersign, threesuperior, dead_macron ] };
+ key <AE04> { [ 4, dollar, currency, sterling ] };
+ key <AE05> { [ 5, percent, EuroSign, dead_cedilla ] };
+ key <AE06> { [ 6, dead_circumflex, onequarter, asciicircum ] };
+ key <AE07> { [ 7, ampersand, onehalf, dead_horn ] };
+ key <AE08> { [ 8, asterisk, threequarters, dead_ogonek ] };
+ key <AE09> { [ 9, parenleft, leftsinglequotemark, dead_breve ] };
+ key <AE10> { [ 0, parenright, rightsinglequotemark, dead_abovering ] };
+ key <AE11> { [ bracketleft, braceleft, guillemotleft, leftdoublequotemark ] };
+ key <AE12> { [bracketright, braceright, guillemotright, rightdoublequotemark ] };
+
+ key <AD01> { [dead_acute, dead_diaeresis, apostrophe, quotedbl ] };
+ 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> { [ semicolon, colon, 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)"
+};
+
+// Dvorak international without dead keys
+// Stephane Magnenat (stephane at magnenat dot net, http://stephane.magnenat.net)
+// Based on information from http://www.poupinou.org/dvorak/index.html
+//
+// ` 1 2 3 4 5 6 7 8 9 0 [ ] \
+// €
+//
+// ' , . p y f g c r l / =
+// ä ê ë ü ç
+//
+// a o e u i d h t n s -
+// à ô é û î ß
+//
+// ; q j k x b m w v z
+// â ö è ù ï
+
+partial alphanumeric_keys
+xkb_symbols "dvorak-alt-intl" {
+
+ name[Group1]= "English (Dvorak alternative international no dead keys)";
+
+ include "us(dvorak)"
+
+ key <AE04> { [ 4, dollar, EuroSign ] };
+
+ key <AD02> { [ comma, less, adiaeresis, dead_caron ] };
+ key <AD03> { [ period, greater, ecircumflex, periodcentered ] };
+ key <AD04> { [ p, P, ediaeresis, dead_cedilla ] };
+ key <AD05> { [ y, Y, udiaeresis ] };
+ key <AD08> { [ c, C, ccedilla, dead_abovedot ] };
+
+ key <AC01> { [ a, A, agrave ] };
+ key <AC02> { [ o, O, ocircumflex ] };
+ key <AC03> { [ e, E, eacute ] };
+ key <AC04> { [ u, U, ucircumflex ] };
+ key <AC05> { [ i, I, icircumflex ] };
+ key <AC10> { [ s, S, ssharp ] };
+
+ key <AB01> { [ semicolon, colon, acircumflex ] };
+ key <AB02> { [ q, Q, odiaeresis, dead_ogonek ] };
+ key <AB03> { [ j, J, egrave, dead_doubleacute ] };
+ key <AB04> { [ k, K, ugrave ] };
+ key <AB05> { [ x, X, idiaeresis ] };
+
+ include "level3(ralt_switch)"
+};
+
+// Left and right handed dvorak layouts
+// by sqweek <sqweek@gmail.com> 2006-01-30
+// Based on the corresponding layouts in the console-tools package.
+partial alphanumeric_keys
+xkb_symbols "dvorak-l" {
+
+ include "us(dvorak)"
+ name[Group1]= "English (left handed Dvorak)";
+
+ key <AE01> { [ bracketleft, braceleft ] };
+ key <AE02> { [ bracketright, braceright ] };
+ key <AE03> { [ slash, question ] };
+ key <AE04> { [ p, P ] };
+ key <AE05> { [ f, F ] };
+ key <AE06> { [ m, M ] };
+ key <AE07> { [ l, L ] };
+ key <AE08> { [ j, J ] };
+ key <AE09> { [ 4, dollar ] };
+ key <AE10> { [ 3, numbersign ] };
+ key <AE11> { [ 2, at ] };
+ key <AE12> { [ 1, exclam ] };
+
+ key <AD01> { [ semicolon, colon ] };
+ key <AD02> { [ q, Q ] };
+ key <AD03> { [ b, B ] };
+ key <AD04> { [ y, Y ] };
+ key <AD05> { [ u, U ] };
+ key <AD06> { [ r, R ] };
+ key <AD07> { [ s, S ] };
+ key <AD08> { [ o, O ] };
+ key <AD09> { [ period, greater ] };
+ key <AD10> { [ 6, asciicircum ] };
+ key <AD11> { [ 5, percent ] };
+ key <AD12> { [ equal, plus ] };
+
+ key <AC01> { [ minus, underscore ] };
+ key <AC02> { [ k, K ] };
+ key <AC03> { [ c, C ] };
+ key <AC04> { [ d, D ] };
+ key <AC05> { [ t, T ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ e, E ] };
+ key <AC08> { [ a, A ] };
+ key <AC09> { [ z, Z ] };
+ key <AC10> { [ 8, asterisk ] };
+ key <AC11> { [ 7, ampersand ] };
+
+ key <AB01> { [ apostrophe, quotedbl ] };
+ key <AB02> { [ x, X ] };
+ key <AB03> { [ g, G ] };
+ key <AB04> { [ v, V ] };
+ key <AB05> { [ w, W ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ i, I ] };
+ key <AB08> { [ comma, less ] };
+ key <AB09> { [ 0, parenright ] };
+ key <AB10> { [ 9, parenleft ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "dvorak-r" {
+
+ include "us(dvorak)"
+ name[Group1]= "English (right handed Dvorak)";
+
+ key <AE01> { [ 1, exclam ] };
+ key <AE02> { [ 2, at ] };
+ key <AE03> { [ 3, numbersign ] };
+ key <AE04> { [ 4, dollar ] };
+ key <AE05> { [ j, J ] };
+ key <AE06> { [ l, L ] };
+ key <AE07> { [ m, M ] };
+ key <AE08> { [ f, F ] };
+ key <AE09> { [ p, P ] };
+ key <AE10> { [ slash, question ] };
+ key <AE11> { [ bracketleft, braceleft ] };
+ key <AE12> { [ bracketright, braceright ] };
+
+ key <AD01> { [ 5, percent ] };
+ key <AD02> { [ 6, asciicircum ] };
+ key <AD03> { [ q, Q ] };
+ key <AD04> { [ period, greater ] };
+ key <AD05> { [ o, O ] };
+ key <AD06> { [ r, R ] };
+ key <AD07> { [ s, S ] };
+ key <AD08> { [ u, U ] };
+ key <AD09> { [ y, Y ] };
+ key <AD10> { [ b, B ] };
+ key <AD11> { [ semicolon, colon ] };
+ key <AD12> { [ equal, plus ] };
+
+ key <AC01> { [ 7, ampersand ] };
+ key <AC02> { [ 8, asterisk ] };
+ key <AC03> { [ z, Z ] };
+ key <AC04> { [ a, A ] };
+ key <AC05> { [ e, E ] };
+ key <AC06> { [ h, H ] };
+ key <AC07> { [ t, T ] };
+ key <AC08> { [ d, D ] };
+ key <AC09> { [ c, C ] };
+ key <AC10> { [ k, K ] };
+ key <AC11> { [ minus, underscore ] };
+
+ key <AB01> { [ 9, parenleft ] };
+ key <AB02> { [ 0, parenright ] };
+ key <AB03> { [ x, X ] };
+ key <AB04> { [ comma, less ] };
+ key <AB05> { [ i, I ] };
+ key <AB06> { [ n, N ] };
+ key <AB07> { [ w, W ] };
+ key <AB08> { [ v, V ] };
+ key <AB09> { [ g, G ] };
+ key <AB10> { [ apostrophe, quotedbl ] };
+};
+
+// Classic dvorak layout
+// by Piter Punk <piterpk@terra.com.br> - 2006-07-06
+// Based on dvorak layout and e-mail from Russel L. Harris rlharris@oplink.net
+// on xorg list.
+partial alphanumeric_keys
+xkb_symbols "dvorak-classic" {
+
+ name[Group1]= "English (classic Dvorak)";
+
+ // Alphanumeric section
+
+ key <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] };
+
+ key <AE01> { [ bracketleft, braceleft ] };
+ key <AE02> { [ 7, ampersand ] };
+ key <AE03> { [ 5, percent ] };
+ key <AE04> { [ 3, numbersign ] };
+ key <AE05> { [ 1, exclam ] };
+ key <AE06> { [ 9, parenleft, dead_grave] };
+ key <AE07> { [ 0, parenright ] };
+ key <AE08> { [ 2, at ] };
+ key <AE09> { [ 4, dollar ] };
+ key <AE10> { [ 6, asciicircum, dead_circumflex, dead_circumflex ] };
+ key <AE11> { [ 8, asterisk ] };
+ key <AE12> { [ bracketright, braceright, dead_tilde] };
+
+ key <AD01> { [ slash, question ] };
+ 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> { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] };
+ 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 ] };
+ key <BKSL> { [ backslash, bar ] };
+};
+
+// 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] = "English (programmer Dvorak)";
+
+ // Unmodified Shift AltGr Shift+AltGr
+ // symbols row, left side
+ key <TLDE> { [ dollar, asciitilde, dead_tilde ] };
+ key <AE01> { [ ampersand, percent ] };
+ key <AE02> { [ bracketleft, 7, currency ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+ key <AE03> { [ braceleft, 5, cent ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+ key <AE04> { [ braceright, 3, yen ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+ key <AE05> { [ parenleft, 1, EuroSign ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+ key <AE06> { [ equal, 9, sterling ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+
+ // symbols row, right side
+ key <AE07> { [ asterisk, 0 ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+ key <AE08> { [ parenright, 2, onehalf ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+ key <AE09> { [ plus, 4 ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+ key <AE10> { [ bracketright, 6 ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+ key <AE11> { [ exclam, 8, exclamdown ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
+ key <AE12> { [ numbersign, grave, dead_grave ] };
+ key <BKSP> { [ BackSpace, 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 ] };
+};
+
+// phonetic layout for Russian letters on an US keyboard
+// by Ivan Popov <pin@konvalo.org> 2005-07-17
+
+// level3 modifier is a shortcut to the "us" meaning of the keys where
+// we place cyrillic letters, handy for accessing the corresponding
+// punctuation marks.
+// It is important to have access to punctuation marks, and the rest of
+// alphabetical keys are added for being consequent so that the users
+// can expect the level3 modifier to give what the key label shows.
+
+partial alphanumeric_keys
+xkb_symbols "rus" {
+
+ name[Group1]= "Russian (US, phonetic)";
+
+ include "us(basic)"
+
+key.type[group1]="FOUR_LEVEL_ALPHABETIC";
+
+ key <LatA> { [ Cyrillic_a, Cyrillic_A ] };
+ key <LatB> { [ Cyrillic_be, Cyrillic_BE ] };
+ key <LatW> { [ Cyrillic_ve, Cyrillic_VE ] };
+ key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] };
+ key <LatD> { [ Cyrillic_de, Cyrillic_DE ] };
+ key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] };
+ key <TLDE> { [ Cyrillic_io, Cyrillic_IO, grave, asciitilde ] };
+ key <LatV> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
+ key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] };
+ key <LatI> { [ Cyrillic_i, Cyrillic_I ] };
+ key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] };
+ key <LatL> { [ Cyrillic_el, Cyrillic_EL ] };
+ key <LatM> { [ Cyrillic_em, Cyrillic_EM ] };
+ key <LatN> { [ Cyrillic_en, Cyrillic_EN ] };
+ key <LatO> { [ Cyrillic_o, Cyrillic_O ] };
+ key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] };
+ key <LatR> { [ Cyrillic_er, Cyrillic_ER ] };
+ key <LatS> { [ Cyrillic_es, Cyrillic_ES ] };
+ key <LatT> { [ Cyrillic_te, Cyrillic_TE ] };
+ key <LatU> { [ Cyrillic_u, Cyrillic_U ] };
+ key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <LatH> { [ Cyrillic_ha, Cyrillic_HA ] };
+ key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] };
+ key <AC10> { [ Cyrillic_che, Cyrillic_CHE, semicolon, colon ] };
+ key <AD11> { [ Cyrillic_sha, Cyrillic_SHA, bracketleft, braceleft] };
+ key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA, bracketright, braceright ] };
+ key <AE12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, equal, plus ] };
+ key <LatY> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <LatX> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] };
+ key <BKSL> { [ Cyrillic_e, Cyrillic_E, backslash, bar ] };
+ key <AC11> { [ Cyrillic_yu, Cyrillic_YU, apostrophe, quotedbl ] };
+ key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "mac" {
+
+ include "us(basic)"
+ name[Group1]= "English (Macintosh)";
+ key.type[group1]="FOUR_LEVEL";
+
+ // Slightly improvised from http://homepage.mac.com/thgewecke/kblayout.jpg
+ key <LSGT> { [ section, plusminus, section, plusminus ] };
+ key <TLDE> { [ grave, asciitilde, dead_grave, dead_horn ] };
+ key <AE01> { [ 1, exclam, exclamdown, U2044 ] };
+ key <AE02> { [ 2, at, trademark, EuroSign ] };
+ key <AE03> { [ 3, numbersign, sterling, U2039 ] };
+ key <AE04> { [ 4, dollar, cent, U203A ] };
+ key <AE05> { [ 5, percent, infinity, UFB01 ] };
+ key <AE06> { [ 6,asciicircum, section, UFB02 ] };
+ key <AE07> { [ 7, ampersand, paragraph, doubledagger ] };
+ key <AE08> { [ 8, asterisk, enfilledcircbullet, degree ] };
+ key <AE09> { [ 9, parenleft, ordfeminine, periodcentered ] };
+ key <AE10> { [ 0, parenright, masculine,singlelowquotemark] };
+ key <AE11> { [ minus, underscore, endash, emdash ] };
+ key <AE12> { [ equal, plus, notequal, plusminus ] };
+
+ key <AD01> { [ q, Q, oe, OE ] };
+ key <AD02> { [ w, W, U2211,doublelowquotemark] };
+ key <AD03> { [ e, E, dead_acute, acute ] };
+ key <AD04> { [ r, R, registered, U2030 ] };
+ key <AD05> { [ t, T, dagger, dead_caron ] };
+ key <AD06> { [ y, Y, yen, onequarter ] };
+ key <AD07> { [ u, U, dead_diaeresis, diaeresis ] };
+ key <AD08> { [ i, I, dead_circumflex, U02C6 ] };
+ key <AD09> { [ o, O, oslash, Ooblique ] };
+ key <AD10> { [ p, P, Greek_pi, U220F ] };
+ key <AD11> { [ bracketleft, braceleft, leftdoublequotemark, rightdoublequotemark ] };
+ key <AD12> { [bracketright, braceright, leftsinglequotemark, rightsinglequotemark ] };
+ key <BKSL> { [ backslash, bar, guillemotleft, guillemotright ] };
+
+ key <AC01> { [ a, A, aring, Aring ] };
+ key <AC02> { [ s, S, ssharp, dead_stroke ] };
+ key <AC03> { [ d, D, partialderivative, eth ] };
+ key <AC04> { [ f, F, function, dead_hook ] };
+ key <AC05> { [ g, G, copyright, dead_doubleacute ] };
+ key <AC06> { [ h, H, dead_abovedot, dead_belowdot ] };
+ key <AC07> { [ j, J, U2206, onehalf ] };
+ key <AC08> { [ k, K,dead_abovering, UF8FF ] };
+
+ key <AC09> { [ l, L, notsign, THORN ] };
+ key <AC10> { [ semicolon, colon, U2026, thorn ] };
+ key <AC11> { [apostrophe, quotedbl, ae, AE ] };
+
+ key <AB01> { [ z, Z, Greek_OMEGA, dead_cedilla ] };
+ key <AB02> { [ x, X, U2248, dead_ogonek ] };
+ // unclear whether "approxeq" is 2248 or 2245
+ key <AB03> { [ c, C, ccedilla, Ccedilla ] };
+ key <AB04> { [ v, V, squareroot, U25CA ] };
+ key <AB05> { [ b, B, integral, idotless ] };
+ key <AB06> { [ n, N, dead_tilde, U02DC ] };
+ key <AB07> { [ m, M, mu, threequarters ] };
+ key <AB08> { [ comma, less, lessthanequal, dead_macron ] };
+ key <AB09> { [ period, greater, greaterthanequal, dead_breve ] };
+ key <AB10> { [ slash, question, division, questiondown ] };
+
+ include "level3(ralt_switch)"
+};
+
+// Colemak symbols for xkb on X.Org Server 7.x
+// 2006-01-01 Shai Coleman, http://colemak.com/ . Public domain.
+
+partial alphanumeric_keys
+xkb_symbols "colemak" {
+ include "us"
+ name[Group1]= "English (Colemak)";
+
+ // Alphanumeric section
+ key <TLDE> { [ grave, asciitilde, dead_tilde, asciitilde ] };
+ key <AE01> { [ 1, exclam, exclamdown, onesuperior ] };
+ key <AE02> { [ 2, at, masculine, twosuperior ] };
+ key <AE03> { [ 3, numbersign, ordfeminine, threesuperior ] };
+ key <AE04> { [ 4, dollar, cent, sterling ] };
+ key <AE05> { [ 5, percent, EuroSign, yen ] };
+ key <AE06> { [ 6, asciicircum, hstroke, Hstroke ] };
+ key <AE07> { [ 7, ampersand, eth, ETH ] };
+ key <AE08> { [ 8, asterisk, thorn, THORN ] };
+ key <AE09> { [ 9, parenleft, leftsinglequotemark, leftdoublequotemark ] };
+ key <AE10> { [ 0, parenright, rightsinglequotemark, rightdoublequotemark ] };
+ key <AE11> { [ minus, underscore, endash, emdash ] };
+ key <AE12> { [ equal, plus, multiply, division ] };
+
+ key <AD01> { [ q, Q, adiaeresis, Adiaeresis ] };
+ key <AD02> { [ w, W, aring, Aring ] };
+ key <AD03> { [ f, F, atilde, Atilde ] };
+ key <AD04> { [ p, P, oslash, Ooblique ] };
+ key <AD05> { [ g, G, dead_ogonek, asciitilde ] };
+ key <AD06> { [ j, J, dstroke, Dstroke ] };
+ key <AD07> { [ l, L, lstroke, Lstroke ] };
+ key <AD08> { [ u, U, uacute, Uacute ] };
+ key <AD09> { [ y, Y, udiaeresis, Udiaeresis ] };
+ key <AD10> { [ semicolon, colon, odiaeresis, Odiaeresis ] };
+ key <AD11> { [ bracketleft, braceleft, guillemotleft, 0x1002039 ] };
+ key <AD12> { [ bracketright, braceright, guillemotright, 0x100203a ] };
+ key <BKSL> { [ backslash, bar, asciitilde, asciitilde ] };
+
+ key <AC01> { [ a, A, aacute, Aacute ] };
+ key <AC02> { [ r, R, dead_grave, asciitilde ] };
+ key <AC03> { [ s, S, ssharp, asciitilde ] };
+ key <AC04> { [ t, T, dead_acute, dead_doubleacute ] };
+ key <AC05> { [ d, D, dead_diaeresis, asciitilde ] };
+ key <AC06> { [ h, H, dead_caron, asciitilde ] };
+ key <AC07> { [ n, N, ntilde, Ntilde ] };
+ key <AC08> { [ e, E, eacute, Eacute ] };
+ key <AC09> { [ i, I, iacute, Iacute ] };
+ key <AC10> { [ o, O, oacute, Oacute ] };
+ key <AC11> { [ apostrophe, quotedbl, otilde, Otilde ] };
+
+ key <AB01> { [ z, Z, ae, AE ] };
+ key <AB02> { [ x, X, dead_circumflex, asciitilde ] };
+ key <AB03> { [ c, C, ccedilla, Ccedilla ] };
+ key <AB04> { [ v, V, oe, OE ] };
+ key <AB05> { [ b, B, dead_breve, asciitilde ] };
+ key <AB06> { [ k, K, dead_abovering, asciitilde ] };
+ key <AB07> { [ m, M, dead_macron, asciitilde ] };
+ key <AB08> { [ comma, less, dead_cedilla, asciitilde ] };
+ key <AB09> { [ period, greater, dead_abovedot, asciitilde ] };
+ key <AB10> { [ slash, question, questiondown, asciitilde ] };
+
+ key <CAPS> { [ BackSpace, BackSpace, BackSpace, BackSpace ] };
+ key <LSGT> { [ minus, underscore, endash, emdash ] };
+ key <SPCE> { [ space, space, space, nobreakspace ] };
+
+ include "level3(ralt_switch)"
+};
+
+// I do NOT like dead-keys - the International keyboard as defined by Microsoft
+// doesn't fit my needs. Why use two keystrokes for all simple characters (eg '
+// and <space> generates a single ') just to have an é (eacute) in two strokes
+// as well? I type ' more often than é (eacute).
+//
+// This file works just like a regular keyboard, BUT has all dead-keys
+// accessible at level3 (through AltGr). An ë (ediaeresis) is now: AltGr+"
+// followed by an e. In other words, this keyboard is not international as long
+// as you leave the right Alt key alone.
+//
+// The original MS International keyboard was intended for Latin1 (iso8859-1).
+// With the introduction of iso8859-15, the (important) ligature oe (and OE)
+// became available. I added them next to ae. Because I write ediaeresis more
+// often than registered, I moved registered to be next to copyright and added
+// ediaeresis and idiaeresis. - Adriaan
+
+partial alphanumeric_keys
+xkb_symbols "altgr-intl" {
+
+ name[Group1]= "English (international AltGr dead keys)";
+
+ include "us(intl)"
+
+// five dead keys moved into level3:
+
+ key <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] };
+ key <AC11> { [apostrophe,quotedbl, dead_acute, dead_diaeresis ] };
+
+// diversions from the MS Intl keyboard:
+
+ key <AE01> { [ 1, exclam, onesuperior, exclamdown ] };
+ key <AD04> { [ r, R, ediaeresis, Ediaeresis ] };
+ key <AC07> { [ j, J, idiaeresis, Idiaeresis ] };
+ key <AB02> { [ x, X, oe, OE ] };
+ key <AB04> { [ v, V, registered, registered ] };
+
+// onequarter etc (not in iso8859-15) moved to get three unshifted deadkeys:
+
+ key <AE06> { [ 6, asciicircum, dead_circumflex, onequarter ] };
+ key <AE07> { [ 7, ampersand, dead_horn, onehalf ] };
+ key <AE08> { [ 8, asterisk, dead_ogonek, threequarters ] };
+
+ include "level3(ralt_switch)"
+};
+
+// Intel ClassmatePC Keyboard Layout
+// by Piter PUNK <piterpk@terra.com.br>
+//
+// The keyboard layouts below maps the us(basic), us(intl) and us(alt-intl)
+// to ClassmatePC keyboard. All layouts uses RCTL as level3(switch) since
+// the keyboard doesn't have AltGr key. The EuroSign is engraved at 5 key.
+
+// classmate - us(basic)
+partial alphanumeric_keys
+xkb_symbols "classmate" {
+ include "us(basic)"
+ name[Group1]= "USA - ClassmatePC";
+
+ key <LSGT> { [ backslash, bar, backslash, bar ] };
+
+ include "eurosign(5)"
+ include "level3(switch)"
+};
+
+// classmate-intl - us(intl)
+// RCTL is generated by Fn+Alt, because that, when trying to access
+// the level3 symbols at 7,8,9,0,u,i,o,p,j,k,l,;,m,. and / we got
+// the keypad keycodes. The keypad is changed to make Fn+Alt+<KP_key>
+// generate the same symbol as the original key.
+partial alphanumeric_keys
+xkb_symbols "classmate-intl" {
+ include "us(intl)"
+ name[Group1]= "USA - ClassmatePC (International)";
+ key.type[Group1]="FOUR_LEVEL";
+
+ key <LSGT> { [ backslash, bar, backslash, bar ] };
+
+ key <KP7> { [ KP_Home, KP_7,
+ onehalf, dead_horn ] };
+ key <KP8> { [ KP_Up, KP_8,
+ threequarters, dead_ogonek ] };
+ key <KP9> { [ KP_Prior, KP_9,
+ leftsinglequotemark, dead_breve ] };
+ key <KPMU> { [ KP_Multiply, KP_Multiply,
+ rightsinglequotemark, dead_abovering ] };
+
+ key <KP4> { [ KP_Left, KP_4,
+ uacute, Uacute ] };
+ key <KP5> { [ KP_Begin, KP_5,
+ iacute, Iacute ] };
+ key <KP6> { [ KP_Right, KP_6,
+ oacute, Oacute ] };
+ key <KPSU> { [ KP_Subtract, KP_Subtract,
+ odiaeresis, Odiaeresis ] };
+
+ key <KP2> { [ KP_Down, KP_2,
+ oe, OE ] };
+ key <KP3> { [ KP_Next, KP_3,
+ oslash, Ooblique ] };
+ key <KPAD> { [ KP_Add, KP_Add,
+ paragraph, degree ] };
+
+ key <KP0> { [ KP_Insert, KP_0,
+ mu, mu ] };
+ key <KPDL> { [ KP_Delete, KP_Decimal,
+ dead_abovedot, dead_caron ] };
+ key <KPDV> { [ KP_Divide, KP_Divide,
+ questiondown, dead_hook ] };
+
+ include "level3(switch)"
+};
+
+// classmate-alt-intl - us(alt-intl)
+// RCTL is generated by Fn+Alt, because that, when trying to access
+// the level3 symbols at 7,8,9,0,u,i,o,p,j,k,l,;,m,. and / we got
+// the keypad keycodes. The keypad is changed to make Fn+Alt+<KP_key>
+// generate the same symbol as the original key.
+partial alphanumeric_keys
+xkb_symbols "classmate-alt-intl" {
+ include "us(alt-intl)"
+ name[Group1]= "USA - ClassmatePC (Alternative international)";
+ key.type[Group1]="FOUR_LEVEL";
+
+ key <LSGT> { [ backslash, bar, backslash, bar ] };
+
+ key <KPSU> { [ KP_Subtract, KP_Subtract ] };
+
+ key <KP9> { [ KP_Prior, KP_9,
+ leftsinglequotemark, dead_breve ] };
+ key <KPMU> { [ KP_Multiply, KP_Multiply,
+ rightsinglequotemark, dead_abovering ] };
+
+ key <KPAD> { [ KP_Add, KP_Add,
+ dead_ogonek, dead_diaeresis ] };
+
+ key <KPDL> { [ KP_Delete, KP_Decimal,
+ dead_abovedot, dead_circumflex ] };
+ key <KPDV> { [ KP_Divide, KP_Divide,
+ dead_hook, dead_hook ] };
+
+ include "level3(switch)"
+};
+
+// classmate-altgr-intl - us(altgr-intl)
+// RCTL is generated by Fn+Alt, because that, when trying to access
+// the level3 symbols at 7,8,9,0,u,i,o,p,j,k,l,;,m,. and / we got
+// the keypad keycodes. The keypad is changed to make Fn+Alt+<KP_key>
+// generate the same symbol as the original key.
+partial alphanumeric_keys
+xkb_symbols "classmate-altgr-intl" {
+ include "us(altgr-intl)"
+ name[Group1]= "USA - ClassmatePC (International Fn+Alt dead-keys)";
+ key.type[Group1]="FOUR_LEVEL";
+
+ key <LSGT> { [ backslash, bar, backslash, bar ] };
+
+ key <KP7> { [ KP_Home, KP_7,
+ dead_horn, dead_horn ] };
+ key <KP8> { [ KP_Up, KP_8,
+ dead_ogonek, dead_ogonek ] };
+ key <KP9> { [ KP_Prior, KP_9,
+ leftsinglequotemark, dead_breve ] };
+ key <KPMU> { [ KP_Multiply, KP_Multiply,
+ rightsinglequotemark, dead_abovering ] };
+
+ key <KP4> { [ KP_Left, KP_4,
+ uacute, Uacute ] };
+ key <KP5> { [ KP_Begin, KP_5,
+ iacute, Iacute ] };
+ key <KP6> { [ KP_Right, KP_6,
+ oacute, Oacute ] };
+ key <KPSU> { [ KP_Subtract, KP_Subtract,
+ odiaeresis, Odiaeresis ] };
+
+ key <KP1> { [ KP_End, KP_1,
+ idiaeresis, Idiaeresis ] };
+ key <KP2> { [ KP_Down, KP_2,
+ oe, OE ] };
+ key <KP3> { [ KP_Next, KP_3,
+ oslash, Ooblique ] };
+ key <KPAD> { [ KP_Add, KP_Add,
+ paragraph, degree ] };
+
+ key <KP0> { [ KP_Insert, KP_0,
+ mu, mu ] };
+ key <KPDL> { [ KP_Delete, KP_Decimal,
+ dead_abovedot, dead_caron ] };
+ key <KPDV> { [ KP_Divide, KP_Divide,
+ questiondown, dead_hook ] };
+
+ include "level3(switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "olpc" {
+
+ include "us(basic)"
+ name[Group1]= "English (US)";
+
+ // OLPC international US English keyboard layout.
+ // It's a little different from the usual international layout.
+ // See: http://wiki.laptop.org/go/Image:Keyboard_english.png
+
+ key <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] };
+ key <AE01> { [ 1, exclam, exclamdown, exclamdown ] };
+ key <AE02> { [ 2, at, notsign, notsign ] };
+ key <AE03> { [ 3, numbersign, 0x1000300, 0x1000300 ] }; // combining grave
+ key <AE04> { [ 4, dollar, 0x1000301, 0x1000301 ] }; // combining acute
+ key <AE05> { [ 5, percent, 0x1000306, 0x1000306 ] }; // combining breve above
+ key <AE06> { [ 6,asciicircum, 0x100030A, 0x100030A ] }; // combining ring above
+ key <AE07> { [ 7, ampersand, 0x1000302, 0x1000302 ] }; // combining circumflex above
+ key <AE08> { [ 8, asterisk, 0x100030C, 0x100030C ] }; // combining caron above
+ key <AE09> { [ 9, parenleft, 0x1000307, 0x1000307 ] }; // combining dot above
+ key <AE10> { [ 0, parenright, 0x1000308, 0x1000308 ] }; // combining diaeresis above
+ key <AE11> { [ minus, underscore, 0x1000304, 0x1000304 ] }; // combining macron above
+ key <AE12> { [ equal, plus, 0x1000303, 0x1000303 ] }; // combining tilde above
+
+ key <AD01> { [ q, Q, Greek_omega, Greek_OMEGA ] };
+ key <AD02> { [ w, W, oslash, Oslash ] };
+ key <AD03> { [ e, E, oe, OE ] };
+ key <AD04> { [ r, R, 0x1000327, 0x1000327 ] }; // combining cedilla
+ key <AD05> { [ t, T, 0x100032E, 0x100032E ] }; // combining breve below
+ key <AD06> { [ y, Y, 0x1000325, 0x1000325 ] }; // combining ring below
+ key <AD07> { [ u, U, 0x100032D, 0x100032D ] }; // combining circumflex below
+ key <AD08> { [ i, I, 0x100032C, 0x100032C ] }; // combining caron below
+ key <AD09> { [ o, O, 0x1000323, 0x1000323 ] }; // combining dot below
+ key <AD10> { [ p, P, 0x1000324, 0x1000324 ] }; // combining diaeresis below
+ key <AD11> { [ bracketleft, braceleft, 0x1000331, 0x1000331 ] }; // combining macron below
+ key <AD12> { [bracketright, braceright, 0x1000330, 0x1000330 ] }; // combining tilde below
+
+ key <AC01> { [ a, A, ae, AE ] };
+ key <AC02> { [ s, S, ssharp, 0x1001E9C ] }; // uppercase S sharp
+ key <AC03> { [ d, D, eth, ETH ] };
+ key <AC04> { [ f, F, thorn, THORN ] };
+ key <AC06> { [ h, H, sterling, sterling ] };
+ key <AC07> { [ j, J, EuroSign, EuroSign ] };
+ key <AC10> { [ semicolon, colon, masculine, ordfeminine ] };
+ key <AC11> { [ apostrophe, quotedbl, currency, currency ] };
+ key <BKSL> { [ backslash, bar, section, section ] };
+
+ key <AB03> { [ c, C, ccedilla, Ccedilla ] };
+ key <AB06> { [ n, N, ntilde, Ntilde ] };
+ key <AB07> { [ m, M, mu, mu ] };
+ key <AB08> { [ comma, less, guillemotleft, guillemotleft ] };
+ key <AB09> { [ period, greater, guillemotright, guillemotright ] };
+ key <AB10> { [ slash, question, questiondown, questiondown ] };
+
+ key <I219> { [ multiply, division, ISO_Next_Group, ISO_Prev_Group ] };
+
+ include "level3(ralt_switch)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "olpc2" {
+ include "us(olpc)"
+ name[Group1]= "English (layout toggle on multiply/divide key)";
+ include "group(olpc)"
+};
+
+// Based on Cherokee Nation Official Layout
+// http://www.cherokee.org/extras/downloads/font/Keyboard.htm
+
+partial alphanumeric_keys modifier_keys
+xkb_symbols "chr" {
+
+ name[Group1]= "Cherokee";
+ key.type[group1]="ALPHABETIC";
+
+ // Alphanumeric section
+ key <TLDE> { [ grave, U13CA ] };
+ key <AE01> { [ 1, U13B1 ] };
+ key <AE02> { [ 2, U13C7 ] };
+ key <AE03> { [ 3, U13E7 ] };
+ key <AE04> { [ U13D9, U13B0 ] };
+ key <AE05> { [ U13E6, U13B9 ] };
+ key <AE06> { [ U13DC, U13DD ] };
+ key <AE07> { [ U13CB, U13E1 ] };
+ key <AE08> { [ U13D6, U13BA ] };
+ key <AE09> { [ U13D2, parenleft ] };
+ key <AE10> { [ U13C4, parenright ] };
+ key <AE11> { [ U13BF, U13BC ] };
+ key <AE12> { [ U13F3, U13BD ] };
+
+ key <AD01> { [ U13AA, U13C6 ] };
+ key <AD02> { [ U13B3, U13EB ] };
+ key <AD03> { [ U13A1, U13E3 ] };
+ key <AD04> { [ U13DB, U13CF ] };
+ key <AD05> { [ U13D4, U13D8 ] };
+ key <AD06> { [ U13EF, U13F2 ] };
+ key <AD07> { [ U13A4, U13AD ] };
+ key <AD08> { [ U13A2, U13F1 ] };
+ key <AD09> { [ U13A3, U13EC ] };
+ key <AD10> { [ U13C1, U13EA ] };
+ key <AD11> { [ U13D5, U13D1 ] };
+ key <AD12> { [ U13B6, U13E4 ] };
+ key <BKSL> { [ U13E9, U13EE ] };
+
+ key <AC01> { [ U13A0, U13CC ] };
+ key <AC02> { [ U13CD, U13CE ] };
+ key <AC03> { [ U13D7, U13D0 ] };
+ key <AC04> { [ U13A9, U13C8 ] };
+ key <AC05> { [ U13A6, U13E5 ] };
+ key <AC06> { [ U13AF, U13B2 ] };
+ key <AC07> { [ U13DA, U13AB ] };
+ key <AC08> { [ U13B8, U13A7 ] };
+ key <AC09> { [ U13B5, U13AE ] };
+ key <AC10> { [ U13E8, U13E0 ] };
+ key <AC11> { [ apostrophe, quotedbl ] };
+
+ key <AB01> { [ U13AC, U13C3 ] };
+ key <AB02> { [ U13F4, U13ED ] };
+ key <AB03> { [ U13D3, U13DF ] };
+ key <AB04> { [ U13A5, U13DE ] };
+ key <AB05> { [ U13A8, U13F0 ] };
+ key <AB06> { [ U13BE, U13BB ] };
+ key <AB07> { [ U13C5, U13B7 ] };
+ key <AB08> { [ comma, U13E2 ] };
+ key <AB09> { [ period, U13B4 ] };
+ key <AB10> { [ U13C2, U13C9 ] };
+
+ // End alphanumeric section
+};
+
+// Serbian charecters added as third level symbols to US keyboard layout.
+
+partial alphanumeric_keys
+xkb_symbols "hbs" {
+
+ name[Group1]= "Serbo-Croatian (US)";
+
+ include "us"
+
+ key <TLDE> { [ grave, asciitilde ] };
+ key <AE06> { [ 6, dead_caron, asciicircum, asciicircum ] };
+ key <AC09> { [ l, L, U1C9, U1C8 ] };
+ key <AB06> { [ n, N, U1CC, U1CB ] };
+ key <AB01> { [ z, Z, U1C6, U1C5 ] };
+ key <AD03> { [ e, E, EuroSign, cent ] };
+ key <AC03> { [ d, D, dstroke, Dstroke ] };
+ key <AC11> { [ dead_acute, quotedbl, apostrophe, apostrophe ] };
+ key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
+ key <AB08> { [ comma, less, NoSymbol, guillemotright ] };
+ key <AB09> { [ period, greater, NoSymbol, guillemotleft ] };
+
+ include "level3(ralt_switch)"
+};
+
+//based on http://upload.wikimedia.org/wikipedia/commons/1/18/T-Mobile_G1_launch_event_2.jpg
+partial alphanumeric_keys
+xkb_symbols "htcdream" {
+ include "inet(htcdream)"
+ name[Group1]= "English (US)";
+
+ //second row
+ key <AD01> { [ q, Q, Tab, Tab ] };
+ key <AD02> { [ w, W, grave, grave ] };
+ key <AD03> { [ e, E, underscore, underscore ] };
+ key <AD04> { [ r, R, sterling, sterling ] };
+ key <AD05> { [ t, T, EuroSign, EuroSign ] };
+ key <AD06> { [ y, Y, division, division ] };
+ key <AD07> { [ u, U, multiply, multiply ] };
+ key <AD08> { [ i, I, minus, minus ] };
+ key <AD09> { [ o, O, plus, plus ] };
+ key <AD10> { [ p, P, equal, equal ] };
+
+ //third row
+ key <AC01> { [ a, A, NoSymbol, NoSymbol ] };
+ key <AC02> { [ s, S, bar, bar ] };
+ key <AC03> { [ d ,D, backslash, backslash ] };
+ key <AC04> { [ f, F, braceleft, braceleft ] };
+ key <AC05> { [ g, G, braceright, braceright ] };
+ key <AC06> { [ h, H, colon, colon ] };
+ key <AC07> { [ j, J, semicolon, semicolon ] };
+ key <AC08> { [ k, K, quotedbl, quotedbl ] };
+ key <AC09> { [ l, L, apostrophe, apostrophe ] };
+
+ //forth row
+ key <AB01> { [ z, Z, NoSymbol, NoSymbol ] };
+ key <AB02> { [ x, X, NoSymbol, NoSymbol ] };
+ key <AB03> { [ c, C, NoSymbol, NoSymbol ] };
+ key <AB04> { [ v, V, bracketleft, bracketleft ] };
+ key <AB05> { [ b, B, bracketright, bracketright ] };
+ key <AB06> { [ n, N, less, less ] };
+ key <AB07> { [ m, M, greater, greater ] };
+ key <AB08> { [ comma, comma, question, question ] };
+
+ //fifth row
+ key <FK15> { [ at, at, asciitilde, asciitilde ] };
+
+ include "level3(alt_switch)"
+};
+
+// EXTRAS:
+
+// XCompose is out! Unicode combining is in! For those of us who live
+// on the edge: A keymap using Unicode combining characters instead of
+// deadkeys. This variation does not deviate from the lame MS-style
+// US-intl layout; but it uses AltGr for combining, like altgr-intl.
+//
+// This might break your font layout layout systems (because they
+// suck), caveat emptor. Also, most of today's software will count
+// individual combining marks for selection, deletion, character
+// counting &c., and won't be smart enough to do canonical equivalence
+// when searching, &c.
+//
+// With Unicode combining you use "handwriting order", not
+// "typewriting order" as with deadkeys. That is, you first type the
+// base character, then the diacritics/accents/modifiers. This has
+// the advantage of avoiding hidden states --- each keypress changes
+// something on screen.
+//
+// TODO: as of now, this duplicates all us(intl) functionality with
+// combining. With care, perhaps we could add more combining marks
+// not present in intl, and support all major languages.
+partial alphanumeric_keys
+xkb_symbols "intl-unicode" {
+
+ name[Group1]= "English (US, international AltGr Unicode combining)";
+
+ include "us(intl)"
+ include "level3(ralt_switch)"
+
+ // grave, tilde
+ key <TLDE> { [grave, asciitilde, U0300, U0303 ] };
+ // double acute
+ key <AE02> { [ 2, at, twosuperior, U030B ] };
+ // macron
+ key <AE03> { [ 3, numbersign, threesuperior, U0304 ] };
+ // circumflex
+ key <AE06> { [ 6, asciicircum, onequarter, U0302 ] };
+ // horn
+ key <AE07> { [ 7, ampersand, onehalf, U031B ] };
+ // ogonek
+ key <AE08> { [ 8, asterisk, threequarters, U0328 ] };
+ // breve
+ key <AE09> { [ 9, parenleft, leftsinglequotemark, U0306 ] };
+ // abovering
+ key <AE10> { [ 0, parenright, rightsinglequotemark, U030A ] };
+
+ // belowdot
+ key <AE11> { [ minus, underscore, yen, U0323 ] };
+ // acute, diaeresis
+ key <AC11> { [apostrophe, quotedbl, U0301, U0308 ] };
+ // abovedot, caron
+ key <AB09> { [ period, greater, U0307, U030C ] };
+ // hook
+ key <AB10> { [ slash, question, questiondown, 0309 ] };
+
+ // alt-intl compatibility
+ // cedilla, caron
+ key <AB08> { [ comma, less, U0327, U030C ] };
+ // ogonek, diaeresis
+ key <AC10> { [ semicolon, colon, U0328, U0308 ] };
+ // doubleacute, horn
+ key <AE12> { [ equal, plus, U030B, U031B ] };
+
+ // we don't do combining latin letters and combining enclosures
+ // because support for those is very rare.
+};
+
+// XCompose is out! Unicode combining is in! For those of us who live
+// on the edge: A keymap using Unicode combining characters instead of
+// deadkeys. This variation does break compatibility with us-intl,
+// whenever I thought it would be more mnemonic or Unicodeish.
+partial alphanumeric_keys
+xkb_symbols "alt-intl-unicode" {
+
+ name[Group1]= "English (US, international AltGr Unicode combining, alternative)";
+
+ include "extras/us(intl-unicode)"
+ include "level3(ralt_switch)"
+
+ // easier macron; em-dash.
+ // em-dash is available via compose, but I added here since it's such
+ // an important typographic character.
+ key <AE11> { [ minus, underscore, U0304, U2014 ] };
+
+ // belowdot, abovedot (caron at coma/less key, per above)
+ key <AB09> { [ period, greater, U0323, U0307 ] };
+
+};
+
+partial alphanumeric_keys
+xkb_symbols "ats" {
+
+ include "us"
+
+ name[Group1]= "Atsina";
+
+ //Using Dead key to get COMBINING COMMA ABOVE for ejectives on
+ //q, l, t, s, m, g, k, p, w, y, r
+ //XCompose key is used for the other accute and grave.
+
+ key <AD03> { [ e, E, eacute, Eacute ] };
+ key <AD07> { [ u, U, uacute, Uacute ] };
+ key <AD08> { [ i, I, iacute, Iacute ] };
+ key <AD09> { [ o, O, oacute, Oacute ] };
+ key <AD11> { [ bracketleft, braceleft, U03B8 ] };
+ key <AD12> { [ bracketright, braceright, U010D, U010C ] };
+ //U+010C (uppercase Č) and U+010D (lowercase č).
+
+ key <AC01> { [ a, A, aacute, Aacute ] };
+
+
+ //Small letter Open use compose to key get acute accent
+ key <AB03> { [ c, C, U0254, U0186 ] };
+ key <AB08> { [ comma, less, U0313 ] };
+ key <AB10> { [ slash, question, U0294 ] };
+
+ include "level3(ralt_switch)"
+ include "compose(rctrl)"
+};
+
+partial alphanumeric_keys
+xkb_symbols "crd" {
+
+ include "us"
+
+ name[Group1]= "Couer D'alene Salish";
+
+ // Alphanumeric section
+ key <AD02> { [ w, W, U02B7, U02B7 ] };
+ key <AE07> { [ 7, ampersand, U0294 ] };
+ key <AD01> { [ q, Q, U221A ] };
+ key <AB04> { [ v, V, U0259 ] };
+ key <BKSL> { [ backslash, bar, U026B ] };
+ key <AD03> { [ e, E, U025B ] };
+ key <AD08> { [ i, I, U026A ] };
+ key <AC07> { [ j, J, U01F0 ] };
+ key <AE06> { [ 6, asciicircum, U0295 ] };
+ key <AC02> { [ s, S, U0161 ] };
+ key <AB03> { [ c, C, U010D ] };
+ key <AD09> { [ o, O, U0254 ] };
+ key <AB09> { [ period, greater, U0323 ] };
+
+ include "level3(ralt_switch)"
+ include "compose(rctrl)"
+
+ // End alphanumeric section
+};
--- /dev/null
+default xkb_types "basic" {
+
+ // Fairly standard definitions for
+ // the four required key types
+
+ virtual_modifiers NumLock;
+
+ type "ONE_LEVEL" {
+ modifiers = None;
+ map[None] = Level1;
+ level_name[Level1]= "Any";
+ };
+
+ type "TWO_LEVEL" {
+ modifiers = Shift;
+ map[Shift] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ };
+
+ type "ALPHABETIC" {
+ modifiers = Shift+Lock;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Caps";
+ };
+
+};
--- /dev/null
+default xkb_types "complete" {
+ include "basic"
+ include "mousekeys"
+ include "pc"
+ include "iso9995"
+ include "level5"
+ include "extra"
+ include "numpad"
+};
--- /dev/null
+partial default xkb_types "default" {
+ // Definition for a key type used for the czech keymap, for instance.
+ // Defines style a with four level shift. It is similar to three_level
+ // type used for iso9995 but it lets the shift key behave "normally".
+
+ virtual_modifiers LevelThree;
+
+ type "FOUR_LEVEL" {
+ modifiers = Shift+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+
+ type "FOUR_LEVEL_ALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level4;
+ map[Lock+Shift+LevelThree] = Level3;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+
+ type "FOUR_LEVEL_SEMIALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level3;
+ map[Lock+Shift+LevelThree] = Level4;
+ preserve[Lock+LevelThree] = Lock;
+ preserve[Lock+Shift+LevelThree] = Lock;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+
+ // Another four level keypad variant
+ // First two levels are controled by NumLock (with active Shift-ing like
+ // in KEYPAD). LevelThree overrides this mode, with two additional
+ // Shift-ed levels
+ // NumLock state is intentionnaly ignored when LevelThree is active
+ type "FOUR_LEVEL_MIXED_KEYPAD" {
+ modifiers = Shift+NumLock+LevelThree;
+ map[None] = Level1;
+ map[Shift+NumLock] = Level1;
+ map[NumLock] = Level2;
+ map[Shift] = Level2;
+ map[LevelThree] = Level3;
+ map[NumLock+LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Shift+NumLock+LevelThree] = Level4;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Number";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ };
+
+ // Base level, two Shift-ed LevelThree levels, one Ctrl+Alt command level
+ type "FOUR_LEVEL_X" {
+ modifiers = Shift+LevelThree+Control+Alt;
+ map[None] = Level1;
+ map[LevelThree] = Level2;
+ map[Shift+LevelThree] = Level3;
+ map[Control+Alt] = Level4;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Alt Base";
+ level_name[Level3] = "Shift Alt";
+ level_name[Level4] = "Ctrl+Alt";
+ };
+
+// Special type for keys used in Serbian Latin Unicode map
+// It makes it possible to use all three forms of latin letters
+// present in Unicode that are made up of two separate letters
+// (forms like LJ, Lj, and lj; NJ, Nj, and nj; etc)
+
+ type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level4;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level3;
+ map[Lock+Shift+LevelThree] = Level3;
+ preserve[Lock]= Lock;
+ preserve[Lock+LevelThree]= Lock;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "AltGr Base";
+ level_name[Level4] = "Shift AltGr";
+ };
+
+// type for e.g. german ssharp which is capitalized SS.
+// CHARACTERISTICS:
+// It is FOUR_LEVEL with the exception that the fifth level
+// is mapped to the Lock modifier.
+// If other modifiers are used, the Lock state is ignored.
+// DETAILS ABOUT GERMAN:
+// The capital form of ssharp (called sharp s) only exists for
+// completely capitalized Text, not at the beginning of sentences
+// or nouns (nouns have a captial letter at the beginning in german).
+// The ssharp key, to the right of the zero key, takes this into
+// account and has a questionmark mapped on shift-ssharp since
+// normally no capital version is needed.
+// When typing with active capsLock, this key type is needed to
+// output two capital letters S because this is the only german key
+// whose capital letter is not the same as the one typed with shift.
+
+ type "FOUR_LEVEL_PLUS_LOCK" {
+ modifiers = Shift+Lock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock] = Level5;
+ map[Lock+Shift] = Level2;
+ map[Lock+LevelThree] = Level3;
+ map[Lock+Shift+LevelThree] = Level4;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ level_name[Level5] = "Lock";
+ };
+};
+
+// This enables the four level shifting also for the keypad.
+partial xkb_types "keypad" {
+ virtual_modifiers LevelThree;
+
+ type "FOUR_LEVEL_KEYPAD" {
+ modifiers = Shift+NumLock+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[NumLock] = Level2;
+ map[Shift+NumLock] = Level1;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[NumLock+LevelThree] = Level4;
+ map[Shift+NumLock+LevelThree] = Level3;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Number";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Alt Number";
+ };
+};
--- /dev/null
+partial default xkb_types "default" {
+
+ // Definition for a key type which
+ // can be used to implement ISO9995
+ // style level three shift
+ virtual_modifiers LevelThree;
+
+ type "THREE_LEVEL" {
+ modifiers = Shift+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level3;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Level3";
+ };
+};
--- /dev/null
+partial default xkb_types "default" {
+ // Definition for a key type used for the czech keymap, for instance.
+ // Defines style a with four level shift. It is similar to three_level
+ // type used for iso9995 but it lets the shift key behave "normally".
+
+ virtual_modifiers LevelThree,ScrollLock,LevelFive;
+
+ type "EIGHT_LEVEL" {
+ modifiers = Shift+LevelThree+LevelFive;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[LevelFive] = Level5;
+ map[Shift+LevelFive] = Level6;
+ map[LevelThree+LevelFive] = Level7;
+ map[Shift+LevelThree+LevelFive] = Level8;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ level_name[Level5] = "X";
+ level_name[Level6] = "X Shift";
+ level_name[Level7] = "X Alt Base";
+ level_name[Level8] = "X Shift Alt";
+ };
+
+ type "EIGHT_LEVEL_ALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree+LevelFive;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level4;
+ map[Lock+Shift+LevelThree] = Level3;
+
+ map[LevelFive] = Level5;
+ map[Shift+LevelFive] = Level6;
+ map[Lock+LevelFive] = Level6;
+ map[LevelThree+LevelFive] = Level7;
+ map[Shift+LevelThree+LevelFive] = Level8;
+ map[Lock+LevelThree+LevelFive] = Level8;
+ map[Lock+Shift+LevelThree+LevelFive] = Level7;
+
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ level_name[Level5] = "X";
+ level_name[Level6] = "X Shift";
+ level_name[Level7] = "X Alt Base";
+ level_name[Level8] = "X Shift Alt";
+ };
+
+// type "EIGHT_LEVEL_LEVEL_FIVE_LOCK" {
+// // Level5-Lock is implemented by using NumLock, because a real modifier
+// // is required.
+//
+// modifiers = Shift + Lock + LevelThree + NumLock + LevelFive;
+//
+// map[None] = Level1;
+// map[Shift] = Level2;
+// map[LevelThree] = Level3;
+// map[LevelThree+Shift] = Level4;
+//
+// map[LevelFive] = Level5;
+// map[LevelFive+Shift] = Level6;
+// map[LevelFive+LevelThree] = Level7;
+// map[LevelFive+LevelThree+Shift] = Level8;
+//
+// map[NumLock] = Level5;
+// map[NumLock+Shift] = Level6;
+// map[NumLock+LevelThree] = Level7;
+// map[NumLock+LevelThree+Shift] = Level8;
+//
+// map[NumLock+LevelFive] = Level1;
+// map[NumLock+LevelFive+Shift] = Level2;
+// map[NumLock+LevelFive+LevelThree] = Level3;
+// map[NumLock+LevelFive+LevelThree+Shift] = Level4;
+//
+// // Lock has no effect
+// map[Lock] = Level1;
+// map[Lock+Shift] = Level2;
+// map[Lock+LevelThree] = Level3;
+// map[Lock+LevelThree+Shift] = Level4;
+//
+// map[Lock+LevelFive] = Level5;
+// map[Lock+LevelFive+Shift] = Level6;
+// map[Lock+LevelFive+LevelThree] = Level7;
+// map[Lock+LevelFive+LevelThree+Shift] = Level8;
+//
+// map[Lock+NumLock] = Level5;
+// map[Lock+NumLock+Shift] = Level6;
+// map[Lock+NumLock+LevelThree] = Level7;
+// map[Lock+NumLock+LevelThree+Shift] = Level8;
+//
+// map[Lock+NumLock+LevelFive] = Level1;
+// map[Lock+NumLock+LevelFive+Shift] = Level2;
+// map[Lock+NumLock+LevelFive+LevelThree] = Level3;
+// map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level4;
+//
+// preserve[LevelFive+Shift] = Shift;
+// preserve[NumLock+Shift] = Shift;
+// preserve[Lock+LevelFive+Shift] = Shift;
+// preserve[Lock+NumLock+Shift] = Shift;
+//
+// level_name[Level1] = "Base";
+// level_name[Level2] = "Shift";
+// level_name[Level3] = "Alt Base";
+// level_name[Level4] = "Shift Alt";
+// level_name[Level5] = "X";
+// level_name[Level6] = "X Shift";
+// level_name[Level7] = "X Alt Base";
+// level_name[Level8] = "X Shift Alt";
+// };
+//
+// type "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK" {
+// // Level5-Lock is implemented by using NumLock, because a real modifier
+// // is required.
+//
+// modifiers = Shift + Lock + LevelThree + NumLock + LevelFive;
+//
+// map[None] = Level1;
+// map[Shift] = Level2;
+// map[LevelThree] = Level3;
+// map[LevelThree+Shift] = Level4;
+//
+// map[LevelFive] = Level5;
+// map[LevelFive+Shift] = Level6;
+// map[LevelFive+LevelThree] = Level7;
+// map[LevelFive+LevelThree+Shift] = Level8;
+//
+// map[NumLock] = Level5;
+// map[NumLock+Shift] = Level6;
+// map[NumLock+LevelThree] = Level7;
+// map[NumLock+LevelThree+Shift] = Level8;
+//
+// map[NumLock+LevelFive] = Level1;
+// map[NumLock+LevelFive+Shift] = Level2;
+// map[NumLock+LevelFive+LevelThree] = Level3;
+// map[NumLock+LevelFive+LevelThree+Shift] = Level4;
+//
+// // Lock interchanges Level1 and Level2
+// map[Lock] = Level2;
+// map[Lock+Shift] = Level1;
+// map[Lock+LevelThree] = Level3;
+// map[Lock+LevelThree+Shift] = Level4;
+//
+// map[Lock+LevelFive] = Level5;
+// map[Lock+LevelFive+Shift] = Level6;
+// map[Lock+LevelFive+LevelThree] = Level7;
+// map[Lock+LevelFive+LevelThree+Shift] = Level8;
+//
+// map[Lock+NumLock] = Level5;
+// map[Lock+NumLock+Shift] = Level6;
+// map[Lock+NumLock+LevelThree] = Level7;
+// map[Lock+NumLock+LevelThree+Shift] = Level8;
+//
+// map[Lock+NumLock+LevelFive] = Level2;
+// map[Lock+NumLock+LevelFive+Shift] = Level1;
+// map[Lock+NumLock+LevelFive+LevelThree] = Level4;
+// map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level3;
+//
+// preserve[LevelFive+Shift] = Shift;
+// preserve[NumLock+Shift] = Shift;
+//
+// level_name[Level1] = "Base";
+// level_name[Level2] = "Shift";
+// level_name[Level3] = "Alt Base";
+// level_name[Level4] = "Shift Alt";
+// level_name[Level5] = "X";
+// level_name[Level6] = "X Shift";
+// level_name[Level7] = "X Alt Base";
+// level_name[Level8] = "X Shift Alt";
+// };
+
+ type "EIGHT_LEVEL_SEMIALPHABETIC" {
+ modifiers = Shift+Lock+LevelThree+LevelFive;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level3;
+ map[Lock+Shift+LevelThree] = Level4;
+
+ map[LevelFive] = Level5;
+ map[Shift+LevelFive] = Level6;
+ map[Lock+LevelFive] = Level6;
+ map[LevelThree+LevelFive] = Level7;
+ map[Shift+LevelThree+LevelFive] = Level8;
+ map[Lock+LevelThree+LevelFive] = Level7;
+ map[Lock+Shift+LevelThree+LevelFive] = Level8;
+
+ preserve[Lock+LevelThree] = Lock;
+ preserve[Lock+Shift+LevelThree] = Lock;
+ preserve[Lock+LevelFive] = Lock;
+ preserve[Lock+Shift+LevelFive] = Lock;
+ preserve[Lock+LevelThree+LevelFive] = Lock;
+ preserve[Lock+Shift+LevelThree+LevelFive] = Lock;
+
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ level_name[Level5] = "X";
+ level_name[Level6] = "X Shift";
+ level_name[Level7] = "X Alt Base";
+ level_name[Level8] = "X Shift Alt";
+ };
+
+};
--- /dev/null
+partial default xkb_types "default" {
+ virtual_modifiers Alt;
+
+ type "SHIFT+ALT" {
+ modifiers = Shift+Alt;
+ map[Shift+Alt] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift+Alt";
+ };
+};
--- /dev/null
+partial default xkb_types "pc" {
+ type "KEYPAD" {
+ modifiers = Shift+NumLock;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[NumLock] = Level2;
+ map[Shift+NumLock] = Level1;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Number";
+ };
+ include "extra(keypad)"
+};
+
+// On Mac keypads, level 1 and 2 are swapped
+partial xkb_types "mac" {
+ type "KEYPAD" {
+ modifiers = None;
+ map[None] = Level2;
+ level_name[Level2] = "Number";
+ };
+ include "extra(keypad)"
+};
+
+partial xkb_types "microsoft" {
+ type "KEYPAD" {
+ modifiers = Shift+NumLock;
+ map[None] = Level1;
+ preserve[Shift] = Shift;
+ map[NumLock] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Number";
+ };
+ include "extra(keypad)"
+};
+
+// Swiss-German style numeric keypad: Shift and NumLock operates as
+// two independent modifiers; however, since we want shift state for
+// the cursor keys, only three levels are used from the key mappings.
+// Closest type is actually FOUR_LEVEL_X, but most numpad layouts uses
+// FOUR_LEVEL_MIXED_KEYPAD so that's the one we are going to override.
+partial xkb_types "shift3" {
+ type "FOUR_LEVEL_MIXED_KEYPAD" {
+ modifiers = Shift+NumLock+Control+Alt;
+
+ // NumLock Off => navigate using cursor keys
+ map[None] = Level1;
+
+ // NumLock Off + Shift pressed => select using cursor keys
+ preserve[Shift] = Shift;
+
+ // NumLock On => decimal digits
+ map[NumLock] = Level2;
+
+ // NumLock On + Shift pressed => auxiliary symbols,
+ // e.g. hexadecimal digits
+ map[Shift+NumLock] = Level3;
+
+ // Ctrl + Alt, regardless of NumLock and Shift => command keys
+ map[Control+Alt] = Level4;
+
+ // reverse map from levels to modifiers
+ level_name[Level1] = "Base";
+ level_name[Level2] = "NumLock";
+ level_name[Level3] = "Shift+NumLock";
+ level_name[Level4] = "Ctrl+Alt";
+ };
+};
--- /dev/null
+partial default xkb_types "default" {
+
+ // Some types that are necessary
+ // for a full implementation of
+ // a PC compatible keyboard.
+ virtual_modifiers Alt;
+ virtual_modifiers LevelThree;
+ virtual_modifiers LAlt;
+ virtual_modifiers RAlt;
+ virtual_modifiers RControl;
+ virtual_modifiers LControl;
+
+ type "PC_CONTROL_LEVEL2" {
+ modifiers = Control;
+ map[None] = Level1;
+ map[Control] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Control";
+ };
+
+ type "PC_LCONTROL_LEVEL2" {
+ modifiers = LControl;
+ map[None] = Level1;
+ map[LControl] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "LControl";
+ };
+
+ type "PC_RCONTROL_LEVEL2" {
+ modifiers = RControl;
+ map[None] = Level1;
+ map[RControl] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "RControl";
+ };
+
+ type "PC_ALT_LEVEL2" {
+ modifiers = Alt;
+ map[None] = Level1;
+ map[Alt] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Alt";
+ };
+
+ type "PC_LALT_LEVEL2" {
+ modifiers = LAlt;
+ map[None] = Level1;
+ map[LAlt] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "LAlt";
+ };
+
+ type "PC_RALT_LEVEL2" {
+ modifiers = RAlt;
+ map[None] = Level1;
+ map[RAlt] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "RAlt";
+ };
+
+ type "CTRL+ALT" {
+ modifiers = Control+Alt+Shift+LevelThree;
+ map[None] = Level1;
+ map[Shift] = Level2;
+ map[LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Control+Alt] = Level5;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Alt Base";
+ level_name[Level4] = "Shift Alt";
+ level_name[Level5] = "Ctrl+Alt";
+ };
+
+ // Local eight level
+ // Needed when you want part of your layout eight-level but can not use
+ // LevelFive as modifier, as this will take over right ctrl by default
+ // for all the layout and is too invasive for your average four-level user
+ // Needed to fix bug #9529
+ // FIXME Should really use RControl but it's seems not to be enabled by
+ // default and touching this requires a lot of testing
+ type "LOCAL_EIGHT_LEVEL" {
+ modifiers = Shift+Lock+LevelThree+Control;
+
+ map[None] = Level1;
+ map[Lock+Shift] = Level1;
+ map[Shift] = Level2;
+ map[Lock] = Level2;
+
+ map[LevelThree] = Level3;
+ map[Lock+Shift+LevelThree] = Level3;
+ map[Shift+LevelThree] = Level4;
+ map[Lock+LevelThree] = Level4;
+
+ map[Control] = Level5;
+ map[Lock+Shift+Control] = Level5;
+ map[Shift+Control] = Level6;
+ map[Lock+Control] = Level6;
+
+ map[LevelThree+Control] = Level7;
+ map[Lock+Shift+LevelThree+Control] = Level7;
+ map[Shift+LevelThree+Control] = Level8;
+ map[Lock+LevelThree+Control] = Level8;
+
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Shift";
+ level_name[Level3] = "Level3";
+ level_name[Level4] = "Shift Level3";
+ level_name[Level5] = "Ctrl";
+ level_name[Level6] = "Shift Ctrl";
+ level_name[Level7] = "Level3 Ctrl";
+ level_name[Level8] = "Shift Level3 Ctrl";
+ };
+
+};
assert(ctx);
- assert(test_rmlvo(ctx, "base", "pc105", "us,il,ru,ca", ",,,multix", "grp:alts_toggle,ctrl:nocaps,compose:rwin"));
- assert(test_rmlvo(ctx, "base", "", "us", "", ""));
+ assert(test_rmlvo(ctx, "evdev", "pc105", "us,il,ru,ca", ",,,multix", "grp:alts_toggle,ctrl:nocaps,compose:rwin"));
+ assert(test_rmlvo(ctx, "evdev", "", "us", "", ""));
assert(test_rmlvo(ctx, "evdev", "pc105", "us", "intl", ""));
assert(test_rmlvo(ctx, "evdev", "pc105", "us", "intl", "grp:alts_toggle"));