K600i Bluetooth HID profile

To create a new HID profile for your K600i, create

  1. a 176x200 pixel jpeg, it will be displayed while profile is in use
  2. a pseudo XML file as described below

If your profile is called "Pro" then name the files "Pro.jpg" and "Pro.kcf". Then run "mkhid Pro" (the mkhid script is here) and copy the resulting "Pro.hid" to your cell via obex, I use bluetooth:

$ gnome-obex-send Pro.hid

The kcf file format is as follows:

<SONY_ERICSSON_REMOTE_CONTROL_CONFIGURATION VERSION="1.0">
<KEYMAP>

<KEY_X>
<ACTION>
<KEYBOARD MODIFIERS = "MM" USAGEID = "UU"/>
</ACTION>
</KEY_X>

...repeat KEY_X block for other keys...

</KEYMAP>
</SONY_ERICSSON_REMOTE_CONTROL_CONFIGURATION>

X can be one of 0-9, VOL_DOWN, VOL_UP (and probably more that I don't know, CAMERA maybe?)

UU is as described here:

MM describes the modifiers, it is (in hex) the bitwise OR of the following:

  • 01 - LEFTCTRL
  • 02 - LEFTSHIFT
  • 04 - LEFTALT
  • 08 - LEFTMETA
  • 10 - RIGHTCTRL
  • 20 - RIGHTSHIFT
  • 40 - RIGHTALT
  • 80 - RIGHTMETA

Apparently the phone has a bug and doesn't describe its subclass properly, it seems to never send the bits 0x80 or 0x40 in it, while that is required for getting all of it to work properly.

I just got it to work with

{{{# hidd --server

# hidd --connect aa:bb:cc:dd:ee:ff}}}

but if that doesn't work you can start hidd with the --subclass parameter (use 0xC0 == 192).