Programowanie > Inne
Przechwytywanie z dwóch klawiatur
(1/1)
matulik:
Witam.
Ostatnio dostałem zadanie projektowe na studiach polegające zaprezentowaniu obsługi dwóch urządzeń wejściowych jednocześnie (np klawiatur).
Jeżeli chodzi o samo przechwytywanie (znaków) z klawiatur nie ma problemu - używam bibliotek evdev-a do pythona. Jednakże nie wiem jak obsłużyć, by w jednym oknie (np aplikacji w pyqt) wyświetlić dwie labelki w której każda będzie wyświetlała odrębne znaki wypisywane z różnych klawiatur.
Generalnie nie musi być to python (w C++ też łatwo jest to obsłużyc) jednakże głównym problem jest właśnie z tym odseparowaniem działań.
Ktoś ma jakiś pomysł lub podpowiedź?
Paweł Kraszewski:
1/ Plik /proc/bus/input/devices zawiera opis wszystkich urządzeń wejściowych.
2/ Katalog /dev/input/by-id zawiera linki do urządzeń o nazwie zbudowanej na podstawie ID urządzenia. Jeżeli klawiatury będą różnych producentów albo różne modele, to będziesz miał osobne wpisy.
3/ Obsługa eventów z własnego programu jest banalna:
--- Kod: ---
#include
#include
// ........
static const char * EVDEV = "/dev/input/event1"; // Właściwe urządzenie znajdź wg 1/ albo 2/
// ........
ssize_t r;
struct input_event event;
int evfile;
// ........
evfile = open( EVDEV, O_RDONLY );
// ........
while( 1 ) {
r = read( evfile, &event, sizeof(struct input_event) );
if( r == -1 ) break;
if( r != sizeof(struct input_event) ) continue;
// ........
// Wyświetlenie danych z event
printf("type=%d, value=%d,code=%d\\n",event.type,event.value,event.code);
}
close(evfile);
--- Koniec kodu ---
Nawigacja
Idź do wersji pełnej