/*
* secde -- experimental lightweight Wayland/X11 server
* Copyright (C) 2019 Samuel Lidén Borell
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
#include
#include
#include
#include
#include "evdev.h"
int input_evdev_init(struct FdInfo *info)
{
char name[128+1];
unsigned char props;
unsigned char relbits;
int fd = protohnd_getfd(info);
/* ioctl = 0x80804506 */
if (ioctl(fd, EVIOCGNAME(128), name) != -1) {
printf("input device (fd %d) name : %s\n", fd, name);
}
if (ioctl(fd, EVIOCGPROP(sizeof(props)), &props) != -1) {
printf("input device (fd %d) properties : %x\n", fd, props);
}
if (ioctl(fd, EVIOCGBIT(EV_REL, sizeof(props)), &relbits) != -1) {
printf("input device(fd %d) bits(EV_REL): %x\n", fd, relbits);
}
if (ioctl(fd, EVIOCGBIT(EV_ABS, sizeof(props)), &relbits) != -1) {
printf("input device(fd %d) bits(EV_ABS): %x\n", fd, relbits);
}
if (ioctl(fd, EVIOCGBIT(EV_KEY, sizeof(props)), &relbits) != -1) {
printf("input device(fd %d) bits(EV_KEY): %x\n", fd, relbits);
}
return 1;
}
int input_evdev_handler(struct FdInfo *info, const unsigned char *buff,
int len)
{
int origlen = len;
const struct input_event *ev = (struct input_event *)buff;
(void) info;
while (len >= (int)sizeof(struct input_event)) {
printf("evdev event. time=%lx, type=%d, code=%d, value=%d\n",
ev->time.tv_sec, ev->type, ev->code,
ev->value);
ev++;
len -= sizeof(*ev);
}
return origlen - len;
}