diff --git a/src/ial/evdev.c b/src/ial/evdev.c new file mode 100644 index 00000000..cd3bb1b7 --- /dev/null +++ b/src/ial/evdev.c @@ -0,0 +1,141 @@ +/* + * This file is part of MiniGUI, a mature cross-platform windowing + * and Graphics User Interface (GUI) support system for embedded systems + * and smart IoT devices. + * + * Copyright (C) 2002~2018, Beijing FMSoft Technologies Co., Ltd. + * Copyright (C) 1998~2002, WEI Yongming + * + * 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 . + * + * Or, + * + * As this program is a library, any link to this program must follow + * GNU General Public License version 3 (GPLv3). If you cannot accept + * GPLv3, you need to be licensed from FMSoft. + * + * If you have got a commercial license of this program, please use it + * under the terms and conditions of the commercial license. + * + * For more information about the commercial license, please refer to + * . + */ +/* +** evdev.c: The implementation of EvDev IAL engine. +** +** Created by Wei Yongming, 2019/06/10 +*/ + +#include +#include +#include + +#include "common.h" + +#ifdef _MGIAL_EVDEV + +#include "misc.h" +#include "ial.h" +#include "evdev.h" + +static int mouse_x, mouse_y, mouse_button; + +typedef struct tagPOS +{ + short x; + short y; + short b; +} POS; + +/************************ Low Level Input Operations **********************/ +/* + * Mouse operations -- Event + */ +static int mouse_update(void) +{ + return 1; +} + +static void mouse_getxy (int* x, int* y) +{ + *x = mouse_x; + *y = mouse_y; +} + +static int mouse_getbutton(void) +{ + return mouse_button; +} + +static int keyboard_update(void) +{ + return 0; +} + +static const char * keyboard_get_state (void) +{ + return NULL; +} + +static int wait_event (int which, int maxfd, fd_set *in, fd_set *out, fd_set *except, + struct timeval *timeout) +{ +#ifdef _MGRM_THREADS + __mg_os_time_delay (timeout->tv_sec * 1000 + timeout->tv_usec/1000); + timeout->tv_sec = 0; + timeout->tv_usec = 0; +#else + fd_set rfds; + int e; + + if (!in) { + in = &rfds; + mg_fd_zero (in); + } + + e = mg_select (maxfd + 1, in, out, except, timeout); + + if (e < 0) { + return -1; + } +#endif + + return 0; +} + +BOOL InitEvdevInput (INPUT* input, const char* mdev, const char* mtype) +{ + input->update_mouse = mouse_update; + input->get_mouse_xy = mouse_getxy; + input->set_mouse_xy = NULL; + input->get_mouse_button = mouse_getbutton; + input->set_mouse_range = NULL; + + input->update_keyboard = keyboard_update; + input->get_keyboard_state = keyboard_get_state; + input->set_leds = NULL; + + input->wait_event = wait_event; + mouse_x = 0; + mouse_y = 0; + mouse_button= 0; + return TRUE; +} + +void TermEvdevInput (void) +{ +} + +#endif /* _MGIAL_EVDEV */ + diff --git a/src/ial/evdev.h b/src/ial/evdev.h new file mode 100644 index 00000000..f0062564 --- /dev/null +++ b/src/ial/evdev.h @@ -0,0 +1,56 @@ +/* + * This file is part of MiniGUI, a mature cross-platform windowing + * and Graphics User Interface (GUI) support system for embedded systems + * and smart IoT devices. + * + * Copyright (C) 2002~2018, Beijing FMSoft Technologies Co., Ltd. + * Copyright (C) 1998~2002, WEI Yongming + * + * 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 . + * + * Or, + * + * As this program is a library, any link to this program must follow + * GNU General Public License version 3 (GPLv3). If you cannot accept + * GPLv3, you need to be licensed from FMSoft. + * + * If you have got a commercial license of this program, please use it + * under the terms and conditions of the commercial license. + * + * For more information about the commercial license, please refer to + * . + */ +/* +** evdev.h: the head file of EVDev IAL Engine. +** +** Created by Wei YongMing, 2019/06/10 +*/ + +#ifndef GUI_IAL_EVDEV_H + #define GUI_IAL_EVDEV_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +BOOL InitEvdevInput (INPUT* input, const char* mdev, const char* mtype); +void TermEvdevInput (void); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* GUI_IAL_EVDEV_H */ + + diff --git a/src/ial/ial.c b/src/ial/ial.c index 173c3d84..b3a122fc 100644 --- a/src/ial/ial.c +++ b/src/ial/ial.c @@ -117,6 +117,9 @@ #ifdef _MGIAL_USVFB #include "usvfbinput.h" #endif +#ifdef _MGIAL_EVDEV + #include "evdev.h" +#endif #define LEN_ENGINE_NAME 16 #define LEN_MTYPE_NAME 16 @@ -196,6 +199,9 @@ static INPUT inputs [] = #ifdef _MGIAL_USVFB {"usvfb", InitUSVFBInput, TermUSVFBInput}, #endif +#ifdef _MGIAL_EVDEV + {"evdev", InitEvdevInput, TermEvdevInput}, +#endif /* ... end of general IAL engines */ };