[xkeyboard-config] Add upstream patches for OLPC Spanish HS keyboard support

Daniel Drake dsd at fedoraproject.org
Wed May 15 15:02:29 UTC 2013


commit aef7325f18073c02e2d35e88594da16a2ec9eced
Author: Daniel Drake <dsd at laptop.org>
Date:   Wed May 15 08:43:15 2013 -0600

    Add upstream patches for OLPC Spanish HS keyboard support

 olpc-ae00.patch                |   27 ++++
 olpc-mechanical-keyboard.patch |  258 ++++++++++++++++++++++++++++++++++++++++
 xkeyboard-config.spec          |    8 +-
 3 files changed, 292 insertions(+), 1 deletions(-)
---
diff --git a/olpc-ae00.patch b/olpc-ae00.patch
new file mode 100644
index 0000000..0f08277
--- /dev/null
+++ b/olpc-ae00.patch
@@ -0,0 +1,27 @@
+From ffdfa93d9dff9a5642693002dadf154a6acc7126 Mon Sep 17 00:00:00 2001
+From: Daniel Drake <dsd at laptop.org>
+Date: Wed, 8 May 2013 13:46:19 -0600
+Subject: [PATCH] Fix AE00 alias in olpcm keycodes
+
+The olpcm symbols refer to AE00 but that is not defined anywhere.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=34738
+---
+ keycodes/olpc | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/keycodes/olpc b/keycodes/olpc
+index 0d7724b..d8f1ff8 100644
+--- a/keycodes/olpc
++++ b/keycodes/olpc
+@@ -16,6 +16,7 @@ xkb_keycodes "olpc" {
+ default
+ xkb_keycodes "olpcm" {
+ 
++   alias <AE00> = <TLDE>;	// many OLPC keyboards don't put tilde there
+    alias <AA02> = <BKSL>;	// on model olpcm, new physical position of BKSL
+    alias <AA06> = <AE12>;	// on model olpcm, new physical position of =+
+    alias <AA07> = <AC11>;	// on model olpcm, new physical position of '"
+-- 
+1.8.1.4
+
diff --git a/olpc-mechanical-keyboard.patch b/olpc-mechanical-keyboard.patch
new file mode 100644
index 0000000..5773ab6
--- /dev/null
+++ b/olpc-mechanical-keyboard.patch
@@ -0,0 +1,258 @@
+From 690ea60dcb6793879489c17ab5d85afd272fa0f7 Mon Sep 17 00:00:00 2001
+From: Walter Bender <walter.bender at gmail.com>
+Date: Sat, 20 Apr 2013 16:02:25 +0000
+Subject: add support for the OLPC mechanical non-membrane keyboard
+
+Patch updated against current tree.
+
+> From: Paul Fox <pgf at laptop.org>
+> Date: Tue, 20 Jul 2010 16:22:40 -0400
+> Subject: [PATCH] add support for the OLPC "mechanical" (non-membrane) keyboard
+>  model(s). to aid in this, add keycodes/olpc with aliases to avoid needing to
+>  use BKSL and TLDE, which don't appear anywhere near their "traditional"
+>  position on the olpcm mechanical keyboards.
+---
+Index: xkeyboard-config-2.8/keycodes/Makefile.am
+===================================================================
+--- xkeyboard-config-2.8.orig/keycodes/Makefile.am
++++ xkeyboard-config-2.8/keycodes/Makefile.am
+@@ -12,6 +12,7 @@ fujitsu \
+ hp \
+ ibm \
+ macintosh \
++olpc \
+ sony \
+ sun \
+ xfree86 \
+Index: xkeyboard-config-2.8/keycodes/olpc
+===================================================================
+--- /dev/null
++++ xkeyboard-config-2.8/keycodes/olpc
+@@ -0,0 +1,23 @@
++
++// OLPC's mechanical keyboard moves several keys to the AA row.  make
++// them easier to write symbol files naturally.
++
++// see http://wiki.laptop.org/go/OLPC_English_Non-membrane_Keyboard
++// and http://wiki.laptop.org/go/OLPC_Spanish_Non-membrane_Keyboard
++
++default
++xkb_keycodes "olpc" {
++
++   alias <AE00> = <TLDE>;	// many OLPC keyboards don't put tilde there
++   alias <AC12> = <BKSL>;	// on model olpc, physical position of BKSL
++
++};
++
++default
++xkb_keycodes "olpcm" {
++
++   alias <AA02> = <BKSL>;	// on model olpcm, new physical position of BKSL
++   alias <AA06> = <AE12>;	// on model olpcm, new physical position of =+
++   alias <AA07> = <AC11>;	// on model olpcm, new physical position of '"
++
++};
+Index: xkeyboard-config-2.8/rules/base.ml_c.part
+===================================================================
+--- xkeyboard-config-2.8.orig/rules/base.ml_c.part
++++ xkeyboard-config-2.8/rules/base.ml_c.part
+@@ -1,4 +1,5 @@
+   pc98		nec_vndr/jp	=	pc98(basic)
+   *		jp		=	complete+japan
+-  olpc         *               =       olpc
++  olpc          *               =       olpc
++  olpcm         *               =       olpc
+   *		*		=	complete
+Index: xkeyboard-config-2.8/rules/base.ml_s.part
+===================================================================
+--- xkeyboard-config-2.8.orig/rules/base.ml_s.part
++++ xkeyboard-config-2.8/rules/base.ml_s.part
+@@ -24,6 +24,8 @@
+   nokiasu8w	*			=	nokia_vndr/su-8w(%l)
+   olpc		$olpclayouts		=	olpc+%l%(m)
+   olpc		*			=	olpc+%l%(v)
++  olpcm		$olpclayouts		=	olpc+%l%(m)
++  olpcm		*			=	olpc+%l%(v)
+  $thinkpads   	br			=	pc+br(thinkpad)
+   sl-c3x00	*			=	pc+sharp_vndr/sl-c3x00(basic)
+   ws003sh	*			=	pc+sharp_vndr/ws003sh(basic)
+Index: xkeyboard-config-2.8/rules/evdev.m_k.part
+===================================================================
+--- xkeyboard-config-2.8.orig/rules/evdev.m_k.part
++++ xkeyboard-config-2.8/rules/evdev.m_k.part
+@@ -1,3 +1,5 @@
+   pc98		=	evdev(pc98)
+   applealu_jis	=	evdev+macintosh(jisevdev)
++  olpc          =       evdev+olpc(olpc)
++  olpcm         =       evdev+olpc(olpcm)
+   *		=	evdev
+Index: xkeyboard-config-2.8/symbols/es
+===================================================================
+--- xkeyboard-config-2.8.orig/symbols/es
++++ xkeyboard-config-2.8/symbols/es
+@@ -158,10 +158,12 @@ xkb_symbols "mac" {
+ partial alphanumeric_keys
+ xkb_symbols "olpc" {
+ 
++    // http://wiki.laptop.org/go/OLPC_Spanish_Keyboard
++
+     include "us(basic)"
+     name[Group1]="Spanish";
+ 
+-    key <TLDE> { [    masculine,    ordfeminine      ] };
++    key <AE00> { [    masculine,    ordfeminine      ] };
+     key <AE01> { [            1,         exclam,             bar ] };
+     key <AE02> { [            2,       quotedbl,              at ] };
+     key <AE03> { [            3,     dead_grave,      numbersign,   grave           ] };
+@@ -180,7 +182,7 @@ xkb_symbols "olpc" {
+ 
+     key <AC10> { [       ntilde,        Ntilde                  ] };
+     key <AC11> { [         plus,       asterisk,      dead_tilde ] };
+-    key <BKSL> { [ bracketright,     braceright,      section    ] };
++    key <AC12> { [ bracketright,     braceright,      section    ] };
+ 
+     key <AB08> { [        comma,      semicolon                  ] };
+     key <AB09> { [       period,          colon                  ] };
+@@ -190,6 +192,47 @@ xkb_symbols "olpc" {
+ 
+     include "level3(ralt_switch)"
+ };
++
++partial alphanumeric_keys
++xkb_symbols "olpcm" {
++
++    // Mechanical (non-membrane) OLPC Spanish keyboard layout.
++    // See: http://wiki.laptop.org/go/OLPC_Spanish_Non-membrane_Keyboard
++
++    include "us(basic)"
++    name[Group1]="Spain";
++
++    key <AE00> { [    questiondown,    exclamdown, backslash      ] };
++    key <AE01> { [            1,         exclam,             bar ] };
++    key <AE02> { [            2,       quotedbl,              at ] };
++    key <AE03> { [            3,     dead_grave,      numbersign,   grave           ] };
++    key <AE04> { [            4,     dollar,     asciitilde,     dead_tilde ] };
++    key <AE05> { [            5,        percent,     asciicircum,   dead_circumflex ] };
++    key <AE06> { [            6,      ampersand,         notsign ] };
++    key <AE07> { [            7,          slash,       backslash ] };   // no '\' label on olpcm, leave for compatibility
++    key <AE08> { [            8,      parenleft,    masculine                ] };
++    key <AE09> { [            9,     parenright,    ordfeminine                 ] };
++    key <AE10> { [            0,          equal                  ] };
++    key <AE11> { [   apostrophe,       question                  ] };
++
++    key <AD03> { [            e,              E,        EuroSign ] };
++    key <AD11> { [   dead_acute, dead_diaeresis,     dead_abovering, acute  ] };
++    key <AD12> { [  plus,      asterisk                  ] };
++
++    key <AC10> { [       ntilde,        Ntilde                  ] };
++    // no AC11 or AC12 on olpcm
++
++    key <AB08> { [        comma,      semicolon                  ] };
++    key <AB09> { [       period,          colon                  ] };
++    key <AB10> { [        minus,     underscore                  ] };
++
++    key <AA02>  { [        less,        greater ] };
++    key <AA06>  { [  bracketleft,      braceleft,   ccedilla,         Ccedilla  ] };
++    key <AA07>  { [  bracketright,     braceright                ] };
++
++
++    include "level3(ralt_switch)"
++};
+ 
+ partial alphanumeric_keys
+ xkb_symbols "deadtilde" {
+Index: xkeyboard-config-2.8/symbols/olpc
+===================================================================
+--- xkeyboard-config-2.8.orig/symbols/olpc
++++ xkeyboard-config-2.8/symbols/olpc
+@@ -13,9 +13,9 @@ xkb_symbols "olpc" {
+     modifier_map Mod4 { KP_Prior  }; // KP_Prior is the "O" game key
+     modifier_map Mod5 { KP_Next   }; // KP_Next  is the "X" game key
+ 
+-    key <I220> { [ XF86Search    ] }; // search key
+-    key <I221> { [ XF86Meeting   ] }; // fn+search key
++    key <I220> { [ XF86Search    ] }; // search key (unpopulated on olpcm, harmless)
++    key <I221> { [ XF86Meeting   ] }; // fn+search key (unpopulated on olpcm, harmless)
+     key <I236> { [ XF86Start     ] }; // gear key (fn+space)
+-    key <I147> { [ XF86TaskPane  ] }; // frame key (the top-right key)
+-    key <I224> { [ XF86Messenger ] }; // overlay key (next to frame key)
++    key <I147> { [ XF86TaskPane  ] }; // frame key (the top-right key) (unpopulated on olpcm, harmless)
++    key <I224> { [ XF86Messenger ] }; // overlay key (next to frame key) (unpopulated on olpcm, harmless)
+ };
+Index: xkeyboard-config-2.8/symbols/us
+===================================================================
+--- xkeyboard-config-2.8.orig/symbols/us
++++ xkeyboard-config-2.8/symbols/us
+@@ -1033,7 +1033,7 @@ xkb_symbols "olpc" {
+    key <AC07>  { [         j,          J,    EuroSign,         EuroSign ] };
+    key <AC10>  { [ semicolon,      colon,   masculine,      ordfeminine ] };
+    key <AC11>  { [ apostrophe,  quotedbl,    currency,         currency ] };
+-   key <BKSL>  { [ backslash,        bar,      section,         section ] };
++   key <AC12>  { [ backslash,        bar,      section,         section ] };
+ 
+    key <AB03>  { [         c,          C,    ccedilla,         Ccedilla ] };
+    key <AB06>  { [         n,          N,      ntilde,           Ntilde ] };
+@@ -1054,6 +1054,63 @@ xkb_symbols "olpc2" {
+    include "group(olpc)"
+ };
+ 
++xkb_symbols "olpcm" {
++
++   include "us(basic)"
++   name[Group1]= "USA";
++
++   // Mechanical (non-membrane) OLPC int'l US English keyboard layout.
++   // See: http://wiki.laptop.org/go/OLPC_English_Non-membrane_Keyboard
++
++   key <TLDE> { [     grave, asciitilde,    dead_grave, dead_tilde ] };
++   key <AE01> { [         1,     exclam,    exclamdown, exclamdown ] };
++   key <AE02> { [         2,         at,       notsign,    notsign ] };
++   key <AE03> { [         3, numbersign,     0x1000300,  0x1000300 ] }; // combining grave
++   key <AE04> { [         4,     dollar,     0x1000301,  0x1000301 ] }; // combining acute
++   key <AE05> { [         5,    percent,     0x1000306,  0x1000306 ] }; // combining breve above
++   key <AE06> { [         6,asciicircum,     0x100030A,  0x100030A ] }; // combining ring above
++   key <AE07> { [         7,  ampersand,     0x1000302,  0x1000302 ] }; // combining circumflex above
++   key <AE08> { [         8,   asterisk,     0x100030C,  0x100030C ] }; // combining caron above
++   key <AE09> { [         9,  parenleft,     0x1000307,  0x1000307 ] }; // combining dot above
++   key <AE10> { [         0, parenright,     0x1000308,  0x1000308 ] }; // combining diaeresis above
++   key <AE11> { [     minus, underscore,     0x1000304,  0x1000304 ] }; // combining macron above
++
++   key <AD01> { [         q,          Q,  Greek_omega, Greek_OMEGA ] };
++   key <AD02> { [         w,          W,       oslash,      Oslash ] };
++   key <AD03> { [         e,          E,           oe,          OE ] };
++   key <AD04> { [         r,          R,    0x1000327,   0x1000327 ] }; // combining cedilla
++   key <AD05> { [         t,          T,    0x100032E,   0x100032E ] }; // combining breve below
++   key <AD06> { [         y,          Y,    0x1000325,   0x1000325 ] }; // combining ring below
++   key <AD07> { [         u,          U,    0x100032D,   0x100032D ] }; // combining circumflex below
++   key <AD08> { [         i,          I,    0x100032C,   0x100032C ] }; // combining caron below
++   key <AD09> { [         o,          O,    0x1000323,   0x1000323 ] }; // combining dot below
++   key <AD10> { [         p,          P,    0x1000324,   0x1000324 ] }; // combining diaeresis below
++   key <AD11> { [ bracketleft,  braceleft,  0x1000331,   0x1000331 ] }; // combining macron below
++   key <AD12> { [bracketright, braceright,  0x1000330,   0x1000330 ] }; // combining tilde below
++
++   key <AC01>  { [         a,          A,          ae,               AE ] };
++   key <AC02>  { [         s,          S,      ssharp,        0x1001E9C ] }; // uppercase S sharp
++   key <AC03>  { [         d,          D,         eth,              ETH ] };
++   key <AC04>  { [         f,          F,       thorn,            THORN ] };
++   key <AC06>  { [         h,          H,    sterling,         sterling ] };
++   key <AC07>  { [         j,          J,    EuroSign,         EuroSign ] };
++   key <AC10>  { [ semicolon,      colon,   masculine,      ordfeminine ] };
++   // no AC11 or AC12 on olpcm
++
++   key <AB03>  { [         c,          C,    ccedilla,         Ccedilla ] };
++   key <AB06>  { [         n,          N,      ntilde,           Ntilde ] };
++   key <AB07>  { [         m,          M,          mu,               mu ] };
++   key <AB08>  { [     comma,     less,  guillemotleft,   guillemotleft ] };
++   key <AB09>  { [    period,  greater, guillemotright,  guillemotright ] };
++   key <AB10>  { [     slash,   question, questiondown,    questiondown ] };
++
++   key <AA02>  { [ backslash,        bar,      section,         section ] };
++   key <AA06>  { [     equal,       plus,     0x1000303,  0x1000303 ] };
++   key <AA07>  { [ apostrophe,  quotedbl,    currency,         currency ] };
++
++   include "level3(ralt_switch)"
++};
++
+ // Based on Cherokee Nation Official Layout
+ // http://www.cherokee.org/extras/downloads/font/Keyboard.htm
+ 
diff --git a/xkeyboard-config.spec b/xkeyboard-config.spec
index c0701b6..6776a18 100644
--- a/xkeyboard-config.spec
+++ b/xkeyboard-config.spec
@@ -7,7 +7,7 @@
 Summary: X Keyboard Extension configuration data
 Name: xkeyboard-config
 Version: 2.8
-Release: 2%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist}
+Release: 3%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist}
 License: MIT
 Group: User Interface/X
 URL: http://www.freedesktop.org/wiki/Software/XKeyboardConfig
@@ -24,6 +24,9 @@ Patch02: 0001-Fixing-ISO-codes.patch
 Patch03: 0001-Fixing-wrong-iso639-3-codes.patch
 Patch04: 0001-fr-fra-ISO-639.patch
 Patch05: 0001-rules-fix-iso639-code-for-irish.patch
+# Fix OLPC Spanish mechanical keyboard http://dev.laptop.org/ticket/12645
+Patch06: olpc-mechanical-keyboard.patch
+Patch07: olpc-ae00.patch
 
 BuildArch: noarch
 
@@ -115,6 +118,9 @@ rm -f $RPM_BUILD_ROOT%{_datadir}/X11/xkb/compiled
 %{_datadir}/pkgconfig/xkeyboard-config.pc
 
 %changelog
+* Wed May 15 2013 Daniel Drake <dsd at laptop.org> 2.8-3
+- Add upstream patches for OLPC mechanical keyboard support
+
 * Tue Apr 16 2013 Peter Hutterer <peter.hutterer at redhat.com> 2.8-2
 - Fix a bunch of language codes (#952510, #952519)
 


More information about the scm-commits mailing list