How to map hard key combinations to keys in Motorola Photon Q XT897? 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 &lt;,>,{,},,[,],`,\,|, 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?
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.