xfree86: add support for MatchIsTabletPad
The tablet pads have been separate kernel devices for a while now and libwacom has labelled them with the udev ID_INPUT_TABLET_PAD for over a year now. Add a new MatchIsTabletPad directive to apply configuration options specifically to the Pad part of a tablet. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
parent
fa02b05645
commit
2285fe78c0
|
@ -177,6 +177,8 @@ device_added(LibHalContext * hal_ctx, const char *udi)
|
|||
attrs.flags |= ATTR_JOYSTICK;
|
||||
if (libhal_device_query_capability(hal_ctx, udi, "input.tablet", NULL))
|
||||
attrs.flags |= ATTR_TABLET;
|
||||
if (libhal_device_query_capability(hal_ctx, udi, "input.tablet_pad", NULL))
|
||||
attrs.flags |= ATTR_TABLET_PAD;
|
||||
if (libhal_device_query_capability(hal_ctx, udi, "input.touchpad", NULL))
|
||||
attrs.flags |= ATTR_TOUCHPAD;
|
||||
if (libhal_device_query_capability(hal_ctx, udi, "input.touchscreen", NULL))
|
||||
|
|
|
@ -258,6 +258,10 @@ device_added(struct udev_device *udev_device)
|
|||
LOG_PROPERTY(path, key, value);
|
||||
attrs.flags |= ATTR_TABLET;
|
||||
}
|
||||
else if (!strcmp(key, "ID_INPUT_TABLET_PAD")) {
|
||||
LOG_PROPERTY(path, key, value);
|
||||
attrs.flags |= ATTR_TABLET_PAD;
|
||||
}
|
||||
else if (!strcmp(key, "ID_INPUT_TOUCHPAD")) {
|
||||
LOG_PROPERTY(path, key, value);
|
||||
attrs.flags |= ATTR_TOUCHPAD;
|
||||
|
|
|
@ -646,6 +646,9 @@ InputClassMatches(const XF86ConfInputClassPtr iclass, const InputInfoPtr idev,
|
|||
if (iclass->is_tablet.set &&
|
||||
iclass->is_tablet.val != ! !(attrs->flags & ATTR_TABLET))
|
||||
return FALSE;
|
||||
if (iclass->is_tablet_pad.set &&
|
||||
iclass->is_tablet_pad.val != ! !(attrs->flags & ATTR_TABLET_PAD))
|
||||
return FALSE;
|
||||
if (iclass->is_touchpad.set &&
|
||||
iclass->is_touchpad.val != ! !(attrs->flags & ATTR_TOUCHPAD))
|
||||
return FALSE;
|
||||
|
|
|
@ -1188,6 +1188,8 @@ entries.
|
|||
.TP 7
|
||||
.BI "MatchIsTablet \*q" bool \*q
|
||||
.TP 7
|
||||
.BI "MatchIsTabletPad \*q" bool \*q
|
||||
.TP 7
|
||||
.BI "MatchIsTouchpad \*q" bool \*q
|
||||
.TP 7
|
||||
.BI "MatchIsTouchscreen \*q" bool \*q
|
||||
|
|
|
@ -52,6 +52,7 @@ static const xf86ConfigSymTabRec InputClassTab[] = {
|
|||
{MATCH_IS_POINTER, "matchispointer"},
|
||||
{MATCH_IS_JOYSTICK, "matchisjoystick"},
|
||||
{MATCH_IS_TABLET, "matchistablet"},
|
||||
{MATCH_IS_TABLET_PAD, "matchistabletpad"},
|
||||
{MATCH_IS_TOUCHPAD, "matchistouchpad"},
|
||||
{MATCH_IS_TOUCHSCREEN, "matchistouchscreen"},
|
||||
{NOMATCH_PRODUCT, "nomatchproduct"},
|
||||
|
@ -346,6 +347,14 @@ xf86parseInputClassSection(void)
|
|||
if (!ptr->is_tablet.set)
|
||||
Error(BOOL_MSG, "MatchIsTablet");
|
||||
break;
|
||||
case MATCH_IS_TABLET_PAD:
|
||||
if (xf86getSubToken(&(ptr->comment)) != STRING)
|
||||
Error(QUOTE_MSG, "MatchIsTabletPad");
|
||||
ptr->is_tablet_pad.set = xf86getBoolValue(&ptr->is_tablet_pad.val, xf86_lex_val.str);
|
||||
free(xf86_lex_val.str);
|
||||
if (!ptr->is_tablet_pad.set)
|
||||
Error(BOOL_MSG, "MatchIsTabletPad");
|
||||
break;
|
||||
case MATCH_IS_TOUCHPAD:
|
||||
if (xf86getSubToken(&(ptr->comment)) != STRING)
|
||||
Error(QUOTE_MSG, "MatchIsTouchpad");
|
||||
|
@ -474,6 +483,9 @@ xf86printInputClassSection(FILE * cf, XF86ConfInputClassPtr ptr)
|
|||
if (ptr->is_tablet.set)
|
||||
fprintf(cf, "\tIsTablet \"%s\"\n",
|
||||
ptr->is_tablet.val ? "yes" : "no");
|
||||
if (ptr->is_tablet_pad.set)
|
||||
fprintf(cf, "\tIsTabletPad \"%s\"\n",
|
||||
ptr->is_tablet_pad.val ? "yes" : "no");
|
||||
if (ptr->is_touchpad.set)
|
||||
fprintf(cf, "\tIsTouchpad \"%s\"\n",
|
||||
ptr->is_touchpad.val ? "yes" : "no");
|
||||
|
|
|
@ -326,6 +326,7 @@ typedef struct {
|
|||
xf86TriState is_pointer;
|
||||
xf86TriState is_joystick;
|
||||
xf86TriState is_tablet;
|
||||
xf86TriState is_tablet_pad;
|
||||
xf86TriState is_touchpad;
|
||||
xf86TriState is_touchscreen;
|
||||
XF86OptionPtr option_lst;
|
||||
|
|
|
@ -285,6 +285,7 @@ typedef enum {
|
|||
MATCH_IS_POINTER,
|
||||
MATCH_IS_JOYSTICK,
|
||||
MATCH_IS_TABLET,
|
||||
MATCH_IS_TABLET_PAD,
|
||||
MATCH_IS_TOUCHPAD,
|
||||
MATCH_IS_TOUCHSCREEN,
|
||||
|
||||
|
|
|
@ -237,6 +237,7 @@ typedef struct _InputAttributes {
|
|||
#define ATTR_TOUCHPAD (1<<4)
|
||||
#define ATTR_TOUCHSCREEN (1<<5)
|
||||
#define ATTR_KEY (1<<6)
|
||||
#define ATTR_TABLET_PAD (1<<7)
|
||||
|
||||
/* Key/Button has been run through all input processing and events sent to clients. */
|
||||
#define KEY_PROCESSED 1
|
||||
|
|
Loading…
Reference in New Issue