-
Notifications
You must be signed in to change notification settings - Fork 58
/
lafayette_linux_v0.6.xkb
152 lines (134 loc) · 14.6 KB
/
lafayette_linux_v0.6.xkb
1
2
3
4
5
6
7
8
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
//
// File : qwerty-l.xkb
// Project page : https://github.com/fabi1cazenave/qwerty-lafayette
// Author : Fabien Cazenave
// Version : 0.6.0
// Last change : 2018-04-02
// License : WTFPL - Do What The Fuck You Want Public License
//
// French (Qwerty-Lafayette)
//
// To apply this keymap, use:
// xkbcomp -w9 qwerty-l.xkb $DISPLAY
//
xkb_keymap {
xkb_keycodes { include "evdev" };
xkb_types { include "complete" };
xkb_compatibility { include "complete" };
// Base layer + dead key
// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━━┓
// │ ~ │ ! ¡ │ @ ‘ │ # ’ │ $ ¢ │ % ‰ │ ^ │ & │ * ★ │ ( │ ) │ _ – │ + ± ┃ ┃
// │ ` │ 1 „ │ 2 “ │ 3 ” │ 4 £ │ 5 € │ 6 │ 7 | │ 8 ∞ │ 9 │ 0 ° │ - — │ = ≠ ┃ ⌫ ┃
// ┢━━━━━┷━━┱──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┺━━┳━━━━━━━┫
// ┃ ┃ Q │ W │ E │ R ™ │ T │ Y ¤ │ U │ I │ O │ P ¶ │ « { │ » } ┃ ┃
// ┃ ↹ ┃ æ │ é │ è │ ® │ þ │ ¥ │ ù │ ij │ œ │ § │ ̂ [ │ ̈ ] ┃ ┃
// ┣━━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ⏎ ┃
// ┃ ┃ A │ S │ D │ F ª │ G │ H │ J │ K │ L │ ⃡ │ " │ | ┃ ┃
// ┃ ⇬ ┃ à │ ß │ ð │ ſ │ © │ ← │ ↓ │ ↑ │ → │ ⃡ ` │ ' │ \ ┃ ┃
// ┣━━━━━━┳━━┹──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┲━━┷━━━━━┻━━━━━━┫
// ┃ ┃ > ≥ │ Z │ X │ C │ V │ B │ N │ M º │ ; • │ : │ ? ¿ ┃ ┃
// ┃ ⇧ ┃ < ≤ │ < │ > │ ç │ ŭ │ † │ ñ │ µ │ , · │ . … │ / \ ┃ ⇧ ┃
// ┣━━━━━━┻┳━━━━┷━━┳━━┷━━━━┱┴─────┴─────┴─────┴─────┴─────┴─┲━━━┷━━━┳━┷━━━━━╋━━━━━━━┳━━━━━━━┫
// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
// ┃ Ctrl ┃ super ┃ Alt ┃ ␣ ┃ AltGr ┃ super ┃ menu ┃ Ctrl ┃
// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛
// AltGr layer
// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━━┓
// │ ̃ │ │ « │ » │ ́ │ ̈ │ ̂ │ ⁷ │ ⁸ │ ⁹ │ ÷ │ │ ┃ ┃
// │ ̀ │ ! │ ( │ ) │ ' │ " │ ^ │ 7 │ 8 │ 9 │ / │ │ ┃ ⌫ ┃
// ┢━━━━━┷━━┱──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┺━━┳━━━━━━━┫
// ┃ ┃ ≠ │ │ │ — │ ± │ │ ⁴ │ ⁵ │ ⁶ │ × │ │ ┃ ┃
// ┃ ↹ ┃ = │ < │ > │ - │ + │ │ 4 │ 5 │ 6 │ * │ │ ┃ ┃
// ┣━━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ⏎ ┃
// ┃ ┃ │ │ │ │ │ │ ¹ │ ² │ ³ │ − │ ̇ │ ┃ ┃
// ┃ ⇬ ┃ { │ [ │ ] │ } │ / │ │ 1 │ 2 │ 3 │ - │ ́ │ ┃ ┃
// ┣━━━━━━┳━━┹──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┲━━┷━━━━━┻━━━━━━┫
// ┃ ┃ │ ̃ │ ̀ │ │ – │ │ │ ⁰ │ │ │ ¬ ┃ ┃
// ┃ ⇧ ┃ │ ~ │ ` │ | │ _ │ \ │ │ 0 │ , │ . │ + ┃ ⇧ ┃
// ┣━━━━━━┻┳━━━━┷━━┳━━┷━━━━┱┴─────┴─────┴─────┴─────┴─────┴─┲━━━┷━━━┳━┷━━━━━╋━━━━━━━┳━━━━━━━┫
// ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
// ┃ Ctrl ┃ super ┃ Alt ┃ ␣ ┃ AltGr ┃ super ┃ menu ┃ Ctrl ┃
// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┻━━━━━━━┛
partial alphanumeric_keys modifier_keys
xkb_symbols "lafayette" {
include "pc"
// The “OneDeadKey” is an ISO_Level3_Latch, i.e. a “dead AltGr” key.
// This is the only way to have a multi-purpose dead key with XKB.
// The real AltGr key should be an ISO_Level5_Switch; however,
// ISO_Level5_Switch does not work as expected when applying this layout
// with xkbcomp, so let’s use two groups instead and make the AltGr key a
// group selector.
name[group1]= "French (Qwerty-Lafayette)";
name[group2]= "AltGr";
key.type[group1] = "FOUR_LEVEL";
key.type[group2] = "TWO_LEVEL";
// Options
// include "capslock(swapescape)" // Swap CapsLock and Escape -- Vim powwa!
// include "compose(menu)" // Compose on the 'Menu' key
// Digits
key <AE01> {[ 1 , exclam , U201E , exclamdown ],[ exclam , VoidSymbol ]}; // 1 ! „ ¡ !
key <AE02> {[ 2 , at , U201C , U2018 ],[ parenleft , guillemotleft ]}; // 2 @ “ ‘ ( «
key <AE03> {[ 3 , numbersign , U201D , U2019 ],[ parenright , guillemotright ]}; // 3 # ” ’ ) »
key <AE04> {[ 4 , dollar , sterling , cent ],[ apostrophe , dead_acute ]}; // 4 $ £ ¢ ' ´
key <AE05> {[ 5 , percent , EuroSign , U2030 ],[ quotedbl , dead_diaeresis ]}; // 5 % € ‰ " ¨
key <AE06> {[ 6 , asciicircum , VoidSymbol , VoidSymbol ],[ asciicircum , dead_circumflex ]}; // 6 ^ ^ ^
key <AE07> {[ 7 , ampersand , bar , brokenbar ],[ 7 , U2077 ]}; // 7 & | ¦ 7 ⁷
key <AE08> {[ 8 , asterisk , infinity , U2605 ],[ 8 , U2078 ]}; // 8 * ∞ ★ 8 ⁸
key <AE09> {[ 9 , parenleft , VoidSymbol , VoidSymbol ],[ 9 , U2079 ]}; // 9 ( 9 ⁹
key <AE10> {[ 0 , parenright , degree , VoidSymbol ],[ slash , division ]}; // 0 ) ° / ÷
// Letters, first row
key <AD01> {[ q , Q , ae , AE ],[ equal , notequal ]}; // q Q æ Æ = ≠
key <AD02> {[ w , W , eacute , Eacute ],[ less , lessthanequal ]}; // w W é É < ≤
key <AD03> {[ e , E , egrave , Egrave ],[ greater , greaterthanequal]}; // e E è È > ≥
key <AD04> {[ r , R , registered , trademark ],[ minus , emdash ]}; // r R ® ™ - —
key <AD05> {[ t , T , thorn , Thorn ],[ plus , plusminus ]}; // t T þ Þ + ±
key <AD06> {[ y , Y , yen , currency ],[ VoidSymbol , VoidSymbol ]}; // y Y ¥ ¤
key <AD07> {[ u , U , ugrave , Ugrave ],[ 4 , U2074 ]}; // u U ù Ù 4 ⁴
key <AD08> {[ i , I , U0133 , U0132 ],[ 5 , U2075 ]}; // i I ij IJ 5 ⁵
key <AD09> {[ o , O , oe , OE ],[ 6 , U2076 ]}; // o O œ Œ 6 ⁶
key <AD10> {[ p , P , section , paragraph ],[ asterisk , multiply ]}; // p P § ¶ * ×
// Letters, second row
key <AC01> {[ a , A , agrave , Agrave ],[ braceleft , VoidSymbol ]}; // a A à À {
key <AC02> {[ s , S , ssharp , U1E9E ],[ bracketleft , VoidSymbol ]}; // s S ß ẞ [
key <AC03> {[ d , D , eth , Eth ],[ bracketright , VoidSymbol ]}; // d D ð Ð ]
key <AC04> {[ f , F , U017F , ordfeminine ],[ braceright , VoidSymbol ]}; // f F ſ ª }
key <AC05> {[ g , G , copyright , VoidSymbol ],[ slash , VoidSymbol ]}; // g G © /
key <AC06> {[ h , H , leftarrow , U21D0 ],[ VoidSymbol , VoidSymbol ]}; // h H ← ⇐
key <AC07> {[ j , J , downarrow , U21D3 ],[ 1 , onesuperior ]}; // j J ↓ ⇓ 1 ¹
key <AC08> {[ k , K , uparrow , U21D1 ],[ 2 , twosuperior ]}; // k K ↑ ⇑ 2 ²
key <AC09> {[ l , L , rightarrow , U21D2 ],[ 3 , threesuperior ]}; // l L → ⇒ 3 ³
key <AC10> {[ ISO_Level3_Latch, ISO_Level3_Latch, grave , VoidSymbol ],[ minus , U2212 ]}; // ` ` ` - −
// Letters, third row
key <AB01> {[ z , Z , less , lessthanequal ],[ asciitilde , dead_tilde ]}; // z Z < ≤ ~ ~
key <AB02> {[ x , X , greater , greaterthanequal],[ grave , dead_grave ]}; // x X > ≥ ` `
key <AB03> {[ c , C , ccedilla , Ccedilla ],[ bar , brokenbar ]}; // c C ç Ç | ¦
key <AB04> {[ v , V , ubreve , Ubreve ],[ underscore , endash ]}; // v V ŭ Ŭ _ –
key <AB05> {[ b , B , dagger , doubledagger ],[ backslash , VoidSymbol ]}; // b B † ‡ \
key <AB06> {[ n , N , ntilde , Ntilde ],[ VoidSymbol , VoidSymbol ]}; // n N ñ Ñ
key <AB07> {[ m , M , mu , masculine ],[ 0 , U2070 ]}; // m M µ º 0 ⁰
key <AB08> {[ comma , semicolon , periodcentered , U2022 ],[ comma , VoidSymbol ]}; // , ; · • ,
key <AB09> {[ period , colon , ellipsis , VoidSymbol ],[ period , VoidSymbol ]}; // . : … .
key <AB10> {[ slash , question , backslash , questiondown ],[ plus , notsign ]}; // / ? \ ¿ + ¬
// Pinky keys
key <TLDE> {[ grave , asciitilde , VoidSymbol , VoidSymbol ],[ dead_grave , dead_tilde ]}; // ` ~ ` ~
key <AE11> {[ minus , underscore , emdash , endash ],[ VoidSymbol , VoidSymbol ]}; // - _ — –
key <AE12> {[ equal , plus , notequal , plusminus ],[ VoidSymbol , VoidSymbol ]}; // = + ≠ ±
key <AD11> {[ dead_circumflex , guillemotleft , bracketleft , braceleft ],[ VoidSymbol , VoidSymbol ]}; // ^ « [ {
key <AD12> {[ dead_diaeresis , guillemotright , bracketright , braceright ],[ VoidSymbol , VoidSymbol ]}; // ¨ » ] }
key <AC11> {[ apostrophe , quotedbl , VoidSymbol , VoidSymbol ],[ dead_acute , dead_abovedot ]}; // ' " ´ ˙
key <BKSL> {[ backslash , bar , VoidSymbol , VoidSymbol ],[ VoidSymbol , VoidSymbol ]}; // \ |
key <LSGT> {[ less , greater , lessthanequal , greaterthanequal],[ VoidSymbol , VoidSymbol ]}; // < > ≤ ≥
// Space bar
key <SPCE> {[ space , nobreakspace , U2019 , U2019 ],[ nobreakspace , U202F ]}; // ’ ’
// AltGr
// Note: the `ISO_Level5_Latch` here is meaningless but helps with Chromium
// (no idea why).
key <RALT> {
type = "TWO_LEVEL",
symbols = [ ISO_Level5_Latch, ISO_Level5_Latch ],
actions = [ SetGroup(group=2), SetGroup(group=2) ]
};
};
//xkb_geometry { include "pc(pc105)" };
};
// vim: ft=xkb:fdm=indent:ts=2