Notes/src/Python/Scripts/keyboard-mouse/keyboard-as-mouse.py

84 lines
3.5 KiB
Python

##
## Install these needed libraries if script doesn't work.
##
## sudo pip3 install python3_xlib
## sudo pip3 install keyboard pyautogui
##
##
import time
import keyboard, pyautogui
pyautogui.FAILSAFE = False # If we hit corner, that's ok
# Let piautogui make updates as quick as it can...
pyautogui.MINIMUM_DURATION = 0
pyautogui.PAUSE = 0
class Main:
def __init__(self):
self.isAcceptingMovement = False
self.sleepTime = 0.009
self.speed = 1;
self.modRate = 0; ## This controls mouse move speed by increasing it the longer the key combo is held.
self.keyCombo1 = "ctrl"
self.keyCombo2 = "shift"
self.keyCombo3 = 'end'
self.exitKey = 'c' ## Key combo exit key.
self.startRun()
def startRun(self):
print("Available Keys Are:")
print(pyautogui.KEYBOARD_KEYS)
print("\n\nTo Toggle Detection Press:")
print(self.keyCombo1 + " + " + self.keyCombo2 + " + " + self.keyCombo3)
print("Detection State: " + str(self.isAcceptingMovement))
while True:
try:
if keyboard.is_pressed(self.keyCombo1) and keyboard.is_pressed(self.keyCombo2):
self.checkDetectionState()
if self.isAcceptingMovement:
if keyboard.is_pressed('up') and keyboard.is_pressed('left'):
pyautogui.moveRel( (-self.speed - self.modRate), (-self.speed - self.modRate) );
elif keyboard.is_pressed('up') and keyboard.is_pressed('right'):
pyautogui.moveRel( (self.speed + self.modRate), (-self.speed - self.modRate) );
elif keyboard.is_pressed('down') and keyboard.is_pressed('left'):
pyautogui.moveRel( (-self.speed - self.modRate), (self.speed + self.modRate) );
elif keyboard.is_pressed('down') and keyboard.is_pressed('right'):
pyautogui.moveRel( (self.speed + self.modRate), (self.speed + self.modRate));
elif keyboard.is_pressed('up'):
pyautogui.moveRel(0, -(self.speed + self.modRate));
elif keyboard.is_pressed('down'):
pyautogui.moveRel(0, (self.speed + self.modRate));
elif keyboard.is_pressed('left'):
pyautogui.moveRel( -(self.speed + self.modRate), 0);
elif keyboard.is_pressed('right'):
pyautogui.moveRel( (self.speed + self.modRate), 0);
else:
# Allows us to reset to 0 after sleeping and incramenting from below
self.modRate = -1
time.sleep(self.sleepTime)
self.modRate += 0.2
if keyboard.is_pressed('enter'):
pyautogui.click();
elif keyboard.is_pressed(self.exitKey):
break;
except Exception as e:
print( repr(e) )
break;
def checkDetectionState(self):
if keyboard.is_pressed(self.keyCombo3):
self.isAcceptingMovement = not self.isAcceptingMovement
print("Detection State: " + str(self.isAcceptingMovement))
time.sleep(1)
## Start the program and loop untill key combo for quit is pressed
if __name__ == '__main__':
main = Main()