European physical keyboard layout on US xoom? - Xoom Q&A, Help & Troubleshooting

Hello
I have an US Xoom. I'm trying to get this to work with a Norwegian layout apple wireless keyboard.
The problem is that the xoom only has US character set built in.
The only fix i found is to manually edit the keylayout files located in /system/usr/keylayout
Generic.kl or Vendor_05ac_Product_0239.kl (file for the apple wireless keyboard)
Would think it would hold to edit the Vendor file.
Is this the only way or is there an easyer solution?

Related

Can you change the keyboard alt-modifier chars?

Well, I am currently fooling around with my ADP1 and the one thing that bothers me the most is the fact that the keyboard isnt that well suited for me as Norwegian characters arent easily accessible (I need to hold a in order to get å, etc). I was just wondering if its possible to change what the alt-modifier chars do? (alt+k returns a " for example). I would love to have it as I have on my Touch Pro, where Fn + certain keys give me my norwegian letters
Thanks!
you can write your own key layout map by modifying existing english one.
tell me, if you are interested in and i can guide you
I might be interested in this as well... Depends on how hard it is to do!
Thanks,
Christopher
Here is the thing:
You should take qwerty.kcm file
http://android.git.kernel.org/?p=pl...b_plain;f=emulator/keymaps/qwerty.kcm;hb=HEAD
which is a text file needed to generate key layout.
This file is actually not exact from G1 keyboard, because some meta-symbols are from another key layout.
If you open it, you can find 7 columns like this:
Code:
F 'F' '3' 'f' 'F' '[' '['
The first and the second tells you what key is being considered.
Forth - what symbole would be produced, when you press the key
Fifth - the same, but with _shift_
Sixth - the same, but with _alt_
So what you need to do, is to edit certain column and add symbol you need.
For example both x and alt+x produce the same char 'x', so you can change alt+'x' on whatever you want.
The best way is to enter a Unicode code for you symbols, if they are not covered with ASCII. Based on this:
http://www.fiskeklubben.org/charcters/digitized.html
you should use 00E6 for æ. In this file it should be typed as 0x00E6
When you insert character you need and adjust some other characters, you can send this layout to me and I will generate binary file for layout, which you can use on your G1
Well, it should be easier than it seems to be.
hmm, looking at the qwerty.kcm file, it doesnt all make sense. Take x for example. Fn+x should give x, as you said.. but in the .kcm file, x is displayed like this:
X 'X' '9' 'x' 'X' '8' 0xEF00
Where the the FN-coloumn shows an 8 instead of x. Any idea why?
That is because I don't have layout file for G1.
This file is for some common android device, and fn-keys (or you can call it alt-keys) differs.
So first we need to modify it in order to match with real G1 keyboard.
There is also qwerty2.kcm file
http://android.git.kernel.org/?p=pl..._plain;f=emulator/keymaps/qwerty2.kcm;hb=HEAD
may be it is closer to real G1, but anyway does not match 100%
Ah, will take some time to edit it to match the G1. Il work on it though! What do I do with the binary layout after you're done though?
Thanks for the help
You should backup your G1 layout file and replace with new.
Ive made this one, Not 100% sure its fully correct, but it should do the trick!
I compiled it (though I have to change euro and pound symbols into unicode).
Code:
R 'R' '7' 'r' 'R' 0x00A3 0x20AC
S 'S' '7' 's' 'S' '|' 0x00DF
T 'T' '8' 't' 'T' 0x20AC 0x00A3
I tried it with emulator, seems to work fine.
The idea is: to replace /system/usr/keychars/trout-keypad-v3.kcm.bin with new file.
Here are the details:
I do not write exact instruction, hope you realize how to log into device and copy files.
Now, log to your device. Be sure you have system in rw mode.
otherwise you have to remount:
#mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
navigate to /system/usr/keychars/
#cd /system/usr/keychars/
if you type ls you can see a whole bunch of files, I recommend to backup them all.
if you have busybox installed (if you don't, you'll have to do it manually by dd if= of=)
Code:
#cd /system/usr/keychars/
#mkdir backup
#busybox cp * ./backup/
now you need to replace a file trout-keypad-v3.kcm.bin with attached
Changes should affect newly started applications and it should take some time to affect already running (other words you have to type a lot into them in order they run garbage collector and reload keylayout)
Other thing, if your phone is not US G1 your system may be using other file to read layout (not trout-keypad-v3.kcm.bin ). You can check it if you type getevent:
Code:
# getevent
add device 1: /dev/input/event4
name: "compass"
add device 2: /dev/input/event3
name: "trout-nav"
could not get driver version for /dev/input/mouse1, Not a typewriter
add device 3: /dev/input/event2
name: "trout-keypad-v3"
add device 4: /dev/input/event1
name: "synaptics-rmi-touchscreen"
could not get driver version for /dev/input/mouse0, Not a typewriter
could not get driver version for /dev/input/mice, Not a typewriter
add device 5: /dev/input/event0
name: "h2w headset"
As you can see mine using
Code:
add device 3: /dev/input/event2
name: "trout-keypad-v3"
Finally, if you'll succeed, we can write a fancy guide for other people.
WARN: if you mess up badly with layouts you probably won't be able to start telnetd from G1 keyboard and other stuff like this.
So be sure you can login to your G1 from pc with root access and revert changes. I am using JF 1.3, so I can log in via adb shell with root any time from my pc.
Thanks for the guide! I have a question regarding the qwerty file though. What about the keys on the G1's keyboard that is not in the qwerty file? Such as the @-key?
Untouchab1e said:
Thanks for the guide! I have a question regarding the qwerty file though. What about the keys on the G1's keyboard that is not in the qwerty file? Such as the @-key?
Click to expand...
Click to collapse
I don't know, what would happen if you do not map all keys (probably it will yield an error upon certain key or just give nothing), but @ is present in your layout:
Code:
AT '@' '@' '@' '@' '@' 0x2022
I have a question please.
Usualy double click on the up arrow key change the keyboard layout to full upper case, is there any way to set that the double clicking on it will change the layout to other language and not upper case?
I understood that there is a difficult with changing the layout, maybe that may be a nice solution at least for some of us.
zrubi
I don't think there is a strait forward way to do it by now.
But soon (Feb 2009 I think) T-Mobile will introduce G1 to some European countries other then GB, so Google have to develope some easy way to change layouts by this time.
worry said:
zrubi
I don't think there is a strait forward way to do it by now.
But soon (Feb 2009 I think) T-Mobile will introduce G1 to some European countries other then GB, so Google have to develope some easy way to change layouts by this time.
Click to expand...
Click to collapse
Hi!
worry, first of all, thank you for all your research and work on keyboard layout. I've been following your research here and on russian forums.
I've also investigated this topic a bit and found the following following property described at http://www.kandroid.org/android_pdk/keymaps_keyboard_input.html as the one which would allow to switch the layout dynamically without kcm file substitution, but unfortunately it does NOT work.
setprop android.keychar.trout-keypad-v3 /system/usr/keychars/qwerty_ru.kcm.bin
Do you have any new information on this topic?
Do you happen to know how French and German keyboard layout switch is implemented (if there is any switching at all)?
Thank you!
i wanna change my @ button to a /
This is incredible! One step closer to be able to switch keyboard layouts on G1.
Thank you, guys!
How can I change the characters which's showed when I hold a char on keyboard ? (for an example : hold "A" and see)
And how can I creat a new type rule ? For an example I type double "A" an it become "Â", and if type triple "A" , it will return "AAA" and creat an option to on/off this feature ?
worry said:
...you can send this layout to me and I will generate binary file for layout, which you can use on your G1
Click to expand...
Click to collapse
So how exactly does one generate the binary file? I'm eager to know so I wouldn't need to ask people to do that for me when trying out layouts
Does anyone have the .kcm (not .kcm.bin) file for US G1 or ADP? (I guess it's trout-keypad-v3.kcm) or know where I can find it?
/Mats

[Q] Modify Gingerbread keyboard emotes?

Has anyone found a way to modify the emotes that are standard with the Gingerbread keyboard?
In modify, I mean to edit the emotes to something else such as without the "-". For example, to make an emote a : ) instead of as I'm sure no one ever uses the latter. Further, editing the order of the emotes would be even better.
I find myself never using the emote key as a result of this and inputting the emotes myself which is a hassle - especially when there is already a dedicated key for this.
I'm sure someone can do this through some .xml editing or something.

[TUTORIAL] External keyboard remapping [3.0+]

Disclaimer
This short tutorial is based on my own research regarding missing keyboard layout mapping in stock Honeycomb/ICS Android for my Motorola XOOM. It is not intended to be a complete description of the Android input system, please refer to the official documentation for more information. This text should suffice for anyone with a basic knowledge about IT Anyway, if you break something, 'aint my fault. Won't take any responsibilities for YOUR actions.
Requirements
- rooted Android 3.0+ device (3.0, 3.1, 3.2, 4.0)
- text editor
- external keyboard to play with
Background stuff
(simplified, no bashing )
Keyboard (connected to any device) sends key codes to the target device. Key codes are just plain numbers, eg. if you press the "A" key on the keyboard, the computer reads "30" number. Since "30" is quite difficult to remember as being the "A" button, it is much more handy to describe keycodes as char codes: in the target software we get a KEY_A instead of 30.
Android uses two files for keyboard key-to-output mapping: .kl (key layout) and .kcm (key character map).
*.kl file describes the mapping between real keyboard codes to their virtual values, eg. 30 => KEY_A.
*.kcm file converts char codes to key events (KEY_A pressed? Send character "a". Shift + KEY_A? Send character "A", etc.)
So if you connect an external keyboard (USB, BT, Ir?) to your Android device, you get the following chain:
Code:
[keyboard] => [kl] => [kcm] => [application]
All devices (well, most of them) can be identified by VID (Vendor ID) and PID (product ID). VID and PID are 4 hex symbols each.
Android by default uses /system/usr/keylayout/Generic.kl and /system/usr/keychars/Generic.kcm for keyboard handling. If you look into /system/usr/keylayout/ and /system/usr/keychars/ you may find some more keymaps, including something like Vendor_xxxx_Product_xxxx.* Those files are used for specific devices, eg. Vendor_045e_Product_028e.kl is used for XBox 360 controller. When you connect the keyboard, Android checks the peripherial device VID and PID and looks for matching kl and/or kcm. If there is no matching file found, Generic.kl/Generic.kcm is used instead (disjoint -> you may have a specific kl and generic kcm, generic kl and specific kcm, etc.).
You may get the PID/VID of your external keyboard under for example Windows (in device manager [devmgmt.msc] find your keyboard and check its details [properties->details], for example HID\VID_046D&PID_C312\6&26DA469B&0&0000 => Vendor_046d_Product_C312). So if you would like to prepare a keymap for my USB Logitech keyboard, you will have to provide me with Vendor_046d_Product_C312.[kl|kcm] files
Both KCM and KL files are encoded in ANSI -> no special (national) characters allowed except for 'classic' set! If you want to include any national or extra character, you need to use their unicode hex values in \uXXXX variant. See http://www.tamasoft.co.jp/en/general-info/unicode.html for a huge list of unicode characters.
Getting hands dirty
- pull Generic.kcm from your device via adb:
Code:
adb pull /system/usr/keychars/Generic.kcm
- open it with Notepad++
- scroll through the blahblah about not modifying the file to the section with
Code:
key A {
label: 'A'
- this is where your work starts!
In general the map is composed as fillows:
Code:
# comment starts with a hash
key [keycode] {
label: '[label]'
base: '[key without any modifiers]'
[modifier]: '[key with modifier]'
[modifier]+[modifier]: '[key with both modifiers]'
[modifier],[modifier]: '[key with any of listed modifiers]'
[modifier]: fallback [magic key] # read below
[modifier],[modifier]: none
}
Modifiers can be: ralt, lalt, alt (right/left ALT, any ALT), rshift, lshift, shift (right/left SHIFT, any SHIFT), rctrl, lctrl, ctrl (left/right CTRL, any CTRL), capslock (no right CAPSLOCK on the kb, sorry ), rmeta, lmeta, meta (right/left WIN key, any WIN key). There are probably more, but didn't encounter any...
So, let's make the A key work like on Polish (Programmer) keyboard layout (namely a, A, ą, Ą letters):
Code:
key A {
label: 'A'
base: 'a'
shift, capslock: 'A'
ralt: '\u0105'
shift+ralt, capslock+ralt: '\u0104'
lalt, meta: none # ctrl omitted - ctrl+a does something...
}
Polish letters "ą" and "Ą" have their unicode values of 0x0105 and 0x0104 respectively, thus in order to have them available via right alt + A, we use ralt modifier and shift/capslock ralt modifier. Please note, that it is necessary to have 'shift' modifier for capital A.
Code:
fallback [i]magic key[/i]
is used to map certain key combinations to other commands ("hardware buttons"), such as HOME, SEARCH, MENU, APP_SWITCH, etc. Thus if for example you would like to have lalt+tab for app switching you would have to use the following:
Code:
key TAB {
label: '\t'
base: '\t'
lalt: fallback APP_SWITCH # alt + tab :)
ralt, meta: none
}
And now a Windows+D for desktop shortcut:
Code:
key D {
label: 'D'
base: 'd'
shift, capslock: 'D'
meta: fallback HOME # show desktop
alt: none
}
In short
- in most cases the Generic.kl file is ok, there is no need to prepare .kl for a common keyboard
- either edit Generic.kcm or get VID/PID of your keyboard and prepare a key layout for your language and push it to /system/usr/keychars/
Hints
- backup your Generic.kcm file!
- try to be as specific as possible if you do not use a combination, map it into 'none' section; when you map ralt, don't include alt in 'none', include lalt instead. Remember, that some key combinations have special meanings (ctrl+d, ctrl+c, ctrl+v, etc), and it is better not to include them in your map.
- backup your layout - I lost a lot of time re-creating my keymap after ROM upgrade (symbolic link is a better idea!)
- look through the entire Generic.kcm file - there are a lot of fancy key combinations, for example ESCAPE key can !by default! handle MENU, BACK and HOME keys!
- possible fallback keys are listed in .kl file
- use logcat! You can spot information about external input device and a note about applied KCM/KL files
Finally
Hit "thanks" if you find it helpful. If you prepare a good (national) key layout, please share it!
For Polish national characters we can use "Polska Klawiatura Programisty V2" it works very well with external keyboard on MoPho with 2.3.
thanks for the information. I couldnt find the the Android ICS/Honeycomb virtual key for task switcher..do you know what name is that Task switcher virtual key ?
Hi, I am a newbie with android....
I modify the kcm file to (spanish layout, Generic to Vendor both attached):
An I can't make it work, maybe:
Something is missing?
Errors in the kcm file?
Any advice would be appreciated :crying:
I am away from my PC, but:
1) run Terminal Emulator before connecting the external keyboard
2) enter superuser mode (su)
3) launch logcat (logcat)
4) launch another Terminal Emulator window
5) enter superuser mode (su)
6) connect external keyboard
7) break logcat feed
8) launch dmesg (dmesg) in other window
9) check logcat and dmesg outputs looking for errors
I'm on vacation till next Sunday. I will help you directly once I'm back
Sent from my Galaxy Nexus using Tapatalk 2
Thanks for the help:
Here are fragments of:
dmesg
Start called p = df8e3820
starting connect time
DWC_OTG : [tcc_set_vbus] vbus_state:1
usb 1-1: new low speed USB device number using dwc_otg
usb 1-1: device v1241 p1503 is not supported
input: USB Keyboard as /devices/platform/dwc_otg.0/usb1/1-1/1-1:1.0/input/input5
Click to expand...
Click to collapse
logcat
D/EventHub( 1114): No input device configuration file found for device ' USB Keyboard'.
E/KeyCharacterMap( 1114): /system/usr/keychars/Generic.kcm:454: Malformed character literal.
E/KeyCharacterMap( 1114): /system/usr/keychars/Generic.kcm:454: Invalid character literal for key.
Click to expand...
Click to collapse
I will check line 454 and see what I can do.
UPDATE
So I checked the 454 lien an a 'u' was missing, "\00xx" to "\u00xx".
I use the droidedit pro (1.15.2, and god the save file doesn't work unless root mode is enabled), changed in the ext_sd version use the terminal and copy then I connect the keyboard and it work, oh yeah it simply works (just a fu..ing 'u' for 22kb file)
Anyway thanks for the tip it really, REALLY help me :highfive: :highfive: :good: :good:
Thanks for this, will come in handy.
Hi everyone! Need some help with character map modding for Jelly Bean. I need to assign multiple letters to one button, e.g. "A" for single tap and "[" for double tap (just an example, don't mention).
What I found on source.android.com:
http://source.android.com/tech/input/key-character-map-files.html said:
The following keyboard types are recognized:
...
PREDICTIVE: A keyboard with all the letters, but with more than one letter per key.
This type of keyboard is generally designed for thumb typing.
Corresponds to KeyCharacterMap.PREDICTIVE.
Click to expand...
Click to collapse
Seems like the one thing I need, but I haven't found any syntax explanations or charmap examples for that layout type. Neither on AOSP pages, nor via Google. If your device uses such keymap type or you just know the syntax, post here examples, or attach kcm files. Any hint is good.
Android 4.2.2 - Virtual
Hi
Many thanks for this guides.
On my device Virtual.kcm is used (Acer A1-811, android 4.2.2)
Obviously it is nice to modify some file, rather than to pay 2$ for some application to do such mappings to right characters.
Regards
Logitech K400
Not sure if this goes here, but I have a Logitech K400 keyboard and it has some "special" keys, like the music player key.
What I want to do is to change the default player that opens when pressing that key, in my case it would be Poweramp.
The keyboard also has some other keys on the function keys, and when pressed some of them just are letters, want to edit this too.
There is also a "lock pc" key that opens S Planner.
I hope someone knows what I mean and can help me.
Mapping an external keyboard
In attempting to re-map an external keyboard, i have succesfully found and edited the P1_keyboard.kl file for instance changing the function of the voice search button from performing that function to performing an "Enter" or typing a letter "B" . However what i am trying to do is to use that button to do a combination of Both Letter B and then ENTER, i have tried "+" space etc but with no luck... Is this possible to do in any way?
kcm file has no effect
I create this file for the logitech K810
/system/usr/keylayout/Vendor_046d_Product_b319.kl
This successfully remaps keys.
However creating and editing this has no effect:
/system/usr/keychars/Vendor_046d_Product_b319.kcm
The generic behavior also does not match Generic.kcm
One example is Alt-Tab which switches actually switches applications on my device. It is not mentioned anywhere in anything in /system/usr. Redefining
Alt-Tab in the kcm file has no effect.
I am running KitKat on a Galaxy Note 10.1 2014.
file permissions
injola said:
I create this file for the logitech K810
/system/usr/keylayout/Vendor_046d_Product_b319.kl
This successfully remaps keys.
However creating and editing this has no effect:
/system/usr/keychars/Vendor_046d_Product_b319.kcm
The generic behavior also does not match Generic.kcm
One example is Alt-Tab which switches actually switches applications on my device. It is not mentioned anywhere in anything in /system/usr. Redefining
Alt-Tab in the kcm file has no effect.
I am running KitKat on a Galaxy Note 10.1 2014.
Click to expand...
Click to collapse
Just a guess, are the file permission set appropriately? (chmod 644 /system/usr/keychars/*.kcm)
Ctrl+SPACE does not work
On my nexus7 2012 4.4.4, chroot debian wheezy is running.
When I use emacs with Apple Wireless Keyboard (JIS).
Ctrl-SPACE does not allow me to set mark,
although keep pressing them for about one second just makes it work.
(but keep pressing makes flickering "Mark activated", "Mark deactivated"...)
In the kcm file, CTRL+SPACE is specified as "fallback LANGUAGE_SWITCH".
I tried changing it to none, or commenting out the line, but these doesn't affect.
I also used keytest.apk to inspect the behavior.
It seems just when CTRL+SPACE is pressed, no event happens...?
Does anyone know how to make Ctrl+SPACE (without keep pressing) function as setting mark ?
thank you in advance.
Genius luxepad 9100 keyboard
Hi i have this keyboard and android 4.2.2 i want the keyboard with spanish layout without pay an app, i want to choose the language on the system. Thanks in advance
Keycodes not recognised
Hi there,
I have a problem where I can't remap a key because it's not showing any keycode.
That is: standard keys like A, B, C, etc are ok: I can see their scan code and change it if I want to, but I don't.
Keys like Volume_up, play_pause, etc I would like to have them changed, but I cannot as I can't see any scan code when I press them.
I know all keys work as I tested the remote on windows and it works properly, and I can see keycodes there (but they are not the same as in android, so I can't use windows' keycodes)
Thank you if you can help
enter to send message
hello everyone! does anyone solve question about ENTER key to sending message insdeat of new line command? combination of buttons not works too for the sending messages....
android 4.4.2 + universal external keyboard (with comand buttons)
Toggle Languages
Thanks for this helpful and specific tutorial. :good:
I am trying to map keys for Urdu language. :angel:
My question is, will it work properly with lollipop?
Will it be able to toggle between language.
...
Thanks in advance for you kind information
_TB_TB_ said:
Disclaimer
- rooted Android 3.0+ device (3.0, 3.1, 3.2, 4.0)
Click to expand...
Click to collapse
Hi!
Is there any way to replace kcm without loosing your warranty?
Code:
adb push move /system/usr/
push: move/keychars/Virtual.kcm -> /system/usr/keychars/Virtual.kcm
failed to copy 'move/keychars/Virtual.kcm' to '/system/usr/keychars/Virtual.kcm': Read-only file system
Should I change permissions to put back onto system/usr?

[Q] LG GW620 (Eve) - Keyboard Mismap

I upgraded the firmware on an LG GW620 (Eve) to Froyo, but the keyboard is mis-mapped. Specifically, the mapping for four keys are wrong. When I type Q, I get A (and vice-versa). And, when I type W, I get Z (and vice-versa).
Additional info: sw version gw620-v20e; firmware 2.2; hw version gw620_1_0.
I'm sure this is an easy fix. Any help out there?
Thanks in advance
The problem is that you have keyboard mapping for an AZERTY French keyboard and not QWERTY.
I don't know which of the two ways they decided to implement this alternative arrangement.
There is /system/usr/keylayout/somefilename.kl which maps scancodes to keycodes and
/system/usr/keychars/somefilename.kcm.bin which maps keycodes to Unicode.
.kl files are just text. Peek in there, it will probably be easy to spot the mods.
.kcm.bin files are binary but 16 bytes per row makes it easy to see.
There could be multiple files named various things.
If you are in doubt which one is being loaded, look at logcat.

How Do I Replace Characters On Samsung Keyboard

Replace character on Samsung Keyboard
Long time viewer, first time poster. Hoping someone can help find a solution, or at the least point me in the right direction please.
Absolutely loving everything about the stock keyboard, but getting driven to madness by duplicate / key replacing the $ symbol (please see pic here ( tinypic .com/r/adkjmh/8 ))
Does anyone know where the file location is to modify the keyboard and replace the / key (currently set as SHIFT + 4) to a $ symbol.
Browsing other posts, they mention /usr/system/keychars, but every file in this folder appears correct... Done the obvious and changed the input language to no avail. =(
Decompiled SamsungIME.apk but completely lost sourcing the correct xml file... (hopefully been looking in the right place)
Any assistance would be greatly appreciated.

Categories

Resources