/dev/button: read interface for button events: 1st byte: button: 2nd byte: 0x00 release / 0x80 pushed 0x80 flip 0x81 answer button on headset 0x82 headset plug 0x83 charger_500mA ? 0x84 usb plug event 0x85 charger_0 ? The device is poll() able The flip seems to be directly connected to a GPIO pin (GPIO_FLIP_PIN) that generates interrupts There are dedicated ioctl's for getting headset and flip status(!)