当前位置: 首页>>技术教程>>正文


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

,

问题描述

一周前,我把杯子里的东西洒到笔记本电脑键盘上。一半的钥匙不再有效,除了一个!字母Q经常非常活跃。

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

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

xmodmap可以吗?

最佳解决思路

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

  1. 执行命令xinput list列出输入设备。

  2. 找到AT Translated Set 2 keyboard并记下其id编号;这将用于禁用键盘。另外,请注意最后的数字,[slave keyboard (#)];这是master的ID号,它将用于键盘的re-enable。

  3. 要禁用键盘,请执行命令xinput float <id#>,其中<id#>是键盘的ID号。例如,如果id10,那么命令将是xinput float 10

  4. 键盘上的re-enable,执行命令xinput reattach <id#> <master#>,其中master是我们记下的第二个数字。所以如果数字是3,你会做xinput reattach 10 3

这是一个演示:


$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=11   [slave  pointer  (2)]
⎜   ↳ Logitech USB-PS/2 Optical Mouse           id=12   [slave  pointer  (2)]
⎜   ↳ Logitech Unifying Device. Wireless PID:4004   id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ Acer CrystalEye webcam                    id=9    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=10   [slave  keyboard (3)]
$ xinput float 10
$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=11   [slave  pointer  (2)]
⎜   ↳ Logitech USB-PS/2 Optical Mouse           id=12   [slave  pointer  (2)]
⎜   ↳ Logitech Unifying Device. Wireless PID:4004   id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ Acer CrystalEye webcam                    id=9    [slave  keyboard (3)]
∼ AT Translated Set 2 keyboard              id=10   [floating slave]
$ xinput reattach 10 3
$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=11   [slave  pointer  (2)]
⎜   ↳ Logitech USB-PS/2 Optical Mouse           id=12   [slave  pointer  (2)]
⎜   ↳ Logitech Unifying Device. Wireless PID:4004   id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ Acer CrystalEye webcam                    id=9    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=10   [slave  keyboard (3)]

次佳解决思路

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

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

Configuration

  • Icon作为启用时显示的图标路径(例如,/home/user/path/icon.png)

  • Icoff作为禁用时显示的图标的路径

  • 我使用了以下图标:

    keyboard,ubuntu

    keyboard,ubuntu

  • 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

结果:

发射器:

keyboard,ubuntu

声明:

keyboard,ubuntu

keyboard,ubuntu

第三种解决思路

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

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

  2. 通过安装Lock-keyboard-for-Baby

简而言之,Lock-keyboard-for-Baby或lk4b是一个小程序,它可以锁定你的键盘但让你的鼠标自由。我写这篇文章是因为我的侄女每当看到我坐在它上面时都喜欢抨击我的键盘。在键盘上键入的键可能会带来灾难性的后果,我不想一直使用屏幕保护程序锁定我的屏幕。

启动时,lock-keyboard-for-baby打开一个小窗口,可以抓取键入的键盘和回声键。默认情况下,它会告诉您要输入的内容(“Quit Now”)。

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

要求:

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

第四种思路

一种确定的禁用方法是拔掉信号线。你需要弹出键盘。有关如何操作的信息,请查看Maintenance and Service Guide for the HP Pavilion dv9000 and dv9200 Notebook PC

现在有一种方法可以使用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

第五种思路

永久禁用笔记本电脑的内部键盘在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你的笔记本电脑。

第六种思路

按照accepted answer中的建议从xinput list收到的设备id有时会在重新启动时(至少在我的PC上)以某种方式更改,导致禁用错误的设备。

这就是为什么我结束使用device name代替id,例如:

xinput disable "AT Translated Set 2 keyboard"

第七种思路

例如,临时禁用键盘进行清理:

$ xinput float id#; sleep t; xinput reattach id #master#

t-在几秒钟内睡觉

id#和master#如上所述(最重要的是),例如在我的笔记本上:

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

我刚刚添加了这个,因为我喜欢一直打扫键盘。我必须重新启动,所以我发现了这个!

第八种思路

尝试运行xmodmap -e 'keycode 24='以仅禁用Q键。如果可行,您可以将其添加到~/.bashrc或全局/etc/bash.bashrc文件中。我从here得到了这个想法,它显示了所有key-mappings。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1300.html,未经允许,请勿转载。