1c067fea9Sghen// Let Space key provide No-Break Space (NBSP), Narrow No-Break Space (NNBSP),
2c067fea9Sghen// Zero-Width Non-Joiner (ZWNJ), and Zero-Width Joiner (ZWJ) for the desired
3c067fea9Sghen// levels.
4c067fea9Sghen
5c067fea9Sghen
6c067fea9Sghen////////////////////////////////////////
7c067fea9Sghen// Only Space
8154daed1Smrg
9154daed1Smrgpartial
10154daed1Smrgxkb_symbols "none" {
11154daed1Smrg  key <SPCE> {
12154daed1Smrg    type[Group1]="ONE_LEVEL",
13154daed1Smrg    symbols[Group1]= [ space ]
14154daed1Smrg  };
15154daed1Smrg};
16154daed1Smrg
17c067fea9Sghen
18c067fea9Sghen////////////////////////////////////////
19c067fea9Sghen// No-Break Space
20c067fea9Sghen
21154daed1Smrgpartial
22154daed1Smrgxkb_symbols "level2" {
23154daed1Smrg  key <SPCE> {
24154daed1Smrg    type[Group1]="TWO_LEVEL",
25154daed1Smrg    symbols[Group1]= [ space, nobreakspace ]
26154daed1Smrg  };
27154daed1Smrg};
28154daed1Smrg
29154daed1Smrg
30154daed1Smrg// level3 & level3ns provide no-breaking spaces starting from level3
31154daed1Smrg// This is good for typographers but experience shows many users accidently
32154daed1Smrg// type no-breaking spaces on the CLI (resulting in errors)
33154daed1Smrgpartial
34154daed1Smrgxkb_symbols "level3" {
35154daed1Smrg  key <SPCE> {
36154daed1Smrg    type[Group1]="FOUR_LEVEL",
37154daed1Smrg    symbols[Group1]= [ space, space, nobreakspace ]
38154daed1Smrg  };
39154daed1Smrg};
40154daed1Smrg
41c067fea9Sghen// for this reason pushing no-breaking spaces to level4 is the safe default nowadays
42154daed1Smrgpartial
43c067fea9Sghenxkb_symbols "level4" {
44154daed1Smrg  key <SPCE> {
45154daed1Smrg    type[Group1]="FOUR_LEVEL",
46c067fea9Sghen    symbols[Group1]= [ space, space, space, nobreakspace ]
47154daed1Smrg  };
48154daed1Smrg};
49154daed1Smrg
50154daed1Smrg
51c067fea9Sghen////////////////////////////////////////
52c067fea9Sghen// Narrow No-Break Space
53c067fea9Sghen
54c067fea9Sghen// level3n provides narrow no-breaking space in addition to the normal one
55154daed1Smrgpartial
56c067fea9Sghenxkb_symbols "level3n" {
57154daed1Smrg  key <SPCE> {
58154daed1Smrg    type[Group1]="FOUR_LEVEL",
59c067fea9Sghen    symbols[Group1]= [ space, space, nobreakspace, 0x100202F ]
60154daed1Smrg  };
61154daed1Smrg};
62154daed1Smrg
63154daed1Smrg// level4n provides narrow no-breaking space in addition to the normal one
64154daed1Smrgpartial
65154daed1Smrgxkb_symbols "level4n" {
66154daed1Smrg key <SPCE> {
67154daed1Smrg   type[Group1]="EIGHT_LEVEL",
68154daed1Smrg   symbols[Group1]= [ space, space, space, nobreakspace, space, 0x100202F, NoSymbol, NoSymbol ]
69154daed1Smrg };
70154daed1Smrg};
71154daed1Smrg
72154daed1Smrg// level4nl provides narrow no-breaking space in addition to the normal one
73154daed1Smrg// without forcing the use of level5 for mostly four-level layouts
74154daed1Smrg// Used by fr(oss), be(oss)…
75154daed1Smrgpartial
76154daed1Smrgxkb_symbols "level4nl" {
77154daed1Smrg key <SPCE> {
78154daed1Smrg   type[Group1]="LOCAL_EIGHT_LEVEL",
79154daed1Smrg   symbols[Group1]= [ space, space, space, nobreakspace, space, 0x100202F, NoSymbol, NoSymbol ]
80154daed1Smrg };
81154daed1Smrg};
82154daed1Smrg
83c067fea9Sghen
84c067fea9Sghen////////////////////////////////////////
85c067fea9Sghen// Zero-Width Non-Joiner & Zero-Width Joiner
86c067fea9Sghen// Author: Behnam Esfahbod <behnam@esfahbod.info>
87c067fea9Sghen
88c067fea9Sghen// ZWNJ and ZWJ are widely used in Persian, Kurdinsh, Pashto, Uzbek and other
89c067fea9Sghen// languages that use PersoArabic script.
90c067fea9Sghen
91c067fea9Sghen
92c067fea9Sghen// ZWNJ on level 2
93c067fea9Sghenpartial
94c067fea9Sghenxkb_symbols "zwnj2" {
95c067fea9Sghen  key <SPCE> {
96c067fea9Sghen    type[Group1]="TWO_LEVEL",
97c067fea9Sghen    symbols[Group1]= [ space, 0x100200c ]
98c067fea9Sghen  };
99c067fea9Sghen};
100c067fea9Sghen
101c067fea9Sghen
102c067fea9Sghen// ZWNJ on level 2
103c067fea9Sghen// ZWJ on level 3
104c067fea9Sghenpartial
105c067fea9Sghenxkb_symbols "zwnj2zwj3" {
106c067fea9Sghen  key <SPCE> {
107c067fea9Sghen    type[Group1]="FOUR_LEVEL",
108c067fea9Sghen    symbols[Group1]= [ space, 0x100200c, 0x100200d ]
109c067fea9Sghen  };
110c067fea9Sghen};
111c067fea9Sghen
112c067fea9Sghen
113c067fea9Sghen// ZWNJ on level 2
114c067fea9Sghen// ZWJ on level 3
115c067fea9Sghen// NBSP on level 4
116c067fea9Sghenpartial
117c067fea9Sghenxkb_symbols "zwnj2zwj3nb4" {
118c067fea9Sghen  key <SPCE> {
119c067fea9Sghen    type[Group1]="FOUR_LEVEL",
120c067fea9Sghen    symbols[Group1]= [ space, 0x100200c, 0x100200d, nobreakspace ]
121c067fea9Sghen  };
122c067fea9Sghen};
123c067fea9Sghen
12446185892Smrg
125c067fea9Sghen// ZWNJ on level 2
126c067fea9Sghen// NBSP on level 3
127c067fea9Sghenpartial
128c067fea9Sghenxkb_symbols "zwnj2nb3" {
129c067fea9Sghen  key <SPCE> {
130c067fea9Sghen    type[Group1]="FOUR_LEVEL",
131c067fea9Sghen    symbols[Group1]= [ space, 0x100200c, nobreakspace ]
132c067fea9Sghen  };
133c067fea9Sghen};
134c067fea9Sghen
135c067fea9Sghen
136c067fea9Sghen// ZWNJ on level 2
137c067fea9Sghen// NBSP on level 3
138c067fea9Sghen// ZWJ on level 4
139c067fea9Sghenpartial
140c067fea9Sghenxkb_symbols "zwnj2nb3zwj4" {
141c067fea9Sghen  key <SPCE> {
142c067fea9Sghen    type[Group1]="FOUR_LEVEL",
143c067fea9Sghen    symbols[Group1]= [ space, 0x100200c, nobreakspace, 0x100200d ]
144c067fea9Sghen  };
145c067fea9Sghen};
146c067fea9Sghen
147c067fea9Sghen
148c067fea9Sghen// ZWNJ on level 2
149c067fea9Sghen// NBSP on level 3
150c067fea9Sghen// NNBSP on level 4
151c067fea9Sghen// Used by ir(pes)
152c067fea9Sghenpartial
153c067fea9Sghenxkb_symbols "zwnj2nb3nnb4" {
154c067fea9Sghen  key <SPCE> {
155c067fea9Sghen    type[Group1]="FOUR_LEVEL",
156c067fea9Sghen    symbols[Group1]= [ space, 0x100200c, nobreakspace, 0x100202F ]
157c067fea9Sghen  };
158c067fea9Sghen};
159c067fea9Sghen
160c067fea9Sghen
161c067fea9Sghen// ZWNJ on level 3
162c067fea9Sghen// ZWJ on level 4
163c067fea9Sghen// Used by in(deva), in(olpc)
164c067fea9Sghenpartial
165c067fea9Sghenxkb_symbols "zwnj3zwj4" {
166c067fea9Sghen  key <SPCE> {
167c067fea9Sghen    type[Group1]="FOUR_LEVEL",
168c067fea9Sghen    symbols[Group1]= [ space, space, 0x100200c, 0x100200d ]
169c067fea9Sghen  };
170c067fea9Sghen};
171c067fea9Sghen
172bfd7cbc1Smrg
173bfd7cbc1Smrg// NBSP on level 2
174bfd7cbc1Smrg// ZWNJ on level 3
175bfd7cbc1Smrg// Used by lk(sin_phonetic)
176bfd7cbc1Smrgpartial
177bfd7cbc1Smrgxkb_symbols "nb2zwnj3s" {
178bfd7cbc1Smrg  key <SPCE> {
179bfd7cbc1Smrg    type[Group1]="FOUR_LEVEL",
180bfd7cbc1Smrg    symbols[Group1]= [ space, nobreakspace, 0x100200c, NoSymbol ]
181bfd7cbc1Smrg  };
182bfd7cbc1Smrg};
183