feat: generic key definition (#1)

* ivimp-1: refactor for generic handling of keys

* Get CAPS and SPACE code as close to each other as possible.
  * Remove `caps_is_esc` and use `caps_tapped_should_emit` instead
  * Use `continue` keyword after successfully handling the event (work towards daisy chaining)

* wip: started moving to classes

* feat: Now additional mappings can be easily added

* Refactored to OOP C++ classes
* Each key handles its own processing.. these types available:
  * tap and hold for layer mappings
  * tap and hold for modifier key

* feat: extend to cover mouse buttons (not impl)

* fix: combos need to be emitted with structs

* fix: combos emitting doesn't work with typedef Cpp-like constructs
* fix: enable adding other layer keys except KEY_SPACE (bug on checking `input->code == KEY_SPACE` hardcoded)
* feat: helper function for building events
* chore: rename `event` to `Event`, cleanup cerr output

* fix: layer+modifier+input

* you can try it out in firefox in input box, try space+caps+h/l to move around words - if ctrl+h for history is emitted, it's a fail

* chore: Update README.md - configurability
This commit is contained in:
Nikola Marić
2021-09-23 16:47:58 +02:00
committed by GitHub
parent 0b47a7cb17
commit f4aa0fa923
3 changed files with 374 additions and 272 deletions

View File

@@ -1,4 +1,4 @@
CXXFLAGS += -std=c++20 -D_POSIX_C_SOURCE=199309L -O3 -g -Wall -Wextra -Werror -Wno-type-limits
CXXFLAGS += -std=c++20 -D_POSIX_C_SOURCE=199309L -O3 -g -Wall -Wextra -Werror -Wno-unused-parameter -Wno-type-limits
TIMEOUT ?= 10
INSTALL_FILE := /opt/interception/interception-vimproved