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