Determinar as teclas digitadas qual teclado está enviando

votos
2

Eu tenho 2 teclados ligado a minha máquina (um em PS / 2, o outro em USB). Como eu iria determinar qual teclado está enviando as teclas digitadas em C #?

Publicado 26/08/2009 em 23:07
fonte usuário
Em outras línguas...                            


5 respostas

votos
3

Aqui está um exemplo, o código muito sujo, mostrando como usar gancho de entrada janelas de .NET. Funciona melhor com trechos Compiler:>

EDIT: Acontece que há um limite de tamanho para mensagens,

agarrar a fonte a partir do código aqui

.

Respondeu 27/08/2009 em 01:45
fonte usuário

votos
2

Se um está em USB, então você deve ser capaz de descobrir isso - pelo menos no nível do driver. No entanto, mais acima na pilha de eu não ter ouvido falar de tal opção. Eu não ficaria surpreso se não fosse possível a todos.

Uma avenida que você pode querer verificar para fora são os simuladores de dança. Você sabe, aqueles com o "tapete de dança" (ou "tapete de dança"). Estes tapetes de dança são realmente nada mais do que, mas grandes teclados. Check it out yourself - abrir o bloco de notas e saltar sobre o tapete de dança. :)

Agora, alguns desses programas também oferecem modo competitivo, onde você pode ligar dois tapetes de dança e competir com um parceiro. Neste caso, eles teriam de distinguir entre as esteiras de alguma forma - que é a mesma coisa que você está tentando fazer.

Respondeu 26/08/2009 em 23:38
fonte usuário

votos
1

Ok, aqui está um realmente método kludgy que só iria trabalhar com um muito subconjunto limitado de casos de uso:

  1. Fita, cola para baixo, ou curta um conjunto de teclas modificadoras (Direito Ctrl, por exemplo) em um dos teclados.
  2. Em cada tecla pressionada, olhar para os modificadores. Se os modificadores são definidos como seriam no teclado colado para baixo, suponha que o teclado é a fonte. Se não, assumir que é o outro teclado.

limitações:

  1. Você não pode usar o teclado colado fora a sua aplicação, uma vez que apenas ele sabe a ignorar as teclas modificadoras.
  2. Você não pode usar essas teclas modificadoras dentro de seu próprio aplicativo como parte de atalhos de teclado.
  3. O outro teclado pode personificar o seu (acidentalmente ou não) se o usuário mantém pressionados os botões corretos.
  4. Você precisará desativar as teclas de aderência.
  5. Usando Alt ou Ctrl tem um lado negativo: se você pressionar o outro um, o Windows pode ter um uso para essa combinação que a sua aplicação não vai pegar.

Desconhecida # 1 : se ModifierKeys só é preenchida a partir do teclado que foi a origem do clique de tecla, ou vem da soma de todos os modificadores em todos os teclados conectados. Eu suspeito que cada teclado envia internamente os modificadores ligados ao keystroke e que o Windows não agregá-los.

Unknown # 2 : se ou não System.Windows.Forms.Control.ModifierKeys fornece única Ctrl / Shift / pedaços Alt, ou fornece detalhes suficientes para, por exemplo, distinguir a tecla Direita Ctrl da esquerda. Aqui estão as chaves que você poderia, teoricamente, testar para, eu não sei quantos são fornecidos via ModifierKeys:

http://msdn.microsoft.com/en-us/library/system.windows.forms.keys.aspx

Respondeu 27/08/2009 em 00:53
fonte usuário

votos
1

Eu estou supondo que o problema é que quando o scanner de código de barras é usado, o número está indo para o campo ativo em vez do campo para a identificação de código de barras?

Uma solução seria a de ligar eventos OnChange dos demais campos e olhar para um número de código de barras inserido neles (via RegEx). Se encontrado, mover o código de barras fora desse campo e mover o valor para o campo de código de barras.

Sem acesso ao dispositivo necessário, este mesmo poderia ser feito em uma página web Javascript-driven.

Respondeu 26/08/2009 em 23:57
fonte usuário

votos
0

Eu acho que a única maneira que você poderia fazer isso seria se você estava monitorando o tráfego USB. Já vi programas que fazem isso, mas não tenho idéia de como fazê-lo em C #. Assim, se há tráfego USB e uma combinação de teclas, é o teclado USB. Se não há tráfego, é o PS / 2 um.

Naturalmente a outra ressalva com isso é que ele não generalizar para tipos de conexão do teclado arbitrárias ou futuros.

Respondeu 26/08/2009 em 23:36
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more