← 返回文章列表
故障排查实录 · macOS

迁移后登录界面键盘失灵
藏在 loginwindow.plist 里的慢速键

2026-09-11 MacBook Pro (Apple Silicon) 迁移源:Mac mini M4 辅助功能 / loginwindow
结论:不是硬件、不是驱动、不是蓝牙配对。迁移把「登录窗口」级别的辅助功能设置带了过来,慢速键(Slow Keys)被启用,物理按键因未达到按住时长阈值而被全部丢弃。

1现象与关键信号

最值钱的信号:「进系统后正常」。
硬件排线、HID 驱动栈、内核扩展若真有问题,进系统不可能自愈。范围可直接收窄到只在登录窗口(loginwindow)阶段生效的软件层配置

2第一轮猜想与逐个证伪

猜想 验证方式 结果
蓝牙键鼠配对
迁移带入了源机配对记录
system_profiler SPBluetoothDataType | grep -A 6 "Paired" 排除
仅配对 Logi M750 鼠标(BLE),无任何蓝牙键盘
罗技驱动残留
守护进程登录前启动抢占 HID
自研 logitech-fix.sh diag 全量扫描 排除
应用 / LaunchDaemon / kext / Helper / 进程 —— 全部为空
hidutil 键位映射残留 hidutil property --get "UserKeyMapping" 排除
返回 (null),无映射
HID 通路本身 hidutil list | grep -i keyboard 正常
内置键盘已绑定 AppleHIDKeyboardEventDriverV2

直到把整个登录窗口配置读出来,答案才浮出水面:

$ defaults read /Library/Preferences/com.apple.loginwindow
{
    accessibilitySettings = {
        AssistiveControlType      = 2;
        dwellEnabled              = 0;
        mouseDriver               = 1;   // 鼠标键开启
        slowKey                   = 1;   // ★ 慢速键开启 —— 根因
        stickyKey                 = 0;
        virtualKeyboardOnOff      = 1;   // 虚拟键盘开启
        voiceOverOnOffKey         = 0;
    };
}

3根因与机理

慢速键是什么

「慢速键」(Slow Keys)要求按键被按住超过一定时长(默认约 250ms)才被判定为有效输入,设计初衷是帮助手部震颤用户避免误触。后果是:正常速度敲键盘时,每次按下—抬起都短于阈值,全部被丢弃,表现出来就是「键盘没反应」。

为什么「进系统后正常」—— 两套配置互不影响

层级配置文件生效范围
用户会话级 ~/Library/Preferences/com.apple.universalaccess 登录后的桌面会话
本机实测 slowKey = 0
登录窗口级 /Library/Preferences/com.apple.loginwindow
accessibilitySettings
登录界面(含锁屏)
本机实测 slowKey = 1

两个配置完全独立 —— 精确解释了「登录界面死、进桌面活」这一看似反直觉的现象。很多人到这一步会误判为硬件间歇性故障。

为什么虚拟键盘能用

高辨识度指纹:物理键盘死 / 虚拟键盘活 / 进系统活。

4修复

# 方式一(图形界面):登录界面按 Cmd+Option+F5,取消勾选「慢速键」

# 方式二(命令行):登录窗口级辅助功能全部归零
D=/Library/Preferences/com.apple.loginwindow
sudo defaults write $D accessibilitySettings -dict-add slowKey             -int 0
sudo defaults write $D accessibilitySettings -dict-add virtualKeyboardOnOff -int 0
sudo defaults write $D accessibilitySettings -dict-add mouseDriver          -int 0
sudo defaults write $D accessibilitySettings -dict-add AssistiveControlType -int 0

# 校验
$ defaults read $D accessibilitySettings
{
    closeViewHotkeysEnabled = 0;   // 修复后全部归零
    mouseDriver             = 0;
    slowKey                 = 0;
    stickyKey               = 0;
    virtualKeyboardOnOff    = 0;
}

重启后登录界面物理键盘恢复正常输入,问题结案。

5可复用排查路径

核心分叉点是 Caps Lock 灯测试,成本最低的一条命令则直接命中答案:

# 首选:一条命令直达答案(秒级)
defaults read /Library/Preferences/com.apple.loginwindow accessibilitySettings \
  | grep -E "slowKey|mouseDriver|virtualKeyboard"
观察结果指向下一步
Caps Lock 灯亮但字符不上屏 HID 通路正常,问题在事件过滤层 查登录窗口 slowKey、Secure Input
Caps Lock 灯完全不亮 HID 事件未送达 loginwindow 安全模式、Apple Diagnostics
登录界面出现虚拟键盘 / 鼠标指针异常 登录窗口辅助功能被开启 直接查 accessibilitySettings
切换其他用户登录界面同样失灵 全局配置问题 查 loginwindow plist、LaunchDaemon
仅当前用户失灵 用户级配置问题 com.apple.universalaccess

排查顺序(成本递增):读 loginwindow 辅助功能 → 查第三方驱动残留 → 安全模式对照 → 新建管理员用户对照 → Caps Lock 灯 / Apple Diagnostics → log show --last boot 查 loginwindow 与 HID 日志。

6经验总结

1
「进系统后正常」是最强的分流信号,直接排除硬件与驱动,把范围锁死在登录窗口专属配置。不要被「迁移后出问题」这个叙事带偏去查迁移过来的应用。
2
macOS 辅助功能存在「登录窗口」独立配置层,位于 /Library/Preferences/com.apple.loginwindowaccessibilitySettings,与用户会话的 com.apple.universalaccess 互不影响。这是登录类故障排查的典型盲区。
3
登录界面出现虚拟键盘 = 辅助功能被启用的直接证据,而不是「系统很贴心」。这次它被当成了应对手段,实际是症状本身。
4
排查要先证伪再深入。罗技驱动虽是最高概率嫌疑,但一条 diag 命令就彻底排除;若不做这步直接卸载/重装驱动,会浪费大量时间且永远修不好。
5
迁移助理会带走系统级偏好,包括登录窗口辅助功能设置。迁移后出现「只在某个系统阶段异常」的问题时,优先怀疑 /Library/Preferences 下被带过来的系统级 plist。