Exemple #1
0
    def start(self):

        self.hotkey = keyboard.HotKey(keyboard.HotKey.parse('<ctrl>+<alt>+h'),
                                      self.on_activate)

        with keyboard.Listener(on_press=self.for_canonical(self.hotkey.press),
                               on_release=self.for_canonical(
                                   self.hotkey.release)) as l:
            self.l = l

            self.client.connect(self.addr)

            self.listenerkeyboard = keyboard.Listener(
                on_press=self.on_press_key, on_release=self.on_release_key)
            self.listenermouse = mouse.Listener(on_move=self.on_move_mouse,
                                                on_click=self.on_click_mouse,
                                                on_scroll=self.on_scroll_mouse)

            self.listenerkeyboard.start()
            self.listenermouse.start()

            self.listenerkeyboard.join()
            self.listenermouse.join()

            self.l.join()
Exemple #2
0
def get_listener(key, voice):
    def on_activate():
        print('Global hotkey activated!')

        cpstr: str = cp.paste()
        print(cpstr)
        if cpstr.strip():
            cmd = f'say -v {voice} "{cpstr}"'
            print(cmd)
            os.system(cmd)
            pass

    def for_canonical(f):
        return lambda k: f(listener.canonical(k))

    hotkey = keyboard.HotKey(
        # keyboard.HotKey.parse('<ctrl>+<alt>+1'),
        keyboard.HotKey.parse(key),
        on_activate)

    with keyboard.Listener(on_press=for_canonical(hotkey.press),
                           on_release=for_canonical(
                               hotkey.release)) as listener:
        listener.join()
    return listener
        def destroy(self):
            """
            Stop if currently recording, reinitiate the main window's hotkey listener, and close this toplevel window
            Overrides tkinter.Toplevel.destroy()

            :return: None
            """
            # Close
            if self.recording:
                self.new_hotkey_listener.stop()
                self.recording = False

            # self.root_hotkey_list is either the main window's old hotkey or a new one if one successfully has been
            #   recorded
            keyboard_input = keyboard.HotKey.parse(self.root.get_hotkey_reverse_parse_string(self.root_hotkey_list))
            self.root.hotkey = keyboard.HotKey(keyboard_input, self.root.show_screenshot)
            self.root.hotkey_listener = keyboard.Listener(on_press=self.root.for_hotkey_canonical(
                                                                                                self.root.hotkey.press),
                                                          on_release=self.root.for_hotkey_canonical(
                                                                                              self.root.hotkey.release))
            self.root.hotkey_listener.start()

            if self.root.image_canvas.text_id != -1:
                self.root.image_canvas.draw_text(self.root.get_greeting_text())

            super().destroy()
Exemple #4
0
def main():  # pragma: no cover
    """Do main."""
    hotkey = keyboard.HotKey(
        keyboard.HotKey.parse('<ctrl>+<alt>+g'),
        # lambda: on_activate(to_lang="zh"),
        # on_activate,
        on_trans_hk,
    )

    hotkey1 = keyboard.HotKey(
        keyboard.HotKey.parse('<ctrl>+<alt>+x'),
        # lambda: on_activate(to_lang="zh"),
        # on_activate1,
        on_exit_hk,
    )

    _ = """
    with keyboard.Listener(
            on_press=for_canonical(hotkey.press),
            on_release=for_canonical(hotkey.release)
    ) as l:
        logger.info(" ready: ctrl-alt-g to activate ")
        l.join()
    # """

    listener = keyboard.Listener(
        # on_press=for_canonical(hotkey.press),
        # on_release=for_canonical(hotkey.release),
        on_press=lambda k: hotkey.press(listener.canonical(k)),
        on_release=lambda k: hotkey.release(listener.canonical(k)
                                            ),  # type: ignore
        # on_press=hotkey.press(getattr(listener, "canonical")),  # this does not work
    )
    listener.start()
    print("hotkey ctrl-alt-g ...")

    ln1 = keyboard.Listener(
        # on_press=for_canonical1(hotkey1.press),
        # on_release=for_canonical1(hotkey1.release)
        on_press=lambda k: hotkey1.press(ln1.canonical(k)),
        on_release=lambda k: hotkey1.release(ln1.canonical(k)),  # type: ignore
    )
    ln1.start()
    print("hotkey ctrl-alt-x to quit ...")

    app.run(read_assist)
def setup_hotkey(gui):

    #create the hotkey object, set to win+shift+o
    hotkey = keyboard.HotKey(keyboard.HotKey.parse('<cmd>+<shift>+o'),
                             gui.on_activate)

    #from pynput docs, cleans up key modifiers before we pass to the hotkey instance
    def for_canonical(f):
        return lambda k: f(l.canonical(k))

    #create and deploy the keyboard instance
    with keyboard.Listener(on_press=for_canonical(hotkey.press),
                           on_release=for_canonical(hotkey.release)) as l:

        l.join()
Exemple #6
0
    def main():
        def write_file(count):
            with open("log.txt", "r+") as f:
                f.write("Amount of times <ctrl>+l pressed: "+str(count))
                f.close()

        def on_activate():
            logging.info("Ctrl + l pressed")
            global count
            count += 1
            write_file(count)

        hotkey = keyboard.HotKey(keyboard.HotKey.parse('<ctrl>+l'),on_activate)

        def for_canonical(f):
            return lambda k: f(l.canonical(k))       

        with keyboard.Listener(on_press=for_canonical(hotkey.press),on_release=for_canonical(hotkey.release)) as l:
            l.join()
def test2():
    from pynput import keyboard

    def on_press(key):
        print(key)
        hotkey.press(key)

    def on_activate():
        print('Global hotkey activated!')

    def for_canonical(f):
        return lambda k: f(l.canonical(k))

    hotkey = keyboard.HotKey(keyboard.HotKey.parse('<ctrl>+<alt>+h'),
                             on_activate)

    with keyboard.Listener(on_press=on_press,
                           on_release=for_canonical(hotkey.release)) as l:
        l.join()

    hotkey.press(l.canonical())
Exemple #8
0
from pynput import keyboard
from pynput.keyboard import Key, Controller

keyboard2 = Controller()


def on_activate():
    #print('Global hotkey activated!')
    keyboard2.press('v')
    keyboard2.release('v')
    keyboard2.press('e')
    keyboard2.release('e')
    keyboard2.press('l')
    keyboard2.release('l')


def for_canonical(f):
    return lambda k: f(l.canonical(k))


hotkey = keyboard.HotKey(
    #keyboard.HotKey.parse('<ctrl>+<alt>+h'),
    #keyboard.HotKey.parse('c'),
    keyboard.HotKey.parse('<space>'),
    on_activate)

with keyboard.Listener(on_press=for_canonical(hotkey.press),
                       on_release=for_canonical(hotkey.release)) as l:
    l.join()
Exemple #9
0
from pynput import keyboard


def on_activate():
    print('pasted nerd')


def for_canonical(f):
    return lambda k: f(l.canonical(k))


hotkey = keyboard.HotKey(keyboard.HotKey.parse('<ctrl>+v'), on_activate)
with keyboard.Listener(on_press=for_canonical(hotkey.press),
                       on_release=for_canonical(hotkey.release)) as l:
    l.join()
Exemple #10
0
import clipboard
import atomic_store
from pynput import keyboard

clip_store = atomic_store.open('clipboards.json', default=dict())


def on_activate_paste():
    print('pasted')


def on_activate_copy():
    clip_store.value["main"] = clip_store.value["main"] + [clipboard.paste()]


def for_canonical(f):
    return lambda k: f(l.canonical(k))


paste_hk = keyboard.HotKey(keyboard.HotKey.parse('<ctrl>+v'),
                           on_activate_paste)
copy_hk = keyboard.HotKey(keyboard.HotKey.parse('<ctrl>+c'), on_activate_copy)

with keyboard.Listener(on_press=for_canonical(paste_hk.press),
                       on_release=for_canonical(paste_hk.release)) as l:
    l.join()
Exemple #11
0
    def record(self, function_name: str):
        filename = os.path.join(self.data_path, function_name)
        if os.path.isfile(filename):
            raise FileExistsError(
                'Function "{}" already exists'.format(function_name))

        input_hotkey_str = '<ESC>+I'
        output_hotkey_str = '<ESC>+O'

        print('Starting recording ...')
        print('Press {} to put clipboard content into output variable'.format(
            output_hotkey_str))
        print('Press {} to put input variable into clipboard'.format(
            input_hotkey_str))
        print('Press <ESC> to stop')

        myevents: List[MyInputEvent] = []
        input_variables: List[str] = []
        output_variables: List[str] = []

        stop_event = threading.Event()
        input_event = threading.Event()
        output_event = threading.Event()
        time_delta: float = 0

        def on_input():
            input_event.set()
            stop_event.set()

        def on_output():
            output_event.set()
            stop_event.set()

        input_hotkey = keyboard.HotKey(keyboard.HotKey.parse(input_hotkey_str),
                                       on_input)

        output_hotkey = keyboard.HotKey(
            keyboard.HotKey.parse(output_hotkey_str), on_output)

        def on_press(key):
            input_hotkey.press(listener.canonical(key))
            output_hotkey.press(listener.canonical(key))

            myevent = MyInputEvent(KeyPressEvent(key), time_delta=time_delta)
            myevents.append(myevent)

        def on_release(key):
            if key == keyboard.Key.esc:
                stop_event.set()
                return False

            input_hotkey.release(listener.canonical(key))
            output_hotkey.release(listener.canonical(key))

            myevent = MyInputEvent(KeyReleaseEvent(key), time_delta=time_delta)
            myevents.append(myevent)

        last_move_myevent = None

        def on_mouse_event(event):
            nonlocal last_move_myevent

            if isinstance(event, mouse.Events.Move):
                myevent = MyInputEvent(MoveEvent(x=event.x, y=event.y),
                                       time_delta=time_delta)

                if last_move_myevent:
                    if myevent.timestamp - last_move_myevent.timestamp < 0.1:
                        return  # no need to keep all move events

                last_move_myevent = myevent

            elif isinstance(event, mouse.Events.Click):
                myevent = MyInputEvent(ClickEvent(x=event.x,
                                                  y=event.y,
                                                  button=event.button,
                                                  pressed=event.pressed),
                                       time_delta=time_delta)

            elif isinstance(event, mouse.Events.Scroll):
                myevent = MyInputEvent(ScrollEvent(x=event.x,
                                                   y=event.y,
                                                   dx=event.dx,
                                                   dy=event.dy),
                                       time_delta=time_delta)

            else:
                raise RuntimeError(
                    'Unrecognized mouse event: {}'.format(event))

            myevents.append(myevent)

        while True:
            stop_event.clear()

            listener = keyboard.Listener(on_press=on_press,
                                         on_release=on_release)
            listener.start()

            with mouse.Events() as events:
                while True:
                    if stop_event.is_set():
                        listener.stop()
                        break
                    event = events.get(0.5)
                    if event is None:
                        continue
                    on_mouse_event(event)

            if input_event.is_set():
                input_event.clear()

                t0 = time.time()
                name = self.read_variable_name(kind='Input variable name')
                if not name:
                    continue

                example_value = self.read_variable_name(
                    kind='Input example value')
                if example_value:
                    pyperclip.copy(example_value)

                deadtime = time.time() - t0
                time_delta += deadtime

                if name in input_variables:
                    print('WARNING: input variable "{}" already exists'.format(
                        name))
                else:
                    input_variables.append(name)
                    myevent = MyInputEvent(PasteFromVarEvent(name),
                                           time_delta=time_delta)
                    myevents.append(myevent)

            elif output_event.is_set():
                output_event.clear()

                t0 = time.time()
                name = self.read_variable_name(kind='Output variable name')
                if not name:
                    continue
                deadtime = time.time() - t0
                time_delta += deadtime

                if name in output_variables:
                    print(
                        'WARNING: output variable "{}" already exists'.format(
                            name))
                else:
                    output_variables.append(name)
                    myevent = MyInputEvent(CopyToVarEvent(name),
                                           time_delta=time_delta)
                    myevents.append(myevent)
            else:
                break

        if myevents:
            myfunction = MyFunction(events=myevents,
                                    input_variables=input_variables,
                                    output_variables=output_variables)
            self.save(myfunction, filename)
        else:
            print('WARNING: no input events detected!')
Exemple #12
0
    str1 = "/usr/bin/osascript -e \'Tell application \"System Events\" to display dialog \""
    str2 = "\" with title \"Hex Converter\"\' &> /dev/null"
    return str1 + display_text + str2

def show_dialog(hex_str):
    subprocess.run(get_osascript_cmd(hex_str), shell=True)

def on_activate():
    sleep(CLIPBOARD_UPDATE_DELAY_SECS) # give clipboard time to update
    tokens = tokenize_clipboard()
    found_valid_hex = False
    for token in tokens:
        if hex_prefix in token:
            hex_code_str = get_hexcode_string(token)
            if is_valid_hex(hex_code_str):
                found_valid_hex = True
                show_dialog(hex_code_str)
    if found_valid_hex:
        sanitize_clipboard()

def for_canonical(f):
    return lambda k: f(listener.canonical(k))

hotkey = keyboard.HotKey(
    keyboard.HotKey.parse('<cmd>+c'),
    on_activate)

# Collect events until released
with keyboard.Listener(on_press=for_canonical(hotkey.press),
                       on_release=for_canonical(hotkey.release)) as listener:
    listener.join()
Exemple #13
0
from pynput import keyboard


def on_activate():
    print("Global hotkey activated!")


def for_canonical(f):
    return lambda k: f(l.canonical(k))


hotkey = keyboard.HotKey(keyboard.HotKey.parse("<ctrl>+q"), on_activate)
with keyboard.Listener(
    on_press=for_canonical(hotkey.press), on_release=for_canonical(hotkey.release)
) as l:
    l.join()


# from pynput import keyboard

# def on_activate_h():
#     print('<ctrl>+<alt>+h pressed')

# def on_activate_i():
#     print('<ctrl>+<alt>+i pressed')

# with keyboard.GlobalHotKeys({
#         '<ctrl>+<alt>+h': on_activate_h,
#         '<ctrl>+<alt>+i': on_activate_i}) as h:
#     h.join()
Exemple #14
0
def main():
    data = subprocess.Popen(['xsel', '-o'], stdout=subprocess.PIPE)
    output, err = data.communicate()
    output = output.decode("utf-8")

    detected_lang = req_post(
        f'{detect_lang_url}?key={api_key}&text={parse.quote(output)}&hint=ru;en'
    )["lang"]
    if detected_lang == "ru":
        lang_pair = "ru-en"
    elif detected_lang == "en":
        lang_pair = "en-ru"
    else:
        # raise Exception("This is not a ru or eng lang")
        lang_pair = "en-ru"

    translate = req_post(
        f'{translate_url}?key={api_key}&lang={lang_pair}&text={parse.quote(output)}'
    )
    print(translate)
    system(
        f'notify-send -a Translater -u normal -t {notify_expire} "{str(translate["text"][0])}"'
    )


hotkey = keyboard.HotKey(keyboard.HotKey.parse(hot_key), main)
with keyboard.Listener(on_press=for_canonical(hotkey.press),
                       on_release=for_canonical(hotkey.release)) as l:
    l.join()
Exemple #15
0
import keyboard as kb
import time
import pyperclip
import threading
from pynput import keyboard
from app import make_clipboard
from key_listner import for_canonical
from paste_gui import pastingFunction

lst = []


def main():
    with keyboard.Listener(on_press=for_canonical(copy.press),
                           on_release=for_canonical(copy.release)) as l:
        l.join()
    with keyboard.Listener(on_press=for_canonical(paste.press),
                           on_release=for_canonical(paste.release)) as thread:
        thread.join()


paste = keyboard.HotKey(keyboard.HotKey.parse('<ctrl>+v'), pastingFunction)

copy = keyboard.HotKey(keyboard.HotKey.parse('<ctrl>+c'), make_clipboard)
    def __init__(self, scroll_factor=1.10, hotkey_repr='§', centered_zoom=True, centered_rotation=True,
                 rotate_nonresponsive_radius_fraction=0.05):
        """
        Tkinter window containg a canvas in which an image can be panned, zoomed, and rotated

            Functionality:
        Pan - Left click and drag
        Zoom - Scroll wheel or "+"/"-"-keys
        Rotate - Right click and drag

        Global screenshot hotkey - Preset to "§" but can be changed in the menu during runtime (se below)
        Options menu - M, Alt-, or Menu-key

        Fullscreen - F
        Reset view - R

        Copy image to clipboard - Ctrl+C    (If supported by the system)
        Paste image from clipboard - Ctrl+V
        Open image or PDF - Ctrl+O
        Save image - Ctrl+S

        :param scroll_factor: float: By how much the bounding box should increase while zooming out. 1.00 represents
            no zoom what so ever. 1.10 represents a 10% increase. Zooming out will result in a change of the
            boundry box by the factor of the inverse scroll_factor. (default=1.10)
        :param centered_zoom: bool: If True, zooms to the center of the ImageCanvas. If False, zoom to the position of
            the mouse pointer. (default=True)
        :param centered_rotation: bool: If True, rotate around the center of the ImageCanvas. If False, rotate around
            the position of the mouse pointer. (default=True)
        :param rotate_nonresponsive_radius_fraction: float: Determines the radius around the rotation point where
            moving the mouse does not rotate the image. This behaviour is implemented to mitigate the large and sudden
            rotations which occur when a short mouse movement corresponds to a large change in rotational angle.
            The non-responsive radius is calculated as
            radius = min(canvas_width, canvas_height) / 2 * rotate_nonresponsive_radius_fraction,
            where 0. < rotate_nonresponsive_radius_fraction < 1. (default=0.05)
        """
        super().__init__()

        # Settings

        # Try to read settings from a settings file
        settings_dict = self.read_from_settings_file()

        if 'hotkey' in settings_dict:
            hotkey_repr = settings_dict['hotkey']

        if 'centered_zoom' in settings_dict:
            centered_zoom = bool(settings_dict['centered_zoom'])

        if 'centered_rotation' in settings_dict:
            centered_rotation = bool(settings_dict['centered_rotation'])

        if 'geometry' in settings_dict:
            geometry = settings_dict['geometry']
        else:
            geometry = "%dx%d+0+0" % (self.winfo_screenwidth(), self.winfo_screenheight())

        # Create the window

        self.title("PanZoomRotate")
        self.geometry(geometry)

        self.fullscreen = False

        self.image_canvas = ImageCanvasExtendedFunc(self, pan=True, zoom=True, rotate=True,
                                                    scroll_factor=scroll_factor, centered_zoom=centered_zoom,
                                                    centered_rotation=centered_rotation,
                                                    rotate_nonresponsive_radius_fraction=
                                                    rotate_nonresponsive_radius_fraction)
        self.image_canvas.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)
        self.image_canvas.focus_set()

        # Hotkey listener
        self.hotkey = keyboard.HotKey(keyboard.HotKey.parse(hotkey_repr), self.show_screenshot)
        self.hotkey_listener = keyboard.Listener(on_press=self.for_hotkey_canonical(self.hotkey.press),
                                                 on_release=self.for_hotkey_canonical(self.hotkey.release))
        self.hotkey_listener.start()

        # Show initial text
        self.image_canvas.draw_text(self.get_greeting_text())

        # Set up a menu
        self.menu = self.AltMenu(self, centered_zoom=centered_zoom,
                                 centered_rotation=centered_rotation, relief=tk.FLAT)

        # Events

        self.bind('f', lambda dummy_event: self.set_fullscreen())

        self.bind('<Escape>', lambda dummy_event: self.set_fullscreen(state=False))

        self.bind("<KeyRelease-Alt_L>", self.show_menu)
        self.bind("<KeyRelease-Alt_R>", self.show_menu)
        self.bind("m", self.show_menu)
        try:
            self.bind("<Menu>", self.show_menu)
        except tk.TclError:
            pass
        try:
            self.bind("<App>", self.show_menu)
        except tk.TclError:
            pass   
Exemple #17
0
def main(targets, format, target_type, lang, hotkey, paste_key, commit_key,
         paste_delay):
    words = set()
    if target_type == "file":
        for t in targets:
            with open(t) as f:
                tags_done = False
                for line in f:
                    word = line.strip()
                    if not word:
                        continue
                    if word == "---":
                        tags_done = True
                        continue
                    if not tags_done:
                        continue
                    words.add(word)
    elif target_type == "tag":
        targets = set(targets)
        for file in os.listdir(lang):
            path = os.path.join(lang, file)
            with open(path) as f:
                tags_selected = False
                tags_done = False
                for line in f:
                    word = line.strip()
                    if not word:
                        continue
                    if not tags_done and word in targets:
                        tags_selected = True
                        continue
                    if word == "---":
                        tags_done = True
                        continue
                    if not tags_done:
                        continue
                    if not tags_selected:
                        break
                    words.add(word)
    if format == "comma":
        pyperclip.copy(",".join(words))
    elif format == "copy_each":
        pyperclip.copy("")
        word_iter = WordIter(words)
        hotkey = keyboard.HotKey(keyboard.HotKey.parse(hotkey), word_iter)
        with keyboard.Listener(on_press=hotkey.press,
                               on_release=hotkey.release) as l:
            word_iter.set_listener(l)
            l.join()
    elif format == "paste_each":
        kb = keyboard.Controller()
        for word in words:
            pyperclip.copy(word)
            sleep(paste_delay)
            for k in keyboard.HotKey.parse(paste_key):
                kb.press(k)
            for k in keyboard.HotKey.parse(paste_key):
                kb.release(k)
            sleep(paste_delay)
            for k in keyboard.HotKey.parse(commit_key):
                kb.press(k)
            for k in keyboard.HotKey.parse(commit_key):
                kb.release(k)
            sleep(paste_delay)

    return 0
只支持一对热键
"""

from pynput import keyboard


def on_activate():
    print('Global hotkey activated!')


def for_canonical(f):
    return lambda k: f(listener.canonical(k))


hotkey = keyboard.HotKey(
    # keyboard.HotKey.parse('<ctrl>+<alt>+1'),
    keyboard.HotKey.parse('<ctrl>+1'),
    on_activate)

with keyboard.Listener(on_press=for_canonical(hotkey.press),
                       on_release=for_canonical(hotkey.release)) as listener:
    listener.join()


def main():
    listener.start()
    pass


if __name__ == '__main__':
    main()
from pynput import keyboard


def on_activate():
    print('Global hotkey activated!')


def for_canonical(f):
    return lambda k: f(l.canonical(k))


paste = keyboard.HotKey(keyboard.HotKey.parse('<ctrl>+v'), on_activate)
copy = keyboard.HotKey(keyboard.HotKey.parse('<ctrl>+c'), on_activate)

with keyboard.Listener(on_press=for_canonical(copy.press),
                       on_release=for_canonical(copy.release)) as l:
    l.join()
Exemple #20
0
    def on_modified(self, event):
        if os.path.basename(event.src_path) == 'server_log.txt':
            with open(event.src_path, 'r') as f:
                for line in reversed(f.readlines()):
                    line = line.strip()
                    if 'loopback' not in line:
                        process_line(line)
                    break


def for_canonical(f):
    return lambda k: f(keyboard_listener.canonical(k))


if __name__ == '__main__':
    hotkey = keyboard.HotKey(keyboard.HotKey.parse(TOGGLE_KEY), toggle_dzen)
    keyboard_listener = keyboard.Listener(on_press=for_canonical(hotkey.press),
                                          on_release=for_canonical(
                                              hotkey.release))
    keyboard_listener.start()

    observer = Observer()
    observer.schedule(MyHandler(), path=SERVER_FILE_PATH, recursive=False)
    observer.start()
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
        keyboard_listener.stop()
    observer.join()