OLPC Keyboard layouts
Scan-code table
XKB Symbol files
The xkb symbol files used by OLPC can be found at http://webcvs.freedesktop.org/xlibs/xkbdesc/xkeyboard-config/ (Please refer to the xkb_symbols "olpc" sections of the various symbol files[1] for the OLPC-specific keyboard mappings).
OLPC keyboard layouts
Instructions for setting up keyboard switching in Terminal are on the Customizing NAND images page. On bilingual XOs, the multiplication/division key is replaced with a keyboard switching key.
Changing the language of the keyboard is independent of changing the language currently displayed. The language currently displayed can be changed by using the Language section of the Sugar Control Panel.
Membrane keyboard layouts
English (US international); Spanish (Latin America); Portuguese (Brazilian); Amharic (Ethiopic); Arabic; Nigerian (Igbo, Hausa, Yoruba); French; Thai; Urdu; Cyrillic (Russian); Turkish; Nepali; Mongolian; Kazakh; Devanagari; Uzbek; Pashto; Dari; Armenian; Khmer; Pulaar; Italian; Kreyòl; German; Chinese (Simplified); OLPC AZERTY
Non-membrane keyboard layouts
Starting with the XO-1.5 HS ("High School") edition, the XO laptop has a traditional (non-membrane) keyboard available as an option: English (US International); Spanish (Latin America);
Blank Keyboard Artwork
Artwork defining the inner dimensions of the membrane keyboard is available here: keyboard-blank.svg
Modifying your keyboard setting
The procedure for modifying the keyboard layout on your XO is described here.
There are two mechanisms on the laptop that are used to configure the keyboards: one for the console and one for the X Window System (and Sugar).
Console
Console keyboard layout files are in /lib/kbd/keymaps/i386. From the Terminal activity (or the console), you can use the 'loadkeys' program to assign a keymap to the the console. For example:
loadkeys es
for Spanish
loadkeys us
for English
X Window System
X Window System keyboard symbol files are in /usr/share/X11/xkb/symbols. Again, from the Terminal activity (or the console), you can use the setxkbmap to assign a symbol table to the X Window System. For example:
setxkbmap es
for Spanish
setxkbmap us
for US
setxkbmap -layout us,in -variant olpc2,olpc
for US and Devanagari
Making the changes permanent
The above changes are temporary. To make permanent changes, you should use the 'sugar-control-panel' program as described here. For example:
sugar-control-panel -s language Spanish/Argentina
This changes the values in /etc/sysconfig/keyboard.
XKB_MODEL="olpc" XKB_LAYOUT="es" XKB_VARIANT="olpc" KEYTABLE="es"
US International keyboard
XKB KEY | HID | key | unmodified | shift | alt gr | alt gr shift | ctrl | fn | comment |
---|---|---|---|---|---|---|---|---|---|
0x38 | 110 | esc | HK_01 | ||||||
0x79 | 140 | HK_00 | search | ||||||
0x3A | 112 | XK_ViewMesh | F1, analog 1 | ||||||
0x77 | 141 | HK_02 | analog 2 | ||||||
0x3B | 113 | XK_ViewFriends | F2, analog 3 | ||||||
0x76 | 142 | HK_07 | analog 4 | ||||||
0x3C | 114 | XK_ViewHome | F3, analog 5 | ||||||
0x75 | 143 | HK_08 | analog 6 | ||||||
0x3D | 115 | XK_ViewActivity | F4, analog 7 | ||||||
0x3E | 116 | F5, analog 8 | |||||||
0x74 | 144 | HK_09 | analog 9 | ||||||
0x3F | 117 | F6, analog 10 | |||||||
0x73 | 145 | HK_10 | analog 11 | ||||||
0x40 | 118 | F7, analog 12 | |||||||
0x72 | 146 | HK_11 | analog 13 | ||||||
0x41 | 119 | F8, analog 14 | |||||||
0x42 | 120 | F9, analog 15 | |||||||
0x71 | 147 | HK_12 | analog 16 | ||||||
0x43 | 121 | F10, analog 17 | |||||||
0x70 | 148 | HK_13 | analog 18 | ||||||
0x44 | 122 | F11, analog 19 | |||||||
0x6F | 149 | HK_14 | analog 20 | ||||||
0x45 | 123 | F12, analog 21 | |||||||
0x6E | 150 | HK_05 | bulletin board | ||||||
0x5D | 129 | XK_Menu | HK_06 | frame | |||||
key <TLDE> | 0x01 | 1 | grave | asciitilde | dead_grave | dead_tilde | |||
key <AE01> | 0x1E | 2 | 1 | exclam | exclamdown | excalmdown | |||
key <AE02> | 0x1F | 3 | 2 | at | notsign | notsign | C-@ | ||
key <AE03> | 0x20 | 4 | 3 | numbersign | 0x1000300 | 0x1000300 | combining grave | ||
key <AE04> | 0x21 | 5 | 4 | dollar | 0x1000301 | 0x1000301 | combining acute | ||
key <AE05> | 0x22 | 6 | 5 | percent | 0x1000306 | 0x1000306 | combining breve above | ||
key <AE06> | 0x23 | 7 | 6 | asciicircum | 0x100030A | 0x100030A | C-^ | combining ring above | |
key <AE07> | 0x24 | 8 | 7 | ampersand | 0x1000302 | 0x1000302 | combining circumflex above | ||
key <AE08> | 0x25 | 9 | 8 | asterisk | 0x1000324 | 0x1000324 | combining caron above | ||
key <AE09> | 0x26 | 10 | 9 | parenleft | 0x1000307 | 0x1000307 | combining dot above | ||
key <AE10> | 0x27 | 11 | 0 | parenright | 0x1000308 | 0x1000308 | combining diaeresis above | ||
key <AE11> | 0x2D | 12 | minus | underscore | 0x1000304 | 0x1000304 | C-_ | combining macron above | |
key <AE12> | 0x2E | 13 | equal | plus | 0x1000303 | 0x1000303 | combining tilde above | ||
key <BKSP> | 0x2A | 15 | backspace | delete | |||||
key <TAB> | 0x2B | 16 | tab | back tab | |||||
key <AD01> | 0x14 | 17 | q | Q | Greek_omega | Greek_OMEGA | C-Q | ||
key <AD02> | 0x1A | 18 | w | W | oslash | Oslash | C-W | ||
key <AD03> | 0x08 | 19 | e | E | œ | Œ | C-E | ||
key <AD04> | 0x15 | 20 | r | R | 0x1000327 | 0x1000327 | C-R | combining cedilla | |
key <AD05> | 0x17 | 21 | t | T | 0x100032E | 0x100032E | C-T | combining breve below | |
key <AD06> | 0x1C | 22 | y | Y | 0x1000325 | 0x1000325 | C-Y | combining ring below | |
key <AD07> | 0x18 | 23 | u | U | 0x100032D | 0x100032D | C-U | combining circumflex below | |
key <AD08> | 0x0C | 24 | i | I | 0x100032C | 0x100032C | C-I | combining caron below | |
key <AD09> | 0x12 | 25 | o | O | 0x1000323 | 0x1000323 | C-O | combining dot below | |
key <AD10> | 0x13 | 26 | p | P | 0x1000304 | 0x1000304 | C-P | combining diaeresis below | |
key <AD11> | 0x2F | 27 | [ | { | 0x1000331 | 0x1000331 | C-[ | combining macron below | |
key <AD12> | 0x30 | 28 | ] | } | 0x1000330 | 0x1000330 | C-] | combining tilde below | |
key <CAPS> | 0xE0 | 58 | control | ||||||
key <AC01> | 0x04 | 31 | a | A | æ | Æ | C-A | ||
key <AC02> | 0x16 | 32 | s | S | ssharp | ssharp | C-S | ||
key <AC03> | 0x07 | 33 | d | D | eth | ETH | C-D | ||
key <AC04> | 0x09 | 34 | f | F | thorn | THORN | C-F | ||
key <AC05> | 0x0A | 35 | g | G | sterling | sterling | C-G | ||
key <AC06> | 0x0B | 36 | h | H | Eurosign | Eurosign | C-H | ||
key <AC07> | 0x0D | 37 | j | J | C-J | ||||
key <AC08> | 0x0E | 38 | k | K | C-K | ||||
key <AC09> | 0x0F | 39 | l | L | C-L | ||||
key <AC10> | 0x33 | 40 | semicolon | colon | masculine | ordfeminine | |||
key <AC11> | 0x34 | 41 | apostrophe | quotedbl | currency | currency | |||
key <BKSL> | 0x31 | 42 | backslash | bar | section | section | C-\ | ||
key <RTRN> | 0x28 | 43 | enter | insert | |||||
key <LFSH> | 0xE1 | 44 | left shift | ||||||
key <AB01> | 0x1D | 46 | z | Z | C-Z | ||||
key <AB02> | 0x1B | 47 | x | X | C-X | ||||
key <AB03> | 0x06 | 48 | c | C | ccedilla | Ccedilla | C-C | ||
key <AB04> | 0x19 | 49 | v | V | C-V | ||||
key <AB05> | 0x05 | 50 | b | B | C-B | ||||
key <AB06> | 0x11 | 51 | n | N | ntilde | Ntilde | C-N | ||
key <AB07> | 0x10 | 52 | m | M | mu | mu | C-M | ||
key <AB08> | 0x36 | 53 | comma | less | guillemontleft | guillemontleft | |||
key <AB09> | 0x37 | 54 | period | greater | guillemontright | guillemontright | |||
key <AB10> | 0x38 | 55 | slash | question | questiondown | questiondown | |||
key <RTSH> | 0xE5 | 57 | right shift | ||||||
key <UP> | 0x52 | 83 | up arrow | page up | |||||
key <LSGT> | 0x73 | 56 | multiply | division | ISO_Next_Group | ISO_Prev_Group | HK_04 | ||
0xE1 | 59 | fn | |||||||
0x5B | 127 | XK_Grab_L | |||||||
key <LALT> | 0xE2 | 60 | alt | ||||||
key <SPCE> | 0x2C | 61 | space | XK_ViewSource | |||||
key <RALT> | 0xE6 | 62 | alt gr | ||||||
0x5C | 128 | XK_Grab_R | HK_03 | ||||||
key <LEFT> | 0x50 | 79 | left arrow | home | |||||
key <DOWN> | 0x51 | 84 | down arrow | page down | |||||
key <RGHT> | 0x4F | 89 | right arrow | end |
OLPC section of the XKB symbol file
The OLPC section of xkb/symbols/us can be found here. Below are the aggregate X Window System definitions for the OLPC US International keyboard.
partial alphanumeric_keys xkb_symbols "olpc" { name[Group1]= "U.S. English - OLPC International"; 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 <AC05> { [ g, G ] }; key <AC06> { [ h, H, sterling, sterling ] }; key <AC07> { [ j, J, EuroSign, EuroSign ] }; key <AC08> { [ k, K ] }; key <AC09> { [ l, L ] }; key <AC10> { [ semicolon, colon, masculine, ordfeminine ] }; key <AC11> { [ apostrophe, quotedbl, currency, currency ] }; key <BKSL> { [ backslash, bar, section, section ] }; key <AB01> { [ z, Z ] }; key <AB02> { [ x, X ] }; key <AB03> { [ c, C, ccedilla, Ccedilla ] }; key <AB04> { [ v, V ] }; key <AB05> { [ b, B ] }; 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)" };