compose key patch. thx federico luna.
							parent
							
								
									6faedce53a
								
							
						
					
					
						commit
						3470e3af23
					
				
							
								
								
									
										14
									
								
								st.c
								
								
								
								
							
							
						
						
									
										14
									
								
								st.c
								
								
								
								
							|  | @ -107,6 +107,8 @@ typedef struct { | |||
| 	Colormap cmap; | ||||
| 	Window win; | ||||
| 	Pixmap buf; | ||||
| 	XIM xim; | ||||
| 	XIC xic; | ||||
| 	int scr; | ||||
| 	int w;	/* window width	 */ | ||||
| 	int h;	/* window height */ | ||||
|  | @ -1228,6 +1230,13 @@ xinit(void) { | |||
| 			| CWColormap, | ||||
| 			&attrs); | ||||
| 	xw.buf = XCreatePixmap(xw.dis, xw.win, xw.bufw, xw.bufh, XDefaultDepth(xw.dis, xw.scr)); | ||||
| 
 | ||||
| 
 | ||||
| 	/* input methods */ | ||||
| 	xw.xim = XOpenIM(xw.dis, NULL, NULL, NULL); | ||||
| 	xw.xic = XCreateIC(xw.xim, XNInputStyle, XIMPreeditNothing  | ||||
| 					   | XIMStatusNothing, XNClientWindow, xw.win,  | ||||
| 					   XNFocusWindow, xw.win, NULL); | ||||
| 	/* gc */ | ||||
| 	dc.gc = XCreateGC(xw.dis, xw.win, 0, NULL); | ||||
| 	 | ||||
|  | @ -1411,10 +1420,11 @@ kpress(XEvent *ev) { | |||
| 	int len; | ||||
| 	int meta; | ||||
| 	int shift; | ||||
| 	Status status; | ||||
| 
 | ||||
| 	meta = e->state & Mod1Mask; | ||||
| 	shift = e->state & ShiftMask; | ||||
| 	len = XLookupString(e, buf, sizeof(buf), &ksym, NULL); | ||||
| 	len = XmbLookupString(xw.xic, e, buf, sizeof(buf), &ksym, &status); | ||||
| 
 | ||||
| 	if((customkey = kmap(ksym))) | ||||
| 		ttywrite(customkey, strlen(customkey)); | ||||
|  | @ -1484,6 +1494,8 @@ run(void) { | |||
| 		} | ||||
| 		while(XPending(xw.dis)) { | ||||
| 			XNextEvent(xw.dis, &ev); | ||||
| 			if (XFilterEvent(&ev, xw.win)) | ||||
| 				continue; | ||||
| 			if(handler[ev.type]) | ||||
| 				(handler[ev.type])(&ev); | ||||
| 		} | ||||
|  |  | |||
		Reference in New Issue