Pergunta

Você pode ter ouvido de PawSense , um Windows-only utilitário que impede que as teclas digitadas sejam introduzidos quando se acredita que há um gato ou outro animal na entrada absurdo digitação do teclado, como "zlxkkkkkkkk;". Parece um projeto divertido de fazer no meu tempo livre, mas eu estava pensando sobre alguns detalhes de implementação.

Eu acho que eu poderia fazer a parte de reconhecimento de padrões do mesmo, ou com heurísticas codificadas ou usando algum tipo de algoritmo de reconhecimento de padrões (que eu tenho sido exposto a antes e se sentir confortável com). Minha pergunta é sobre os sistemas lado das coisas e a lógica de programação de como você iria bloquear a entrada.

Você precisa ter o seu pedido de observar dados e apresentar um desafio se você detectar digitação gato. Você manter um buffer de teclas recentes e só deixá-los passar se fosse digitação não-gato? Ou se não estava ocorrendo digitação gato, você só permitem um número pequeno através antes de bloquear a entrada? Qual seria a lógica real que você gostaria de usar?

Como para a mecânica de bloqueio de entrada, digamos, C #, há outras perguntas sobre este site. A minha pergunta, para reiterar, é o que a lógica que você usaria para detectar e digitação bloco de gato.

Foi útil?

Solução

Eu esperaria até que eu acho que há um gato no teclado, em seguida, bloquear a entrada, como um buffer pode ser problemático.

Por exemplo, se eu estou escrevendo, e janelas de comutação rápida, digitando, como você determinar onde as combinações de teclas deve ser?

Mantenha-o tão simples como ele precisa ser.

Outras dicas

Você precisa olhar para a introdução de um Win32 gancho systemwide . Este artigo MSDN aborda os conceitos básicos deste (atenção que especifica tanto aplicação ou segmento de nível de ganchos e ganchos de todo o sistema).

Depois de entender isso, você precisa pegar várias mensagens relacionados com o teclado, WM_KEYUP com certeza, algumas mensagens outros WM_KEYxxxx, bem como, dependendo de suas necessidades).

Em seguida, você precisa introduzir a lógica que decide se as teclas digitadas são válidas ou rabiscos, e quer passar-nos mensagens (para que eles possam, eventualmente, escorrem para a aplicação que tem foco) ou ignorá-los.

Sem saber nada sobre isso, eu iria começar baseando-se em como chaves longa são pressionados e não no que as chaves são realmente pressionado, pensar que um animal não vai simplesmente pressione uma tecla e liberá-lo muito rapidamente, depois outro , etc., mas é mais provável para fazer uma pausa em um conjunto de chaves.

Então, se você pode simplesmente keypresses tempo, eu acho que o trabalho poder.

Pensando carga. Gostaria de começar com algo como a seguir:

  1. Aguarde nenhuma atividade do usuário para, como:. 2 minutos de tempo
  2. Inicie seu aplicativo
  3. Ouça a acertos de teclado
  4. Combinar as teclas digitadas, se existir no dicionário
  5. Bloquear o teclado após seis ou sete.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top