/* * 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; }