diff -uNr xkeyboard-config-0.8.orig/docs/README.enhancing xkeyboard-config-0.8/docs/README.enhancing --- xkeyboard-config-0.8.orig/docs/README.enhancing 2005-09-21 23:29:24.000000000 +0200 +++ xkeyboard-config-0.8/docs/README.enhancing 2006-09-13 22:13:03.000000000 +0200 @@ -293,6 +293,12 @@ Lock+LevelThree modifiers apply the symbol from the third level is taken. This also, shift-cancels-caps variant. + SIMPLE_FOUR_LEVEL_KEYPAD + Is similar to FOUR_LEVEL_KEYPAD scheme but only uses LevelThree + and Numlock, not confusing users with two modifiers (Numlock and + Shift) fighting each other + Primary modifier is NumLock, secondary LevelThree + Besides that, there are several schemes for special purposes: PC_BREAK diff -uNr xkeyboard-config-0.8.orig/keymap/xfree86 xkeyboard-config-0.8/keymap/xfree86 --- xkeyboard-config-0.8.orig/keymap/xfree86 2005-09-21 23:29:24.000000000 +0200 +++ xkeyboard-config-0.8/keymap/xfree86 2006-09-11 20:59:43.000000000 +0200 @@ -112,6 +112,13 @@ xkb_symbols { include "en_US(pc105)+fr-latin9" }; xkb_geometry { include "pc" }; }; +xkb_keymap "fr-unicode" { + xkb_keycodes { include "xfree86" }; + xkb_types { include "default" }; + xkb_compatibility { include "default" }; + xkb_symbols { include "en_US(pc105)+fr-unicode" }; + xkb_geometry { include "pc" }; +}; xkb_keymap "fr_CA" { xkb_keycodes { include "xfree86" }; xkb_types { include "default" }; diff -uNr xkeyboard-config-0.8.orig/po/fr.po xkeyboard-config-0.8/po/fr.po --- xkeyboard-config-0.8.orig/po/fr.po 2006-03-04 18:41:23.000000000 +0100 +++ xkeyboard-config-0.8/po/fr.po 2006-09-13 22:06:59.000000000 +0200 @@ -179,6 +179,9 @@ msgid "Alternative" msgstr "Autre" +msgid "Alternative with unicode additions" +msgstr "Autre, avec des suppléments unicode" + #: ../rules/base.xml.in.h:41 msgid "Alternative international (former us_intl)" msgstr "International (auparavant us_intl)" diff -uNr xkeyboard-config-0.8.orig/rules/base xkeyboard-config-0.8/rules/base --- xkeyboard-config-0.8.orig/rules/base 2006-02-28 00:14:28.000000000 +0100 +++ xkeyboard-config-0.8/rules/base 2006-09-11 21:03:25.000000000 +0200 @@ -251,6 +251,8 @@ * yu = pc(pc105)+srp $pcmodels fr-latin9 = pc(%m)+fr(latin9) * fr-latin9 = pc(pc105)+fr(latin9) + $pcmodels fr-unicode = pc(%m)+fr(unicode) + * fr-unicode = pc(pc105)+fr(unicode) $pcmodels us_intl = pc(%m)+us(alt-intl) * us_intl = pc(pc105)+us(alt-intl) $pcmodels ben(basic) = pc(%m)+in(ben) @@ -409,6 +411,8 @@ * yu = pc(pc105)+srp%(v[1]) $pcmodels fr-latin9 = pc(%m)+fr(latin9)%(v[1]) * fr-latin9 = pc(pc105)+fr(latin9)%(v[1]) + $pcmodels fr-unicode = pc(%m)+fr(unicode)%(v[1]) + * fr-unicode = pc(pc105)+fr(unicode)%(v[1]) $pcmodels us_intl = pc(%m)+us(alt-intl)%(v[1]) * us_intl = pc(pc105)+us(alt-intl)%(v[1]) $pcmodels ben(basic) = pc(%m)+in(ben) @@ -610,6 +614,7 @@ tml = +in(tam)%(v[2]):2 yu = +srp%(v[2]):2 fr-latin9 = +fr(latin9)%(v[2]):2 + fr-unicode = +fr(unicode)%(v[2]):2 us_intl = +us(alt-intl)%(v[2]):2 ben(basic) = +in(ben):2 ben(probhat) = +in(ben_probhat):2 @@ -679,6 +684,7 @@ tml = +in(tam)%(v[3]):3 yu = +srp%(v[3]):3 fr-latin9 = +fr(latin9)%(v[3]):3 + fr-unicode = +fr(unicode)%(v[3]):3 us_intl = +us(alt-intl)%(v[3]):3 ben(basic) = +in(ben):3 ben(probhat) = +in(ben_probhat):3 @@ -748,6 +754,7 @@ tml = +in(tam)%(v[4]):4 yu = +srp%(v[4]):4 fr-latin9 = +fr(latin9)%(v[4]):4 + fr-unicode = +fr(unicode)%(v[4]):4 us_intl = +us(alt-intl)%(v[4]):4 ben(basic) = +in(ben):4 ben(probhat) = +in(ben_probhat):4 diff -uNr xkeyboard-config-0.8.orig/rules/base.lst xkeyboard-config-0.8/rules/base.lst --- xkeyboard-config-0.8.orig/rules/base.lst 2006-03-04 18:45:00.000000000 +0100 +++ xkeyboard-config-0.8/rules/base.lst 2006-09-13 23:16:20.000000000 +0200 @@ -260,6 +260,7 @@ latin9 fr: Alternative latin9_nodeadkeys fr: Alternative, eliminate dead keys latin9_sundeadkeys fr: Alternative, Sun dead keys + unicode fr:Alternative with unicode additions dvorak fr: Dvorak generic gh: Multilingual akan gh: Akan diff -uNr xkeyboard-config-0.8.orig/rules/base.xml.in xkeyboard-config-0.8/rules/base.xml.in --- xkeyboard-config-0.8.orig/rules/base.xml.in 2006-02-26 17:12:33.000000000 +0100 +++ xkeyboard-config-0.8/rules/base.xml.in 2006-09-13 22:05:49.000000000 +0200 @@ -1331,6 +1331,12 @@ + unicode + <_description>Alternative with unicode additions + + + + latin9_nodeadkeys <_description>Alternative, eliminate dead keys diff -uNr xkeyboard-config-0.8.orig/rules/compat/base.l3_s.part xkeyboard-config-0.8/rules/compat/base.l3_s.part --- xkeyboard-config-0.8.orig/rules/compat/base.l3_s.part 2006-02-04 16:17:08.000000000 +0100 +++ xkeyboard-config-0.8/rules/compat/base.l3_s.part 2006-09-11 21:04:56.000000000 +0200 @@ -23,6 +23,7 @@ tml = +in(tam)%(v[3]):3 yu = +srp%(v[3]):3 fr-latin9 = +fr(latin9)%(v[3]):3 + fr-unicode = +fr(unicode)%(v[3]):3 us_intl = +us(alt-intl)%(v[3]):3 ben(basic) = +in(ben):3 ben(probhat) = +in(ben_probhat):3 diff -uNr xkeyboard-config-0.8.orig/rules/compat/base.l4_s.part xkeyboard-config-0.8/rules/compat/base.l4_s.part --- xkeyboard-config-0.8.orig/rules/compat/base.l4_s.part 2006-02-04 16:17:08.000000000 +0100 +++ xkeyboard-config-0.8/rules/compat/base.l4_s.part 2006-09-11 21:04:09.000000000 +0200 @@ -23,6 +23,7 @@ tml = +in(tam)%(v[4]):4 yu = +srp%(v[4]):4 fr-latin9 = +fr(latin9)%(v[4]):4 + fr-unicode = +fr(unicode)%(v[4]):4 us_intl = +us(alt-intl)%(v[4]):4 ben(basic) = +in(ben):4 ben(probhat) = +in(ben_probhat):4 diff -uNr xkeyboard-config-0.8.orig/rules/compat/base.ml1_s.part xkeyboard-config-0.8/rules/compat/base.ml1_s.part --- xkeyboard-config-0.8.orig/rules/compat/base.ml1_s.part 2006-02-04 16:17:08.000000000 +0100 +++ xkeyboard-config-0.8/rules/compat/base.ml1_s.part 2006-09-11 21:07:20.000000000 +0200 @@ -48,6 +48,8 @@ * yu = pc(pc105)+srp%(v[1]) $pcmodels fr-latin9 = pc(%m)+fr(latin9)%(v[1]) * fr-latin9 = pc(pc105)+fr(latin9)%(v[1]) + $pcmodels fr-unicode = pc(%m)+fr(unicode)%(v[1]) + * fr-unicode = pc(pc105)+fr(unicode)%(v[1]) $pcmodels us_intl = pc(%m)+us(alt-intl)%(v[1]) * us_intl = pc(pc105)+us(alt-intl)%(v[1]) $pcmodels ben(basic) = pc(%m)+in(ben) diff -uNr xkeyboard-config-0.8.orig/rules/compat/base.ml_s.part xkeyboard-config-0.8/rules/compat/base.ml_s.part --- xkeyboard-config-0.8.orig/rules/compat/base.ml_s.part 2006-02-04 16:17:08.000000000 +0100 +++ xkeyboard-config-0.8/rules/compat/base.ml_s.part 2006-09-11 21:06:23.000000000 +0200 @@ -48,6 +48,8 @@ * yu = pc(pc105)+srp $pcmodels fr-latin9 = pc(%m)+fr(latin9) * fr-latin9 = pc(pc105)+fr(latin9) + $pcmodels fr-unicode = pc(%m)+fr(unicode) + * fr-unicode = pc(pc105)+fr(unicode) $pcmodels us_intl = pc(%m)+us(alt-intl) * us_intl = pc(pc105)+us(alt-intl) $pcmodels ben(basic) = pc(%m)+in(ben) diff -uNr xkeyboard-config-0.8.orig/rules/compat/layoutRename.lst xkeyboard-config-0.8/rules/compat/layoutRename.lst --- xkeyboard-config-0.8.orig/rules/compat/layoutRename.lst 2006-02-02 01:08:19.000000000 +0100 +++ xkeyboard-config-0.8/rules/compat/layoutRename.lst 2006-09-11 21:05:27.000000000 +0200 @@ -23,4 +23,5 @@ tml in(tam) yu srp fr-latin9 fr(latin9) +fr-unicode fr(unicode) us_intl us(alt-intl) diff -uNr xkeyboard-config-0.8.orig/symbols/fr xkeyboard-config-0.8/symbols/fr --- xkeyboard-config-0.8.orig/symbols/fr 2005-09-28 00:15:11.000000000 +0200 +++ xkeyboard-config-0.8/symbols/fr 2006-09-13 23:27:40.000000000 +0200 @@ -217,6 +217,52 @@ }; partial alphanumeric_keys +xkb_symbols "unicode" { + + include "fr(latin9)" + + // Move acute and remove periodcentered + key { [ ampersand, 1, dead_acute, acute ] }; + + // Add correct unicode typographical apostrophe + key { [ apostrophe, 4, braceleft, 0x1002019 ] }; + + // Add ubreve + key { [ w, W, guillemotleft, ubreve ] }; + key { [ x, X, guillemotright, Ubreve ] }; + + // add trademark access + key { [ c, C, copyright, trademark ] }; + + // add arrows + key { [ v, V, registered, leftarrow ] }; + key { [ b, B, ssharp, rightarrow ] }; + key { [ n, N, notsign, uparrow ] }; + key { [ comma, question, questiondown, downarrow ] }; + + // Add more math operators + key { [ semicolon, period, multiply, 0x10022C5 ] }; + key { [ colon, slash, division, 0x1002215 ] }; + key { [ exclam, section, exclamdown, 0x1002212 ] }; + + + // Add brokenbar access + key { [ less, greater, lessthanequal, greaterthanequal ] }; + + // Make nobreakspace harder to hit + key { [ space, space, space, nobreakspace ] }; + + // Fix the broken dot/comma logic (original errors : mine) + include "keypad(comma3)" + + // Add math operators and arrows to the keypad + include "keypad(unimath)" + include "keypad(uniarrows)" +}; + + + +partial alphanumeric_keys xkb_symbols "latin9_Sundeadkeys" { // Modifies the basic fr-latin9 layout to use the Sun dead keys diff -uNr xkeyboard-config-0.8.orig/symbols/keypad xkeyboard-config-0.8/symbols/keypad --- xkeyboard-config-0.8.orig/symbols/keypad 2005-09-21 23:29:26.000000000 +0200 +++ xkeyboard-config-0.8/symbols/keypad 2006-09-13 23:17:52.000000000 +0200 @@ -87,3 +87,52 @@ xkb_symbols "comma" { key { [ KP_Delete, KP_Separator ] }; }; + +xkb_symbols "comma2" { + + key { type[Group1] = "SIMPLE_FOUR_LEVEL_KEYPAD", + [ KP_Delete, KP_Separator, KP_Delete, KP_Decimal ] }; +}; + +xkb_symbols "comma3" { + + key { type[Group1] = "SIMPLE_FOUR_LEVEL_KEYPAD", + [ KP_Delete, KP_Decimal, KP_Delete, KP_Separator ] }; +}; + +// Math keypad with unicode operators +// Added by nicolas.mailhot at laposte.net + +xkb_symbols "unimath" { + + // Not using numlock as modifier may seem unintuive + // But these levels are more a computer science vs typography switch + // than a digit vs directions one + // As such they belong more with level3 and shift than numlock + key.type[Group1] = "FOUR_LEVEL" ; + + key { [ KP_Divide, KP_Divide, 0x1002215, 0x10000F7 ] }; + key { [ KP_Multiply, KP_Multiply, 0x10022C5, 0x10000D7 ] }; + key { [ KP_Subtract, KP_Subtract, 0x1002212, 0x1002212 ] }; + key { [ KP_Add, KP_Add, 0x100002B, 0x100002B ] }; + +}; + +// Adds arrow symbols to the keypad digit keys +// Added by nicolas.mailhot at laposte.net + +xkb_symbols "uniarrows" { + + key.type[Group1] = "SIMPLE_FOUR_LEVEL_KEYPAD" ; + + key { [ KP_Home, KP_7, 0x1002196, 0x10021D6 ] }; + key { [ KP_Up, KP_8, 0x1002191, 0x10021D1 ] }; + key { [ KP_Prior, KP_9, 0x1002197, 0x10021D7 ] }; + key { [ KP_Left, KP_4, 0x1002190, 0x10021D0 ] }; + key { [ KP_Begin, KP_5, 0x1002194, 0x10021D4 ] }; + key { [ KP_Right, KP_6, 0x1002192, 0x10021D2 ] }; + key { [ KP_End, KP_1, 0x1002199, 0x10021D9 ] }; + key { [ KP_Down, KP_2, 0x1002193, 0x10021D3 ] }; + key { [ KP_Next, KP_3, 0x1002198, 0x10021D8 ] }; + key { [ KP_Insert, KP_0, 0x1002195, 0x10021D5 ] }; +}; diff -uNr xkeyboard-config-0.8.orig/types/extra xkeyboard-config-0.8/types/extra --- xkeyboard-config-0.8.orig/types/extra 2005-10-16 03:24:47.000000000 +0200 +++ xkeyboard-config-0.8/types/extra 2006-09-13 21:29:25.000000000 +0200 @@ -68,6 +68,20 @@ level_name[Level4] = "Alt Number"; }; + // Another shift-insensitive four level keypad variant + // Sometimes three modifiers is just too much + type "SIMPLE_FOUR_LEVEL_KEYPAD" { + modifiers = NumLock+LevelThree; + map[None] = Level1; + map[NumLock] = Level2; + map[LevelThree] = Level3; + map[NumLock+LevelThree] = Level4; + level_name[Level1] = "Base"; + level_name[Level2] = "Number"; + level_name[Level3] = "Alt Base"; + level_name[Level4] = "Alt Number"; + }; + // Special type for keys used in Serbian Latin Unicode map // It makes it possible to use all three forms of latin letters // present in Unicode that are made up of two separate letters