diff options
author | PabloMansanet | 2021-06-17 11:08:05 +0000 |
---|---|---|
committer | GitHub | 2021-06-17 11:08:05 +0000 |
commit | f7e00cf720f55ea82933ac6625b7511e9d38139e (patch) | |
tree | dc8278b34332eebea8b137d15cca9e5fb08b2b06 /book | |
parent | 47d2e3aefa5d31c19e7def624057a29c4bc7bc41 (diff) |
Configurable keys 2 (Mapping keys to commands) (#268)
* Add convenience/clarity wrapper for Range initialization
* Add keycode parse and display methods
* Add remapping functions and tests
* Implement key remapping
* Add remapping book entry
* Use raw string literal for toml
* Add command constants
* Make command functions private
* Map directly to commands
* Match key parsing/displaying to Kakoune
* Formatting pass
* Update documentation
* Formatting
* Fix example in the book
* Refactor into single config file
* Formatting
* Refactor configuration and add keymap newtype wrappers
* Address first batch of PR comments
* Replace FromStr with custom deserialize
Diffstat (limited to 'book')
-rw-r--r-- | book/src/SUMMARY.md | 1 | ||||
-rw-r--r-- | book/src/remapping.md | 48 |
2 files changed, 49 insertions, 0 deletions
diff --git a/book/src/SUMMARY.md b/book/src/SUMMARY.md index 474c2e70..3ea1fb9a 100644 --- a/book/src/SUMMARY.md +++ b/book/src/SUMMARY.md @@ -4,4 +4,5 @@ - [Usage](./usage.md) - [Configuration](./configuration.md) - [Keymap](./keymap.md) + - [Key Remapping](./remapping.md) - [Hooks](./hooks.md) diff --git a/book/src/remapping.md b/book/src/remapping.md new file mode 100644 index 00000000..313ac72e --- /dev/null +++ b/book/src/remapping.md @@ -0,0 +1,48 @@ +# Key Remapping + +One-way key remapping is temporarily supported via a simple TOML configuration +file. (More powerful solutions such as rebinding via commands will be +available in the feature). + +To remap keys, write a `config.toml` file in your `helix` configuration +directory (default `~/.config/helix` in Linux systems) with a structure like +this: + +```toml +# At most one section each of 'keys.normal', 'keys.insert' and 'keys.select' +[keys.normal] +a = "move_char_left" # Maps the 'a' key to the move_char_left command +w = "move_line_up" # Maps the 'w' key move_line_up +C-S-esc = "select_line" # Maps Control-Shift-Escape to select_line + +[keys.insert] +A-x = "normal_mode" # Maps Alt-X to enter normal mode +``` + +Control, Shift and Alt modifiers are encoded respectively with the prefixes +`C-`, `S-` and `A-`. Special keys are encoded as follows: + +* Backspace => "backspace" +* Space => "space" +* Return/Enter => "ret" +* < => "lt" +* > => "gt" +* + => "plus" +* - => "minus" +* ; => "semicolon" +* % => "percent" +* Left => "left" +* Right => "right" +* Up => "up" +* Home => "home" +* End => "end" +* Page Up => "pageup" +* Page Down => "pagedown" +* Tab => "tab" +* Back Tab => "backtab" +* Delete => "del" +* Insert => "ins" +* Null => "null" +* Escape => "esc" + +Commands can be found in the source code at `../../helix-term/src/commands.rs` |