c - 如何使用 Linux 驱动程序使键盘 LED 闪烁?

标签 c linux keyboard kernel driver

我对 Linux 驱动程序开发还很陌生。请发布一个代码片段,它将说明 Linux 驱动程序捕获任何键盘按下的情况,并使 capslk 或 scrllok 或 numlok LED 闪烁。我使用的是 ubuntu 3,内核版本为 3.5。提前致谢。

最佳答案

所有相关信息都可以在 Linux 内核源代码树文档中找到。最重要的是$KERNELSRC/Documentation/input/input.txt

5. Event interface
~~~~~~~~~~~~~~~~~~
Should you want to add event device support into any application (X, gpm,
svgalib ...) I <vojtech@ucw.cz> will be happy to provide you any help I
can. Here goes a description of the current state of things, which is going
to be extended, but not changed incompatibly as time goes:

You can use blocking and nonblocking reads, also select() on the
/dev/input/eventX devices, and you'll always get a whole number of input
events on a read. Their layout is:

struct input_event {
  struct timeval time;
  unsigned short type;
  unsigned short code;
  unsigned int value;
};

'time' is the timestamp, it returns the time at which the event happened.
Type is for example EV_REL for relative moment, EV_KEY for a keypress or
release. More types are defined in include/linux/input.h.

'code' is event code, for example REL_X or KEY_BACKSPACE, again a complete
list is in include/linux/input.h.

'value' is the value the event carries. Either a relative change for
EV_REL, absolute new value for EV_ABS (joysticks ...), or 0 for EV_KEY for
release, 1 for keypress and 2 for autorepeat.

事件代码描述于 $KERNELSRC/Documentation/input/event-codes.txt

LED 有特殊的事件代码,您不仅可以从 /dev/event... 读取,还可以写入,使用 LED 事件代码设置 LED 状态。

关于c - 如何使用 Linux 驱动程序使键盘 LED 闪烁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17328631/

相关文章:

objective-c - 在 UITextField 中输入数字后,如何使小键盘消失?

linux - usb-skeleton.c 不工作

javascript - 如何向现有的 JavaScript 函数添加键盘快捷键?

c - 了解 IOKit 中的 CFSet 和 IOHIDDeviceRegisterRemovalCallback

c - 为什么我的程序有内存泄漏?

c - 如何编写继续程序;使用C

c++ - 从其他人内部调用 C 包装函数

linux - ~/.bashrc 中句点 (.) 的用途是什么

安装后的 Linux 桌面快捷方式和图标

iphone - 调试时键盘会永远在 iPhone 应用程序上弹出