AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1597657
Accepted
Long
Long
Asked: 2020-10-28 03:51:27 +0800 CST2020-10-28 03:51:27 +0800 CST 2020-10-28 03:51:27 +0800 CST

Qual é o comportamento esperado ao manter pressionadas duas teclas em um teclado?

  • 772

Contexto

Um amigo e eu estamos jogando um jogo onde a otimização para jogar um determinado personagem no jogo é manter dois botões pressionados ao mesmo tempo, ou seja, as teclas Qe E. Isso significaria que, dentro do jogo, as duas habilidades vinculadas a essas teclas disparariam alternadamente.

Ou seja, ao segurar Qe E:Q E Q E Q E Q E Q E

Problema

O problema surge porque não consigo replicar o que meu amigo fez quando pressiono as teclas Q e E. O que recebo é:

ou seja. ao segurar Qe E: Q E E E E E E E E Eou E Q Q Q Q Q Q Q Q(dependendo de qual chave é detectada primeiro)

Depois de discutir com meu amigo, ele diz que seu rollover n-key, além de anti-ghosting, permite que isso funcione.

No entanto, uma vez que nós dois começamos a olhar mais profundamente para isso, fez cada vez menos sentido, já que ambos os nossos teclados têm os recursos mencionados acima. Ambos os nossos teclados estão listados abaixo se fornecer contexto adicional.

  • Meus amigos: GMMK Full Brown Switch
  • Meu teclado: Razer Hunstman Elite

O que estou tentando descobrir agora é o que permite que o teclado dele funcione da maneira que funciona, enquanto o meu não pode fazer o mesmo.

keyboard-shortcuts keyboard
  • 4 4 respostas
  • 6584 Views

4 respostas

  • Voted
  1. Best Answer
    hobbs
    2020-10-28T14:53:33+08:002020-10-28T14:53:33+08:00

    O anti-ghosting só entra em ação quando pelo menos três teclas são pressionadas - é irrelevante para apenas duas, então não importa aqui.

    E para teclados USB, o comportamento de repetição de teclas depende do software, não do teclado . O teclado simplesmente informa ao computador todas as teclas que estão pressionadas no momento (até o limite de "rollover" suportado pelo teclado) e avisa o computador sempre que esse estado mudar. É o SO responsável por comparar a lista de teclas retidas com o estado anterior e gerar os eventos apropriados de "tecla pressionada" e "tecla liberada", e é o SO responsável por perceber quando uma tecla foi pressionada por um determinado período de tempo e gerando eventos extras, se apropriado.

    Todos os sistemas que eu já vi se comportam da maneira que você descreve o comportamento do seu sistema - o typematic só gera repetições para a última tecla que foi pressionada, e apenas enquanto ela estiver pressionada (se você soltar essa tecla, mas ainda manter pressionadas outras teclas que foram pressionados anteriormente, não há repetições). Mas como o comportamento é definido por software, deve ser possível substituí-lo no software, desde que o teclado seja pelo menos 2KRO (o que basicamente todos os teclados são; 1KRO tornaria a digitação proficiente basicamente impossível).

    • 25
  2. LPChip
    2020-10-28T04:04:43+08:002020-10-28T04:04:43+08:00

    Para responder a essa pergunta, é preciso entender como funcionam os teclados.

    Se você olhar para os teclados anteriores, perceberá que o plugue tem apenas alguns pinos, não o mesmo número de pinos que as teclas do teclado.

    Dito isto, se você pressionar uma tecla no teclado, ela ainda será instantaneamente transferida para o computador sem nenhum atraso. Então, como isso é possível?

    Um teclado funciona com uma matriz de sinais horizontais e verticais. Todas as teclas são dispostas em uma grade, conforme mostrado em seu teclado. Quando você pressiona uma tecla, ela não diz apenas que a tecla "x" foi pressionada, mas sim que a tecla na coluna 3 e a linha 5 foram pressionadas. Isso significa que, no final, a quantidade de linhas de dados não é o número de chaves, mas apenas o número de linhas e colunas (otimizado).

    O problema agora diminui quando você pressiona várias teclas ao mesmo tempo, a matriz agora pode vir em um estado em que não pode saber com certeza qual tecla é pressionada, e é por isso que alguns teclados podem pressionar apenas 2 teclas de uma só vez e uma terceira tecla é ignorado.

    Para combater isso, a matriz foi redesenhada para evitar que isso aconteça, e é por isso que alguns teclados afirmam que você pode pressionar 4 ou 5 teclas, mas se você encontrar a combinação mágica, reduz para 2 novamente, mas acontece muito menos frequentemente devido a muitas tentativas e erros.

    Como isso acabou se tornando um problema, outros métodos foram usados ​​para realmente suportar vários pressionamentos de tecla, conhecidos como anti-ghosting. O problema aqui é que isso pode ser alcançado de várias maneiras, e é por isso que alguns teclados dão QEQEQE, outros QEEEE ou EQQQQQ.

    Para encurtar a história, em uma tentativa de permitir que várias teclas sejam pressionadas ao mesmo tempo, dependendo de quanto orçamento de desenvolvimento e qual método foi usado, o comportamento de pressionar várias teclas ao mesmo tempo é diferente para diferentes modelos.

    Teclados orientados para jogos mais recentes enviarão todas as teclas pressionadas muito rapidamente para o computador, para o driver via USB, que pode informar ao software quais teclas são pressionadas, o que mostra QEQEQEQE, enquanto as teclas mais antigas ainda usam uma matriz e usam teclas de hardware, que mostram apenas QEEEEEEE ou EQQQQQQ .

    • 11
  3. Sergey Vlasov
    2020-10-29T04:09:59+08:002020-10-29T04:09:59+08:00

    Com um teclado USB, esse tipo de comportamento de “repetição automática de duas teclas ao mesmo tempo” ocorre no Windows se o teclado enviar os eventos de pressionamento de tecla para ambas as teclas no mesmo relatório de entrada HID. Até testei isso com uma modificação personalizada no firmware do teclado QMK , onde posso controlar exatamente quais relatórios de entrada HID são enviados por USB. Outros sistemas operacionais podem não ter esse comportamento (por exemplo, o Linux sempre escolhe apenas uma chave para repetição automática).

    Quanto ao motivo pelo qual teclados diferentes têm comportamento diferente em relação a esse recurso, pode haver várias explicações:

    1. Cronometrar os pressionamentos de tecla para que eles sejam relatados no mesmo relatório de entrada HID pode ser mais difícil com uma taxa de varredura mais alta (assim, em um teclado mais antigo com a taxa de 250 Hz, acionar a repetição automática dupla pode ser mais fácil do que em um teclado mais novo com a taxa de 1000 Hz avaliar).

    2. Embora a maioria dos teclados de "jogos" hoje em dia anuncie "taxa de 1000 Hz" (portanto, as teclas pressionadas com mais de 1 ms devem ser relatadas em relatórios de entrada separados), esse tipo de publicidade nem sempre é 100% honesto - em particular, alguns debounce algoritmos podem fazer com que os pressionamentos de tecla relatados sejam sincronizados mesmo quando os pressionamentos de tecla físicos foram detectados com mais de 1 ms de intervalo.

    3. Alguns teclados podem estar executando um processamento especial no firmware (por exemplo, relacionado ao suporte a macros), o que resulta na geração de relatórios de entrada HID separados para cada alteração de estado de tecla - se o firmware do teclado for escrito dessa maneira, obtendo a "repetição automática dupla" de seria impossível mesmo com o tempo de pressionamento de tecla mais preciso.

    • 4
  4. fussylizard
    2020-10-28T14:40:34+08:002020-10-28T14:40:34+08:00

    Uma possível solução alternativa é que alguns teclados suportam macros para que você possa programar uma macro para fazer QE e depois repeti-la enquanto a tecla macro estiver pressionada. Eu costumava fazer isso no Diablo 2 ou 3 no meu antigo Razer Blackwidow. O aplicativo de controle Razor tinha um editor de macro que me permitia escolher enviar a sequência apenas uma vez ou repeti-la até que eu parasse de manter a tecla pressionada. Se você não tiver teclas de macro dedicadas, você pode simplesmente definir a macro para uma tecla que não é usada no jogo (talvez uma tecla de função ou backtick ou algo parecido).

    • 1

relate perguntas

  • Excel - Pode-se mover o cursor de texto em um campo de entrada de intervalo usando o teclado?

  • Como posso selecionar uma linha no terminal macOS com atalhos de teclado?

  • Os atalhos de teclado Super+n do Gnome 3.32.0 não funcionam

  • Vá para as funções de seta do ES6 no editor de texto Sublime

  • Como alterar permanentemente Ctrl + C para Ctrl + K no CentOS 7?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 Por que uma conexão de Internet gigabit/s via cabo (coaxial) não oferece velocidades simétricas como fibra? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 O "HTTPS Everywhere" ainda é relevante? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve