11

我写了一个小 fetchmail 脚本,它检查远程服务器并在我收到新邮件时播放音频文件。当邮件可用时,我还想点亮我的一个键盘灯,但我遇到了问题。我可以用这个点亮滚动锁定灯:

/usr/bin/xset led named "Scroll Lock"

但我不能以同样的方式点亮 Caps Lock:

/usr/bin/xset led named "Caps Lock"

我尝试用数字 (1-6) 指定键,但尽管更改了神秘的“LED 遮罩”(使用“xset q”可见),但我没有看到灯光有任何变化。

这是否因为我已将 Caps Lock 键映射为另一个 Ctrl 而损坏?

在 ~/.Xmodmap 我有:

keycode 66 = Control_L
clear Lock
add Control = Control_L

我不想切换大写锁定,只是灯。有没有办法做到这一点?

进一步说明

这是在 x86 kubuntu lucid 机器上,但我稍后会迁移到 debian。我在 python 守护程序中以非特权用户身份运行脚本。以 root 身份运行相同的脚本将不起作用,因为 fetchmail 是为我自己作为用户配置的。最后,这一切都在 tmux 会话中运行。

当我开始这个过程时,我阅读了关于定居点的信息,但它似乎仅限于非 x 会话中的终端。

以 root 身份登录并运行 'setleds -D +caps < /dev/tty7' 有效,但运行 'sudo setleds -D +caps < /dev/tty7' 给我一个权限被拒绝错误。

xset 命令似乎非常适合我的应用程序,它只是拒绝更改 Caps Lock 灯。

4

4 回答 4

13

在root下执行:

setleds -D +caps < /dev/console

Hackish,但对我有用:)

于 2011-10-09T04:29:45.500 回答
1

有必要xset吗?你用过setleds吗?

setleds -D +caps
setleds -D -caps

简要概述:Linux / Unix 命令:setleds

于 2011-10-09T04:30:20.100 回答
1

大写锁定指示灯(不是功能)关闭

for a in `ls -d /sys/class/leds/*caps*`;do echo 0 >$a/brightness;done

大写锁定指示灯(不是功能)开

for a in `ls -d /sys/class/leds/*caps*`;do echo 1 >$a/brightness;done
于 2019-12-17T09:49:03.743 回答
0

xset没有root特权

编辑/usr/share/X11/xkb/compat/ledcaps一次使用sed. 无论重新启动如何,此更改都将保持永久性。

$ sudo sed -i 's|\!allowExplicit|allowExplicit|g' /usr/share/X11/xkb/compat/ledcaps

注销并再次登录后,Caps Lock现在可以root使用以下命令在没有任何权限的情况下控制 LED:

$ xset led named 'Caps Lock'
$ xset -led named 'Caps Lock'
于 2018-11-04T14:10:58.197 回答