commit 9b53b2c836b4fe0180d0558b68e9f576fc342ab4
parent 8fdaaa2b6f926e9e3fb831f745e3931ec07b64ff
Author: Maarten van Gompel <proycon@anaproy.nl>
Date: Tue, 24 Aug 2021 18:52:00 +0200
added arabic layout + fixed keymap switching
Diffstat:
M | keymap.mobintl.h | | | 1464 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- |
M | layout.mobintl.h | | | 67 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
2 files changed, 1529 insertions(+), 2 deletions(-)
diff --git a/keymap.mobintl.h b/keymap.mobintl.h
@@ -1467,7 +1467,7 @@ xkb_symbols \"(unnamed)\" {\
",
comp_unichr, comp_shift_unichr);
return keymap;
- } else if (strcmp("name", "cyrillic")) {
+ } else if (strcmp(name, "cyrillic") == 0) {
sprintf(keymap, "xkb_keymap {\
xkb_keycodes \"(unnamed)\" {\
minimum = 8;\
@@ -2932,8 +2932,1468 @@ xkb_symbols \"(unnamed)\" {\
",
comp_unichr, comp_shift_unichr);
return keymap;
+ } else if (strcmp(name, "arabic") == 0) {
+ sprintf(keymap, "xkb_keymap {\
+xkb_keycodes \"(unnamed)\" {\
+ minimum = 8;\
+ maximum = 255;\
+ <ESC> = 9;\
+ <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;\
+ <RTRN> = 36;\
+ <LCTL> = 37;\
+ <AC01> = 38;\
+ <AC02> = 39;\
+ <AC03> = 40;\
+ <AC04> = 41;\
+ <AC05> = 42;\
+ <AC06> = 43;\
+ <AC07> = 44;\
+ <AC08> = 45;\
+ <AC09> = 46;\
+ <AC10> = 47;\
+ <AC11> = 48;\
+ <TLDE> = 49;\
+ <LFSH> = 50;\
+ <BKSL> = 51;\
+ <AB01> = 52;\
+ <AB02> = 53;\
+ <AB03> = 54;\
+ <AB04> = 55;\
+ <AB05> = 56;\
+ <AB06> = 57;\
+ <AB07> = 58;\
+ <AB08> = 59;\
+ <AB09> = 60;\
+ <AB10> = 61;\
+ <RTSH> = 62;\
+ <KPMU> = 63;\
+ <LALT> = 64;\
+ <SPCE> = 65;\
+ <CAPS> = 66;\
+ <FK01> = 67;\
+ <FK02> = 68;\
+ <FK03> = 69;\
+ <FK04> = 70;\
+ <FK05> = 71;\
+ <FK06> = 72;\
+ <FK07> = 73;\
+ <FK08> = 74;\
+ <FK09> = 75;\
+ <FK10> = 76;\
+ <NMLK> = 77;\
+ <SCLK> = 78;\
+ <KP7> = 79;\
+ <KP8> = 80;\
+ <KP9> = 81;\
+ <KPSU> = 82;\
+ <KP4> = 83;\
+ <KP5> = 84;\
+ <KP6> = 85;\
+ <KPAD> = 86;\
+ <KP1> = 87;\
+ <KP2> = 88;\
+ <KP3> = 89;\
+ <KP0> = 90;\
+ <KPDL> = 91;\
+ <LVL3> = 92;\
+ <LSGT> = 94;\
+ <FK11> = 95;\
+ <FK12> = 96;\
+ <AB11> = 97;\
+ <KATA> = 98;\
+ <HIRA> = 99;\
+ <HENK> = 100;\
+ <HKTG> = 101;\
+ <MUHE> = 102;\
+ <JPCM> = 103;\
+ <KPEN> = 104;\
+ <RCTL> = 105;\
+ <KPDV> = 106;\
+ <PRSC> = 107;\
+ <RALT> = 108;\
+ <LNFD> = 109;\
+ <HOME> = 110;\
+ <UP> = 111;\
+ <PGUP> = 112;\
+ <LEFT> = 113;\
+ <RGHT> = 114;\
+ <END> = 115;\
+ <DOWN> = 116;\
+ <PGDN> = 117;\
+ <INS> = 118;\
+ <DELE> = 119;\
+ <I120> = 120;\
+ <MUTE> = 121;\
+ <VOL-> = 122;\
+ <VOL+> = 123;\
+ <POWR> = 124;\
+ <KPEQ> = 125;\
+ <I126> = 126;\
+ <PAUS> = 127;\
+ <I128> = 128;\
+ <I129> = 129;\
+ <HNGL> = 130;\
+ <HJCV> = 131;\
+ <AE13> = 132;\
+ <LWIN> = 133;\
+ <RWIN> = 134;\
+ <COMP> = 135;\
+ <STOP> = 136;\
+ <AGAI> = 137;\
+ <PROP> = 138;\
+ <UNDO> = 139;\
+ <FRNT> = 140;\
+ <COPY> = 141;\
+ <OPEN> = 142;\
+ <PAST> = 143;\
+ <FIND> = 144;\
+ <CUT> = 145;\
+ <HELP> = 146;\
+ <I147> = 147;\
+ <I148> = 148;\
+ <I149> = 149;\
+ <I150> = 150;\
+ <I151> = 151;\
+ <I152> = 152;\
+ <I153> = 153;\
+ <I154> = 154;\
+ <I155> = 155;\
+ <I156> = 156;\
+ <I157> = 157;\
+ <I158> = 158;\
+ <I159> = 159;\
+ <I160> = 160;\
+ <I161> = 161;\
+ <I162> = 162;\
+ <I163> = 163;\
+ <I164> = 164;\
+ <I165> = 165;\
+ <I166> = 166;\
+ <I167> = 167;\
+ <I168> = 168;\
+ <I169> = 169;\
+ <I170> = 170;\
+ <I171> = 171;\
+ <I172> = 172;\
+ <I173> = 173;\
+ <I174> = 174;\
+ <I175> = 175;\
+ <I176> = 176;\
+ <I177> = 177;\
+ <I178> = 178;\
+ <I179> = 179;\
+ <I180> = 180;\
+ <I181> = 181;\
+ <I182> = 182;\
+ <I183> = 183;\
+ <I184> = 184;\
+ <I185> = 185;\
+ <I186> = 186;\
+ <I187> = 187;\
+ <I188> = 188;\
+ <I189> = 189;\
+ <I190> = 190;\
+ <FK13> = 191;\
+ <FK14> = 192;\
+ <FK15> = 193;\
+ <FK16> = 194;\
+ <FK17> = 195;\
+ <FK18> = 196;\
+ <FK19> = 197;\
+ <FK20> = 198;\
+ <FK21> = 199;\
+ <FK22> = 200;\
+ <FK23> = 201;\
+ <FK24> = 202;\
+ <MDSW> = 203;\
+ <ALT> = 204;\
+ <META> = 205;\
+ <SUPR> = 206;\
+ <HYPR> = 207;\
+ <I208> = 208;\
+ <I209> = 209;\
+ <I210> = 210;\
+ <I211> = 211;\
+ <I212> = 212;\
+ <I213> = 213;\
+ <I214> = 214;\
+ <I215> = 215;\
+ <I216> = 216;\
+ <I217> = 217;\
+ <I218> = 218;\
+ <I219> = 219;\
+ <I220> = 220;\
+ <I221> = 221;\
+ <I222> = 222;\
+ <I223> = 223;\
+ <I224> = 224;\
+ <I225> = 225;\
+ <I226> = 226;\
+ <I227> = 227;\
+ <I228> = 228;\
+ <I229> = 229;\
+ <I230> = 230;\
+ <I231> = 231;\
+ <I232> = 232;\
+ <I233> = 233;\
+ <I234> = 234;\
+ <I235> = 235;\
+ <I236> = 236;\
+ <I237> = 237;\
+ <I238> = 238;\
+ <I239> = 239;\
+ <I240> = 240;\
+ <I241> = 241;\
+ <I242> = 242;\
+ <I243> = 243;\
+ <I244> = 244;\
+ <I245> = 245;\
+ <I246> = 246;\
+ <I247> = 247;\
+ <I248> = 248;\
+ <I249> = 249;\
+ <I250> = 250;\
+ <I251> = 251;\
+ <I252> = 252;\
+ <I253> = 253;\
+ <I254> = 254;\
+ <I255> = 255;\
+ 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\";\
+ indicator 12 = \"Shift Lock\";\
+ indicator 13 = \"Group 2\";\
+ indicator 14 = \"Mouse Keys\";\
+ alias <AC12> = <BKSL>;\
+ alias <MENU> = <COMP>;\
+ alias <HZTG> = <TLDE>;\
+ alias <LMTA> = <LWIN>;\
+ alias <RMTA> = <RWIN>;\
+ alias <ALGR> = <RALT>;\
+ alias <KPPT> = <I129>;\
+ 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_types \"(unnamed)\" {\
+ virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper;\
+\
+ type \"ONE_LEVEL\" {\
+ modifiers= none;\
+ 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\";\
+ };\
+ type \"SHIFT+ALT\" {\
+ modifiers= Shift+Alt;\
+ map[Shift+Alt]= Level2;\
+ level_name[Level1]= \"Base\";\
+ level_name[Level2]= \"Shift+Alt\";\
+ };\
+ type \"PC_SUPER_LEVEL2\" {\
+ modifiers= Mod4;\
+ map[Mod4]= Level2;\
+ level_name[Level1]= \"Base\";\
+ level_name[Level2]= \"Super\";\
+ };\
+ type \"PC_CONTROL_LEVEL2\" {\
+ modifiers= Control;\
+ map[Control]= Level2;\
+ level_name[Level1]= \"Base\";\
+ level_name[Level2]= \"Control\";\
+ };\
+ type \"PC_LCONTROL_LEVEL2\" {\
+ modifiers= LControl;\
+ map[LControl]= Level2;\
+ level_name[Level1]= \"Base\";\
+ level_name[Level2]= \"LControl\";\
+ };\
+ type \"PC_RCONTROL_LEVEL2\" {\
+ modifiers= RControl;\
+ map[RControl]= Level2;\
+ level_name[Level1]= \"Base\";\
+ level_name[Level2]= \"RControl\";\
+ };\
+ type \"PC_ALT_LEVEL2\" {\
+ modifiers= Alt;\
+ map[Alt]= Level2;\
+ level_name[Level1]= \"Base\";\
+ level_name[Level2]= \"Alt\";\
+ };\
+ type \"PC_LALT_LEVEL2\" {\
+ modifiers= LAlt;\
+ map[LAlt]= Level2;\
+ level_name[Level1]= \"Base\";\
+ level_name[Level2]= \"LAlt\";\
+ };\
+ type \"PC_RALT_LEVEL2\" {\
+ modifiers= RAlt;\
+ map[RAlt]= Level2;\
+ level_name[Level1]= \"Base\";\
+ level_name[Level2]= \"RAlt\";\
+ };\
+ type \"CTRL+ALT\" {\
+ modifiers= Shift+Control+Alt+LevelThree;\
+ map[Shift]= Level2;\
+ preserve[Shift]= Shift;\
+ map[LevelThree]= Level3;\
+ map[Shift+LevelThree]= Level4;\
+ preserve[Shift+LevelThree]= Shift;\
+ 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\";\
+ };\
+ type \"LOCAL_EIGHT_LEVEL\" {\
+ modifiers= Shift+Lock+Control+LevelThree;\
+ map[Shift]= Level2;\
+ map[Lock]= Level2;\
+ map[LevelThree]= Level3;\
+ map[Shift+Lock+LevelThree]= Level3;\
+ map[Shift+LevelThree]= Level4;\
+ map[Lock+LevelThree]= Level4;\
+ map[Control]= Level5;\
+ map[Shift+Lock+Control]= Level5;\
+ map[Shift+Control]= Level6;\
+ map[Lock+Control]= Level6;\
+ map[Control+LevelThree]= Level7;\
+ map[Shift+Lock+Control+LevelThree]= Level7;\
+ map[Shift+Control+LevelThree]= Level8;\
+ map[Lock+Control+LevelThree]= 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\";\
+ };\
+ type \"THREE_LEVEL\" {\
+ modifiers= Shift+LevelThree;\
+ map[Shift]= Level2;\
+ map[LevelThree]= Level3;\
+ map[Shift+LevelThree]= Level3;\
+ level_name[Level1]= \"Base\";\
+ level_name[Level2]= \"Shift\";\
+ level_name[Level3]= \"Level3\";\
+ };\
+ type \"EIGHT_LEVEL\" {\
+ modifiers= Shift+LevelThree+LevelFive;\
+ 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[Shift]= Level2;\
+ map[Lock]= Level2;\
+ map[LevelThree]= Level3;\
+ map[Shift+LevelThree]= Level4;\
+ map[Lock+LevelThree]= Level4;\
+ map[Shift+Lock+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[Shift+Lock+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\" {\
+ modifiers= Shift+Lock+NumLock+LevelThree+LevelFive;\
+ map[Shift]= Level2;\
+ map[LevelThree]= Level3;\
+ map[Shift+LevelThree]= Level4;\
+ map[LevelFive]= Level5;\
+ map[Shift+LevelFive]= Level6;\
+ preserve[Shift+LevelFive]= Shift;\
+ map[LevelThree+LevelFive]= Level7;\
+ map[Shift+LevelThree+LevelFive]= Level8;\
+ map[NumLock]= Level5;\
+ map[Shift+NumLock]= Level6;\
+ preserve[Shift+NumLock]= Shift;\
+ map[NumLock+LevelThree]= Level7;\
+ map[Shift+NumLock+LevelThree]= Level8;\
+ map[Shift+NumLock+LevelFive]= Level2;\
+ map[NumLock+LevelThree+LevelFive]= Level3;\
+ map[Shift+NumLock+LevelThree+LevelFive]= Level4;\
+ map[Shift+Lock]= Level2;\
+ map[Lock+LevelThree]= Level3;\
+ map[Shift+Lock+LevelThree]= Level4;\
+ map[Lock+LevelFive]= Level5;\
+ map[Shift+Lock+LevelFive]= Level6;\
+ preserve[Shift+Lock+LevelFive]= Shift;\
+ map[Lock+LevelThree+LevelFive]= Level7;\
+ map[Shift+Lock+LevelThree+LevelFive]= Level8;\
+ map[Lock+NumLock]= Level5;\
+ map[Shift+Lock+NumLock]= Level6;\
+ preserve[Shift+Lock+NumLock]= Shift;\
+ map[Lock+NumLock+LevelThree]= Level7;\
+ map[Shift+Lock+NumLock+LevelThree]= Level8;\
+ map[Shift+Lock+NumLock+LevelFive]= Level2;\
+ map[Lock+NumLock+LevelThree+LevelFive]= Level3;\
+ map[Shift+Lock+NumLock+LevelThree+LevelFive]= Level4;\
+ 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\" {\
+ modifiers= Shift+Lock+NumLock+LevelThree+LevelFive;\
+ map[Shift]= Level2;\
+ map[LevelThree]= Level3;\
+ map[Shift+LevelThree]= Level4;\
+ map[LevelFive]= Level5;\
+ map[Shift+LevelFive]= Level6;\
+ preserve[Shift+LevelFive]= Shift;\
+ map[LevelThree+LevelFive]= Level7;\
+ map[Shift+LevelThree+LevelFive]= Level8;\
+ map[NumLock]= Level5;\
+ map[Shift+NumLock]= Level6;\
+ preserve[Shift+NumLock]= Shift;\
+ map[NumLock+LevelThree]= Level7;\
+ map[Shift+NumLock+LevelThree]= Level8;\
+ map[Shift+NumLock+LevelFive]= Level2;\
+ map[NumLock+LevelThree+LevelFive]= Level3;\
+ map[Shift+NumLock+LevelThree+LevelFive]= Level4;\
+ map[Lock]= Level2;\
+ map[Lock+LevelThree]= Level3;\
+ map[Shift+Lock+LevelThree]= Level4;\
+ map[Lock+LevelFive]= Level5;\
+ map[Shift+Lock+LevelFive]= Level6;\
+ map[Lock+LevelThree+LevelFive]= Level7;\
+ map[Shift+Lock+LevelThree+LevelFive]= Level8;\
+ map[Lock+NumLock]= Level5;\
+ map[Shift+Lock+NumLock]= Level6;\
+ map[Lock+NumLock+LevelThree]= Level7;\
+ map[Shift+Lock+NumLock+LevelThree]= Level8;\
+ map[Lock+NumLock+LevelFive]= Level2;\
+ map[Lock+NumLock+LevelThree+LevelFive]= Level4;\
+ map[Shift+Lock+NumLock+LevelThree+LevelFive]= Level3;\
+ 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[Shift]= Level2;\
+ map[Lock]= Level2;\
+ map[LevelThree]= Level3;\
+ map[Shift+LevelThree]= Level4;\
+ map[Lock+LevelThree]= Level3;\
+ preserve[Lock+LevelThree]= Lock;\
+ map[Shift+Lock+LevelThree]= Level4;\
+ preserve[Shift+Lock+LevelThree]= Lock;\
+ map[LevelFive]= Level5;\
+ map[Shift+LevelFive]= Level6;\
+ map[Lock+LevelFive]= Level6;\
+ preserve[Lock+LevelFive]= Lock;\
+ map[Shift+Lock+LevelFive]= Level6;\
+ preserve[Shift+Lock+LevelFive]= Lock;\
+ map[LevelThree+LevelFive]= Level7;\
+ map[Shift+LevelThree+LevelFive]= Level8;\
+ map[Lock+LevelThree+LevelFive]= Level7;\
+ preserve[Lock+LevelThree+LevelFive]= Lock;\
+ map[Shift+Lock+LevelThree+LevelFive]= Level8;\
+ preserve[Shift+Lock+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\";\
+ };\
+ type \"FOUR_LEVEL\" {\
+ modifiers= Shift+LevelThree;\
+ 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[Shift]= Level2;\
+ map[Lock]= Level2;\
+ map[LevelThree]= Level3;\
+ map[Shift+LevelThree]= Level4;\
+ map[Lock+LevelThree]= Level4;\
+ map[Shift+Lock+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[Shift]= Level2;\
+ map[Lock]= Level2;\
+ map[LevelThree]= Level3;\
+ map[Shift+LevelThree]= Level4;\
+ map[Lock+LevelThree]= Level3;\
+ preserve[Lock+LevelThree]= Lock;\
+ map[Shift+Lock+LevelThree]= Level4;\
+ preserve[Shift+Lock+LevelThree]= Lock;\
+ level_name[Level1]= \"Base\";\
+ level_name[Level2]= \"Shift\";\
+ level_name[Level3]= \"Alt Base\";\
+ level_name[Level4]= \"Shift Alt\";\
+ };\
+ type \"FOUR_LEVEL_MIXED_KEYPAD\" {\
+ modifiers= Shift+NumLock+LevelThree;\
+ 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\";\
+ };\
+ type \"FOUR_LEVEL_X\" {\
+ modifiers= Shift+Control+Alt+LevelThree;\
+ 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\";\
+ };\
+ type \"SEPARATE_CAPS_AND_SHIFT_ALPHABETIC\" {\
+ modifiers= Shift+Lock+LevelThree;\
+ map[Shift]= Level2;\
+ map[Lock]= Level4;\
+ preserve[Lock]= Lock;\
+ map[LevelThree]= Level3;\
+ map[Shift+LevelThree]= Level4;\
+ map[Lock+LevelThree]= Level3;\
+ preserve[Lock+LevelThree]= Lock;\
+ map[Shift+Lock+LevelThree]= Level3;\
+ level_name[Level1]= \"Base\";\
+ level_name[Level2]= \"Shift\";\
+ level_name[Level3]= \"AltGr Base\";\
+ level_name[Level4]= \"Shift AltGr\";\
+ };\
+ type \"FOUR_LEVEL_PLUS_LOCK\" {\
+ modifiers= Shift+Lock+LevelThree;\
+ map[Shift]= Level2;\
+ map[LevelThree]= Level3;\
+ map[Shift+LevelThree]= Level4;\
+ map[Lock]= Level5;\
+ map[Shift+Lock]= Level2;\
+ map[Lock+LevelThree]= Level3;\
+ map[Shift+Lock+LevelThree]= Level4;\
+ level_name[Level1]= \"Base\";\
+ level_name[Level2]= \"Shift\";\
+ level_name[Level3]= \"Alt Base\";\
+ level_name[Level4]= \"Shift Alt\";\
+ level_name[Level5]= \"Lock\";\
+ };\
+ type \"KEYPAD\" {\
+ modifiers= Shift+NumLock;\
+ map[Shift]= Level2;\
+ map[NumLock]= Level2;\
+ level_name[Level1]= \"Base\";\
+ level_name[Level2]= \"Number\";\
+ };\
+ type \"FOUR_LEVEL_KEYPAD\" {\
+ modifiers= Shift+NumLock+LevelThree;\
+ map[Shift]= Level2;\
+ map[NumLock]= Level2;\
+ 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\";\
+ };\
+};\
+\
+xkb_compatibility \"(unnamed)\" {\
+ virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper;\
+\
+ interpret.useModMapMods= AnyLevel;\
+ interpret.repeat= False;\
+ interpret ISO_Level2_Latch+Exactly(Shift) {\
+ useModMapMods=level1;\
+ action= LatchMods(modifiers=Shift,clearLocks,latchToLock);\
+ };\
+ interpret Shift_Lock+AnyOf(Shift+Lock) {\
+ action= LockMods(modifiers=Shift);\
+ };\
+ interpret Num_Lock+AnyOf(all) {\
+ virtualModifier= NumLock;\
+ action= LockMods(modifiers=NumLock);\
+ };\
+ interpret ISO_Level3_Shift+AnyOf(all) {\
+ virtualModifier= LevelThree;\
+ useModMapMods=level1;\
+ action= SetMods(modifiers=LevelThree,clearLocks);\
+ };\
+ interpret ISO_Level3_Latch+AnyOf(all) {\
+ virtualModifier= LevelThree;\
+ useModMapMods=level1;\
+ action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock);\
+ };\
+ interpret ISO_Level3_Lock+AnyOf(all) {\
+ virtualModifier= LevelThree;\
+ useModMapMods=level1;\
+ action= LockMods(modifiers=LevelThree);\
+ };\
+ interpret Alt_L+AnyOf(all) {\
+ virtualModifier= Alt;\
+ action= SetMods(modifiers=modMapMods,clearLocks);\
+ };\
+ interpret Alt_R+AnyOf(all) {\
+ virtualModifier= Alt;\
+ action= SetMods(modifiers=modMapMods,clearLocks);\
+ };\
+ interpret Meta_L+AnyOf(all) {\
+ virtualModifier= Meta;\
+ action= SetMods(modifiers=modMapMods,clearLocks);\
+ };\
+ interpret Meta_R+AnyOf(all) {\
+ virtualModifier= Meta;\
+ action= SetMods(modifiers=modMapMods,clearLocks);\
+ };\
+ interpret Super_L+AnyOf(all) {\
+ virtualModifier= Super;\
+ action= SetMods(modifiers=modMapMods,clearLocks);\
+ };\
+ interpret Super_R+AnyOf(all) {\
+ virtualModifier= Super;\
+ action= SetMods(modifiers=modMapMods,clearLocks);\
+ };\
+ interpret Hyper_L+AnyOf(all) {\
+ virtualModifier= Hyper;\
+ action= SetMods(modifiers=modMapMods,clearLocks);\
+ };\
+ interpret Hyper_R+AnyOf(all) {\
+ virtualModifier= Hyper;\
+ action= SetMods(modifiers=modMapMods,clearLocks);\
+ };\
+ interpret Scroll_Lock+AnyOf(all) {\
+ virtualModifier= ScrollLock;\
+ action= LockMods(modifiers=modMapMods);\
+ };\
+ interpret ISO_Level5_Shift+AnyOf(all) {\
+ virtualModifier= LevelFive;\
+ useModMapMods=level1;\
+ action= SetMods(modifiers=LevelFive,clearLocks);\
+ };\
+ interpret ISO_Level5_Latch+AnyOf(all) {\
+ virtualModifier= LevelFive;\
+ useModMapMods=level1;\
+ action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);\
+ };\
+ interpret ISO_Level5_Lock+AnyOf(all) {\
+ virtualModifier= LevelFive;\
+ useModMapMods=level1;\
+ action= LockMods(modifiers=LevelFive);\
+ };\
+ interpret Mode_switch+AnyOfOrNone(all) {\
+ virtualModifier= AltGr;\
+ useModMapMods=level1;\
+ action= SetGroup(group=+1);\
+ };\
+ interpret ISO_Level3_Shift+AnyOfOrNone(all) {\
+ action= SetMods(modifiers=LevelThree,clearLocks);\
+ };\
+ interpret ISO_Level3_Latch+AnyOfOrNone(all) {\
+ action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock);\
+ };\
+ interpret ISO_Level3_Lock+AnyOfOrNone(all) {\
+ action= LockMods(modifiers=LevelThree);\
+ };\
+ interpret ISO_Group_Latch+AnyOfOrNone(all) {\
+ virtualModifier= AltGr;\
+ useModMapMods=level1;\
+ action= LatchGroup(group=2);\
+ };\
+ interpret ISO_Next_Group+AnyOfOrNone(all) {\
+ virtualModifier= AltGr;\
+ useModMapMods=level1;\
+ action= LockGroup(group=+1);\
+ };\
+ interpret ISO_Prev_Group+AnyOfOrNone(all) {\
+ virtualModifier= AltGr;\
+ useModMapMods=level1;\
+ action= LockGroup(group=-1);\
+ };\
+ interpret ISO_First_Group+AnyOfOrNone(all) {\
+ action= LockGroup(group=1);\
+ };\
+ interpret ISO_Last_Group+AnyOfOrNone(all) {\
+ action= LockGroup(group=2);\
+ };\
+ interpret KP_1+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= MovePtr(x=-1,y=+1);\
+ };\
+ interpret KP_End+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= MovePtr(x=-1,y=+1);\
+ };\
+ interpret KP_2+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= MovePtr(x=+0,y=+1);\
+ };\
+ interpret KP_Down+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= MovePtr(x=+0,y=+1);\
+ };\
+ interpret KP_3+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= MovePtr(x=+1,y=+1);\
+ };\
+ interpret KP_Next+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= MovePtr(x=+1,y=+1);\
+ };\
+ interpret KP_4+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= MovePtr(x=-1,y=+0);\
+ };\
+ interpret KP_Left+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= MovePtr(x=-1,y=+0);\
+ };\
+ interpret KP_6+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= MovePtr(x=+1,y=+0);\
+ };\
+ interpret KP_Right+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= MovePtr(x=+1,y=+0);\
+ };\
+ interpret KP_7+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= MovePtr(x=-1,y=-1);\
+ };\
+ interpret KP_Home+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= MovePtr(x=-1,y=-1);\
+ };\
+ interpret KP_8+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= MovePtr(x=+0,y=-1);\
+ };\
+ interpret KP_Up+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= MovePtr(x=+0,y=-1);\
+ };\
+ interpret KP_9+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= MovePtr(x=+1,y=-1);\
+ };\
+ interpret KP_Prior+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= MovePtr(x=+1,y=-1);\
+ };\
+ interpret KP_5+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= PtrBtn(button=default);\
+ };\
+ interpret KP_Begin+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= PtrBtn(button=default);\
+ };\
+ interpret KP_F2+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= SetPtrDflt(affect=button,button=1);\
+ };\
+ interpret KP_Divide+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= SetPtrDflt(affect=button,button=1);\
+ };\
+ interpret KP_F3+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= SetPtrDflt(affect=button,button=2);\
+ };\
+ interpret KP_Multiply+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= SetPtrDflt(affect=button,button=2);\
+ };\
+ interpret KP_F4+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= SetPtrDflt(affect=button,button=3);\
+ };\
+ interpret KP_Subtract+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= SetPtrDflt(affect=button,button=3);\
+ };\
+ interpret KP_Separator+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= PtrBtn(button=default,count=2);\
+ };\
+ interpret KP_Add+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= PtrBtn(button=default,count=2);\
+ };\
+ interpret KP_0+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= LockPtrBtn(button=default,affect=lock);\
+ };\
+ interpret KP_Insert+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= LockPtrBtn(button=default,affect=lock);\
+ };\
+ interpret KP_Decimal+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= LockPtrBtn(button=default,affect=unlock);\
+ };\
+ interpret KP_Delete+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= LockPtrBtn(button=default,affect=unlock);\
+ };\
+ interpret F25+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= SetPtrDflt(affect=button,button=1);\
+ };\
+ interpret F26+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= SetPtrDflt(affect=button,button=2);\
+ };\
+ interpret F27+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= MovePtr(x=-1,y=-1);\
+ };\
+ interpret F29+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= MovePtr(x=+1,y=-1);\
+ };\
+ interpret F31+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= PtrBtn(button=default);\
+ };\
+ interpret F33+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= MovePtr(x=-1,y=+1);\
+ };\
+ interpret F35+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= MovePtr(x=+1,y=+1);\
+ };\
+ interpret Pointer_Button_Dflt+AnyOfOrNone(all) {\
+ action= PtrBtn(button=default);\
+ };\
+ interpret Pointer_Button1+AnyOfOrNone(all) {\
+ action= PtrBtn(button=1);\
+ };\
+ interpret Pointer_Button2+AnyOfOrNone(all) {\
+ action= PtrBtn(button=2);\
+ };\
+ interpret Pointer_Button3+AnyOfOrNone(all) {\
+ action= PtrBtn(button=3);\
+ };\
+ interpret Pointer_DblClick_Dflt+AnyOfOrNone(all) {\
+ action= PtrBtn(button=default,count=2);\
+ };\
+ interpret Pointer_DblClick1+AnyOfOrNone(all) {\
+ action= PtrBtn(button=1,count=2);\
+ };\
+ interpret Pointer_DblClick2+AnyOfOrNone(all) {\
+ action= PtrBtn(button=2,count=2);\
+ };\
+ interpret Pointer_DblClick3+AnyOfOrNone(all) {\
+ action= PtrBtn(button=3,count=2);\
+ };\
+ interpret Pointer_Drag_Dflt+AnyOfOrNone(all) {\
+ action= LockPtrBtn(button=default);\
+ };\
+ interpret Pointer_Drag1+AnyOfOrNone(all) {\
+ action= LockPtrBtn(button=1);\
+ };\
+ interpret Pointer_Drag2+AnyOfOrNone(all) {\
+ action= LockPtrBtn(button=2);\
+ };\
+ interpret Pointer_Drag3+AnyOfOrNone(all) {\
+ action= LockPtrBtn(button=3);\
+ };\
+ interpret Pointer_EnableKeys+AnyOfOrNone(all) {\
+ action= LockControls(controls=MouseKeys);\
+ };\
+ interpret Pointer_Accelerate+AnyOfOrNone(all) {\
+ action= LockControls(controls=MouseKeysAccel);\
+ };\
+ interpret Pointer_DfltBtnNext+AnyOfOrNone(all) {\
+ action= SetPtrDflt(affect=button,button=+1);\
+ };\
+ interpret Pointer_DfltBtnPrev+AnyOfOrNone(all) {\
+ action= SetPtrDflt(affect=button,button=-1);\
+ };\
+ interpret AccessX_Enable+AnyOfOrNone(all) {\
+ action= LockControls(controls=AccessXKeys);\
+ };\
+ interpret AccessX_Feedback_Enable+AnyOfOrNone(all) {\
+ action= LockControls(controls=AccessXFeedback);\
+ };\
+ interpret RepeatKeys_Enable+AnyOfOrNone(all) {\
+ action= LockControls(controls=RepeatKeys);\
+ };\
+ interpret SlowKeys_Enable+AnyOfOrNone(all) {\
+ action= LockControls(controls=SlowKeys);\
+ };\
+ interpret BounceKeys_Enable+AnyOfOrNone(all) {\
+ action= LockControls(controls=BounceKeys);\
+ };\
+ interpret StickyKeys_Enable+AnyOfOrNone(all) {\
+ action= LockControls(controls=StickyKeys);\
+ };\
+ interpret MouseKeys_Enable+AnyOfOrNone(all) {\
+ action= LockControls(controls=MouseKeys);\
+ };\
+ interpret MouseKeys_Accel_Enable+AnyOfOrNone(all) {\
+ action= LockControls(controls=MouseKeysAccel);\
+ };\
+ interpret Overlay1_Enable+AnyOfOrNone(all) {\
+ action= LockControls(controls=none);\
+ };\
+ interpret Overlay2_Enable+AnyOfOrNone(all) {\
+ action= LockControls(controls=none);\
+ };\
+ interpret AudibleBell_Enable+AnyOfOrNone(all) {\
+ action= LockControls(controls=AudibleBell);\
+ };\
+ interpret Terminate_Server+AnyOfOrNone(all) {\
+ action= Terminate();\
+ };\
+ interpret Alt_L+AnyOfOrNone(all) {\
+ action= SetMods(modifiers=Alt,clearLocks);\
+ };\
+ interpret Alt_R+AnyOfOrNone(all) {\
+ action= SetMods(modifiers=Alt,clearLocks);\
+ };\
+ interpret Meta_L+AnyOfOrNone(all) {\
+ action= SetMods(modifiers=Meta,clearLocks);\
+ };\
+ interpret Meta_R+AnyOfOrNone(all) {\
+ action= SetMods(modifiers=Meta,clearLocks);\
+ };\
+ interpret Super_L+AnyOfOrNone(all) {\
+ action= SetMods(modifiers=Super,clearLocks);\
+ };\
+ interpret Super_R+AnyOfOrNone(all) {\
+ action= SetMods(modifiers=Super,clearLocks);\
+ };\
+ interpret Hyper_L+AnyOfOrNone(all) {\
+ action= SetMods(modifiers=Hyper,clearLocks);\
+ };\
+ interpret Hyper_R+AnyOfOrNone(all) {\
+ action= SetMods(modifiers=Hyper,clearLocks);\
+ };\
+ interpret Shift_L+AnyOfOrNone(all) {\
+ action= SetMods(modifiers=Shift,clearLocks);\
+ };\
+ interpret XF86Switch_VT_1+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= SwitchScreen(screen=1,!same);\
+ };\
+ interpret XF86Switch_VT_2+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= SwitchScreen(screen=2,!same);\
+ };\
+ interpret XF86Switch_VT_3+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= SwitchScreen(screen=3,!same);\
+ };\
+ interpret XF86Switch_VT_4+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= SwitchScreen(screen=4,!same);\
+ };\
+ interpret XF86Switch_VT_5+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= SwitchScreen(screen=5,!same);\
+ };\
+ interpret XF86Switch_VT_6+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= SwitchScreen(screen=6,!same);\
+ };\
+ interpret XF86Switch_VT_7+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= SwitchScreen(screen=7,!same);\
+ };\
+ interpret XF86Switch_VT_8+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= SwitchScreen(screen=8,!same);\
+ };\
+ interpret XF86Switch_VT_9+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= SwitchScreen(screen=9,!same);\
+ };\
+ interpret XF86Switch_VT_10+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= SwitchScreen(screen=10,!same);\
+ };\
+ interpret XF86Switch_VT_11+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= SwitchScreen(screen=11,!same);\
+ };\
+ interpret XF86Switch_VT_12+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= SwitchScreen(screen=12,!same);\
+ };\
+ interpret XF86LogGrabInfo+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x47,data[3]=0x72,data[4]=0x62,data[5]=0x73,data[6]=0x00);\
+ };\
+ interpret XF86LogWindowTree+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x57,data[3]=0x69,data[4]=0x6e,data[5]=0x73,data[6]=0x00);\
+ };\
+ interpret XF86Next_VMode+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= Private(type=0x86,data[0]=0x2b,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00);\
+ };\
+ interpret XF86Prev_VMode+AnyOfOrNone(all) {\
+ repeat= True;\
+ action= Private(type=0x86,data[0]=0x2d,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00);\
+ };\
+ interpret ISO_Level5_Shift+AnyOfOrNone(all) {\
+ action= SetMods(modifiers=LevelFive,clearLocks);\
+ };\
+ interpret ISO_Level5_Latch+AnyOfOrNone(all) {\
+ action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);\
+ };\
+ interpret ISO_Level5_Lock+AnyOfOrNone(all) {\
+ action= LockMods(modifiers=LevelFive);\
+ };\
+ interpret Caps_Lock+AnyOfOrNone(all) {\
+ action= LockMods(modifiers=Lock);\
+ };\
+ interpret Any+Exactly(Lock) {\
+ action= LockMods(modifiers=Lock);\
+ };\
+ interpret Any+AnyOf(all) {\
+ action= SetMods(modifiers=modMapMods,clearLocks);\
+ };\
+ indicator \"Caps Lock\" {\
+ whichModState= locked;\
+ modifiers= Lock;\
+ };\
+ indicator \"Num Lock\" {\
+ whichModState= locked;\
+ modifiers= NumLock;\
+ };\
+ indicator \"Scroll Lock\" {\
+ whichModState= locked;\
+ modifiers= ScrollLock;\
+ };\
+ indicator \"Shift Lock\" {\
+ whichModState= locked;\
+ modifiers= Shift;\
+ };\
+ indicator \"Group 2\" {\
+ groups= 0xfe;\
+ };\
+ indicator \"Mouse Keys\" {\
+ controls= MouseKeys;\
+ };\
+};\
+\
+xkb_symbols \"(unnamed)\" {\
+ name[group1]=\"wvkbd arabic\";\
+ key <ESC> { [ Escape ] };\
+ key <TLDE> { [ Arabic_thal, Arabic_shadda, Arabic_percent, U0609 ]};\
+ key <AE01> { [ Arabic_1, exclam, 1, NoSymbol ]};\
+ key <AE02> { [ Arabic_2, at, 2, NoSymbol ]};\
+ key <AE03> { [ Arabic_3, numbersign, 3, NoSymbol ]};\
+ key <AE04> { [ Arabic_4, dollar, 4, NoSymbol ]};\
+ key <AE05> { [ Arabic_5, percent, 5, U2030 ]};\
+ key <AE06> { [ Arabic_6, asciicircum, 6, NoSymbol ]};\
+ key <AE07> { [ Arabic_7, ampersand, 7, NoSymbol ]};\
+ key <AE08> { [ Arabic_8, asterisk, 8, NoSymbol ]};\
+ key <AE09> { [ Arabic_9, parenright, 9, NoSymbol ]};\
+ key <AE10> { [ Arabic_0, parenleft, 0, NoSymbol ]};\
+ key <AE11> { [ minus, underscore, endash, U2011 ]};\
+ key <AE12> { [ equal, plus, notequal, U2248 ]};\
+ key <BKSP> { [ BackSpace, BackSpace ] };\
+ key <TAB> { [ Tab, ISO_Left_Tab ] };\
+ key <AD01> { [ Arabic_dad, Arabic_fatha, NoSymbol, U2066 ]};\
+ key <AD02> { [ Arabic_sad, Arabic_fathatan, NoSymbol, U2067 ]};\
+ key <AD03> { [ Arabic_theh, Arabic_damma, NoSymbol, U2068 ]};\
+ key <AD04> { [ Arabic_qaf, Arabic_dammatan, NoSymbol, U2069 ]};\
+ key <AD05> { [ Arabic_feh, UFEF9, Arabic_veh, NoSymbol ]};\
+ key <AD06> { [ Arabic_ghain, Arabic_hamzaunderalef, NoSymbol, U202A ]};\
+ key <AD07> { [ Arabic_ain, grave, NoSymbol, U202B ]};\
+ key <AD08> { [ Arabic_ha, division, NoSymbol, U202C ]};\
+ key <AD09> { [ Arabic_khah, multiply, NoSymbol, NoSymbol ]};\
+ key <AD10> { [ Arabic_hah, Arabic_semicolon, NoSymbol, U200E ]};\
+ key <AD11> { [ Arabic_jeem, less, Arabic_tcheh, U200F ]};\
+ key <AD12> { [ Arabic_dal, greater, NoSymbol, U061C ]};\
+ key <RTRN> { [ Return ] };\
+ key <LCTL> { [ Control_L ] };\
+ key <AC01> { [ Arabic_sheen, Arabic_kasra, NoSymbol, NoSymbol ]};\
+ key <AC02> { [ Arabic_seen, Arabic_kasratan, NoSymbol, NoSymbol ]};\
+ key <AC03> { [ Arabic_yeh, bracketright, NoSymbol, NoSymbol ]};\
+ key <AC04> { [ Arabic_beh, bracketleft, Arabic_peh, NoSymbol ]};\
+ key <AC05> { [ Arabic_lam, U0FEF7, NoSymbol, NoSymbol ]};\
+ key <AC06> { [ Arabic_alef, Arabic_hamzaonalef, U0671, NoSymbol ]};\
+ key <AC07> { [ Arabic_teh, Arabic_tatweel, NoSymbol, NoSymbol ]};\
+ key <AC08> { [ Arabic_noon, Arabic_comma, U066B, NoSymbol ]};\
+ key <AC09> { [ Arabic_meem, slash, NoSymbol, NoSymbol ]};\
+ key <AC10> { [ Arabic_kaf, colon, Arabic_gaf, NoSymbol ]};\
+ key <AC11> { [ Arabic_tah, quotedbl, U27E9, U200D ]};\
+ key <LFSH> { [ Shift_L ] };\
+ key <AB01> { [ Arabic_thal, asciitilde, guillemotright, U203A ]};\
+ key <AB02> { [ Arabic_hamza, Arabic_sukun, guillemotleft, U2039 ]};\
+ key <AB03> { [Arabic_hamzaonwaw, braceright, NoSymbol, NoSymbol ]};\
+ key <AB04> { [ Arabic_ra, braceleft, NoSymbol, NoSymbol ]};\
+ key <AB05> { [ UFEFB, UFEF5, NoSymbol, NoSymbol ]};\
+ key <AB06> { [Arabic_tehmarbuta, apostrophe, NoSymbol, NoSymbol ]};\
+ key <AB07> { [ Arabic_waw, comma, U066C, NoSymbol ]};\
+ key <AB08> { [ Arabic_zah, Arabic_question_mark, U066D, U200C ]};\
+ key <AB09> { [ Arabic_zain, period, Arabic_jeh, NoSymbol ]};\
+ key <I147> { [ exclamdown, questiondown, exclamdown ] };\
+ key <RTSH> { [ Shift_R ] };\
+ key <KPMU> {\
+ type= \"CTRL+ALT\",\
+ symbols[Group1]= [ KP_Multiply, KP_Multiply, KP_Multiply, KP_Multiply, XF86ClearGrab ]\
+ };\
+ key <LALT> { [ Alt_L, Meta_L ] };\
+ key <SPCE> { [ space ] };\
+ key <CAPS> { [ Caps_Lock ] };\
+ key <FK01> {\
+ type= \"CTRL+ALT\",\
+ symbols[Group1]= [ F1, F1, F1, F1, XF86Switch_VT_1 ]\
+ };\
+ key <FK02> {\
+ type= \"CTRL+ALT\",\
+ symbols[Group1]= [ F2, F2, F2, F2, XF86Switch_VT_2 ]\
+ };\
+ key <FK03> {\
+ type= \"CTRL+ALT\",\
+ symbols[Group1]= [ F3, F3, F3, F3, XF86Switch_VT_3 ]\
+ };\
+ key <FK04> {\
+ type= \"CTRL+ALT\",\
+ symbols[Group1]= [ F4, F4, F4, F4, XF86Switch_VT_4 ]\
+ };\
+ key <FK05> {\
+ type= \"CTRL+ALT\",\
+ symbols[Group1]= [ F5, F5, F5, F5, XF86Switch_VT_5 ]\
+ };\
+ key <FK06> {\
+ type= \"CTRL+ALT\",\
+ symbols[Group1]= [ F6, F6, F6, F6, XF86Switch_VT_6 ]\
+ };\
+ key <FK07> {\
+ type= \"CTRL+ALT\",\
+ symbols[Group1]= [ F7, F7, F7, F7, XF86Switch_VT_7 ]\
+ };\
+ key <FK08> {\
+ type= \"CTRL+ALT\",\
+ symbols[Group1]= [ F8, F8, F8, F8, XF86Switch_VT_8 ]\
+ };\
+ key <FK09> {\
+ type= \"CTRL+ALT\",\
+ symbols[Group1]= [ F9, F9, F9, F9, XF86Switch_VT_9 ]\
+ };\
+ key <FK10> {\
+ type= \"CTRL+ALT\",\
+ symbols[Group1]= [ F10, F10, F10, F10, XF86Switch_VT_10 ]\
+ };\
+ key <NMLK> { [ Num_Lock ] };\
+ key <SCLK> { [ Scroll_Lock ] };\
+ key <KP7> { [ KP_Home, KP_7 ] };\
+ key <KP8> { [ KP_Up, KP_8 ] };\
+ key <KP9> { [ KP_Prior, KP_9 ] };\
+ key <KPSU> {\
+ type= \"CTRL+ALT\",\
+ symbols[Group1]= [ KP_Subtract, KP_Subtract, KP_Subtract, KP_Subtract, XF86Prev_VMode ]\
+ };\
+ key <KP4> { [ KP_Left, KP_4 ] };\
+ key <KP5> { [ KP_Begin, KP_5 ] };\
+ key <KP6> { [ KP_Right, KP_6 ] };\
+ key <KPAD> {\
+ type= \"CTRL+ALT\",\
+ symbols[Group1]= [ KP_Add, KP_Add, KP_Add, KP_Add, XF86Next_VMode ]\
+ };\
+ key <KP1> { [ KP_End, KP_1 ] };\
+ key <KP2> { [ KP_Down, KP_2 ] };\
+ key <KP3> { [ KP_Next, KP_3 ] };\
+ key <KP0> { [ KP_Insert, KP_0 ] };\
+ key <KPDL> { [ KP_Delete, KP_Decimal ] };\
+ key <LVL3> { [ ISO_Level3_Shift ] };\
+ key <LSGT> { [ less, greater, bar, brokenbar ] };\
+ key <FK11> {\
+ type= \"CTRL+ALT\",\
+ symbols[Group1]= [ F11, F11, F11, F11, XF86Switch_VT_11 ]\
+ };\
+ key <FK12> {\
+ type= \"CTRL+ALT\",\
+ symbols[Group1]= [ F12, F12, F12, F12, XF86Switch_VT_12 ]\
+ };\
+ key <KATA> { [ Katakana ] };\
+ key <HIRA> { [ Hiragana ] };\
+ key <HENK> { [ Henkan_Mode ] };\
+ key <HKTG> { [ Hiragana_Katakana ] };\
+ key <MUHE> { [ Muhenkan ] };\
+ key <KPEN> { [ KP_Enter ] };\
+ key <RCTL> { [ Control_R ] };\
+ key <KPDV> {\
+ type= \"CTRL+ALT\",\
+ symbols[Group1]= [ KP_Divide, KP_Divide, KP_Divide, KP_Divide, XF86Ungrab ]\
+ };\
+ key <PRSC> {\
+ type= \"PC_ALT_LEVEL2\",\
+ symbols[Group1]= [ Print, Sys_Req ]\
+ };\
+ key <RALT> {\
+ type= \"TWO_LEVEL\",\
+ symbols[Group1]= [ Alt_R, Meta_R ]\
+ };\
+ key <LNFD> { [ Linefeed ] };\
+ key <HOME> { [ Home ] };\
+ key <UP> { [ Up ] };\
+ key <PGUP> { [ Prior ] };\
+ key <LEFT> { [ Left ] };\
+ key <RGHT> { [ Right ] };\
+ key <END> { [ End ] };\
+ key <DOWN> { [ Down ] };\
+ key <PGDN> { [ Next ] };\
+ key <INS> { [ Insert ] };\
+ key <DELE> { [ Delete ] };\
+ key <MUTE> { [ XF86AudioMute ] };\
+ key <VOL-> { [ XF86AudioLowerVolume ] };\
+ key <VOL+> { [ XF86AudioRaiseVolume ] };\
+ key <POWR> { [ XF86PowerOff ] };\
+ key <KPEQ> { [ KP_Equal ] };\
+ key <I126> { [ plusminus ] };\
+ key <PAUS> {\
+ type= \"PC_CONTROL_LEVEL2\",\
+ symbols[Group1]= [ Pause, Break ]\
+ };\
+ key <I128> { [ XF86LaunchA ] };\
+ key <I129> { [ KP_Decimal, KP_Decimal ] };\
+ key <HNGL> { [ Hangul ] };\
+ key <HJCV> { [ Hangul_Hanja ] };\
+ key <LWIN> { [ Super_L ] };\
+ key <RWIN> { [ Super_R ] };\
+ key <COMP> { [ U%08X, U%08X ] };\
+ key <STOP> { [ Cancel ] };\
+ key <AGAI> { [ Redo ] };\
+ key <PROP> { [ SunProps ] };\
+ key <UNDO> { [ Undo ] };\
+ key <FRNT> { [ SunFront ] };\
+ key <COPY> { [ XF86Copy ] };\
+ key <OPEN> { [ XF86Open ] };\
+ key <PAST> { [ XF86Paste ] };\
+ key <FIND> { [ Find ] };\
+ key <CUT> { [ XF86Cut ] };\
+ key <HELP> { [ Help ] };\
+ key <I147> { [ XF86MenuKB ] };\
+ key <I148> { [ XF86Calculator ] };\
+ key <I150> { [ XF86Sleep ] };\
+ key <I151> { [ XF86WakeUp ] };\
+ key <I152> { [ XF86Explorer ] };\
+ key <I153> { [ XF86Send ] };\
+ key <I155> { [ XF86Xfer ] };\
+ key <I156> { [ XF86Launch1 ] };\
+ key <I157> { [ XF86Launch2 ] };\
+ key <I158> { [ XF86WWW ] };\
+ key <I159> { [ XF86DOS ] };\
+ key <I160> { [ XF86ScreenSaver ] };\
+ key <I161> { [ XF86RotateWindows ] };\
+ key <I162> { [ XF86TaskPane ] };\
+ key <I163> { [ XF86Mail ] };\
+ key <I164> { [ XF86Favorites ] };\
+ key <I165> { [ XF86MyComputer ] };\
+ key <I166> { [ XF86Back ] };\
+ key <I167> { [ XF86Forward ] };\
+ 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 <I179> { [ XF86Tools ] };\
+ key <I180> { [ XF86HomePage ] };\
+ key <I181> { [ XF86Reload ] };\
+ key <I182> { [ XF86Close ] };\
+ key <I185> { [ XF86ScrollUp ] };\
+ key <I186> { [ XF86ScrollDown ] };\
+ key <I187> { [ parenleft ] };\
+ key <I188> { [ parenright ] };\
+ key <I189> { [ XF86New ] };\
+ key <I190> { [ Redo ] };\
+ key <FK13> { [ XF86Tools ] };\
+ key <FK14> { [ XF86Launch5 ] };\
+ key <FK15> { [ XF86Launch6 ] };\
+ key <FK16> { [ XF86Launch7 ] };\
+ key <FK17> { [ XF86Launch8 ] };\
+ key <FK18> { [ XF86Launch9 ] };\
+ key <FK20> { [ XF86AudioMicMute ] };\
+ key <FK21> { [ XF86TouchpadToggle ] };\
+ key <FK22> { [ XF86TouchpadOn ] };\
+ key <FK23> { [ XF86TouchpadOff ] };\
+ key <MDSW> { [ Mode_switch ] };\
+ key <ALT> { [ NoSymbol, Alt_L ] };\
+ key <META> { [ NoSymbol, Meta_L ] };\
+ key <SUPR> { [ NoSymbol, Super_L ] };\
+ key <HYPR> { [ NoSymbol, Hyper_L ] };\
+ 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 <I218> { [ Print ] };\
+ key <I220> { [ XF86WebCam ] };\
+ key <I221> { [ XF86AudioPreset ] };\
+ key <I223> { [ XF86Mail ] };\
+ key <I224> { [ XF86Messenger ] };\
+ key <I225> { [ XF86Search ] };\
+ key <I226> { [ XF86Go ] };\
+ key <I227> { [ XF86Finance ] };\
+ key <I228> { [ XF86Game ] };\
+ key <I229> { [ XF86Shop ] };\
+ key <I231> { [ Cancel ] };\
+ key <I232> { [ XF86MonBrightnessDown ] };\
+ key <I233> { [ XF86MonBrightnessUp ] };\
+ key <I234> { [ XF86AudioMedia ] };\
+ key <I235> { [ XF86Display ] };\
+ key <I236> { [ XF86KbdLightOnOff ] };\
+ key <I237> { [ XF86KbdBrightnessDown ] };\
+ key <I238> { [ XF86KbdBrightnessUp ] };\
+ 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 <I247> { [ XF86UWB ] };\
+ key <I254> { [ XF86WWAN ] };\
+ key <I255> { [ XF86RFKill ] };\
+ modifier_map Shift { <LFSH>, <RTSH> };\
+ modifier_map Lock { <CAPS> };\
+ modifier_map Control { <LCTL>, <RCTL> };\
+ modifier_map Mod1 { <LALT>, <RALT>, <META> };\
+ modifier_map Mod2 { <NMLK> };\
+ modifier_map Mod4 { <LWIN>, <RWIN>, <SUPR>, <HYPR> };\
+ modifier_map Mod5 { <LVL3>, <MDSW> };\
+};\
+};", comp_unichr, comp_shift_unichr);
+ return keymap;
} else {
- fprintf(stderr, "No such keymap: %s", name);
+ fprintf(stderr, "No such keymap: '%s'", name);
exit(2);
}
}
diff --git a/layout.mobintl.h b/layout.mobintl.h
@@ -15,6 +15,7 @@ enum layout_id {
Special,
Simple,
Cyrillic,
+ Arabic,
ComposeA,
ComposeE,
ComposeY,
@@ -63,6 +64,7 @@ static enum layout_id layers[] = {
Special,
Simple,
Cyrillic,
+ Arabic,
NumLayouts //signals the last item, may not be omitted
};
@@ -75,6 +77,7 @@ static const char *fc_font_pattern =
static struct key keys_full[], keys_special[], keys_simple[], keys_cyrillic[],
+ keys_arabic[],
keys_compose_a[], keys_compose_e[], keys_compose_y[], keys_compose_u[],
keys_compose_i[], keys_compose_o[], keys_compose_q[], keys_compose_w[],
keys_compose_r[], keys_compose_t[], keys_compose_p[], keys_compose_s[],
@@ -93,6 +96,7 @@ static struct layout layouts[NumLayouts] = {
[Special] = {keys_special, "latin", "special"},
[Simple] = {keys_simple, "latin", "simple"},
[Cyrillic] = {keys_cyrillic, "cyrillic", "cyrillic"},
+ [Arabic] = {keys_arabic, "arabic", "arabic"},
[ComposeA] = {keys_compose_a, "latin"},
[ComposeE] = {keys_compose_e, "latin"},
[ComposeY] = {keys_compose_y, "latin"},
@@ -436,6 +440,69 @@ static struct key keys_cyrillic[] = {
{"", "", 0.0, Last},
};
+static struct key keys_arabic[] = {
+ {"١", "!", 1.0, Code, KEY_1},
+ {"٢", "@", 1.0, Code, KEY_2},
+ {"٣", "#", 1.0, Code, KEY_3},
+ {"٤", ";", 1.0, Code, KEY_4},
+ {"٥", "%", 1.0, Code, KEY_5},
+ {"٦", ":", 1.0, Code, KEY_6},
+ {"٧", "&", 1.0, Code, KEY_7},
+ {"٨", "*", 1.0, Code, KEY_8},
+ {"٩", "(", 1.0, Code, KEY_9},
+ {"٠", ")", 1.0, Code, KEY_0},
+ {"", "", 0.0, EndRow},
+
+ {"ض", "ـَ", 1.0, Code, KEY_Q},
+ {"ص", "ـً", 1.0, Code, KEY_W},
+ {"ث", "ـُ", 1.0, Code, KEY_E},
+ {"ق", "ـٌ", 1.0, Code, KEY_R},
+ {"ف", "ﻹ", 1.0, Code, KEY_T},
+ {"غ", "إ", 1.0, Code, KEY_Y},
+ {"ع", "`", 1.0, Code, KEY_U},
+ {"ه", "", 1.0, Code, KEY_I},
+ {"ج", ";", 1.0, Code, KEY_O},
+ {"ح", "", 1.0, Code, KEY_P},
+ {"خ", "<", 1.0, Code, KEY_LEFTBRACE},
+ {"", "", 0.0, EndRow},
+
+ {"ش", "ـِ", 0.0, Code, KEY_A},
+ {"س", "ـٍ", 1.0, Code, KEY_S},
+ {"ي", "]", 1.0, Code, KEY_D},
+ {"ب", "[", 1.0, Code, KEY_F},
+ {"ل", "ﻷ", 1.0, Code, KEY_G},
+ {"ا", "أ", 1.0, Code, KEY_H},
+ {"ت", "ـ", 1.0, Code, KEY_J},
+ {"ن", "،", 1.0, Code, KEY_K},
+ {"م", "/", 1.0, Code, KEY_L},
+ {"ك", ":", 1.0, Code, KEY_SEMICOLON},
+ {"ط", "\"", 1.0, Code, KEY_APOSTROPHE},
+ {"", "", 0.0, EndRow},
+
+ {"ذ", "~", 1.0, Code, KEY_Z},
+ {"ء", "ـْ", 1.0, Code, KEY_X},
+ {"ؤ", "}", 1.0, Code, KEY_C},
+ {"ر", "{", 1.0, Code, KEY_V},
+ {"ى", "ﻵ", 1.0, Code, KEY_B},
+ {"ة", "'", 1.0, Code, KEY_N},
+ {"و", ",", 1.0, Code, KEY_M},
+ {"ز", "؟", 1.0, Code, KEY_COMMA},
+ {"ظ", ".", 1.0, Code, KEY_DOT},
+ {"د", ">", 1.0, Code, KEY_RIGHTBRACE},
+ {"⌫", "⌫", 1.0, Code, KEY_BACKSPACE, .scheme = 1},
+
+ {"", "", 0.0, EndRow},
+
+ {"Abc", "Abc", 1.0, NextLayer, .scheme = 1},
+ {"⇧", "⇧", 1.0, Mod, Shift, .scheme = 1},
+ {"Cmp", "Cmp", 1.0, Compose, .scheme = 1},
+ {"", "", 5.0, Code, KEY_SPACE},
+ {"Enter", "Enter", 2.0, Code, KEY_ENTER, .scheme = 1},
+
+ /* end of layout */
+ {"", "", 0.0, Last},
+};
+
static struct key keys_compose_a[] = {
{"à", "À", 1.0, Copy, 0x00E0, 0, 0x00C0},
{"á", "Á", 1.0, Copy, 0x00E1, 0, 0x00C1},