• Introducing XDA Computing: Discussion zones for Hardware, Software, and more!    Check it out!

Remapping Physical Buttons/Adding Alternate Keys

Search This thread

moah909

Senior Member
Oct 16, 2010
70
20
Sekret
I am aware that there is a thread in the Droid 4 Dev Section but as I am a "New User" I can't post there :confused:
^^ And as I am a new user please excuse any mistakes I make in posting/formatting this ;)

I am going to be redoing this guide soon for several reasons.
A few days after I made this thread the root functionality of File Expert became something you have to pay for. I also found a good hex editor which is much clearer then Notepad ++.

There are two parts to this guide, Remapping Physical Keys/Buttons and Alternate Keys(Using the SYM key as an ALT key as on previous Droid versions).

Things to download
File Expert (I use this as my root file explorer, permission editor, etc. it also lets me remount the /system as read write which I couldn't seem to do with adb remount or busybox remount.) You dont NEED this, you should theoretically be able to use terminal/adb shell but I couldn't get it to work so this guide uses it.

KeynrTracker.apk (For Remapping buttons not covered) Attached, From http://forum.xda-developers.com/showthread.php?t=850464 - the actual button remapping tool doesnt work with Droid 4 yet

Notepad++ I would recommend using Notepad++, but any editor that can handle binary/unix files - NORMAL NOTEPAD DOES NOT WORK, NOR DOES WORD

THE PHONE NEEDS TO BE ROOTED FOR THIS TO WORK - MAKE A BACKUP OF THE FILES THAT WE ARE GOING TO EDIT

Remapping Physical Keys
The files in /system/usr/keylayout are the configuration for physical buttons, you can edit all of them, but I would recommend only editing omap-keypad.kl(Physical Keyboard) for the time being, as you could disable the capacitive buttons. IF you do somehow mess up omap-keypad.kl (I didnt have the correct permissions at first) android has a default generic version it defaults on if omap-keypad.kl doesn't work correctly, you can tell it is using this as the Caps Lock key, Shift key, SYM key wont work properly and the Arrow buttons will all be rotated to the right so up = right, right = down etc.

This part of the guide is essentially this older guide for HTC Hero, but with more customization for the Droid 4.

Either download my uploaded copy of the original omap-keypad.kl or get your own from /system/usr/keylayout/omap-keypad.kl

Open omap-keypad.kl in a text editor either on your phone(touchqode is what I use) or on your computer (Notepad++)

For this example I am going to remap the SYM key to an ALT key so it can be used in the next part of this guide.

In your text editor find
Code:
key 162   SYM               WAKE_DROPPED
(It should be at the bottom) 162 is the physical scancode, SYM is the action that happens and WAKE_DROPPED tells the OS that if the phone is off pressing key 162 will wake it but it will not send the keypress. We want to make this an alt button so all we do is change SYM to ALT_LEFT (You have it be ALT_RIGHT, I'm not sure theres a difference but I use ALT_LEFT). So it should look like
Code:
key 162   ALT_LEFT               WAKE_DROPPED


If you want other keys, for example I remapped the OK key to be a SHIFT_RIGHT key, you need to find the scan code for the key using the attached KeynrTracker.apk


So in this case the scancode is 232, so we go into our omap-keypad.kl file and find key 232


We see that it is mapped to DPAD_CENTER and I want to make it a shift button so I'll change it to SHIFT_RIGHT


Now we need to get our keymap back onto the phone should be as simple as
Code:
adb remount
adb push omap-keypad /system/usr/keylayout
BUT, that did not work for me so I had to use File Expert to remount and copy the file. So transfer the file to the internal phone storage/sdcard, then use File Expert to remount the /system as rw.
Go to /system press the menu button -> More -> Mount -> Mount as Read Write


Then copy the edited file from your sdcard to /system/usr/keylayout it should prompt you that there is a file there called omap-keypad.kl, select overwrite.
Then long hold on the omap-keypad.kl file and select permissions from the menu.


Make sure the permissions look like below, and click apply.


Now reboot your phone and your custom key mappings should work! :D

Creating Alternate Keys
The biggest issue I have from switching from a OG Droid to the Droid 4 is the fact that you have to press SYM and select your symbol instead of alternate symbols for a key.

So we already set up the SYM key to act as an ALT key in the first part, but now we have to define the keys so they do something when our "ALT" key is pressed, this data is stored in /system/usr/keychars/omap-keypad.kcm.bin, like before you can use my uploaded versions or get your own from that directory. But unlike before these aren't straight forward text files they have been converted to binary, because it is faster for the system to read. So when we open it in Notepad ++ this is what it shows


Because this file is binary/hex the all the nul symbols really = 00 in hex = 0 in binary. If you feel comfortable editing the hex code directly you can convert the document from ASCII to hex in notepad ++ under the plugin menu, and use this to figure out the characters http://www.ascii-code.com/
But for the purpose of the guide we are going to ignore the NUL symbols and change the characters. If it helps you can make a copy and open it in normal notepad because it doesnt show the null characters, BUT YOU CAN NOT USE NOTEPAD TO EDIT IT. So to set a key so it will use an alternate key when ALT(SYM) is pressed you need to find 5th instance of that in the document, so in this case I want to make the "," and "." keys be "<" and ">" when SYM is held down, so I need to change the 5th definition for the , key to < so it should look like this
Code:
NUL,NUL,NUL,NUL;NUL<NUL;NUL


And the same for the "." key
Code:
NUL.NUL.NUL.NUL:NUL>NUL:


From what I understand from poking around on the files from my phone and looking at things on the internet the first two times the character appears is defining what key has what attributes, the 3rd one is the lowercase, 4th is the uppercase, 5th is the ALT and 6th is the ALT+Shift. So with out all the Nulls this is what the Key Character Map for A looks like, A A a A a A and for "," it is , , , ; ; ; but for our edited version it is , , , ; < ; because the 5th spot is the one that represents the character you will get when you do that key + ALT.



Now to get the file back onto your phone do what we did before but put it in /system/usr/keychars/omap-keypad.kcm.bin

Make sure your permissions are the same as the one for the omap-keypad.kl

Restart and you should have a working Alternate Key Character :cool:
 

Attachments

  • KeynrTracker.apk
    8.3 KB · Views: 355
Last edited:

valhala.awaits

New member
Sep 20, 2011
2
0
Awesome, can't wait to try this out. I haven't looked at all of this quite yet, but i am hoping to be able to remap caps lock, the most useless key ever, to something better. Thanks for your work!

Sent from my DROID4 using XDA App
 

kasouti

Member
Apr 1, 2011
10
2
The guide was amazing helpful for binding >< and changing caps lock to be an alt key, but I was wondering if you had any idea which file would have the operations for alt + backspace to make it clear a whole line. Again thanks for the guide.
 

tliebeck

Senior Member
Sep 15, 2010
1,839
4,327
Southern California
I haven't looked at all of this quite yet, but i am hoping to be able to remap caps lock, the most useless key ever, to something better.

WHAT THE HECK ARE YOU TALKING ABOUT? CAPS LOCK IS THE BEST KEY ON THE KEYBOARD. THIS IS BLASPHEMY.

(Sorry couldn't resist :D)

Keyboard maps out pretty well, I did

quote -> backquote
I -> pipe
O P -> { }
K L -> [ ]
/ -> \
, . -> < >
Q -> tilde

Used CAPS LOCK as my alt key.
Left the SYM key entirely alone.

Half tempted to make caps lock and OK shift keys, make sym key the OK key, and make shift key the ALT key.

BTW, ALT+arrows and backspace work as they did on the Droid 1/2/3.

Thanks so much for posting this, really has made the Droid 4 keyboard *SUBSTANTIALLY* better!
 

moah909

Senior Member
Oct 16, 2010
70
20
Sekret
The guide was amazing helpful for binding >< and changing caps lock to be an alt key, but I was wondering if you had any idea which file would have the operations for alt + backspace to make it clear a whole line. Again thanks for the guide.

I'm not sure, neither of my phones(OG Droid, Droid 4) have had that functionality so I'm not sure what makes that work. If you want you can send me your keylayout and keychars folders from your old phone(Droid 2/3?)that had that, through a PM and I'll try to figure out how to add that.
 

me_droid

Senior Member
Nov 30, 2010
60
12
kb remap

moah99 thank you thank you thank you. The one key I totally miss from my D1 is the @ key and thanks to you I have remapped the useless caps lock key to @. Caps lock would be useful except I use swiftkey that renders it inoperative on the D4.

After finding the correct key (222) with keynrtracker, I completed the rest using rootexplorer - backed up that file, mounted the containing folder as r/w, opened file in text editor, edited the correct line to show AT instead of CAPS, rebooted phone and it worked perfectly.
 
Last edited:

H0H3N5T3RN

New member
Mar 2, 2012
3
0
Tried this but....

I tried changing the key 222 (Caps lock) to power the phone off and on (when i text people and I'm watching tv i typically just leave the keyboard open and lock the phone, but the power button isn't exactly easy to find) so i wouldn't need to use the power button on top. It didn't work, is there anyway i can get it to work?

Thanks,
Jacob
 

kasouti

Member
Apr 1, 2011
10
2
I'm not sure, neither of my phones(OG Droid, Droid 4) have had that functionality so I'm not sure what makes that work. If you want you can send me your keylayout and keychars folders from your old phone(Droid 2/3?)that had that, through a PM and I'll try to figure out how to add that.

Looks like it does support it. For some reason it was just buggy at first and didn't seem to respond to alt then left. As for the delete, I was coming from an epic and my friend with a droid 2 had told me the alt then delete would wipe the line, apparently alt has to be held when it's hit and within texting you either need 2 blank spaces before pressing it or to have just finished deleting a word. Or some odd rules like that. Thanks for the help.
 

highlandsun

Inactive Recognized Developer
Sep 15, 2009
872
263
Los Angeles
highlandsun.com
Hmmm. I'm running into some oddness here, the shifted number keys look right in the kcm.bin file, but they don't work in Connectbot. It looks like they're being treated like ANSI function keys instead. Anyone else know what's up here? I've never owned a Droid-anything before, my previous two phones (G1 and TP2) keyboards work fine in Connectbot.
 

GambitDash

New member
Dec 20, 2010
3
0
Hmmm. I'm running into some oddness here, the shifted number keys look right in the kcm.bin file, but they don't work in Connectbot. It looks like they're being treated like ANSI function keys instead. Anyone else know what's up here? I've never owned a Droid-anything before, my previous two phones (G1 and TP2) keyboards work fine in Connectbot.

See (http ://code.google.com/p/connectbot/issues/detail?id=558) Issue 558 on ConnectBots site.
 

H0H3N5T3RN

New member
Mar 2, 2012
3
0
Help me please

So you definitely seem to understand how this works. Well i tried making my caps lock key a power key because my power key sticks really bad, and all that did was screw up my dpad (like when i would press the left arrow it would go down, etc) and so i asked for a /system/usr/keylayout file which i got and tried pasting it into the usr file to fix all the things i may have screwed up and now nothing works. The capacitive buttons, all of the keyboard and the volume and power doesn't work. What do i have to do?
 

me_droid

Senior Member
Nov 30, 2010
60
12
remap slash key to just question mark

What is the proper designation in Omap-kypad.kl for the question mark? I wanted to convert the slash / key to just the question mark. The D1 has one - I looked at the Omap-kypad.kl on my D1 but couldn't find anything that looked like "quest" or "question", etc. On the other hand I don't see that slash in the symbol set when the SYM key is pressed so maybe I shouldn't change it. Would be nice to know if its possible though.
 
Last edited:

moah909

Senior Member
Oct 16, 2010
70
20
Sekret
So you definitely seem to understand how this works. Well i tried making my caps lock key a power key because my power key sticks really bad, and all that did was screw up my dpad (like when i would press the left arrow it would go down, etc) and so i asked for a /system/usr/keylayout file which i got and tried pasting it into the usr file to fix all the things i may have screwed up and now nothing works. The capacitive buttons, all of the keyboard and the volume and power doesn't work. What do i have to do?

You should check the permissions of the files using adb shell/terminal emulator.
Code:
su
cd /system/usr/keylayout
ls -l *

It should look like (with your date of course)

Code:
-rw-r--r-- root     root                 3383 2012-02-24 23:20 omap-keypad.kl
-rw-r--r-- root     root                  245 2011-12-28 15:23 AVRCP.kl
-rw-r--r-- root     root                   75 2011-12-28 15:23 cpcap-key.kl
-rw-r--r-- root     root                 1834 2011-12-28 15:23 evfwd.kl
-rw-r--r-- root     root                 3609 2011-12-28 15:23 usb_keyboard_102_en_us.kl
-rw-r--r-- root     root                 4132 2011-12-28 15:23 qwerty.kl

If it doesn't say -rw-r--r-- that means the correct permissions aren't set, so run:
Code:
chmod 0644 *

and all your buttons should work!

Your original issue was probably the same thing the permissions on the file probably weren't set right which makes it default on a generic keylayout. I did the same thing when I first was remapping my buttons and I couldn't figure out what was wrong for a couple weeks :p
 

New Daddy

Member
Dec 6, 2009
43
1
Although this looks like a very powerful tool for remapping keys, I'm a little overwhelmed. For my previous WM phone, HTC Touch Pro 2, there used to be a very intuitive, easy-to-use remapping tool.

Is there any chance that somebody will develop another key-remapping tool targeted for the technically challenged if I wait this one out?
 

New Daddy

Member
Dec 6, 2009
43
1
Can somebody tell me how I can assign "!" to shift+1?

I know. "!" is assigned to shift+1 by default. But with Smart Keyboard Pro, all symbols are messed up so I have to reassign them all individually.
 

drsingh

Member
Apr 12, 2012
10
0
I am a total noob when it comes to coding and I just remapped my search key and made it a second power key! Two minutes, root explorer did the trick.This is my first post on these forums and this is a fantastic thread for noons and pros alike!

P.S. I tried the app first but the layout file is named as QWERTY.kl in CM 7.2 RC 1 so I had to do it manually.I used your helper app to find out what I needed to change!

Cheers to the contributors of knowledge to this thread!!!!!! :beer:

Sent from my LG-P500 using Tapatalk 2 Beta-5
 
Last edited:

david007co

Member
Nov 18, 2008
29
0
Remmap a key to no function

Hi, I was wondering how to remmap a HArd Key to do nothing. I can eighter modify the .kl file or use ButtonRemapper, but what should I write in order to dissable this key.

The reason is because the volume down button is broken and keeps pressing itself when the phone heats up.

Thank you!
 

svgt99

Member
Jan 1, 2011
7
0
Hamburg, Germany
Change the keyboard layout

Hello,

I use a smartbook HP Compaq Airlife 100 with Android 1.6. This device has a physical keyboard with Spanish layout. I want to change it into a German layout. In /system/usr/keychars I find a German quertz_hawthorne_german.kcm.bin. In /system/usr/keylayout I find a quertz_hawthorne_german.kl.
At which place is the trigger for switching the used keyboard language? In the normal Android menu I can only choose English-uk, English-us and Spanish.
The only thing I have found is in /system/build.prop: ro.product.locale.language=es and ro.product.locale.region=ES

Regards Svgt99
 

Top Liked Posts

  • There are no posts matching your filters.
  • 5
    I am aware that there is a thread in the Droid 4 Dev Section but as I am a "New User" I can't post there :confused:
    ^^ And as I am a new user please excuse any mistakes I make in posting/formatting this ;)

    I am going to be redoing this guide soon for several reasons.
    A few days after I made this thread the root functionality of File Expert became something you have to pay for. I also found a good hex editor which is much clearer then Notepad ++.

    There are two parts to this guide, Remapping Physical Keys/Buttons and Alternate Keys(Using the SYM key as an ALT key as on previous Droid versions).

    Things to download
    File Expert (I use this as my root file explorer, permission editor, etc. it also lets me remount the /system as read write which I couldn't seem to do with adb remount or busybox remount.) You dont NEED this, you should theoretically be able to use terminal/adb shell but I couldn't get it to work so this guide uses it.

    KeynrTracker.apk (For Remapping buttons not covered) Attached, From http://forum.xda-developers.com/showthread.php?t=850464 - the actual button remapping tool doesnt work with Droid 4 yet

    Notepad++ I would recommend using Notepad++, but any editor that can handle binary/unix files - NORMAL NOTEPAD DOES NOT WORK, NOR DOES WORD

    THE PHONE NEEDS TO BE ROOTED FOR THIS TO WORK - MAKE A BACKUP OF THE FILES THAT WE ARE GOING TO EDIT

    Remapping Physical Keys
    The files in /system/usr/keylayout are the configuration for physical buttons, you can edit all of them, but I would recommend only editing omap-keypad.kl(Physical Keyboard) for the time being, as you could disable the capacitive buttons. IF you do somehow mess up omap-keypad.kl (I didnt have the correct permissions at first) android has a default generic version it defaults on if omap-keypad.kl doesn't work correctly, you can tell it is using this as the Caps Lock key, Shift key, SYM key wont work properly and the Arrow buttons will all be rotated to the right so up = right, right = down etc.

    This part of the guide is essentially this older guide for HTC Hero, but with more customization for the Droid 4.

    Either download my uploaded copy of the original omap-keypad.kl or get your own from /system/usr/keylayout/omap-keypad.kl

    Open omap-keypad.kl in a text editor either on your phone(touchqode is what I use) or on your computer (Notepad++)

    For this example I am going to remap the SYM key to an ALT key so it can be used in the next part of this guide.

    In your text editor find
    Code:
    key 162   SYM               WAKE_DROPPED
    (It should be at the bottom) 162 is the physical scancode, SYM is the action that happens and WAKE_DROPPED tells the OS that if the phone is off pressing key 162 will wake it but it will not send the keypress. We want to make this an alt button so all we do is change SYM to ALT_LEFT (You have it be ALT_RIGHT, I'm not sure theres a difference but I use ALT_LEFT). So it should look like
    Code:
    key 162   ALT_LEFT               WAKE_DROPPED


    If you want other keys, for example I remapped the OK key to be a SHIFT_RIGHT key, you need to find the scan code for the key using the attached KeynrTracker.apk


    So in this case the scancode is 232, so we go into our omap-keypad.kl file and find key 232


    We see that it is mapped to DPAD_CENTER and I want to make it a shift button so I'll change it to SHIFT_RIGHT


    Now we need to get our keymap back onto the phone should be as simple as
    Code:
    adb remount
    adb push omap-keypad /system/usr/keylayout
    BUT, that did not work for me so I had to use File Expert to remount and copy the file. So transfer the file to the internal phone storage/sdcard, then use File Expert to remount the /system as rw.
    Go to /system press the menu button -> More -> Mount -> Mount as Read Write


    Then copy the edited file from your sdcard to /system/usr/keylayout it should prompt you that there is a file there called omap-keypad.kl, select overwrite.
    Then long hold on the omap-keypad.kl file and select permissions from the menu.


    Make sure the permissions look like below, and click apply.


    Now reboot your phone and your custom key mappings should work! :D

    Creating Alternate Keys
    The biggest issue I have from switching from a OG Droid to the Droid 4 is the fact that you have to press SYM and select your symbol instead of alternate symbols for a key.

    So we already set up the SYM key to act as an ALT key in the first part, but now we have to define the keys so they do something when our "ALT" key is pressed, this data is stored in /system/usr/keychars/omap-keypad.kcm.bin, like before you can use my uploaded versions or get your own from that directory. But unlike before these aren't straight forward text files they have been converted to binary, because it is faster for the system to read. So when we open it in Notepad ++ this is what it shows


    Because this file is binary/hex the all the nul symbols really = 00 in hex = 0 in binary. If you feel comfortable editing the hex code directly you can convert the document from ASCII to hex in notepad ++ under the plugin menu, and use this to figure out the characters http://www.ascii-code.com/
    But for the purpose of the guide we are going to ignore the NUL symbols and change the characters. If it helps you can make a copy and open it in normal notepad because it doesnt show the null characters, BUT YOU CAN NOT USE NOTEPAD TO EDIT IT. So to set a key so it will use an alternate key when ALT(SYM) is pressed you need to find 5th instance of that in the document, so in this case I want to make the "," and "." keys be "<" and ">" when SYM is held down, so I need to change the 5th definition for the , key to < so it should look like this
    Code:
    NUL,NUL,NUL,NUL;NUL<NUL;NUL


    And the same for the "." key
    Code:
    NUL.NUL.NUL.NUL:NUL>NUL:


    From what I understand from poking around on the files from my phone and looking at things on the internet the first two times the character appears is defining what key has what attributes, the 3rd one is the lowercase, 4th is the uppercase, 5th is the ALT and 6th is the ALT+Shift. So with out all the Nulls this is what the Key Character Map for A looks like, A A a A a A and for "," it is , , , ; ; ; but for our edited version it is , , , ; < ; because the 5th spot is the one that represents the character you will get when you do that key + ALT.



    Now to get the file back onto your phone do what we did before but put it in /system/usr/keychars/omap-keypad.kcm.bin

    Make sure your permissions are the same as the one for the omap-keypad.kl

    Restart and you should have a working Alternate Key Character :cool:
    2
    The guide was amazing helpful for binding >< and changing caps lock to be an alt key, but I was wondering if you had any idea which file would have the operations for alt + backspace to make it clear a whole line. Again thanks for the guide.

    I'm not sure, neither of my phones(OG Droid, Droid 4) have had that functionality so I'm not sure what makes that work. If you want you can send me your keylayout and keychars folders from your old phone(Droid 2/3?)that had that, through a PM and I'll try to figure out how to add that.
    2
    here is an untouched system/usr/keylayout incase anybody needs it:
    http://www.mediafire.com/?mtsl53uus6qkwfz
    1
    Hi,

    Would it be possible to replace the list of characters displayed by the SYM key ?
    There are a few characters displayed, but ideally, I would like to add combinations of characters in this list (to have access to a quick list of smileys).
    Is there a way to do this ?

    Thank you !