USB keyboard leválasztása a konzolról

Fórumok

Egy linuxos géphez két billentyűzet van csatlakoztatva, amelyek közül az egyik speciális célt szolgál (nevezetesen egy program közvetlenül kezeli a hozzátartozó /dev/input/eventX fájlt). Ez utóbbi billentyűzetet szeretném leválasztani a konzolról, azaz azt elérni, hogy a lenyomott billentyűk ne generáljanak inputot a terminálban (pl. a login promptnál). Grafikus desktopon ismerem a megoldást (xinput), de hogyan lehet ezt GUI nélküli Linux konzolján megtenni?

Hozzászólások

Most megválaszolom magamnak, mert jó sok keresés után végre megtaláltam a megoldást. Na, nem arról van szó, hogy három évig tartott volna a keresés:-), hanem hogy mostanában elővettem a régi, félbehagyott projektemet.

A szükséges C-kódra példa az alábbi:


 int fdkeypad= open("/dev/input/event3", O_RDONLY);
 ioctl(fdkeypad, EVIOCGRAB, 1);

Ez a kernel szintjén a hívást kiadó processzhez fogja rendelni az eszközt, és sem a konzolhoz, sem az X-hez nem fog továbbításra kerülni esemény (billentyű lenyomása stb.).
A processz működésének befejezése után az eszköz elérhetővé válik a többi számára, azaz az exit előtt nem szükséges egy ioctl(fdkeypad, EVIOCGRAB, 0) hívást végrehajtani.

--
eutlantis