I have a rooted XT897 (Motorola Photon Q) running Android 4.1.2, although this should apply to any phone with a physical keyboard. The keyboard on the phone is sorely lacking keys such as <,>,{,},,[,],`,\,|, and ~. It does have a "sym" button that sometimes pulls up a little window in which I can select which symbol not on the keyboard that I would like to type.

Most of the time, it does absolutely nothing. I am aware of Android's key layout files, and I have already modified mine such that the useless Caps Lock key to be a CTRL key instead. However, these do not allow for mapping combinations of keys to other, single keys (as far as I can tell). What I'd like is something like xmodmap, where I could map SYM + P to ] and do that for all the keys.

Is there any way I can do this? The page on the key layout files mentions that it maps linux keycodes to Android keycodes, perhaps I can edit the linux key mapping file. Where would that be? Would that even work?

  • 1
    Have you heard of Hacker's Keyboard? This might not help if your aim is to learn to map and not its end result. – Narayanan Aug 5 '15 at 6:24
  • @Narayanan I have, and I use it. I still highly prefer a physical keyboard. My aim is absolutely the end goal of getting this phone to type the above mentioned keys via the physical keyboard. – Shelvacu Aug 5 '15 at 6:27

There are two "layers" in the hardware keypress -> character to insert in textbox. The layer after key layout files is Key Character Map Files. They take the key (such as "A") and dictate what should result from various combinations of keys. For example:

key A {
  label: "A" # What to 'name' the key
  base: "a" # pressing this key with no modifiers
  shift, capslock: "A" # if either shift or capslock is on, do a capital a instead
  ctrl, alt, meta: none # do nothing if any other combinations are pressed

Backup, then edit the .kcm file corresponding to the hardware keyboard. You will need root.

If your file has any syntax errors then it will simply revert to the default keyboard mapping which is mostly but not fully correct. The only way to check for syntax errors besides putting the file in and rebooting the device is to compile the entirety of the android source code.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.