mirror of
https://github.com/netfun2000/lcd4linux.git
synced 2026-02-27 09:44:34 +08:00
X11 driver: correctly handle key releases
git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@1117 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
This commit is contained in:
@@ -328,15 +328,15 @@ static int drv_G15_open()
|
||||
for (bus = usb_get_busses(); bus; bus = bus->next) {
|
||||
for (dev = bus->devices; dev; dev = dev->next) {
|
||||
debug("%s: open %s/%s/%s", Name, bus->dirname, dev->bus->dirname, dev->filename);
|
||||
if (dev->descriptor.idVendor == G15_VENDOR) {
|
||||
if ((g15_lcd = usb_open(dev))) {
|
||||
// get vendor name if possible
|
||||
if (dev->descriptor.iManufacturer) {
|
||||
retval = usb_get_string_simple(g15_lcd, dev->descriptor.iManufacturer, dname, sizeof(dname));
|
||||
if (retval <= 0) {
|
||||
snprintf(dname, sizeof(dname), "(unknown)");
|
||||
}
|
||||
}
|
||||
if (dev->descriptor.idVendor == G15_VENDOR) {
|
||||
if ((g15_lcd = usb_open(dev))) {
|
||||
// get vendor name if possible
|
||||
if (dev->descriptor.iManufacturer) {
|
||||
retval = usb_get_string_simple(g15_lcd, dev->descriptor.iManufacturer, dname, sizeof(dname));
|
||||
if (retval <= 0) {
|
||||
snprintf(dname, sizeof(dname), "(unknown)");
|
||||
}
|
||||
}
|
||||
debug("%s: Found USB vendor ID 0x%x (%s), checking productID 0x%x...",
|
||||
Name, G15_VENDOR, dname, dev->descriptor.idProduct);
|
||||
switch (dev->descriptor.idProduct) {
|
||||
@@ -375,7 +375,7 @@ static int drv_G15_open()
|
||||
switch (retval) {
|
||||
case -EPERM:
|
||||
error("%s: Permission denied! eUID of this process is %i %s",
|
||||
Name, geteuid(), geteuid() != 0 ? "(not root)" : "");
|
||||
Name, geteuid(), geteuid() != 0 ? "(not root)" : "");
|
||||
//return -1;
|
||||
break;
|
||||
case -ENODATA:
|
||||
@@ -388,8 +388,8 @@ static int drv_G15_open()
|
||||
debug("%s: detaching...", Name);
|
||||
usb_detach_kernel_driver_np(g15_lcd, interf);
|
||||
}
|
||||
#endif // detach_kernel_driver_np
|
||||
#endif // get_driver_np
|
||||
#endif // detach_kernel_driver_np
|
||||
#endif // get_driver_np
|
||||
|
||||
retval = usb_set_configuration(g15_lcd, config);
|
||||
debug("%s: Ret %d from usb_set_configuration(%d)", Name, retval, config);
|
||||
@@ -411,9 +411,9 @@ static int drv_G15_open()
|
||||
}
|
||||
|
||||
}
|
||||
} // G15_Vendor
|
||||
} // all devices
|
||||
} // all busses
|
||||
} // G15_Vendor
|
||||
} // all devices
|
||||
} // all busses
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -201,9 +201,18 @@ static int drv_X11_brightness(int brightness)
|
||||
|
||||
static int drv_X11_keypad(const int num)
|
||||
{
|
||||
int val = WIDGET_KEY_PRESSED;
|
||||
int val;
|
||||
int new_num = num;
|
||||
|
||||
switch (num) {
|
||||
if (new_num > 0)
|
||||
val = WIDGET_KEY_PRESSED;
|
||||
else {
|
||||
/* negative values mark a key release */
|
||||
new_num = -num;
|
||||
val = WIDGET_KEY_RELEASED;
|
||||
}
|
||||
|
||||
switch (new_num) {
|
||||
case 1:
|
||||
val += WIDGET_KEY_UP;
|
||||
break;
|
||||
@@ -447,6 +456,8 @@ static void drv_X11_timer( __attribute__ ((unused))
|
||||
debug("key for button %i released", btn);
|
||||
XClearArea(dp, w, xoffset, yoffset + (btn - 1) * (btnheight + pgap), btnwidth, btnheight - 2,
|
||||
1 /* true */ );
|
||||
/* negative values mark a key release */
|
||||
drv_generic_keypad_press(-btn);
|
||||
} else {
|
||||
debug("key release for button %i ignored", btn);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user