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
^^ 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!
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
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
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.
valhala.awaits said:
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.
Click to expand...
Click to collapse
WHAT THE HECK ARE YOU TALKING ABOUT? CAPS LOCK IS THE BEST KEY ON THE KEYBOARD. THIS IS BLASPHEMY.
(Sorry couldn't resist )
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!
kasouti said:
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.
Click to expand...
Click to collapse
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.
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.
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
moah909 said:
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.
Click to expand...
Click to collapse
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.
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.
highlandsun said:
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.
Click to expand...
Click to collapse
See (http ://code.google.com/p/connectbot/issues/detail?id=558) Issue 558 on ConnectBots site.
here is an untouched system/usr/keylayout incase anybody needs it:
http://www.mediafire.com/?mtsl53uus6qkwfz
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?
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.
H0H3N5T3RN said:
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?
Click to expand...
Click to collapse
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
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?
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.
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
greekchampion04 said:
here is an untouched system/usr/keylayout incase anybody needs it:
http://www.mediafire.com/?mtsl53uus6qkwfz
Click to expand...
Click to collapse
Any way to PM me this file? It is no longer available at that link. Thanks in advance
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!
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
Hi I was just wondering if it were possible to disable the physical home button. Any toddler apps my niece plays with are short played because she just clicks home all the time. I know there are kids apps that act as a home replacement button I was looking for something more elegant, namely pie mode or expanded desktop.
I did try editing the kl files in system/usr/keylayout
I changed HOME to BACK just to test but it didn't work.
I'm using the latest schizoid rom 4.2.2
Expanded desktop is pie in that ROM not sure if it disables the physical home button though
4catalyst2cI said:
Expanded desktop is pie in that ROM not sure if it disables the physical home button though
Click to expand...
Click to collapse
Pie doesn't disable physical home button. Pie is far less distracting for her, without the soft keys though.
Solution
I found the solution. Ill just keep this here if someone else in Googleland needs to disable the home button.
Download Jota+ and Root Explorer (maybe there is a free alternative?) from Google Play.
Open Root Explorer, navigate to /system/user/keylayout, then hold down gpio-keys.kl and select copy. Navigate to the sdcard and paste the file (use the "copy here" button on the top). Make another copy for backup if you don't like livin' on the edge. Now hold down gpio-keys.kl, select open with, General tab, Open as Text. Select Jota+. Find the line that says key 232 HOME WAKE. Remove the word HOME or replace it with another key if you really want to. Hit Save, the back button, copy gpio-key.kl. If it gives an error, try again because it's requesting root privileges. Reboot.
Use pie to hide the soft keys. In the pie settings there is a option to disable pie from appearing. I can't figure out how to enable "Expanded Desktop" in this build.
gosmo86 said:
Hi I was just wondering if it were possible to disable the physical home button. Any toddler apps my niece plays with are short played because she just clicks home all the time. I know there are kids apps that act as a home replacement button I was looking for something more elegant, namely pie mode or expanded desktop.
I did try editing the kl files in system/usr/keylayout
I changed HOME to BACK just to test but it didn't work.
I'm using the latest schizoid rom 4.2.2
Click to expand...
Click to collapse
Some of the launchers you can set the Home button to do nothing, like Nova. Not sure if that would give you the desired result your looking for.
So, if you were following my other thread (which I doubt anyone was since no-one offered help), I managed to fix my incredibly hard soft brick
Everything's running great now, except the menu key isn't functioning. This would be fine, except the 3dot menu xposed module is causing other problems when installed and I'm not running a CM ROM so I can't simply make it double press the home button for menu or anything like that.
So I actually need to get the menu button working, not find an alternative. I can't seem to find the number of the button tho. I know you can check with CWM but I don't have it and don't want to risk stuffing up my phone again right now because I will be relying on it pretty heavily for the next week or so. How can I remap the menu button so it can be used as the menu button if I don't know the hard key number? International S4 Active, thanks.
You can try here
http://forum.xda-developers.com/showthread.php?t=2534697. In the Aroma Installer, there's is a button fix of sorts, used on the i537 in safestrap, so we could use regular s4 roms, soomewhere else, don't remember where, the is the button .zip file, by itself.
Sent Via Smoke Signals
tiskael said:
So, if you were following my other thread (which I doubt anyone was since no-one offered help), I managed to fix my incredibly hard soft brick
Everything's running great now, except the menu key isn't functioning. This would be fine, except the 3dot menu xposed module is causing other problems when installed and I'm not running a CM ROM so I can't simply make it double press the home button for menu or anything like that.
So I actually need to get the menu button working, not find an alternative. I can't seem to find the number of the button tho. I know you can check with CWM but I don't have it and don't want to risk stuffing up my phone again right now because I will be relying on it pretty heavily for the next week or so. How can I remap the menu button so it can be used as the menu button if I don't know the hard key number? International S4 Active, thanks.
Click to expand...
Click to collapse
You should be able to flash the keys fix in the MasterPatch that @captaincado posted above. For the actual key numbers see below.
Code:
key 115 VOLUME_UP
key 114 VOLUME_DOWN
key 172 HOME
key 139 MENU
key 158 BACK
Good luck.
Just an update, I followed all the instructions, couldn't get this working. It's possible that the button just happened to physically break when I flashed the ROM but it doesn't matter, because I found All in one Gestures (link below) which I used to replace the menu button... and then every other button, plus some. It's really good, I recommend it to anyone who has trouble reaching certain button, has a broken button or would just wants to have a go at increasing speed:
https://play.google.com/store/apps/details?id=com.phoenixstudios.aiogestures&hl=en
Is there a way to enable soft keys like Nexus or Moto X? I'm not looking for an app that fakes the behavior.
I have a Note 3 4.4.2 Kitkat (NC2).
edit: I found it working well, so I am updating this post.
[Enable soft menu keys]
edit "/system/build.prop", and add at the bottom:
Code:
qemu.hw.mainkeys=0
[Optional] Disable hardwired buttons.
edit "/system/usr/keylayout/Generic.kl", comment out these two lines so it looks like this:
Code:
# key 139 MENU
# key 158 BACK
After using a while, I found it works best if I keep the hardware buttons enabled too. Back key is now on both left and right side so it's easier to reach when using with one hand.
[Optional] Disable 3-dot menu button. When you enable soft-keys, there will be an additional menu shown in every app. This could waste lot of space. You should have Xposed mod installed, then look for Noverflow, and install that.
Noverflow xposed mod.
This doesn't work on Galaxy S5 Port Update 4 ROM, but works well with stock NC2 ROM.
[Optional] Once softmenu keys are added, you have less screen space. The Dialer app doesn't know how to scale, so you would have the bottom row keys chopped off a bit. You can make change the DPI settings so it'll shrink and be able to see everything.
Default screen DPI is 480. I changed it to 450.
Edit file "/system/build.prop", look for the line with "ro.sf.lcd_density=480" and edit so it looks like this:
Code:
ro.sf.lcd_density=450
[Optional] Remove AT&T wifi autoconnect.
I don't know why, but even if I uncheck autoconnect AT&T wifi, it still keeps trying. And you can't really remove the profile either.
Edit "/data/misc/wpa_supplicant.conf"
Look for ssid="attwifi", change that to something like this:
Code:
ssid="attwifi-sucks"