mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:26:05 +00:00 
			
		
		
		
	Use the internal representation for UTF-8 keys instead of wchar_t and
drop some code only needed for that.
This commit is contained in:
		
							
								
								
									
										17
									
								
								key-string.c
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								key-string.c
									
									
									
									
									
								
							@@ -169,7 +169,7 @@ key_string_lookup_string(const char *string)
 | 
			
		||||
	struct utf8_data	 ud;
 | 
			
		||||
	u_int			 i;
 | 
			
		||||
	enum utf8_state		 more;
 | 
			
		||||
	wchar_t			 wc;
 | 
			
		||||
	utf8_char		 uc;
 | 
			
		||||
 | 
			
		||||
	/* Is this no key or any key? */
 | 
			
		||||
	if (strcasecmp(string, "None") == 0)
 | 
			
		||||
@@ -210,9 +210,9 @@ key_string_lookup_string(const char *string)
 | 
			
		||||
				more = utf8_append(&ud, (u_char)string[i]);
 | 
			
		||||
			if (more != UTF8_DONE)
 | 
			
		||||
				return (KEYC_UNKNOWN);
 | 
			
		||||
			if (utf8_combine(&ud, &wc) != UTF8_DONE)
 | 
			
		||||
			if (utf8_from_data(&ud, &uc) != UTF8_DONE)
 | 
			
		||||
				return (KEYC_UNKNOWN);
 | 
			
		||||
			return (wc|modifiers);
 | 
			
		||||
			return (uc|modifiers);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/* Otherwise look the key up in the table. */
 | 
			
		||||
@@ -349,12 +349,11 @@ key_string_lookup_key(key_code key, int with_flags)
 | 
			
		||||
 | 
			
		||||
	/* Is this a UTF-8 key? */
 | 
			
		||||
	if (key > 127 && key < KEYC_BASE) {
 | 
			
		||||
		if (utf8_split(key, &ud) == UTF8_DONE) {
 | 
			
		||||
			off = strlen(out);
 | 
			
		||||
			memcpy(out + off, ud.data, ud.size);
 | 
			
		||||
			out[off + ud.size] = '\0';
 | 
			
		||||
			goto out;
 | 
			
		||||
		}
 | 
			
		||||
		utf8_to_data(key, &ud);
 | 
			
		||||
		off = strlen(out);
 | 
			
		||||
		memcpy(out + off, ud.data, ud.size);
 | 
			
		||||
		out[off + ud.size] = '\0';
 | 
			
		||||
		goto out;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Invalid keys are errors. */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user