mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	In terminals with XT, turn on modifyOtherKeys=1 with the escape sequence
and handle the most common set. Pass them through if xterm-keys is on.
This commit is contained in:
		
							
								
								
									
										11
									
								
								key-string.c
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								key-string.c
									
									
									
									
									
								
							@@ -136,9 +136,10 @@ key_string_get_modifiers(const char **string)
 | 
				
			|||||||
int
 | 
					int
 | 
				
			||||||
key_string_lookup_string(const char *string)
 | 
					key_string_lookup_string(const char *string)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int	key, modifiers;
 | 
						static const char	*other = "!#()+,-.0123456789:;<=>?'\r\t";
 | 
				
			||||||
	u_short	u;
 | 
						int			 key, modifiers;
 | 
				
			||||||
	int	size;
 | 
						u_short			 u;
 | 
				
			||||||
 | 
						int			 size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Is this a hexadecimal value? */
 | 
						/* Is this a hexadecimal value? */
 | 
				
			||||||
	if (string[0] == '0' && string[1] == 'x') {
 | 
						if (string[0] == '0' && string[1] == 'x') {
 | 
				
			||||||
@@ -170,7 +171,7 @@ key_string_lookup_string(const char *string)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Convert the standard control keys. */
 | 
						/* Convert the standard control keys. */
 | 
				
			||||||
	if (key < KEYC_BASE && (modifiers & KEYC_CTRL)) {
 | 
						if (key < KEYC_BASE && (modifiers & KEYC_CTRL) && !strchr(other, key)) {
 | 
				
			||||||
		if (key >= 97 && key <= 122)
 | 
							if (key >= 97 && key <= 122)
 | 
				
			||||||
			key -= 96;
 | 
								key -= 96;
 | 
				
			||||||
		else if (key >= 64 && key <= 95)
 | 
							else if (key >= 64 && key <= 95)
 | 
				
			||||||
@@ -193,7 +194,7 @@ key_string_lookup_key(int key)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	static char	out[24];
 | 
						static char	out[24];
 | 
				
			||||||
	char		tmp[8];
 | 
						char		tmp[8];
 | 
				
			||||||
	u_int	   	i;
 | 
						u_int		i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	*out = '\0';
 | 
						*out = '\0';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										28
									
								
								xterm-keys.c
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								xterm-keys.c
									
									
									
									
									
								
							@@ -87,6 +87,34 @@ const struct xterm_keys_entry xterm_keys_table[] = {
 | 
				
			|||||||
	{ KEYC_NPAGE,	"\033[6;_~" },
 | 
						{ KEYC_NPAGE,	"\033[6;_~" },
 | 
				
			||||||
	{ KEYC_IC,	"\033[2;_~" },
 | 
						{ KEYC_IC,	"\033[2;_~" },
 | 
				
			||||||
	{ KEYC_DC,	"\033[3;_~" },
 | 
						{ KEYC_DC,	"\033[3;_~" },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{ '!',          "\033[27;_;33~" },
 | 
				
			||||||
 | 
						{ '#',		"\033[27;_;35~" },
 | 
				
			||||||
 | 
						{ '(',		"\033[27;_;40~" },
 | 
				
			||||||
 | 
						{ ')',		"\033[27;_;41~" },
 | 
				
			||||||
 | 
						{ '+',		"\033[27;_;43~" },
 | 
				
			||||||
 | 
						{ ',',		"\033[27;_;44~" },
 | 
				
			||||||
 | 
						{ '-',		"\033[27;_;45~" },
 | 
				
			||||||
 | 
						{ '.',		"\033[27;_;46~" },
 | 
				
			||||||
 | 
						{ '0',		"\033[27;_;48~" },
 | 
				
			||||||
 | 
						{ '1',		"\033[27;_;49~" },
 | 
				
			||||||
 | 
						{ '2',		"\033[27;_;50~" },
 | 
				
			||||||
 | 
						{ '3',		"\033[27;_;51~" },
 | 
				
			||||||
 | 
						{ '4',		"\033[27;_;52~" },
 | 
				
			||||||
 | 
						{ '5',		"\033[27;_;53~" },
 | 
				
			||||||
 | 
						{ '6',		"\033[27;_;54~" },
 | 
				
			||||||
 | 
						{ '7',		"\033[27;_;55~" },
 | 
				
			||||||
 | 
						{ '8',		"\033[27;_;56~" },
 | 
				
			||||||
 | 
						{ '9',		"\033[27;_;57~" },
 | 
				
			||||||
 | 
						{ ':',		"\033[27;_;58~" },
 | 
				
			||||||
 | 
						{ ';',		"\033[27;_;59~" },
 | 
				
			||||||
 | 
						{ '<',		"\033[27;_;60~" },
 | 
				
			||||||
 | 
						{ '=',		"\033[27;_;61~" },
 | 
				
			||||||
 | 
						{ '>',		"\033[27;_;62~" },
 | 
				
			||||||
 | 
						{ '?',		"\033[27;_;63~" },
 | 
				
			||||||
 | 
						{ '\'',		"\033[27;_;39~" },
 | 
				
			||||||
 | 
						{ '\r',		"\033[27;_;13~" },
 | 
				
			||||||
 | 
						{ '\t',		"\033[27;_;9~" },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user