Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/gpio/gpiokeys.c
Show First 20 Lines • Show All 188 Lines • ▼ Show 20 Lines | gpiokeys_key_event(struct gpiokeys_softc *sc, struct gpiokey *key, int pressed) | ||||
GPIOKEYS_LOCK(sc); | GPIOKEYS_LOCK(sc); | ||||
#ifdef EVDEV_SUPPORT | #ifdef EVDEV_SUPPORT | ||||
if (key->evcode != GPIOKEY_NONE && | if (key->evcode != GPIOKEY_NONE && | ||||
(evdev_rcpt_mask & EVDEV_RCPT_HW_KBD) != 0) { | (evdev_rcpt_mask & EVDEV_RCPT_HW_KBD) != 0) { | ||||
evdev_push_key(sc->sc_evdev, key->evcode, pressed); | evdev_push_key(sc->sc_evdev, key->evcode, pressed); | ||||
evdev_sync(sc->sc_evdev); | evdev_sync(sc->sc_evdev); | ||||
} | } | ||||
if (evdev_is_grabbed(sc->sc_evdev)) { | |||||
GPIOKEYS_UNLOCK(sc); | |||||
return; | |||||
} | |||||
#endif | #endif | ||||
if (key->keycode != GPIOKEY_NONE) { | if (key->keycode != GPIOKEY_NONE) { | ||||
code = key->keycode & SCAN_KEYCODE_MASK; | code = key->keycode & SCAN_KEYCODE_MASK; | ||||
if (!pressed) | if (!pressed) | ||||
code |= KEY_RELEASE; | code |= KEY_RELEASE; | ||||
if (key->keycode & SCAN_PREFIX_E0) | if (key->keycode & SCAN_PREFIX_E0) | ||||
gpiokeys_put_key(sc, 0xe0); | gpiokeys_put_key(sc, 0xe0); | ||||
▲ Show 20 Lines • Show All 854 Lines • Show Last 20 Lines |