有没有办法禁用笔记本电脑的内部键盘?


85

一周前,我将杯子里的东西洒到了笔记本电脑键盘上。一半的钥匙不再起作用,只有一把!字母Q经常很活跃。

当我工作时,这非常令人不安。

有没有办法禁用笔记本电脑的内部键盘?

有可能xmodmap吗?


它是什么品牌和型号的笔记本电脑?
米奇

它是HP pavilion dv9000
atmon3r

5
最直接的方法是提起键盘并将其与主板断开连接。然后,在没有连接的情况下,您可以将其放回原处。这样,键盘将在重新安装后被禁用,而您无需理会软件。看到此链接,大约在到达键盘的页面的一半以下:insidemylaptop.com/…–
Mark

也可能是值得考虑它,把它拆开,一个清洁层与层之间..
JonasCz

Answers:


135

您可以使用xinput浮动输入设备到X下。

  1. 执行命令xinput list以列出您的输入设备。
  2. 找到AT Translated Set 2 keyboard并记下其id编号;这将用于禁用键盘。另外,请注意末尾的数字[slave keyboard (#)];这是的ID号,master用于重新启用键盘。
  3. 要禁用键盘,请执行命令xinput float <id#>,其中<id#>是您的键盘ID号。例如,如果idwas为10,则命令为xinput float 10
  4. 要重新启用键盘,请执行命令xinput reattach <id#> <master#>,这master是我们记下的第二个数字。所以如果有这个数字3,你会的xinput reattach 10 3

这是一个示范:

$ x输入列表
⎡虚拟核心指针id = 2 [主指针(3)]
虚拟核心XTEST指针id = 4 [从指针(2)]
SynPS / 2 Synaptics触摸板id = 11 [从指针(2)]
Logitech USB-PS / 2光电鼠标id = 12 [从机指针(2)]
罗技统一设备。无线PID:4004 id = 13 [从站指针(2)]
⎣虚拟核心键盘id = 3 [主键盘(2)]
    ↳虚拟核心XTEST键盘id = 5 [从键盘(3)]
    ↳电源按钮id = 6 [从属键盘(3)]
    ↳Video Bus id = 7 [从属键盘(3)]
    ↳睡眠按钮id = 8 [从属键盘(3)]
    ↳Acer CrystalEye网络摄像头id = 9 [从属键盘(3)]
    ↳AT翻译集2键盘id = 10    [从键盘(3)]
 $ xinput float 10 
$ xinput list
⎡虚拟核心指针id = 2 [主指针(3)]
虚拟核心XTEST指针id = 4 [从指针(2)]
SynPS / 2 Synaptics触摸板id = 11 [从指针(2)]
Logitech USB-PS / 2光电鼠标id = 12 [从机指针(2)]
罗技统一设备。无线PID:4004 id = 13 [从站指针(2)]
⎣虚拟核心键盘id = 3 [主键盘(2)]
    ↳虚拟核心XTEST键盘id = 5 [从键盘(3)]
    ↳电源按钮id = 6 [从属键盘(3)]
    ↳Video Bus id = 7 [从属键盘(3)]
    ↳睡眠按钮id = 8 [从属键盘(3)]
    ↳Acer CrystalEye网络摄像头id = 9 [从属键盘(3)]
〜AT Translated Set 2键盘id = 10 [floating slave]
$ xinput重新连接10 3 
$ xinput列表
⎡虚拟核心指针id = 2 [主指针(3)]
虚拟核心XTEST指针id = 4 [从指针(2)]
SynPS / 2 Synaptics触摸板id = 11 [从指针(2)]
Logitech USB-PS / 2光电鼠标id = 12 [从机指针(2)]
罗技统一设备。无线PID:4004 id = 13 [从站指针(2)]
⎣虚拟核心键盘id = 3 [主键盘(2)]
    ↳虚拟核心XTEST键盘id = 5 [从键盘(3)]
    ↳电源按钮id = 6 [从属键盘(3)]
    ↳Video Bus id = 7 [从属键盘(3)]
    ↳睡眠按钮id = 8 [从属键盘(3)]
    ↳Acer CrystalEye网络摄像头id = 9 [从属键盘(3)]
    ↳AT翻译集2键盘id = 10 [从键盘(3)]

我对这种解决方案感兴趣!我的xinput pastebin.com/puDxQaZ8,所以我想是这样的:xinput float 14该查询是可逆的?此后如何启用键盘?
atmon3r 2012年

2
您将使用该reattach参数重新附加它。xinput reattach 14 3
伊格纳西奥·巴斯克斯

1
完美的答案-也在寻找这个。笔记本电脑上的任何键都停止工作,因此现在将外部键盘盖在其上,并且它一直按下控制键,而没有按下。这样就解决了,谢谢!
值得注意的是2012年

1
谢谢。但是重新启动我的笔记本电脑后,键盘会自动启用。因此,在我使用计算机的所有时间里,我都想执行上述步骤来禁用您提到的内部键盘。是否有可能永久禁用残疾人?
Dinesh ML

2
xinput不会禁用/启用相同功能吗?
SomeNickName '16

18

这是一个小的开关按钮,用于启用和禁用特定的键盘。首先,您必须使用xinput或查找键盘ID xinput-list

Bash脚本来启用/禁用键盘

#!/bin/bash
Icon="/PATH/TO/ICON_ON"
Icoff="/PATH_TO_ICON_OFF"
fconfig=".keyboard" 
id=12

if [ ! -f $fconfig ];
    then
        echo "Creating config file"
        echo "enabled" > $fconfig
        var="enabled"
    else
        read -r var< $fconfig
        echo "keyboard is : $var"
fi

if [ $var = "disabled" ];
    then
        notify-send -i $Icon "Enabling keyboard..." \ "ON - Keyboard connected !";
        echo "enable keyboard..."
        xinput enable $id
        echo "enabled" > $fconfig
    elif [ $var = "enabled" ]; then
        notify-send -i $Icoff "Disabling Keyboard" \ "OFF - Keyboard disconnected";
        echo "disable keyboard"
        xinput disable $id
        echo 'disabled' > $fconfig
fi

组态

  • Icon作为启用时显示的图标的路径(例如/home/user/path/icon.png
  • Icoff 作为禁用时显示的图标的路径
  • 我使用以下图标: 在此处输入图片说明 在此处输入图片说明

  • id作为键盘ID(通过找到xinput

  • fconfig配置文件的路径。更改是否要在另一个目录中创建配置文件

如果您在不使用键盘的情况下无法再次运行该脚本,请不要尝试运行该脚本(除非您当然拥有另一个键盘)。创建以下启动器(在中home/user/.local/share/applications)并将其添加到unity:

桌面条目(Unity启动器)

[Desktop Entry]
Version=1.0
Type=Application
Name=Clavier ON-OFF
Icon=PATH/TO/YOUR/ICON
Exec=bash NAME_OF_YOUR_SCRIPT.sh
Path=PATH/TO/YOUR/SCRIPT
NoDisplay=false
Categories=Utility;
StartupNotify=false
Terminal=false

结果:

启动器:

在此处输入图片说明

通知:

在此处输入图片说明 在此处输入图片说明


这很好用,谢谢您清楚地解释。我不了解一件事:如何根据Shell脚本逻辑更改图标。我认为这部分取决于桌面项中的“ Icon = PATH / TO / YOUR / ICON”,我使用了绝对路径“ /home/.../icon_on.png”,因为我不知道其他方式使用“ .desktop”文件,尽管我可以看到这可能阻止它切换图标。有人可以提供线索吗?
海雀

1
嗨,您对.desktop文件中的绝对路径是正确的。抱歉,但我不知道如何对启动器图标进行动态更改。根据该答案,根本不可能:askubuntu.com/a/244951/458410。我的脚本中的图标仅在通知中更改。
mxdsp

啊哈,好的,我的也一样,谢谢。
海鹦

一种可能的改进:不是存储在文件中的状态就可以直接当键盘使用此命令禁用查询:function is-disabled() { xinput --list --long | grep -A 1 "id=$1" | grep -q disabled }。这样,即使键盘被另一个程序启用/禁用,一切也可以正常工作。
dshepherd '17

fconfig=".keyboard" if [ ! -f $fconfig ]; 这是.keyboard什么 而无论是fconfig$fconfig是一样的吗?还有什么! -f $fconfig意思呢?我是bash脚本的新手。谢谢:)
sphoenix

12

我想到了两种方法可以做到这一点:

  1. 通过在xorg.conf中为笔记本电脑键盘设置错误的模型?

  2. 通过安装婴儿用锁键盘

`Baby Lock-keyboard-for-Baby或lk4b是一个小程序,它可以锁定键盘,但使鼠标空闲。我之所以写这封信,是因为外女喜欢看到我坐下来时就对着键盘ash着。键盘上的按键可能会造成灾难性的后果,我不想一直用屏幕保护程序锁定屏幕。

启动时,婴儿锁键盘会打开一个小窗口,该窗口可抓住键盘并回显键入的键。默认情况下,它告诉您要退出的内容(“立即退出”)。

与屏幕保护程序不同,屏幕不会被阻塞,鼠标仍然可以部分起作用,因此您仍然可以看到屏幕上的内容-继续观看电视/视频和/或使用鼠标滚动来阅读文档。

要求:

·GTK> = 2.x·perl GTK2绑定(perl-gtk2或gtk2-perl,取决于您的系统)


1
这不是我所需要的,我需要使用USB键盘,但是您的代码非常有用!;)
atmon3r 2012年

Lock-for-Baby-Baby键盘可让您禁用内部键盘,同时阻止使用外部键盘
LnxSlck 2012年

辉煌。Lock-Keyboard-For-Baby也可以在Ubuntu 16.04中使用。我更喜欢使用笔和纸本将代码保存在键盘上。这个小工具解决了我的问题。对于其他人,您可能需要在运行perl脚本之前运行sudo apt-get install libgtk2-perl
mac

在台式机塔式USB键盘下,“立即退出”,“立即退出”或“立即退出”在18.04以下均无济于事。
fleamour

10

禁用它的一种可靠方法是拔下信号电缆。您需要为此弹出键盘。有关如何执行此操作的信息,请参阅《 HP Pavilion dv9000和dv9200笔记本电脑维护和服务指南》

现在有一种使用禁用键盘的方法xinput。为此,只需按键盘上的Ctrl+ Alt+ T打开终端。打开时,运行以下命令。

列出您的X设备

xinput --list

禁用键盘:

xinput set-int-prop 2 "Device Enabled" 8 0

要再次启用键盘:

xinput set-int-prop 2 "Device Enabled" 8 1

如果您遇到有关权限的错误,请将上述命令与一起使用sudo


5

根据接受的答案中的建议id从设备接收到的设备有时会在重启时(至少在我的PC上)有所更改,从而导致禁用错误的设备。xinput list

这就是为什么我结束使用device name而不是的原因id,例如:

xinput disable "AT Translated Set 2 keyboard"

5

要在Ubuntu上永久禁用笔记本电脑的内部键盘,需要传递此i8042.nokbd内核参数,以免检查/创建键盘端口

i8042.nokbd [HW] Don't check/create keyboard port

打开终端并运行以下命令

$sudo gedit /etc/default/grub

尝试找到以下行

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

添加参数i8042.nokbd,上面的行应该是这样的

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i8042.nokbd"

按照以下命令更新grub

$sudo update-grub     

然后是reboot您的笔记本电脑。


如何重新启用键盘?
Guilherme Parreira

4

如果我要清洁键盘,因此必须关闭机器。因此,我发现了这一点,以便暂时禁用键盘:

$ xinput float id#; sleep t ; xinput重新连接ID#master#

t睡眠时间(以 秒为单位)

编号#主#提到上述(页面的顶部

例如在我的笔记本中键入:

$ xinput float 11;sleep 5;xinput reattach 11 3

3

尝试运行xmodmap -e 'keycode 24='以仅禁用Q键。如果可行,您可以将其添加到您的文件~/.bashrc或全局/etc/bash.bashrc文件中。我从这里得到了这个主意,其中显示了所有关键映射。


4
也不会q在外部键盘上禁用此功能吗?
Sparhawk

2

基于之前的答案和我自己的玩法,我创建了以下脚本,作为其价值,我将该脚本toggle_keyboard.sh放在~/bin路径中。我有一个将其运行为的键盘快捷键CtrlWinK

先前答案的一些问题和我的脚本的好处:

  • 重新启动并更改ID号后,无法通过xinput依赖ID号。跑步时这发生在我身上xinput float 13。我最终禁用了错误的硬件。
  • 如果您也重新引导,则依靠文件来保持启用/禁用状态将失败。该文件将告诉您键盘已被禁用(如果您使用脚本将其禁用),但是重新启动后它将再次被启用。我的解决方案从已解析的xinput命令获取启用/禁用的信息。
  • 我的脚本将与您键入时显示的任何xinput设备一起使用xinput list --name-only。只需获取名称并编辑前四个变量即可。我将其用于笔记本电脑键盘,网络摄像头,触摸屏显示器以及偶尔使用的其他一些东西。

#!/bin/bash
# Toggle the laptop keyboard either on or off and notify the user about it

# Device name can be found by typing this command: xinput list --name-only
DEVICE_NAME="AT Translated Set 2 keyboard"
# The display name of the device in the notify-send popup
DEVICE_DISPLAY_NAME="Laptop Keyboard"

# Set these to the icons you want to use.
# If they are not found, the notification will still work.
ICON_ENABLE="$HOME/.icons/keyboard.png"
ICON_DISABLE="$HOME/.icons/keyboard_disabled.png"

function xinput_set_prop() {
        xinput set-prop "$DEVICE_NAME" "Device Enabled" $1
}

function notify_change() {
        if [ -f "$1" ]; then
                notify-send --urgency=low --icon="$1" "$2"
        else
                notify-send --urgency=low "$2"
        fi
}

# Returns 1 if device is enabled, 0 if disabled
is_enabled=$(xinput list-props "$DEVICE_NAME" | grep "Device Enabled" | awk '{ print $4 }' | sed 's/[^0-9]*//g')

if [ $is_enabled -eq 1 ]; then
        # device is enabled, so disable it
        xinput_set_prop 0
        notify_change "$ICON_DISABLE" "$DEVICE_DISPLAY_NAME Disabled"
else
        # device is disabled, so enable it
        xinput_set_prop 1
        notify_change "$ICON_ENABLE" "$DEVICE_DISPLAY_NAME Enabled"
fi

0

xinput float“ AT Translated Set 2键盘”

经过数年的时间使用不同发行和发行的不同方法。上面的终端命令是我在遇到问题后所依赖的.....我现在将其与霓虹灯等离子一起使用,并且一个月前在纯Ubuntu 18.04中使用了它。(重新启动后需要应用-可以放置在启动中)*我的HP笔记本电脑上的内置键盘损坏并开始打字,这会导致严重问题-我使用了无线键盘和鼠标-KDE topbar的触摸板处于打开/关闭状态选项-霓虹灯/等离子5)。在系统设置/自动启动中,带有以下代码行的文本文件另存为.sh文件,并设置为可执行文件(txt文件属性)
xinput float“ AT Translated Set 2 keyboard”

文本文件被命名为> keyboardoff>并置于自动启动(可执行)中。当您重新启动/启动系统时,内置键盘已关闭。(使用xinput列表进行测试)

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.