Home | History | Annotate | Line # | Download | only in symbols
      1      1.1   mrg // The <KPDL> key is a mess.
      2      1.1   mrg // It was probably originally meant to be a decimal separator.
      3      1.1   mrg // Except since it was declared by USA people it didn't use the original
      4      1.1   mrg // SI separator "," but a "." (since then the USA managed to f-up the SI
      5      1.1   mrg // by making "." an accepted alternative, but standards still use "," as
      6      1.1   mrg // default)
      7      1.1   mrg // As a result users of SI-abiding countries expect either a "." or a ","
      8      1.1   mrg // or a "decimal_separator" which may or may not be translated in one of the
      9      1.1   mrg // above depending on applications.
     10      1.1   mrg // It's not possible to define a default per-country since user expectations
     11      1.1   mrg // depend on the conflicting choices of their most-used applications,
     12      1.1   mrg // operating system, etc. Therefore it needs to be a configuration setting
     13      1.1   mrg // Copyright  2007 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
     14      1.1   mrg 
     15      1.1   mrg 
     16      1.1   mrg // Legacy <KPDL> #1
     17      1.1   mrg // This assumes KP_Decimal will be translated in a dot
     18      1.1   mrg partial keypad_keys
     19      1.1   mrg xkb_symbols "dot" {
     20      1.1   mrg 
     21      1.1   mrg     key.type[Group1]="KEYPAD" ;
     22      1.1   mrg 
     23      1.1   mrg     key <KPDL> { [ KP_Delete, KP_Decimal ] }; // <delete> <separator>
     24      1.1   mrg };
     25      1.1   mrg 
     26      1.1   mrg 
     27      1.1   mrg // Legacy <KPDL> #2
     28      1.1   mrg // This assumes KP_Separator will be translated in a comma
     29      1.1   mrg partial keypad_keys
     30      1.1   mrg xkb_symbols "comma" {
     31      1.1   mrg 
     32      1.1   mrg     key.type[Group1]="KEYPAD" ;
     33      1.1   mrg 
     34      1.1   mrg     key <KPDL> { [ KP_Delete, KP_Separator ] }; // <delete> <separator>
     35      1.1   mrg };
     36      1.1   mrg 
     37      1.1   mrg 
     38      1.1   mrg // Period <KPDL>, usual keyboard serigraphy in most countries
     39      1.1   mrg partial keypad_keys
     40      1.1   mrg xkb_symbols "dotoss" {
     41      1.1   mrg 
     42      1.1   mrg     key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
     43      1.1   mrg 
     44      1.1   mrg     key <KPDL> { [ KP_Delete, period, comma, 0x100202F ] }; // <delete> . ,  (narrow no-break space)
     45      1.1   mrg };
     46      1.1   mrg 
     47      1.1   mrg 
     48      1.1   mrg // Period <KPDL>, usual keyboard serigraphy in most countries, latin-9 restriction
     49      1.1   mrg partial keypad_keys
     50      1.1   mrg xkb_symbols "dotoss_latin9" {
     51      1.1   mrg 
     52      1.1   mrg     key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
     53      1.1   mrg 
     54      1.1   mrg     key <KPDL> { [ KP_Delete, period, comma, nobreakspace ] }; // <delete> . ,  (no-break space)
     55      1.1   mrg };
     56      1.1   mrg 
     57      1.1   mrg 
     58      1.1   mrg // Comma <KPDL>, what most non anglo-saxon people consider the real separator
     59      1.1   mrg partial keypad_keys
     60      1.1   mrg xkb_symbols "commaoss" {
     61      1.1   mrg 
     62      1.1   mrg     key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
     63      1.1   mrg 
     64      1.1   mrg     key <KPDL> { [ KP_Delete, comma, period, 0x100202F ] }; // <delete> , .  (narrow no-break space)
     65      1.1   mrg };
     66      1.1   mrg 
     67      1.1   mrg 
     68      1.1   mrg // Momayyez <KPDL>: Bahrain, Iran, Iraq, Kuwait, Oman, Qatar, Saudi Arabia, Syria, UAE
     69      1.1   mrg partial keypad_keys
     70      1.1   mrg xkb_symbols "momayyezoss" {
     71      1.1   mrg 
     72      1.1   mrg     key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
     73      1.1   mrg 
     74      1.1   mrg     key <KPDL> { [ KP_Delete, 0x100066B, comma, 0x100202F ] }; // <delete> ? ,  (narrow no-break space)
     75      1.1   mrg };
     76      1.1   mrg 
     77      1.1   mrg 
     78      1.1   mrg // Abstracted <KPDL>, pray everything will work out (it usually does not)
     79      1.1   mrg partial keypad_keys
     80      1.1   mrg xkb_symbols "kposs" {
     81      1.1   mrg 
     82      1.1   mrg     key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
     83      1.1   mrg 
     84      1.1   mrg     key <KPDL> { [ KP_Delete, KP_Decimal, KP_Separator, 0x100202F ] }; // <delete> ? ?  (narrow no-break space)
     85      1.1   mrg };
     86  1.1.1.3  ghen 
     87  1.1.1.3  ghen // Spreadsheets may be configured to use the dot as decimal
     88  1.1.1.3  ghen // punctuation, comma as a thousands separator and then semi-colon as
     89  1.1.1.3  ghen // the list separator. Of these, dot and semi-colon is most important
     90  1.1.1.3  ghen // when entering data by the keyboard; the comma can then be inferred
     91  1.1.1.3  ghen // and added to the presentation afterwards. Using semi-colon as a
     92  1.1.1.3  ghen // general separator may in fact be preferred to avoid ambiguities
     93  1.1.1.3  ghen // in data files. Most times a decimal separator is hard-coded, it
     94  1.1.1.3  ghen // seems to be period, probably since this is the syntax used in
     95  1.1.1.3  ghen // (most) programming languages.
     96  1.1.1.3  ghen partial keypad_keys
     97  1.1.1.3  ghen xkb_symbols "semi" {
     98  1.1.1.3  ghen 
     99  1.1.1.3  ghen     key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
    100  1.1.1.3  ghen 
    101  1.1.1.3  ghen     key <KPDL> { [ NoSymbol, NoSymbol, semicolon ] };
    102  1.1.1.3  ghen };
    103