一周前,我把杯子里的饮料洒在了笔记本电脑键盘上。一半的键都不能用了,只有一个键除外!字母 Q 经常被激活。
这对我的工作来说非常令人不安。
有没有办法禁用笔记本电脑的内置键盘?
有可能吗xmodmap
?
答案1
您可以使用xinput
将输入设备浮动在 X 之下。
- 执行命令
xinput list
列出您的输入设备。 - 找到
AT Translated Set 2 keyboard
并记下它的id
编号;这将用于禁用键盘。另外,记下末尾的数字[slave keyboard (#)]
;这是的 ID 号master
,将用于重新启用键盘。 - 要禁用键盘,请执行命令
xinput float <id#>
,其中<id#>
是键盘的 ID 号。例如,如果 是id
,10
则命令为xinput float 10
。 - 要重新启用键盘,请执行命令
xinput reattach <id#> <master#>
,master
其中我们记下的第二个数字在哪里。因此,如果数字是3
,则您需要执行xinput reattach 10 3
。
以下是一个演示:
$ xinput 列表 ⎡ 虚拟核心指针id=2[主指针(3)] ⎜ ↳ 虚拟核心 XTEST 指针 id=4 [从属指针 (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [从属指针 (2)] ⎜ ↳ Logitech USB-PS/2 光电鼠标 id=12 [从属指针 (2)] ⎜ ↳ Logitech Unifying 设备。无线 PID:4004 id=13 [从属指针 (2)] ⎣ 虚拟核心键盘id=3[主键盘(2)] ↳ 虚拟核心 XTEST 键盘 id=5 [从属键盘 (3)] ↳ 电源按钮 id=6 [从属键盘 (3)] ↳ 视频总线 id=7 [从属键盘 (3)] ↳ 睡眠按钮 id=8 [从属键盘 (3)] ↳ Acer CrystalEye 网络摄像头 id=9 [从属键盘 (3)] ↳ AT 翻译设置 2 键盘 id=10 [从属键盘 (3)] $ xinput 浮点数 10 $ xinput 列表 ⎡ 虚拟核心指针id=2[主指针(3)] ⎜ ↳ 虚拟核心 XTEST 指针 id=4 [从属指针 (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [从属指针 (2)] ⎜ ↳ Logitech USB-PS/2 光电鼠标 id=12 [从属指针 (2)] ⎜ ↳ Logitech Unifying 设备。无线 PID:4004 id=13 [从属指针 (2)] ⎣ 虚拟核心键盘id=3[主键盘(2)] ↳ 虚拟核心 XTEST 键盘 id=5 [从属键盘 (3)] ↳ 电源按钮 id=6 [从属键盘 (3)] ↳ 视频总线 id=7 [从属键盘 (3)] ↳ 睡眠按钮 id=8 [从属键盘 (3)] ↳ Acer CrystalEye 网络摄像头 id=9 [从属键盘 (3)] ∼ AT 翻译设置 2 键盘 id=10 [浮动从属] $ xinput 重新连接 10 3 $ xinput 列表 ⎡ 虚拟核心指针id=2[主指针(3)] ⎜ ↳ 虚拟核心 XTEST 指针 id=4 [从属指针 (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=11 [从属指针 (2)] ⎜ ↳ Logitech USB-PS/2 光电鼠标 id=12 [从属指针 (2)] ⎜ ↳ Logitech Unifying 设备。无线 PID:4004 id=13 [从属指针 (2)] ⎣ 虚拟核心键盘id=3[主键盘(2)] ↳ 虚拟核心 XTEST 键盘 id=5 [从属键盘 (3)] ↳ 电源按钮 id=6 [从属键盘 (3)] ↳ 视频总线 id=7 [从属键盘 (3)] ↳ 睡眠按钮 id=8 [从属键盘 (3)] ↳ Acer CrystalEye 网络摄像头 id=9 [从属键盘 (3)] ↳ AT 翻译设置 2 键盘 id=10 [从属键盘 (3)]
答案2
这是一个用于启用和禁用特定键盘的小开关按钮。
首先,您必须使用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启动器,Ubuntu 17.10及以下版本)
[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
结果
启动器:
[
通知:
[ [
答案3
设备id
已从中收到xinput list
建议接受的答案有时会在重启时发生某种变化(至少在我的 PC 上),导致禁用错误的设备。
这就是为什么我最终使用device name
而不是的原因id
,例如:
xinput disable "AT Translated Set 2 keyboard"
答案4
我想到了两种方法可以做到这一点:
通过在 xorg.conf 中为您的笔记本电脑键盘设置了错误的模型?
通过安装婴儿锁键盘
`Lock-keyboard-for-Baby 或简称 lk4b,是一个可以锁定键盘但鼠标可以自由使用的小程序。我编写这个程序是因为我的侄女每次看到我坐在键盘前,就喜欢猛击我的键盘。在键盘上输入的键可能会造成灾难性的后果,我不想一直用屏幕保护程序锁定屏幕。
启动后,lock-keyboard-for-baby 会打开一个小窗口,该窗口会抓取键盘并回显键入的键。默认情况下,它会告诉您要键入什么才能退出(“立即退出”)。
与屏幕保护程序不同,您的屏幕不会被阻挡并且鼠标仍可部分工作,因此您仍然可以看到屏幕上的内容 - 继续观看电视/视频和/或使用鼠标滚动阅读文档。`
要求:
· GTK >= 2.x · perl GTK2 绑定(perl-gtk2 或 gtk2-perl 取决于您的系统)