Thank you for writing and sharing this piece of code. I tried to read into it, and find it a bit confusing, so I'm asking for your kind help. :)
I'm on Arch on Wayland with SwayWM. I'm using latest AUR for interception-tools
and evtest
.
- JOB: "intercept -g $DEVNODE | /opt/interception/maricn | uinput -d $DEVNODE"
DEVICE:
EVENTS:
EV_KEY: [KEY_CAPSLOCK, KEY_ESC, KEY_SPACE]
# - JOB: "intercept -g $DEVNODE | uinput -d $DEVNODE"
# DEVICE:
# NAME: "AT Translated Set 2 keyboard"
nikola@work-x1c-arch ~/T/interception-k2k (master *+)» sudo env CONFIG_DIR=/home/nikola/Tools/interception-k2k/maricn make test
[sudo] password for nikola:
CFLAGS=-DVERBOSE make
make[1]: Entering directory '/home/nikola/Tools/interception-k2k'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/nikola/Tools/interception-k2k'
make install
make[1]: Entering directory '/home/nikola/Tools/interception-k2k'
# If you have run `make test` then do not forget to run `make clean` after. Otherwise you may install with debug logs on.
install -D --strip -t /opt/interception out/multi-rules.h.in out/tap-rules.h.in
install: strip process terminated abnormally
install: strip process terminated abnormally
make[1]: *** [Makefile:29: install] Error 1
make[1]: Leaving directory '/home/nikola/Tools/interception-k2k'
make: *** [Makefile:34: test] Error 2
make clean && make && sudo make install && sudo systemctl restart udevmon.service
I want to make my space key pressed with home row keys emulate arrows. I tried:
/* space + nums => F-keys */
{ .keys = { KEY_SPACE, KEY_1 }, PRESS(KEY_F1), DOWN_IFF_ALL_DOWN(2) },
{ .keys = { KEY_SPACE, KEY_2 }, PRESS(KEY_F2), DOWN_IFF_ALL_DOWN(2) },
{ .keys = { KEY_SPACE, KEY_3 }, PRESS(KEY_F3), DOWN_IFF_ALL_DOWN(2) },
{ .keys = { KEY_SPACE, KEY_4 }, PRESS(KEY_F4), DOWN_IFF_ALL_DOWN(2) },
{ .keys = { KEY_SPACE, KEY_5 }, PRESS(KEY_F5), DOWN_IFF_ALL_DOWN(2) },
{ .keys = { KEY_SPACE, KEY_6 }, PRESS(KEY_F6), DOWN_IFF_ALL_DOWN(2) },
{ .keys = { KEY_SPACE, KEY_7 }, PRESS(KEY_F7), DOWN_IFF_ALL_DOWN(2) },
{ .keys = { KEY_SPACE, KEY_8 }, PRESS(KEY_F8), DOWN_IFF_ALL_DOWN(2) },
{ .keys = { KEY_SPACE, KEY_9 }, PRESS(KEY_F9), DOWN_IFF_ALL_DOWN(2) },
{ .keys = { KEY_SPACE, KEY_0 }, PRESS(KEY_F10), DOWN_IFF_ALL_DOWN(2) },
{ .keys = { KEY_SPACE, KEY_MINUS }, PRESS(KEY_F11), DOWN_IFF_ALL_DOWN(2) },
{ .keys = { KEY_SPACE, KEY_EQUAL }, PRESS(KEY_F12), DOWN_IFF_ALL_DOWN(2) },
/* space + home row => arrow keys */
{ .keys = { KEY_SPACE, KEY_H }, PRESS_ON_DOWN(KEY_LEFT), DOWN_IFF_ALL_DOWN(2) },
{ .keys = { KEY_SPACE, KEY_K }, PRESS_ON_DOWN(KEY_UP), DOWN_IFF_ALL_DOWN(2), .repeated_key = KEY_RESERVED},
{ .keys = { KEY_SPACE, KEY_J }, PRESS_ON_DOWN(KEY_DOWN), DOWN_IFF_ALL_DOWN(2) },
{ .keys = { KEY_SPACE, KEY_L }, PRESS_ON_DOWN(KEY_RIGHT), DOWN_IFF_ALL_DOWN(2) },
/* caps2esc */
{ .base_key = KEY_CAPSLOCK, .tap_key = KEY_ESC, .repeat_key = KEY_LEFTCTRL, .hold_key = KEY_LEFTCTRL, .hold_immediately = 1 },
{ .base_key = KEY_SPACE, .tap_key = KEY_SPACE, .repeat_key = KEY_RESERVED, .hold_key = KEY_RESERVED, .hold_immediately = 1 },
Sometimes when I load interception plugin, my letter J gets stuck and doesn't output.. It doesn't get registered in evtest
and when I move to another window (firefox) it keeps outputting j
until i press some other key.