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