Unified toggle keys, fixed ctrl, shit, alt logic

This commit is contained in:
itdominator 2022-08-30 17:17:35 -05:00
parent b04840b458
commit 0a2e258766
6 changed files with 62 additions and 105 deletions

View File

@ -13,6 +13,6 @@ function main() {
echo "Working Dir: " $(pwd) echo "Working Dir: " $(pwd)
source '/home/abaddon/Portable_Apps/py-venvs/gtk-apps-venv/venv/bin/activate' 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 "$@"; main "$@";

View File

@ -8,6 +8,7 @@ from utils.pyautogui_control import ControlMixin
# NOTE: Threads WILL NOT die with parent's destruction. # NOTE: Threads WILL NOT die with parent's destruction.
def threaded_wrapper(fn): def threaded_wrapper(fn):
def wrapper(*args, **kwargs): def wrapper(*args, **kwargs):
@ -37,9 +38,13 @@ class EndpointRegistry():
def get_endpoints(self): def get_endpoints(self):
return self._endpoints return self._endpoints
class Pyautogui_Controller(ControlMixin): class Pyautogui_Controller(ControlMixin):
def __init__(self): 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... # NOTE: Just reminding myself we can add to builtins two different ways...
# __builtins__.update({"event_system": Builtins()}) # __builtins__.update({"event_system": Builtins()})
builtins.app_name = "Mouse Keyboard" builtins.app_name = "Mouse Keyboard"

View File

@ -11,13 +11,12 @@ from .key import Key
############################ Left_Column Keys ############################ ############################## Left_Column Keys ##############################
class Symbols_Key(Key): class Symbols_Key(Key):
def __init__(self): def __init__(self):
super(Symbols_Key, self).__init__("Symbols", "Symbols") super(Symbols_Key, self).__init__("Symbols", "Symbols")
def setup_signals(self): def setup_signals(self):
self.connect("released", self._clicked) self.connect("released", self._clicked)
@ -28,28 +27,30 @@ class Symbols_Key(Key):
for key in row: for key in row:
key.emit("toggle-symbol-keys", ()) key.emit("toggle-symbol-keys", ())
class CAPS_Key(Gtk.ToggleButton): class CAPS_Key(Key):
def __init__(self): def __init__(self):
super(CAPS_Key, self).__init__("Caps", "Caps") super(CAPS_Key, self).__init__("Caps", "Caps")
self.set_vexpand(True) self.setup_styling()
self.setup_signals()
self.show_all() self.show_all()
def setup_styling(self):
self.set_vexpand(True)
def setup_signals(self): def setup_signals(self):
self.connect("clicked", self._clicked) self.connect("released", self._clicked)
def _clicked(self, widget = None): 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 row in key_columns.get_children():
for key in row: for key in row:
key.emit("toggle-caps", ()) key.emit("toggle-caps", ())
############################ Right_Column Keys ############################ ############################## Right_Column Keys ##############################
class Backspace_Key(Key): class Backspace_Key(Key):
def __init__(self): def __init__(self):
@ -64,20 +65,16 @@ class Backspace_Key(Key):
class Enter_Key(Key): class Enter_Key(Key):
def __init__(self): def __init__(self):
super(Enter_Key, self).__init__("Enter", "Enter") super(Enter_Key, self).__init__("Enter", "Enter")
self.setup_styling() self.setup_styling()
def setup_styling(self): def setup_styling(self):
self.set_vexpand(True) self.set_vexpand(True)
def setup_signals(self): def setup_signals(self):
self.connect("released", self._clicked) self.connect("released", self._do_press_special_key)
def _clicked(self, widget = None):
typwriter.press_special_keys(self.get_label())
############################ Bottom_Key_Row Keys ############################ ############################# Bottom_Key_Row Keys #############################
class AT_Key(Key): class AT_Key(Key):
def __init__(self): def __init__(self):
@ -96,7 +93,7 @@ class COM_Key(Key):
super(COM_Key, self).__init__(".com", ".com") super(COM_Key, self).__init__(".com", ".com")
############################ Controls_Column Keys ############################ ############################ Controls_Column Keys ############################
class Esc_Key(Key): class Esc_Key(Key):
def __init__(self): def __init__(self):
@ -105,7 +102,6 @@ class Esc_Key(Key):
def setup_signals(self): def setup_signals(self):
self.connect("released", self._do_press_special_key) self.connect("released", self._do_press_special_key)
class Del_Key(Key): class Del_Key(Key):
def __init__(self): def __init__(self):
super(Del_Key, self).__init__("Del", "Del") super(Del_Key, self).__init__("Del", "Del")
@ -113,7 +109,6 @@ class Del_Key(Key):
def setup_signals(self): def setup_signals(self):
self.connect("released", self._do_press_special_key) self.connect("released", self._do_press_special_key)
class Ctrl_Key(Key): class Ctrl_Key(Key):
def __init__(self): def __init__(self):
super(Ctrl_Key, self).__init__("Ctrl", "Ctrl") super(Ctrl_Key, self).__init__("Ctrl", "Ctrl")
@ -121,7 +116,6 @@ class Ctrl_Key(Key):
def setup_signals(self): def setup_signals(self):
self.connect("released", self._do_press_special_key) self.connect("released", self._do_press_special_key)
class Shift_Key(Key): class Shift_Key(Key):
def __init__(self): def __init__(self):
super(Shift_Key, self).__init__("Shift", "Shift") super(Shift_Key, self).__init__("Shift", "Shift")
@ -129,7 +123,6 @@ class Shift_Key(Key):
def setup_signals(self): def setup_signals(self):
self.connect("released", self._do_press_special_key) self.connect("released", self._do_press_special_key)
class Alt_Key(Key): class Alt_Key(Key):
def __init__(self): def __init__(self):
super(Alt_Key, self).__init__("Alt", "Alt") super(Alt_Key, self).__init__("Alt", "Alt")
@ -137,7 +130,6 @@ class Alt_Key(Key):
def setup_signals(self): def setup_signals(self):
self.connect("released", self._do_press_special_key) self.connect("released", self._do_press_special_key)
class PrtSc_Key(Key): class PrtSc_Key(Key):
def __init__(self): def __init__(self):
super(PrtSc_Key, self).__init__("PrtSc", "PrtSc") super(PrtSc_Key, self).__init__("PrtSc", "PrtSc")
@ -145,7 +137,6 @@ class PrtSc_Key(Key):
def setup_signals(self): def setup_signals(self):
self.connect("released", self._do_press_special_key) self.connect("released", self._do_press_special_key)
class Up_Key(Key): class Up_Key(Key):
def __init__(self): def __init__(self):
super(Up_Key, self).__init__("Up", "Up") super(Up_Key, self).__init__("Up", "Up")

View File

@ -8,7 +8,7 @@ from gi.repository import Gtk
# Application imports # Application imports
class Key(Gtk.Button): class Key(Gtk.Button or Gtk.ToggleButton):
def __init__(self, primary = "NULL", secondary = "NULL"): def __init__(self, primary = "NULL", secondary = "NULL"):
super(Key, self).__init__() super(Key, self).__init__()
@ -31,7 +31,12 @@ class Key(Gtk.Button):
typwriter.type(key) typwriter.type(key)
def _do_press_special_key(self, widget = None): 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): def toggle_symbol_keys(self, widget = None, eve = None):
self._is_symbol = not self._is_symbol self._is_symbol = not self._is_symbol

View File

@ -15,8 +15,15 @@ pyautogui.PAUSE = 0
class ControlMixin: class ControlMixin:
def type(self, key): def type(self, key):
if self.isCtrlOn or self.isShiftOn or self.isAltOn:
self.set_hotkeys()
pyautogui.typewrite(key) pyautogui.typewrite(key)
if self.isCtrlOn or self.isShiftOn or self.isAltOn:
self.unset_hotkeys()
def enter(self, widget = None, data = None): def enter(self, widget = None, data = None):
pyautogui.press("enter") pyautogui.press("enter")
@ -28,6 +35,16 @@ class ControlMixin:
pyautogui.press(key.lower()) pyautogui.press(key.lower())
return True 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): for i in range(1, 13):
fkey = 'F' + str(i) fkey = 'F' + str(i)
if key == fkey: if key == fkey:
@ -41,84 +58,18 @@ class ControlMixin:
pyautogui.typewrite(char) 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 unset_hotkeys(self):
# def typeString(self, widget = None, data = None): pyautogui.keyUp('ctrl')
# text = self.autoTypeField.get_text() pyautogui.keyUp('shiftleft')
# for char in text: pyautogui.keyUp('shiftright')
# self.do_insert(char) pyautogui.keyUp('alt')
#
# 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")

View File

@ -6,3 +6,7 @@
#popoutkeyboard { #popoutkeyboard {
background-color: rgba(0, 65, 125, 1); background-color: rgba(0, 65, 125, 1);
} */ } */
.toggled_bttn {
background-color: rgba(0, 65, 125, 1);
}