diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2016-02-22 04:25:34 -0500 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2016-02-22 04:25:34 -0500 |
commit | e71de26abade27b1c7b7ff0cf45d393d71b9a028 (patch) | |
tree | 6bedd829ee9f073f7940a2ed09ad6829318d71b5 /src/nvim/keymap.c | |
parent | 9403ce82bce1a2dcda4b01b10b2c01ee42bb4034 (diff) | |
parent | 99d4c8c29c4a9371c268cc20e4805709d86fb686 (diff) | |
download | rneovim-e71de26abade27b1c7b7ff0cf45d393d71b9a028.tar.gz rneovim-e71de26abade27b1c7b7ff0cf45d393d71b9a028.tar.bz2 rneovim-e71de26abade27b1c7b7ff0cf45d393d71b9a028.zip |
Merge pull request #4317 from justinmk/superkey
keymap: Support <D-...> (super/command key).
Diffstat (limited to 'src/nvim/keymap.c')
-rw-r--r-- | src/nvim/keymap.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/nvim/keymap.c b/src/nvim/keymap.c index 65c808eb06..6c75d8bdf4 100644 --- a/src/nvim/keymap.c +++ b/src/nvim/keymap.c @@ -1,8 +1,3 @@ -/* - * functions that use lookup tables for various things, generally to do with - * special key codes. - */ - #include <assert.h> #include <inttypes.h> #include <limits.h> @@ -39,7 +34,8 @@ static struct modmasktable { {MOD_MASK_MULTI_CLICK, MOD_MASK_2CLICK, (char_u)'2'}, {MOD_MASK_MULTI_CLICK, MOD_MASK_3CLICK, (char_u)'3'}, {MOD_MASK_MULTI_CLICK, MOD_MASK_4CLICK, (char_u)'4'}, - /* 'A' must be the last one */ + {MOD_MASK_CMD, MOD_MASK_CMD, (char_u)'D'}, + // 'A' must be the last one {MOD_MASK_ALT, MOD_MASK_ALT, (char_u)'A'}, {0, 0, NUL} }; @@ -658,9 +654,11 @@ static int extract_modifiers(int key, int *modp) { int modifiers = *modp; - if ((modifiers & MOD_MASK_SHIFT) && ASCII_ISALPHA(key)) { - key = TOUPPER_ASC(key); - modifiers &= ~MOD_MASK_SHIFT; + if (!(modifiers & MOD_MASK_CMD)) { // Command-key is special + if ((modifiers & MOD_MASK_SHIFT) && ASCII_ISALPHA(key)) { + key = TOUPPER_ASC(key); + modifiers &= ~MOD_MASK_SHIFT; + } } if ((modifiers & MOD_MASK_CTRL) && ((key >= '?' && key <= '_') || ASCII_ISALPHA(key))) { |