Gostaria de abrir um dispositivo de caracteres, por ex. /dev/tty1
por vários processos de uma maneira que não interferiria nas leituras entre eles. Notei que, se um processo consome um byte, nenhum outro processo o receberia.
Detalhes do problema:
Estou escrevendo o aplicativo de console no Linux, que requer o recebimento de: pressionamentos de tecla e lançamentos de chaves. Eu já consegui mudar do modo de terminal padrão K_XLATE
para K_RAW
mode usando ioctl(fd,KDSKBMODE,K_RAW)
no /dev/tty1
recém aberto. Infelizmente, a leitura desse descritor resultou em bytes ausentes, pois o mc tenta interceptar Ctrl+O
de pressionamentos de tecla em paralelo (para colocar sua interface no topo ou ocultá-la) lendo o mesmo dispositivo.
Então, eu também tentei ler dados do canal stdin pseudo terminal criado por mc
(depois de configurar /dev/tty
para K_RAW
mode). Quase funcionou, exceto que agora tenho colisão de Ctrl+O
código de caractere 0x0F
com o scancode da tecla Tab (também 0x0F
).
Estou à procura de solução para esse problema de interferência de uma forma que não requer mais privilégios do que cap_sys_tty_config
, por isso, acessar /dev/input
para ler diretamente o teclado não é o melhor caminho para mim.