diff options
author | Aurélien Aptel <aurelien.aptel@gmail.com> | 2009-06-21 19:37:12 +0200 |
---|---|---|
committer | Aurélien Aptel <aurelien.aptel@gmail.com> | 2009-06-21 19:37:12 +0200 |
commit | 4d794b3479cc586de7796d9b060b2eb469a6500d (patch) | |
tree | 22b57459f038fa06dec509a9a04c6009697cbd5f | |
parent | 44d8c319a9fe51b011ba6a44779659aec45023a7 (diff) | |
download | st-4d794b3479cc586de7796d9b060b2eb469a6500d.tar.gz st-4d794b3479cc586de7796d9b060b2eb469a6500d.zip |
updated "key" to a lookup table.
-rw-r--r-- | config.h | 21 | ||||
-rw-r--r-- | st.c | 20 |
2 files changed, 13 insertions, 28 deletions
@@ -24,16 +24,15 @@ static char* colorname[] = { | |||
24 | #define DefaultCS 1 | 24 | #define DefaultCS 1 |
25 | #define BellCol DefaultFG | 25 | #define BellCol DefaultFG |
26 | 26 | ||
27 | |||
28 | /* special keys */ | 27 | /* special keys */ |
29 | static Key key[] = { | 28 | static char* key[] = { |
30 | { XK_Delete, "\033[3~" }, | 29 | [XK_Delete] = "\033[3~", |
31 | { XK_Home, "\033[1~" }, | 30 | [XK_Home] = "\033[1~", |
32 | { XK_End, "\033[4~" }, | 31 | [XK_End] = "\033[4~", |
33 | { XK_Prior, "\033[5~" }, | 32 | [XK_Prior] = "\033[5~", |
34 | { XK_Next, "\033[6~" }, | 33 | [XK_Next] = "\033[6~", |
35 | { XK_Left, "\033[D" }, | 34 | [XK_Left] = "\033[D", |
36 | { XK_Right, "\033[C" }, | 35 | [XK_Right] = "\033[C", |
37 | { XK_Up, "\033[A" }, | 36 | [XK_Up] = "\033[A", |
38 | { XK_Down, "\033[B" }, | 37 | [XK_Down] = "\033[B", |
39 | }; | 38 | }; |
@@ -40,12 +40,9 @@ enum { CRset=1, CRupdate=2 }; | |||
40 | enum { TMwrap=1, TMinsert=2 }; | 40 | enum { TMwrap=1, TMinsert=2 }; |
41 | enum { SCupdate, SCredraw }; | 41 | enum { SCupdate, SCredraw }; |
42 | 42 | ||
43 | typedef int Color; | 43 | #include "config.h" |
44 | 44 | ||
45 | typedef struct { | 45 | typedef int Color; |
46 | KeySym k; | ||
47 | char s[ESCSIZ]; | ||
48 | } Key; | ||
49 | 46 | ||
50 | typedef struct { | 47 | typedef struct { |
51 | char c; /* character code */ | 48 | char c; /* character code */ |
@@ -98,8 +95,6 @@ typedef struct { | |||
98 | int cw; /* char width */ | 95 | int cw; /* char width */ |
99 | } XWindow; | 96 | } XWindow; |
100 | 97 | ||
101 | #include "config.h" | ||
102 | |||
103 | /* Drawing Context */ | 98 | /* Drawing Context */ |
104 | typedef struct { | 99 | typedef struct { |
105 | unsigned long col[LEN(colorname)]; | 100 | unsigned long col[LEN(colorname)]; |
@@ -997,15 +992,6 @@ draw(int redraw_all) { | |||
997 | xcursor(CSdraw); | 992 | xcursor(CSdraw); |
998 | } | 993 | } |
999 | 994 | ||
1000 | char* | ||
1001 | kmap(KeySym k) { | ||
1002 | int i; | ||
1003 | for(i = 0; i < LEN(key); i++) | ||
1004 | if(key[i].k == k) | ||
1005 | return (char*)key[i].s; | ||
1006 | return NULL; | ||
1007 | } | ||
1008 | |||
1009 | void | 995 | void |
1010 | kpress(XKeyEvent *e) { | 996 | kpress(XKeyEvent *e) { |
1011 | KeySym ksym; | 997 | KeySym ksym; |
@@ -1018,7 +1004,7 @@ kpress(XKeyEvent *e) { | |||
1018 | meta = e->state & Mod1Mask; | 1004 | meta = e->state & Mod1Mask; |
1019 | shift = e->state & ShiftMask; | 1005 | shift = e->state & ShiftMask; |
1020 | len = XLookupString(e, buf, sizeof(buf), &ksym, NULL); | 1006 | len = XLookupString(e, buf, sizeof(buf), &ksym, NULL); |
1021 | if(skmap = kmap(ksym)) | 1007 | if(skmap = key[ksym]) |
1022 | ttywrite(skmap, strlen(skmap)); | 1008 | ttywrite(skmap, strlen(skmap)); |
1023 | else if(len > 0) { | 1009 | else if(len > 0) { |
1024 | buf[sizeof(buf)-1] = '\0'; | 1010 | buf[sizeof(buf)-1] = '\0'; |