机械革命无界 15X Pro 暴风雪使用 Arch Linux

 

参考资料

感谢各位前辈的探索!

正文

映射Copilot键到Ctrl键

哈,傻逼微软。

新版

在使用“机械革命控制台”更新BIOS后,Copilot键在按下与松开时均会产生行为,这使得映射更加方便。

如果用keyd的话,加一行leftshift+leftmeta+f23 = rightcontrol就好了。(参考资料

如果用kmonad的话,我不知道该怎么写。欢迎PR或给我发邮件。

旧版

该部分内容已不适用于更新过BIOS到当前版本的情况,仅作备份。

该部分内容适用于Copilot键对应“按下时执行一次leftmeta + leftshift + f23,长按无作用,松开无作用”的机型。本部分将其映射为一个500ms内单次有效的rightctrl键。

缺点:需要三个按键的快捷键(比如Ctrl + Shift + P很难激活,执行时表现为rightctrl ; rightshift + p

原始的sudo keyd monitor -t输出如下:

$ sudo keyd monitor -t
device added: 0001:0001:70533846 AT Translated Set 2 keyboard (/dev/input/event3)
+229 ms AT Translated Set 2 keyboard    0001:0001:70533846    leftmeta down
+3 ms   AT Translated Set 2 keyboard    0001:0001:70533846    leftshift down
+10 ms  AT Translated Set 2 keyboard    0001:0001:70533846    f23 down
+5 ms   AT Translated Set 2 keyboard    0001:0001:70533846    f23 up
+5 ms   AT Translated Set 2 keyboard    0001:0001:70533846    leftshift up
+12 ms  AT Translated Set 2 keyboard    0001:0001:70533846    leftmeta up

首先装上kmonadsudo pacman -S kmonad

然后把这份配置文件存在一个合适的地方,比如/etc/kmonad/kmonad.kbd

(defcfg
  ;; https://young-lord.github.io/posts/mechrevo-linux-2025    ver.20250727

  ;; For Linux
  input  (device-file "/dev/input/by-path/platform-i8042-serio-0-event-kbd")
  output (uinput-sink "Niko's KMonad profile: 机械革命 15X Pro 暴风雪" "/usr/bin/sleep 1 && /usr/bin/setxkbmap -option compose:ralt")

  ;;    cmp-seq rctl    ;; Set the compose key to `RightCtrl'
  ;;    cmp-seq-delay 5 ;; 5ms delay between each compose-key sequence press

  ;; Comment this if you want unhandled events not to be emitted
  fallthrough true

  ;; Set this to false to disable any command-execution in KMonad
  allow-cmd true
  )



;; niko: TODO: wait for XX to be released, replace Fn and Copilot key with XX
(defsrc
  esc  f1   f2   f3   f4   f5   f6   f7   f8   f9   f10  f11  f12  prnt  del  home pgup pgdn end      f23
  grv  1    2    3    4    5    6    7    8    9    0    -    =    bspc       nlck kp/  kp*  kp-
  tab  q    w    e    r    t    y    u    i    o    p    [    ]    \          kp7  kp8  kp9  kp+
  caps a    s    d    f    g    h    j    k    l    ;    '         ret        kp4  kp5  kp6
  lsft z    x    c    v    b    n    m    ,    .    /              rsft       kp1  kp2  kp3  kprt
  lctl      lmet lalt           spc            ralt                up         kp0       kp.
                                                              left down  rght
)



(defalias cpt (tap-hold 30 (layer-delay 15 remap-copilot) lmet))

(deflayer default
  _    _    _    _    _    _    _    _    _    _    _    _    _    _     _    _    _    _    _        _
  _    _    _    _    _    _    _    _    _    _    _    _    _    _          _    _    _    _
  _    _    _    _    _    _    _    _    _    _    _    _    _    _          _    _    _    _
  lctl _    _    _    _    _    _    _    _    _    _    _         _          _    _    _
  _    _    _    _    _    _    _    _    _    _    _              _          _    _    _    _
  lctl      @cpt _         _                   _                   _          _         _
                                                              _    _     _
)

(deflayer remap-copilot
  _    _    _    _    _    _    _    _    _    _    _    _    _    _     _    _    _    _    _        _
  _    _    _    _    _    _    _    _    _    _    _    _    _    _          _    _    _    _
  _    _    _    _    _    _    _    _    _    _    _    _    _    _          _    _    _    _
  _    _    _    _    _    _    _    _    _    _    _    _         _          _    _    _
  (layer-delay 15 remap-copilot-2)    _    _    _    _    _    _    _    _    _    _              _          _    _    _    _
  _         _    _         _                   _                   _          _         _
                                                              _    _     _
)


(deflayer remap-copilot-2
  _    _    _    _    _    _    _    _    _    _    _    _    _    _     _    _    _    _    _        (sticky-key 500 rctl)
  _    _    _    _    _    _    _    _    _    _    _    _    _    _          _    _    _    _
  _    _    _    _    _    _    _    _    _    _    _    _    _    _          _    _    _    _
  _    _    _    _    _    _    _    _    _    _    _    _         _          _    _    _
  _    _    _    _    _    _    _    _    _    _    _              _          _    _    _    _
  _         _    _         _                   _                   _          _         _
                                                              _    _     _
)

然后装个Systemd服务:

cat << EOF | sudo tee /etc/systemd/system/kmonad.service && sudo systemctl enable kmonad
[Unit]
Description=laptop keyboard kmonad
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/kmonad /etc/kmonad/kmonad.kbd
Restart=always
User=root
Group=root

[Install]
WantedBy=multi-user.target
EOF

重启电脑,或运行kmonad服务即可。顺带一提这份配置会把CapsLock映射为leftctrl,还原此更改的方法显而易见。

无法休眠(Hibernate)

表现为:休眠后电源灯仍然点亮,只可长按电源键强制关机,开机后无法还原休眠前状态。

请先阅读ArchWiki 对应章节,以及其中引用的best practices to debug suspend issues 一文

对于我,应用System does not power off when hibernating 一节中的内容即可解决。

休眠后无法点亮屏幕(或点亮屏幕后卡死)

加一条内核参数amdgpu.gpu_recovery=1

休眠后键盘偶发性不工作

临时解决:使用Fn + F1再次休眠并唤醒。

永久解决:加一条内核参数i8042.nomux=1

其他

AI真强啊,遇到什么问题把journalctl -b 0丢给它就好了。

这机子跑Linux体验其实还行,感谢TUXEDO的软件支持。不过硬件体验的话,很容易在使用过程中黑屏卡死or自动重启,需要除静电等一系列操作才能恢复。