From 032d2b711bb6a97214403db36ca314154c1bd9c9 Mon Sep 17 00:00:00 2001 From: Florent Le Coz Date: Thu, 6 Jun 2013 22:58:29 +0200 Subject: Add a M-k keyboard shortcut to escape the next keyboard shortcut fix #2227 --- src/keyboard.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/keyboard.py') diff --git a/src/keyboard.py b/src/keyboard.py index 240cc2c8..b7480c9c 100644 --- a/src/keyboard.py +++ b/src/keyboard.py @@ -134,6 +134,16 @@ def get_char_list_new(s): class Keyboard(object): def __init__(self): self.get_char_list = get_char_list_new + self.escape = False + + def escape_next_key(self): + """ + The next key pressed by the user should be escaped. e.g. if the user + presses ^N, keyboard.get_user_input() will return ["^", "N"] instead + of ["^N"]. This will display ^N in the input, instead of + interpreting the key binding. + """ + self.escape = True def get_user_input(self, s, timeout=1000): """ @@ -160,7 +170,13 @@ class Keyboard(object): if len(ret_list) != 1: if ret_list[-1] == '^M': ret_list.pop(-1) - return [char if char != '^M' else '^J' for char in ret_list] + ret_list = [char if char != '^M' else '^J' for char in ret_list] + if self.escape: + # Modify the first char of the list into its escaped version (i.e one or more char) + key = ret_list.pop(0) + for char in key[::-1]: + ret_list.insert(0, char) + self.escape = False return ret_list keyboard = Keyboard() -- cgit v1.2.3