从Linux内核模块禁用输入设备

从Linux内核模块禁用输入设备,linux,input,module,kernel,driver,Linux,Input,Module,Kernel,Driver,我正在编写一个内核模块,用于检测平板电脑模式 模块正在访问工业I/O(或传感器),需要禁用输入设备(例如:内部键盘和鼠标)。如果笔记本电脑在平板电脑模式下开机,我希望在内核空间中尽早禁用输入(或设备本身),避免用户在启动时移除启动屏幕(例如)。到目前为止,我还没有找到一种在不修改内核源代码的情况下禁用输入的方法 第一个想法: 在不修改内核源代码的情况下, 我的第一次尝试是从linux/input.h调用以下函数,该函数通过忽略给定输入的事件来“禁用”该输入: void input_set

我正在编写一个内核模块,用于检测平板电脑模式

模块正在访问工业I/O(或传感器),需要禁用输入设备(例如:内部键盘和鼠标)。如果笔记本电脑在平板电脑模式下开机,我希望在内核空间中尽早禁用输入(或设备本身),避免用户在启动时移除启动屏幕(例如)。到目前为止,我还没有找到一种在不修改内核源代码的情况下禁用输入的方法

第一个想法:

在不修改内核源代码的情况下, 我的第一次尝试是从
linux/input.h
调用以下函数,该函数通过忽略给定输入的事件来“禁用”该输入:

    void input_set_ignore_events(struct input_dev *dev, bool ignored)
我已经找到了一种方法来获取一个名为如下的
struct device*
设备,但是我无法从
struct device*
获取
struct input\u dev*
指针:

    bus_find_device_by_name(&platform_bus_type, NULL, name);
另一个想法是从外部访问
静态列表头(input\u dev\u LIST)位于
驱动程序/input/input.c

第二个想法:

不要尝试访问内核输入抽象,而是利用
include/linux/device.h中
struct bus_type*
offline()和
suspend()函数。根据
文档/ABI/testing/sysfs devices online
的说明,它可能会工作。我很快就会试试的

问题:

  • 是否可以正确禁用任何外部模块的事件或输入
  • 是否可以从任何外部模块检索到结构输入
谢谢你抽出时间