Ok. Firts of all I have Nokia BH-111 BT headset. all buttons work fine and control the device (media player - play/pause /next / prev) and phone (accept call & redial) Doing some tests with dbus-monitor up: Nokia-N900:~# dbus-monitor --system signal sender=org.freedesktop.DBus -> dest=:1.529 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired string ":1.529" signal sender=:1.12 -> dest=(null destination) serial=3995 path=/org/freedesktop/Hal/devices/computer_logicaldev_input_1; interface=org.freedesktop.Hal.Device; member=Condition string "ButtonPressed" string "play-cd" signal sender=:1.48 -> dest=(null destination) serial=751 path=/com/nokia/tklock/signal; interface=com.nokia.tklock.signal; member=mm_key_press uint32 208 uint32 269025044 signal sender=:1.12 -> dest=(null destination) serial=4032 path=/org/freedesktop/Hal/devices/computer_logicaldev_input_1; interface=org.freedesktop.Hal.Device; member=Condition string "ButtonPressed" string "next-song" signal sender=:1.48 -> dest=(null destination) serial=760 path=/com/nokia/tklock/signal; interface=com.nokia.tklock.signal; member=mm_key_press uint32 171 uint32 269025047 signal sender=:1.12 -> dest=(null destination) serial=4033 path=/org/freedesktop/Hal/devices/computer_logicaldev_input_1; interface=org.freedesktop.Hal.Device; member=Condition string "ButtonPressed" string "previous-song" signal sender=:1.48 -> dest=(null destination) serial=761 path=/com/nokia/tklock/signal; interface=com.nokia.tklock.signal; member=mm_key_press uint32 173 uint32 269025046 signal sender=:1.18 -> dest=(null destination) serial=6451 path=/com/nokia/csd/call; interface=com.nokia.csd.Call; member=CreateRequested string "xxxTELNUMBER010" uint32 0 signal sender=:1.18 -> dest=(null destination) serial=6452 path=/com/nokia/csd/call; interface=com.nokia.csd.Call; member=ServerStatus boolean true boolean false signal sender=:1.18 -> dest=(null destination) serial=6453 path=/com/nokia/csd/call; interface=com.nokia.csd.Call; member=Created object path "/com/nokia/csd/call/1" string "xxxTELNUMBER010" As you can see, dbus catches button press for headset play button, next and prev buttons. Unfortunantly, it seems that it's not catching the "redial" or "answer/reject" button or they just dont generate dbus events...
signal sender=:1.12 -> dest=(null destination) serial=3995 path=/org/freedesktop/Hal/devices/computer_logicaldev_input_1; interface=org.freedesktop.Hal.Device; member=Condition string "ButtonPressed" string "play-cd"