--- a/tuikit/driver/curses.py Fri Mar 28 19:58:59 2014 +0100
+++ b/tuikit/driver/curses.py Wed Sep 03 19:08:21 2014 +0200
@@ -43,6 +43,7 @@
(0x44, 1, 'left' ),
(0x46, 1, 'end' ), # xterm
(0x48, 1, 'home' ), # xterm
+ (0x5a, 1, 'shift+tab' ), # xterm
(0x5b, 0x41, 1, 'f1' ), # linux
(0x5b, 0x42, 1, 'f2' ), # linux
(0x5b, 0x43, 1, 'f3' ), # linux
@@ -79,7 +80,7 @@
def __init__(self):
Driver.__init__(self)
- self._log = logging.getLogger('tuikit')
+ self._log = logging.getLogger(__name__)
self.stdscr = None
self.cursor = None
self.colors = {} # maps names to curses attributes
@@ -378,7 +379,7 @@
keyname = match[-1]
if match is None:
- self.log.debug('Unknown control sequence: %s',
+ self._log.debug('Unknown control sequence: %s',
','.join(['0x%x' % x for x in consumed]))
return [('keypress', 'Unknown', None, set())]
@@ -460,7 +461,7 @@
if len(codes) == 0:
# no match -> unknown code
seq = ','.join(['0x%x' % x for x in debug_seq])
- self.log.debug('Unknown control sequence: %s', seq)
+ self._log.debug('Unknown control sequence: %s', seq)
return [('keypress', 'Unknown:' + seq, None, set())]
elif len(codes) == 1:
# one match -> we got the winner
@@ -483,7 +484,7 @@
if len(matching_codes) == 0:
# no match -> unknown code
seq = ','.join(['0x%x' % x for x in debug_seq])
- self.log.debug('Unknown control sequence: %s', seq)
+ self._log.debug('Unknown control sequence: %s', seq)
return [('keypress', 'Unknown:' + seq, None, set())]
if len(matching_codes) > 1:
@@ -502,6 +503,14 @@
if mod_bits & 1<<bit:
mod_set.add(name)
+ # parse keynames in form "shift+tab"
+ if '+' in keyname:
+ parts = keyname.split('+')
+ for mod in parts[:-1]:
+ assert(mod in ('shift', 'alt', 'ctrl', 'meta'))
+ mod_set.add(mod)
+ keyname = parts[-1]
+
return [('keypress', keyname, None, mod_set)]