- A ideia é usar uma placa de teclado USB como interface alternativa para se criar 3 chaves liga/desliga controladas via computador.
- Segue abaixo um tutorial de produção do programa e o código fonte.
- Passo a passo para implementar e testar o código que permite ligar e desligar os LEDs Caps Lock, Num Lock e Scroll Lock usando um teclado padrão no Linux.
Passo 1: Instalar Dependências
Garanta que as dependências corretas estejam instaladas. O pacote libevdev-dev
é necessário para acessar os LEDs via sysfs.
Para instalar o pacote libevdev-dev
no Ubuntu, você pode usar o seguinte comando:
bash
sudo apt update sudo apt install libevdev-dev
Passo 2: Criar o Código
Crie um novo arquivo de código-fonte chamado ligadesliga_leds.c
e cole o código C fornecido anteriormente no arquivo.
Passo 3: Compilar o Código
Abra um terminal e navegue até o diretório onde você criou o arquivo ligadesliga_leds.c
. Em seguida, execute o seguinte comando para compilar o código:
bash
sudo gcc -o
ligadesliga_leds
ligadesliga_leds.c
-levdev
Isso compilará o código e gerará um executável chamado ligadesliga_leds
.
Passo 4: Executar o Programa
Agora, você pode executar o programa usando o comando sudo
para garantir que tenha as permissões necessárias para acessar os LEDs:
bash
sudo ./
ligadesliga_leds
Passo 5: Testar o Programa
Após executar o programa, ele exibirá instruções no terminal. Pressione as teclas 'c', 'n' ou 's' para alternar o brilho dos LEDs Caps Lock, Num Lock e Scroll Lock, respectivamente. Pressione 'x' para sair do programa.
Lembre-se de que a capacidade de controlar os LEDs Caps Lock, Num Lock e Scroll Lock depende do seu hardware e do suporte do sistema operacional. Pode haver variações entre sistemas e distribuições Linux.
CÓDIGO FONTE DO PROGRAMA
#include <stdio.h>
#include <stdlib.h>
#include <termios.h>
#include <unistd.h>
#define CAPSLOCK_PATH "/sys/class/leds/input4::capslock/brightness"
#define NUMLOCK_PATH "/sys/class/leds/input4::numlock/brightness"
#define SCROLLLOCK_PATH "/sys/class/leds/input4::scrolllock/brightness"
int main() {
struct termios old_settings, new_settings;
char input;
tcgetattr(STDIN_FILENO, &old_settings);
new_settings = old_settings;
new_settings.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &new_settings);
printf("Pressione 'c' para alternar o LED Caps Lock.\n");
printf("Pressione 'n' para alternar o LED Num Lock.\n");
printf("Pressione 's' para alternar o LED Scroll Lock.\n");
printf("Pressione 'x' para sair.\n");
while (1) {
input = getchar();
if (input == 'x') {
break;
} else if (input == 'c') {
FILE* capslock_file = fopen(CAPSLOCK_PATH, "r+");
if (capslock_file) {
char value;
fscanf(capslock_file, "%c", &value);
fseek(capslock_file, 0, SEEK_SET);
fprintf(capslock_file, "%c", (value == '0') ? '1' : '0');
fclose(capslock_file);
}
} else if (input == 'n') {
FILE* numlock_file = fopen(NUMLOCK_PATH, "r+");
if (numlock_file) {
char value;
fscanf(numlock_file, "%c", &value);
fseek(numlock_file, 0, SEEK_SET);
fprintf(numlock_file, "%c", (value == '0') ? '1' : '0');
fclose(numlock_file);
}
} else if (input == 's') {
FILE* scrolllock_file = fopen(SCROLLLOCK_PATH, "r+");
if (scrolllock_file) {
char value;
fscanf(scrolllock_file, "%c", &value);
fseek(scrolllock_file, 0, SEEK_SET);
fprintf(scrolllock_file, "%c", (value == '0') ? '1' : '0');
fclose(scrolllock_file);
}
}
}
tcsetattr(STDIN_FILENO, TCSANOW, &old_settings);
return 0;
}
Nenhum comentário:
Postar um comentário