OLPC Keyboard layouts/xkb

From OLPC
Jump to navigation Jump to search
partial alphanumeric_keys
xkb_symbols "olpc" {
   name[Group1]= "U.S. English - OLPC International";

   include "us(basic)"

   // OLPC international US English keyboard layout.
   // It's a little different from the usual international layout.
   // See: http://wiki.laptop.org/go/Image:Keyboard_english.png

   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,     0x1000324,        0x1000324 ] }; // 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 <AE12> { [     equal,       plus,     0x1000303,        0x1000303 ] }; // combining tilde 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,    0x1000304,        0x1000304 ] }; // 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,           ssharp ] };
   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 ] };
   key <AC11>  { [ apostrophe,  quotedbl,    currency,         currency ] };
   key <BKSL>  { [ backslash,        bar,      section,         section ] };

   key <AB03>  { [         c,          C,    ccedilla,         Ccedilla ] };
   key <AB06>  { [         n,          N,      ntilde,           Ntilde ] };
   key <AB07>  { [         m,          M,          mu,               mu ] );
   key <AB08>  { [     comma,      less, guillemontleft, guillemontleft ] };
   key <AB09>  { [    period, greater, guillemontright, guillemontright ] };
   key <AB10>  { [     slash,   question, questiondown,    questiondown ] };

   key <I219>  { [  multiply,   division, ISO_Next_Group, ISO_Prev_Group ] };

   include "level3(ralt_switch)"
};

partial alphanumeric_keys
xkb_symbols "olpc2" {
   include "us(olpc)"
   key <I219>  { [ ISO_Next_Group, ISO_Prev_Group ] };
};

OLPC section of the XKB symbol file (dead key variant)

XkbLayout "us"
XkbVariant "dead_olpc"

This goes into /usr/share/X11/xkb/symbols/us

partial alphanumeric_keys
xkb_symbols "dead_olpc" {
   name[Group1]= "U.S. English - OLPC International";

   include "us(basic)"

   // OLPC international US English keyboard layout.
   // This version uses dead keys whenever possible
   // See: http://wiki.laptop.org/go/Image:Keyboard_english.png

   key <TLDE> { [     grave, asciitilde,    dead_grave,       dead_tilde ] };
   key <AE01> { [         1,     exclam,    exclamdown,       exclamdown ] };
   key <AE02> { [         2,         at,       notsign,     	 notsign ] };
   key <AE03> { [         3, numbersign,    dead_grave,       dead_grave ] }; 
   key <AE04> { [         4,     dollar,    dead_acute,       dead_acute ] }; 
   key <AE05> { [         5,    percent,    dead_breve,       dead_breve ] }; 
   key <AE06> { [         6,asciicircum, dead_abovering,  dead_abovering ] }; 
   key <AE07> { [         7, ampersand, dead_circumflex, dead_circumflex ] }; 
   key <AE08> { [         8,   asterisk,    dead_caron,       dead_caron ] };
   key <AE09> { [         9,  parenleft, dead_abovedot,    dead_abovedot ] };
   key <AE10> { [         0, parenright, dead_diaeresis,  dead_diaeresis ] };
   key <AE11> { [     minus, underscore,   dead_macron,      dead_macron ] };
   key <AE12> { [     equal,       plus,    dead_tilde,       dead_tilde ] };

   key <AD01> { [         q,          Q,   Greek_omega,      Greek_OMEGA ] };
   key <AD02> { [         w,          W,        oslash,           Oslash ] };
   key <AD03> { [         e,          E,            oe,               OE ] };
   key <AD04> { [         r,          R,  dead_cedilla,     dead_cedilla ] };
   key <AD05> { [         t,          T, dead_belowbreve, dead_belowbreve] };
   key <AD06> { [         y,          Y, dead_belowring,   dead_belowring] };
   key <AD07> { [         u,          U, dead_belowcircumflex, dead_belowcircumflex] };
   key <AD08> { [         i,          I,dead_belowcaron,  dead_belowcaron] };
   key <AD09> { [         o,          O, dead_belowdot,    dead_belowdot ] };
   key <AD10> { [         p,          P,dead_belowdiaeresis,dead_belowdiaeresis] };
   key <AD11> { [ bracketleft,  braceleft,dead_belowmacron,dead_belowmacron] };
   key <AD12> { [bracketright, braceright,dead_belowtilde,dead_belowtilde] };

   key <AC01>  { [         a,          A,           ae,               AE ] };
   key <AC02>  { [         s,          S,       ssharp,           ssharp ] };
   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 ] };
   key <AC11>  { [ apostrophe,  quotedbl,     currency,         currency ] };
   key <BKSL>  { [ backslash,        bar,      section,          section ] };

   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 <I219>  { [  multiply,   division, ISO_Next_Group, ISO_Prev_Group ] };

   include "level3(ralt_switch)"
};

partial alphanumeric_keys
xkb_symbols "olpc2" {
   include "us(dead_olpc)"
   key <I219>  { [ ISO_Next_Group, ISO_Prev_Group ] };
};

This goes into /usr/share/X11/locale/en_US.UTFF-8/Compose

<dead_belowring> <A>    : Ḁ Abelowring
<dead_belowring> <a>    : ḁ Abelowring

<dead_belowmacron> <B>  : Ḇ Bbelowmacron
<dead_belowmacron> <b>  : ḇ Bbelowmacron
<dead_belowmacron> <K>  : Ḵ Kbelowmacron
<dead_belowmacron> <k>  : ḵ kbelowmacron
<dead_belowmacron> <N>  : Ṉ Nbelowmacron
<dead_belowmacron> <n>  : ṉ nbelowmacron
<dead_belowmacron> <R>  : Ṟ Rbelowmacron
<dead_belowmacron> <r>  : ṟ rbelowmacron
<dead_belowmacron> <T>  : Ṯ Tbelowmacron
<dead_belowmacron> <t>  : ṯ tbelowmacron
<dead_belowmacron> <Z>  : Ẕ Zbelowmacron
<dead_belowmacron> <z>  : ẕ zbelowmacron
<dead_belowmacron> <h>  : ẖ hbelowmacron

<dead_belowcircumflex> <r>      : Ḙ Ebelowcircumflex
<dead_belowcircumflex> <S>      : ḙ ebelowcircumflex
<dead_belowcircumflex> <s>      : Ṋ Nbelowcircumflex
<dead_belowcircumflex> <T>      : ṋ nbelowcircumflex
<dead_belowcircumflex> <t>      : Ṱ Tbelowcircumflex
<dead_belowcircumflex> <V>      : ṱ tbelowcircumflex
<dead_belowcircumflex> <v>      : Ṷ Ubelowcircumflex
<dead_belowcircumflex> <Z>      : ṷ ubelowcircumflex

<dead_belowtilde> <E>   : Ḛ Ebelowtilde
<dead_belowtilde> <e>   : ḛ ebelowtilde
<dead_belowtilde> <I>   : Ḭ Ibelowtilde
<dead_belowtilde> <i>   : ḭ ibelowtilde
<dead_belowtilde> <U>   : Ṵ Ubelowtilde
<dead_belowtilde> <u>   : ṵ ubelowtilde
<dead_belowbreve> <H>   : Ḫ Hbelowbreve
<dead_belowbreve> <h>   : ḫ hbelowbreve

<dead_belowdiaeresis> <U>       : Ṳ Ubelowdiaeresis
<dead_belowdiaeresis> <u>       : ṳ ubelowdiaeresis

<dead_belowcaron> <R>   :  Rbelowcaron
<dead_belowcaron> <r>   :  rbelowcaron
<dead_belowcaron> <C>   :  Cbelowcaron
<dead_belowcaron> <c>   :  cbelowcaron
<dead_belowcaron> <S>   :  Sbelowcaron
<dead_belowcaron> <s>   :  sbelowcaron