After having had issues with the original implementation in the sense that the modifier key usage didn't work if one typed too fast, I decided to look into the bug and got interested in the code base. I decided to fork it to learn more about rust and solve the issue for myself. But since I changed the code too much I gave up on making it possible to merge back in.
The main difference is the change and simplification of the [[remap]]
type (and config). It now only takes a single in and out key (instead of lists), but instead introduces a list of modifiers that must be set for the conversion to happen. I think this is what you would like if you like me see evremap as a replacement for writing custom but small keymappings.
Additional changes:
- Restructured code base (modularity, unit tests, etc.)
- Removed DualRole
The original code is at: https://github.com/wez/evremap
# Random cargo commands
cargo test
cargo build
cargo build --release
# Running the tool
sudo ~/repos/evremap/target/release/evremap remap ~/dotfiles/swedish_colemak/arash_swedish_colemak.toml
# Debugging keys and stuff
sudo ~/repos/evremap/target/release/evremap list-devices
sudo ~/repos/evremap/target/release/evremap debug-events --device-name='AT Translated Set 2 keyboard'
You must first build from source to get the binary. Basically cargo build --release
.
cargo build --release
# Copy over files with names making clear it's a modified evremap.
sudo cp ~/repos/evremap/evremap.service /usr/lib/systemd/system/arash_evremap.service
sudo cp ~/repos/evremap/target/release/evremap /usr/local/bin/arash_evremap
sudo cp ~/dotfiles/swedish_colemak/arash_swedish_colemak.toml /etc/evremap.toml
# And now do the systemd restart and setup.
sudo systemctl daemon-reload
sudo systemctl enable arash_evremap.service
sudo systemctl start arash_evremap.service