咸鱼搞了一台 Pixelbook 2017,当年的顶配 16+512,CPU i7-7Y75 看着有点拉胯,不过也有好处,那就是续航挺不错的。
先把参考链接记录一下,挖坑折腾过程。
解锁
刷固件
装 arch
折腾驱动
用起来
键盘映射
pixelbook 本来按键就不多,有几个按键比较奇怪,还用不上,就需要重新做一下映射了。这里参考的是 arch wiki: Map scancodes to keycodes。
确定按键 scancode
在映射之前首先需要找到按键的 scancode,这也算是 pixelbook 自己独特的地方,键盘上有几个不一样的按键。这里使用的是 evtest
来确定按键的 scancode,不过还需要先确定键盘的 device event number 是多少。
cat /proc/bus/input/devices | rg "kbd" -C 5
# name 中包含 keyboard 的就是键盘了,我的是 event2,所以我使用 evtest 的命令就是
sudo evtest /dev/input/event2
# 这个时候键盘按下你想要知道 scancode 的按键就可以了
# 而我最想知道的就是一般键盘 Caplock 和 LeftMeta 位置的两个按键的 scancode 值
Event: time 1706794010.527439, -------------- SYN_REPORT ------------
Event: time 1706794010.619637, type 4 (EV_MSC), code 4 (MSC_SCAN), value db
Event: time 1706794010.619637, type 1 (EV_KEY), code 1 (KEY_ESC), value 0
Event: time 1706794010.619637, -------------- SYN_REPORT ------------
Event: time 1706794012.397696, type 4 (EV_MSC), code 4 (MSC_SCAN), value d8
Event: time 1706794012.397696, type 1 (EV_KEY), code 125 (KEY_LEFTMETA), value 1
# 由于我已经把那两个按键映射好了,所以可以通过 EV_KEY 那一行的 code 看到 KEY 的名字;看 EV_MSC 那一行的 value 值就可以知道按下按键的 scancode 是多少了
使用 udev 进行映射
我的需要是把 Caplock 和 LeftMeta 位置的两个按键进行重新映射,通过上面我们知道了 Caplock 位置按键的 scancode 是 0xdb,LeftMeta 位置按键的 scancode 是 0xd8。 参考 wiki,就直接贴配置了
# cat /etc/udev/hwdb.d/61-keyboard-local.hwdb
evdev:input:b0011v0001p0001eABBA*
KEYBOARD_KEY_d8=leftmeta
KEYBOARD_KEY_db=esc
我这里使用的设备匹配方式是 USB 键盘序列号,这个号码同样可以通过命令
cat /proc/bus/input/devices | rg "kbd" -C 5
找到键盘相关的第一行来确定。
这里稍微踩过一个坑,似乎在更新了什么之后,这个键盘的 version 号是会变的,这个时候键盘映射就会失效了,需要更新这个配置文件才行。
然后使用
systemd-hwdb update
更新 hwdb.bin
最后再使用
sudo udevadm trigger
使系统重新读取 hwdb.bin(当然重启也行)
- https://www.cx03.space/2022/10/16/pixelbook-2017-eve-%E5%AE%89%E8%A3%85-archlinux-%E9%81%BF%E5%9D%91%E6%8C%87%E5%8C%97/
- https://hollywoo.de/posts/chrultra/
- https://wiki.gentoo.org/wiki/Google_Pixelbook_(2017)
- https://gist.github.com/daemonp/ecead946317b175e3b54731a513efe94
- https://github.com/jmontleon/pixelbook-fedora