Changing   layout of hardware keyboard How I can change a layout or add a new layout to physical keyboard of  Xperia mini pro phone?

I want for example remap ? to ''ə'' and shift ? to ''Ə'', or س to ی in Persian layout or even add new layout (Persian 2 layout).

You can find build-in layout here, actually I want to add a new layout to them.
First, obtain the following:


Android device with root access
adb on your computer 


you can do without this, but that just means a lot of time copying files back and forth to your phone and moving them with something like Root Explorer

text editor


Now, 


Plug your phone in to your computer and navigate to the /system/usr/keylayout/ folder, using adb or a Terminal Emulator
Pull the file for your keylayout. Mine was called qwerty.kl and looked like this:



key 399   GRAVE
key 2     1
key 3     2
key 4     3
key 5     4
key 6     5
key 7     6
key 8     7
key 9     8
key 10    9
key 11    0
key 158   BACK              WAKE_DROPPED
key 230   SOFT_RIGHT        WAKE
key 60    SOFT_RIGHT        WAKE
key 107   ENDCALL           WAKE_DROPPED
key 62    ENDCALL           WAKE_DROPPED
key 229   MENU              WAKE_DROPPED
key 139   MENU              WAKE_DROPPED
key 59    MENU              WAKE_DROPPED
key 127   SEARCH            WAKE_DROPPED
key 217   SEARCH            WAKE_DROPPED
key 228   POUND
key 227   STAR
key 231   CALL              WAKE_DROPPED
key 61    CALL              WAKE_DROPPED
key 232   DPAD_CENTER       WAKE_DROPPED
key 108   DPAD_DOWN         WAKE_DROPPED
key 103   DPAD_UP           WAKE_DROPPED
key 102   HOME              WAKE
key 105   DPAD_LEFT         WAKE_DROPPED
key 106   DPAD_RIGHT        WAKE_DROPPED
key 115   VOLUME_UP         WAKE
key 114   VOLUME_DOWN       WAKE
key 116   POWER             WAKE
key 212   CAMERA

key 16    Q
key 17    W
key 18    E
key 19    R
key 20    T
key 21    Y
key 22    U
key 23    I
key 24    O
key 25    P
key 26    LEFT_BRACKET
key 27    RIGHT_BRACKET
key 43    BACKSLASH

key 30    A
key 31    S
key 32    D
key 33    F
key 34    G
key 35    H
key 36    J
key 37    K
key 38    L
key 39    SEMICOLON
key 40    APOSTROPHE
key 14    DEL

key 44    Z
key 45    X
key 46    C
key 47    V
key 48    B
key 49    N
key 50    M
key 51    COMMA
key 52    PERIOD
key 53    SLASH
key 28    ENTER

key 56    ALT_LEFT
key 100   ALT_RIGHT
key 42    SHIFT_LEFT
key 54    SHIFT_RIGHT
key 15    TAB
key 57    SPACE
key 150   EXPLORER
key 155   ENVELOPE        

key 12    MINUS
key 13    EQUALS
key 215   AT

# On an AT keyboard: ESC, F10
key 1     BACK              WAKE_DROPPED
key 68    MENU              WAKE_DROPPED




Now, play with the file! 


To change L to M, key 38    L->key 38   M

Obviously, key ### maps to certain keys. This can be tedious, as you mostly have to guess and check the key numbers.

Here is what I've found so far for mine, hopefully it helps:



The next part is the mapping. Simply put the character or command, such as HOME after the key number.

The last part (WAKE/WAKE_DROPPED) determines if the key wakes the screen. WAKE=wake the screen WAKE_DROPPED=don't wake screen.

Now get it like you want it, and enjoy!

This will work with English-based keyboards, after that it's a little more guess and check, because you will need to know the foreign character that corresponds to the English character that corresponds to the key #.