mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:44:18 +00:00 
			
		
		
		
	Mark keys sent by command and skip paste handling for them.
This commit is contained in:
		@@ -74,7 +74,7 @@ cmd_send_keys_inject_key(struct cmdq_item *item, struct cmdq_item *after,
 | 
				
			|||||||
		if (tc == NULL)
 | 
							if (tc == NULL)
 | 
				
			||||||
			return (item);
 | 
								return (item);
 | 
				
			||||||
		event = xmalloc(sizeof *event);
 | 
							event = xmalloc(sizeof *event);
 | 
				
			||||||
		event->key = key;
 | 
							event->key = key|KEYC_SENT;
 | 
				
			||||||
		memset(&event->m, 0, sizeof event->m);
 | 
							memset(&event->m, 0, sizeof event->m);
 | 
				
			||||||
		if (server_client_handle_key(tc, event) == 0)
 | 
							if (server_client_handle_key(tc, event) == 0)
 | 
				
			||||||
			free(event);
 | 
								free(event);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -462,6 +462,8 @@ out:
 | 
				
			|||||||
			strlcat(out, "B", sizeof out);
 | 
								strlcat(out, "B", sizeof out);
 | 
				
			||||||
		if (saved & KEYC_EXTENDED)
 | 
							if (saved & KEYC_EXTENDED)
 | 
				
			||||||
			strlcat(out, "E", sizeof out);
 | 
								strlcat(out, "E", sizeof out);
 | 
				
			||||||
 | 
							if (saved & KEYC_SENT)
 | 
				
			||||||
 | 
								strlcat(out, "S", sizeof out);
 | 
				
			||||||
		strlcat(out, "]", sizeof out);
 | 
							strlcat(out, "]", sizeof out);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return (out);
 | 
						return (out);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1890,7 +1890,9 @@ server_client_key_callback(struct cmdq_item *item, void *data)
 | 
				
			|||||||
		goto forward_key;
 | 
							goto forward_key;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Treat everything as a regular key when pasting is detected. */
 | 
						/* Treat everything as a regular key when pasting is detected. */
 | 
				
			||||||
	if (!KEYC_IS_MOUSE(key) && server_client_assume_paste(s))
 | 
						if (!KEYC_IS_MOUSE(key) &&
 | 
				
			||||||
 | 
						    (~key & KEYC_SENT) &&
 | 
				
			||||||
 | 
						    server_client_assume_paste(s))
 | 
				
			||||||
		goto forward_key;
 | 
							goto forward_key;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								tmux.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								tmux.h
									
									
									
									
									
								
							@@ -138,6 +138,7 @@ struct winlink;
 | 
				
			|||||||
#define KEYC_BUILD_MODIFIERS 0x10000000000000ULL
 | 
					#define KEYC_BUILD_MODIFIERS 0x10000000000000ULL
 | 
				
			||||||
#define KEYC_VI		     0x20000000000000ULL
 | 
					#define KEYC_VI		     0x20000000000000ULL
 | 
				
			||||||
#define KEYC_EXTENDED	     0x40000000000000ULL
 | 
					#define KEYC_EXTENDED	     0x40000000000000ULL
 | 
				
			||||||
 | 
					#define KEYC_SENT	     0x80000000000000ULL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Masks for key bits. */
 | 
					/* Masks for key bits. */
 | 
				
			||||||
#define KEYC_MASK_MODIFIERS  0x00f00000000000ULL
 | 
					#define KEYC_MASK_MODIFIERS  0x00f00000000000ULL
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user