aboutsummaryrefslogtreecommitdiff
path: root/book/src
diff options
context:
space:
mode:
authorPabloMansanet2021-06-17 11:08:05 +0000
committerGitHub2021-06-17 11:08:05 +0000
commitf7e00cf720f55ea82933ac6625b7511e9d38139e (patch)
treedc8278b34332eebea8b137d15cca9e5fb08b2b06 /book/src
parent47d2e3aefa5d31c19e7def624057a29c4bc7bc41 (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/src')
-rw-r--r--book/src/SUMMARY.md1
-rw-r--r--book/src/remapping.md48
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`