Skip to content

LINC (Local Input Network Controller) is a local network solution that captures keyboard events from one PC and relays them to a second PC, emulating a virtual video game controller.

License

Notifications You must be signed in to change notification settings

NicolasRaf/LINC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

LINC - Local Input Network Controller

Licença Python Version

LINC é uma solução de rede local que captura eventos de teclado de um PC e os retransmite para um segundo PC, emulando um controle de videogame virtual.


📖 Sobre o Projeto

Ele consiste em dois scripts Python que criam uma ponte (ou "link") entre dois computadores na mesma rede. O PC "servidor" lê as teclas pressionadas e as envia eficientemente pela rede. O PC "cliente" recebe esses comandos e, utilizando o driver ViGEmBus, os traduz em tempo real para um controle de Xbox 360 virtual, que é instantaneamente reconhecido pela maioria dos jogos.

✨ Funcionalidades

  • Emulação de Controle Virtual: Simula um controle de Xbox 360, garantindo alta compatibilidade com jogos para Windows.
  • Comunicação de Baixa Latência: Utiliza sockets TCP com otimizações (TCP_NODELAY) para minimizar o delay em redes locais.
  • Mapeamento Customizável: Edite um simples dicionário em Python para configurar qual tecla corresponde a cada botão do controle.
  • Suporte a Movimento Diagonal: A lógica do cliente permite o pressionamento de múltiplas teclas de direção para um controle preciso do analógico.
  • Conexão Estável: O protocolo de comunicação foi projetado para ser robusto contra erros e desconexões abruptas.

⚙️ Como Funciona

O sistema opera em uma arquitetura cliente-servidor:

  • Servidor (servidor.py): Roda no PC onde o teclado será usado. Ele utiliza a biblioteca keyboard para capturar os eventos de tecla em baixo nível e os envia via socket TCP para o cliente.
  • Cliente (cliente.py): Roda no PC onde o jogo está sendo executado. Ele escuta por mensagens do servidor, as processa e utiliza a biblioteca vgamepad para traduzir esses comandos em ações de um controle virtual, criado pelo driver ViGEmBus.

🚀 Começando

Siga estes passos para colocar o LINC para funcionar.

Pré-requisitos

  1. Python 3.8 ou superior instalado em ambos os computadores.
  2. No PC Cliente (que vai rodar o jogo):
    • É obrigatório instalar o driver ViGEmBus. Baixe e instale a última versão.

Instalação

  1. Clone este repositório em ambos os computadores:

    git clone [https://github.com/seu-usuario/LINC.git](https://github.com/seu-usuario/LINC.git)
    cd LINC
  2. Instale as dependências de Python necessárias:

    • No PC Servidor:

      pip install keyboard
    • No PC Cliente:

      pip install vgamepad

Como Usar

  1. Encontre o IP do Servidor: No PC que será o servidor (onde você vai usar o teclado), abra o terminal (cmd) e digite ipconfig. Anote o "Endereço IPv4" da sua rede local (ex: 192.168.1.10).

  2. Configure o Cliente: Abra o arquivo cliente.py no PC do seu amigo e altere a variável SERVER_IP para o IP que você anotou no passo anterior.

    # Mude para o IP do PC servidor
    SERVER_IP = '192.168.1.10' 
  3. Inicie o Servidor: No seu PC, execute o script do servidor no terminal:

    python servidor.py

    Você deverá ver a mensagem "✅ Servidor iniciado...".

  4. Inicie o Cliente: No PC do seu amigo, execute o script do cliente:

    python cliente.py

    Você deverá ver a mensagem "🚀 Conectado ao servidor!".

  5. Pronto! Agora, as teclas que você pressionar no servidor serão refletidas como comandos de controle no cliente.

🔧 Configuração de Teclas

Para mudar quais teclas ativam quais botões, basta editar o dicionário key_map no topo do arquivo cliente.py.

Exemplo:

key_map = {
    # Analógico Esquerdo
    'w': ('left_joystick_y', 1.0),   
    's': ('left_joystick_y', -1.0),
    # ...
    # D-pad (Setinhas)
    'up': ('DPAD_UP', vg.XUSB_BUTTON.XUSB_GAMEPAD_DPAD_UP),
    # ...
}

About

LINC (Local Input Network Controller) is a local network solution that captures keyboard events from one PC and relays them to a second PC, emulating a virtual video game controller.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages