weasel icon indicating copy to clipboard operation
weasel copied to clipboard

光标前残留输入,且无法删除

Open TheRainstorm opened this issue 5 months ago • 13 comments

上报前请检查

  • [x] 我遇到的问题没有其他人在 issue 里提到过
  • [x] 我的小狼毫版本于 rime/weasel 下载
  • [x] 我在使用小狼毫的最新发布版本,或最新发布版本后的 CI 构建

操作系统信息

  • OS 详细版本: Windows11 24H2 26100.4351
  • 小狼毫版本: 0.16.3.0

描述遇到的问题

命令行使用 tmux 时,鼠标选中文字后,按 q 退出 tmux 的复制模式。此时,输入的 q 会被保留在光标左侧,并且没有办法删除。切换回 windows 输入法才可以删除掉这个 q。之前正常使用1年没有遇到这个问题,怀疑是这次更新 windows 导致的。

这个问题感觉像是 rime 输入的输入缓冲没有被正确清除。

复现步骤

我自己是程序员,所以在 tmux 中遇到这个问题。暂时还不知道有什么其他触发方式。

  1. 服务器上安装 tmux(sudo apt install tmux)
  2. 开启鼠标模式:tmux set-option -g mouse on
  3. 进入 tmux
  4. 让鼠标选中后不自动回到结尾:tmux bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-selection
  5. 鼠标滚动进入拷贝模式
  6. 按 q 退出
  7. q 出现在输入光标前方,无法删除

预期行为

修复该问题

用户文件

截图

Image

其他补充说明

TheRainstorm avatar Jul 20 '25 17:07 TheRainstorm

补充:

  • 尝试过使用最新的 0.17.4,仍然存在该问题
  • 之前没有遇到该问题,这个月更新 windows 后便出现了该问题

TheRainstorm avatar Jul 20 '25 17:07 TheRainstorm

Windows terminal 任意 shell 即可复现。 Windows: Edition Windows 11 Pro OS Build 26100.4484 WT: Terminal (Portable) Version: 1.22.250624001 Weasel: 0.17.4.0

https://github.com/user-attachments/assets/f4e0f4a1-436b-4a4e-8feb-f0822c7b44d0

PandaPYHNN avatar Jul 21 '25 08:07 PandaPYHNN

Windows terminal 任意 shell 即可复现

我用 windows terminal + powershell/cmd/git bash 试了一下确实可以复现,需要把 windows terminal 中的鼠标自动复制打开:设置->交互->自动将所选功能复制到剪贴板

发现 alt-tab 切换一下别的应用,再切回去,就恢复正常了。

TheRainstorm avatar Jul 21 '25 08:07 TheRainstorm

++ 不仅仅在 windows terminal 中复制会产生问题。 从任何位置复制文本后, 再回到 windows terminal 输入字符就会导致字符残留。

PandaPYHNN avatar Jul 24 '25 03:07 PandaPYHNN

++ 此外, 在 np++, chrome, obsidian, 微信, TIM 中也有观察到类似的现象(vscode 中没复现到)。不同的是, 文本没有残留, 而是上屏了。 如下:

  1. Ctrl+C复制 test
  2. 中文输入法输入 uijm (小鹤双拼 时间)。
  3. 第一个字符 u 直接上屏。
  4. 后面的字符进入输入法。

https://github.com/user-attachments/assets/73a4927b-0c73-4910-bbd9-563ef5f5a5de

PandaPYHNN avatar Jul 24 '25 03:07 PandaPYHNN

++ 此外, 在 np++, chrome, obsidian, 微信, TIM 中也有观察到类似的现象(vscode 中没复现到)。不同的是, 文本没有残留, 而是上屏了。 如下:

  1. Ctrl+C复制 test
  2. 中文输入法输入 uijm (小鹤双拼 时间)。
  3. 第一个字符 u 直接上屏。
  4. 后面的字符进入输入法。

nppp.mp4

我也是经常第一个字母直接上屏了😫

fatelove42 avatar Jul 24 '25 13:07 fatelove42

同样有第一个字母直接上屏的问题,不过我用的是鼠须管在搜索 issues 时会触发

jianghuaangte avatar Jul 25 '25 05:07 jianghuaangte

同样有第一个字母直接上屏的问题,不过我用的是鼠须管在搜索 issues 时会触发

Image目前我是分程序关闭开启inline_preedit这样解决下 ,但chrome之外的electron应用还是会出现第一个拼音直接上屏的问题

fatelove42 avatar Jul 25 '25 05:07 fatelove42

visio 中打字也有类似问题

复现步骤: visio新建空白文件, 拖入形状 输入文字,候选框就会残留在屏幕上。

只有关闭visio候选框才会消失

Newdea avatar Aug 01 '25 04:08 Newdea

这个问题困扰我很久了,刚试了一下确实复制就会出现,之前都不知道为啥会出现这个问题,一度认为是自己哪里配置错了😅

++ 不仅仅在 windows terminal 中复制会产生问题。 从任何位置复制文本后, 再回到 windows terminal 输入字符就会导致字符残留。

bluebanboom avatar Aug 04 '25 00:08 bluebanboom

这个问题困扰我很久了,刚试了一下确实复制就会出现,之前都不知道为啥会出现这个问题,一度认为是自己哪里配置错了😅

++ 不仅仅在 windows terminal 中复制会产生问题。 从任何位置复制文本后, 再回到 windows terminal 输入字符就会导致字符残留。

截完图后发现字母c正常输入了。

Image

bluebanboom avatar Aug 04 '25 00:08 bluebanboom

在obsidian也有这个问题,而且有时候切屏都解决不了,只能重开软件,频次很多。

TYBLHQY avatar Aug 09 '25 04:08 TYBLHQY

这个问题我也遇到了,应该是windows11 的问题,我参考别人的思路解决了,这里简单说明下解决步骤:

  1. 打开 Windows 的注册表编辑器
  2. 在地址栏输入:HKEY_CURRENT_USER\Software\Microsoft\InputMethod\Settings\Common 并回车
  3. 将 TouchKeyboardHasEverShown 值从 1 改为 0
  4. 将 InputPanelPageLastOpenTime 值改为十进制 2051193600,该值对应的日期为 2035 年 1 月 1 日,该值可使用 Linux 中的 date --date='@2051193600'查看。
  5. 重启电脑

详见 Windows11 24H2开启触摸键盘功能后,会导致输入法首字母不被自定义输入法接管(变为英文)[内附解决方案] - Microsoft Q&A。注意答案按照日期排序,较新的在前,则可找到相关答案,这里引用原答案如下:

HKEY_CURRENT_USER\Software\Microsoft\InputMethod\Settings\Common 到地址栏按回车,在右侧找到 TouchKeyboardHasEverShown ,双击或右键选择修改,在输入框中输入0点击确定保存

今天看到熊猫的评论上面修改 TouchKeyboardHasEverShown 值的方法可能不起作用,我想起了之前看到还有一个条目 InputPanelPageLastOpenTime 即输入面板页面上次打开时间,我想着将时间改成未来的某个时间应该也是可行的,就尝试该了一下。第一次尝试将时间修改到2057年,重启后发现修改没有起效,然后将时间修改到了 2051193600 即 2035/01/01 00:00:00 重启后该 BUG 就没有出现了。

wsxq2 avatar Aug 12 '25 08:08 wsxq2