xkb_keymap { xkb_keycodes "xfree86" { minimum = 8; maximum = 255; = 9; = 10; = 11; = 12; = 13; = 14; = 15; = 16; = 17; = 18; = 19; = 20; = 21; = 22; = 23; = 24; = 25; = 26; = 27; = 28; = 29; = 30; = 31; = 32; = 33; = 34; = 35; = 36; = 37; = 38; = 39; = 40; = 41; = 42; = 43; = 44; = 45; = 46; = 47; = 48; = 49; = 50; = 51; = 52; = 53; = 54; = 55; = 56; = 57; = 58; = 59; = 60; = 61; = 62; = 63; = 64; = 65; = 66; = 67; = 68; = 69; = 70; = 71; = 72; = 73; = 74; = 75; = 76; = 77; = 78; = 79; = 80; = 81; = 82; = 83; = 84; = 85; = 86; = 87; = 88; = 89; = 90; = 91; = 92; = 94; = 95; = 96; = 97; = 98; = 99; = 100; = 102; = 103; = 104; = 105; = 106; = 107; = 108; = 109; = 110; = 111; = 112; = 113; = 114; = 115; = 116; = 117; = 118; = 119; = 120; = 121; = 122; = 123; = 129; = 130; = 131; = 132; = 133; = 134; = 135; = 136; = 137; = 138; = 139; = 140; = 141; = 142; = 143; = 144; = 145; = 146; = 147; = 148; = 149; = 150; = 151; = 152; = 153; = 154; = 155; = 158; = 159; = 160; = 161; = 162; = 163; = 164; = 165; = 166; = 167; = 168; = 169; = 171; = 172; = 173; = 174; = 175; = 176; = 177; = 178; = 179; = 180; = 185; = 186; = 187; = 188; = 194; = 195; = 196; = 197; = 202; = 212; = 213; = 214; = 215; = 216; = 217; = 218; = 222; = 223; = 224; = 225; = 226; = 227; = 228; = 229; = 230; = 231; = 232; = 233; = 234; = 235; = 236; = 237; = 238; = 239; = 240; = 241; = 242; = 243; = 244; = 245; = 246; = 247; = 248; = 249; = 250; = 251; = 252; = 253; = 254; = 255; indicator 1 = "Caps Lock"; indicator 2 = "Num Lock"; indicator 3 = "Scroll Lock"; virtual indicator 4 = "Shift Lock"; virtual indicator 5 = "Group 2"; virtual indicator 6 = "Mouse Keys"; alias = ; alias = ; alias = ; alias = ; alias = ; }; xkb_types "complete" { virtual_modifiers NumLock,Alt,LevelThree,AltGr,ScrollLock; 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; map[Shift]= Level2; level_name[Level1]= "Base"; level_name[Level2]= "Caps"; }; type "KEYPAD" { modifiers= Shift+NumLock; map[Shift]= Level2; map[NumLock]= Level2; level_name[Level1]= "Base"; level_name[Level2]= "Number"; }; type "SHIFT+ALT" { modifiers= Shift+Alt; map[Shift+Alt]= Level2; level_name[Level1]= "Base"; level_name[Level2]= "Shift+Alt"; }; type "PC_BREAK" { modifiers= Control; map[Control]= Level2; level_name[Level1]= "Base"; level_name[Level2]= "Control"; }; type "PC_SYSRQ" { modifiers= Alt; map[Alt]= Level2; level_name[Level1]= "Base"; level_name[Level2]= "Alt"; }; type "CTRL+ALT" { modifiers= Control+Alt; map[Control+Alt]= Level2; level_name[Level1]= "Base"; level_name[Level2]= "Ctrl+Alt"; }; 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 "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_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 "complete" { virtual_modifiers NumLock,Alt,LevelThree,AltGr,ScrollLock; interpret.useModMapMods= AnyLevel; interpret.repeat= False; interpret.locking= 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_Lock+AnyOf(all) { action= ISOLock(modifiers=modMapMods,affect=all); }; 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 Alt_L+AnyOf(all) { virtualModifier= Alt; action= SetMods(modifiers=modMapMods,clearLocks); }; interpret Alt_R+AnyOf(all) { virtualModifier= Alt; action= SetMods(modifiers=modMapMods,clearLocks); }; interpret Scroll_Lock+AnyOf(all) { virtualModifier= ScrollLock; action= LockMods(modifiers=modMapMods); }; interpret Mode_switch+AnyOfOrNone(all) { virtualModifier= AltGr; useModMapMods=level1; action= SetGroup(group=+1); }; 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 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,affect=both); }; interpret Pointer_Drag1+AnyOfOrNone(all) { action= LockPtrBtn(button=1,affect=both); }; interpret Pointer_Drag2+AnyOfOrNone(all) { action= LockPtrBtn(button=2,affect=both); }; interpret Pointer_Drag3+AnyOfOrNone(all) { action= LockPtrBtn(button=3,affect=both); }; 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=Overlay1); }; interpret Overlay2_Enable+AnyOfOrNone(all) { action= LockControls(controls=Overlay2); }; interpret AudibleBell_Enable+AnyOfOrNone(all) { action= LockControls(controls=AudibleBell); }; interpret Terminate_Server+AnyOfOrNone(all) { action= Terminate(); }; interpret Any+Exactly(Lock) { action= LockMods(modifiers=Lock); }; interpret Any+AnyOf(all) { action= SetMods(modifiers=modMapMods,clearLocks); }; indicator "Caps Lock" { !allowExplicit; whichModState= locked; modifiers= Lock; }; indicator "Num Lock" { !allowExplicit; whichModState= locked; modifiers= NumLock; }; indicator "Scroll Lock" { whichModState= locked; modifiers= ScrollLock; }; indicator "Shift Lock" { !allowExplicit; whichModState= locked; modifiers= Shift; }; indicator "Group 2" { !allowExplicit; groups= 0xfe; }; indicator "Mouse Keys" { indicatorDrivesKeyboard; controls= mouseKeys; }; }; xkb_symbols "en_US(pc105_nodeadkeys)_no(nodeadkeys)" { name[group1]="Norwegian"; name[group2]="ISO9995-3"; key { [ F2 ] }; key { [ F3 ] }; key { [ F4 ] }; key { [ F5 ] }; key { [ F6 ] }; key { [ F7 ] }; key { [ F8 ] }; key { [ F9 ] }; key { [ F10 ] }; key { [ F11 ] }; key { [ F12 ] }; key { [ F1 ] }; key { [ BackSpace ] }; key { [ Tab, ISO_Left_Tab ] }; key { symbols[Group1]= [ q, Q ], symbols[Group2]= [ braceleft ] }; key { symbols[Group1]= [ l, L ], symbols[Group2]= [ braceright ] }; key { symbols[Group1]= [ comma, question ], symbols[Group2]= [ bracketleft ] }; key { symbols[Group1]= [ p, P ], symbols[Group2]= [ bracketright ] }; key { [ at, numbersign ] }; key { [ bar, ampersand ] }; key { symbols[Group1]= [ f, F ], symbols[Group2]= [ underscore ] }; key { symbols[Group1]= [ u, U ], symbols[Group2]= [ less ] }; key { symbols[Group1]= [ d, D ], symbols[Group2]= [ greater ] }; key { symbols[Group1]= [ k, K ], symbols[Group2]= [ dollar ] }; key { [ Right ] }; key { [ End ] }; key { [ Return ] }; key { [ Mode_switch ] }; key { symbols[Group1]= [ a, A ], symbols[Group2]= [ semicolon ] }; key { symbols[Group1]= [ r, R ], symbols[Group2]= [ slash ] }; key { symbols[Group1]= [ e, E ], symbols[Group2]= [ minus ] }; key { symbols[Group1]= [ n, N ], symbols[Group2]= [ 0 ] }; key { symbols[Group1]= [ b, B ], symbols[Group2]= [ colon ] }; key { symbols[Group1]= [ g, G ], symbols[Group2]= [ backslash ] }; key { symbols[Group1]= [ s, S ], symbols[Group2]= [ 1 ] }; key { symbols[Group1]= [ i, I ], symbols[Group2]= [ parenleft ] }; key { symbols[Group1]= [ t, T ], symbols[Group2]= [ parenright ] }; key { symbols[Group1]= [ o, O ], symbols[Group2]= [ equal ] }; key { symbols[Group1]= [ quotedbl, asciitilde ], symbols[Group2]= [ asciicircum ] }; key { [ Prior ] }; key { [ aring, Aring ] }; key { [ ae, AE ] }; key { symbols[Group1]= [ z, Z ], symbols[Group2]= [ 6 ] }; key { symbols[Group1]= [ w, W ], symbols[Group2]= [ 7 ] }; key { symbols[Group1]= [ period, exclam ], symbols[Group2]= [ 8 ] }; key { symbols[Group1]= [ h, H ], symbols[Group2]= [ 9 ] }; key { symbols[Group1]= [ j, J ], symbols[Group2]= [ plus ] }; key { symbols[Group1]= [ v, V ], symbols[Group2]= [ asterisk ] }; key { symbols[Group1]= [ c, C ], symbols[Group2]= [ 2 ] }; key { symbols[Group1]= [ y, Y ], symbols[Group2]= [ 3 ] }; key { symbols[Group1]= [ m, M ], symbols[Group2]= [ 4 ] }; key { symbols[Group1]= [ x, X ], symbols[Group2]= [ 5 ] }; key { [ oslash, Ooblique ] }; key { [ Multi_key ] }; key { [ space ] }; key { symbols[Group1]= [ apostrophe, grave ], symbols[Group2]= [ percent ] }; key { [ Num_Lock, Pointer_EnableKeys ] }; key { [ Scroll_Lock ] }; key { type= "PC_SYSRQ", symbols[Group1]= [ Print, Sys_Req ] }; key { [ Menu ] }; key { [ Home ] }; key { [ Meta_L ] }; key { [ Down ] }; key { [ Next ] }; key { [ Delete ] }; key { [ Left ] }; key { [ Escape ] }; key { [ Up ] }; key { [ Shift_L ] }; key { [ Control_L ] }; key { type= "PC_BREAK", symbols[Group1]= [ Pause, Break ] }; key { type= "PC_SYSRQ", symbols[Group1]= [ Print, Execute ] }; key { [ Alt_L ] }; key { type= "PC_BREAK", symbols[Group1]= [ Pause, Break ] }; modifier_map Mod3 { }; modifier_map Mod2 { }; modifier_map Mod4 { }; modifier_map Shift { }; modifier_map Control { }; modifier_map Mod1 { }; }; default xkb_geometry "model100" { // This is an approximate layout for a Kinesis Ergonomic keyboard // Generated completely by eye. I didn't actually *measure* a real // keyboard. description= "Kinesis Ergonomic Keyboard"; width= 421; height= 185; shape.cornerRadius= 1; shape "NORM" { { [ 18,18] }, { [2,1], [16,17] } }; shape "WIDE" { { [ 21,18] }, { [2,1], [19,17] } }; shape "TALL" { { [ 18,37] }, { [2,1], [16,36] } }; shape "FKEY" { cornerRadius=0, { [ 10,13] } }; shape "LED" { cornerRadius= 1.5, { [ 3, 3] } }; shape "LOGO" { { [ 40, 10 ] } }; shape "EDGE" { cornerRadius=5, { [ 421, 185 ] } }; outline "Edges" { top= 0; left= 0; shape= "EDGE"; }; section "LeftFunction" { left= 15; top= 11; key.shape= "FKEY"; key.gap= 3; row { left= 1; top= 1; keys { , , , , , , , , }; }; }; // End of "LeftFunction" section section "RightFunction" { left= 290; top= 11; key.shape= "FKEY"; key.gap= 3; row { left= 1; top= 0.2; keys { , , , , , , , , }; }; }; // End of "RightFunction" section row.vertical= True; row.top= 1; key.gap= 0.5; logo "KinesisLogoImage" { top= 25; left= 240; name= "Kinesis"; shape= "LOGO"; }; indicator.shape= "LED"; indicator.top= 30; indicator.onColor= "green"; indicator.offColor= "green30"; indicator "Caps Lock" { left= 23; }; section "LeftAlpha" { top= 34; left= 15; row { left= 2; key.shape= "WIDE"; keys { , , , }; }; row { top= 4; left= 24; keys { , , { , color="grey20" }, , }; }; row { left= 43; keys { , , { , color="grey20" }, , }; }; row { left= 62; keys { , , { , color="grey20" }, , }; }; row { left= 81; keys { , , { , color="grey20" }, , }; }; row { left= 100; keys { , , , }; }; }; // End of "LeftAlpha" section indicator "NumLock" { left= 318; }; indicator "Overlay" { left= 387; }; section "RightAlpha" { top= 34; left= 290; row { left= 2; keys { , , , }; }; row { left= 21; keys { , , { , color="grey20" }, , }; }; row { left= 40; keys { , , { , color="grey20" }, , }; }; row { left= 59; keys { , , { , color="grey20" }, , }; }; row { top= 4; left= 78; keys { , , { , color="grey20" }, , }; }; row { left= 97; key.shape= "WIDE"; keys { , , , }; }; overlay "KPAD" { =, =, =, =, =, =, =, =, =, =, =, =, =, =, =, =, =, = }; }; // End of "RightAlpha" section section "LeftEdit" { top= 109; left= 123; angle= 20; row.top= -18; row { top= 1; left= 1; keys { { , "TALL" } }; }; row { left= 20; keys { , { , "TALL" } }; }; row { left= 39; keys { , , }; }; }; // End of "RightEdit" section section "RightEdit" { top= 109; left= 302; angle= -20; row.top= -18; row { left= -57; keys { , , }; }; row { left= -38; keys { , { , "TALL" } }; }; row { top= 1; left= -19; keys { { , "TALL" } }; }; overlay "KPAD" { = }; }; // End of "Keypad" section alias = ; alias = ; }; };