Difference between revisions of "Keyboard"

From Pandora Wiki
Jump to: navigation, search
(merged remapping keys on the keyboard page)
Line 175: Line 175:
 
add Lock = Caps_Lock</pre>
 
add Lock = Caps_Lock</pre>
 
After you add this, just run "xmodmap ~/.pndXmodmap" to reload the keymappings
 
After you add this, just run "xmodmap ~/.pndXmodmap" to reload the keymappings
 +
 +
== THE FOLLOWING IS THE KEYBOARD LAYOUT CHANGER PAGE ==
 +
 +
The '''keyboard layout changer''' is a simple tool to easily change keyboard layout. Possible uses are for typing in a different language on your Pandora, for using an external keyboard, or simply for making small key modifications.
 +
 +
=Usage guide=
 +
#Download the PND to your Pandora from either  [http://stuffs.slaeshjag.org/pnd/kblayout.pnd Slaeshjag's site] or from the [http://repo.openpandora.org/?page=detail&app=change-keymap-0.1-slaeshjag Repo] (see [[User_manual#Installing_a_PND_file_.28an_application.29|here]] for instructions on where to place PNDs)
 +
#Run the PND; it's called "Keyboard Layout" and is in the "Settings" category
 +
#You will now see a choice of keyboard layouts. Choose one, and your layout will change!<br/>(if the program doesn't run, find the <code>/tmp/pndrun_kblayout.out</code> file and post its contents in the [http://boards.openpandora.org/index.php?/topic/2428-keyboard-layout-changer/ official forum thread], so that the author can see what went wrong)
 +
 +
==Making your own custom keyboard layouts==
 +
*Go to the <code>/media/yourSDcard/pandora/appdata/kblayout/keymaps</code> directory. Inside, you will see a bunch of files. Open any one with a text editor, and you'll see something like this:
 +
 +
./setxkbmap -layout us
 +
xmodmap ~/.pndXmodmap
 +
 +
What this means is that it's using the "us" layout with the modifications specified in the ".pndXmodmap" file (the Pandora needs these modifications because its keyboard isn't the same as a standard one).
 +
 +
So there are two basic things you could change: you could replace "us" with a different base layout, or you could replace "~/.pndXmodmap" with a different file.
 +
 +
===Base layouts===
 +
The default layout is "us". The full list of base layouts included with the Pandora is listed in the file <code>/usr/share/X11/xkb/keymap/xfree86</code>. Here's the full list:
 +
{{HideableNotes|<pre>
 +
us
 +
ar
 +
be
 +
bg
 +
br
 +
cz
 +
de
 +
ch_de
 +
ch_fr
 +
dk
 +
dvorak
 +
en_US
 +
es
 +
fr
 +
fr-latin9
 +
fr_CA
 +
gb
 +
hr
 +
it
 +
jp106
 +
lt
 +
lt_std
 +
lv
 +
mk
 +
mt
 +
no
 +
pl
 +
pt
 +
ro
 +
ro_microsoft
 +
ru
 +
se_FI
 +
se_SE
 +
sl
 +
sl_SI
 +
sk
 +
syr
 +
th
 +
th_tis
 +
th_pat
 +
tr
 +
uk
 +
us_flexpro
 +
us_intl
 +
us_microsoft
 +
uz
 +
cz_qwerty
 +
de_CH
 +
fr_CH
 +
mt_us
 +
sk_qwerty
 +
</pre>}}
 +
 +
If you just want to use one of these base layouts with no modifications, make a new file in the <code>/media/yourSDcard/pandora/appdata/kblayout/keymaps</code> directory, name it anything, open it in a text editor and place the following text inside, replacing "xx" with any of the codes in the above list:
 +
./setxkbmap -layout xx
 +
Save the file. Then just start Keyboard Layout Changer, and you'll be able to select it.
 +
 +
===xmodmap===
 +
This type of file modifies whatever base layout is selected. One of these comes by default with your Pandora OS. You can find the <code>.pndXmodmap</code> file in the <code>/home/username</code> directory. It might be hidden, so press Ctrl+H to make it visible. If you open it with a text editor, you'll see this:
 +
 +
{{HideableNotes|<pre>keycode  9 = Escape NoSymbol Escape
 +
keycode  10 = 1 section 1 section
 +
keycode  11 = 2 braceleft 2 braceleft
 +
keycode  12 = 3 braceright 3 braceright
 +
keycode  13 = 4 asciitilde 4 asciitilde
 +
keycode  14 = 5 percent 5 percent
 +
keycode  15 = 6 asciicircum 6 asciicircum
 +
keycode  16 = 7 ampersand 7 ampersand
 +
keycode  17 = 8 asterisk 8 asterisk
 +
keycode  18 = 9 bracketleft 9 bracketleft
 +
keycode  19 = 0 bracketright 0 bracketright
 +
keycode  22 = BackSpace Delete BackSpace Delete
 +
keycode  24 = q Q q Q
 +
keycode  25 = w W w W
 +
keycode  26 = e E e E
 +
keycode  27 = r R r R
 +
keycode  28 = t T t T
 +
keycode  29 = y Y y Y
 +
keycode  30 = u U u U
 +
keycode  31 = i I i I
 +
keycode  32 = o O o O
 +
keycode  33 = p P p P
 +
keycode  34 = parenleft NoSymbol parenleft
 +
keycode  35 = parenright NoSymbol parenright
 +
keycode  36 = Return Multi_key Return
 +
keycode  37 = Control_L NoSymbol Control_L
 +
keycode  38 = a A a A
 +
keycode  39 = s S s S
 +
keycode  40 = d D d D
 +
keycode  41 = f F f F
 +
keycode  42 = g G g G
 +
keycode  43 = h H h H
 +
keycode  44 = j J j J
 +
keycode  45 = k K k K
 +
keycode  46 = l L l L
 +
keycode  47 = semicolon NoSymbol semicolon
 +
keycode  48 = apostrophe NoSymbol apostrophe
 +
keycode  49 = grave NoSymbol grave
 +
keycode  50 = Shift_L NoSymbol Shift_L
 +
keycode  52 = z Z z Z
 +
keycode  53 = x X x X
 +
keycode  54 = c C c C
 +
keycode  55 = v V v V
 +
keycode  56 = b B b B
 +
keycode  57 = n N n N
 +
keycode  58 = m M m M
 +
keycode  59 = comma less comma less
 +
keycode  60 = period greater period greater
 +
keycode  61 = slash NoSymbol slash
 +
keycode  62 = Shift_R NoSymbol Shift_R
 +
keycode  64 = Alt_L NoSymbol Alt_L
 +
keycode  65 = space NoSymbol space
 +
keycode  66 = Caps_Lock NoSymbol Caps_Lock
 +
keycode  67 = F1 NoSymbol F1
 +
keycode  68 = F2 NoSymbol F2
 +
keycode  69 = F3 NoSymbol F3
 +
keycode  70 = F4 NoSymbol F4
 +
keycode  71 = F5 NoSymbol F5
 +
keycode  72 = F6 NoSymbol F6
 +
keycode  73 = F7 NoSymbol F7
 +
keycode  74 = F8 NoSymbol F8
 +
keycode  75 = F9 NoSymbol F9
 +
keycode  76 = F10 NoSymbol F10
 +
keycode  82 = minus NoSymbol minus NoSymbol
 +
keycode  83 = Home quotedbl Home quotedbl
 +
keycode  86 = plus NoSymbol plus NoSymbol
 +
keycode  87 = Prior Multi_key Prior Multi_key
 +
keycode  88 = End XF86_Switch_VT_2 End XF86_Switch_VT_2
 +
keycode  89 = Next XF86_Switch_VT_1 Next XF86_Switch_VT_1
 +
keycode  95 = F11 NoSymbol F11
 +
keycode  96 = F12 NoSymbol F12
 +
keycode 118 = Insert NoSymbol Insert
 +
keycode 132 = yen NoSymbol yen
 +
keycode 187 = parenleft NoSymbol parenleft
 +
keycode 188 = parenright NoSymbol parenright
 +
keycode 191 = acute NoSymbol acute
 +
keycode 192 = bar NoSymbol bar
 +
keycode 193 = underscore NoSymbol underscore
 +
keycode 194 = numbersign NoSymbol numbersign
 +
keycode 195 = exclam NoSymbol exclam
 +
keycode 196 = sterling NoSymbol sterling
 +
keycode 197 = quotedbl NoSymbol quotedbl
 +
keycode 198 = at NoSymbol at
 +
keycode 199 = colon NoSymbol colon
 +
keycode 200 = dollar NoSymbol dollar
 +
keycode 201 = EuroSign NoSymbol EuroSign
 +
keycode 222 = question NoSymbol question
 +
keycode 235 = Tab NoSymbol Tab</pre>}}
 +
 +
Ok, now let's break this down a little. <code>keycode  38 = a A a A</code> - the first two letters after the = sign are what you'll get if you press the button marked A with and without holding "shift". The next two are with and without shift modifier together with a second modifier, but since there's no second modifier on the Pandora, this is redundant really. What about Fn, you may ask, isn't that a second modifier? The Fn-key acts on a lower level, and is not seen as a separate key. Instead, there are separate keycode entries for all Fn keys (the ones marked in blue on your Pandora). "NoSymbol" means that the combination doesn't produce a character. You can find a full list of symbols (or "keysyms") that you can use [http://wiki.linuxquestions.org/wiki/List_of_Keysyms_Recognised_by_Xmodmap over here].
 +
 +
You can edit the .pndXmodmap file itself if you want to. That'll change the default keyboard layout you have at startup.
 +
 +
But you can also make secondary custom keyboard layouts.
 +
 +
For example, here's how to make a selectable custom Russian keyboard layout:
 +
 +
====Making a custom Russian keyboard layout====
 +
Make two new files inside <code>/media/yourSDcard/pandora/appdata/kblayout/keymaps</code>. One called "RU-translit" (the name doesn't matter), one called ".rumodmap" (the dot at the start of the name is to make it not show up in the Keyboard Layout Changer menu as a keymap; that's the function of the ''first'' file you made). Put this text in the RU-translit file:
 +
./setxkbmap -layout us
 +
xmodmap keymaps/.rumodmap
 +
 +
Put this text in the .rumodmap file:
 +
 +
{{HideableNotes|<pre>keycode  9 = Escape NoSymbol Escape
 +
keycode  10 = 1 section 1 section
 +
keycode  11 = 2 braceleft 2 braceleft
 +
keycode  12 = 3 braceright 3 braceright
 +
keycode  13 = 4 asciitilde 4 asciitilde
 +
keycode  14 = 5 percent 5 percent
 +
keycode  15 = 6 asciicircum 6 asciicircum
 +
keycode  16 = 7 ampersand 7 ampersand
 +
keycode  17 = 8 asterisk 8 asterisk
 +
keycode  18 = 9 bracketleft 9 bracketleft
 +
keycode  19 = 0 bracketright 0 bracketright
 +
keycode  22 = BackSpace Delete BackSpace Delete
 +
keycode  24 = Cyrillic_ya Cyrillic_YA Cyrillic_ya Cyrillic_YA
 +
keycode  25 = Cyrillic_zhe Cyrillic_ZHE Cyrillic_zhe Cyrillic_ZHE
 +
keycode  26 = Cyrillic_ie Cyrillic_IE Cyrillic_ie Cyrillic_IE
 +
keycode  27 = Cyrillic_er Cyrillic_ER Cyrillic_er Cyrillic_ER
 +
keycode  28 = Cyrillic_te Cyrillic_TE Cyrillic_te Cyrillic_TE
 +
keycode  29 = Cyrillic_yeru Cyrillic_YERU Cyrillic_yeru Cyrillic_YERU
 +
keycode  30 = Cyrillic_u Cyrillic_U Cyrillic_u Cyrillic_U
 +
keycode  31 = Cyrillic_i Cyrillic_I Cyrillic_i Cyrillic_I
 +
keycode  32 = Cyrillic_o Cyrillic_O Cyrillic_o Cyrillic_O
 +
keycode  33 = Cyrillic_pe Cyrillic_PE Cyrillic_pe Cyrillic_PE
 +
keycode  34 = parenleft NoSymbol parenleft
 +
keycode  35 = parenright NoSymbol parenright
 +
keycode  36 = Return Multi_key Return
 +
keycode  37 = Control_L NoSymbol Control_L
 +
keycode  38 = Cyrillic_a  Cyrillic_A Cyrillic_a  Cyrillic_A
 +
keycode  39 = Cyrillic_es Cyrillic_ES Cyrillic_es Cyrillic_ES
 +
keycode  40 = Cyrillic_de Cyrillic_DE Cyrillic_de Cyrillic_DE
 +
keycode  41 = Cyrillic_ef Cyrillic_EF Cyrillic_ef Cyrillic_EF
 +
keycode  42 = Cyrillic_ghe Cyrillic_GHE Cyrillic_ghe Cyrillic_GHE
 +
keycode  43 = Cyrillic_che Cyrillic_CHE Cyrillic_che Cyrillic_CHE
 +
keycode  44 = Cyrillic_shorti Cyrillic_SHORTI Cyrillic_shorti Cyrillic_SHORTI
 +
keycode  45 = Cyrillic_ka Cyrillic_KA Cyrillic_ka Cyrillic_KA
 +
keycode  46 = Cyrillic_el Cyrillic_EL Cyrillic_el Cyrillic_EL
 +
keycode  47 = semicolon NoSymbol semicolon
 +
keycode  48 = apostrophe NoSymbol apostrophe
 +
keycode  49 = grave NoSymbol grave
 +
keycode  50 = Shift_L NoSymbol Shift_L
 +
keycode  52 = Cyrillic_ze Cyrillic_ZE Cyrillic_ze Cyrillic_ZE
 +
keycode  53 = Cyrillic_ha Cyrillic_HA Cyrillic_ha Cyrillic_HA
 +
keycode  54 = Cyrillic_tse Cyrillic_TSE Cyrillic_tse Cyrillic_TSE
 +
keycode  55 = Cyrillic_ve Cyrillic_VE Cyrillic_ve Cyrillic_VE
 +
keycode  56 = Cyrillic_be Cyrillic_BE Cyrillic_be Cyrillic_BE
 +
keycode  57 = Cyrillic_en Cyrillic_EN Cyrillic_en Cyrillic_EN
 +
keycode  58 = Cyrillic_em Cyrillic_EM Cyrillic_em Cyrillic_EM
 +
keycode  59 = comma less comma less
 +
keycode  60 = period greater period greater
 +
keycode  61 = slash NoSymbol slash
 +
keycode  62 = Shift_R NoSymbol Shift_R
 +
keycode  64 = Alt_L NoSymbol Alt_L
 +
keycode  65 = space NoSymbol space
 +
keycode  66 = Caps_Lock NoSymbol Caps_Lock
 +
keycode  67 = Cyrillic_yu Cyrillic_YU Cyrillic_yu Cyrillic_YU
 +
keycode  68 = Cyrillic_e Cyrillic_E Cyrillic_e Cyrillic_E
 +
keycode  69 = Cyrillic_softsign Cyrillic_SOFTSIGN Cyrillic_softsign Cyrillic_SOFTSIGN
 +
keycode  70 = Cyrillic_sha Cyrillic_SHA Cyrillic_sha Cyrillic_SHA
 +
keycode  71 = Cyrillic_shcha Cyrillic_SHCHA Cyrillic_shcha Cyrillic_SHCHA
 +
keycode  72 = Cyrillic_io Cyrillic_IO Cyrillic_io Cyrillic_IO
 +
keycode  73 = Cyrillic_hardsign Cyrillic_HARDSIGN Cyrillic_hardsign Cyrillic_HARDSIGN
 +
keycode  74 = F8 NoSymbol F8
 +
keycode  75 = F9 NoSymbol F9
 +
keycode  76 = F10 NoSymbol F10
 +
keycode  82 = minus Prior minus Prior
 +
keycode  83 = Home quotedbl Home quotedbl
 +
keycode  86 = plus NoSymbol plus NoSymbol
 +
keycode  87 = Prior Multi_key Prior Multi_key
 +
keycode  88 = End XF86_Switch_VT_2 End XF86_Switch_VT_2
 +
keycode  89 = Next XF86_Switch_VT_1 Next XF86_Switch_VT_1
 +
keycode  95 = F11 NoSymbol F11
 +
keycode  96 = F12 NoSymbol F12
 +
keycode 118 = Delete Insert Delete
 +
keycode 132 = yen NoSymbol yen
 +
keycode 187 = parenleft NoSymbol parenleft
 +
keycode 188 = parenright NoSymbol parenright
 +
keycode 191 = acute NoSymbol acute
 +
keycode 192 = bar NoSymbol bar
 +
keycode 193 = underscore NoSymbol underscore
 +
keycode 194 = numbersign NoSymbol numbersign
 +
keycode 195 = exclam NoSymbol exclam
 +
keycode 196 = sterling NoSymbol sterling
 +
keycode 197 = quotedbl NoSymbol quotedbl
 +
keycode 198 = at NoSymbol at
 +
keycode 199 = colon NoSymbol colon
 +
keycode 200 = dollar NoSymbol dollar
 +
keycode 201 = EuroSign NoSymbol EuroSign
 +
keycode 222 = question NoSymbol question
 +
keycode 235 = Tab NoSymbol Tab</pre>}}
 +
 +
Once that's done, you can open the Keyboard Layout Changer, choose "RU-translit", and your keyboard layout will change to a layout similar to [http://i.imgur.com/O96Pu.gif this one], with extra letters replacing F1-F7 (note: for those 7 letters, you can only use the Shift on the Pandora's front face, not the left shoulder button). To change back, open Keyboard Layout Changer again and select "default".
 +
 +
In the same way, you can create any other sorts of custom layouts. The easiest way to create a new modmap file is to copy+paste the contents of <code>/home/username/.pndXmodmap</code> into a new file in the <code>/media/yourSDcard/pandora/appdata/kblayout/keymaps</code> directory and make adjustments to whatever you want to change.
 +
 +
[[Category:Keyboard]]
 +
[[Category:Software]]
 +
[[Category:Tutorials]]
 +
 +
  
 
[[Category:Tutorials]]
 
[[Category:Tutorials]]

Revision as of 16:31, 10 September 2013

Pandkey.png

XFCE

Key Function
Shoulder Button L Shift
Shoulder Button R Ctrl
D-pad Cursor Keys
L-Nub Mouse Cursor
R-Nub Mousebutton Mode (L=L mousebutton click, U=Double-L-click, R=R mousebutton click, D=Middle mousebutton click)
Game A Home
Game B End
Game Y PgUp
Game X PgDn
Fn key Sticky, so can be pressed before a key which you want to modify.
Shift-Enter Compose mode. Compose mode allows <shift><enter><fn> s a to combine " and a to get a special character, for example.
Alt/Ctrl/Start(1 sec) Kill(long hold)
Pandora key Quick-press pulls up start menu.
Longer press brings up kill-tasks menu.
Hold and flick power switch does a hard-reset of the Pandora (in case of software crashes; see also power modes).
Shift + mouse hold L + dragging
Shoulder Button L + mouse hold L + dragging
move window around
Shift + mouse hold R + dragging
Shoulder Button L + mouse hold R + dragging
resize window
  • In XFCE, if a program is greater than the Pandora's screen resolution, you can scroll by holding down shift (or the left shoulder button) then clicking anywhere in the window and dragging it around.

Minimenu

Key Function
Shoulder Buttons Move left or right through the categories
D-pad move through the PNDs and folders
Select Options
Game A Toggle detail panel
Game B or Start Select item (run PND or go inside folder)
Game Y Read documentation for PND, if it exists
Game X If detail panel is on, remind yourself of controls
Keyboard Type a letter to skip to the first PND beginning with the letter.
Space App menu
  • In minimenu, pressing Y when an icon is highlighted brings up the readme files.

Keycodes

This table might be useful if you're trying to map keys in some program, or writing a program:

Pandora button Keycode Hex Equivalent
Space key 32 0020
Pandora key 147 0093
D-pad up key 273 0111
D-pad down key 274 0112
D-pad right key 275 0113
D-pad left key 276 0114
Game A key 278 0116
Game B key 279 0117
Game Y key 280 0118
Game X key 281 0119
Shoulder L key 303 012f
Shoulder R key 305 0131
Select key 306 0132
Start key 308 0134

Sources: 1, 2, 3 4 (note: the last two links give different keycodes for the gaming buttons. Possibly both numbers will work?)

Other notes

See also:

History

In the months before the first preorders were taken, there was much discussion and community voting about the best layout. This was one of the final votes. The final layout was different from either one of the two most popular community proposals, but incorporated some of the suggestions such as having a "Pandora" button.

Matrix

The matrix layout is detailed on p.20 of the Hardware hacker's guide (here). A more readable version appears below. A .svg version of the Pandora's keyboard layout (made by cosurgi) can be downloaded here. (broken link)

THE FOLLOWING IS THE REMAPPING KEYS ON THE KEYBOARD PAGE

Remapping keys on the keyboard

First, an apology - I'm writing this without knowing how to remap the keys on the keyboard, so this is not really a tutorial. It is currently just a collection point for information on the subject.

Reference

Forum Threads

The os should allow the standard keypad and modifier keys to be defined to generate any key. So if you want shift '1' to be anything other than 'section', it is possible. somehow :(

Issues

Many apps (including the xfce window manager) have built in keyboard shortcuts which may clash with any good ideas you want to try. However, since people have different use cases, and hardware WILL break over time, it makes sense to help people to find their own problems. The default is probably set forever, but everything is re-configurable (even if it means re-writing the kernel input drivers).

The use of the Pandora button for menu/kill was un-reliable as of hotfix3. (Fixed in git, not released yet) The nub configuration app allows the nubs to be swapped, but currently only the nubs (or an external mouse) will generate mouse button events, and this is not trivial to change (for a user).

Linking events to Keys

There is a Pandora event map daemon, which reacts to the lid close, Pandora button and power button.

It can be configured using the

/etc/pandora/conf/eventmap

file. How to reference additional special keys is TBD. A thread showing an example is [here]

It is also possible to configure xfce to capture events (forum thread is not locatable today)

Using shoulder buttons for mouse


As described in this post

  1. Find the keycodes which you want to modify. Run xev (this needs to be installed from angstrom repo) from the terminal, and record the numbers.
  2. Edit the .pndXmodmap file in your home directory, modify or add (in the correct numerical order for ease) lines like this (for the shoulder buttons)
keycode 62 = Pointer_Button1 NoSymbol Pointer_Button1 
keycode 105 = Pointer_Button3 NoSymbol Pointer_Button3
  1. If you want to use the 'a' and 'b' buttons, the codes are 110 and 115 respectively.
  2. As a test, open the XFCE Accessibility settings and enable mouse keys.
  3. To make this permanent, download a compiled version of xkbset, copy to /usr/bin and chmod a+x /usr/bin/xkbset
  4. Create a script (file) with this as content
#!/bin/sh
xkbset m
xkbset exp =m
  1. Now open a terminal where the file is saved, and give it executable permissions:
    chmod +x nameofyourfile.sh
    
  2. Now install it:
    sudo cp nameofyourfile.sh /usr/bin/nameofyourfile
    
  3. Add this script to XFCE autostarted stuff (Session and Startup->Application Autostart)

NOTE

  1. For HF5 you only need add these two commands to .xinitrc (located in your home directory)
xkbset m
xkbset exp m

note the missing =(equals) sign

Swapping Caps Lock and Tab

As a command line junkie, I was pretty frustrated with where Tab is. I decided to remap it to where Caps Lock is (Fn + Shift). I added the following to .pndXmodmap (in your home directory):

keysym Tab = Caps_Lock
remove Lock = Caps_Lock
keycode 66 = Tab NoSymbol Tab
add Lock = Caps_Lock

After you add this, just run "xmodmap ~/.pndXmodmap" to reload the keymappings

THE FOLLOWING IS THE KEYBOARD LAYOUT CHANGER PAGE

The keyboard layout changer is a simple tool to easily change keyboard layout. Possible uses are for typing in a different language on your Pandora, for using an external keyboard, or simply for making small key modifications.

Usage guide

  1. Download the PND to your Pandora from either Slaeshjag's site or from the Repo (see here for instructions on where to place PNDs)
  2. Run the PND; it's called "Keyboard Layout" and is in the "Settings" category
  3. You will now see a choice of keyboard layouts. Choose one, and your layout will change!
    (if the program doesn't run, find the /tmp/pndrun_kblayout.out file and post its contents in the official forum thread, so that the author can see what went wrong)

Making your own custom keyboard layouts

  • Go to the /media/yourSDcard/pandora/appdata/kblayout/keymaps directory. Inside, you will see a bunch of files. Open any one with a text editor, and you'll see something like this:
./setxkbmap -layout us
xmodmap ~/.pndXmodmap

What this means is that it's using the "us" layout with the modifications specified in the ".pndXmodmap" file (the Pandora needs these modifications because its keyboard isn't the same as a standard one).

So there are two basic things you could change: you could replace "us" with a different base layout, or you could replace "~/.pndXmodmap" with a different file.

Base layouts

The default layout is "us". The full list of base layouts included with the Pandora is listed in the file /usr/share/X11/xkb/keymap/xfree86. Here's the full list:

us
ar
be
bg
br
cz
de
ch_de
ch_fr
dk
dvorak
en_US
es
fr
fr-latin9
fr_CA
gb
hr
it
jp106
lt
lt_std
lv
mk
mt
no
pl
pt
ro
ro_microsoft
ru
se_FI
se_SE
sl
sl_SI
sk
syr
th
th_tis
th_pat
tr
uk
us_flexpro
us_intl
us_microsoft
uz
cz_qwerty
de_CH
fr_CH
mt_us
sk_qwerty

If you just want to use one of these base layouts with no modifications, make a new file in the /media/yourSDcard/pandora/appdata/kblayout/keymaps directory, name it anything, open it in a text editor and place the following text inside, replacing "xx" with any of the codes in the above list:

./setxkbmap -layout xx

Save the file. Then just start Keyboard Layout Changer, and you'll be able to select it.

xmodmap

This type of file modifies whatever base layout is selected. One of these comes by default with your Pandora OS. You can find the .pndXmodmap file in the /home/username directory. It might be hidden, so press Ctrl+H to make it visible. If you open it with a text editor, you'll see this:

keycode   9 = Escape NoSymbol Escape
keycode  10 = 1 section 1 section
keycode  11 = 2 braceleft 2 braceleft
keycode  12 = 3 braceright 3 braceright
keycode  13 = 4 asciitilde 4 asciitilde
keycode  14 = 5 percent 5 percent
keycode  15 = 6 asciicircum 6 asciicircum
keycode  16 = 7 ampersand 7 ampersand
keycode  17 = 8 asterisk 8 asterisk
keycode  18 = 9 bracketleft 9 bracketleft
keycode  19 = 0 bracketright 0 bracketright
keycode  22 = BackSpace Delete BackSpace Delete
keycode  24 = q Q q Q
keycode  25 = w W w W
keycode  26 = e E e E
keycode  27 = r R r R
keycode  28 = t T t T
keycode  29 = y Y y Y
keycode  30 = u U u U
keycode  31 = i I i I
keycode  32 = o O o O
keycode  33 = p P p P
keycode  34 = parenleft NoSymbol parenleft
keycode  35 = parenright NoSymbol parenright
keycode  36 = Return Multi_key Return
keycode  37 = Control_L NoSymbol Control_L
keycode  38 = a A a A
keycode  39 = s S s S
keycode  40 = d D d D
keycode  41 = f F f F
keycode  42 = g G g G
keycode  43 = h H h H
keycode  44 = j J j J
keycode  45 = k K k K
keycode  46 = l L l L
keycode  47 = semicolon NoSymbol semicolon
keycode  48 = apostrophe NoSymbol apostrophe
keycode  49 = grave NoSymbol grave
keycode  50 = Shift_L NoSymbol Shift_L
keycode  52 = z Z z Z
keycode  53 = x X x X
keycode  54 = c C c C
keycode  55 = v V v V
keycode  56 = b B b B
keycode  57 = n N n N
keycode  58 = m M m M
keycode  59 = comma less comma less
keycode  60 = period greater period greater
keycode  61 = slash NoSymbol slash
keycode  62 = Shift_R NoSymbol Shift_R
keycode  64 = Alt_L NoSymbol Alt_L
keycode  65 = space NoSymbol space
keycode  66 = Caps_Lock NoSymbol Caps_Lock
keycode  67 = F1 NoSymbol F1
keycode  68 = F2 NoSymbol F2
keycode  69 = F3 NoSymbol F3
keycode  70 = F4 NoSymbol F4
keycode  71 = F5 NoSymbol F5
keycode  72 = F6 NoSymbol F6
keycode  73 = F7 NoSymbol F7
keycode  74 = F8 NoSymbol F8
keycode  75 = F9 NoSymbol F9
keycode  76 = F10 NoSymbol F10
keycode  82 = minus NoSymbol minus NoSymbol
keycode  83 = Home quotedbl Home quotedbl
keycode  86 = plus NoSymbol plus NoSymbol
keycode  87 = Prior Multi_key Prior Multi_key
keycode  88 = End XF86_Switch_VT_2 End XF86_Switch_VT_2
keycode  89 = Next XF86_Switch_VT_1 Next XF86_Switch_VT_1
keycode  95 = F11 NoSymbol F11
keycode  96 = F12 NoSymbol F12
keycode 118 = Insert NoSymbol Insert
keycode 132 = yen NoSymbol yen
keycode 187 = parenleft NoSymbol parenleft
keycode 188 = parenright NoSymbol parenright
keycode 191 = acute NoSymbol acute
keycode 192 = bar NoSymbol bar
keycode 193 = underscore NoSymbol underscore
keycode 194 = numbersign NoSymbol numbersign
keycode 195 = exclam NoSymbol exclam
keycode 196 = sterling NoSymbol sterling
keycode 197 = quotedbl NoSymbol quotedbl
keycode 198 = at NoSymbol at
keycode 199 = colon NoSymbol colon
keycode 200 = dollar NoSymbol dollar
keycode 201 = EuroSign NoSymbol EuroSign
keycode 222 = question NoSymbol question
keycode 235 = Tab NoSymbol Tab

Ok, now let's break this down a little. keycode 38 = a A a A - the first two letters after the = sign are what you'll get if you press the button marked A with and without holding "shift". The next two are with and without shift modifier together with a second modifier, but since there's no second modifier on the Pandora, this is redundant really. What about Fn, you may ask, isn't that a second modifier? The Fn-key acts on a lower level, and is not seen as a separate key. Instead, there are separate keycode entries for all Fn keys (the ones marked in blue on your Pandora). "NoSymbol" means that the combination doesn't produce a character. You can find a full list of symbols (or "keysyms") that you can use over here.

You can edit the .pndXmodmap file itself if you want to. That'll change the default keyboard layout you have at startup.

But you can also make secondary custom keyboard layouts.

For example, here's how to make a selectable custom Russian keyboard layout:

Making a custom Russian keyboard layout

Make two new files inside /media/yourSDcard/pandora/appdata/kblayout/keymaps. One called "RU-translit" (the name doesn't matter), one called ".rumodmap" (the dot at the start of the name is to make it not show up in the Keyboard Layout Changer menu as a keymap; that's the function of the first file you made). Put this text in the RU-translit file:

./setxkbmap -layout us
xmodmap keymaps/.rumodmap

Put this text in the .rumodmap file:

keycode   9 = Escape NoSymbol Escape
keycode  10 = 1 section 1 section
keycode  11 = 2 braceleft 2 braceleft
keycode  12 = 3 braceright 3 braceright
keycode  13 = 4 asciitilde 4 asciitilde
keycode  14 = 5 percent 5 percent
keycode  15 = 6 asciicircum 6 asciicircum
keycode  16 = 7 ampersand 7 ampersand
keycode  17 = 8 asterisk 8 asterisk
keycode  18 = 9 bracketleft 9 bracketleft
keycode  19 = 0 bracketright 0 bracketright
keycode  22 = BackSpace Delete BackSpace Delete
keycode  24 = Cyrillic_ya Cyrillic_YA Cyrillic_ya Cyrillic_YA
keycode  25 = Cyrillic_zhe Cyrillic_ZHE Cyrillic_zhe Cyrillic_ZHE
keycode  26 = Cyrillic_ie Cyrillic_IE Cyrillic_ie Cyrillic_IE
keycode  27 = Cyrillic_er Cyrillic_ER Cyrillic_er Cyrillic_ER
keycode  28 = Cyrillic_te Cyrillic_TE Cyrillic_te Cyrillic_TE
keycode  29 = Cyrillic_yeru Cyrillic_YERU Cyrillic_yeru Cyrillic_YERU
keycode  30 = Cyrillic_u Cyrillic_U Cyrillic_u Cyrillic_U
keycode  31 = Cyrillic_i Cyrillic_I Cyrillic_i Cyrillic_I
keycode  32 = Cyrillic_o Cyrillic_O Cyrillic_o Cyrillic_O
keycode  33 = Cyrillic_pe Cyrillic_PE Cyrillic_pe Cyrillic_PE
keycode  34 = parenleft NoSymbol parenleft
keycode  35 = parenright NoSymbol parenright
keycode  36 = Return Multi_key Return
keycode  37 = Control_L NoSymbol Control_L
keycode  38 = Cyrillic_a  Cyrillic_A Cyrillic_a  Cyrillic_A
keycode  39 = Cyrillic_es Cyrillic_ES Cyrillic_es Cyrillic_ES
keycode  40 = Cyrillic_de Cyrillic_DE Cyrillic_de Cyrillic_DE
keycode  41 = Cyrillic_ef Cyrillic_EF Cyrillic_ef Cyrillic_EF
keycode  42 = Cyrillic_ghe Cyrillic_GHE Cyrillic_ghe Cyrillic_GHE
keycode  43 = Cyrillic_che Cyrillic_CHE Cyrillic_che Cyrillic_CHE
keycode  44 = Cyrillic_shorti Cyrillic_SHORTI Cyrillic_shorti Cyrillic_SHORTI
keycode  45 = Cyrillic_ka Cyrillic_KA Cyrillic_ka Cyrillic_KA
keycode  46 = Cyrillic_el Cyrillic_EL Cyrillic_el Cyrillic_EL
keycode  47 = semicolon NoSymbol semicolon
keycode  48 = apostrophe NoSymbol apostrophe
keycode  49 = grave NoSymbol grave
keycode  50 = Shift_L NoSymbol Shift_L
keycode  52 = Cyrillic_ze Cyrillic_ZE Cyrillic_ze Cyrillic_ZE
keycode  53 = Cyrillic_ha Cyrillic_HA Cyrillic_ha Cyrillic_HA
keycode  54 = Cyrillic_tse Cyrillic_TSE Cyrillic_tse Cyrillic_TSE
keycode  55 = Cyrillic_ve Cyrillic_VE Cyrillic_ve Cyrillic_VE
keycode  56 = Cyrillic_be Cyrillic_BE Cyrillic_be Cyrillic_BE
keycode  57 = Cyrillic_en Cyrillic_EN Cyrillic_en Cyrillic_EN
keycode  58 = Cyrillic_em Cyrillic_EM Cyrillic_em Cyrillic_EM
keycode  59 = comma less comma less
keycode  60 = period greater period greater
keycode  61 = slash NoSymbol slash
keycode  62 = Shift_R NoSymbol Shift_R
keycode  64 = Alt_L NoSymbol Alt_L
keycode  65 = space NoSymbol space
keycode  66 = Caps_Lock NoSymbol Caps_Lock
keycode  67 = Cyrillic_yu Cyrillic_YU Cyrillic_yu Cyrillic_YU
keycode  68 = Cyrillic_e Cyrillic_E Cyrillic_e Cyrillic_E
keycode  69 = Cyrillic_softsign Cyrillic_SOFTSIGN Cyrillic_softsign Cyrillic_SOFTSIGN
keycode  70 = Cyrillic_sha Cyrillic_SHA Cyrillic_sha Cyrillic_SHA
keycode  71 = Cyrillic_shcha Cyrillic_SHCHA Cyrillic_shcha Cyrillic_SHCHA
keycode  72 = Cyrillic_io Cyrillic_IO Cyrillic_io Cyrillic_IO
keycode  73 = Cyrillic_hardsign Cyrillic_HARDSIGN Cyrillic_hardsign Cyrillic_HARDSIGN
keycode  74 = F8 NoSymbol F8
keycode  75 = F9 NoSymbol F9
keycode  76 = F10 NoSymbol F10
keycode  82 = minus Prior minus Prior
keycode  83 = Home quotedbl Home quotedbl
keycode  86 = plus NoSymbol plus NoSymbol
keycode  87 = Prior Multi_key Prior Multi_key
keycode  88 = End XF86_Switch_VT_2 End XF86_Switch_VT_2
keycode  89 = Next XF86_Switch_VT_1 Next XF86_Switch_VT_1
keycode  95 = F11 NoSymbol F11
keycode  96 = F12 NoSymbol F12
keycode 118 = Delete Insert Delete
keycode 132 = yen NoSymbol yen
keycode 187 = parenleft NoSymbol parenleft
keycode 188 = parenright NoSymbol parenright
keycode 191 = acute NoSymbol acute
keycode 192 = bar NoSymbol bar
keycode 193 = underscore NoSymbol underscore
keycode 194 = numbersign NoSymbol numbersign
keycode 195 = exclam NoSymbol exclam
keycode 196 = sterling NoSymbol sterling
keycode 197 = quotedbl NoSymbol quotedbl
keycode 198 = at NoSymbol at
keycode 199 = colon NoSymbol colon
keycode 200 = dollar NoSymbol dollar
keycode 201 = EuroSign NoSymbol EuroSign
keycode 222 = question NoSymbol question
keycode 235 = Tab NoSymbol Tab

Once that's done, you can open the Keyboard Layout Changer, choose "RU-translit", and your keyboard layout will change to a layout similar to this one, with extra letters replacing F1-F7 (note: for those 7 letters, you can only use the Shift on the Pandora's front face, not the left shoulder button). To change back, open Keyboard Layout Changer again and select "default".

In the same way, you can create any other sorts of custom layouts. The easiest way to create a new modmap file is to copy+paste the contents of /home/username/.pndXmodmap into a new file in the /media/yourSDcard/pandora/appdata/kblayout/keymaps directory and make adjustments to whatever you want to change.