aboutsummaryrefslogtreecommitdiff
path: root/common/evdev.c
diff options
context:
space:
mode:
authorilliliti <illiliti@thunix.net>2022-03-04 06:10:27 +0300
committerKenny Levinsen <kl@kl.wtf>2022-03-16 21:39:46 +0100
commit4ad48cb305b3f847ab7d3c2d3f59c27007519c77 (patch)
treef437b5082ab46c2fea80b5473a787230108e437d /common/evdev.c
parent1990f9b0348412a06acae0e7d17d746905cc75b1 (diff)
Initial netbsd support
Diffstat (limited to 'common/evdev.c')
-rw-r--r--common/evdev.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/common/evdev.c b/common/evdev.c
index 4aff9bc..d2398fb 100644
--- a/common/evdev.c
+++ b/common/evdev.c
@@ -9,6 +9,9 @@
#include <sys/sysmacros.h>
#elif defined(__FreeBSD__)
#include <dev/evdev/input.h>
+#elif defined(__NetBSD__)
+#include <stdlib.h>
+#include <sys/stat.h>
#else
#error Unsupported platform
#endif
@@ -17,6 +20,7 @@
#define STRLEN(s) ((sizeof(s) / sizeof(s[0])) - 1)
+#if defined(__linux__) || defined(__FreeBSD__)
int path_is_evdev(const char *path) {
static const char prefix[] = "/dev/input/event";
static const size_t prefixlen = STRLEN(prefix);
@@ -26,9 +30,28 @@ int path_is_evdev(const char *path) {
int evdev_revoke(int fd) {
return ioctl(fd, EVIOCREVOKE, NULL);
}
+#endif
#if defined(__linux__)
int dev_is_evdev(dev_t device) {
return major(device) == INPUT_MAJOR;
}
+#elif defined(__NetBSD__)
+int dev_is_evdev(dev_t device) {
+ return major(device) == getdevmajor("wskbd", S_IFCHR) ||
+ major(device) == getdevmajor("wsmouse", S_IFCHR) ||
+ major(device) == getdevmajor("wsmux", S_IFCHR);
+}
+int path_is_evdev(const char *path) {
+ const char *wskbd = "/dev/wskbd";
+ const char *wsmouse = "/dev/wsmouse";
+ const char *wsmux = "/dev/wsmux";
+ return strncmp(path, wskbd, STRLEN(wskbd)) == 0 ||
+ strncmp(path, wsmouse, STRLEN(wsmouse)) == 0 ||
+ strncmp(path, wsmux, STRLEN(wsmouse)) == 0;
+}
+int evdev_revoke(int fd) {
+ (void)fd;
+ return 0;
+}
#endif