Lines Matching +full:- +full:- +full:include

9 #include "lv_evdev_private.h"
12 #include <unistd.h>
13 #include <fcntl.h>
14 #include <errno.h>
15 #include <string.h>
16 #include <sys/types.h>
17 #include <dirent.h>
18 #include <sys/stat.h>
19 #include <sys/param.h> /*To detect BSD*/
21 #include <dev/evdev/input.h>
23 #include <linux/input.h>
24 #include <sys/inotify.h>
26 #include "../../core/lv_global.h"
27 #include "../../misc/lv_types.h"
28 #include "../../misc/lv_assert.h"
29 #include "../../misc/lv_math.h"
30 #include "../../misc/lv_async.h"
31 #include "../../stdlib/lv_mem.h"
32 #include "../../stdlib/lv_string.h"
33 #include "../../display/lv_display.h"
34 #include "../../widgets/image/lv_image.h"
40 #define evdev_discovery LV_GLOBAL_DEFAULT()->evdev_discovery
119 if(in_min != in_max) v = (v - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; in _evdev_calibrate()
129 int swapped_x = dsc->swap_axes ? y : x; in _evdev_process_pointer()
130 int swapped_y = dsc->swap_axes ? x : y; in _evdev_process_pointer()
138 p.x = _evdev_calibrate(swapped_x, dsc->min_x, dsc->max_x, offset_x, offset_x + width - 1); in _evdev_process_pointer()
139 p.y = _evdev_calibrate(swapped_y, dsc->min_y, dsc->max_y, offset_y, offset_y + height - 1); in _evdev_process_pointer()
157 while((br = read(dsc->fd, &in, sizeof(in))) > 0) { in _evdev_read()
159 if(in.code == REL_X) dsc->root_x += in.value; in _evdev_read()
160 else if(in.code == REL_Y) dsc->root_y += in.value; in _evdev_read()
163 if(in.code == ABS_X || in.code == ABS_MT_POSITION_X) dsc->root_x = in.value; in _evdev_read()
164 else if(in.code == ABS_Y || in.code == ABS_MT_POSITION_Y) dsc->root_y = in.value; in _evdev_read()
166 if(in.value == -1) dsc->state = LV_INDEV_STATE_RELEASED; in _evdev_read()
167 else if(in.value == 0) dsc->state = LV_INDEV_STATE_PRESSED; in _evdev_read()
172 if(in.value == 0) dsc->state = LV_INDEV_STATE_RELEASED; in _evdev_read()
173 else if(in.value == 1) dsc->state = LV_INDEV_STATE_PRESSED; in _evdev_read()
176 dsc->key = _evdev_process_key(in.code); in _evdev_read()
177 if(dsc->key) { in _evdev_read()
178 dsc->state = in.value ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED; in _evdev_read()
179 data->continue_reading = true; /*Keep following events in buffer for now*/ in _evdev_read()
185 if(!dsc->deleting && br == -1 && errno != EAGAIN) { in _evdev_read()
193 dsc->deleting = true; in _evdev_read()
199 data->state = dsc->state; in _evdev_read()
200 data->key = dsc->key; in _evdev_read()
203 data->state = dsc->state; in _evdev_read()
204 data->point = _evdev_process_pointer(indev, dsc->root_x, dsc->root_y); in _evdev_read()
217 close(dsc->fd); in _evdev_indev_delete_cb()
238 * should not be added automatically -- although it is valid for `lv_evdev_create` in _evdev_discovery_indev_try_create()
239 * to be explicitly called with the same path by the user -- or an edge case in _evdev_discovery_indev_try_create()
248 if(!ex_dsc->deleting && dsc->st_dev == ex_dsc->st_dev && dsc->st_ino == ex_dsc->st_ino) { in _evdev_discovery_indev_try_create()
256 if(ed->cb) { in _evdev_discovery_indev_try_create()
257 ed->cb(indev, dsc->type, ed->cb_user_data); in _evdev_discovery_indev_try_create()
264 if(inotify_wd == -1) { in _evdev_discovery_inotify_try_init_watcher()
282 _evdev_discovery_indev_try_create(dirent->d_name); in _evdev_discovery_inotify_try_init_watcher()
299 if(!ed->inotify_watch_active) { in _evdev_discovery_timer_cb()
300 ed->inotify_watch_active = _evdev_discovery_inotify_try_init_watcher(ed->inotify_fd); in _evdev_discovery_timer_cb()
309 while((br = read(ed->inotify_fd, &in_data, sizeof(in_data))) > 0) { in _evdev_discovery_timer_cb()
313 in_data_buf_p += sizeof(struct inotify_event) + in_ev_p->len) { in _evdev_discovery_timer_cb()
315 if(in_ev_p->mask & IN_IGNORED) { in _evdev_discovery_timer_cb()
320 ed->inotify_watch_active = false; in _evdev_discovery_timer_cb()
323 if(!(in_ev_p->mask & IN_ISDIR) && in_ev_p->len) { in _evdev_discovery_timer_cb()
324 _evdev_discovery_indev_try_create(in_ev_p->name); in _evdev_discovery_timer_cb()
329 if(br == -1 && errno != EAGAIN) { in _evdev_discovery_timer_cb()
346 dsc->fd = open(dev_path, O_RDONLY | O_NOCTTY | O_CLOEXEC); in lv_evdev_create()
347 if(dsc->fd < 0) { in lv_evdev_create()
353 if(0 != fstat(dsc->fd, &sb)) { in lv_evdev_create()
357 dsc->st_dev = sb.st_dev; in lv_evdev_create()
358 dsc->st_ino = sb.st_ino; in lv_evdev_create()
362 if(ioctl(dsc->fd, EVIOCGBIT(EV_REL, sizeof(rel_bits)), &rel_bits) >= 0) { in lv_evdev_create()
366 dsc->type = LV_EVDEV_TYPE_REL; in lv_evdev_create()
376 if(ioctl(dsc->fd, EVIOCGBIT(EV_ABS, sizeof(abs_bits)), &abs_bits) >= 0) { in lv_evdev_create()
380 dsc->type = LV_EVDEV_TYPE_ABS; in lv_evdev_create()
390 if(ioctl(dsc->fd, EVIOCGBIT(EV_KEY, sizeof(key_bits)), key_bits) >= 0) { in lv_evdev_create()
395 dsc->type = LV_EVDEV_TYPE_KEY; in lv_evdev_create()
409 if(fcntl(dsc->fd, F_SETFL, O_NONBLOCK) < 0) { in lv_evdev_create()
418 if(ioctl(dsc->fd, EVIOCGABS(ABS_X), &absinfo) == 0) { in lv_evdev_create()
419 dsc->min_x = absinfo.minimum; in lv_evdev_create()
420 dsc->max_x = absinfo.maximum; in lv_evdev_create()
425 if(ioctl(dsc->fd, EVIOCGABS(ABS_Y), &absinfo) == 0) { in lv_evdev_create()
426 dsc->min_y = absinfo.minimum; in lv_evdev_create()
427 dsc->max_y = absinfo.maximum; in lv_evdev_create()
444 close(dsc->fd); in lv_evdev_create()
454 int inotify_fd = -1; in lv_evdev_discovery_start()
462 ed->cb = cb; in lv_evdev_discovery_start()
463 ed->cb_user_data = user_data; in lv_evdev_discovery_start()
466 if(inotify_fd == -1) { in lv_evdev_discovery_start()
470 ed->inotify_fd = inotify_fd; in lv_evdev_discovery_start()
472 ed->inotify_watch_active = _evdev_discovery_inotify_try_init_watcher(inotify_fd); in lv_evdev_discovery_start()
477 ed->timer = timer; in lv_evdev_discovery_start()
483 if(inotify_fd != -1) close(inotify_fd); in lv_evdev_discovery_start()
499 if(ed->timer) lv_timer_delete(ed->timer); in lv_evdev_discovery_stop()
500 close(ed->inotify_fd); in lv_evdev_discovery_stop()
514 dsc->swap_axes = swap_axes; in lv_evdev_set_swap_axes()
521 dsc->min_x = min_x; in lv_evdev_set_calibration()
522 dsc->min_y = min_y; in lv_evdev_set_calibration()
523 dsc->max_x = max_x; in lv_evdev_set_calibration()
524 dsc->max_y = max_y; in lv_evdev_set_calibration()