mirror of
https://github.com/X11Libre/xf86-input-evdev.git
synced 2026-04-14 11:44:16 +00:00
Switch from my own globbing function to fnmatch.
Detect keys numbered higher then buttons. Remove the (depreciated since
long before xkb support was added to evdev) XkbKeymap option.
This commit is contained in:
10
ChangeLog
10
ChangeLog
@@ -1,3 +1,13 @@
|
||||
2006-03-16 Zephaniah E. Hull,,, <warp@aehallh.com>
|
||||
|
||||
* src/evdev_brain.c: (MatchDriver):
|
||||
Switch from my own globbing function to fnmatch.
|
||||
|
||||
* src/evdev_key.c: (EvdevKeyNew):
|
||||
Detect keys numbered higher then buttons.
|
||||
Remove the (depreciated since long before xkb support was added to
|
||||
evdev) XkbKeymap option.
|
||||
|
||||
2006-03-16 Zephaniah E. Hull <warp@aehallh.com>
|
||||
|
||||
* man/evdev.man:
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
#include "evdev.h"
|
||||
|
||||
#include <xf86.h>
|
||||
#include <fnmatch.h>
|
||||
|
||||
#ifndef SYSCALL
|
||||
#define SYSCALL(call) while(((call) == -1) && (errno == EINTR))
|
||||
@@ -49,40 +50,6 @@ static InputInfoPtr evdev_pInfo = NULL;
|
||||
static evdevDriverPtr evdev_drivers = NULL;
|
||||
static int evdev_seq;
|
||||
|
||||
static int
|
||||
glob_match(const char *pattern, const char *matchp)
|
||||
{
|
||||
int i, j = 0, ret = 0;
|
||||
if (!(pattern && matchp))
|
||||
return (strlen(pattern) == strlen(matchp));
|
||||
|
||||
for (i = 0; matchp[i]; i++) {
|
||||
if (pattern[j] == '\\')
|
||||
j++;
|
||||
else if (pattern[j] == '*') {
|
||||
if (pattern[j + 1]) {
|
||||
if (!glob_match(pattern+j+1,matchp+i))
|
||||
return 0;
|
||||
} else
|
||||
return 0;
|
||||
continue;
|
||||
} else if (pattern[j] == '?') {
|
||||
j++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((ret = (pattern[j] - matchp[i])))
|
||||
return ret;
|
||||
|
||||
j++;
|
||||
}
|
||||
if (!pattern[j] || ((pattern[j] == '*') && !pattern[j + 1]))
|
||||
return 0;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
evdevGetFDForDevice (evdevDevicePtr device)
|
||||
{
|
||||
@@ -160,11 +127,11 @@ MatchAny (long *dev, long *match, int len)
|
||||
static Bool
|
||||
MatchDriver (evdevDriverPtr driver, evdevDevInfoPtr info)
|
||||
{
|
||||
if (driver->name && glob_match(driver->name, info->name))
|
||||
if (driver->name && fnmatch(driver->name, info->name, 0))
|
||||
return FALSE;
|
||||
if (driver->phys && glob_match(driver->phys, info->phys))
|
||||
if (driver->phys && fnmatch(driver->phys, info->phys, 0))
|
||||
return FALSE;
|
||||
if (driver->device && glob_match(driver->device, info->dev))
|
||||
if (driver->device && fnmatch(driver->device, info->dev, 0))
|
||||
return FALSE;
|
||||
|
||||
if (driver->id.bustype && driver->id.bustype != info->id.bustype)
|
||||
|
||||
@@ -365,6 +365,12 @@ EvdevKeyNew (InputInfoPtr pInfo)
|
||||
keys = 1;
|
||||
break;
|
||||
}
|
||||
if (!keys)
|
||||
for (i = KEY_OK; i <= KEY_MAX; i++)
|
||||
if (TestBit (i, pEvdev->bits.key)) {
|
||||
keys = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!keys)
|
||||
return !Success;
|
||||
@@ -375,23 +381,17 @@ EvdevKeyNew (InputInfoPtr pInfo)
|
||||
|
||||
pInfo->flags |= XI86_KEYBOARD_CAPABLE | XI86_CONFIGURED;
|
||||
|
||||
SetXkbOption (pInfo, "XkbKeymap", NULL, &state->key->xkbnames.keymap);
|
||||
if (state->key->xkbnames.keymap) {
|
||||
xf86Msg(X_CONFIG, "%s: XkbKeymap overrides all other XKB settings\n",
|
||||
pInfo->name);
|
||||
} else {
|
||||
SetXkbOption (pInfo, "XkbRules", __XKBDEFRULES__, &state->key->xkb_rules);
|
||||
SetXkbOption (pInfo, "XkbModel", "evdev", &state->key->xkb_model);
|
||||
SetXkbOption (pInfo, "XkbLayout", "us", &state->key->xkb_layout);
|
||||
SetXkbOption (pInfo, "XkbVariant", NULL, &state->key->xkb_variant);
|
||||
SetXkbOption (pInfo, "XkbOptions", NULL, &state->key->xkb_options);
|
||||
SetXkbOption (pInfo, "XkbRules", __XKBDEFRULES__, &state->key->xkb_rules);
|
||||
SetXkbOption (pInfo, "XkbModel", "evdev", &state->key->xkb_model);
|
||||
SetXkbOption (pInfo, "XkbLayout", "us", &state->key->xkb_layout);
|
||||
SetXkbOption (pInfo, "XkbVariant", NULL, &state->key->xkb_variant);
|
||||
SetXkbOption (pInfo, "XkbOptions", NULL, &state->key->xkb_options);
|
||||
|
||||
SetXkbOption (pInfo, "XkbKeycodes", NULL, &state->key->xkbnames.keycodes);
|
||||
SetXkbOption (pInfo, "XkbTypes", NULL, &state->key->xkbnames.types);
|
||||
SetXkbOption (pInfo, "XkbCompat", NULL, &state->key->xkbnames.compat);
|
||||
SetXkbOption (pInfo, "XkbSymbols", NULL, &state->key->xkbnames.symbols);
|
||||
SetXkbOption (pInfo, "XkbGeometry", NULL, &state->key->xkbnames.geometry);
|
||||
}
|
||||
SetXkbOption (pInfo, "XkbKeycodes", NULL, &state->key->xkbnames.keycodes);
|
||||
SetXkbOption (pInfo, "XkbTypes", NULL, &state->key->xkbnames.types);
|
||||
SetXkbOption (pInfo, "XkbCompat", NULL, &state->key->xkbnames.compat);
|
||||
SetXkbOption (pInfo, "XkbSymbols", NULL, &state->key->xkbnames.symbols);
|
||||
SetXkbOption (pInfo, "XkbGeometry", NULL, &state->key->xkbnames.geometry);
|
||||
|
||||
return Success;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user