aboutsummaryrefslogtreecommitdiffstats
path: root/src/capabilities.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/capabilities.c')
-rw-r--r--src/capabilities.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/capabilities.c b/src/capabilities.c
index 804b626..065c810 100644
--- a/src/capabilities.c
+++ b/src/capabilities.c
@@ -47,6 +47,14 @@ static int getabs(struct input_absinfo *abs, int key, int fd)
return rc >= 0;
}
+static int has_integrated_button(const struct Capabilities *cap)
+{
+ static const int bcm5974_vmask_ibt = 1;
+ if (strcmp(cap->devname, "bcm5974"))
+ return 0;
+ return cap->devid.version & bcm5974_vmask_ibt;
+}
+
int read_capabilities(struct Capabilities *cap, int fd)
{
unsigned long evbits[nlongs(EV_MAX)];
@@ -85,6 +93,7 @@ int read_capabilities(struct Capabilities *cap, int fd)
SETABS(cap, position_y, absbits, ABS_MT_POSITION_Y, fd);
cap->has_mtdata = cap->has_position_x && cap->has_position_y;
+ cap->has_ibt = has_integrated_button(cap);
cap->xfuzz = cap->abs_position_x.fuzz;
cap->yfuzz = cap->abs_position_y.fuzz;
@@ -114,6 +123,7 @@ void output_capabilities(const struct Capabilities *cap)
ADDCAP(line, cap, middle);
ADDCAP(line, cap, right);
ADDCAP(line, cap, mtdata);
+ ADDCAP(line, cap, ibt);
ADDCAP(line, cap, touch_major);
ADDCAP(line, cap, touch_minor);
ADDCAP(line, cap, width_major);