Today’s HTC Raph/Fuze/TouchPro Android Port Progress

phhusson has done more work attempting to get the camera going, even bringing a newer (I believe 2.6.31) V4L stack back into the 2.6.27 branch. No success yet, but he’s probably getting close. Hopefully sleeping on it can help him out.

I was able to map the push-to-talk button found on Fuze in the kernel. phhusson committed it for me. I’ve mapped it to the camera keycode in Android.

I also fixed the keyboard arrow keys. For some background, the Fuze/Raphael has a directional pad (DPAD) on the front of the device, as well as arrow keys on its slide-out keyboard. They both use the same scan codes (what the kernel spits out as input events). When Android rotates the screen (which happens when opening the keyboard or tilting the phone) it also rotates the directional pad controls (so up and down become left and right, since the user is now holding the phone sideways). Unfortunately, Android does not also rotate the arrow keys, so they are never correct from a user’s perspective (up and down will go left and right in the user interface, respectively).

To fix this, I had to use a hack with Android key layout files, which translated kernel scan codes to Android key codes (usually placed in /system/usr/keylayout/*.kl). Previously we were using a single keylayout file for the various input devices on the phone (the capacitive front-face buttons are one device, the power button itself is another device, and the keyboard and volume controls are a third device).

I separated the keylayout file into two files: one for the keyboard/volume controls and another for everything else. In doing so, I was able to define a standard set of keycodes for the DPAD, which still rotates automatically in Android. For the keyboard, I defined the arrow keys as pre-rotated arrow keys. Normally this would be a problem because while the phone is not rotated, those keys are all wrong. But the user will never have access to the keyboard unless the phone is rotated (remember, the keyboard slides out, which Android responds to by rotating the screen).

This acted exactly the way I was hoping it would (which doesn’t happen much for me with Android internals). babijoee is updating the thread with the new bundle. We’re getting a lot of little details fixed up, and I’m very excited to see how polished it’s getting.

In the future, babijoee might try to get Android 2.1 Flan (as seen on Nexus One) going on our devices, but there’s so much graphical stuff going on that it’ll definitely need some help with acceleration. Acceleration is one of the few major things left on the to-do list.

Leave a Reply