diff options
author | Florent Le Coz <louiz@louiz.org> | 2013-06-06 22:58:29 +0200 |
---|---|---|
committer | Florent Le Coz <louiz@louiz.org> | 2013-06-06 22:58:29 +0200 |
commit | 032d2b711bb6a97214403db36ca314154c1bd9c9 (patch) | |
tree | 66f81fac87f69f93d97037c0ecac1c0a20b0bdfc /src/keyboard.py | |
parent | 834546ac7752e3e5c65d31e900489df2c85ce298 (diff) | |
download | poezio-032d2b711bb6a97214403db36ca314154c1bd9c9.tar.gz poezio-032d2b711bb6a97214403db36ca314154c1bd9c9.tar.bz2 poezio-032d2b711bb6a97214403db36ca314154c1bd9c9.tar.xz poezio-032d2b711bb6a97214403db36ca314154c1bd9c9.zip |
Add a M-k keyboard shortcut to escape the next keyboard shortcut
fix #2227
Diffstat (limited to 'src/keyboard.py')
-rw-r--r-- | src/keyboard.py | 18 |
1 files changed, 17 insertions, 1 deletions
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() |