Xi: include button state in XIButtonInfo.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
01241b4247
commit
d5a15e65b7
|
@ -686,6 +686,7 @@ XISendDeviceChangedEvent(DeviceIntPtr device, DeviceIntPtr master, DeviceChanged
|
|||
{
|
||||
len += sizeof(xXIButtonInfo);
|
||||
len += dce->buttons.num_buttons * sizeof(Atom); /* button names */
|
||||
len += ((((dce->buttons.num_buttons + 7)/8) + 3)/4) * 4;
|
||||
}
|
||||
if (dce->num_valuators)
|
||||
len += sizeof(xXIValuatorInfo) * dce->num_valuators;
|
||||
|
|
|
@ -205,6 +205,7 @@ SizeDeviceClasses(DeviceIntPtr dev)
|
|||
{
|
||||
len += sizeof(xXIButtonInfo);
|
||||
len += dev->button->numButtons * sizeof(Atom);
|
||||
len += ((((dev->button->numButtons + 7)/8) + 3)/4) * 4;
|
||||
}
|
||||
|
||||
if (dev->key)
|
||||
|
@ -228,11 +229,24 @@ SizeDeviceClasses(DeviceIntPtr dev)
|
|||
int
|
||||
ListButtonInfo(DeviceIntPtr dev, xXIButtonInfo* info)
|
||||
{
|
||||
unsigned char *bits;
|
||||
int mask_len;
|
||||
int i;
|
||||
|
||||
mask_len = (((dev->button->numButtons + 7)/8) + 3)/4; /* 4-byte units*/
|
||||
|
||||
info->type = ButtonClass;
|
||||
info->num_buttons = dev->button->numButtons;
|
||||
info->length = 2 + info->num_buttons;
|
||||
info->length = 2 + mask_len + info->num_buttons;
|
||||
info->sourceid = dev->button->sourceid;
|
||||
|
||||
bits = (unsigned char*)&info[1];
|
||||
memset(bits, 0, mask_len * 4);
|
||||
|
||||
for (i = 0; dev && dev->button && i < dev->button->numButtons; i++)
|
||||
if (BitIsOn(dev->button->down, i))
|
||||
SetBit(bits, i);
|
||||
|
||||
/** XXX: button labels */
|
||||
|
||||
return info->length * 4;
|
||||
|
|
Loading…
Reference in New Issue
Block a user