Entrada bruta de jogos de válvula no Linux

0

Com a Valve lançando jogos no Linux, eu tenho jogado um pouco de Left 4 Dead 2 e Portal 2 , e notei um pequeno, mas ainda sensível mouse lag (delay) quando eu não habilito a opção Raw mouse input . Outro jogo que eu tenho jogado no Linux, Starbound , também tem um atraso de mouse similar apenas no Linux. Eu tenho procurado informações sobre insumos brutos, mas ainda estou um pouco intrigado.

Do que eu recolhi ( por exemplo aqui ), um Uma maneira comum de obter entrada de hardware raw é ler os arquivos * / dev / input / event **. O problema é que no meu sistema (Fedora 20) esses arquivos são legíveis apenas para o grupo raiz, e eu não criei uma regra do udev como mencionado na postagem vinculada.

Então minha pergunta é:
Como o jogo lê a entrada bruta do mouse? Existe outra maneira que não seja /dev/input ?
Existe uma maneira multiplataforma para fazer isso?

Questões bônus (estou prestes a procurar por mim mesmo de qualquer maneira =)):
Qual mecanismo do sistema operacional fornece entrada "padrão"? por exemplo. O que o SDL ou outra biblioteca confia para coletar informações do hardware?

ps: A opção Entrada de mouse não processada do Portal 2 na verdade não funciona até agora na versão beta, e é por isso que comecei a pesquisar o assunto. No entanto, funciona em L4D2.

    
por Community 27.02.2014 / 19:42

1 resposta

1

No Linux, "Tudo é um arquivo", mas isso não significa que ele seja um "arquivo" real no seu disco rígido, que requer que os IOPs sejam lidos na unidade.

Existem várias maneiras de obter a entrada do mouse no Linux, as mais comuns são envdev e mousedev. Você também pode usar o sistema de engajamento da janela X para ler a entrada do mouse. Para outros dispositivos como teclados você tem keydev para usbcore usb usbcore etc.

Rawinput significa que o jogo / aplicativo lê os dados brutos de entrada do dispositivo, em vez de obter os dados depois que eles são processados pelo sistema operacional. Ao usar configurações de mouse específicas do OS de "entrada processada", como aceleração, velocidade do cursor e outras que podem afetar o comportamento percebido do dispositivo, isso afetará o comportamento do ponteiro dentro do jogo.

Você pode notar isso em jogos / aplicativos do Windows também, alguns jogos podem usar a interface de entrada padrão do sistema operacional, alguns podem usar o DirectX (que era (e é) destinado a unificar som, gráficos e entrada em uma única API) alguns podem acessar o mouse diretamente e lidar com todos os cálculos.

Em geral, tudo depende de quanto trabalho você quer fazer e quanto controle deseja ou precisa da entrada. Ao lidar com entrada bruta, todos os cálculos em relação à posição, aceleração e outros fatores precisam ser feitos dentro do seu aplicativo, se você não quiser lidar com isso, você pode deixar o OS / API que você usa fazer isso e apenas dizer a mudança relativa na posição.

    
por 27.02.2014 / 19:59

Tags