summaryrefslogtreecommitdiff
path: root/src/keyboard.py
diff options
context:
space:
mode:
authorFlorent Le Coz <louiz@louiz.org>2013-06-06 22:58:29 +0200
committerFlorent Le Coz <louiz@louiz.org>2013-06-06 22:58:29 +0200
commit032d2b711bb6a97214403db36ca314154c1bd9c9 (patch)
tree66f81fac87f69f93d97037c0ecac1c0a20b0bdfc /src/keyboard.py
parent834546ac7752e3e5c65d31e900489df2c85ce298 (diff)
downloadpoezio-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.py18
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()