Pregunta

Para una pregunta tan básica, me sorprende que no pude encontrar nada al buscar ...

De todos modos, hice una aplicación de maldiciones en Python que ayuda a resolver los rompecabezas de un cierto juego DSIWARE.Con él, puede tomar un rompecabezas e inspeccionar los componentes individualmente.Los teclas qweasdzx se utilizan para pintar las baldosas (las teclas están dispuestas en algún tipo de paleta).Presionando una de estas teclas mientras mantiene presionado las baldosas con ese color.No podía pedir un plan de control más natural.

Entonces, es una pena que, una vez más, Shift me está dando problemas (la última vez que tuve problemas con Shift, obtuve una insignia de Tumbleweed).Aunque esta vez, el problema es más o menos bloqueo de CAPS, lo que atornilla completamente mi programa invirtiendo las funciones.

¿Cómo puedo detectar el estado del bloqueo de CAPS en Python con maldiciones?

Editar: Si sugiere usar un módulo separado, probablemente debería recordarle las maldiciones, y por lo tanto mi programa, está en un territorio de UNIX.

¿Fue útil?

Solución

Encontré una solución por mi cuenta:

Dado que las maldiciones no saben que la configuración de bloqueo de las tapas de acuerdo con τζωτζιου, intenté una solución alternativa. Específicamente, miré cómo verificar las tapas cerraduras en un script de bash. Lo que encontré fue esto:

linux solamente. Requiere x sistema de ventana.

$ xset q | grep LED
>  auto repeat:  on    key click percent:  0    LED mask:  00000000

Los últimos 0 en esa salida (el 66º carácter en la cadena) es el indicador de bloqueo de las tapas. 1 Si está encendido, 0 si está apagado.

Python puede ejecutar comandos del sistema Unix con el Linux-solo Comandos Módulo. Los comandos no parecen interferir con las maldiciones.

>>> import commands
>>> # Caps Lock is off.
>>> commands.getoutput("xset q | grep LED")[65]
'0'
>>> # Setting Caps Lock on now.
>>> commands.getoutput("xset q | grep LED")[65]
'1'

Esto funciona bien para mí; Este es un script de uso personal, y no es que mi programa ya no fue exclusivo de Linux. Pero espero que alguien tenga otra solución más compatible con Windows.

Voy a aceptar esta respuesta propia por ahora, pero si alguien más puede encontrar una mejor solución de trabajo, me gustaría verlo.

Otros consejos

La respuesta corta: no puedes.

Una respuesta más larga:

Las maldiciones se crearon como una biblioteca basada en Terminfo para facilitar la creación de UIS basada en caracteres independientes del terminal utilizado (for terminal in 'vt220', 'wyse100', …).

Estos terminales conectados a través de una línea de serie y la comunicación a otro, el huésped se realizó a través de texto sin formato (entrada por el usuario o salida por el host) o secuencias especiales (secuencias "Escape"; Entrada por el usuario si Se presionaron las teclas especiales, como o anterior , o salida por el host si se solicitó operaciones especiales como el posicionamiento del cursor o la compensación de la pantalla).

No tengo conocimiento de cualquier terminal tonto enviando una secuencia especial siempre que se presione la tecla de bloqueo de las tapas, o la consulta del host para el estado de bloqueo de las tapas; Los capitales de bloqueo formaban parte del trabajo de la terminal, y el anfitrión no tenía necesidad de ningún conocimiento. Esto es similar a la razón por la que no puede tener un programa de maldiciones. Actúa cuando la clave de control está deprimida por sí misma.

Todo sobre las maldiciones se relaciona con Terminfo Capacidades; No hay ninguna capacidad relacionada para lo que le preguntas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top