tworking on old repo, merging recent changesets. - st - [fork] customized build… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit b032814e25ddb166b4621262be4b8a1a0a609e37 | |
parent 8e66b5cc16831583a1086f3ba9cd0eaa55f02230 | |
Author: Aurélien Aptel <[email protected]> | |
Date: Fri, 16 Sep 2011 18:24:13 +0200 | |
working on old repo, merging recent changesets. | |
Diffstat: | |
M config.def.h | 52 +++++++++++++++++------------… | |
M st.c | 9 +++++++-- | |
M st.info | 2 +- | |
3 files changed, 37 insertions(+), 26 deletions(-) | |
--- | |
diff --git a/config.def.h b/config.def.h | |
t@@ -25,34 +25,40 @@ static const char *colorname[] = { | |
"white" | |
}; | |
-/* Default colors (colorname index) */ | |
-/* foreground, background, cursor */ | |
+/* Default colors (colorname index) | |
+ foreground, background, cursor */ | |
#define DefaultFG 7 | |
#define DefaultBG 0 | |
#define DefaultCS 1 | |
-/* Special keys (change & recompile st.info accordingly) */ | |
-/* key, mask, output */ | |
+/* Special keys (change & recompile st.info accordingly) | |
+ Keep in mind that kpress() in st.c hardcodes some keys. | |
+ | |
+ Mask value: | |
+ * Use XK_ANY_MOD to match the key no matter modifiers state | |
+ * Use XK_NO_MOD to match the key alone (no modifiers) | |
+ | |
+ key, mask, output */ | |
static Key key[] = { | |
- { XK_BackSpace, 0, "\177" }, | |
- { XK_Insert, 0, "\033[2~" }, | |
- { XK_Delete, 0, "\033[3~" }, | |
- { XK_Home, 0, "\033[1~" }, | |
- { XK_End, 0, "\033[4~" }, | |
- { XK_Prior, 0, "\033[5~" }, | |
- { XK_Next, 0, "\033[6~" }, | |
- { XK_F1, 0, "\033OP" }, | |
- { XK_F2, 0, "\033OQ" }, | |
- { XK_F3, 0, "\033OR" }, | |
- { XK_F4, 0, "\033OS" }, | |
- { XK_F5, 0, "\033[15~" }, | |
- { XK_F6, 0, "\033[17~" }, | |
- { XK_F7, 0, "\033[18~" }, | |
- { XK_F8, 0, "\033[19~" }, | |
- { XK_F9, 0, "\033[20~" }, | |
- { XK_F10, 0, "\033[21~" }, | |
- { XK_F11, 0, "\033[23~" }, | |
- { XK_F12, 0, "\033[24~" }, | |
+ { XK_BackSpace, XK_NO_MOD, "\177" }, | |
+ { XK_Insert, XK_NO_MOD, "\033[2~" }, | |
+ { XK_Delete, XK_NO_MOD, "\033[3~" }, | |
+ { XK_Home, XK_NO_MOD, "\033[1~" }, | |
+ { XK_End, XK_NO_MOD, "\033[4~" }, | |
+ { XK_Prior, XK_NO_MOD, "\033[5~" }, | |
+ { XK_Next, XK_NO_MOD, "\033[6~" }, | |
+ { XK_F1, XK_NO_MOD, "\033OP" }, | |
+ { XK_F2, XK_NO_MOD, "\033OQ" }, | |
+ { XK_F3, XK_NO_MOD, "\033OR" }, | |
+ { XK_F4, XK_NO_MOD, "\033OS" }, | |
+ { XK_F5, XK_NO_MOD, "\033[15~" }, | |
+ { XK_F6, XK_NO_MOD, "\033[17~" }, | |
+ { XK_F7, XK_NO_MOD, "\033[18~" }, | |
+ { XK_F8, XK_NO_MOD, "\033[19~" }, | |
+ { XK_F9, XK_NO_MOD, "\033[20~" }, | |
+ { XK_F10, XK_NO_MOD, "\033[21~" }, | |
+ { XK_F11, XK_NO_MOD, "\033[23~" }, | |
+ { XK_F12, XK_NO_MOD, "\033[24~" }, | |
}; | |
/* Line drawing characters (sometime specific to each font...) */ | |
diff --git a/st.c b/st.c | |
t@@ -47,6 +47,8 @@ | |
#define ESC_ARG_SIZ 16 | |
#define DRAW_BUF_SIZ 1024 | |
#define UTF_SIZ 4 | |
+#define XK_NO_MOD UINT_MAX | |
+#define XK_ANY_MOD 0 | |
#define SERRNO strerror(errno) | |
#define MIN(a, b) ((a) < (b) ? (a) : (b)) | |
t@@ -1840,9 +1842,12 @@ focus(XEvent *ev) { | |
char* | |
kmap(KeySym k, unsigned int state) { | |
int i; | |
- for(i = 0; i < LEN(key); i++) | |
- if(key[i].k == k && (key[i].mask == 0 || key[i].mask & state)) | |
+ state &= ~Mod2Mask; | |
+ for(i = 0; i < LEN(key); i++) { | |
+ unsigned int mask = key[i].mask; | |
+ if(key[i].k == k && ((state & mask) == mask || (mask == XK_NO_… | |
return (char*)key[i].s; | |
+ } | |
return NULL; | |
} | |
diff --git a/st.info b/st.info | |
t@@ -79,7 +79,7 @@ st| simpleterm, | |
mir, | |
msgr, | |
ncv#3, | |
- op=\E[37;40m, | |
+ op=\E[39;49m, | |
pairs#64, | |
rc=\E8, | |
rev=\E[7m, |