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