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