c - Linux 内核替换 key

标签 c linux module linux-kernel keyboard

我必须编写一个 linux 内核模块,它会在按下某个键后更改屏幕上打印的字符(比方说 - 我希望在键盘上按“b”时打印“a”)。最好的方法是什么?我认为为键盘创建模块是个好主意。我做了一些研究,我看到了很少的键盘记录器(作为内核模块),但它们都只能听到按下了什么键,并且不可能更改扫描码(这在键盘记录器中非常明显)。我读了 Linux 设备驱动程序的第 3 章,然后我开始读第 6 章,但是当我想将我的模块与真实设备连接时,他们只谈论虚拟设备。我也看到了这个 https://stackoverflow.com/questions/33836541/linux-kernel-how-to-capture-a-key-press-and-replace-it-with-another-key ,但它没有用。我的老师说有比使用中断更简单的方法,但我不知道该怎么做(既不使用中断也不使用任何其他方式)。

我该怎么办?只读 LDD 的下一章?或者其他什么书?或者也许只是躺下哭泣?

最佳答案

这是一个非常简单的键盘驱动内核模块示例:https://github.com/raleighlittles/Olympus-MAJ-1428-Keyboard-Linux-driver/blob/main/hid-olympus-maj1428.c

我有一个键盘,它为某些非字符键生成奇怪的扫描码(阅读文件,它解释了更多)。我没有使用这些扫描码,而是编写代码将它们重新映射到扩展功能键(F13、F14 等)。您可以使用该代码,而只是通过更改 key_mapping 变量来切换所需的扫描代码。

关于c - Linux 内核替换 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40772970/

相关文章:

c - 监 Windows 口的创建(HWND)

c - C中的宏常量和常量变量有什么区别?

linux - 对 mkfifo 的并发写入似乎丢失了

c - 如何终止 C 语言中的 system() 调用

linux - 树莓派 raspbian3.10.25+ linux 头文件

javascript - 为什么我收到错误 app.get is not a function in express.js

c - 从 C 语言的二进制文件中读取值

python - 无法使用 python 3.5 安装 opencv 3.1,仅适用于 2.7

linux - 如何在linux内核模块中使用c动态库

c - 如何退出中断例程并返回主程序?