keymap: Move reading of event in separate function
This commit is contained in:
parent
9b444cb29a
commit
45019c0e88
|
@ -256,6 +256,24 @@ static const char* default_keymap_path(const char* path)
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* read one event; return 1 if valid */
|
||||||
|
static int read_event(int fd, struct input_event* ev)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
ret = read(fd, ev, sizeof(struct input_event));
|
||||||
|
|
||||||
|
if (ret < 0) {
|
||||||
|
perror("read");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (ret != sizeof(struct input_event)) {
|
||||||
|
fprintf(stderr, "did not get enough data for event struct, aborting\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static void print_key(struct input_event *event)
|
static void print_key(struct input_event *event)
|
||||||
{
|
{
|
||||||
static int cur_scancode = 0;
|
static int cur_scancode = 0;
|
||||||
|
@ -280,29 +298,18 @@ static void print_key(struct input_event *event)
|
||||||
static void interactive(int fd)
|
static void interactive(int fd)
|
||||||
{
|
{
|
||||||
struct input_event ev;
|
struct input_event ev;
|
||||||
int run = 1;
|
|
||||||
|
|
||||||
/* grab input device */
|
/* grab input device */
|
||||||
ioctl(fd, EVIOCGRAB, 1);
|
ioctl(fd, EVIOCGRAB, 1);
|
||||||
|
|
||||||
puts("Press ESC to finish");
|
puts("Press ESC to finish");
|
||||||
while (run) {
|
while (read_event(fd, &ev)) {
|
||||||
switch (read(fd, &ev, sizeof(ev))) {
|
|
||||||
case -1:
|
|
||||||
perror("read");
|
|
||||||
run = 0;
|
|
||||||
break;
|
|
||||||
case 0:
|
|
||||||
run = 0;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
print_key(&ev);
|
print_key(&ev);
|
||||||
|
|
||||||
/* stop on Escape key release */
|
/* stop on Escape key release */
|
||||||
if (ev.type == EV_KEY && ev.code == KEY_ESC && ev.value == 0)
|
if (ev.type == EV_KEY && ev.code == KEY_ESC && ev.value == 0)
|
||||||
run = 0;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/* release input device */
|
/* release input device */
|
||||||
ioctl(fd, EVIOCGRAB, 0);
|
ioctl(fd, EVIOCGRAB, 0);
|
||||||
|
|
Loading…
Reference in a new issue