问题描述
一周前,我把杯子里的东西洒到笔记本电脑键盘上。一半的钥匙不再有效,除了一个!字母Q经常非常活跃。
当我工作时,这非常令人不安。
有没有办法禁用笔记本电脑的内部键盘?
xmodmap
可以吗?
最佳解决思路
您可以使用xinput
将输入设备浮动到X下。
-
执行命令
xinput list
列出输入设备。 -
找到
AT Translated Set 2 keyboard
并记下其id
编号;这将用于禁用键盘。另外,请注意最后的数字,[slave keyboard (#)]
;这是master
的ID号,它将用于键盘的re-enable。 -
要禁用键盘,请执行命令
xinput float <id#>
,其中<id#>
是键盘的ID号。例如,如果id
是10
,那么命令将是xinput float 10
。 -
键盘上的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)]
次佳解决思路
这是一个小开关按钮,用于启用和禁用特定键盘。首先,您必须使用xinput
或xinput-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
作为禁用时显示的图标的路径 -
我使用了以下图标:
-
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
结果:
发射器:
声明:
第三种解决思路
我想到了两种方法可以做到这一点:
-
在xorg.conf中为笔记本电脑键盘设置错误的型号?
简而言之,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。