Unified toggle keys, fixed ctrl, shit, alt logic
This commit is contained in:
parent
b04840b458
commit
0a2e258766
|
@ -13,6 +13,6 @@ function main() {
|
|||
echo "Working Dir: " $(pwd)
|
||||
|
||||
source '/home/abaddon/Portable_Apps/py-venvs/gtk-apps-venv/venv/bin/activate'
|
||||
python -m pudb $(pwd)/__main__.py; bash
|
||||
python -m pudb $(pwd)/src/__main__.py; bash
|
||||
}
|
||||
main "$@";
|
|
@ -8,6 +8,7 @@ from utils.pyautogui_control import ControlMixin
|
|||
|
||||
|
||||
|
||||
|
||||
# NOTE: Threads WILL NOT die with parent's destruction.
|
||||
def threaded_wrapper(fn):
|
||||
def wrapper(*args, **kwargs):
|
||||
|
@ -37,9 +38,13 @@ class EndpointRegistry():
|
|||
def get_endpoints(self):
|
||||
return self._endpoints
|
||||
|
||||
|
||||
class Pyautogui_Controller(ControlMixin):
|
||||
def __init__(self):
|
||||
pass
|
||||
self.isCtrlOn = False
|
||||
self.isShiftOn = False
|
||||
self.isAltOn = False
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -66,6 +71,7 @@ keys_json = {
|
|||
|
||||
|
||||
|
||||
|
||||
# NOTE: Just reminding myself we can add to builtins two different ways...
|
||||
# __builtins__.update({"event_system": Builtins()})
|
||||
builtins.app_name = "Mouse Keyboard"
|
||||
|
|
|
@ -11,13 +11,12 @@ from .key import Key
|
|||
|
||||
|
||||
|
||||
############################ Left_Column Keys ############################
|
||||
############################## Left_Column Keys ##############################
|
||||
|
||||
class Symbols_Key(Key):
|
||||
def __init__(self):
|
||||
super(Symbols_Key, self).__init__("Symbols", "Symbols")
|
||||
|
||||
|
||||
def setup_signals(self):
|
||||
self.connect("released", self._clicked)
|
||||
|
||||
|
@ -28,28 +27,30 @@ class Symbols_Key(Key):
|
|||
for key in row:
|
||||
key.emit("toggle-symbol-keys", ())
|
||||
|
||||
class CAPS_Key(Gtk.ToggleButton):
|
||||
class CAPS_Key(Key):
|
||||
def __init__(self):
|
||||
super(CAPS_Key, self).__init__("Caps", "Caps")
|
||||
|
||||
self.set_vexpand(True)
|
||||
|
||||
self.setup_signals()
|
||||
self.setup_styling()
|
||||
self.show_all()
|
||||
|
||||
def setup_styling(self):
|
||||
self.set_vexpand(True)
|
||||
|
||||
def setup_signals(self):
|
||||
self.connect("clicked", self._clicked)
|
||||
self.connect("released", self._clicked)
|
||||
|
||||
def _clicked(self, widget = None):
|
||||
key_columns = self.get_parent().get_parent().get_children()[1]
|
||||
ctx = widget.get_style_context()
|
||||
ctx.remove_class("toggled_bttn") if ctx.has_class("toggled_bttn") else ctx.add_class("toggled_bttn")
|
||||
|
||||
key_columns = self.get_parent().get_parent().get_children()[1]
|
||||
for row in key_columns.get_children():
|
||||
for key in row:
|
||||
key.emit("toggle-caps", ())
|
||||
|
||||
|
||||
############################ Right_Column Keys ############################
|
||||
############################## Right_Column Keys ##############################
|
||||
|
||||
class Backspace_Key(Key):
|
||||
def __init__(self):
|
||||
|
@ -64,20 +65,16 @@ class Backspace_Key(Key):
|
|||
class Enter_Key(Key):
|
||||
def __init__(self):
|
||||
super(Enter_Key, self).__init__("Enter", "Enter")
|
||||
|
||||
self.setup_styling()
|
||||
|
||||
def setup_styling(self):
|
||||
self.set_vexpand(True)
|
||||
|
||||
def setup_signals(self):
|
||||
self.connect("released", self._clicked)
|
||||
|
||||
def _clicked(self, widget = None):
|
||||
typwriter.press_special_keys(self.get_label())
|
||||
self.connect("released", self._do_press_special_key)
|
||||
|
||||
|
||||
############################ Bottom_Key_Row Keys ############################
|
||||
############################# Bottom_Key_Row Keys #############################
|
||||
|
||||
class AT_Key(Key):
|
||||
def __init__(self):
|
||||
|
@ -105,7 +102,6 @@ class Esc_Key(Key):
|
|||
def setup_signals(self):
|
||||
self.connect("released", self._do_press_special_key)
|
||||
|
||||
|
||||
class Del_Key(Key):
|
||||
def __init__(self):
|
||||
super(Del_Key, self).__init__("Del", "Del")
|
||||
|
@ -113,7 +109,6 @@ class Del_Key(Key):
|
|||
def setup_signals(self):
|
||||
self.connect("released", self._do_press_special_key)
|
||||
|
||||
|
||||
class Ctrl_Key(Key):
|
||||
def __init__(self):
|
||||
super(Ctrl_Key, self).__init__("Ctrl", "Ctrl")
|
||||
|
@ -121,7 +116,6 @@ class Ctrl_Key(Key):
|
|||
def setup_signals(self):
|
||||
self.connect("released", self._do_press_special_key)
|
||||
|
||||
|
||||
class Shift_Key(Key):
|
||||
def __init__(self):
|
||||
super(Shift_Key, self).__init__("Shift", "Shift")
|
||||
|
@ -129,7 +123,6 @@ class Shift_Key(Key):
|
|||
def setup_signals(self):
|
||||
self.connect("released", self._do_press_special_key)
|
||||
|
||||
|
||||
class Alt_Key(Key):
|
||||
def __init__(self):
|
||||
super(Alt_Key, self).__init__("Alt", "Alt")
|
||||
|
@ -137,7 +130,6 @@ class Alt_Key(Key):
|
|||
def setup_signals(self):
|
||||
self.connect("released", self._do_press_special_key)
|
||||
|
||||
|
||||
class PrtSc_Key(Key):
|
||||
def __init__(self):
|
||||
super(PrtSc_Key, self).__init__("PrtSc", "PrtSc")
|
||||
|
@ -145,7 +137,6 @@ class PrtSc_Key(Key):
|
|||
def setup_signals(self):
|
||||
self.connect("released", self._do_press_special_key)
|
||||
|
||||
|
||||
class Up_Key(Key):
|
||||
def __init__(self):
|
||||
super(Up_Key, self).__init__("Up", "Up")
|
||||
|
|
|
@ -8,7 +8,7 @@ from gi.repository import Gtk
|
|||
# Application imports
|
||||
|
||||
|
||||
class Key(Gtk.Button):
|
||||
class Key(Gtk.Button or Gtk.ToggleButton):
|
||||
def __init__(self, primary = "NULL", secondary = "NULL"):
|
||||
super(Key, self).__init__()
|
||||
|
||||
|
@ -31,7 +31,12 @@ class Key(Gtk.Button):
|
|||
typwriter.type(key)
|
||||
|
||||
def _do_press_special_key(self, widget = None):
|
||||
typwriter.press_special_keys(self.get_label())
|
||||
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)
|
||||
|
||||
def toggle_symbol_keys(self, widget = None, eve = None):
|
||||
self._is_symbol = not self._is_symbol
|
||||
|
|
|
@ -15,8 +15,15 @@ pyautogui.PAUSE = 0
|
|||
class ControlMixin:
|
||||
|
||||
def type(self, key):
|
||||
if self.isCtrlOn or self.isShiftOn or self.isAltOn:
|
||||
self.set_hotkeys()
|
||||
|
||||
pyautogui.typewrite(key)
|
||||
|
||||
if self.isCtrlOn or self.isShiftOn or self.isAltOn:
|
||||
self.unset_hotkeys()
|
||||
|
||||
|
||||
def enter(self, widget = None, data = None):
|
||||
pyautogui.press("enter")
|
||||
|
||||
|
@ -28,6 +35,16 @@ class ControlMixin:
|
|||
pyautogui.press(key.lower())
|
||||
return True
|
||||
|
||||
if key in ["Ctrl", "Shift", "Alt"]:
|
||||
if key == "Ctrl":
|
||||
self.isCtrlOn = not self.isCtrlOn
|
||||
if key == "Shift":
|
||||
self.isShiftOn = not self.isShiftOn
|
||||
if key == "Alt":
|
||||
self.isAltOn = not self.isAltOn
|
||||
|
||||
return True
|
||||
|
||||
for i in range(1, 13):
|
||||
fkey = 'F' + str(i)
|
||||
if key == fkey:
|
||||
|
@ -41,84 +58,18 @@ class ControlMixin:
|
|||
pyautogui.typewrite(char)
|
||||
|
||||
|
||||
def set_hotkeys(self):
|
||||
if self.isCtrlOn:
|
||||
pyautogui.keyDown('ctrl')
|
||||
if self.isShiftOn:
|
||||
pyautogui.keyDown('shiftleft')
|
||||
pyautogui.keyDown('shiftright')
|
||||
if self.isAltOn:
|
||||
pyautogui.keyDown('alt')
|
||||
|
||||
|
||||
|
||||
# def typeString(self, widget = None, data = None):
|
||||
# text = self.autoTypeField.get_text()
|
||||
# for char in text:
|
||||
# self.do_insert(char)
|
||||
#
|
||||
# def insert(self, widget = None, data = None, key = None):
|
||||
# if not key:
|
||||
# key = widget.get_label().strip()
|
||||
#
|
||||
# if self.is_keypress_type(key):
|
||||
# return
|
||||
#
|
||||
# if self.isCapsLockOn:
|
||||
# key = key.upper()
|
||||
#
|
||||
# self.do_insert(key)
|
||||
#
|
||||
#
|
||||
# def do_insert(self, key):
|
||||
# if self.isCtrlOn or self.isShiftOn or self.isAltOn:
|
||||
# self.set_hotkeys()
|
||||
#
|
||||
# pyautogui.typewrite(key)
|
||||
#
|
||||
# if self.isCtrlOn or self.isShiftOn or self.isAltOn:
|
||||
# self.unset_hotkeys()
|
||||
#
|
||||
#
|
||||
# def is_keypress_type(self, key):
|
||||
# if key in ["Esc", "Tab", "Space", "Del", "Up", "Down", "Left", "Right", "PrtSc"]:
|
||||
# pyautogui.press(key.lower())
|
||||
# return True
|
||||
#
|
||||
# for i in range(1, 13):
|
||||
# fkey = 'F' + str(i)
|
||||
# if key == fkey:
|
||||
# pyautogui.press(key.lower())
|
||||
# return True
|
||||
#
|
||||
# return False
|
||||
#
|
||||
#
|
||||
# def set_hotkeys(self):
|
||||
# if self.isCtrlOn:
|
||||
# pyautogui.keyDown('ctrl')
|
||||
# if self.isShiftOn:
|
||||
# pyautogui.keyDown('shiftleft')
|
||||
# pyautogui.keyDown('shiftright')
|
||||
# if self.isAltOn:
|
||||
# pyautogui.keyDown('alt')
|
||||
#
|
||||
#
|
||||
# def unset_hotkeys(self):
|
||||
# pyautogui.keyUp('ctrl')
|
||||
# pyautogui.keyUp('shiftleft')
|
||||
# pyautogui.keyUp('shiftright')
|
||||
# pyautogui.keyUp('alt')
|
||||
#
|
||||
#
|
||||
# def toggleCaps(self, widget, data=None):
|
||||
# self.isCapsLockOn = False if self.isCapsLockOn else True
|
||||
#
|
||||
# def tgglCtrl(self, widget, data=None):
|
||||
# self.isCtrlOn = False if self.isCtrlOn else True
|
||||
#
|
||||
# def tgglShift(self, widget, data=None):
|
||||
# self.isShiftOn = False if self.isShiftOn else True
|
||||
#
|
||||
# def tgglAlt(self, widget, data=None):
|
||||
# self.isAltOn = False if self.isAltOn else True
|
||||
#
|
||||
#
|
||||
# def enter(self, widget, data=None):
|
||||
# pyautogui.press("enter")
|
||||
#
|
||||
#
|
||||
# def backspace(self, widget, data=None):
|
||||
# pyautogui.press("backspace")
|
||||
def unset_hotkeys(self):
|
||||
pyautogui.keyUp('ctrl')
|
||||
pyautogui.keyUp('shiftleft')
|
||||
pyautogui.keyUp('shiftright')
|
||||
pyautogui.keyUp('alt')
|
||||
|
|
|
@ -6,3 +6,7 @@
|
|||
#popoutkeyboard {
|
||||
background-color: rgba(0, 65, 125, 1);
|
||||
} */
|
||||
|
||||
.toggled_bttn {
|
||||
background-color: rgba(0, 65, 125, 1);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue