使用全尺寸外接键盘(带有小键盘)时启用 NumLock 非常方便,但使用笔记本电脑的内置键盘(除非按下 Fn 键,否则键盘右侧会显示数字而不是字母)时非常不方便。
因此,每次连接外部键盘(或连接后启动)时,我都必须打开 NumLock,每次卸下外部键盘(或卸下后启动)时,我都必须关闭 NumLock。我经常这样做,因为我更喜欢使用全尺寸外部键盘,但没有足够的 USB 端口(只有 3 个)来插入它以及鼠标、3G 调制解调器和外部硬盘/闪存驱动器。
我可以自动执行此操作吗?这似乎是一个非常正式、逻辑简单的任务:如果连接了 USB 键盘(/dev 中是否存在某个设备?)- NumLock 处于打开状态,如果没有 - NumLock 处于关闭状态。我的笔记本电脑的内置键盘是 PS/2 连接的,外部键盘是 USB 连接的。
也许我应该自己编写代码,但在这种情况下它该放在哪里呢?
我使用 Ubuntu 10.10。
答案1
首先,安装 numlockx (单击此处安装 numlockx)。基本上,这允许您编写脚本来设置 Num Lock 的状态 - 请参阅numlockx 手册页了解详情。
接下来我们需要开始深入研究 udev 规则的乐趣。首先我们需要找出键盘是如何被识别的。你可以这样做
ls /dev/input/by-id/
这应该会给你一些人类可读的文件名(这些文件名是指向不太可读的真实名称的软链接)。我的键盘是
/dev/input/by-id/usb-KINESIS_FREESTYLE_KB700_KB700_Kinesis_Freestyle-event-kbd
那么我们需要找出有关键盘的所有信息。我做到了
udevadm info -a -p $(udevadm info -q path -n /dev/input/by-id/usb-KINESIS_FREESTYLE_KB700_KB700_Kinesis_Freestyle-event-kbd)
但当然要在那里插入您自己的路径。您将获得大量信息,但您需要查看第一个命名键盘并具有 的块SUBSYSTEMS=="usb"
。(而不是 USB 控制器或其他)。在我的情况下是:
looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2.3':
KERNELS=="3-2.3"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 2"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="a0"
ATTRS{bMaxPower}==" 50mA"
ATTRS{urbnum}=="6284"
ATTRS{idVendor}=="058f"
ATTRS{idProduct}=="9410"
ATTRS{bcdDevice}=="0122"
ATTRS{bDeviceClass}=="00"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="8"
ATTRS{speed}=="1.5"
ATTRS{busnum}=="3"
ATTRS{devnum}=="3"
ATTRS{devpath}=="2.3"
ATTRS{version}==" 1.10"
ATTRS{maxchild}=="0"
ATTRS{quirks}=="0x0"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="KINESIS FREESTYLE KB700"
ATTRS{product}=="KB700 Kinesis Freestyle"
现在我们有足够的信息来编写一些规则。使用您最喜欢的编辑器创建/etc/udev/rules.d/10-local.rules
并输入:
BUS=="usb",ATTRS{product}=="KB700 Kinesis Freestyle",ACTION=="add",RUN+="/usr/bin/numlockx on"
BUS=="usb",ATTRS{product}=="KB700 Kinesis Freestyle",ACTION=="remove",RUN+="/usr/bin/numlockx off"
再次,在此处输入键盘名称,如果不同,则输入 ATTRS。然后它应该可以工作 :)
注意,虽然我已运行了所有命令直到创建规则文件,但我还无法测试这一点。如果您需要进行更多调查,来源如下:
答案2
如果您正在使用 Gnome3 shell。
安装 numlockx
然后启动启动应用程序偏好设置gnome-session-properties
单击“添加”
在名称字段和命令字段中写入任意内容:numlockx on
答案3
我不确定我做了什么不同的事情,因为我的这个键盘上的 numlock 默认为开启(这是 Mac Pro 铝制键盘)。有一些此处的说明这应该够了吧。
希望这可以帮助!
答案4
如果你正在使用 gnome-shell,那么你可以在面板“锁定键”扩展上安装 Numlock 和 Capslock 状态。请找到它这里