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