nbsp revision c067fea9
1// $XKeyboardConfig$
2
3// Let Space key provide No-Break Space (NBSP), Narrow No-Break Space (NNBSP),
4// Zero-Width Non-Joiner (ZWNJ), and Zero-Width Joiner (ZWJ) for the desired
5// levels.
6
7
8////////////////////////////////////////
9// Only Space
10
11partial
12xkb_symbols "none" {
13  key <SPCE> {
14    type[Group1]="ONE_LEVEL",
15    symbols[Group1]= [ space ]
16  };
17};
18
19
20////////////////////////////////////////
21// No-Break Space
22
23partial
24xkb_symbols "level2" {
25  key <SPCE> {
26    type[Group1]="TWO_LEVEL",
27    symbols[Group1]= [ space, nobreakspace ]
28  };
29};
30
31
32// level3 & level3ns provide no-breaking spaces starting from level3
33// This is good for typographers but experience shows many users accidently
34// type no-breaking spaces on the CLI (resulting in errors)
35// Used by fr(latin9)
36partial
37xkb_symbols "level3" {
38  key <SPCE> {
39    type[Group1]="FOUR_LEVEL",
40    symbols[Group1]= [ space, space, nobreakspace ]
41  };
42};
43
44// level3s kills fourth level
45// Used by ca(multix)
46partial
47xkb_symbols "level3s" {
48  key <SPCE> {
49    type[Group1]="FOUR_LEVEL",
50    symbols[Group1]= [ space, space, nobreakspace, NoSymbol ]
51  };
52};
53
54// for this reason pushing no-breaking spaces to level4 is the safe default nowadays
55partial
56xkb_symbols "level4" {
57  key <SPCE> {
58    type[Group1]="FOUR_LEVEL",
59    symbols[Group1]= [ space, space, space, nobreakspace ]
60  };
61};
62
63
64////////////////////////////////////////
65// Narrow No-Break Space
66
67// level3n provides narrow no-breaking space in addition to the normal one
68partial
69xkb_symbols "level3n" {
70  key <SPCE> {
71    type[Group1]="FOUR_LEVEL",
72    symbols[Group1]= [ space, space, nobreakspace, 0x100202F ]
73  };
74};
75
76// level4n provides narrow no-breaking space in addition to the normal one
77partial
78xkb_symbols "level4n" {
79 key <SPCE> {
80   type[Group1]="EIGHT_LEVEL",
81   symbols[Group1]= [ space, space, space, nobreakspace, space, 0x100202F, NoSymbol, NoSymbol ]
82 };
83};
84
85// level4nl provides narrow no-breaking space in addition to the normal one
86// without forcing the use of level5 for mostly four-level layouts
87// Used by fr(oss), be(oss)…
88partial
89xkb_symbols "level4nl" {
90 key <SPCE> {
91   type[Group1]="LOCAL_EIGHT_LEVEL",
92   symbols[Group1]= [ space, space, space, nobreakspace, space, 0x100202F, NoSymbol, NoSymbol ]
93 };
94};
95
96
97////////////////////////////////////////
98// Zero-Width Non-Joiner & Zero-Width Joiner
99// Author: Behnam Esfahbod <behnam@esfahbod.info>
100
101// ZWNJ and ZWJ are widely used in Persian, Kurdinsh, Pashto, Uzbek and other
102// languages that use PersoArabic script.
103
104
105// ZWNJ on level 2
106partial
107xkb_symbols "zwnj2" {
108  key <SPCE> {
109    type[Group1]="TWO_LEVEL",
110    symbols[Group1]= [ space, 0x100200c ]
111  };
112};
113
114
115// ZWNJ on level 2
116// ZWJ on level 3
117partial
118xkb_symbols "zwnj2zwj3" {
119  key <SPCE> {
120    type[Group1]="FOUR_LEVEL",
121    symbols[Group1]= [ space, 0x100200c, 0x100200d ]
122  };
123};
124
125
126// ZWNJ on level 2
127// ZWJ on level 3
128// NBSP on level 4
129partial
130xkb_symbols "zwnj2zwj3nb4" {
131  key <SPCE> {
132    type[Group1]="FOUR_LEVEL",
133    symbols[Group1]= [ space, 0x100200c, 0x100200d, nobreakspace ]
134  };
135};
136
137// ZWNJ on level 2
138// NBSP on level 3
139// Used by ir(ku_ara), af(basic), af(ps), af(uz), af(olpc-fa), af(olpc-ps), af(olpc-uz)
140partial
141xkb_symbols "zwnj2nb3" {
142  key <SPCE> {
143    type[Group1]="FOUR_LEVEL",
144    symbols[Group1]= [ space, 0x100200c, nobreakspace ]
145  };
146};
147
148
149// ZWNJ on level 2
150// ZWJ on level 3
151// NBSP on level 4
152// Used by lk(sin_phonetic)
153partial
154xkb_symbols "zwnj2nb3s" {
155  key <SPCE> {
156    type[Group1]="FOUR_LEVEL",
157    symbols[Group1]= [ space, 0x100200c, nobreakspace, NoSymbol ]
158  };
159};
160
161
162// ZWNJ on level 2
163// NBSP on level 3
164// ZWJ on level 4
165partial
166xkb_symbols "zwnj2nb3zwj4" {
167  key <SPCE> {
168    type[Group1]="FOUR_LEVEL",
169    symbols[Group1]= [ space, 0x100200c, nobreakspace, 0x100200d ]
170  };
171};
172
173
174// ZWNJ on level 2
175// NBSP on level 3
176// NNBSP on level 4
177// Used by ir(pes)
178partial
179xkb_symbols "zwnj2nb3nnb4" {
180  key <SPCE> {
181    type[Group1]="FOUR_LEVEL",
182    symbols[Group1]= [ space, 0x100200c, nobreakspace, 0x100202F ]
183  };
184};
185
186
187// ZWNJ on level 3
188// ZWJ on level 4
189// Used by in(deva), in(olpc)
190partial
191xkb_symbols "zwnj3zwj4" {
192  key <SPCE> {
193    type[Group1]="FOUR_LEVEL",
194    symbols[Group1]= [ space, space, 0x100200c, 0x100200d ]
195  };
196};
197
198