Linux 如何在不在屏幕上书写的情况下捕获键盘输入

Linux 如何在不在屏幕上书写的情况下捕获键盘输入,linux,keyboard,debian,capture,Linux,Keyboard,Debian,Capture,我正在为Debian Linux编写一个ANSI C应用程序,它从USB键盘捕获数据,并通过RS232端口和LAN(某种工业机器)发送一些数据。没有屏幕连接到电脑。 我正在使用从“/dev/input/event1”捕获,一切正常,但启动计算机后会显示系统登录/pass提示符,键盘被我的应用程序捕获,也被系统登录捕获。我的问题是如何禁用系统捕获键盘进行登录,但让它与我的应用程序一起运行?您面临的问题是,默认情况下,设备的所有输入事件处理程序都会接收所有事件。您的案例至少有两个处理程序:控制台的键

我正在为Debian Linux编写一个ANSI C应用程序,它从USB键盘捕获数据,并通过RS232端口和LAN(某种工业机器)发送一些数据。没有屏幕连接到电脑。
我正在使用从“/dev/input/event1”捕获,一切正常,但启动计算机后会显示系统登录/pass提示符,键盘被我的应用程序捕获,也被系统登录捕获。我的问题是如何禁用系统捕获键盘进行登录,但让它与我的应用程序一起运行?

您面临的问题是,默认情况下,设备的所有输入事件处理程序都会接收所有事件。您的案例至少有两个处理程序:控制台的键盘驱动程序和应用程序的
evdev
用户空间接口

为了避免这种情况,应用程序应该指示
evdev
模块抓取输入设备,以便与
EVIOCGRAB
一起单独使用。这将阻止任何其他处理程序(包括其他用户空间应用程序)从该设备接收任何事件

要获取设备,请执行以下操作:

int ret = ioctl(fd, EVIOCGRAB, (void *)1);
要释放抓取的设备,请执行以下操作:

int ret = ioctl(fd, EVIOCGRAB, (void *)0);

如果您的电脑没有屏幕,为什么需要登录提示?您应该配置您的系统(可能在
/etc/inittab
中)以避免出现登录提示。。。