Added debug toggle.

master
Raheman Vaiya 5 years ago
parent 2714cfce91
commit 46c201d5ce
  1. 5
      Makefile
  2. 51
      src/main.c

@ -1,4 +1,4 @@
.PHONY: all clean debug install uninstall .PHONY: all clean install uninstall
DESTDIR= DESTDIR=
PREFIX=/usr PREFIX=/usr
@ -19,9 +19,6 @@ CFLAGS=-DVERSION=\"$(VERSION)\" \
all: all:
mkdir -p bin mkdir -p bin
$(CC) $(CFLAGS) -O3 src/*.c -o bin/keyd -ludev $(CC) $(CFLAGS) -O3 src/*.c -o bin/keyd -ludev
debug:
mkdir -p bin
$(CC) $(CFLAGS) -Wall -Wextra -pedantic -DDEBUG -g src/*.c -o bin/keyd -ludev
man: man:
pandoc -s -t man man.md | gzip > keyd.1.gz pandoc -s -t man man.md | gzip > keyd.1.gz
clean: clean:

@ -43,12 +43,9 @@
#define UINPUT_DEVICE_NAME "keyd virtual keyboard" #define UINPUT_DEVICE_NAME "keyd virtual keyboard"
#define MAX_KEYBOARDS 256 #define MAX_KEYBOARDS 256
#ifdef DEBUG #define dbg(fmt, ...) { if(debug) warn("%s:%d: "fmt, __FILE__, __LINE__, ## __VA_ARGS__); }
#define dbg(fmt, ...) warn("%s:%d: "fmt, __FILE__, __LINE__, ## __VA_ARGS__)
#else
#define dbg(...)
#endif
static int debug = 0;
static int ufd = -1; static int ufd = -1;
static struct udev *udev; static struct udev *udev;
@ -128,6 +125,23 @@ static int is_keyboard(struct udev_device *dev)
return is_keyboard; return is_keyboard;
} }
static const char *evdev_device_name(const char *devnode)
{
static char name[256];
int fd = open(devnode, O_RDONLY);
if(fd < 0) {
perror("open");
exit(-1);
}
if(ioctl(fd, EVIOCGNAME(sizeof(name)), &name) == -1)
return NULL;
close(fd);
return name;
}
static void get_keyboard_nodes(char *nodes[MAX_KEYBOARDS], int *sz) static void get_keyboard_nodes(char *nodes[MAX_KEYBOARDS], int *sz)
{ {
struct udev *udev; struct udev *udev;
@ -157,10 +171,13 @@ static void get_keyboard_nodes(char *nodes[MAX_KEYBOARDS], int *sz)
const char *path = udev_device_get_devnode(dev); const char *path = udev_device_get_devnode(dev);
if(is_keyboard(dev)) { if(is_keyboard(dev)) {
dbg("Detected keyboard node %s (%s)", name, evdev_device_name(path));
nodes[*sz] = malloc(strlen(path)+1); nodes[*sz] = malloc(strlen(path)+1);
strcpy(nodes[*sz], path); strcpy(nodes[*sz], path);
(*sz)++; (*sz)++;
assert(*sz <= MAX_KEYBOARDS); assert(*sz <= MAX_KEYBOARDS);
} else if(path) {
dbg("Ignoring %s (%s)", evdev_device_name(path), path);
} }
udev_device_unref(dev); udev_device_unref(dev);
@ -512,25 +529,6 @@ keyseq_cleanup:
} }
} }
static const char *evdev_device_name(const char *devnode)
{
static char name[256];
int fd = open(devnode, O_RDONLY);
if(fd < 0) {
perror("open");
exit(-1);
}
if(ioctl(fd, EVIOCGNAME(sizeof(name)), &name) == -1) {
perror("ioctl");
exit(-1);
}
close(fd);
return name;
}
//Block on the given keyboard nodes until no keys are depressed. //Block on the given keyboard nodes until no keys are depressed.
static void await_keyboard_neutrality(char **devs, int n) static void await_keyboard_neutrality(char **devs, int n)
{ {
@ -886,6 +884,11 @@ static void daemonize()
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
if(getenv("KEYD_DEBUG"))
debug = 1;
dbg("Debug mode enabled.");
if(argc > 1) { if(argc > 1) {
if(!strcmp(argv[1], "-v")) { if(!strcmp(argv[1], "-v")) {
fprintf(stderr, "keyd version: %s (%s)\n", VERSION, GIT_COMMIT_HASH); fprintf(stderr, "keyd version: %s (%s)\n", VERSION, GIT_COMMIT_HASH);

Loading…
Cancel
Save