[Q] LG GW620 (Eve) - Keyboard Mismap - General Questions and Answers

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.

Related

Question for WiMo Standard developers -- Intercepting keystrokes

This question is for WiMo Standard developers. I am a Windows .NET developer willing to learn more of this platform if you guys think this is doable and relatively simple.
Do you think it's possible and would you say it's relatively easy to implement a "dormant" application (in the Windows desktop world, this would be a service or any other type of TSR application) that intercepts keystrokes (interrupts?) and sends to the OS another keystroke defined in some sort of mapping configuration?
What I'd like to have (or be able to build) is an application that will intercept a keystroke like Fn+A while typing text and type á (or Á, depending on whether I'm writing in lower or uppercases). If I don't release Fn, but press A again within a second or so, then replace that previous letter by à (or À) and then by â (or Â), etc. Just toggle through all the foreign characters that resemble the letter A (configurable through a GUI or even a configuration file) until the Fn key (or Ctrl, etc., depending on the device) is released. Most QWERTY WiMo phones do this, but not all and the Samsung BlackJack II (i617) is an example. That is really my biggest complain with this phone and I'd love to overcome it.
Keep in mind that, although this may seem like an easy task at first, there are many things to take into consideration. For example:
- The application should only work when the device is accepting text input, not when it's in the home screen, a menu, etc.
- The application should be able to handle more than one mapping per key combination.
- The application should be able to delete the previously written character if Fn was not released and the second key was pressed again and a new mapping was found (á, backspace, à, backspace, â, release Fn, done!).
- The application should be able to determine whether the next letter was supposed to be lower or uppercase and return the correct character.
- The application should become friendly with T9 if enabled (or disable itself if T9 is enabled; I personally wouldn't care, since I always disable T9).
TIA for your feedback!

European physical keyboard layout on US xoom?

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?

[Q] Switch between keyboard layouts

Hi,
I already read about the option to remap some keys by editing the keyboard layout file. Is it also possible to switch between keyboard layouts as you type (using a hotkey) - e.g. I need to be able to quickly change between Cyrilic and Latin keyboards.
Thanks.
I think you're talking about hardware keyboard.... But keyboard apps like swiftkey allow for 3 allow for 3 languages simultaneously.
Sent from my ICS Splashed MT4GS using xda premium
Oops haha double post
Hi indeed, I was talking about the hardware keyboard, if it is not possible to use both cyrillic & latin keys and quickly switch between them, this would decrease the benefit of the keyboard for me and I might decide to go with a non qwerty phone in the end.
Thanks for you insight though.
nickexel said:
Hi indeed, I was talking about the hardware keyboard, if it is not possible to use both cyrillic & latin keys and quickly switch between them, this would decrease the benefit of the keyboard for me and I might decide to go with a non qwerty phone in the end.
Thanks for you insight though.
Click to expand...
Click to collapse
In this dev thread: Hardware Key Mapping | Flashable zips & Requests
...user Paitor has come up with and explained how to implement swedish language support for the hardware keyboard.
Given what Paitor has figured out how to do, it is absolutely within our ability to sit down and make exactly what you are asking.
All it takes is someone willing to sit down and invest the time into actually making it happen.
I would volunteer, but I have a lot on my plate already and realistically it's just not feasable for me to do this and keep up with my other projects on this device.
I will however be willing to take a finished keymapping and turn it into a flashable zip file and update the first posting of the key mapping thread with the result.
(and I always credit the author both in the installer package and thread post)
We still have to write in hardware keyboard language support for other languages, and I invite anyone else who wants to use alternative languages to read that thread and see about putting some time into helping us make that available for everyone. What you want to do is not exactly a small project, but pushing what we know to the next level is the reason for XDA's existence.
So, short answer is yes, what you are asking for is completely possible - you can make a key map file that has all of the keys in the languages you would want.
This is XDA, where you can get exactly what you need right down to the last little detail - if you want to put the time into making it happen. We'll be glad to help out where we can along the way.
--------
Edit:
If I were to tackle this project - this would be my approach:
Some apps, like Drocap2 or soundhound, pop up in the list when you have the Genius key remapped to 'search' and long press it. If there is nothing else that utilizes this shortcut function it will default to the only app that does ( in the case of a stock installation or on my ROM, voice search ).
So what I would do is write in each hardware keyboard layout that I wanted, then design an app that utilizes that Genius shortcut function to run - and the sole purpose of the app would be to switch between hardware keyboard layouts.
To me, that seems like the most elegant and refined approach to your problem without making one monstrously cumbersome key-mapping.
You could just press the Genius button to access the app wherever you happened to be, and then have it just show a menu as an overlay to swap between whatever keymappings you wrote in.
--------
My time is being invested in my ROM - then once that's set to my satisfaction, on to kernel work on overclock/undervolt leading into GPU work in conjunction with TV-out, and then on to bluetooth work for controller support on a Sense device.
These are big projects and very time consuming undertakings, so as you can see a project like this keylayout issue is a long time coming before I can get to it - but i'm happy to help where I can for anyone who wants to dive in and do.
Figured i'd throw out what my approach would be to give someone an idea on where to start - and while certainly not the only solution, is something to consider.
I think I have very good news for you!
There's a keyboard called "AnySoftKeyboard" (search for it in the Market and click Dev Website if you want more info) which supports hard kbd mapping (and switching bet layouts by pressing Alt + Space), they have a Russian language pack (Cyrillic & Phonetic), and it is all free.
I have never used it, but remembered coming accross it a while back and decided to check it out for you.
Hope it works
Hey guys, thanks for your replies!
I will definitely check this application - i am not sure it supports all hardware keyboards in general (or just the g1/droid as written in the description), but I will give it a try if I get this phone
And yes, I will gladly help in creating a layout for a Bulgarian keyboard. Unfortunately I cannot create an application for switching between the layouts myself, as I am not a developer.
thanks again.
AnySoft does work
Got my phone and installed AnySoftKeyboard. It does allow for switching bet layouts on the MT4Gs, but does seem a bit quirky so far... (that's with Hebrew & English, you might want to experiment yourself)

[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?

Remap gamepad buttons

Hello there!
I am trying to get a Shanwan Generic Gamepad to work with my Tronsmart MK908.
I own two alike gamepads. They both basically work, but send D_Pad_xx and Generic button messages to my system.
I have installed the following apk, to see what is sent by my gamepads: [ github.com/chrisboyle/keytest/downloads ]
It shows me, that both gamepads send the same signals to my Android Mini PC.
As I plan to make them work with MAME4DROID, I would like to remap the inputs to letters (as if sent by a keyboard), which I can again remap to certain actions in MAME4DROID (latter works).
I have found a ressource on the internet which describes how to define keys mapped to a certain keycode from a certain device [ source.android.com/tech/input/key-layout-files.html ]
I have installed USB Device Info [ de.appszoom.com/android_applications/tools/usb-device-info_btyps.html ] to see how the gamepads are seen by my Android PC. Whatever Vendor or ProductID (changes from tab "Android" to tab "Linux") I name my *.kl file after, I cannot remap the keycodes sent from my gamepads.
Does anyone of you know how to map gamepad inputs to, say, letters of a keyboard?
Sorry for not posting real URLs, but I am not able yet (<10 posts)...
Thank you so much!
LeFish

Categories

Resources