diff options
author | Přemysl Janouch <p.janouch@gmail.com> | 2016-07-24 00:41:49 +0200 |
---|---|---|
committer | Přemysl Janouch <p.janouch@gmail.com> | 2016-07-24 00:41:49 +0200 |
commit | 9ec09b90c9bb023bb69a6b703ce4df40d397f5e6 (patch) | |
tree | 1ebb4d9759e3307eeba0f7c2b7c245d905d751bf | |
parent | 9b7c801c370b69bec13b7d737212cab3d70b0f11 (diff) | |
download | termo-9ec09b90c9bb023bb69a6b703ce4df40d397f5e6.tar.gz termo-9ec09b90c9bb023bb69a6b703ce4df40d397f5e6.tar.xz termo-9ec09b90c9bb023bb69a6b703ce4df40d397f5e6.zip |
Make ASCII NUL imply Ctrl-Space instead of C-@
Seems mostly arbitrary.
-rw-r--r-- | termo.c | 10 | ||||
-rw-r--r-- | tests/02getkey.c | 11 |
2 files changed, 19 insertions, 2 deletions
@@ -778,7 +778,15 @@ parse_multibyte (termo_t *tk, const unsigned char *bytes, size_t len, static void emit_codepoint (termo_t *tk, uint32_t codepoint, termo_key_t *key) { - if (codepoint < 0x20) + if (codepoint == 0) + { + // ASCII NUL = Ctrl-Space as well as Ctrl-@ but let's prefer + // the former to follow the behaviour of libtermkey + key->type = TERMO_TYPE_KEYSYM; + key->code.sym = TERMO_SYM_SPACE; + key->modifiers = TERMO_KEYMOD_CTRL; + } + else if (codepoint < 0x20) { // C0 range key->code.codepoint = 0; diff --git a/tests/02getkey.c b/tests/02getkey.c index b36eb9e..a5443e2 100644 --- a/tests/02getkey.c +++ b/tests/02getkey.c @@ -7,7 +7,7 @@ main (int argc, char *argv[]) termo_t *tk; termo_key_t key; - plan_tests (38); + plan_tests (42); tk = termo_new_abstract ("vt100", NULL, 0); @@ -86,6 +86,15 @@ main (int argc, char *argv[]) is_int (key.modifiers, TERMO_KEYMOD_CTRL, "key.modifiers after Ctrl-Escape"); + termo_push_bytes (tk, "\0", 1); + + is_int (termo_getkey (tk, &key), TERMO_RES_KEY, + "getkey yields RES_KEY after Ctrl-Space"); + + is_int (key.type, TERMO_TYPE_KEY, "key.type after Ctrl-Space"); + is_int (key.code.codepoint, ' ', "key.code.codepoint after Ctrl-Space"); + is_int (key.modifiers, TERMO_KEYMOD_CTRL, "key.modifiers after Ctrl-Space"); + // Escape key in various amounts termo_push_bytes (tk, "\x1b\x1b", 2); |