在linux上使用c编程的键盘处理程序

时间:2011-04-21 17:31:06

标签: c linux

我正在尝试用c控制键盘处理程序闪烁的程序 NUMLOCK & CAPSLOCK LED作为 ctrl的反应 + alt + del push ...请帮帮我..

2 个答案:

答案 0 :(得分:1)

选项:

  • 找到合适的地方陷阱 Alt + Ctrl + Del 并注册处理程序。
  • 使用KDGETLED/KDSETLED上的/dev/console ioctl更改键盘LED。

祝你好运!

答案 1 :(得分:1)

我有点同意KP。这很有趣......

但如果你认真的话......

<强>首先

有一个 setleds 计划可能会帮助您入门。它已存在多年......尝试 man setleds

此外,可以使用 xset (在X-windows下)更改LED ...(您可能必须查看哪些LED已在X中更改-config文件。)

<强>第二

检测 ctrl + alt + del 是一个问题,因为它被 init 特别标记。查看 / etc / inittab /etc/init/control-alt-delete.conf 或类似的地方,你会看到如下行:

# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -h now

或者:

# control-alt-delete - emergency keypress handling
#
# This task is run whenever the Control-Alt-Delete key combination is
# pressed.  Usually used to shut down the machine.

start on control-alt-delete

exec /sbin/shutdown -r now "Control-Alt-Delete pressed"

所以你必须禁用它......或者只是让它运行你的键盘闪烁程序而不是/ sbin / shutdown。

另外,请注意“Control-Alt-Backspace” - 许多X11配置设置启用此组合以关闭X服务器。 (选项“DontZap”。)

<强>第三

现在您需要找到一种方法来拾取 control-alt-delete 按键。这并非不可能,但它可能不像 getc()那么简单。 (再次,我可能是错的......)

当然,如果您不希望您的程序具有键盘焦点。如果你希望这种情况发生,而其他程序在前台以键盘焦点运行......那么你是否正在考虑调整内核或某些内核驱动程序。 (或者让 inittab 运行你的程序而不是 / sbin / shutdown 。)

无论如何切片,这都不是一个好的 Hello World 类型练习。