updated "key" to a lookup table.
This commit is contained in:
		
							parent
							
								
									44d8c319a9
								
							
						
					
					
						commit
						4d794b3479
					
				
							
								
								
									
										21
									
								
								config.h
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								config.h
									
									
									
									
									
								
							| @ -24,16 +24,15 @@ static char* colorname[] = { | |||||||
| #define DefaultCS 1 | #define DefaultCS 1 | ||||||
| #define BellCol   DefaultFG | #define BellCol   DefaultFG | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| /* special keys */ | /* special keys */ | ||||||
| static Key key[] = { | static char* key[] = { | ||||||
| 	{ XK_Delete, "\033[3~" }, | 	[XK_Delete] = "\033[3~", | ||||||
| 	{ XK_Home,   "\033[1~" }, | 	[XK_Home]   = "\033[1~", | ||||||
| 	{ XK_End,    "\033[4~" }, | 	[XK_End]    = "\033[4~", | ||||||
| 	{ XK_Prior,  "\033[5~" }, | 	[XK_Prior]  = "\033[5~", | ||||||
| 	{ XK_Next,   "\033[6~" }, | 	[XK_Next]   = "\033[6~", | ||||||
| 	{ XK_Left,   "\033[D" }, | 	[XK_Left]   = "\033[D", | ||||||
| 	{ XK_Right,  "\033[C" }, | 	[XK_Right]  = "\033[C", | ||||||
| 	{ XK_Up,     "\033[A" }, | 	[XK_Up]     = "\033[A", | ||||||
| 	{ XK_Down,   "\033[B" }, | 	[XK_Down]   = "\033[B", | ||||||
| }; | }; | ||||||
|  | |||||||
							
								
								
									
										20
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								st.c
									
									
									
									
									
								
							| @ -40,12 +40,9 @@ enum { CRset=1, CRupdate=2 }; | |||||||
| enum { TMwrap=1, TMinsert=2 }; | enum { TMwrap=1, TMinsert=2 }; | ||||||
| enum { SCupdate, SCredraw }; | enum { SCupdate, SCredraw }; | ||||||
| 
 | 
 | ||||||
| typedef int Color; | #include "config.h" | ||||||
| 
 | 
 | ||||||
| typedef struct { | typedef int Color; | ||||||
| 	KeySym k; |  | ||||||
| 	char s[ESCSIZ]; |  | ||||||
| } Key; |  | ||||||
| 
 | 
 | ||||||
| typedef struct { | typedef struct { | ||||||
| 	char c;     /* character code  */ | 	char c;     /* character code  */ | ||||||
| @ -98,8 +95,6 @@ typedef struct { | |||||||
| 	int cw; /* char width  */ | 	int cw; /* char width  */ | ||||||
| } XWindow;  | } XWindow;  | ||||||
| 
 | 
 | ||||||
| #include "config.h" |  | ||||||
| 
 |  | ||||||
| /* Drawing Context */ | /* Drawing Context */ | ||||||
| typedef struct { | typedef struct { | ||||||
| 	unsigned long col[LEN(colorname)]; | 	unsigned long col[LEN(colorname)]; | ||||||
| @ -997,15 +992,6 @@ draw(int redraw_all) { | |||||||
| 	xcursor(CSdraw); | 	xcursor(CSdraw); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| char* |  | ||||||
| kmap(KeySym k) { |  | ||||||
| 	int i; |  | ||||||
| 	for(i = 0; i < LEN(key); i++) |  | ||||||
| 		if(key[i].k == k) |  | ||||||
| 			return (char*)key[i].s; |  | ||||||
| 	return NULL; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void | void | ||||||
| kpress(XKeyEvent *e) { | kpress(XKeyEvent *e) { | ||||||
| 	KeySym ksym; | 	KeySym ksym; | ||||||
| @ -1018,7 +1004,7 @@ kpress(XKeyEvent *e) { | |||||||
| 	meta  = e->state & Mod1Mask; | 	meta  = e->state & Mod1Mask; | ||||||
| 	shift = e->state & ShiftMask; | 	shift = e->state & ShiftMask; | ||||||
| 	len = XLookupString(e, buf, sizeof(buf), &ksym, NULL); | 	len = XLookupString(e, buf, sizeof(buf), &ksym, NULL); | ||||||
| 	if(skmap = kmap(ksym)) | 	if(skmap = key[ksym]) | ||||||
| 		ttywrite(skmap, strlen(skmap)); | 		ttywrite(skmap, strlen(skmap)); | ||||||
| 	else if(len > 0) { | 	else if(len > 0) { | ||||||
| 		buf[sizeof(buf)-1] = '\0'; | 		buf[sizeof(buf)-1] = '\0'; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Aurélien Aptel
						Aurélien Aptel