adding repeater mode on mouse held down
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
import gi
|
||||
gi.require_version('Gtk', '3.0')
|
||||
from gi.repository import Gtk
|
||||
from gi.repository import GLib
|
||||
|
||||
# Application imports
|
||||
|
||||
@@ -12,6 +13,7 @@ class Key(Gtk.Button or Gtk.ToggleButton):
|
||||
def __init__(self, primary = "NULL", secondary = "NULL", iscontrol=False):
|
||||
super(Key, self).__init__()
|
||||
|
||||
self.timer_id = None
|
||||
self.iscontrol = iscontrol
|
||||
self._primary_symbol = primary
|
||||
self._secondary_symbol = secondary
|
||||
@@ -28,10 +30,19 @@ class Key(Gtk.Button or Gtk.ToggleButton):
|
||||
event_system.subscribe("toggle_symbol_keys", self.toggle_symbol_keys)
|
||||
|
||||
def setup_signals(self):
|
||||
self.connect("released", self._do_type)
|
||||
self.connect("button-press-event", self._do_press)
|
||||
self.connect("button-release-event", self._do_release)
|
||||
self.connect("toggle-emoji-keys", self.toggle_emoji_keys)
|
||||
|
||||
def _do_type(self, widget = None):
|
||||
def _do_press(self, widget = None, eve = None):
|
||||
if self.timer_id:
|
||||
GLib.source_remove(self.timer_id)
|
||||
self.timer_id = None
|
||||
|
||||
self._do_type()
|
||||
self.timer_id = GLib.timeout_add(200, self._do_type)
|
||||
|
||||
def _do_type(self, widget = None, eve = None):
|
||||
key = self.get_label().strip()
|
||||
if not self._is_emoji:
|
||||
typwriter.type(key)
|
||||
@@ -41,13 +52,32 @@ class Key(Gtk.Button or Gtk.ToggleButton):
|
||||
typwriter.type('v')
|
||||
typwriter.isCtrlOn = False
|
||||
|
||||
return True
|
||||
|
||||
def _do_release(self, widget = None, eve = None):
|
||||
if not self.timer_id: return
|
||||
GLib.source_remove(self.timer_id)
|
||||
self.timer_id = None
|
||||
|
||||
def _do_press_special_key(self, widget = None):
|
||||
self._do_type_special_key(widget)
|
||||
|
||||
def _do_press_special_key_repeater(self, widget = None, eve = None):
|
||||
if self.timer_id:
|
||||
GLib.source_remove(self.timer_id)
|
||||
self.timer_id = None
|
||||
|
||||
self._do_type_special_key()
|
||||
self.timer_id = GLib.timeout_add(200, self._do_type_special_key)
|
||||
|
||||
def _do_type_special_key(self, widget = None):
|
||||
key = self.get_label()
|
||||
if key in ["Ctrl", "Shift", "Alt"]:
|
||||
ctx = widget.get_style_context()
|
||||
ctx.remove_class("toggled_bttn") if ctx.has_class("toggled_bttn") else ctx.add_class("toggled_bttn")
|
||||
|
||||
typwriter.press_special_keys(key)
|
||||
return True
|
||||
|
||||
def toggle_symbol_keys(self, widget = None, eve = None):
|
||||
if not self.iscontrol:
|
||||
|
||||
Reference in New Issue
Block a user