diff options
author | svu <svu> | 2006-09-24 20:07:00 +0000 |
---|---|---|
committer | svu <svu> | 2006-09-24 20:07:00 +0000 |
commit | 937da24b692b3a41f4ac5520c0fe4178738c1afd (patch) | |
tree | 6320671e53b72d8c78461b1807b91d84998c4479 | |
parent | c2d22f07efbb0aca5bedf80343aed5e9e4a89473 (diff) |
new French layouts, b.fd.o#8240
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | docs/README.enhancing | 14 | ||||
-rw-r--r-- | rules/base.o_s.part | 2 | ||||
-rw-r--r-- | rules/base.xml.in | 30 | ||||
-rw-r--r-- | symbols/fr | 185 | ||||
-rw-r--r-- | symbols/keypad | 212 | ||||
-rw-r--r-- | types/extra | 34 |
7 files changed, 473 insertions, 7 deletions
@@ -6,6 +6,9 @@ * rules/base.ml_s.part: macbooks should use the vendor symbols, if possible, closing https://bugs.freedesktop.org/show_bug.cgi?id=8385 + * rules/base.o_s.part, rules/base.xml.in, symbols/fr, symbols/keypad: + added more French variants, new options, closing + https://bugs.freedesktop.org/show_bug.cgi?id=8240 2006-09-18 Sergey Udaltsov diff --git a/docs/README.enhancing b/docs/README.enhancing index 695cc5db..272b201f 100644 --- a/docs/README.enhancing +++ b/docs/README.enhancing @@ -293,6 +293,20 @@ The most used schemes are: Lock+LevelThree modifiers apply the symbol from the third level is taken. This also, shift-cancels-caps variant. + FOUR_LEVEL_MIXED_KEYPAD + A four-level keypad scheme where the first two levels are similar + to the KEYPAD scheme (NumLock+Shift) + LevelThree acts as an override providing access to two Shift-ed + levels. When LevelThree is active we totally ignore NumLock state + Intended for the digit area of the keypad + + FOUR_LEVEL_X + A four-level scheme where the base level accepts no modifier, + LevelThree provides two more Shift-ed levels like in the previous + scheme, and Ctrl+Alt controls the fourth level + Intended for the operator part of a keypad, though since NumLock + plays no part, it is not keypad-specific + Besides that, there are several schemes for special purposes: PC_BREAK diff --git a/rules/base.o_s.part b/rules/base.o_s.part index 27849426..95492830 100644 --- a/rules/base.o_s.part +++ b/rules/base.o_s.part @@ -56,3 +56,5 @@ eurosign:e = +eurosign(e) eurosign:5 = +eurosign(5) eurosign:2 = +eurosign(2) + keypad:oss = +keypad(oss) + keypad:legacy = +keypad(legacy) diff --git a/rules/base.xml.in b/rules/base.xml.in index 8c88f7f5..691e7279 100644 --- a/rules/base.xml.in +++ b/rules/base.xml.in @@ -1504,24 +1504,48 @@ </variant> <variant> <configItem> - <name>latin9</name> + <name>oss</name> <_description>Alternative</_description> </configItem> </variant> <variant> <configItem> - <name>latin9_nodeadkeys</name> + <name>oss_latin9</name> + <_description>Alternative, latin-9 only</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>oss_nodeadkeys</name> <_description>Alternative, eliminate dead keys</_description> </configItem> </variant> <variant> <configItem> - <name>latin9_sundeadkeys</name> + <name>oss_sundeadkeys</name> <_description>Alternative, Sun dead keys</_description> </configItem> </variant> <variant> <configItem> + <name>latin9</name> + <_description>(Legacy) Alternative</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>latin9_nodeadkeys</name> + <_description>(Legacy) Alternative, eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>latin9_sundeadkeys</name> + <_description>(Legacy) Alternative, Sun dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> <name>dvorak</name> <_description>Dvorak</_description> </configItem> @@ -81,6 +81,184 @@ xkb_symbols "nodeadkeys" { 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 @@ xkb_symbols "nodeadkeys" { // // 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 @@ xkb_symbols "latin9_sundeadkeys" { 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 @@ xkb_symbols "latin9_nodeadkeys" { 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 ] }; diff --git a/symbols/keypad b/symbols/keypad index 9c0f6447..cd8f0ce8 100644 --- a/symbols/keypad +++ b/symbols/keypad @@ -137,3 +137,215 @@ partial keypad_keys 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) +}; diff --git a/types/extra b/types/extra index 544f8532..8956f6c4 100644 --- a/types/extra +++ b/types/extra @@ -51,6 +51,40 @@ partial default xkb_types "default" { level_name[Level4] = "Shift Alt"; }; + // Another four level keypad variant + // First two levels are controled by NumLock (with active Shift-ing like + // in KEYPAD). LevelThree overrides this mode, with two additional + // Shift-ed levels + // NumLock state is intentionnaly ignored when LevelThree is active + type "FOUR_LEVEL_MIXED_KEYPAD" { + modifiers = Shift+NumLock+LevelThree; + map[None] = Level1; + map[Shift+NumLock] = Level1; + map[NumLock] = Level2; + map[Shift] = Level2; + map[LevelThree] = Level3; + map[NumLock+LevelThree] = Level3; + map[Shift+LevelThree] = Level4; + map[Shift+NumLock+LevelThree] = Level4; + level_name[Level1] = "Base"; + level_name[Level2] = "Number"; + level_name[Level3] = "Alt Base"; + level_name[Level4] = "Shift Alt"; + }; + + // Base level, two Shift-ed LevelThree levels, one Ctrl+Alt command level + type "FOUR_LEVEL_X" { + modifiers = Shift+LevelThree+Control+Alt; + map[None] = Level1; + map[LevelThree] = Level2; + map[Shift+LevelThree] = Level3; + map[Control+Alt] = Level4; + level_name[Level1] = "Base"; + level_name[Level2] = "Alt Base"; + level_name[Level3] = "Shift Alt"; + level_name[Level4] = "Ctrl+Alt"; + }; + // 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 |