diff -ru screenkey-0.2/screenkey screenkey-0.2.1/screenkey --- screenkey-0.2/screenkey 2010-06-14 23:49:56.000000000 +0400 +++ screenkey-0.2.1/screenkey 2012-09-30 21:29:25.629700497 +0400 @@ -32,6 +32,10 @@ help="do not detach from the parent") parser.add_option("-d", "--debug", action="store_true", dest="debug", default=False, help="show debug information") + parser.add_option("-t", "--timeout", action="store_true", + dest="timeout", default=2.5, help="timeout in seconds (2.5 by default)") + parser.add_option("-m", "--mods-only", action="store_true", + dest="mods_only", default=None, help="Show ony keys with modifiers pressed") (options, args) = parser.parse_args() if options.debug: @@ -51,7 +55,7 @@ logging.basicConfig(level=logging.INFO) logger = logging.getLogger(APP_NAME) - s = Screenkey(logger=logger, nodetach=options.nodetach) + s = Screenkey(logger=logger, nodetach=options.nodetach, tmout=options.timeout, mods_only=options.mods_only) gtk.main() diff -ru screenkey-0.2/Screenkey/listenkdb.py screenkey-0.2.1/Screenkey/listenkdb.py --- screenkey-0.2/Screenkey/listenkdb.py 2010-06-14 23:49:56.000000000 +0400 +++ screenkey-0.2.1/Screenkey/listenkdb.py 2012-09-30 21:17:19.581839007 +0400 @@ -28,7 +28,7 @@ 'XK_Escape':u'Esc ', 'XK_Tab':u'\u21B9 ', 'XK_Return':u'\u23CE ', - 'XK_Space':u' ', + 'XK_Space':u'Space ', 'XK_Caps_Lock':u'Caps ', 'XK_F1':u'F1 ', 'XK_F2':u'F2 ', @@ -56,7 +56,7 @@ class ListenKbd(threading.Thread): - def __init__(self, label, logger, mode): + def __init__(self, label, logger, mode, m_only=True): threading.Thread.__init__(self) self.mode = mode self.logger = logger @@ -64,13 +64,14 @@ self.text = "" self.command = None self.shift = None + self.mods_only = m_only self.cmd_keys = { 'shift': False, 'ctrl': False, 'alt': False, 'capslock': False, 'meta': False, - 'super':False + 'super':False, } self.logger.debug("Thread created") @@ -148,6 +149,7 @@ if not key: return self.update_text(key) +# self.logger.warning("key: %s\n" % key) def key_normal_mode(self, event): key = '' @@ -248,7 +250,10 @@ if mod != '': key = "%s%s " % (mod, key) else: - key = "%s%s" % (mod, key) + if self.mods_only: + return + else: + key = "%s%s" % (mod, key) else: return diff -ru screenkey-0.2/Screenkey/screenkey.py screenkey-0.2.1/Screenkey/screenkey.py --- screenkey-0.2/Screenkey/screenkey.py 2010-06-14 23:49:56.000000000 +0400 +++ screenkey-0.2.1/Screenkey/screenkey.py 2012-09-30 21:27:00.676933338 +0400 @@ -56,7 +56,7 @@ STATE_FILE = os.path.join(glib.get_user_cache_dir(), 'screenkey.dat') - def __init__(self, logger, nodetach): + def __init__(self, logger, nodetach, tmout, mods_only): gtk.Window.__init__(self) self.timer = None @@ -65,12 +65,18 @@ self.options = self.load_state() if not self.options: self.options = { - 'timeout': 2.5, + 'timeout': 0.2, 'position': POS_BOTTOM, 'size': SIZE_MEDIUM, 'mode': MODE_NORMAL, + 'mods_only': False } + if tmout>0 : + self.options['timeout']=tmout + if mods_only!= None: + self.options['mods_only']=mods_only + if not nodetach: self.logger.debug("Detach from the parent.") self.drop_tty() @@ -96,15 +102,16 @@ self.label.show() self.add(self.label) - self.screen_width = gtk.gdk.screen_width() - self.screen_height = gtk.gdk.screen_height() + self.screen_width = gtk.gdk.screen_width() + self.screen_height = gtk.gdk.screen_height() self.set_window_size(self.options['size']) self.set_gravity(gtk.gdk.GRAVITY_CENTER) self.set_xy_position(self.options['position']) self.listenkbd = ListenKbd(self.label, logger=self.logger, - mode=self.options['mode']) + mode=self.options['mode'], + m_only=self.options['mods_only']) self.listenkbd.start()