xkbdesc/symbols fr,1.9,1.10 keypad,1.3,1.4

"Sergey V. Oudaltsov" <xlibs-commit-u7BhqnqprCWvj1b/[email protected]>
Newsgroups gmane.comp.freedesktop.xlibs.cvs
Message-ID <[email protected]>
Committed by: svu

Update of /cvs/xlibs/xkbdesc/symbols
In directory kemper:/tmp/cvs-serv24447/symbols

Modified Files:
	fr keypad 
Log Message:
new French layouts, b.fd.o#8240

Index: fr
===================================================================
RCS file: /cvs/xlibs/xkbdesc/symbols/fr,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- fr	17 Sep 2006 21:40:40 -0000	1.9
+++ fr	24 Sep 2006 20:07:00 -0000	1.10
@@ -81,6 +81,184 @@
     key <AB10>	{ [    exclam,    section, dead_belowdot,    abovedot ]	};
 };
 
+
+// Unicode French derivative
+// Loose refactoring of the historic Linux French keyboard layout
+//
+// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+//
+// Credits (fr-latin1, fr-latin0, fr-latin9)
+//   © 199x-1996 René Cougnenc ✝
+//   © 1997-2002 Guylhem Aznar <clavier @ externe.net> 
+//   © 2003-2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+//
+// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
+// │ Ø ¸ │ 1 ˇ │ 2 É │ 3 ˘ │ 4 — │ 5 – │ 6 ‑ │ 7 È │ 8 ™ │ 9 Ç │ 0 À │ ° ≠ │ + ± ┃ ⌫ Retour┃
+// │ ø ` │ & ´ │ é ~ │ " # │ ' { │ ( [ │ - | │ è ` │ _ \ │ ç ^ │ à @ │ ) ] │ = } ┃  arrière┃
+// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
+// ┃       ┃ A Æ │ Z  │ E ¢ │ R Ê │ T Þ │ Y Ÿ │ U Û │ I Î │ O Œ │ P Ô │ ¨ ˚ │ £ ¥ ┃Entrée ┃
+// ┃Tab ↹  ┃ a æ │ z â │ e € │ r ê │ t þ │ y ÿ │ u û │ i î │ o œ │ p ô │ ^ ~ │ $ ³ ┃   ⏎   ┃
+// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓      ┃
+// ┃        ┃ Q Ä │ S „ │ D Ë │ F ` │ G ' │ H Ð │ J Ü │ K Ï │ L Ŀ │ M Ö │ % Ù │ µ ̄ ┃      ┃
+// ┃Maj ⇬   ┃ q ä │ s ß │ d ë │ f ‘ │ g ’ │ h ð │ j ü │ k ï │ l ŀ │ m ö │ ù ¹ │ * ² ┃      ┃
+// ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫
+// ┃       ┃ > ≥ │ W “ │ X ” │ C ® │ V ← │ B ↑ │ N → │ ? … │ . . │ / ∕ │ § − ┃             ┃
+// ┃Shift ⇧┃ < ≤ │ w « │ x » │ c © │ v ⍽ │ b ↓ │ n ¬ │ , ¿ │ ; × │ : ÷ │ ! ¡ ┃Shift ⇧      ┃
+// ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛
+// ┃       ┃       ┃       ┃ ␣              Espace insécable ⍽ ┃       ┃       ┃       ┃
+// ┃Ctrl   ┃Meta   ┃Alt    ┃ ␣ Espace                        ␣ ┃AltGr ⇮┃Menu   ┃Ctrl   ┃
+// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
+partial alphanumeric_keys
+xkb_symbols "oss" {
+
+    include "latin"
+    include "level3(ralt_switch)"
+    include "keypad(oss)"
+
+    name[Group1]="France - Alternative";
+
+    // First row
+    key <TLDE>	{ [           oslash,         Ooblique,           dead_grave,          dead_cedilla ] }; // ø Ø  ` ¸ 
+    key <AE01>	{ [        ampersand,                1,           dead_acute,            dead_caron ] }; // & 1 ´ ˇ
+    key <AE02>	{ [           eacute,                2,           asciitilde,                Eacute ] }; // é 2 ~ É
+    key <AE03>	{ [         quotedbl,                3,           numbersign,            dead_breve ] }; // " 3 # ˘
+    key <AE04>	{ [       apostrophe,                4,            braceleft,             0x1002014 ] }; // ' 4 { — (tiret cadratin)
+    key <AE05>	{ [        parenleft,                5,          bracketleft,             0x1002013 ] }; // ( 5 } – (tiret demi-cadratin)
+    key <AE06>	{ [            minus,                6,                  bar,             0x1002011 ] }; // - 6 | ‑ (tiret insécable)
+    key <AE07>	{ [           egrave,                7,                grave,                Egrave ] }; // è 7 ` È
+    key <AE08>	{ [       underscore,                8,            backslash,             trademark ] }; // _ 8 \ ™
+    key <AE09>	{ [         ccedilla,                9,          asciicircum,              Ccedilla ] }; // ç 9 ^ Ç
+    key <AE10>	{ [           agrave,                0,                   at,                Agrave ] }; // à 0 @ À
+    key <AE11>	{ [       parenright,           degree,         bracketright,              notequal ] }; // ) ° ] ≠ 
+    key <AE12>	{ [            equal,             plus,           braceright,             plusminus ] }; // = + } ±
+
+    // Second row
+    key <AD01>	{ [                a,                A,                   ae,                    AE ] }; // a A æ Æ
+    key <AD02>	{ [                z,                Z,          acircumflex,           Acircumflex ] }; // z Z â Â
+    key <AD03>	{ [                e,                E,             EuroSign,                  cent ] }; // e E € ¢
+    key <AD04>	{ [                r,                R,          ecircumflex,           Ecircumflex ] }; // r R ê Ê
+    key <AD05>	{ [                t,                T,                thorn,                 THORN ] }; // t T þ Þ
+    key <AD06>	{ [                y,                Y,           ydiaeresis,            Ydiaeresis ] }; // y Y ÿ Ÿ
+    key <AD07>	{ [                u,                U,          ucircumflex,           Ucircumflex ] }; // u U û Û
+    key <AD08>	{ [                i,                I,          icircumflex,           Icircumflex ] }; // i I î Î
+    key <AD09>	{ [                o,                O,                   oe,                    OE ] }; // o O œ Œ
+    key <AD10>	{ [                p,                P,          ocircumflex,           Ocircumflex ] }; // p P ô Ô
+    key <AD11>	{ [  dead_circumflex,   dead_diaeresis,           dead_tilde,        dead_abovering ] }; // ^ ̈ ̃ ˚
+    key <AD12>	{ [           dollar,         sterling,        threesuperior,                   yen ] }; // $ £ ³ ¥
+
+    // Third row
+    key <AC01>	{ [                q,                Q,           adiaeresis,            Adiaeresis ] }; // q Q ä Ä
+    key <AC02>	{ [                s,                S,               ssharp,    doublelowquotemark ] }; // s S ß „ 
+    key <AC03>	{ [                d,                D,           ediaeresis,            Ediaeresis ] }; // d D ë Ë
+    key <AC04>	{ [                f,                F,  leftsinglequotemark,             quoteleft ] }; // f F ‘ `
+    key <AC05>	{ [                g,                G, rightsinglequotemark,            quoteright ] }; // g G ’ '
+    key <AC06>	{ [                h,                H,                  eth,                   ETH ] }; // h H ð Ð
+    key <AC07>	{ [                j,                J,           udiaeresis,            Udiaeresis ] }; // j J ü Ü
+    key <AC08>	{ [                k,                K,           idiaeresis,            Idiaeresis ] }; // k K ï Ï
+    key <AC09>	{ [                l,                L,            0x1000140,             0x100013F ] }; // l L ŀ Ŀ
+    key <AC10>	{ [                m,                M,           odiaeresis,            Odiaeresis ] }; // m M ö Ö
+    key <AC11>	{ [           ugrave,          percent,          onesuperior,                Ugrave ] }; // ù % ¹ Ù
+    key <BKSL>	{ [         asterisk,               mu,          twosuperior,           dead_macron ] }; // * µ ² ̄
+
+    // Fourth row
+    key <LSGT>  { [             less,          greater,        lessthanequal,      greaterthanequal ] }; // < > ≤ ≥
+    key <AB01>  { [                w,                W,        guillemotleft,   leftdoublequotemark ] }; // w W « “
+    key <AB02>  { [                x,                X,       guillemotright,  rightdoublequotemark ] }; // x X » ”
+    key <AB03>  { [                c,                C,            copyright,            registered ] }; // c C © ®
+    key <AB04>  { [                v,                V,            0x100202F,             leftarrow ] }; // v V ⍽ ← (espace fine insécable)
+    key <AB05>  { [                b,                B,            downarrow,               uparrow ] }; // b B ↓ ↑
+    key <AB06>  { [                n,                N,              notsign,            rightarrow ] }; // n N ¬ →
+    key <AB07>  { [            comma,         question,         questiondown,             0x1002026 ] }; // , ? ¿ …
+    key <AB08>  { [        semicolon,           period,             multiply,             0x10022C5 ] }; // ; . × ⋅
+    key <AB09>  { [            colon,            slash,             division,             0x1002215 ] }; // : / ÷ ∕
+    key <AB10>  { [           exclam,          section,           exclamdown,             0x1002212 ] }; // ! § ¡ −
+
+    // Make nobreakspace harder to hit
+    key <SPCE>  { [            space,            space,                space,          nobreakspace ] }; // ␣ ␣ ␣ ⍽ (espace insécable)
+};
+
+partial alphanumeric_keys
+xkb_symbols "oss_latin9" {
+
+    // Restricts the fr(oss) layout to latin9 symbols
+
+    include "fr(oss)"
+    include "keypad(oss_latin9)"
+
+    name[Group1]="France - Alternative, latin-9 only";
+
+    // First row
+    key <AE03>	{ [         quotedbl,                3,           numbersign,            dead_tilde ] }; // " 3 # ~
+    key <AE04>	{ [       apostrophe,                4,            braceleft,            underscore ] }; // ' 4 { _
+    key <AE05>	{ [        parenleft,                5,          bracketleft,                 minus ] }; // ( 5 } -
+    key <AE06>  { [            minus,                6,                  bar,                 minus ] }; // - 6 | -
+    key <AE08>  { [       underscore,                8,            backslash,             backslash ] }; // _ 8 \ \
+
+    // Third row
+    key <AC02>	{ [                s,                S,               ssharp,         guillemotleft ] }; // s S ß « 
+    key <AC04>	{ [                f,                F,            apostophe,             quoteleft ] }; // f F ' `
+    key <AC05>	{ [                g,                G,           apostrophe,            quoteright ] }; // g G ' '
+    key <AC09>  { [                l,                L,       periodcentered,        periodcentered ] }; // l L · ·
+    key <BKSL>	{ [         asterisk,               mu,          twosuperior,       dead_circumflex ] }; // * µ ² ^ 
+
+    // Fourth row
+    key <LSGT>  { [             less,          greater,                 less,               greater ] }; // < > < >
+    key <AB01>  { [                w,                W,        guillemotleft,         guillemotleft ] }; // w W « «
+    key <AB02>  { [                x,                X,       guillemotright,        guillemotright ] }; // x X » »
+    key <AB04>  { [                v,                V,         nobreakspace,                  less ] }; // v V ⍽ < (espace insécable)
+    key <AB05>  { [                b,                B,                minus,           asciicircum ] }; // b B - ^
+    key <AB06>  { [                n,                N,              notsign,               greater ] }; // n N ¬ >
+    key <AB07>  { [            comma,         question,         questiondown,                period ] }; // , ? ¿ .
+    key <AB08>  { [        semicolon,           period,             multiply,        periodcentered ] }; // ; . × ·
+    key <AB09>  { [            colon,            slash,             division,                 slash ] }; // : / ÷ /
+    key <AB10>  { [           exclam,          section,           exclamdown,                 minus ] }; // ! § ¡ -
+};
+
+partial alphanumeric_keys
+xkb_symbols "oss_Sundeadkeys" {
+
+    // Modifies the basic fr(oss) layout to use the Sun dead keys
+
+    include "fr(oss)"
+
+    // First row
+    key <TLDE>	{ [           oslash,         Ooblique,          SunFA_Grave,         SunFA_Cedilla ] }; // ø Ø ` ¸ 
+    key <AE01>	{ [        ampersand,                1,          SunFA_Acute,            dead_caron ] }; // & 1 ´ ˇ
+
+    // Second row
+    key <AD11>	{ [     SunFA_Circum,  SunFA_Diaeresis,          SunFA_Tilde,        dead_abovering ] }; // ^ ̈ ̃ ˚
+};
+
+partial alphanumeric_keys
+xkb_symbols "oss_sundeadkeys" {
+
+    include "fr(oss_Sundeadkeys)"
+
+    name[Group1]="France - Alternative, Sun dead keys";
+};
+
+partial alphanumeric_keys
+xkb_symbols "oss_nodeadkeys" {
+
+    // Modifies the basic fr(oss) layout to eliminate all dead keys
+
+    include "fr(oss)"
+
+    name[Group1]="France - Alternative, eliminate dead keys";
+
+    // First row
+    key <TLDE>	{ [           oslash,         Ooblique,                grave,          dead_cedilla ] }; // ø Ø ` ¸ 
+    key <AE01>	{ [        ampersand,                1,                acute,                 caron ] }; // & 1 ´ ˇ
+    key <AE03>  { [         quotedbl,                3,           numbersign,                 breve ] }; // " 3 # ˘
+
+    // Second row
+    key <AD11>	{ [      asciicircum,  	     diaeresis,           asciitilde,                 Aring ] }; // ^ ̈ ~ Å
+
+    // Third row
+    key <BKSL>  { [         asterisk,               mu,          twosuperior,                macron ] }; // * µ ² ̄
+};
+
+
 // Historic Linux French keyboard layout (fr-latin9)
 // Copyright (c) 199x, 2002 Rene Cougnenc (original work)
 //                          Guylhem Aznar <clavier @ externe.net> (maintainer)
@@ -146,14 +324,13 @@
 //
 // AltGr (1) puis e : é
 // Shift+AltGr (1) puis e : É ...
-
 partial alphanumeric_keys
 
 xkb_symbols "latin9" {
 
     include "latin"
 
-    name[Group1]="France - Alternative";
+    name[Group1]="France - (Legacy) Alternative";
 
     key <TLDE>	{ [              oe,              OE, leftdoublequotemark, rightdoublequotemark ] };
     key <AE01>	{ [       ampersand,               1,          dead_acute,       periodcentered ] };
@@ -234,7 +411,7 @@
 
     include "fr(latin9_Sundeadkeys)"
 
-    name[Group1]="France - Alternative, Sun dead keys";
+    name[Group1]="France - (Legacy) Alternative, Sun dead keys";
 };
 
 partial alphanumeric_keys
@@ -244,7 +421,7 @@
 
     include "fr(latin9)"
 
-    name[Group1]="France - Alternative, eliminate dead keys";
+    name[Group1]="France - (Legacy) Alternative, eliminate dead keys";
 
     key <AE01>	{ [       ampersand,               1,          apostrophe,       periodcentered ] };
     key <AE07>	{ [          egrave,               7,               grave,               Egrave ] };

Index: keypad
===================================================================
RCS file: /cvs/xlibs/xkbdesc/symbols/keypad,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- keypad	17 Sep 2006 20:03:34 -0000	1.3
+++ keypad	24 Sep 2006 20:07:00 -0000	1.4
@@ -137,3 +137,215 @@
 xkb_symbols "dot" {
     key <KPDL> {       [ KP_Delete, KP_Decimal ] };
 };
+
+
+// Legacy PC keypad definition
+// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+keypad_keys
+xkb_symbols "legacy" {
+
+    include "keypad(core)"
+    include "keypad(legacymath)"
+    include "keypad(legacynumber)"
+};
+
+
+// Complete new keypad definition
+// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+keypad_keys
+xkb_symbols "oss" {
+
+    include "keypad(core)"
+    include "keypad(ossmath)"
+    include "keypad(ossnumber)"
+};
+
+
+// Latin9 restriction of new keypad definition
+// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+keypad_keys
+xkb_symbols "oss_latin9" {
+
+    include "keypad(core)"
+    include "keypad(ossmath_latin9)"
+    include "keypad(legacynumber)"
+
+    key <KPDL> { type="FOUR_LEVEL_MIXED_KEYPAD",
+                 [ KP_Delete,             period, comma, nobreakspace ] }; // <delete> . , ⍽ (no-break space)
+};
+
+// Keypad keys nobody changes
+// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+partial keypad_keys
+xkb_symbols "core" {
+
+    modifier_map Mod2 { Num_Lock };
+
+    key <NMLK> { [ Num_Lock, Pointer_EnableKeys ] };
+    key <KPEN> { [ KP_Enter                     ] };
+    key <KPEQ> { [ KP_Equal                     ] };
+};
+
+
+// Legacy keypad math area
+// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+//
+// ┏━━━━━┱─────┬─────┬─────┐
+// ┃Num  ┃ ₁   │ ₂   │ ₃   │ ₁ <XF86_Ungrab>
+// ┃Lock⇭┃ /   │ *   │ -   │ ₂ <XF86_ClearGrab>
+// ┡━━━━━╃─────┼─────┼─────┤ ₃ <XF86_Prev_VMode>
+//                   │ ₄   │ ₄ <XF86_Next_VMode>
+//                   │     │
+//                   ┤     │ 1 None
+//                   │     │ 2 Ctrl+Alt
+//                   │ +   │
+//                   ╆━━━━━┪
+partial keypad_keys
+xkb_symbols "legacymath" {
+
+    key.type[Group1]="CTRL+ALT" ;
+
+    key <KPDV> { [   KP_Divide,     XF86_Ungrab ] }; // / <XF86_Ungrab>
+    key <KPMU> { [ KP_Multiply,  XF86_ClearGrab ] }; // * <XF86_ClearGrab>
+    key <KPSU> { [ KP_Subtract, XF86_Prev_VMode ] }; // - <XF86_Prev_VMode>
+
+    key <KPAD> { [      KP_Add, XF86_Next_VMode ] }; // + <XF86_Next_VMode>
+
+};
+
+
+// Keypad math area with non-CS operators
+// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+//
+// ┏━━━━━┱─────┬─────┬─────┐
+// ┃Num  ┃ ∕ ₁ │ . ₂ │ − ₃ │ ₁ <XF86_Ungrab>
+// ┃Lock⇭┃ / ÷ │ * × │ - − │ ₂ <XF86_ClearGrab>
+// ┡━━━━━╃─────┼─────┼─────┤ ₃ <XF86_Prev_VMode>
+//                   │ + ₄ │ ₄ <XF86_Next_VMode>
+//                   │     │
+//                   ┤     │ 1 None
+//                   │     │ 2 Level3 ⇮
+//                   │ + + │ 3 Shift+Level3 ⇧⇮
+//                   ╆━━━━━┪ 4 Ctrl+Alt
+partial keypad_keys
+xkb_symbols "ossmath" {
+
+    key.type[Group1]="FOUR_LEVEL_X" ;
+
+    key <KPDV> { [   KP_Divide, 0x1002215, 0x10000F7,     XF86_Ungrab ] }; // / ∕ ÷     <XF86_Ungrab>
+    key <KPMU> { [ KP_Multiply, 0x10022C5, 0x10000D7,  XF86_ClearGrab ] }; // * ⋅ ×  <XF86_ClearGrab>
+    key <KPSU> { [ KP_Subtract, 0x1002212, 0x1002212, XF86_Prev_VMode ] }; // - − − <XF86_Prev_VMode>
+
+    key <KPAD> { [      KP_Add, 0x100002B, 0x100002B, XF86_Next_VMode ] }; // + + + <XF86_Next_VMode>
+
+};
+
+
+// Keypad math area with non-CS operators, restricted to latin9
+// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+//
+// ┏━━━━━┱─────┬─────┬─────┐
+// ┃Num  ┃ / ₁ │ · ₂ │ - ₃ │ ₁ <XF86_Ungrab>
+// ┃Lock⇭┃ / ÷ │ * × │ - - │ ₂ <XF86_ClearGrab>
+// ┡━━━━━╃─────┼─────┼─────┤ ₃ <XF86_Prev_VMode>
+//                   │ + ₄ │ ₄ <XF86_Next_VMode>
+//                   │     │
+//                   ┤     │ 1 None
+//                   │     │ 2 Level3 ⇮
+//                   │ + + │ 3 Shift+Level3 ⇧⇮
+//                   ╆━━━━━┪ 4 Ctrl+Alt
+partial keypad_keys
+xkb_symbols "ossmath_latin9" {
+
+    key.type[Group1]="FOUR_LEVEL_X";
+
+    key <KPDV> { [   KP_Divide,          slash, division,     XF86_Ungrab ] }; // / / ÷     <XF86_Ungrab>
+    key <KPMU> { [ KP_Multiply, periodcentered, multiply,  XF86_ClearGrab ] }; // * · ×  <XF86_ClearGrab>
+    key <KPSU> { [ KP_Subtract,          minus,    minus, XF86_Prev_VMode ] }; // - - - <XF86_Prev_VMode>
+
+    key <KPAD> { [      KP_Add,           plus,     plus, XF86_Next_VMode ] }; // + + + <XF86_Next_VMode>
+};
+
+
+// Legacy keypad number area
+// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+//
+// ┏━━━━━┱                   ⇱ Home
+// ┃Num  ┃                   ⇲ End
+// ┃Lock⇭┃                   ⇞ Page up
+// ┡━━━━━╃─────┼─────┼       ⇟ Page down
+// │ 7   │ 8   │ 9   │       ⇞ Page up
+// │ ⇱   │ ⇧   │ ⇞   │       ⎀ Insert
+// ├─────┼─────┼─────┤       ␥ Delete
+// │ 4   │ 5   │ 6   │       ⇦⇧⇨⇩ Directions
+// │ ⇦   │     │ ⇨   │
+// ├─────┼─────┼─────╆━━━━━┪
+// │ 1   │ 2   │ 3   ┃Enter┃
+// │ ⇲   │ ⇩   │ ⇟   ┃  ⎆  ┃ 1 None
+// ├─────┴─────┼─────┨     ┃ 2 Num Lock ⇭
+// │ 0         │ .   ┃     ┃
+// │ ⎀         │ ␥   ┃     ┃
+// └───────────┴─────┺━━━━━┛
+partial keypad_keys
+xkb_symbols "legacynumber" {
+
+    key.type[Group1]="KEYPAD" ;
+
+    key <KP7>  { [   KP_Home,       KP_7 ] }; //   <home> 7
+    key <KP8>  { [     KP_Up,       KP_8 ] }; //     <up> 8
+    key <KP9>  { [  KP_Prior,       KP_9 ] }; //  <prior> 9
+ 
+    key <KP4>  { [   KP_Left,       KP_4 ] }; //   <left> 4
+    key <KP5>  { [  KP_Begin,       KP_5 ] }; //  <begin> 5
+    key <KP6>  { [  KP_Right,       KP_6 ] }; //  <right> 6
+
+    key <KP1>  { [    KP_End,       KP_1 ] }; //    <end> 1
+    key <KP2>  { [   KP_Down,       KP_2 ] }; //   <down> 2
+    key <KP3>  { [   KP_Next,       KP_3 ] }; //   <next> 3
+
+    key <KP0>  { [ KP_Insert,       KP_0 ] }; // <insert> 0
+    key <KPDL> { [ KP_Delete, KP_Decimal ] }; // <delete> .
+};
+
+
+// Keypad number area with arrow symbols
+// Copyright © 2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net>
+//
+// ┏━━━━━┱                   ⇱ Home
+// ┃Num  ┃                   ⇲ End
+// ┃Lock⇭┃                   ⇞ Page up
+// ┡━━━━━╃─────┼─────┼       ⇟ Page down
+// │ 7 ⇖ │ 8 ⇑ │ 9 ⇗ │       ⇞ Page up
+// │ ⇱ ↖ │ ⇧ ↑ │ ⇞ ↗ │       ⎀ Insert
+// ├─────┼─────┼─────┤       ␥ Delete
+// │ 4 ⇐ │ 5 ⇔ │ 6 ⇗ │       ⇦⇧⇨⇩ Directions
+// │ ⇦ ← │   ↔ │ ⇨ ↗ │       ⍽ narrow no-break space
+// ├─────┼─────┼─────╆━━━━━┪
+// │ 1 ⇙ │ 2 ⇓ │ 3 ⇘ ┃Enter┃
+// │ ⇲ ↙ │ ⇩ ↓ │ ⇟ ↘ ┃  ⎆  ┃ 1 None
+// ├─────┴─────┼─────┨     ┃ 2 Num Lock ⇭
+// │ 0       ⇕ │ . ⍽ ┃     ┃ 3 Level3 ⇮
+// │ ⎀       ↕ │ ␥ , ┃     ┃ 4 Shift+Level3 ⇧⇮
+// └───────────┴─────┺━━━━━┛
+partial keypad_keys
+xkb_symbols "ossnumber" {
+
+    key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD" ;
+
+    key <KP7>  { [   KP_Home,   KP_7, 0x1002196, 0x10021D6 ] }; //   <home> 7 ↖ ⇖
+    key <KP8>  { [     KP_Up,   KP_8, 0x1002191, 0x10021D1 ] }; //     <up> 8 ↑ ⇑
+    key <KP9>  { [  KP_Prior,   KP_9, 0x1002197, 0x10021D7 ] }; //  <prior> 9 ↗ ⇗
+ 
+    key <KP4>  { [   KP_Left,   KP_4, 0x1002190, 0x10021D0 ] }; //   <left> 4 ← ⇐
+    key <KP5>  { [  KP_Begin,   KP_5, 0x1002194, 0x10021D4 ] }; //  <begin> 5 ↔ ⇔
+    key <KP6>  { [  KP_Right,   KP_6, 0x1002192, 0x10021D2 ] }; //  <right> 6 → ⇒
+
+    key <KP1>  { [    KP_End,   KP_1, 0x1002199, 0x10021D9 ] }; //    <end> 1 ↙ ⇙
+    key <KP2>  { [   KP_Down,   KP_2, 0x1002193, 0x10021D3 ] }; //   <down> 2 ↓ ⇓
+    key <KP3>  { [   KP_Next,   KP_3, 0x1002198, 0x10021D8 ] }; //   <next> 3 ↘ ⇘
+
+    key <KP0>  { [ KP_Insert,   KP_0, 0x1002195, 0x10021D5 ] }; // <insert> 0 ↕ ⇕
+    // We could use KP_Decimal and KP_Separator but we do not want the locale
+    // decimal and separator symbol but locale-insensitive dot and comma
+    key <KPDL> { [ KP_Delete, period,     comma, 0x100202F ] }; // <delete> . , ⍽ (narrow no-break space)
+};
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.