Форум сайта python.su
0
В редакторе Eclipse пишу lua скрипты, чтобы включить автодополнение кода нужно нажимать Ctrl+Пробел чтобы ускорить написание кода. Решил написать Python скрипт, который будет при нажатии на кнопку выполнять данную комбинацию. Мы нажимаем на кнопку, идет проверка нажата ли клавиша? Но не получается сделать эту проверку, Пожалуйста, подскажите как ее лучше сделать?
from pynput.keyboard import Key , Controller from pynput import * import time alf = ['А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Е', 'е', 'Ё', 'ё', 'Ж', 'ж', 'З', 'з', 'И', 'и', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н', 'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ф', 'ф', 'Х', 'х', 'Ц', 'ц', 'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ', 'Ы', 'ы', 'Ь', 'ь', 'Э', 'э', 'Ю', 'ю', 'Я', 'я', 'A','a','B','b','C','c', 'D', 'd','E', 'e','F','f','G', 'g','H','h','I','i','J','j','K','k','L','l','M','m','N', 'n','O','o','P','p','Q','q','R','r','S','s','T','t','U', 'u','V','v','W', 'w','X','x','Y','y','Z','z','0','1', '2','3','4','5','6','7','8','9'] def k(): import keyboard keyboard.press_and_release('ctrl+space') keyb = Controller() time.sleep(0.1) keyb.release(Key.space) keyb.release(Key.ctrl_r) def on_release(key): for i in alf: if i == key: k() return False # Collect events until released while 1: with keyboard.Listener(on_release=on_release) as listener: listener.join() input()
Отредактировано EgorSrche (Авг. 7, 2018 14:25:07)
Офлайн
221
это конечно будет оффтоп, но неужели это не настраивается в самом Eclipse и/или его плагинах ?
Офлайн
0
JOHN_16, У меня не получается это настроить. Легче скрипт написать
Отредактировано EgorSrche (Авг. 7, 2018 16:25:36)
Офлайн
857
EgorSrche
В редакторе Eclipse
EgorSrcheТам ещё много чего не будет получаться. Эта среда своей встроенной консолью на программу на C, в которой происходил сбой Segmentation fault, показывала, что программа выполняется отлично (код ноль и тому подобное). Целый час искал ошибку в коде, пока не допёр, что надо программу в обычной консоли системы запустить, где это всё было наглядно.
У меня не получается это настроить
Но сомневаюсь, потому что основное направление программы было нацелено на красивость, а не на функциональность и удобность.
Отредактировано py.user.next (Авг. 8, 2018 01:33:49)
Офлайн
0
Вот как решил эту проблему.
from pynput.keyboard import Key, Controller from pynput import * def on_press(key): try: k = key.char # single-char keys except: k = key.name # other keys if k in ['А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Е', 'е', 'Ё', 'ё', 'Ж', 'ж', 'З', 'з', 'И', 'и', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н', 'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ф', 'ф', 'Х', 'х', 'Ц', 'ц', 'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ', 'Ы', 'ы', 'Ь', 'ь', 'Э', 'э', 'Ю', 'ю', 'Я', 'я', 'A','a','B','b','C','c', 'D', 'd','E', 'e','F','f','G', 'g','H','h','I','i','J','j','K','k','L','l','M','m','N', 'n','O','o','P','p','Q','q','R','r','S','s','T','t','U', 'u','V','v','W', 'w','X','x','Y','y','Z','z']: keyb = Controller() keyb.press(Key.ctrl_r) keyb.press(Key.space) keyb.release(Key.space) keyb.release(Key.ctrl_r) return False # remove this if want more keys while 1: with keyboard.Listener(on_press=on_press) as lis: lis.join() # no this if main thread is polling self.keys
Офлайн