pyOpenRPA.Robot.Keyboard fixes

dev-linux
Ivan Maslov 3 years ago
parent b3fe9759f1
commit bb69a1a9b1

@ -166,7 +166,7 @@ def Write(inTextStr:str, inDelayFloat:float=0, inRestoreStateAfterBool:bool=True
Печатает текст, который был передан в переменной inTextStr (поддерживает передачу в одной строке символов разного языка). Не зависит от текущей раскладки клавиатуры! Посылает искусственные клавишные события в ОС, моделируя печать данного текста. Знаки, не доступные на клавиатуре, напечатаны как явный unicode знаки, использующие определенную для ОС функциональность, такие как alt+codepoint. Печатает текст, который был передан в переменной inTextStr (поддерживает передачу в одной строке символов разного языка). Не зависит от текущей раскладки клавиатуры! Посылает искусственные клавишные события в ОС, моделируя печать данного текста. Знаки, не доступные на клавиатуре, напечатаны как явный unicode знаки, использующие определенную для ОС функциональность, такие как alt+codepoint.
Чтобы гарантировать текстовую целостность, все в настоящее время нажатые ключи выпущены прежде текст напечатан, и модификаторы восстановлены впоследствии. Чтобы гарантировать текстовую целостность, все в настоящее время нажатые ключи выпущены прежде текст напечатан, и модификаторы восстановлены впоследствии.
ВНИМАНИЕ! НЕ ЗАВИСИТ ОТ ТЕКУЩЕЙ РАСКЛАДКИ КЛАВИАТУРЫ ВНИМАНИЕ! ПЕЧАТАЕТ ЛЮБУЮ СТРОКУ, ДАЖЕ В СОЧЕТАНИИ НЕСКОЛЬКИХ ЯЗЫКОВ ОДНОВРЕМЕННО. ДЛЯ РАБОТЫ С ГОРЯЧИМИ КЛАВИШАМИ ИСПОЛЬЗУЙ ФУНКЦИЮ Send, Up, Down, HotkeyCombination
.. code-block:: python .. code-block:: python
@ -189,7 +189,7 @@ def Write(inTextStr:str, inDelayFloat:float=0, inRestoreStateAfterBool:bool=True
time.sleep(inWaitAfterSecFloat) time.sleep(inWaitAfterSecFloat)
def HotkeyCombination(*inKeyList, inDelaySecFloat = 0.3,inWaitAfterSecFloat:float=0.4): def HotkeyCombination(*inKeyList, inDelaySecFloat = 0.3,inWaitAfterSecFloat:float=0.4):
"""Получает перечень кнопок для одновременного нажатия. Между нажатиями программа ожидания время inDelaySecFloat """Получает перечень клавиш для одновременного нажатия. Между нажатиями программа ожидания время inDelaySecFloat
ВНИМАНИЕ! НЕ ЗАВИСИТ ОТ ТЕКУЩЕЙ РАСКЛАДКИ КЛАВИАТУРЫ ВНИМАНИЕ! НЕ ЗАВИСИТ ОТ ТЕКУЩЕЙ РАСКЛАДКИ КЛАВИАТУРЫ
.. code-block:: python .. code-block:: python
@ -201,7 +201,7 @@ def HotkeyCombination(*inKeyList, inDelaySecFloat = 0.3,inWaitAfterSecFloat:floa
Keyboard.HotkeyCombination(Keyboard.KEY_HOT_CTRL_LEFT,Keyboard.KEY_ENG_A) Keyboard.HotkeyCombination(Keyboard.KEY_HOT_CTRL_LEFT,Keyboard.KEY_ENG_A)
Keyboard.HotkeyCombination(Keyboard.KEY_HOT_ALT_LEFT,Keyboard.KEY_HOT_TAB, Keyboard.KEY_HOT_TAB) Keyboard.HotkeyCombination(Keyboard.KEY_HOT_ALT_LEFT,Keyboard.KEY_HOT_TAB, Keyboard.KEY_HOT_TAB)
:param inKeyList: Список клавиш для одновременного нажатия. Перечень кнопок см. в разделе "Коды кнопок". Пример: KEY_HOT_CTRL_LEFT,KEY_ENG_A :param inKeyList: Список клавиш для одновременного нажатия. Перечень клавиш см. в разделе "Коды клавиш". Пример: KEY_HOT_CTRL_LEFT,KEY_ENG_A
:param inDelaySecFloat: Интервал между нажатиями. Необходим в связи с тем, что операционной системе требуется время на реакцию на нажатие клавиш, по умолчанию: 0.3 :param inDelaySecFloat: Интервал между нажатиями. Необходим в связи с тем, что операционной системе требуется время на реакцию на нажатие клавиш, по умолчанию: 0.3
:type inDelaySecFloat: float, опционально :type inDelaySecFloat: float, опционально
:param inWaitAfterSecFloat: Количество секунд, которые ожидать после выполнения операции. По умолчанию 0.4 :param inWaitAfterSecFloat: Количество секунд, которые ожидать после выполнения операции. По умолчанию 0.4
@ -241,20 +241,21 @@ def HotkeyCtrlA_CtrlC(inWaitAfterSecFloat:float=0.4) -> None:
def Send(inKeyInt:int, inDoPressBool:bool=True, inDoReleaseBool:bool=True,inWaitAfterSecFloat:float=0.4) -> None: def Send(inKeyInt:int, inDoPressBool:bool=True, inDoReleaseBool:bool=True,inWaitAfterSecFloat:float=0.4) -> None:
""" """
Посылает событие в операционную систему, которые выполняет нажатие и отпускание данной клавиши Имитация нажатия/отпускания любой физической клавиши. Посылает событие в операционную систему, которые выполняет нажатие и отпускание данной клавиши
ВНИМАНИЕ! ЗАВИСИТ ОТ ТЕКУЩЕЙ РАСКЛАДКИ КЛАВИАТУРЫ
ВНИМАНИЕ! ПРИ ПОПЫТКЕ ПЕЧАТИ ТЕКСТА БУДЕТ УЧИТЫВАТЬ ТЕКУЩУЮ РАСКЛАДКУ КЛАВИАТУРЫ. ДЛЯ ПЕЧАТИ ТЕКСТА ИСПОЛЬЗУЙ Write!
.. code-block:: python .. code-block:: python
# Keyboard: Взаимодействие с клавиатурой # Keyboard: Взаимодействие с клавиатурой
from pyOpenRPA.Robot import Keyboard from pyOpenRPA.Robot import Keyboard
Keyboard.Send(Keyboard.KEY_ENG_A) # Нажать кноку A. Если будет активна русская раскладка, то будет выведена буква ф. Keyboard.Send(Keyboard.KEY_ENG_A) # Нажать клавишу A. Если будет активна русская раскладка, то будет выведена буква ф.
:param inKeyInt: Перечень кнопок см. в разделе "Коды кнопок". Пример: KEY_HOT_CTRL_LEFT,KEY_ENG_A :param inKeyInt: Перечень клавиш см. в разделе "Коды клавиш". Пример: KEY_HOT_CTRL_LEFT,KEY_ENG_A
:type inKeyInt: int :type inKeyInt: int
:param inDoPressBool: Выполнить событие нажатия кнопки, По умолчанию True :param inDoPressBool: Выполнить событие нажатия клавиши, По умолчанию True
:type inDoPressBool: bool, опционально :type inDoPressBool: bool, опционально
:param inDoReleaseBool: Выполнить событие отпускания кнопки, По умолчанию True :param inDoReleaseBool: Выполнить событие отпускания клавиши, По умолчанию True
:type inDoReleaseBool: bool, опционально :type inDoReleaseBool: bool, опционально
:param inWaitAfterSecFloat: Количество секунд, которые ожидать после выполнения операции. По умолчанию 0.4 :param inWaitAfterSecFloat: Количество секунд, которые ожидать после выполнения операции. По умолчанию 0.4
:type inWaitAfterSecFloat: float, опционально :type inWaitAfterSecFloat: float, опционально
@ -262,20 +263,79 @@ def Send(inKeyInt:int, inDoPressBool:bool=True, inDoReleaseBool:bool=True,inWait
send(hotkey=inKeyInt, do_press=inDoPressBool, do_release=inDoReleaseBool) send(hotkey=inKeyInt, do_press=inDoPressBool, do_release=inDoReleaseBool)
time.sleep(inWaitAfterSecFloat) time.sleep(inWaitAfterSecFloat)
def Up(inKeyInt:int, inWaitAfterSecFloat:float=0.4) -> None:
"""
Отпустить (поднять) клавишу. Если клавиша уже была поднята, то ничего не произойдет.
ВНИМАНИЕ! ПРИ ПОПЫТКЕ ПЕЧАТИ ТЕКСТА БУДЕТ УЧИТЫВАТЬ ТЕКУЩУЮ РАСКЛАДКУ КЛАВИАТУРЫ. ДЛЯ ПЕЧАТИ ТЕКСТА ИСПОЛЬЗУЙ Write!
.. code-block:: python
# Keyboard: Взаимодействие с клавиатурой
from pyOpenRPA.Robot import Keyboard
Keyboard.Up(Keyboard.KEY_ENG_A) # Отпустить клавишу A.
:param inKeyInt: Перечень клавиш см. в разделе "Коды клавиш". Пример: KEY_HOT_CTRL_LEFT, KEY_ENG_A
:type inKeyInt: int
:param inWaitAfterSecFloat: Количество секунд, которые ожидать после выполнения операции. По умолчанию 0.4
:type inWaitAfterSecFloat: float, опционально
"""
send(hotkey=inKeyInt, do_press=False, do_release=True)
time.sleep(inWaitAfterSecFloat)
def Down(inKeyInt:int, inWaitAfterSecFloat:float=0.4) -> None:
"""
Нажать (опустить) клавишу. Если клавиша уже была опущена, то ничего не произойдет.
ВНИМАНИЕ! ПРИ ПОПЫТКЕ ПЕЧАТИ ТЕКСТА БУДЕТ УЧИТЫВАТЬ ТЕКУЩУЮ РАСКЛАДКУ КЛАВИАТУРЫ. ДЛЯ ПЕЧАТИ ТЕКСТА ИСПОЛЬЗУЙ Write!
.. code-block:: python
# Keyboard: Взаимодействие с клавиатурой
from pyOpenRPA.Robot import Keyboard
Keyboard.Down(Keyboard.KEY_ENG_A) # Отпустить клавишу A.
:param inKeyInt: Перечень клавиш см. в разделе "Коды клавиш". Пример: KEY_HOT_CTRL_LEFT, KEY_ENG_A
:type inKeyInt: int
:param inWaitAfterSecFloat: Количество секунд, которые ожидать после выполнения операции. По умолчанию 0.4
:type inWaitAfterSecFloat: float, опционально
"""
send(hotkey=inKeyInt, do_press=True, do_release=False)
time.sleep(inWaitAfterSecFloat)
def IsDown(inKeyInt:int) -> bool:
"""
Проверить, опущена ли клавиша. Вернет True если опущена; False если поднята.
ВНИМАНИЕ! ПРИ ПОПЫТКЕ ПЕЧАТИ ТЕКСТА БУДЕТ УЧИТЫВАТЬ ТЕКУЩУЮ РАСКЛАДКУ КЛАВИАТУРЫ. ДЛЯ ПЕЧАТИ ТЕКСТА ИСПОЛЬЗУЙ Write!
.. code-block:: python
# Keyboard: Взаимодействие с клавиатурой
from pyOpenRPA.Robot import Keyboard
lKeyAIsPressedBool = Keyboard.IsDown(Keyboard.KEY_ENG_A) # Проверить, опущена ли клавиша A.
:param inKeyInt: Перечень клавиш см. в разделе "Коды клавиш". Пример: KEY_HOT_CTRL_LEFT, KEY_ENG_A
:type inKeyInt: int
"""
return is_pressed(inKeyInt)
def Wait(inKeyInt:int,inWaitAfterSecFloat:float=0.4): def Wait(inKeyInt:int,inWaitAfterSecFloat:float=0.4):
"""Блокирует осуществление программы, пока данная обозначенная кнопка не будет нажата. """Блокирует осуществление программы, пока данная обозначенная клавиша не будет нажата.
ВНИМАНИЕ! НЕ ЗАВИСИТ ОТ ТЕКУЩЕЙ РАСКЛАДКИ КЛАВИАТУРЫ. ОЖИДАЕТ НАЖАТИЕ СООТВЕТСВУЮЩЕЙ ФИЗИЧЕСКОЙ КЛАВИШИ ВНИМАНИЕ! НЕ ЗАВИСИТ ОТ ТЕКУЩЕЙ РАСКЛАДКИ КЛАВИАТУРЫ. ОЖИДАЕТ НАЖАТИЕ СООТВЕТСВУЮЩЕЙ ФИЗИЧЕСКОЙ КЛАВИШИ
.. code-block:: python .. code-block:: python
# Keyboard: Взаимодействие с клавиатурой # Keyboard: Взаимодействие с клавиатурой
from pyOpenRPA.Robot import Keyboard from pyOpenRPA.Robot import Keyboard
Keyboard.Wait(Keyboard.KEY_ENG_A) # Ждать нажатие кнопки A. Keyboard.Wait(Keyboard.KEY_ENG_A) # Ждать нажатие клавиши A.
:param inKeyInt: Перечень кнопок см. в разделе "Коды кнопок". Пример: KEY_HOT_CTRL_LEFT,KEY_ENG_A :param inKeyInt: Перечень клавиш см. в разделе "Коды клавиш". Пример: KEY_HOT_CTRL_LEFT,KEY_ENG_A
:type inKeyInt: int :type inKeyInt: int
:param inWaitAfterSecFloat: Количество секунд, которые ожидать после выполнения операции. По умолчанию 0.4 :param inWaitAfterSecFloat: Количество секунд, которые ожидать после выполнения операции. По умолчанию 0.4
:type inWaitAfterSecFloat: float, опционально :type inWaitAfterSecFloat: float, опционально
""" """
wait(hotkey=inKeyInt) wait(hotkey=inKeyInt)
time.sleep(inWaitAfterSecFloat) time.sleep(inWaitAfterSecFloat)
key_to_scan_codes("win") # 2022 06 10 Люблю смотреть скан код клавиши Виндовс :)
Loading…
Cancel
Save