mirror of
https://gitlab.freedesktop.org/libevdev/libevdev.git
synced 2025-12-27 09:10:07 +01:00
Add the remaining ev bits
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
31961e8d59
commit
016cc05381
3 changed files with 41 additions and 0 deletions
|
|
@ -66,11 +66,17 @@ struct libevdev {
|
|||
unsigned long rel_bits[NLONGS(REL_CNT)];
|
||||
unsigned long abs_bits[NLONGS(ABS_CNT)];
|
||||
unsigned long led_bits[NLONGS(LED_CNT)];
|
||||
unsigned long msc_bits[NLONGS(MSC_CNT)];
|
||||
unsigned long sw_bits[NLONGS(SW_CNT)];
|
||||
unsigned long rep_bits[NLONGS(REP_CNT)]; /* convenience, always 1 */
|
||||
unsigned long ff_bits[NLONGS(FF_CNT)];
|
||||
unsigned long snd_bits[NLONGS(SND_CNT)];
|
||||
unsigned long key_values[NLONGS(KEY_CNT)];
|
||||
struct input_absinfo abs_info[ABS_CNT];
|
||||
unsigned int mt_slot_vals[MAX_SLOTS][ABS_MT_CNT];
|
||||
int num_slots; /**< valid slots in mt_slot_vals */
|
||||
int current_slot;
|
||||
int rep_values[2];
|
||||
|
||||
int need_sync;
|
||||
int grabbed;
|
||||
|
|
|
|||
|
|
@ -70,6 +70,11 @@ type_to_mask_const(const struct libevdev *dev, unsigned int type, const unsigned
|
|||
max_mask(REL, rel);
|
||||
max_mask(KEY, key);
|
||||
max_mask(LED, led);
|
||||
max_mask(MSC, msc);
|
||||
max_mask(SW, sw);
|
||||
max_mask(FF, ff);
|
||||
max_mask(REP, rep);
|
||||
max_mask(SND, snd);
|
||||
default:
|
||||
max = -1;
|
||||
break;
|
||||
|
|
@ -88,6 +93,11 @@ type_to_mask(struct libevdev *dev, unsigned int type, unsigned long **mask)
|
|||
max_mask(REL, rel);
|
||||
max_mask(KEY, key);
|
||||
max_mask(LED, led);
|
||||
max_mask(MSC, msc);
|
||||
max_mask(SW, sw);
|
||||
max_mask(FF, ff);
|
||||
max_mask(REP, rep);
|
||||
max_mask(SND, snd);
|
||||
default:
|
||||
max = -1;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -209,6 +209,31 @@ libevdev_set_fd(struct libevdev* dev, int fd)
|
|||
if (rc < 0)
|
||||
goto out;
|
||||
|
||||
rc = ioctl(fd, EVIOCGBIT(EV_SW, sizeof(dev->sw_bits)), dev->sw_bits);
|
||||
if (rc < 0)
|
||||
goto out;
|
||||
|
||||
rc = ioctl(fd, EVIOCGBIT(EV_MSC, sizeof(dev->msc_bits)), dev->msc_bits);
|
||||
if (rc < 0)
|
||||
goto out;
|
||||
|
||||
rc = ioctl(fd, EVIOCGBIT(EV_FF, sizeof(dev->ff_bits)), dev->ff_bits);
|
||||
if (rc < 0)
|
||||
goto out;
|
||||
|
||||
rc = ioctl(fd, EVIOCGBIT(EV_SND, sizeof(dev->snd_bits)), dev->snd_bits);
|
||||
if (rc < 0)
|
||||
goto out;
|
||||
|
||||
/* rep is a special case, always set it to 1 for both values if EV_REP is set */
|
||||
if (bit_is_set(dev->bits, EV_REP)) {
|
||||
for (i = 0; i < REP_MAX; i++)
|
||||
set_bit(dev->rep_bits, i);
|
||||
rc = ioctl(fd, EVIOCGREP, dev->rep_values);
|
||||
if (rc < 0)
|
||||
goto out;
|
||||
}
|
||||
|
||||
for (i = ABS_X; i <= ABS_MAX; i++) {
|
||||
if (bit_is_set(dev->abs_bits, i)) {
|
||||
struct input_absinfo abs_info;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue