Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何禁用从linux内核模块访问键盘和鼠标?_C_Linux_Linux Kernel_Kernel_Kernel Module - Fatal编程技术网

C 如何禁用从linux内核模块访问键盘和鼠标?

C 如何禁用从linux内核模块访问键盘和鼠标?,c,linux,linux-kernel,kernel,kernel-module,C,Linux,Linux Kernel,Kernel,Kernel Module,我正在尝试编写一个内核模块,它在一天中的某些时间段禁用输入。我了解了如何获取时间()以及如何调度函数。 但我似乎不知道如何禁用输入。我认为内核必须有一个地方来做这件事,但是阅读了API之后,我仍然没有进一步的进展。我想我应该直接访问驱动程序并关闭它们,但这似乎有点不通用。 这可能吗 谢谢您的时间。我不确定,但如果您在用户空间,切换到未使用的虚拟控制台,然后将键盘置于原始模式就足够了。这将阻止通常会切换回另一个虚拟控制台的组合键。这不会禁用鼠标,但是如果鼠标不是当前VT,X应该忽略鼠标(只需确保g

我正在尝试编写一个内核模块,它在一天中的某些时间段禁用输入。我了解了如何获取时间()以及如何调度函数。 但我似乎不知道如何禁用输入。我认为内核必须有一个地方来做这件事,但是阅读了API之后,我仍然没有进一步的进展。我想我应该直接访问驱动程序并关闭它们,但这似乎有点不通用。 这可能吗


谢谢您的时间。

我不确定,但如果您在用户空间,切换到未使用的虚拟控制台,然后将键盘置于原始模式就足够了。这将阻止通常会切换回另一个虚拟控制台的组合键。这不会禁用鼠标,但是如果鼠标不是当前VT,X应该忽略鼠标(只需确保gpm没有运行)

如果启用了神奇的sysrq键组合,您还必须禁用它,因为有一个sysrq键可以使键盘脱离原始模式,否则就无法解决这个问题


编辑:如果您处于正常的任务上下文中,那么应该可以从内核空间完成所有这些操作。我想一个内核线程就可以了

您可以从内核打开文件和设备,这是不推荐的。具有包含/dev的命名空间的任务(我不确定内核任务是否包含)。您可以调用filp_open(我认为)并获取一个文件*,然后可以在其文件操作(f_op)上调用适当的方法。这应包括执行上述操作所需的IOCTL

可能有一种方法可以直接打开设备,而不是通过filp_open


简言之,这应该是可能的。从内核空间来说,这是一件非常棘手的事情。

我能想到的一种方法是禁用关键字和鼠标的IRQ。 可以用来做这件事


。如果需要的话,您可能需要查阅其他表格以获得SPARC、IA-64等其他平台的IRQ。

我会查看鼠标驱动程序、键盘驱动程序和
tty
子系统。我不确定,但我猜这在
X
级别比在内核级别更容易实现。这就是问题所在。我在内核空间,所以这不起作用。如果您使用USB键盘,禁用旧键盘IRQ不会对您有多大好处。