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


12

使用全尺寸的外部键盘(具有小键盘)时,启用NumLock十分方便,而使用笔记本电脑的内置键盘(除非按下Fn才能在键盘的右侧sid上放置数字而不是字母),这非常不便。

因此,每当我连接一个外接键盘(或连接有它的启动)时,我都必须打开NumLock;每次我拆下一个外接键盘(或与它分离时的启动)时,都必须关闭NumLock。我经常这样做是因为我更喜欢使用全尺寸的外部键盘,但没有足够(只有3个)USB端口与鼠标,3G调制解调器和外部硬盘/闪存驱动器一起插入。

我可以自动化吗?似乎是一个形式化的,逻辑上很简单的任务:如果连接了USB键盘(/ dev中是否存在某些设备?)-NumLock已打开,否则-NumLock已关闭。我的笔记本电脑的内置键盘是PS / 2连接的,外部是USB。

也许我应该自己编写代码,但是在这种情况下应该放在哪里?

我使用Ubuntu 10.10。

Answers:


14

首先,安装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。然后它应该工作:)

注意尽管我已经运行了所有命令,直到创建了rules文件,但我无法对其进行测试。如果需要进行更多调查,则来源是:


非常感谢,太好了。老实说,我没想到会得到如此丰富的答案。我希望我能给予的奖励不只是正确和+1。我希望所有投票支持我的问题的人也能给予您奖励。
伊万



0

如果您使用的是gnome-shell,则可以在面板的“锁定键”扩展名上安装Numlock和Capslock状态。请在这里找到

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.