index.md (3089B)
1 keymodes 2 ======== 3 4 Description 5 ----------- 6 This patch provides key modes (like in Vim). There are two key modes: 7 8 1. `COMMANDMODE`: In this mode any key is grabbed and only the registered 9 command keys have any effect. 10 2. `INSERTMODE`: This is the normal key mode, in which the original key 11 bindings of dwm and applications are effective and text can be entered. 12 13 With key modes you can use any key binding for window management without 14 risking conflicts with existing key bindings in applications or have a 15 Vim-style dwm. 16 17 There are two different patches: 18 19 * keymodes: the minimal patch 20 * vim-keymodes: This patch tries to emulate the key bindings of Vim. Therefor 21 it includes additional functions, which depend on the 22 [flextile patch](../flextile/). 23 24 Configuration 25 ------------- 26 1. Download the favoured patch and apply it according to the 27 [general instructions](.). If you choose vim-keymodes you will have to apply 28 the [flextile patch](../flextile/) first. 29 2. Transfer the changes made by the patch in `config.def.h` to your `config.h`, 30 if needed; please see the patch file for details. 31 3. Verify the following lines in the aforementioned arrays; the key bindings 32 are set in reference to a german keyboard layout. The entries in the `cmdkeys` 33 array are defined like those in the original `keys` array of dwm and take 34 precedence over the key bindings defined in the `commands` array. The modifier 35 and keysym definitions in the `commands` array are themselves arrays with four 36 entries, whereas the first entry in the modifier array corresponds to the first 37 entry in the keysym array and so forth. You can find an example configuration 38 [here][dwm-keymodes-vim-config.h]. 39 40 static Key keys[] = { 41 /* modifier key function argument */ 42 { MODKEY, XK_Escape, setkeymode, {.ui = COMMANDMODE} }, 43 44 static Key cmdkeys[] = { 45 /* modifier keys function argument */ 46 { 0, XK_Escape, clearcmd, {0} }, 47 { ControlMask, XK_c, clearcmd, {0} }, 48 { 0, XK_i, setkeymode, {.ui = INSERTMODE} }, 49 }; 50 static Command commands[] = { 51 /* modifier (4 keys) keysyms (4 keys) function argument */ 52 ... 53 }; 54 55 Usage 56 ----- 57 With this patch dwm starts in `COMMANDMODE` and you can use the key bindings as 58 defined in the `commands` array in `config.h`. Press `Escape` or `CTRL+c` to 59 abort a command input and press `i` (in the default configuration) to enter 60 `INSERTMODE` and use dwm normally with the key bindings defined in the `keys` 61 array, navigate in applications and insert text. To get from `INSERTMODE` to 62 `COMMANDMODE` press `ALT+Escape` (in the default configuration). 63 64 Download 65 -------- 66 * [dwm-keymodes-5.8.2.diff](dwm-keymodes-5.8.2.diff) (20100611, joten (at) freenet (dot) de) 67 * [dwm-keymodes-vim-5.8.2.diff](dwm-keymodes-vim-5.8.2.diff) (20100611, joten (at) freenet (dot) de) 68 * [dwm-keymodes-20220422.diff](dwm-keymodes-20220422.diff) (michael@ndrix.org)