wake_lock_timeout(&pwrkey_data->wake_lock, 20);
cpcap_broadcast_key_event(cpcap, KEY_END, new_state);
pwrkey_data->state = new_state;
+ } else if ((last_state == PWRKEY_RELEASE) &&
+ (new_state == PWRKEY_RELEASE)) {
+ /* Key must have been released before press was handled. Send
+ * both the press and the release. */
+ wake_lock_timeout(&pwrkey_data->wake_lock, 20);
+ cpcap_broadcast_key_event(cpcap, KEY_END, PWRKEY_PRESS);
+ cpcap_broadcast_key_event(cpcap, KEY_END, PWRKEY_RELEASE);
}
cpcap_irq_unmask(cpcap, CPCAP_IRQ_ON);
}