Vjoy e pyautogui
Dicas para de uso do vjoy, pyautogui e controle de volume do Windows.
vjoy
Nós utilizamos o pacote pyvjoy
que possibilita controlarmos o vjoy
via python. Ele é apenas uma camada de abstração do vjoy.
Nós sugerimos vocês trabalharem com a monitor
do vjoy aberto, para conseguirem depurar visualmente o que está acontecendo com o controle.
Criando
Criando um joystick
import pyvjoy
j = pyvjoy.VJoyDevice(1)
Acionando um botão
Acionando o botão 15
j.set_button(15,1)
Info
O vjoy mantém o valor mesmo com o programa reiniciado, se apertar o botão 15 e deixar ele apertado, da próxima vez que for usar o controle ele vai continuar apertado.
Soltando o botão 15
j.set_button(15,0)
Notem que o j.set_button
recebe: (buttonID,state)
Analógico
O vjoy possui várias entradas analógicas, sendo as principais:
HID_USAGE_X
HID_USAGE_Y
HID_USAGE_Z
HID_USAGE_RX
HID_USAGE_RY
HID_USAGE_RZ
O range da entrada analógica é de 1
(total esquerda) até 32768
(total direita).
# total esquerda
j.set_axis(pyvjoy.HID_USAGE_X, 0x1)
# total direita
j.set_axis(pyvjoy.HID_USAGE_X, 32768)
pyautogui
O pyautogui é um lib que permite emularmos ações do teclado e mouse via python.
Tip
Se o pyautogui não funcionar no seu jogo, substitua o pyautogui por pydirectinput.
Manter tecla pressionada
Por padrão a lib não permite manter uma tecla pressionada (e ficar repetitivamente enviando o mesmo valor), para desativar basta remover o delay:
def __init__(self, port, baudrate):
pyautogui.PAUSE = 0 ## remove delay
Agora uma tecla "pressionada" ira ser enviada repetitivamente
keyboard
O pyautogui disponibiliza duas formas diferentes de apertarmos uma tecla:
press
que é uma ação de apertar e soltar uma teclakeyDown
ekeyUp
que são aćoes distintas de apertar e soltar
pyautogui.keyDown('shift') # hold down the shift key
pyautogui.press('left') # press the left arrow key
pyautogui.press('left') # press the left arrow key
pyautogui.press('left') # press the left arrow key
pyautogui.keyUp('shift') # release the shift key
Para uma lista des teclas suportas acesse:
Se precisar fazer um combo (hotkeys) de teclas como o: ctrl
+ alt
+ f4
, use o hotkeys
:
pyautogui.hotkey('ctrl', 'shift', 'f4')
Emulando mouse
A documentacão oficial é muito boa:
Volume
Para o controle do volume do windows, podemos usar o pycaw
:
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume
devices = AudioUtilities.GetSpeakers()
interface = devices.Activate(IAudioEndpointVolume._iid_, CLSCTX_ALL, None)
volume = cast(.interface, POINTER(IAudioEndpointVolume))
E agora podemos definir o volume com:
volume.SetMasterVolumeLevel(VALUE, None)
Sendo VALUE
um valor em decibéis (0 é máximo e -51
mínimo), use a tabela a seguir como escala:
volume2decibal = {
0.00: -51,
0.05: -40,
0.10: -30.848,
0.15: -26,
0.20: -22.477,
0.25: -20,
0.30: -17.111,
0.35: -15,
0.40: -13.152,
0.45: -11,
0.50: -10.015,
0.55: -8.5,
0.60: -7.415,
0.65: -6,
0.70: -4.991,
0.75: -4,
0.80: -3.26,
0.85: -2,
0.90: -1.381,
0.95: -0.6,
1: 0
}