tag mp3tag kid3 editar easytag linux keyboard drivers device

mp3tag - mp3 tag linux



Dispositivo de teclado en Unix (2)

¿Qué es exactamente lo que quiere hacer?

Si lo que está buscando es una entrada sin búfer en el terminal, tcsetattr() es lo que está buscando; necesita poner el terminal en el modo no canónico, es decir, configurar los indicadores de terminal para que no contengan ICANON ; consulte, por ejemplo, este fragmento de código . Ver man termios (o el nombre de la función, generalmente enlaces a la misma página del manual en Linux).

Si quieres tener acceso exclusivo al teclado, es mucho más complicado.

Cómo capturar toda la entrada del usuario, leyendo un byte a la vez?

Hice esta codificación, pero no está funcionando

if ((fd = open("/dev/char", O_RDONLY) != 1) { tty = open("/dev/tty", O_RDONLY); tcsetattr(0, TCSANOW, &orig_info); read (fd, &buf, sizeof(char)); } close(fd);

Esperaba que la terminal esperara la entrada, pero no fue así.


El dispositivo del teclado en sí es una de las entradas en /dev/input . Puede localizar teclados y otros dispositivos de entrada por su tipo de conexión (por ejemplo, PS / 2, USB, ...) en /dev/input/by-path . Obviamente, tendrá que ejecutar como root para acceder directamente al hardware, y deberá proporcionar su propia traducción desde bytes sin procesar provenientes del teclado a cosas como pulsaciones de teclas y lanzamientos de teclas. Esto probablemente no es lo que quieres.

Si está ejecutando una aplicación GUI, el método de bajo nivel es llamar a XNextEvent y otras funciones de la misma familia. La decodificación de eventos de entrada no es completamente trivial, ya que depende de las aplicaciones aplicar modificadores. Un marco de GUI (Motif, Gtk, Qt, ...) te ayudaría.

Si está ejecutando una aplicación de terminal, lea desde la entrada estándar o desde /dev/tty ( /dev/tty es siempre el terminal en el que se está ejecutando el programa, incluso si se ha redirigido la entrada estándar). Querrá poner la terminal en modo raw . Obtendrá claves de caracteres decodificados y teclas de función principalmente como secuencias de escape. Aquí, también, una biblioteca ayuda; el estándar de facto es ncurses .