def loadJSON(): # Check the file and load it if os.path.isfile(args.words_file) is False: print('ERR: Words file not exist!') exit() if args.words_file2 is not None: if os.path.isfile(args.words_file2) is not False: words = open_typo_file(args.words_file) words2 = open_typo_file(args.words_file2) words.update(words2) # register the status of file in these moment files[args.words_file] = os.stat(args.words_file) files[args.words_file2] = os.stat(args.words_file2) else: words = open_typo_file(args.words_file) # register the status of file in these moment files[args.words_file] = os.stat(args.words_file) print(str(len(words)) + " words loaded") for (correct, wrongs) in words.items(): for wrong in wrongs: if wrong != '': print('Loaded ' + wrong + ' with as: ' + correct) keyboard.add_abbreviation(wrong, ' ' + correct + ' ') keyboard.add_word_listener(wrong, mispell_callback)
def test_add_word_listener_suffix_success(self): queue = keyboard._queue.Queue() def free(): queue.put(1) keyboard.add_word_listener('abc', free, match_suffix=True) self.do(du_a+du_a+du_b+du_c+du_space) self.assertTrue(queue.get(timeout=0.5))
def start(self): keyboard.on_press(self.receive_message) keyboard.add_word_listener(Config.NUMPAD_KILLSIGNAL, self.stop_signal, triggers=['0'], match_suffix=True, timeout=2)
def test_add_word_listener_suffix_fail(self): queue = keyboard._queue.Queue() def free(): queue.put(1) keyboard.add_word_listener('abc', free) self.do(du_a+du_a+du_b+du_c) with self.assertRaises(keyboard._queue.Empty): queue.get(timeout=0.01)
def test_add_word_listener_timeout_fail(self): queue = keyboard._queue.Queue() def free(): queue.put(1) keyboard.add_word_listener('abc', free, timeout=1) self.do(du_a+du_b+du_c+[make_event(KEY_DOWN, name='space', time=2)]) with self.assertRaises(keyboard._queue.Empty): queue.get(timeout=0.01)
def test_add_word_listener_remove(self): queue = keyboard._queue.Queue() def free(): queue.put(1) keyboard.add_word_listener('abc', free) keyboard.remove_word_listener('abc') self.do(du_a+du_b+du_c+du_space) with self.assertRaises(keyboard._queue.Empty): queue.get(timeout=0.01)
def test_add_word_listener_suffix_success(self): queue = keyboard._queue.Queue() def free(): queue.put(1) keyboard.add_word_listener('abc', free, match_suffix=True) self.do(du_a + du_a + du_b + du_c + du_space) self.assertTrue(queue.get(timeout=0.5))
def test_add_word_listener_suffix_fail(self): queue = keyboard._queue.Queue() def free(): queue.put(1) keyboard.add_word_listener('abc', free) self.do(du_a + du_a + du_b + du_c) with self.assertRaises(keyboard._queue.Empty): queue.get(timeout=0.01)
def test_add_word_listener_timeout_fail(self): queue = keyboard._queue.Queue() def free(): queue.put(1) keyboard.add_word_listener('abc', free, timeout=1) self.do(du_a + du_b + du_c + [make_event(KEY_DOWN, name='space', time=2)]) with self.assertRaises(keyboard._queue.Empty): queue.get(timeout=0.01)
def test_add_word_listener_remove(self): queue = keyboard._queue.Queue() def free(): queue.put(1) keyboard.add_word_listener('abc', free) keyboard.remove_word_listener('abc') self.do(du_a + du_b + du_c + du_space) with self.assertRaises(keyboard._queue.Empty): queue.get(timeout=0.01)
def test_word_listener_edge_cases(self): self.triggered = False def on_triggered(): self.triggered = True handler = keyboard.add_word_listener('bird', on_triggered, triggers=['enter']) self.click('b') self.click('i') self.click('r') self.click('d') self.click('space') # We overwrote the triggers to remove space. Should not trigger. self.assertFalse(self.triggered) self.click('b') self.click('i') self.click('r') self.click('d') self.assertFalse(self.triggered) self.click('enter') self.assertTrue(self.triggered) with self.assertRaises(ValueError): # Must pass handler returned by function, not passed callback. keyboard.remove_word_listener(on_triggered) with self.assertRaises(ValueError): keyboard.remove_word_listener('birb') keyboard.remove_word_listener(handler) self.triggered = False # Timeout of 0 should mean "no timeout". keyboard.add_word_listener('bird', on_triggered, timeout=0) self.click('b') self.click('i') self.click('r') self.click('d') self.assertFalse(self.triggered) self.click('space') self.assertTrue(self.triggered) keyboard.remove_word_listener('bird') self.triggered = False keyboard.add_word_listener('bird', on_triggered, timeout=0.01) self.click('b') self.click('i') self.click('r') time.sleep(0.03) self.click('d') self.assertFalse(self.triggered) self.click('space') # Should have timed out. self.assertFalse(self.triggered) keyboard.remove_word_listener('bird')
def test_word_listener_edge_cases(self): self.triggered = False def on_triggered(): self.triggered = True handler = keyboard.add_word_listener("bird", on_triggered, triggers=["enter"]) self.click("b") self.click("i") self.click("r") self.click("d") self.click("space") # We overwrote the triggers to remove space. Should not trigger. self.assertFalse(self.triggered) self.click("b") self.click("i") self.click("r") self.click("d") self.assertFalse(self.triggered) self.click("enter") self.assertTrue(self.triggered) with self.assertRaises(ValueError): # Must pass handler returned by function, not passed callback. keyboard.remove_word_listener(on_triggered) with self.assertRaises(ValueError): keyboard.remove_word_listener("birb") keyboard.remove_word_listener(handler) self.triggered = False # Timeout of 0 should mean "no timeout". keyboard.add_word_listener("bird", on_triggered, timeout=0) self.click("b") self.click("i") self.click("r") self.click("d") self.assertFalse(self.triggered) self.click("space") self.assertTrue(self.triggered) keyboard.remove_word_listener("bird") self.triggered = False keyboard.add_word_listener("bird", on_triggered, timeout=0.01) self.click("b") self.click("i") self.click("r") time.sleep(0.03) self.click("d") self.assertFalse(self.triggered) self.click("space") # Should have timed out. self.assertFalse(self.triggered) keyboard.remove_word_listener("bird")
def listen_for_key(key: str, callback: Callable, timeout=0.1) -> None: """ Listen for the specified key being pressed and space .. invokes the given callback when that happens. e.g. press "p" plus space Nothing but key + space must have been pressed within the interval to invoke callback. :param key: the key to listen for (can be a sequence of characters) :param callback: the callback to invoke on key combo press :param timeout: the timespan you have to press the keys + space contiguously """ # key + space must be pressed within 0.1 second interval keyboard.add_word_listener(key, callback, timeout=timeout)
def createhotkey(key, text): """creates hotkey from key and text""" replacement = '\b' * (len(key) + 1) + text.rstrip() callback = lambda: XDOTOOL.type(replacement) return keyboard.add_word_listener(key, callback, match_suffix=False, timeout=.5)
def test_word_listener_normal(self): keyboard.add_word_listener("bird", self.fail) self.click("b") self.click("i") self.click("r") self.click("d") self.click("s") self.click("space") with self.assertRaises(ValueError): keyboard.add_word_listener("bird", self.fail) keyboard.remove_word_listener("bird") self.triggered = False def on_triggered(): self.triggered = True keyboard.add_word_listener("bird", on_triggered) self.click("b") self.click("i") self.click("r") self.click("d") self.assertFalse(self.triggered) self.click("space") self.assertTrue(self.triggered) keyboard.remove_word_listener("bird") self.triggered = False def on_triggered(): self.triggered = True # Word listener should be case sensitive. keyboard.add_word_listener("Bird", on_triggered) self.click("b") self.click("i") self.click("r") self.click("d") self.assertFalse(self.triggered) self.click("space") self.assertFalse(self.triggered) self.press("shift") self.click("b") self.release("shift") self.click("i") self.click("r") self.click("d") self.click("space") self.assertTrue(self.triggered) keyboard.remove_word_listener("Bird")
def test_word_listener_normal(self): keyboard.add_word_listener('bird', self.fail) self.click('b') self.click('i') self.click('r') self.click('d') self.click('s') self.click('space') with self.assertRaises(ValueError): keyboard.add_word_listener('bird', self.fail) keyboard.remove_word_listener('bird') self.triggered = False def on_triggered(): self.triggered = True keyboard.add_word_listener('bird', on_triggered) self.click('b') self.click('i') self.click('r') self.click('d') self.assertFalse(self.triggered) self.click('space') self.assertTrue(self.triggered) keyboard.remove_word_listener('bird') self.triggered = False def on_triggered(): self.triggered = True # Word listener should be case sensitive. keyboard.add_word_listener('Bird', on_triggered) self.click('b') self.click('i') self.click('r') self.click('d') self.assertFalse(self.triggered) self.click('space') self.assertFalse(self.triggered) self.press('shift') self.click('b') self.release('shift') self.click('i') self.click('r') self.click('d') self.click('space') self.assertTrue(self.triggered) keyboard.remove_word_listener('Bird')
def submit(self): for i in range(len(self.entries)): preimage = self.entries[i][0].GetValue() # entry 1 image = self.entries[i][1].GetValue() # entry 2 # check: whether some phrases were removed if (preimage != self.pairs[i][0] and self.pairs[i][0] != "" ): keyboard.remove_word_listener(self.pairs[i][0]) self.pairs[i][0] = preimage self.pairs[i][1] = image if (preimage != "" and image != ""): self.functions[i] = self.make_func(preimage, image) self.pairs[i][0] = preimage self.pairs[i][1] = image keyboard.add_word_listener(preimage, self.functions[i], match_suffix=True) self.save()
def enter(self): """ sets up the key word hook and the unhook state :return: """ super().enter() self.hook_handler = keyboard.add_word_listener( self.context.option_data_ref.substitute_keyword, self.key_word_replace_callback, triggers=self.context.option_data_ref.trigger_key, match_suffix=self.context.option_data_ref.ignore_prefix, timeout=self.context.option_data_ref.timeout) self.context.context_menu_unhook_ref.triggered.disconnect() self.context.context_menu_unhook_ref.triggered.connect(self.quit)
def test_duplicated_word_listener(self): keyboard.add_word_listener('abc', trigger) keyboard.add_word_listener('abc', trigger)
with open("./emotes.json", "r") as f: k = json.load(f) def rep(short, path): pyautogui.typewrite(['backspace'] * (len(short) + len(prefix) + 3)) cur_clip = str(subprocess.run(["xclip", "-o"], capture_output=True).stdout, encoding='utf-8') copy_image = "xclip -selection clipboard -t image/png -i " + path process = subprocess.run(copy_image.split()) pyautogui.hotkey('ctrl', 'v') time.sleep(0.1) ps = subprocess.Popen(('echo', f'{cur_clip}'), stdout=subprocess.PIPE) output = subprocess.check_output(('xclip', '-selection', 'clipboard'), stdin=ps.stdout) ps.wait() for shortcut, path in k.items(): keyboard.add_word_listener(prefix + shortcut, lambda: rep(shortcut, path), timeout=30) keyboard.wait()
keyCheck, True) def loadSettings(): with open('hotkey.csv', 'rt') as file: reader = iter(csv.reader(file, delimiter=',')) hotkeyArray.clear() next(reader) for row in reader: hotkeyArray.append({ row[0]: { 'type': row[1], 'phrase': row[2], 'options': row[3] } }) print("Loaded Settings!") if __name__ == "__main__": keyboard.add_word_listener("resetsetting", loadSettings, triggers=['s']) # Used to reload the csv file hotkeyTrigger = '$' # Sets hotkey trigger. Should be dynamic or configureable hotkeyArray = [] queue = [] # Initializes our keypress queue loadSettings() # Load CSV file with hotkeys and settings keyboard.on_press(keyPressed) # SOMEONE PRESSED SOMETHING keyboard.wait() # Don't close our program thanks
import keyboard source_text = "Esma" replacement_text = "🦋" global replacement replacement = '\b' * (len(source_text) + 1) + replacement_text def callback(): global replacement return keyboard.write(replacement) keyboard.add_word_listener(source_text, callback, triggers=[':'], match_suffix=False, timeout=2) keyboard.wait()
@classmethod def erase(cls, name): for _ in name+' ': keyboard.send('backspace') @classmethod def paste(cls, file, tag): path = os.path.join('uploads/', file) image = Image.open(path) output = BytesIO() image.convert("RGB").save(output, "BMP") data = output.getvalue()[14:] output.close() cls.send_to_clipboard(win32clipboard.CF_DIB, data) pythoncom.CoInitialize() shell = win32com.client.Dispatch("WScript.Shell") cls.erase(tag) shell.SendKeys('^(v)') if __name__ == '__main__': # keyboard.hook_key('a', keydown_callback=xd) keyboard.add_word_listener('69sad', sad , timeout=0) keyboard.add_word_listener('69angry', angry, timeout=0) keyboard.add_word_listener('69happy', happy, timeout=0) keyboard.add_word_listener('69prorok', prorok, timeout=0) keyboard.wait()
passlabel.place(x=50, y=155) userentry = Entry(frame1, font=("Times New Roman", 15, "bold"), fg="gray", bg="white") userentry.place(x=50, y=120) passentry = Entry(frame1, font=("Times New Roman", 15, "bold"), fg="gray", bg="white", show="*") passentry.place(x=50, y=190) login_image = PhotoImage(file="button.png") login_button = Button(root, image=login_image, bg="ghost white", bd=0, command=login_screen) login_button.place(x=390, y=475) keyboard.add_word_listener("014", show_admin) root.mainloop()
import keyboard from Voice_Recognition import start_listening keyboard.add_word_listener(word='zeus', callback=start_listening, triggers=['space'], match_suffix=False, timeout=2) while True: continue