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

Custom keyboard layout

Search This thread

LuH

Senior Member
Aug 10, 2007
193
43
CZ
Hey, I found OK and caps lock keys on the D4 keyboard useless - I just don't see any difference between using OK, mapped as D-pad center, and Enter, and caps lock can be substituted by double press of shift. So I decided to play with the layout a bit, mainly because I was irritated by a need to touch the screen to work with clipboard or to go back.

The result is attached - a custom layout which remaps OK button from DPAD_CENTER to ESCAPE and caps lock from CAPS to CTRL_LEFT.

Esc works as the Back button and Ctrl is tested working in combinations of Ctrl+A (Select all), Ctrl+X (Cut), Ctrl+C (Copy) and Ctrl+V (Paste). Unfortunately Ctrl+Z/Y (Undo/Redo) don't seem to work... Any suggestions for other combinations to try?

I have tested it all on rooted Eclipse ICS 1.2 ROM, but it should generally work on all rooted Android 4.0.4 ROMs.

How to get it working?
1. You probably need to have your phone rooted first.
2. Optional - you might want to backup your original /system/usr/keylayout/omap4-keypad.kl if you're on different ROM (it should be all the same, but I haven't tested it)
3. Unpack the attached custom_layout.zip to the root of your phone - it will put omap4-keypad.kl into /system/usr/keylayout
4. Reboot your phone.


In case you'd like to revert the changes, I put the original keylayout from my system in original_layout.zip, or you can use your own backed up file :)

Hope you enjoy my mod. Also, which key would you suggest to replace by Menu? I'm thinking about SYM, but I still think the day I'll actually need it might come, unlike with caps lock and OK :)

For those interested in changing values for themselves I've attached scancodes of all the buttons given out by safestarap's key test - see keycodes.txt. If you're gonna change any .kl files, be sure to open it with some program supporting UNIX formatting such as PSPad - I really don't wanna see what would happen after editing it with Notepad :) You should probably also see Android documentation article about it first.
 

Attachments

  • custom_layout.zip
    1.1 KB · Views: 583
  • original_layout.zip
    1.1 KB · Views: 321
  • keycodes.txt
    975 bytes · Views: 902

bustr85

Senior Member
Nov 20, 2012
223
15
OnePlus 8 Pro
This sounds rather good...i wasn't going to, but this may give me a reason to root my phone. Thanks f for your work. It does seem illogical having those buttons. Btw what happens to LED when you press caps lock now.

Still running stock ics on Vodafone UK.

Sent from my DROID4 using xda app-developers app
 

wheeliest

Senior Member
Jun 17, 2010
120
9
Mesa
This doesnt seem to work on stock rooted.

it seems the physical keyboard runs off generic.kl and the omap4.kl, but i simply used root explorer to edit the KL's and got things how i wanted them. i missed my HTC G2 alt + del/backspace = delete whole line, so i made tab the ALT_LEFT and problems solved, also mapped OK as CTRL_LEFT for copy paste ext.. just my pref.

also changed all the qwerty keys to WAKE_DROPPED to wake the screen instead of having to hit the top power button, as i leave my phone on my desk open constantly so its annoying to always have to hit the power button to wake.
 
Last edited:

LuH

Senior Member
Aug 10, 2007
193
43
CZ
Btw what happens to LED when you press caps lock now.
I have Caps Lock mapped as Ctrl and it's not connected to the LED at all - seems the LED is working as normal Caps Lock signalization. However, after double-press of Shift the caps Lock is activated and the LED signalizes it fine.

This doesnt seem to work on stock rooted.

it seems the physical keyboard runs off generic.kl and the omap4.kl, but i simply used root explorer to edit the KL's and got things how i wanted them. i missed my HTC G2 alt + del/backspace = delete whole line, so i made tab the ALT_LEFT and problems solved, also mapped OK as CTRL_LEFT for copy paste ext.. just my pref.

also changed all the qwerty keys to WAKE_DROPPED to wake the screen instead of having to hit the top power button, as i leave my phone on my desk open constantly so its annoying to always have to hit the power button to wake.
Didn't know the Alt+BkSp combination, thanks :) What other combinations do you use?
BTW Alt+Tab works for switching apps (I have now SYM mapped as ALT_LEFT and TAB is left untouched - I like to use it when filling forms).
In my mod it already is WAKE_DROPPED, but not by me, it's probably one of the Eclipse mods to stock :)

So do you have to change the 2 files or just the one?

Sent from my DROID4 using xda app-developers app
What do you mean? Do you refer to wheeliest's post?
 

highlandsun

Inactive Recognized Developer
Sep 15, 2009
872
263
Los Angeles
highlandsun.com
Ah, good idea mapping SYM to ALT_LEFT. Then we can go in and define Alt key combos for the rest of the alpha keys, to get all the other symbols that we need (e.g., brackets, curly brackets, vertical bar, backquote...)

Sent from my DROID4 using Tapatalk
 

wheeliest

Senior Member
Jun 17, 2010
120
9
Mesa
I edited both .kl's to answer the above question,

I also changed the "/" to work as a "?" with out shifting first. (which i changed in the omap4 keychars)

system/usr/keychars/omap4-keypad.kcm

its about the middle of the code, you get into the symbols after the numbers.

key SLASH {
label. number: '?'
base: '?'
shift: '/'
ctrl. alt. meta: none

and thats the only useful key combos i know.
 
Last edited:

adamharrisuk

New member
Dec 24, 2012
3
0
I've tried to edit the keyboard for my AOSP Unofficial CM10/JB ROM. No luck at all.

None of the changes take effect and the shift key stops functioning as it should. You have to hold the shift key down and press the additional key for it to work, the same as you do on a computer keyboard.

I've tried to edit both the generic and omap4 files. It always ends up with the same result. Not looking for a fix just notifying you guys.
 

wild_a

New member
Mar 11, 2014
2
0
Frýdek-Místek
Long press symbols

Hi, does anybody know where to change symbols and/or their order in long press popup window?

screenshot - imgur.com/joN15zH

CM10 or CM11
 

ZavoDroid

New member
Apr 29, 2014
4
2
Hi, does anybody know where to change symbols and/or their order in long press popup window?

screenshot - imgur.com/joN15zH

CM10 or CM11

Unfortunately I don't know, but I never use it.

My short story:
My old phone was a Motorola Milestone 1 (Droid 1) with physical QWERTY.
I used it with Smart Keyboard Pro (SKP). It has an option called “Physical Keyboard”, by this way I reach the special characters of SKP’s actual language (long press on short character then some short press for selecting).
I changed for Droid4, upgraded for SlimKAT 4.4.2 installed SKP, but it is not worked with new 5-row keyboard. I can’t reach the keyboard’s yellow and my language-specific characters. Shift is not working with yellow keys.
Solution:
Change SYM and CAPS LOCK buttons in /system/usr/keylayout/omap4-keypad.kl:
I changed SYM button for “ALT”:
KEY 162 ALT_LEFT
and the CAPS LOCK button to “CTRL”:
KEY 222 CTRL_LEFT

Than modify /system/usr/keychars/omap4-keypad.kcm as follows:
Defined yellow characters for ALT method, and some other characters for all available buttons. The original SYM function still available by ALT+Space.
I attached a picture about the ALT-characters.

Unfortunately the new CTRL-button not works with SKP “Phisical Keyboard” option so I must switch off this option. By this way I lost the language specific fonts, so I programmed the upper rows for this fonts. The selection is working by SHIFT and D-pad, than CAPS-LOCK + C is Copy and CAPS-LOCK + V is Paste.
I attached a picture about CTRL-characters too.

I used character codes at: fileformat.info
We must be use the C/C++/Java source codes.

Thats all.

Zavo
 

Attachments

  • Droid4-Keyboard.rar
    1.7 MB · Views: 71
  • QWERTY-ALT-640.gif
    QWERTY-ALT-640.gif
    68.8 KB · Views: 279
  • QWERTY-CTRL-640.gif
    QWERTY-CTRL-640.gif
    68.3 KB · Views: 285
  • Like
Reactions: LuH and Felix241

Felix241

Member
Jan 3, 2010
13
0
hi.
i wanna change my hardware keyboard of droid4. its qwerty ... and i want to have qwertz.
so i edited the /system/usr/keychars/omap4-keypad.kcm and changeg key "Z" { label base shift } with "Y" . reboot and it works :) me happy
by thinking myself that i missed Ä Ö Ü at the hardware keyboard and dont want to wait long with long push on a to wait for the popup and choose there ä, i tryed to edit the /system/usr/keylayout/omap4-keypad.kl:
CAPS LOCK button to “ALT”:
KEY 222 ALT_LEFT
and back into the /system/usr/keychars/omap4-keypad.kcm there under A { label: "A" / base : "a" / shift: "A" / cltr,alt,meta: "ä" }
reboot and now it works nothing -.-
also the y z is back to qwerty and not qwertz ?!?!?!??! in the files is all right.
why my changes are undone ????
can some help ? ideas ?
thx and sry 4 bad english
 

Felix241

Member
Jan 3, 2010
13
0
hi.
i wanna change my hardware keyboard of droid4. its qwerty ... and i want to have qwertz.
so i edited the /system/usr/keychars/omap4-keypad.kcm and changeg key "Z" { label base shift } with "Y" . reboot and it works :) me happy
by thinking myself that i missed Ä Ö Ü at the hardware keyboard and dont want to wait long with long push on a to wait for the popup and choose there ä, i tryed to edit the /system/usr/keylayout/omap4-keypad.kl:
CAPS LOCK button to “ALT”:
KEY 222 ALT_LEFT
and back into the /system/usr/keychars/omap4-keypad.kcm there under A { label: "A" / base : "a" / shift: "A" / cltr,alt,meta: "ä" }
reboot and now it works nothing -.-
also the y z is back to qwerty and not qwertz ?!?!?!??! in the files is all right.
why my changes are undone ????
can some help ? ideas ?
thx and sry 4 bad english

the fault is that in the .kcm no ÄÜÖ alowed.
when i entered A {
label: "A"
base: "a"
shift: "ä"
}
reboot
the system dont work with the .kcm anymore... :( what do i have to fill in under shift : "" for an ä ?
thx 4 help
 

mo0n_sniper

Member
Nov 5, 2010
49
10
Timisoara
the fault is that in the .kcm no ÄÜÖ alowed.
when i entered A {
label: "A"
base: "a"
shift: "ä"
}
reboot
the system dont work with the .kcm anymore... :( what do i have to fill in under shift : "" for an ä ?
thx 4 help

I think that for ÄÜÖ, in the stock kcm you press ALT+u and then the key that you want to have ' ': a,u,o......
 
Last edited:

drornohi

Member
May 2, 2011
10
0
Hi everyone

I know it's an old post but it really helped me solve the non CTRL problem.
I needed it to switch between languages on the hard keyboard as I installed the CM11 ROM. It's a little bit funny that it takes a CTRL button to switch, but no one bothered to notice that there isn't such button.

Anyhow, my current problem is this - I'm missing a letter on the Hebrew keyboard. I have all the letters except one. It's annoying to type with a missing letter.
I've tried to look for a way to add this letter on the ompam4-keypad.kcm file, but it doesn't contain the hebrew characters.
I really don't know where to go for that char map that contains other characters other than english.

Can anyone help me?
 

LuH

Senior Member
Aug 10, 2007
193
43
CZ
I know it's an old post but it really helped me solve the non CTRL problem.
I needed it to switch between languages on the hard keyboard as I installed the CM11 ROM. It's a little bit funny that it takes a CTRL button to switch, but no one bothered to notice that there isn't such button.

Anyhow, my current problem is this - I'm missing a letter on the Hebrew keyboard. I have all the letters except one. It's annoying to type with a missing letter.
I've tried to look for a way to add this letter on the ompam4-keypad.kcm file, but it doesn't contain the hebrew characters.
I really don't know where to go for that char map that contains other characters other than english.

Can anyone help me?

Frankly I never updated it for CM11 and CM12 I've been using for over a year now, even though it always bugged me not to have Ctrl :) Good wake-up call :) I'll try to get to it through the weekend, no promises though.
@ZavoDroid's post (#10, last of previous page) looks golden, will try to make something similar working with CM11 and CM12. Will need you to report how the CM11 version works, I'm still at CM12 currently.

Edit: @drornohi - did you try custom layouts from this thread to see they did not work with CM11? And what is the specific character you miss from your Hebrew keyboard - could you post it here in lower case and upper case, ideally with Unicode codes as well?
 
Last edited:

drornohi

Member
May 2, 2011
10
0
Frankly I never updated it for CM11 and CM12 I've been using for over a year now, even though it always bugged me not to have Ctrl :) Good wake-up call :) I'll try to get to it through the weekend, no promises though.
@ZavoDroid's post (#10, last of previous page) looks golden, will try to make something similar working with CM11 and CM12. Will need you to report how the CM11 version works, I'm still at CM12 currently.

Edit: @drornohi - did you try custom layouts from this thread to see they did not work with CM11? And what is the specific character you miss from your Hebrew keyboard - could you post it here in lower case and upper case, ideally with Unicode codes as well?

Sadly, it's not a layout problem.
I think that the keyboard doesn't take the characters from the .kcm file. The keyboard linked to another app that mapping the layout to a character map according to the current chosen language. i.e, when you press 'm', it links it to the app that checks which language is chosen, if english - it will type 'm', if hebrew it will type ׳צ׳ (a hebrew letter)

The problem is I don't know where is this app. I've been trying to look it up in the CyanogenMod11 source code but I'm not a developer so I didn't manage to load the project to eclipse.

Actually I have 2 missing letters.
The first one is ׳ף׳ unicode U+05E3 (source: http://unicode-table.com/en/05E3/)
The second one is 'ץ' unicode U+05E5 (source: http://unicode-table.com/en/05E5/)

If you want I have the full hebrew charmap with unicodes: http://unicode-table.com/en/blocks/hebrew/

Thanks for trying! Hope you'll save us all! :)
 

LuH

Senior Member
Aug 10, 2007
193
43
CZ
Sadly, it's not a layout problem.
I think that the keyboard doesn't take the characters from the .kcm file. The keyboard linked to another app that mapping the layout to a character map according to the current chosen language. i.e, when you press 'm', it links it to the app that checks which language is chosen, if english - it will type 'm', if hebrew it will type ׳צ׳ (a hebrew letter)

The problem is I don't know where is this app. I've been trying to look it up in the CyanogenMod11 source code but I'm not a developer so I didn't manage to load the project to eclipse.

Actually I have 2 missing letters.
The first one is ׳ף׳ unicode U+05E3 (source: http://unicode-table.com/en/05E3/)
The second one is 'ץ' unicode U+05E5 (source: http://unicode-table.com/en/05E5/)

If you want I have the full hebrew charmap with unicodes: http://unicode-table.com/en/blocks/hebrew/

Thanks for trying! Hope you'll save us all! :)
Hey, I'm also no dev and never opened the CM11 project - wouldn't know where to start :(

By inspecting the CM11 build briefly I think I found where it loads language-specific layouts: cm-11-20150327-UNOFFICIAL-maserati.zip\system\priv-app\InputDevices.apk\res\raw\*.kcm - but there is 05E5 mapped to PERIOD ( . : ), are you sure you can't type it by period? Also regular period should be mapped to SLASH ( / ? ) according to keyboard_layout_hebrew.kcm.

I tried to set 05e3 as Alt+L. Try replacing your /system/priv-app/InputDevices.apk by attached file and use it in combination with some keylayout with Alt (ZavoDroid's maybe). Do a backup before - it's my first attempt on repacking a system apk so anything can go wrong :D

Edit: just realized I forgot to attach the APK. -_- Sorry, will do in several hours - it's almost 6 AM now so I need to catch some sleep, left laptop elsewhere.
 
Last edited:

LuH

Senior Member
Aug 10, 2007
193
43
CZ
...so here you are with the attachment :)

Sadly, it's not a layout problem.
I think that the keyboard doesn't take the characters from the .kcm file. The keyboard linked to another app that mapping the layout to a character map according to the current chosen language. i.e, when you press 'm', it links it to the app that checks which language is chosen, if english - it will type 'm', if hebrew it will type ׳צ׳ (a hebrew letter)

The problem is I don't know where is this app. I've been trying to look it up in the CyanogenMod11 source code but I'm not a developer so I didn't manage to load the project to eclipse.
I think what happens here is that as long as you have Settings - Languages & input - Physical keyboard - omap4-keypad set to default layout, /system/usr/keychars/omap4-keypad.kcm is used, but once you add any languages there, it uses language's kcm from /system/priv-app/InputDevices.apk for CM11, or /system/priv-app/InputDevices/InputDevices.apk for CM12.

Please let me know if the attached apk works (try signed first) installed or put into system directly - you should be able to type ף by pressing Alt+L (SYM+L with Zavo's custom kl - also attached).
 

Attachments

  • signedInputDevices.apk
    161 KB · Views: 17
  • unsignedInputDevices.apk
    158.8 KB · Views: 9
  • omap4-keypad.kl-zavo.zip
    1 KB · Views: 15
  • Like
Reactions: drornohi

drornohi

Member
May 2, 2011
10
0
Hey, I'm also no dev and never opened the CM11 project - wouldn't know where to start :(

By inspecting the CM11 build briefly I think I found where it loads language-specific layouts: cm-11-20150327-UNOFFICIAL-maserati.zip\system\priv-app\InputDevices.apk\res\raw\*.kcm - but there is 05E5 mapped to PERIOD ( . : ), are you sure you can't type it by period? Also regular period should be mapped to SLASH ( / ? ) according to keyboard_layout_hebrew.kcm.

I tried to set 05e3 as Alt+L. Try replacing your /system/priv-app/InputDevices.apk by attached file and use it in combination with some keylayout with Alt (ZavoDroid's maybe). Do a backup before - it's my first attempt on repacking a system apk so anything can go wrong :D

Edit: just realized I forgot to attach the APK. -_- Sorry, will do in several hours - it's almost 6 AM now so I need to catch some sleep, left laptop elsewhere.

Actually your'e right. I forgot I have already found ׳ץ׳ letter (It's my GF's phone so It's not near me all the time). The other one is still missing though.
Thanks for finding the apk file. I'll try edit it myself and let you know (I'm trying with notepad because I read that you can't open apk with eclipse)

I want to make the 'Q' letter assigned to ׳ף׳ because now it assigned to '/' but I already have that.

---------- Post added at 02:41 PM ---------- Previous post was at 02:36 PM ----------

...so here you are with the attachment :)


I think what happens here is that as long as you have Settings - Languages & input - Physical keyboard - omap4-keypad set to default layout, /system/usr/keychars/omap4-keypad.kcm is used, but once you add any languages there, it uses language's kcm from /system/priv-app/InputDevices.apk for CM11, or /system/priv-app/InputDevices/InputDevices.apk for CM12.

Please let me know if the attached apk works (try signed first) installed or put into system directly - you should be able to type ף by pressing Alt+L (SYM+L with Zavo's custom kl - also attached).

I'll try it when I'll have the phone with me (it's my GF's)

How did you pack the apk again after unpacking it?
I want to change it to the 'Q' letter instead of Alt+L
I have some ideas to to improve the keyboard functioning with some keys.
 

LuH

Senior Member
Aug 10, 2007
193
43
CZ
How did you pack the apk again after unpacking it?
I want to change it to the 'Q' letter instead of Alt+L
I have some ideas to to improve the keyboard functioning with some keys.
Searched xda for instructions, in some general android development forum on xda found a rom & apk kitchen (intended for different device though, apk kitchen is universal) and used the apk kitchen for proper unpack and repack. I think it's needed, because InputDevices.apk is signed so the kcm's crc would not match if I just overwrote it in the apk directly.
 

Top Liked Posts

  • There are no posts matching your filters.
  • 3
    Hey, I found OK and caps lock keys on the D4 keyboard useless - I just don't see any difference between using OK, mapped as D-pad center, and Enter, and caps lock can be substituted by double press of shift. So I decided to play with the layout a bit, mainly because I was irritated by a need to touch the screen to work with clipboard or to go back.

    The result is attached - a custom layout which remaps OK button from DPAD_CENTER to ESCAPE and caps lock from CAPS to CTRL_LEFT.

    Esc works as the Back button and Ctrl is tested working in combinations of Ctrl+A (Select all), Ctrl+X (Cut), Ctrl+C (Copy) and Ctrl+V (Paste). Unfortunately Ctrl+Z/Y (Undo/Redo) don't seem to work... Any suggestions for other combinations to try?

    I have tested it all on rooted Eclipse ICS 1.2 ROM, but it should generally work on all rooted Android 4.0.4 ROMs.

    How to get it working?
    1. You probably need to have your phone rooted first.
    2. Optional - you might want to backup your original /system/usr/keylayout/omap4-keypad.kl if you're on different ROM (it should be all the same, but I haven't tested it)
    3. Unpack the attached custom_layout.zip to the root of your phone - it will put omap4-keypad.kl into /system/usr/keylayout
    4. Reboot your phone.


    In case you'd like to revert the changes, I put the original keylayout from my system in original_layout.zip, or you can use your own backed up file :)

    Hope you enjoy my mod. Also, which key would you suggest to replace by Menu? I'm thinking about SYM, but I still think the day I'll actually need it might come, unlike with caps lock and OK :)

    For those interested in changing values for themselves I've attached scancodes of all the buttons given out by safestarap's key test - see keycodes.txt. If you're gonna change any .kl files, be sure to open it with some program supporting UNIX formatting such as PSPad - I really don't wanna see what would happen after editing it with Notepad :) You should probably also see Android documentation article about it first.
    2
    Hi, does anybody know where to change symbols and/or their order in long press popup window?

    screenshot - imgur.com/joN15zH

    CM10 or CM11

    Unfortunately I don't know, but I never use it.

    My short story:
    My old phone was a Motorola Milestone 1 (Droid 1) with physical QWERTY.
    I used it with Smart Keyboard Pro (SKP). It has an option called “Physical Keyboard”, by this way I reach the special characters of SKP’s actual language (long press on short character then some short press for selecting).
    I changed for Droid4, upgraded for SlimKAT 4.4.2 installed SKP, but it is not worked with new 5-row keyboard. I can’t reach the keyboard’s yellow and my language-specific characters. Shift is not working with yellow keys.
    Solution:
    Change SYM and CAPS LOCK buttons in /system/usr/keylayout/omap4-keypad.kl:
    I changed SYM button for “ALT”:
    KEY 162 ALT_LEFT
    and the CAPS LOCK button to “CTRL”:
    KEY 222 CTRL_LEFT

    Than modify /system/usr/keychars/omap4-keypad.kcm as follows:
    Defined yellow characters for ALT method, and some other characters for all available buttons. The original SYM function still available by ALT+Space.
    I attached a picture about the ALT-characters.

    Unfortunately the new CTRL-button not works with SKP “Phisical Keyboard” option so I must switch off this option. By this way I lost the language specific fonts, so I programmed the upper rows for this fonts. The selection is working by SHIFT and D-pad, than CAPS-LOCK + C is Copy and CAPS-LOCK + V is Paste.
    I attached a picture about CTRL-characters too.

    I used character codes at: fileformat.info
    We must be use the C/C++/Java source codes.

    Thats all.

    Zavo
    1
    ...so here you are with the attachment :)

    Sadly, it's not a layout problem.
    I think that the keyboard doesn't take the characters from the .kcm file. The keyboard linked to another app that mapping the layout to a character map according to the current chosen language. i.e, when you press 'm', it links it to the app that checks which language is chosen, if english - it will type 'm', if hebrew it will type ׳צ׳ (a hebrew letter)

    The problem is I don't know where is this app. I've been trying to look it up in the CyanogenMod11 source code but I'm not a developer so I didn't manage to load the project to eclipse.
    I think what happens here is that as long as you have Settings - Languages & input - Physical keyboard - omap4-keypad set to default layout, /system/usr/keychars/omap4-keypad.kcm is used, but once you add any languages there, it uses language's kcm from /system/priv-app/InputDevices.apk for CM11, or /system/priv-app/InputDevices/InputDevices.apk for CM12.

    Please let me know if the attached apk works (try signed first) installed or put into system directly - you should be able to type ף by pressing Alt+L (SYM+L with Zavo's custom kl - also attached).
    1
    @drornohi I attached whole APK workshop with InputDevices WIP in this post – just edit whatever you want in working/InputDevices.apk/res/raw/ and then repack it by running TOOL.BAT (NOT as admin - it will ask for admin privileges and if it already is admin, it infinitely creates new windows ;) ) and selecting 2 (Compile APK). It will create apks in compiled_apk/InputDevices.apk/*.apk. The one without prefix is original version, signed- and unsignedInputDevices.apk are your newly packed. I think the signed version should work best :)

    Have you had any luck with the version I posted before?