Exemple #1
0
void dispatch_buttons(uint32_t buttons)
{
	int i;
	uint8_t state;

	if ((buttons & (1 << btn_map[KEY_POWER]))) {
		/* hold button 500ms to shut down */
		if ((lastbuttons & (1 << btn_map[KEY_POWER]))) {
			unsigned long elapsed = jiffies - power_hold;
			if (elapsed > 50)
				twl3025_power_off();
			power_hold++;
		} else
		power_hold = jiffies;
	}

	if (buttons == lastbuttons)
		return;

	uint32_t diff = buttons ^ lastbuttons;
	for (i = 0; i < BUTTON_CNT; i++) {
		if (diff & (1 << btn_map[i])) {
			state = (buttons & (1 << btn_map[i])) ? PRESSED : RELEASED;
			emit_key(i, state);
		}
	}
	lastbuttons = buttons;
}
Exemple #2
0
void dispatch_buttons(uint32_t buttons)
{
	uint8_t state;

	if (buttons == lastbuttons)
		return;

	uint32_t diff = buttons ^ lastbuttons;
	uint8_t key=KEY_INV;

	while (diff != 0)
	{
		if BTN_TO_KEY(POWER)
		else if BTN_TO_KEY(0)
		else if BTN_TO_KEY(1)
		else if BTN_TO_KEY(2)
		else if BTN_TO_KEY(3)
		else if BTN_TO_KEY(4)
		else if BTN_TO_KEY(5)
		else if BTN_TO_KEY(6)
		else if BTN_TO_KEY(7)
		else if BTN_TO_KEY(8)
		else if BTN_TO_KEY(9)
		else if BTN_TO_KEY(STAR)
		else if BTN_TO_KEY(HASH)
		else if BTN_TO_KEY(MENU)
		else if BTN_TO_KEY(LEFT_SB)
		else if BTN_TO_KEY(RIGHT_SB)
		else if BTN_TO_KEY(UP)
		else if BTN_TO_KEY(DOWN)
		else if BTN_TO_KEY(LEFT)
		else if BTN_TO_KEY(RIGHT)
		else if BTN_TO_KEY(OK)
		else
		{
			printf("\nunknown keycode: 0x%08x\n", diff);
			break;
		}
		emit_key(key, state);
	}
	lastbuttons = buttons;
}