Pergunta

Para tal pergunta, eu estou surpreso que eu não poderia encontrar qualquer coisa pesquisando...

De qualquer forma, eu fiz um maldições aplicativo em Python que auxilia na resolução de quebra-cabeças de uma certa DSiWare jogo.Com ele, você pode tomar um quebra-cabeça e inspecionar os componentes individualmente.As chaves qweasdzx são usados para pintar azulejos (as chaves estão organizados em algum tipo de paleta).Pressionar uma destas teclas enquanto mantém a tecla Shift destaques peças com essa cor.Eu não poderia pedir de uma forma mais natural esquema de controle.

Então, é uma pena que, mais uma vez, a Mudança está me dando problemas (da última vez eu tive problemas com a Mudança, eu ganhei um Tumbleweed crachá).Apesar de, desta vez, o problema é mais ou menos o Caps Lock, que completamente os parafusos até o meu programa, invertendo as funções.

Como posso detectar o estado da tecla Caps Lock em Python com maldições?

EDITAR:Se você estiver indo para sugerir o uso de um módulo separado, eu provavelmente devo lembrá-lo que maldições - e, portanto, o meu programa é em UNIX território.

Foi útil?

Solução

Eu encontrei uma solução no meu próprio:

Desde maldições é completamente inconsciente do Caps Lock definição, de acordo com ΤΖΩΤΖΙΟΥ, eu tentei uma solução alternativa.Especificamente, eu olhei para cima como para verificar se a tecla Caps Lock em um BASH script.O que eu encontrei foi isso:

Somente Linux.Requer O Sistema X Window.

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

O último 0, em que a saída (a 66ª caractere na seqüência de caracteres) é o Caps Lock bandeira.1 se, 0 se ele está desligado.

Python pode executar UNIX comandos do sistema com o Linux somente comandos módulo.comandos não parecem interferir com maldições.

>>> 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'

Isso funciona bem para mim;este é um pessoal-uso de scripts, e não é como o meu programa não era já o Linux exclusiva.Mas eu espero que alguém tem outra, mais compatível com o Windows solução.

Eu vou aceitar isso de auto-resposta para hoje, mas se alguém pode vir até com um trabalho melhor solução, eu gostaria de vê-lo.

Outras dicas

A resposta curta:você não pode.

Uma resposta mais longa:

maldições foi criado como um terminfo-base de biblioteca para facilitar a criação de personagem baseado em Interfaces independentes do terminal utilizado (for terminal in 'vt220', 'wyse100', …).

Estes terminais conectados através de uma linha serial e a comunicação de ida e volta do anfitrião foram através de texto sem formatação (entrada de dados pelo usuário ou de saída pelo host) ou especial sequências (seqüências de"escape";a entrada de dados pelo usuário se especial teclas foram pressionadas, como ou Anterior, ou de saída pelo anfitrião se de operações especiais como o posicionamento do cursor de tela ou de compensação foi solicitado).

Eu não tenho conhecimento de qualquer terminal envio de uma seqüência especial sempre que a tecla Caps Lock estava deprimido, ou o acolhimento da consulta para o estado de Caps Lock;fecho capitais foi parte do trabalho do terminal, e o anfitrião não tinha necessidade de qualquer conhecimento.Isso é semelhante para a razão que você não pode ter um maldições programa de agir quando a chave de Controle é deprimido por conta própria.

Tudo sobre maldições relaciona-se com terminfo capacidades;não há qualquer relacionadas com a capacidade para que você pedir.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top