Simplify Mod1 logic in kpress(), eliminating locals and a memcpy.
							parent
							
								
									7a4eefe87c
								
							
						
					
					
						commit
						02ae3ce6fd
					
				
							
								
								
									
										23
									
								
								st.c
								
								
								
								
							
							
						
						
									
										23
									
								
								st.c
								
								
								
								
							| 
						 | 
				
			
			@ -3563,8 +3563,8 @@ void
 | 
			
		|||
kpress(XEvent *ev) {
 | 
			
		||||
	XKeyEvent *e = &ev->xkey;
 | 
			
		||||
	KeySym ksym;
 | 
			
		||||
	char xstr[31], buf[32], *customkey, *cp = buf;
 | 
			
		||||
	int len, ret;
 | 
			
		||||
	char buf[32], *customkey;
 | 
			
		||||
	int len;
 | 
			
		||||
	long c;
 | 
			
		||||
	Status status;
 | 
			
		||||
	Shortcut *bp;
 | 
			
		||||
| 
						 | 
				
			
			@ -3572,7 +3572,7 @@ kpress(XEvent *ev) {
 | 
			
		|||
	if(IS_SET(MODE_KBDLOCK))
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	len = XmbLookupString(xw.xic, e, xstr, sizeof(xstr), &ksym, &status);
 | 
			
		||||
	len = XmbLookupString(xw.xic, e, buf, sizeof buf, &ksym, &status);
 | 
			
		||||
	e->state &= ~Mod2Mask;
 | 
			
		||||
	/* 1. shortcuts */
 | 
			
		||||
	for(bp = shortcuts; bp < shortcuts + LEN(shortcuts); bp++) {
 | 
			
		||||
| 
						 | 
				
			
			@ -3586,26 +3586,23 @@ kpress(XEvent *ev) {
 | 
			
		|||
	if((customkey = kmap(ksym, e->state))) {
 | 
			
		||||
		len = strlen(customkey);
 | 
			
		||||
		memcpy(buf, customkey, len);
 | 
			
		||||
	/* 3. hardcoded (overrides X lookup) */
 | 
			
		||||
	/* 3. composed string from input method */
 | 
			
		||||
	} else {
 | 
			
		||||
		if(len == 0)
 | 
			
		||||
			return;
 | 
			
		||||
 | 
			
		||||
		if(len == 1 && e->state & Mod1Mask) {
 | 
			
		||||
			if(IS_SET(MODE_8BIT)) {
 | 
			
		||||
				if(*xstr < 0177) {
 | 
			
		||||
					c = *xstr | 0x80;
 | 
			
		||||
					ret = utf8encode(&c, cp);
 | 
			
		||||
					cp += ret;
 | 
			
		||||
					len = 0;
 | 
			
		||||
				if(*buf < 0177) {
 | 
			
		||||
					c = *buf | 0x80;
 | 
			
		||||
					len = utf8encode(&c, buf);
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				*cp++ = '\033';
 | 
			
		||||
				buf[1] = buf[0];
 | 
			
		||||
				buf[0] = '\033';
 | 
			
		||||
				len = 2;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		memcpy(cp, xstr, len);
 | 
			
		||||
		len = cp - buf + len;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ttywrite(buf, len);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in New Issue