teclas - libreria keyboard python
Detectando pulsaciones de teclas usando win32api en Python (3)
Esta no es la forma en que funciona en la programación de GUI. No llamas a un método para verificar si presionas la tecla. En cambio, recibes mensajes cuando se presionan las teclas. Suponiendo que tiene una ventana que está recibiendo entrada, entonces debe responder al mensaje WM_KEYDOWN
que llega al procedimiento de su ventana o al mapa de mensajes en términos de Python win32api.
Su edición muestra que no está utilizando la cola de mensajes, que es bastante inusual. Puede lograr lo que desee llamando a GetAsyncKeyState()
.
Estoy tratando de romper un ciclo en Python con una pulsación de tecla específica usando win32api. ¿Cómo podría uno hacer esto?
¿Cuál es la versión real de win32api.KeyPress (''H'') en el siguiente código?
Revisado:
import win32api
while True :
cp = win32api.GetCursorPos()
print cp
if win32api.KeyPress(''H'') == True :
break
Quiero poder romper un ciclo presionando la tecla h .
Editar:
Estoy intentando hacer un programa que informe repetidamente las posiciones del mouse y necesito un mecanismo para salir de dicho programa.
Ver el código revisado.
win32api
es solo una interfaz para la biblioteca subyacente de bajo nivel de Windows. Ver la función GetAsyncKeyState
:
Determina si una tecla está activada o desactivada en el momento en que se llama a la función, y si se presionó la tecla después de una llamada anterior a GetAsyncKeyState.
Sintaxis
SHORT WINAPI GetAsyncKeyState(
__in int vKey
);
Valor de retorno
Tipo:
SHORT
Si la función tiene éxito, el valor de retorno especifica si se presionó la tecla desde la última llamada a GetAsyncKeyState, y si la tecla está actualmente activada o desactivada. Si se establece el bit más significativo, la tecla está desactivada, y si se establece el bit menos significativo, se presionó la tecla después de la llamada anterior a GetAsyncKeyState.
Tenga en cuenta que el valor de retorno está codificado en bits (no es boolean
). Para obtener los valores de vKey
, una aplicación puede usar las constantes de código de clave virtual en el módulo win32con
.
Por ejemplo, probando la tecla "BLOQ MAYÚS":
>>> import win32api
>>> import win32con
>>> win32con.VK_CAPITAL
20
>>> win32api.GetAsyncKeyState(win32con.VK_CAPITAL)
0
>>> win32api.GetAsyncKeyState(win32con.VK_CAPITAL)
1
La constante de clave virtual para letras simples son códigos ASCII, por lo que la prueba del estado de la tecla "H" (se presionó la tecla) se verá así:
>>> win32api.GetAsyncKeyState(ord(''H''))
1
Verifica el subwoofer de python en github, muy útil incluso si estás tratando de encontrar los códigos de tecla para enviar. También esto será útil si está ejecutando su código en segundo plano y desea romper el bucle desde fuera de la ventana.
proyecto de git: https://github.com/Tzbob/python-windows-tiler
código con las teclas de Windows: https://code.google.com/p/python-windows-tiler/source/browse/pwt/hotkey.py?r=df41af2a42b6304047a5f6f1f2903b601b22eb39