【问题标题】:How to capture keyboard input without writing on screen如何在不在屏幕上书写的情况下捕获键盘输入
【发布时间】:2013-01-03 03:07:48
【问题描述】:

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

【问题讨论】:

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

标签: linux keyboard debian capture


【解决方案1】:

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

为避免这种情况,您的应用程序应指示evdev 模块抓取输入设备,以供EVIOCGRAB ioctl 独占使用。这将阻止任何其他处理程序,包括其他用户空间应用程序,从该设备接收任何事件。

抓取设备:

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

释放抓取的设备:

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

【讨论】:

    猜你喜欢
    • 2018-09-16
    • 1970-01-01
    • 2022-06-23
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    相关资源
    最近更新 更多