Home | History | Annotate | Line # | Download | only in symbols
      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