如何设置Ubuntu以在连接外部键盘时自动打开NumLock,当不连接时关闭它?

使用全尺寸外部键盘(有键盘)时使用NumLock非常方便,使用笔记本电脑的内置键盘时非常不方便(除非按下Fn,否则键盘的右侧sid会放置数字而不是字母)。

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

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

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

我使用的是Ubuntu 10.10。

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

注意我无法测试这个,虽然我已经运行了所有命令,直到创建规则文件。 如果你需要做更多的调查,来源是:

如果您使用的是Gnome3 shell。

安装numlockx

然后启动启动应用程序首选项gnome-session-properties

图片(新用户无法发布图片:))

单击添加

将任何内容写入名称字段并在命令字段中复制: numlockx on

图片

我不确定我在做什么不同,因为我在这个键盘上的numlock默认为on(这是Mac Pro铝键盘)。 这里有一些说明可以解决问题。

希望这可以帮助!

如果您使用的是gnome-shell,那么您可以在面板“锁定密钥”扩展名上安装Numlock&Capslock状态。 拜托,在这里找到它