8 Commits

Author SHA1 Message Date
975bb74284 Passthrough mouse events
To not block mice that have keys, which end up grabbed due to generic
configurations that simply filter anything that responds to CAPSLOCK/ESC.

Fixes #15
2021-01-01 00:18:03 -03:00
8bfd57eda2 Formatting 2020-12-30 23:40:02 -03:00
186b887e7d Make multi device example more robust
The previous one won't work when devices reattach.
2020-12-30 23:16:17 -03:00
c738e8783a Formatting 2020-12-30 21:32:58 -03:00
a062311ffb Formatting 2020-12-30 21:19:31 -03:00
ac6bbe61c2 Update README 2020-12-29 09:26:35 -03:00
12dc2f75c7 Update README 2020-12-29 03:47:41 -03:00
3eaf2bddfe Update README 2020-12-29 03:46:32 -03:00
2 changed files with 38 additions and 40 deletions

View File

@ -67,29 +67,28 @@ options:
For more information about the [_Interception Tools_][interception-tools], check
the project's website.
## Mouse button support
## Mouse Support
After _Interception Tools_ 0.3, `caps2esc` can work with mouse clicks. An
After _Interception Tools_ 0.3.1, `caps2esc` can observe for mouse events. An
example configuration taken from my laptop:
```yaml
SHELL: [zsh, -c]
---
- JOB: mux -c caps2esc
- JOB:
- intercept -g $DEVNODE | mux -o caps2esc
- mux -i caps2esc | caps2esc | uinput -d $DEVNODE
- JOB: >
mux -c caps2esc;
mux -i caps2esc | caps2esc | uinput -d /dev/input/by-path/platform-i8042-serio-0-event-kbd
- JOB: intercept -g $DEVNODE | mux -o caps2esc
DEVICE:
LINK: /dev/input/by-path/platform-i8042-serio-0-event-kbd
- JOB:
- intercept $DEVNODE | mux -o caps2esc
- JOB: intercept $DEVNODE | mux -o caps2esc
DEVICE:
LINK: /dev/input/by-path/platform-i8042-serio-4-event-mouse
```
For more information on the topic, check the [_Interception Tools_
README][interception-tools] about usage of the `mux` tool and device specific
setups.
setups, and [this discussion][issue-9-note] for more examples.
## Installation
@ -156,4 +155,5 @@ Copyright © 2017 Francisco Lopes da Silva
[x]: https://www.x.org
[interception]: https://github.com/oblitum/Interception
[interception-tools]: https://gitlab.com/interception/linux/tools
[issue-9-note]: https://gitlab.com/interception/linux/plugins/caps2esc/-/issues/9#note_474942893
[key-repeat-fix]: https://github.com/oblitum/caps2esc/issues/1

View File

@ -21,17 +21,17 @@ void print_usage(FILE *stream, const char *program) {
"usage: %s [-h] [-m mode] [-t delay]\n"
"\n"
"options:\n"
" -h show this message and exit\n"
" -t delay used for key sequences (default: 20000 microseconds)\n"
" -m mode 0: default\n"
" - caps as esc/ctrl\n"
" - esc as caps\n"
" 1: minimal\n"
" - caps as esc/ctrl\n"
" 2: useful on 60%% layouts\n"
" - caps as esc/ctrl\n"
" - esc as grave accent\n"
" - grave accent as caps\n",
" -h show this message and exit\n"
" -t delay used for key sequences (default: 20000 microseconds)\n"
" -m mode 0: default\n"
" - caps as esc/ctrl\n"
" - esc as caps\n"
" 1: minimal\n"
" - caps as esc/ctrl\n"
" 2: useful on 60%% layouts\n"
" - caps as esc/ctrl\n"
" - esc as grave accent\n"
" - grave accent as caps\n",
program);
// clang-format on
}
@ -46,31 +46,29 @@ void write_event(const struct input_event *event) {
}
void write_event_with_mode(struct input_event *event, int mode) {
if (event->type == EV_REL || event->type == EV_ABS)
return;
switch (mode) {
case 0:
if (event->code == KEY_ESC)
event->code = KEY_CAPSLOCK;
break;
case 2:
switch (event->code) {
case KEY_ESC:
event->code = KEY_GRAVE;
break;
case KEY_GRAVE:
if (event->type == EV_KEY)
switch (mode) {
case 0:
if (event->code == KEY_ESC)
event->code = KEY_CAPSLOCK;
break;
}
break;
}
break;
case 2:
switch (event->code) {
case KEY_ESC:
event->code = KEY_GRAVE;
break;
case KEY_GRAVE:
event->code = KEY_CAPSLOCK;
break;
}
break;
}
write_event(event);
}
int main(int argc, char *argv[]) {
int opt, mode = 0, delay = 20000;
while ((opt = getopt(argc, argv, "ht:m:")) != -1) {
int mode = 0, delay = 20000;
for (int opt; (opt = getopt(argc, argv, "ht:m:")) != -1;) {
switch (opt) {
case 'h':
return print_usage(stdout, argv[0]), EXIT_SUCCESS;