如何设置 Ubuntu,使其在连接外接键盘时自动打开 NumLock,在未连接外接键盘时自动关闭 NumLock?

如何设置 Ubuntu,使其在连接外接键盘时自动打开 NumLock,在未连接外接键盘时自动关闭 NumLock?

使用全尺寸外接键盘(带有小键盘)时启用 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 状态。请找到它这里

相关内容