diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/evdev.c | 8 | ||||
-rw-r--r-- | src/evdev.h | 1 | ||||
-rw-r--r-- | src/evdev_brain.c | 18 | ||||
-rw-r--r-- | src/evdev_key.c | 3 |
4 files changed, 27 insertions, 3 deletions
diff --git a/src/evdev.c b/src/evdev.c index fd02f75..f2d61f6 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -214,6 +214,9 @@ EvdevProc(DeviceIntPtr device, int what) EvdevKeyOff (device); } + if (what == DEVICE_CLOSE) + evdevRemoveDevice(pEvdev); + device->public.on = FALSE; break; } @@ -238,10 +241,12 @@ EvdevSwitchMode (ClientPtr client, DeviceIntPtr device, int mode) else return !Success; break; +#if 0 case SendCoreEvents: case DontSendCoreEvents: xf86XInputSetSendCoreEvents (pInfo, (mode == SendCoreEvents)); break; +#endif default: return !Success; } @@ -459,8 +464,6 @@ _X_EXPORT InputDriverRec EVDEV = { 0 }; -#ifdef XFree86LOADER - static void EvdevUnplug(pointer p) { @@ -496,4 +499,3 @@ _X_EXPORT XF86ModuleData evdevModuleData = EvdevPlug, EvdevUnplug }; -#endif /* XFree86LOADER */ diff --git a/src/evdev.h b/src/evdev.h index db0d287..ac4c364 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -252,6 +252,7 @@ int evdevGetFDForDevice (evdevDevicePtr driver); Bool evdevStart (InputDriverPtr drv); Bool evdevNewDriver (evdevDriverPtr driver); Bool evdevGetBits (int fd, evdevBitsPtr bits); +void evdevRemoveDevice (evdevDevicePtr device); int EvdevBtnInit (DeviceIntPtr device); int EvdevBtnOn (DeviceIntPtr device); diff --git a/src/evdev_brain.c b/src/evdev_brain.c index 6365577..7e65935 100644 --- a/src/evdev_brain.c +++ b/src/evdev_brain.c @@ -462,6 +462,24 @@ evdevNewDriver (evdevDriverPtr driver) return TRUE; } +void +evdevRemoveDevice (evdevDevicePtr pEvdev) +{ + evdevDriverPtr driver; + evdevDevicePtr *device; + + for (driver = evdev_drivers; driver; driver = driver->next) { + for (device = &driver->devices; *device; device = &(*device)->next) { + if (*device == pEvdev) { + *device = pEvdev->next; + xf86DeleteInput(pEvdev->pInfo, 0); + pEvdev->next = NULL; + return; + } + } + } +} + Bool evdevGetBits (int fd, evdevBitsPtr bits) { diff --git a/src/evdev_key.c b/src/evdev_key.c index 8917c3b..577ae73 100644 --- a/src/evdev_key.c +++ b/src/evdev_key.c @@ -240,8 +240,11 @@ static KeySym map[] = { static void EvdevKbdBell (int percent, DeviceIntPtr device, pointer ctrl, int unused) { +/* OS keyboard layer has been removed. */ +#if 0 xf86SoundKbdBell(percent, ((KeybdCtrl*) ctrl)->bell_pitch, ((KeybdCtrl*) ctrl)->bell_duration); +#endif } static void |