用拼音打字,回车就发送了 / 打不出 m
适用范围:下文依据历史 issue 整理。原因、绕过方法与限制需结合报告版本判断;本文没有在所有平台实机验证,也不把 issue 关闭当作已发布修复。
中文输入法跟桌宠的快捷键撞了。下文来自历史报告,本文未确认具体修复发行版本;先核对本机症状,再试绕过方法。
先说清楚:这不是你输入法的问题,也不是键盘坏了。 是桌宠在监听键盘事件时,没有排除「正在用输入法打字」这个状态。
问题一:拼音还没上屏,按回车消息就发出去了
你会看到
在桌宠的对话框里打拼音,比如输入 nihao,候选词还在输入法候选栏里没选,
你按回车想上屏——结果消息直接发送了,发出去的是英文字母 nihao。
原因
输入法打字时有一个「组合状态」(composition):你敲的字母先进入输入法, 选完候选词才真正写进输入框。这个阶段按回车,本来应该是「上屏」。
但桌宠的发送逻辑只看「按了回车」,没有判断当前是不是在输入法组合状态, 于是把上屏的回车当成了发送指令。
怎么办
-
改用空格上屏(最有效)
所有主流拼音输入法(搜狗、微软拼音、微信输入法、macOS 自带)默认都是 空格键上屏第一个候选词,回车是「上屏英文原文」。
养成用空格选词的习惯,就不会触发发送了。
-
在主界面输入,不在宠物对话框输入
DSH 主界面的输入框没有这个快捷键冲突。打完再切回来看宠物反应。
-
如果一定要用回车上屏
检查输入法设置,把「回车键行为」改成「上屏候选词」而不是「上屏英文」。 但即使改了,组合状态下的回车仍可能被桌宠截获——所以还是推荐第 1 条。
这个问题在 macOS 和 Windows 上都出现过,报告里涉及的版本是 0.3.8 和更早。 如果你在 0.4.x 上还遇到,去 issue #248 补充版本号。
问题二:打不出 m,一按就变成录音
你会看到
在桌宠对话框里打字,其他字母都正常,但一按 m:输入框失焦、
麦克风按钮变红开始录音、m 丢了。拼音里带 m 的音节(ma / mei / ming)全被打断。
原因
m 是「按住说话」的快捷键。桌宠判断这个快捷键时只看了「按的是不是 m」,
没有排除两种情况:
- 当前焦点是不是在输入框里
- 是不是正在用输入法组合(
isComposing)
更巧的是,触发「按住说话」的条件之一恰好是「焦点在宠物对话窗里」—— 也就是你最想打字的时候,正好处于武装状态。
怎么办
-
用鼠标点麦克风按钮
不用快捷键,直接点界面上的麦克风图标开始录音。虽然慢一点,但不会吞字母。
-
先在别处打好,再粘进去
在记事本或主界面输入框打好含 m 的内容,复制粘贴到宠物对话框。
-
暂时避开宠物对话框
日常对话走 DSH 主界面,桌宠只当个看板。
没有配置项能改这个快捷键。它写死在代码里(HEAR_KEY),
目前不能自定义。要改只能改源码,而且升级会被覆盖。
这两个问题什么时候能修好
两个 issue 都还在开放状态,官方给的修复方向都是「首次按下时加守卫」—— 判断当前是否在输入框、是否在输入法组合状态。改动很小,但还没合并到正式版本。
想推动的话,去对应 issue 里说明你的环境和版本,或者点个 👍。 维护者对 issue 响应很快(179 个里只有 3 个还开着),有足够反馈通常会排进下个版本。
相关 issue:#272 macOS 拼音回车直接发送、 #248 拼音回车直接发送、 #269 按住 M 说话吞掉 m
顺便:Linux 上的输入框打不了字
如果你在 Linux(KWin)上遇到的是「输入框有光标但打不出任何字」, 那不是输入法冲突,是窗口焦点问题——dock 窗口不参与焦点链。 目前需要手动做 dock↔normal 的窗口置换,属于系统层面的绕行方案, 具体做法见 issue #247。