from pyOpenRPA . Tools import CrossOS
if CrossOS . IS_WINDOWS_BOOL : from keyboard import *
elif CrossOS . IS_LINUX_BOOL :
import pyautogui , sys , os
press = pyautogui . keyDown
release = pyautogui . keyUp
def send ( hotkey , do_press = True , do_release = True ) :
if do_press and do_release : pyautogui . press ( hotkey ) ; return
if do_press : press ( hotkey )
if do_release : release ( hotkey )
WIN = CrossOS . IS_WINDOWS_BOOL
LIN = CrossOS . IS_LINUX_BOOL
import time
# Настройки модуля Keyboard
WAIT_AFTER_SEC_FLOAT = 0.4 # Время, которое ожидать после выполнения любой операции модуля Keyboard. Настройка является единой для всех участов кода, использующих модуль Keyboard. Если для некоторой функции требуется изменить данное время ожидания, то в отношении этой функции можно применить соответсвующий аргумент.
# ШЕСТНАДЦАТИРИЧНЫЙ С К А Н -КОД В РУССКОЙ РАСКЛАДКЕ (НЕЗАВИСИМО О Т ВЫБРАННОГО ЯЗЫКА Н А КЛАВИАТУРЕ)
# ОТОБРАЖЕНИЕ С К А Н КОДОВ Н А КЛАВИАТУРЕ https://snipp.ru/handbk/scan-codes
KEY_RUS_LAYOUT = " ru " # NEED FOR LINUX (FOR LAYOUT SWITCH)
KEY_RUS_Ф = 0x1E if WIN else ' a ' #A
KEY_RUS_И = 0x30 if WIN else ' b ' #B
KEY_RUS_С = 0x2E if WIN else ' c ' #C
KEY_RUS_В = 0x20 if WIN else ' d ' #D
KEY_RUS_У = 0x12 if WIN else ' e ' #E
KEY_RUS_А = 0x21 if WIN else ' f ' #F
KEY_RUS_П = 0x22 if WIN else ' g ' #G
KEY_RUS_Р = 0x23 if WIN else ' h ' #H
KEY_RUS_Ш = 0x17 if WIN else ' i ' #I
KEY_RUS_О = 0x24 if WIN else ' j ' #J
KEY_RUS_Л = 0x25 if WIN else ' k ' #K
KEY_RUS_Д = 0x26 if WIN else ' l ' #L
KEY_RUS_Ь = 0x32 if WIN else ' m ' #M
KEY_RUS_Т = 0x31 if WIN else ' n ' #N
KEY_RUS_Щ = 0x18 if WIN else ' o ' #O
KEY_RUS_З = 0x19 if WIN else ' p ' #P
KEY_RUS_Й = 0x10 if WIN else ' q ' #Q
KEY_RUS_К = 0x13 if WIN else ' r ' #R
KEY_RUS_Ы = 0x1F if WIN else ' s ' #S
KEY_RUS_Е = 0x14 if WIN else ' t ' #T
KEY_RUS_Г = 0x16 if WIN else ' u ' #U
KEY_RUS_М = 0x2F if WIN else ' v ' #V
KEY_RUS_Ц = 0x11 if WIN else ' w ' #W
KEY_RUS_Ч = 0x2D if WIN else ' x ' #X
KEY_RUS_Н = 0x15 if WIN else ' y ' #Y
KEY_RUS_Я = 0x2C if WIN else ' z ' #Z
KEY_RUS_Ё = 0x29 if WIN else ' ~ ' #~
KEY_RUS_Ж = 0x27 if WIN else ' : ' #:
KEY_RUS_Б = 0x33 if WIN else ' < ' #<
KEY_RUS_Ю = 0x34 if WIN else ' > ' #>
KEY_RUS_Х = 0x1A if WIN else ' [ ' #[
KEY_RUS_Ъ = 0x1B if WIN else ' ] ' #]
KEY_RUS_Э = 0x28 if WIN else " ' " #'
KEY_ENG_LAYOUT = " us " # NEED FOR LINUX (FOR LAYOUT SWITCH)
KEY_ENG_A = 0x1E if WIN else ' a ' #A
KEY_ENG_B = 0x30 if WIN else ' b ' #B
KEY_ENG_C = 0x2E if WIN else ' c ' #C
KEY_ENG_D = 0x20 if WIN else ' d ' #D
KEY_ENG_E = 0x12 if WIN else ' e ' #E
KEY_ENG_F = 0x21 if WIN else ' f ' #F
KEY_ENG_G = 0x22 if WIN else ' g ' #G
KEY_ENG_H = 0x23 if WIN else ' h ' #H
KEY_ENG_I = 0x17 if WIN else ' i ' #I
KEY_ENG_J = 0x24 if WIN else ' j ' #J
KEY_ENG_K = 0x25 if WIN else ' k ' #K
KEY_ENG_L = 0x26 if WIN else ' l ' #L
KEY_ENG_M = 0x32 if WIN else ' m ' #M
KEY_ENG_N = 0x31 if WIN else ' n ' #N
KEY_ENG_O = 0x18 if WIN else ' o ' #O
KEY_ENG_P = 0x19 if WIN else ' p ' #P
KEY_ENG_Q = 0x10 if WIN else ' q ' #Q
KEY_ENG_R = 0x13 if WIN else ' r ' #R
KEY_ENG_S = 0x1F if WIN else ' s ' #S
KEY_ENG_T = 0x14 if WIN else ' t ' #T
KEY_ENG_U = 0x16 if WIN else ' u ' #U
KEY_ENG_V = 0x2F if WIN else ' v ' #V
KEY_ENG_W = 0x11 if WIN else ' w ' #W
KEY_ENG_X = 0x2D if WIN else ' x ' #X
KEY_ENG_Y = 0x15 if WIN else ' y ' #Y
KEY_ENG_Z = 0x2C if WIN else ' z ' #Z
KEY_ENG_TILDE = 0x29 if WIN else ' ~ ' #~
KEY_ENG_COLON = 0x27 if WIN else ' : ' #:
KEY_ENG_PLUS = 0x0D if WIN else ' + ' #+
KEY_ENG_MINUS = 0x0C if WIN else ' - ' #-
KEY_ENG_LESS_THAN = 0x33 if WIN else ' < ' #< ,
KEY_ENG_GREATER_THAN = 0x34 if WIN else ' > ' #> .
KEY_ENG_SOLIDUS = 0x35 if WIN else ' / ' #/ ?
KEY_ENG_SQUARE_BRACKET_LEFT = 0x1A if WIN else ' [ ' #[
KEY_ENG_SQUARE_BRACKET_RIGHT = 0x1B if WIN else ' ] ' #]
KEY_ENG_APOSTROPHE = 0x28 if WIN else " ' " #' "
KEY_ENG_VERTICAL_LINE = 0x2B if WIN else ' | ' #| \
KEY_ENG_NUMPAD_0 = 0x52 if WIN else ' num0 '
KEY_ENG_NUMPAD_1 = 0x4F if WIN else ' num1 '
KEY_ENG_NUMPAD_2 = 0x50 if WIN else ' num2 '
KEY_ENG_NUMPAD_3 = 0x51 if WIN else ' num3 '
KEY_ENG_NUMPAD_4 = 0x4B if WIN else ' num4 '
KEY_ENG_NUMPAD_5 = 0x4C if WIN else ' num5 '
KEY_ENG_NUMPAD_6 = 0x4D if WIN else ' num6 '
KEY_ENG_NUMPAD_7 = 0x47 if WIN else ' num7 '
KEY_ENG_NUMPAD_8 = 0x48 if WIN else ' num8 '
KEY_ENG_NUMPAD_9 = 0x49 if WIN else ' num9 '
KEY_ENG_NUMPAD_ASTERISK = 0x37 if WIN else ' * ' #*
KEY_ENG_NUMPAD_PLUS = 0x4E if WIN else ' + '
KEY_ENG_NUMPAD_MINUS = 0x4A if WIN else ' - '
KEY_ENG_NUMPAD_DELETE = 0x53 if WIN else ' delete '
KEY_ENG_NUMPAD_SOLIDUS = 0x35 if WIN else ' / ' #/
KEY_ENG_NUMPAD_ENTER = 0x11c if WIN else ' enter '
KEY_ENG_0 = 0xB if WIN else ' 0 '
KEY_ENG_1 = 0x2 if WIN else ' 1 '
KEY_ENG_2 = 0x3 if WIN else ' 2 '
KEY_ENG_3 = 0x4 if WIN else ' 3 '
KEY_ENG_4 = 0x5 if WIN else ' 4 '
KEY_ENG_5 = 0x6 if WIN else ' 5 '
KEY_ENG_6 = 0x7 if WIN else ' 6 '
KEY_ENG_7 = 0x8 if WIN else ' 7 '
KEY_ENG_8 = 0x9 if WIN else ' 8 '
KEY_ENG_9 = 0xA if WIN else ' 9 '
KEY_HOT_NUMPAD_0 = 0x52 if WIN else ' num0 '
KEY_HOT_NUMPAD_1 = 0x4F if WIN else ' num1 '
KEY_HOT_NUMPAD_2 = 0x50 if WIN else ' num2 '
KEY_HOT_NUMPAD_3 = 0x51 if WIN else ' num3 '
KEY_HOT_NUMPAD_4 = 0x4B if WIN else ' num4 '
KEY_HOT_NUMPAD_5 = 0x4C if WIN else ' num5 '
KEY_HOT_NUMPAD_6 = 0x4D if WIN else ' num6 '
KEY_HOT_NUMPAD_7 = 0x47 if WIN else ' num7 '
KEY_HOT_NUMPAD_8 = 0x48 if WIN else ' num8 '
KEY_HOT_NUMPAD_9 = 0x49 if WIN else ' num9 '
KEY_HOT_NUMPAD_ASTERISK = 0x37 if WIN else ' * ' #*
KEY_HOT_NUMPAD_PLUS = 0x4E if WIN else ' + '
KEY_HOT_NUMPAD_MINUS = 0x4A if WIN else ' - '
KEY_HOT_NUMPAD_DELETE = 0x53 if WIN else ' delete '
KEY_HOT_NUMPAD_SOLIDUS = 0x35 if WIN else ' / ' #/
KEY_HOT_NUMPAD_ENTER = 0x11c if WIN else ' enter '
KEY_HOT_F1 = 0x3B if WIN else ' f1 '
KEY_HOT_F2 = 0x3C if WIN else ' f2 '
KEY_HOT_F3 = 0x3D if WIN else ' f3 '
KEY_HOT_F4 = 0x3E if WIN else ' f4 '
KEY_HOT_F5 = 0x3F if WIN else ' f5 '
KEY_HOT_F6 = 0x40 if WIN else ' f6 '
KEY_HOT_F7 = 0x41 if WIN else ' f7 '
KEY_HOT_F8 = 0x42 if WIN else ' f8 '
KEY_HOT_F9 = 0x43 if WIN else ' f9 '
KEY_HOT_F10 = 0x44 if WIN else ' f10 '
KEY_HOT_F11 = 0x57 if WIN else ' f11 '
KEY_HOT_F12 = 0x58 if WIN else ' f12 '
KEY_HOT_F13 = 0x7C if WIN else ' f13 '
KEY_HOT_F14 = 0x7D if WIN else ' f14 '
KEY_HOT_F15 = 0x7E if WIN else ' f15 '
KEY_HOT_F16 = 0x7F if WIN else ' f16 '
KEY_HOT_F17 = 0x80 if WIN else ' f17 '
KEY_HOT_F18 = 0x81 if WIN else ' f18 '
KEY_HOT_F19 = 0x82 if WIN else ' f19 '
KEY_HOT_F20 = 0x83 if WIN else ' f20 '
KEY_HOT_F21 = 0x84 if WIN else ' f21 '
KEY_HOT_F22 = 0x85 if WIN else ' f22 '
KEY_HOT_F23 = 0x86 if WIN else ' f23 '
KEY_HOT_F24 = 0x87 if WIN else ' f24 '
KEY_HOT_TILDE = 0x29 if WIN else ' ~ ' #~
KEY_HOT_COLON = 0x27 if WIN else ' : ' #:
KEY_HOT_PLUS = 0x0D if WIN else ' + ' #+
KEY_HOT_MINUS = 0x0C if WIN else ' - ' #-
KEY_HOT_LESS_THAN = 0x33 if WIN else ' < ' #< ,
KEY_HOT_GREATER_THAN = 0x34 if WIN else ' > ' #> .
KEY_HOT_SOLIDUS = 0x35 if WIN else ' / ' #/ ?
KEY_HOT_SQUARE_BRACKET_LEFT = 0x1A if WIN else ' [ ' #[
KEY_HOT_SQUARE_BRACKET_RIGHT = 0x1B if WIN else ' ] ' #]
KEY_HOT_APOSTROPHE = 0x28 if WIN else " ' " #' "
KEY_HOT_VERTICAL_LINE = 0x2B if WIN else ' | ' #| \
KEY_HOT_ESC = 0x1 if WIN else ' esc '
KEY_HOT_BACKSPACE = 0x0E if WIN else ' backspace '
KEY_HOT_TAB = 0x0F if WIN else ' tab '
KEY_HOT_ENTER = 0x1C if WIN else ' enter '
KEY_HOT_CONTEXT_MENU = 0x15D if WIN else ' apps '
KEY_HOT_SHIFT_LEFT = 0x2A if WIN else ' shiftleft '
KEY_HOT_SHIFT_RIGHT = 0x36 if WIN else ' shiftright '
KEY_HOT_CTRL_LEFT = 0x1D if WIN else ' ctrlleft '
KEY_HOT_CTRL_RIGHT = 0x11D if WIN else ' ctrlright '
KEY_HOT_ALT_LEFT = 0x38 if WIN else ' altleft '
KEY_HOT_ALT_RIGHT = 0x138 if WIN else ' altright '
KEY_HOT_WIN_LEFT = 57435 if WIN else ' winleft ' #OLD AND DONT WORK 0x5B
KEY_HOT_WIN_RIGHT = 57436 if WIN else ' winright ' #OLD AND DONT WORK 0x5C
KEY_HOT_CAPS_LOCK = 0x3A if WIN else ' capslock '
KEY_HOT_NUM_LOCK = 0x45 if WIN else ' numlock '
KEY_HOT_SCROLL_LOCK = 0x46 if WIN else ' scrolllock '
KEY_HOT_END = 0x4F if WIN else ' end '
KEY_HOT_HOME = 0x47 if WIN else ' home '
KEY_HOT_SPACE = 0x39 if WIN else ' space '
KEY_HOT_PAGE_UP = 0x49 if WIN else ' pageup '
KEY_HOT_PAGE_DOWN = 0x51 if WIN else ' pagedown '
KEY_HOT_CLEAR = 0x4C if WIN else ' clear '
KEY_HOT_LEFT = 0x4B if WIN else ' left '
KEY_HOT_UP = 0x48 if WIN else ' up '
KEY_HOT_RIGHT = 0x4D if WIN else ' right '
KEY_HOT_DOWN = 0x50 if WIN else ' down '
KEY_HOT_PRINT_SCREEN = 0x137 if WIN else ' printscreen '
KEY_HOT_INSERT = 0x52 if WIN else ' insert '
KEY_HOT_DELETE = 0x53 if WIN else ' delete '
KEY_HOT_0 = 0xB if WIN else ' 0 '
KEY_HOT_1 = 0x2 if WIN else ' 1 '
KEY_HOT_2 = 0x3 if WIN else ' 2 '
KEY_HOT_3 = 0x4 if WIN else ' 3 '
KEY_HOT_4 = 0x5 if WIN else ' 4 '
KEY_HOT_5 = 0x6 if WIN else ' 5 '
KEY_HOT_6 = 0x7 if WIN else ' 6 '
KEY_HOT_7 = 0x8 if WIN else ' 7 '
KEY_HOT_8 = 0x9 if WIN else ' 8 '
KEY_HOT_9 = 0xA if WIN else ' 9 '
MAP_RUS_ENG = { # FOR LINUX PURPOSE
" Ё " : " ` " ,
" Й " : " q " ,
" Ц " : " w " ,
" У " : " e " ,
" К " : " r " ,
" Е " : " t " ,
" Н " : " y " ,
" Г " : " u " ,
" Ш " : " i " ,
" Щ " : " o " ,
" З " : " p " ,
" Х " : " [ " ,
" Ъ " : " ] " ,
" Ф " : " a " ,
" Ы " : " s " ,
" В " : " d " ,
" А " : " f " ,
" П " : " g " ,
" Р " : " h " ,
" О " : " j " ,
" Л " : " k " ,
" Д " : " l " ,
" Ж " : " ; " ,
" Э " : " ' " ,
" Я " : " z " ,
" Ч " : " x " ,
" С " : " c " ,
" М " : " v " ,
" И " : " b " ,
" Т " : " n " ,
" Ь " : " m " ,
" Б " : " , " ,
" Ю " : " . "
}
def Write ( inTextStr : str , inDelayFloat : float = 0 , inRestoreStateAfterBool : bool = True , inExactBool : bool = None , inWaitAfterSecFloat : float = WAIT_AFTER_SEC_FLOAT ) :
""" L+,W+: Печатает текст, который был передан в переменной inTextStr (поддерживает передачу в одной строке символов разного языка). Н е зависит от текущей раскладки клавиатуры! Посылает искусственные клавишные события в О С , моделируя печать данного текста. Знаки, не доступные на клавиатуре, напечатаны как явный unicode знаки, использующие определенную для О С функциональность, такие как alt+codepoint.
Чтобы гарантировать текстовую целостность , все в настоящее время нажатые ключи выпущены прежде текст напечатан , и модификаторы восстановлены впоследствии .
ВНИМАНИЕ ! ПЕЧАТАЕТ ЛЮБУЮ С Т Р О К У , ДАЖЕ В СОЧЕТАНИИ НЕСКОЛЬКИХ ЯЗЫКОВ ОДНОВРЕМЕННО . ДЛЯ РАБОТЫ С ГОРЯЧИМИ КЛАВИШАМИ ИСПОЛЬЗУЙ ФУНКЦИЮ Send , Up , Down , HotkeyCombination
ВНИМАНИЕ ! В LINUX Н Е ДЕЙСТВУЮТ СЛЕДУЮЩИЕ ПАРАМЕТРЫ : inRestoreStateAfterBool , inExactBool
. . code - block : : python
# Keyboard: Взаимодействие с клавиатурой
from pyOpenRPA . Robot import Keyboard
Keyboard . Write ( " Привет мой милый мир! Hello my dear world! " )
: param inTextStr : Текст , отправляемый на печать . Н е зависит от текущей раскладки клавиатуры !
: type inTextStr : str
: param inDelayFloat : Число секунд , которое ожидать между нажатиями . По умолчанию 0
: type inDelayFloat : float , опциональный
: param inRestoreStateAfterBool : Может использоваться , чтобы восстановить регистр нажатых ключей после того , как текст напечатан , т . е . нажимает ключи , которые были выпущены в начало .
: type inRestoreStateAfterBool : bool , опциональный
: param inExactBool : Печатает все знаки как явный unicode . Необязательный параметр
: type inExactBool : bool , опциональный
: param inWaitAfterSecFloat : Количество секунд , которые ожидать после выполнения операции . По умолчанию установлено в настройках модуля Keyboard ( базовое значение 0.4 )
: type inWaitAfterSecFloat : float , опциональный
"""
if CrossOS . IS_WINDOWS_BOOL :
write ( text = inTextStr , delay = inDelayFloat , restore_state_after = inRestoreStateAfterBool , exact = inExactBool )
elif CrossOS . IS_LINUX_BOOL :
_WriteLinux ( inTextStr = inTextStr , inDelayFloat = inDelayFloat )
time . sleep ( inWaitAfterSecFloat )
def _WriteLinux ( inTextStr , inDelayFloat = 0.01 ) :
lModuleKeyboard = sys . modules [ __name__ ]
lVarList = dir ( lModuleKeyboard )
lLayoutStr = None
for lCharStr in inTextStr :
# Check rus (ru)
lVarNameStr = f " KEY_RUS_ { lCharStr . upper ( ) } "
lFoundBool = False
lShiftBool = False
if lVarNameStr in lVarList :
lNewLayoutStr = getattr ( lModuleKeyboard , " KEY_RUS_LAYOUT " )
lCapBool = lCharStr . isupper ( )
lCharStr = MAP_RUS_ENG [ lCharStr . upper ( ) ]
#if lCapBool == True: lCharStr=lCharStr.upper()
if lCapBool == True : lShiftBool = True
lFoundBool = True
# Check eng (us)
lVarNameStr = f " KEY_ENG_ { lCharStr . upper ( ) } "
if lVarNameStr in lVarList and lFoundBool == False :
lNewLayoutStr = getattr ( lModuleKeyboard , " KEY_ENG_LAYOUT " )
lFoundBool = True
if lFoundBool == False : lNewLayoutStr = getattr ( lModuleKeyboard , " KEY_ENG_LAYOUT " )
# CHECK LAST LAYOUT
if lNewLayoutStr != lLayoutStr :
#print(f"setxkbmap -layout {lNewLayoutStr}")
os . system ( f " setxkbmap -layout { lNewLayoutStr } " )
lLayoutStr = lNewLayoutStr
if lShiftBool == True : pyautogui . keyDown ( ' shift ' ) # hold down the shift key
pyautogui . write ( lCharStr , interval = inDelayFloat )
if lShiftBool == True : pyautogui . keyUp ( ' shift ' ) # hold down the shift key
# Set 2 layout with alt+shift switch
os . system ( f " setxkbmap -layout { getattr ( lModuleKeyboard , ' KEY_ENG_LAYOUT ' ) } , { getattr ( lModuleKeyboard , ' KEY_RUS_LAYOUT ' ) } -option grp:alt_shift_toggle " )
def HotkeyCombination ( * inKeyList , inDelaySecFloat = 0.3 , inWaitAfterSecFloat : float = WAIT_AFTER_SEC_FLOAT ) :
""" Получает перечень клавиш для одновременного нажатия. Между нажатиями программа ожидания время inDelaySecFloat
ВНИМАНИЕ ! Н Е ЗАВИСИТ О Т ТЕКУЩЕЙ РАСКЛАДКИ КЛАВИАТУРЫ
. . code - block : : python
# Keyboard: Взаимодействие с клавиатурой
from pyOpenRPA . Robot import Keyboard
Keyboard . HotkeyCombination ( Keyboard . KEY_HOT_CTRL_LEFT , Keyboard . KEY_ENG_A ) # Ctrl + a
Keyboard . HotkeyCombination ( Keyboard . KEY_HOT_CTRL_LEFT , Keyboard . KEY_ENG_C ) # Ctrl + c
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 )
: param inKeyList : Список клавиш для одновременного нажатия . Перечень клавиш см . в разделе " Коды клавиш " . Пример : KEY_HOT_CTRL_LEFT , KEY_ENG_A
: param inDelaySecFloat : Интервал между нажатиями . Необходим в связи с тем , что операционной системе требуется время на реакцию на нажатие клавиш , по умолчанию : 0.3
: type inDelaySecFloat : float , опциональный
: param inWaitAfterSecFloat : Количество секунд , которые ожидать после выполнения операции . По умолчанию установлено в настройках модуля Keyboard ( базовое значение 0.4 )
: type inWaitAfterSecFloat : float , опциональный
"""
for l_key_item in inKeyList :
if l_key_item == inKeyList [ - 1 ] :
send ( l_key_item )
else :
press ( l_key_item )
time . sleep ( inDelaySecFloat )
lRevKeyList = list ( reversed ( inKeyList ) )
for l_key_item in lRevKeyList :
if l_key_item == lRevKeyList [ 0 ] :
pass
else :
release ( l_key_item )
time . sleep ( inDelaySecFloat )
time . sleep ( inWaitAfterSecFloat )
def HotkeyCtrlV ( inWaitAfterSecFloat : float = 0.4 ) - > None :
""" Выполнить вставку текста из буфера обмена
ВНИМАНИЕ ! Н Е ЗАВИСИТ О Т ТЕКУЩЕЙ РАСКЛАДКИ КЛАВИАТУРЫ
. . code - block : : python
# Keyboard: Взаимодействие с клавиатурой
from pyOpenRPA . Robot import Keyboard
Keyboard . HotkeyCtrlV ( )
: param inWaitAfterSecFloat : Количество секунд , которые ожидать после выполнения операции . По умолчанию установлено в настройках модуля Keyboard ( базовое значение 0.4 )
: type inWaitAfterSecFloat : float , опциональный
"""
HotkeyCombination ( KEY_HOT_CTRL_LEFT , KEY_ENG_V ) # Ctrl + v
time . sleep ( inWaitAfterSecFloat )
def HotkeyCtrlA_CtrlC ( inWaitAfterSecFloat : float = 0.4 ) - > None :
""" Выполнить выделение текста, после чего скопировать е г о в буфер обмена
ВНИМАНИЕ ! Н Е ЗАВИСИТ О Т ТЕКУЩЕЙ РАСКЛАДКИ КЛАВИАТУРЫ
. . code - block : : python
# Keyboard: Взаимодействие с клавиатурой
from pyOpenRPA . Robot import Keyboard
Keyboard . HotkeyCtrlA_CtrlC ( ) # Отправить команды: выделить все, скопировать в буфер обмена
: param inWaitAfterSecFloat : Количество секунд , которые ожидать после выполнения операции . По умолчанию установлено в настройках модуля Keyboard ( базовое значение 0.4 )
: type inWaitAfterSecFloat : float , опциональный
"""
HotkeyCombination ( KEY_HOT_CTRL_LEFT , KEY_ENG_A ) # Ctrl + a
HotkeyCombination ( KEY_HOT_CTRL_LEFT , KEY_ENG_C ) # Ctrl + c
time . sleep ( inWaitAfterSecFloat )
def Send ( inKeyInt : int , inDoPressBool : bool = True , inDoReleaseBool : bool = True , inWaitAfterSecFloat : float = WAIT_AFTER_SEC_FLOAT ) - > None :
"""
Имитация нажатия / отпускания любой физической клавиши . Посылает событие в операционную систему , которые выполняет нажатие и отпускание данной клавиши
ВНИМАНИЕ ! ПРИ ПОПЫТКЕ ПЕЧАТИ Т Е К С Т А БУДЕТ УЧИТЫВАТЬ ТЕКУЩУЮ РАСКЛАДКУ КЛАВИАТУРЫ . ДЛЯ ПЕЧАТИ Т Е К С Т А ИСПОЛЬЗУЙ Write !
. . code - block : : python
# Keyboard: Взаимодействие с клавиатурой
from pyOpenRPA . Robot import Keyboard
Keyboard . Send ( Keyboard . KEY_ENG_A ) # Нажать клавишу A. Если будет активна русская раскладка, то будет выведена буква ф.
: param inKeyInt : Перечень клавиш см . в разделе " Коды клавиш " . Пример : KEY_HOT_CTRL_LEFT , KEY_ENG_A
: type inKeyInt : int
: param inDoPressBool : Выполнить событие нажатия клавиши , По умолчанию True
: type inDoPressBool : bool , опциональный
: param inDoReleaseBool : Выполнить событие отпускания клавиши , По умолчанию True
: type inDoReleaseBool : bool , опциональный
: param inWaitAfterSecFloat : Количество секунд , которые ожидать после выполнения операции . По умолчанию установлено в настройках модуля Keyboard ( базовое значение 0.4 )
: type inWaitAfterSecFloat : float , опциональный
"""
send ( hotkey = inKeyInt , do_press = inDoPressBool , do_release = inDoReleaseBool )
time . sleep ( inWaitAfterSecFloat )
def Up ( inKeyInt : int , inWaitAfterSecFloat : float = WAIT_AFTER_SEC_FLOAT ) - > 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 : Количество секунд , которые ожидать после выполнения операции . По умолчанию установлено в настройках модуля Keyboard ( базовое значение 0.4 )
: type inWaitAfterSecFloat : float , опциональный
"""
send ( hotkey = inKeyInt , do_press = False , do_release = True )
time . sleep ( inWaitAfterSecFloat )
def Down ( inKeyInt : int , inWaitAfterSecFloat : float = WAIT_AFTER_SEC_FLOAT ) - > 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 : Количество секунд , которые ожидать после выполнения операции . По умолчанию установлено в настройках модуля Keyboard ( базовое значение 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 = WAIT_AFTER_SEC_FLOAT ) :
""" Блокирует осуществление программы, пока данная обозначенная клавиша не будет нажата.
ВНИМАНИЕ ! Н Е ЗАВИСИТ О Т ТЕКУЩЕЙ РАСКЛАДКИ КЛАВИАТУРЫ . ОЖИДАЕТ НАЖАТИЕ СООТВЕТСВУЮЩЕЙ ФИЗИЧЕСКОЙ КЛАВИШИ
. . code - block : : python
# Keyboard: Взаимодействие с клавиатурой
from pyOpenRPA . Robot import Keyboard
Keyboard . Wait ( Keyboard . KEY_ENG_A ) # Ждать нажатие клавиши A.
: param inKeyInt : Перечень клавиш см . в разделе " Коды клавиш " . Пример : KEY_HOT_CTRL_LEFT , KEY_ENG_A
: type inKeyInt : int
: param inWaitAfterSecFloat : Количество секунд , которые ожидать после выполнения операции . По умолчанию установлено в настройках модуля Keyboard ( базовое значение 0.4 )
: type inWaitAfterSecFloat : float , опциональный
"""
wait ( hotkey = inKeyInt )
time . sleep ( inWaitAfterSecFloat )
if CrossOS . IS_WINDOWS_BOOL : key_to_scan_codes ( " win " ) # 2022 06 10 Люблю смотреть скан код клавиши Виндовс :)