diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 1999-04-15 18:15:04 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 1999-04-15 18:15:04 +0000 |
commit | ba4f5e80ec9d7e145718e79fed6e57a852c86c12 (patch) | |
tree | ae29f2dfb81bb4e20b015610d85ce5f5a2d96eda /Src/Zle/zle_params.c | |
parent | 850fb2e7f94b4e0e9fbf3538ad9e3c44c9fed74b (diff) | |
download | zsh-ba4f5e80ec9d7e145718e79fed6e57a852c86c12.tar.gz zsh-ba4f5e80ec9d7e145718e79fed6e57a852c86c12.tar.xz zsh-ba4f5e80ec9d7e145718e79fed6e57a852c86c12.zip |
zsh-3.1.5-pws-8 zsh-3.1.5-pws-8
Diffstat (limited to 'Src/Zle/zle_params.c')
-rw-r--r-- | Src/Zle/zle_params.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Src/Zle/zle_params.c b/Src/Zle/zle_params.c index 74f905ef4..7e15d3d8b 100644 --- a/Src/Zle/zle_params.c +++ b/Src/Zle/zle_params.c @@ -65,6 +65,8 @@ static struct zleparam { zleunsetfn, NULL }, { "LASTWIDGET", PM_SCALAR | PM_READONLY, NULL, FN(get_lwidget), zleunsetfn, NULL }, + { "keys", PM_ARRAY | PM_READONLY, NULL, FN(get_keys), + zleunsetfn, NULL }, { NULL, 0, NULL, NULL, NULL, NULL } }; @@ -216,3 +218,29 @@ get_lwidget(Param pm) { return (lbindk ? lbindk->nam : ""); } + +/**/ +static char ** +get_keys(Param pm) +{ + char **r, **q, *p, *k, c; + + r = (char **) halloc((strlen(keybuf) + 1) * sizeof(char *)); + for (q = r, p = keybuf; (c = *p); q++, p++) { + k = *q = (char *) halloc(5); + if (c & 0x80) { + *k++ = 'M'; + *k++ = '-'; + c &= 0x7f; + } + if (c < 32 || c == 0x7f) { + *k++ = '^'; + c ^= 64; + } + *k++ = c; + *k = '\0'; + } + *q = NULL; + + return r; +} |