76 lines
2.7 KiB
C
76 lines
2.7 KiB
C
/*
|
|
This file is part of Furui.
|
|
|
|
Furui 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.
|
|
|
|
Furui 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 Furui. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include "model.h"
|
|
|
|
static unsigned int keyboard_keys[] = {
|
|
KEY_ESC, KEY_GRAVE, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_0, KEY_MINUS, KEY_EQUAL, KEY_BACKSPACE,
|
|
KEY_TAB, KEY_Q, KEY_W, KEY_E, KEY_R, KEY_T, KEY_Y, KEY_U, KEY_I, KEY_O, KEY_P, KEY_LEFTBRACE, KEY_RIGHTBRACE, KEY_BACKSLASH,
|
|
KEY_CAPSLOCK, KEY_A, KEY_S, KEY_D, KEY_F, KEY_G, KEY_H, KEY_J, KEY_K, KEY_L, KEY_SEMICOLON, KEY_APOSTROPHE, KEY_ENTER,
|
|
KEY_LEFTSHIFT, KEY_Z, KEY_X, KEY_C, KEY_V, KEY_B, KEY_N, KEY_M, KEY_COMMA, KEY_DOT, KEY_SLASH, KEY_RIGHTSHIFT,
|
|
KEY_LEFTCTRL, KEY_LEFTALT, KEY_SPACE, KEY_RIGHTALT, KEY_RIGHTCTRL,
|
|
0
|
|
};
|
|
|
|
struct libevdev *furui_model_keyboard(void) {
|
|
struct libevdev *dev;
|
|
int i;
|
|
|
|
dev = libevdev_new();
|
|
if (dev == NULL) {
|
|
perror("libevdev_new");
|
|
exit(EXIT_FAILURE);
|
|
}
|
|
libevdev_set_name(dev, FURUI_MODEL_KEYBOARD_NAME);
|
|
libevdev_set_id_bustype(dev, BUS_VIRTUAL);
|
|
libevdev_enable_event_type(dev, EV_KEY);
|
|
libevdev_enable_event_type(dev, EV_SYN);
|
|
for (i = 0; keyboard_keys[i] != 0; i++) {
|
|
libevdev_enable_event_code(dev, EV_KEY, keyboard_keys[i], NULL);
|
|
}
|
|
libevdev_enable_event_code(dev, EV_SYN, SYN_REPORT, NULL);
|
|
|
|
return dev;
|
|
}
|
|
|
|
struct libevdev *furui_model_mouse(void) {
|
|
struct libevdev *dev;
|
|
|
|
dev = libevdev_new();
|
|
if (dev == NULL) {
|
|
perror("libevdev_new");
|
|
exit(EXIT_FAILURE);
|
|
}
|
|
libevdev_set_name(dev, FURUI_MODEL_MOUSE_NAME);
|
|
libevdev_set_id_bustype(dev, BUS_VIRTUAL);
|
|
libevdev_enable_event_type(dev, EV_KEY);
|
|
libevdev_enable_event_type(dev, EV_REL);
|
|
libevdev_enable_event_type(dev, EV_SYN);
|
|
libevdev_enable_event_code(dev, EV_KEY, BTN_LEFT, NULL);
|
|
libevdev_enable_event_code(dev, EV_KEY, BTN_RIGHT, NULL);
|
|
libevdev_enable_event_code(dev, EV_KEY, BTN_MIDDLE, NULL);
|
|
libevdev_enable_event_code(dev, EV_REL, REL_X, NULL);
|
|
libevdev_enable_event_code(dev, EV_REL, REL_Y, NULL);
|
|
libevdev_enable_event_code(dev, EV_REL, REL_HWHEEL, NULL);
|
|
libevdev_enable_event_code(dev, EV_REL, REL_WHEEL, NULL);
|
|
libevdev_enable_event_code(dev, EV_SYN, SYN_REPORT, NULL);
|
|
|
|
return dev;
|
|
}
|