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 += sizeof(xXIButtonInfo);
|
||||||
len += dce->buttons.num_buttons * sizeof(Atom); /* button names */
|
len += dce->buttons.num_buttons * sizeof(Atom); /* button names */
|
||||||
|
len += ((((dce->buttons.num_buttons + 7)/8) + 3)/4) * 4;
|
||||||
}
|
}
|
||||||
if (dce->num_valuators)
|
if (dce->num_valuators)
|
||||||
len += sizeof(xXIValuatorInfo) * dce->num_valuators;
|
len += sizeof(xXIValuatorInfo) * dce->num_valuators;
|
||||||
|
|
|
@ -205,6 +205,7 @@ SizeDeviceClasses(DeviceIntPtr dev)
|
||||||
{
|
{
|
||||||
len += sizeof(xXIButtonInfo);
|
len += sizeof(xXIButtonInfo);
|
||||||
len += dev->button->numButtons * sizeof(Atom);
|
len += dev->button->numButtons * sizeof(Atom);
|
||||||
|
len += ((((dev->button->numButtons + 7)/8) + 3)/4) * 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dev->key)
|
if (dev->key)
|
||||||
|
@ -228,11 +229,24 @@ SizeDeviceClasses(DeviceIntPtr dev)
|
||||||
int
|
int
|
||||||
ListButtonInfo(DeviceIntPtr dev, xXIButtonInfo* info)
|
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->type = ButtonClass;
|
||||||
info->num_buttons = dev->button->numButtons;
|
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;
|
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 */
|
/** XXX: button labels */
|
||||||
|
|
||||||
return info->length * 4;
|
return info->length * 4;
|
||||||
|
|
Loading…
Reference in New Issue