aboutsummaryrefslogtreecommitdiff
path: root/src/evdev_key.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/evdev_key.c')
-rw-r--r--src/evdev_key.c51
1 files changed, 23 insertions, 28 deletions
diff --git a/src/evdev_key.c b/src/evdev_key.c
index a759f5f..6e80602 100644
--- a/src/evdev_key.c
+++ b/src/evdev_key.c
@@ -328,10 +328,11 @@ EvdevKeyInit (DeviceIntPtr device)
keySyms.maxKeyCode = MIN_KEYCODE + ArrayLength(map) / GLYPHS_PER_KEY - 1;
- XkbSetRulesDflts (state->xkb_rules, state->xkb_model, state->xkb_layout,
- state->xkb_variant, state->xkb_options);
+ XkbSetRulesDflts (state->key->xkb_rules, state->key->xkb_model,
+ state->key->xkb_layout, state->key->xkb_variant,
+ state->key->xkb_options);
- XkbInitKeyboardDeviceStruct (device, &state->xkbnames, &keySyms, modMap,
+ XkbInitKeyboardDeviceStruct (device, &state->key->xkbnames, &keySyms, modMap,
EvdevKbdBell, EvdevKbdCtrl);
return Success;
@@ -348,7 +349,6 @@ SetXkbOption(InputInfoPtr pInfo, char *name, char *value, char **option)
*option = NULL;
} else {
*option = s;
- xf86Msg(X_CONFIG, "%s: %s: \"%s\"\n", pInfo->name, name, s);
}
}
}
@@ -358,44 +358,39 @@ EvdevKeyNew (InputInfoPtr pInfo)
{
evdevDevicePtr pEvdev = pInfo->private;
evdevStatePtr state = &pEvdev->state;
- long key_bitmask[NBITS(KEY_MAX)];
- int i;
-
- if (ioctl(pInfo->fd,
- EVIOCGBIT(EV_KEY, sizeof(key_bitmask)), key_bitmask) < 0) {
- xf86Msg(X_ERROR, "ioctl EVIOCGBIT failed: %s\n", strerror(errno));
- return !Success;
- }
+ int i, keys = 0;
for (i = 0; i <= KEY_UNKNOWN; i++)
- if (TestBit (i, key_bitmask)) {
- state->keys = 1;
+ if (TestBit (i, pEvdev->bits.key)) {
+ keys = 1;
break;
}
- if (!state->keys)
+ if (!keys)
return !Success;
+ state->key = Xcalloc (sizeof (evdevKeyRec));
+
pInfo->type_name = XI_KEYBOARD;
pInfo->flags |= XI86_KEYBOARD_CAPABLE | XI86_CONFIGURED;
- SetXkbOption (pInfo, "XkbKeymap", NULL, &state->xkbnames.keymap);
- if (state->xkbnames.keymap) {
+ 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->xkb_rules);
- SetXkbOption (pInfo, "XkbModel", "evdev", &state->xkb_model);
- SetXkbOption (pInfo, "XkbLayout", "us", &state->xkb_layout);
- SetXkbOption (pInfo, "XkbVariant", NULL, &state->xkb_variant);
- SetXkbOption (pInfo, "XkbOptions", NULL, &state->xkb_options);
-
- SetXkbOption (pInfo, "XkbKeycodes", NULL, &state->xkbnames.keycodes);
- SetXkbOption (pInfo, "XkbTypes", NULL, &state->xkbnames.types);
- SetXkbOption (pInfo, "XkbCompat", NULL, &state->xkbnames.compat);
- SetXkbOption (pInfo, "XkbSymbols", NULL, &state->xkbnames.symbols);
- SetXkbOption (pInfo, "XkbGeometry", NULL, &state->xkbnames.geometry);
+ 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);
}
return Success;