走近科学IT版:FreeBSD系统下ThinkPad键盘突然按不出b和n键了!
很慌,以为键盘坏了,在控制台无法按出b和n,但是在浏览器里,可以按出来。
重启机器,结果在浏览器里也按不出来了....
按Ctrl+空格,切换输入法,结果就正常了。
在写这篇文章的过程中,又出现了无法按出n的情况,这是怎么回事呢?
检查
acdefghijklmopqrstuvwxyz1234567890-=[]\;',.
也就是打不出来的字符是:b n ? 和空格这四个字符。?就是/这个键位。
检查当前键盘布局:
kbdcontrol -d
kbdcontrol: getting keymap: Inappropriate ioctl for device
没有拿到信息...
到tty1去,kbdcontrol -d有很多信息,但是没有关于keymap相关的信息
AI建议的几种解决方法
1 强制重置输入法状态
pkill -9 fcitx; pkill -9 chsimerm -rf ~/.config/fcitx/*
2 修复键盘布局配置
# 备份原配置
sudo cp /etc/rc.conf /etc/rc.conf.bak
# 强制使用通用us键盘布局
sudo sysrc keymap="us"
# 即时生效配置
sudo kbdcontrol -l us
如果下次再碰到问题,就用方法2试试。
思考,大约是输入法惹的祸,有可能是切换到其它文字的输入了,没有b和n。
先存档。
2025.6.26日又碰到一次,这次是用关闭fcitx输入法解决的。
2025.6.27 这次又碰到了
但是这次关闭输入法不管用了,这次发现是n b / 和空格,向右等键都失灵了
dmesg看到的信息:
Jun 25 09:48:01 x250 kernel: atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
Jun 25 09:48:01 x250 kernel: atkbd0: <AT Keyboard> irq 1 on atkbdc0
Jun 27 10:29:23 x250 kernel: atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
Jun 27 10:29:23 x250 kernel: atkbd0: <AT Keyboard> irq 1 on atkbdc0
Jun 27 11:32:29 x250 kernel: atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
Jun 27 11:32:29 x250 kernel: atkbd0: <AT Keyboard> irq 1 on atkbdc0
Jun 27 11:43:28 x250 kernel: atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
Jun 27 11:43:28 x250 kernel: atkbd0: <AT Keyboard> irq 1 on atkbdc0
也没发现啥问题。
拆卸键帽,清灰
问题没有解决
问题解决
一度放弃了,都准备下单一个外置键盘了.....
突然感觉不能这样放弃,应该是哪里还有问题。于是查看以前的文档:ThinkPad X250在 FreeBSD xfce4下小红点不能用、触摸板不能用以及键盘上下左右变成其它键_thinkpadx250触摸板-CSDN博客
尽管问题不完全相通,但是让我坚定了大约是配置问题的信心。最近改了啥配置呢? 为了调试wifi,确实往rc.conf文件里写东西了,有的是自己写的,有的是装了新软件自动写的。
打开/etc/rc.conf文件,发现最后一行是这样的:
keymap="us"
把这句注释掉,然后执行
sudo /etc/netstart
问题解决!
所以...这件事从头来说,就是因为/etc/rc.conf文件中多了一句keymap="us" ?
真的是太神奇了。