USB keyboard leválasztása a konzolról

 ( kantal | 2016. szeptember 8., csütörtök - 11:01 )

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ás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

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

bookmark

Ez még érdekes lehet, köszi.

+1. A minap en is szembesultem hasonlo problemaval - es az lett a megoldas hogy a deszktop helyett egy mellettem levo pcengines/alix gepbe dugtam be inkabb a billentyuzetet :) Az egyszerubb volt mint utananezni a megoldasnak :)

+1

[Feliratkozás]