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