Open jiapeng123456 opened 2 years ago
未遇過
@LEOYoon-Tsaw 這種問題偶爾會發生,屬於 IMK 常見抽風事項。 剛剛看了 Squirrel 的源碼之後,我趨向於在這裡開刀:
直接對這裡要遞交的 string 做「遞交前過濾」,將閉區間「0...31」以及「127」這些 ASCII 數值都過濾掉。
ObjC 弄起來可能會有些麻煩,不然就等 Swift 化的時候再開刀。
問題是我沒遇到過,不知道出問題的條件啊
@LEOYoon-Tsaw 出問題的條件完全隨機。這是 IMK 的 bug。
還有一個辦法,把最低系統要求提高到MacOS 12,這樣老電腦就用不了了,應該就不容易出問題了
@LEOYoon-Tsaw 這並不能解決問題。IMK 一直都沒什麼大更新。 Monterey 也頂多就是給 IMK 的自動登記的輸入法副本加上了使用者強制確認的步驟而已。 我發現這個隨機問題完全是因為我在用威注音的時候發現不只一次而已,自從我加上了上文所述的過濾機制之後就消停了。
不是,因為我從沒遇到過,一定有什麼原因有些人會遇到這問題,而有些人不會
那一定還有倖存者偏差等其他變數使然。 我主張一定要加上這個過濾器就是了,因為被過濾掉的字符本來就不該被遞交出去。
爲啥?就有用戶要輸入控制字符呢?
@ShikiSuen 我外接2个显示器,经常会出现这种问题。但如果不外接显示,就很少出现。不知道你是不是也有这种情况。
@LEOYoon-Tsaw 请问一下,如何用 RIME 输入控制字符? (我知道输入控制字符方法后,我自己想想办法,看看能不能避免输入控制字符)
就加入碼表就行
abcde
@LEOYoon-Tsaw 那就加上一個狀態開關。 當正在輸入的 buffer 內被使用者故意插入控制字元的時候,這個開關開啟。 在這個開關開啟的情況下,我上述提到的過濾器不生效。
@jiapeng123456 請問您方便用威注音輸入法測試一下您那邊雙顯示器使用場合嗎? https://github.com/vChewing/vChewing-macOS/releases (偏好設定內可以改成漢語拼音全拼模式。)
我刪掉了我上一條回覆當中的某些內容。
如果是 rime_get_api()->get_input(_session) 這個命令出了使用者並未請求輸入的 ASCII 控制字元的話,那麼問題就出在 libRime 當中。
@LEOYoon-Tsaw 对 RIME 不是太熟悉,确认两个问题。 1,我使用的是 wubi_pinyin,我看文件夹中有 pinyin_simp.dict.yaml 和 wubi86.dict.yaml 这两个文件。码表是不是指这两个文件? 2,如果是的话,像我上面提提出的问题,会打出 0x17 这处控制字符。这个字符默认是在码表中吗?如果在的话,请问如何在码表中查找这个控制字符呢?搜索 0x17 的十进制数字 23 吗? 3,rime 的表码默认带控制字符吗?
@ShikiSuen 我明天去公司先试试如何能稳定的输入控制字符,然后再试试你说的输入法。 现在输出控制字符,都有点随机,不是很容易复现。
@jiapeng123456 原廠的 yaml 都在這個倉庫當中:https://github.com/rime/plum 你可以自行檢查下碼表檔案,看看有沒有你原本不打算置入的控制字符。
在碼表檔案當中檢索相關字符時,可以用 cotEditor 或者 BBEditor 內建的 Grep 檢索條件。 與 Grep 有關的用法參見:https://www.regular-expressions.info/
先多做些測試,看出現的條件。 是否方案相關——換個方案呢? 系統版本,電腦是很舊嗎還是黑蘋果(樓主說卡) 是輸入特定詞會出現嗎,是特定App中出現嗎,特定輸入長度? 等等 我未遇過,所以只能樓主自己去測試一下
原則上無法復現的問題我是不會修的。句號。 @ShikiSuen
测试出来了必现的方法,不知道对调查问题有没有帮助。
1,下载最新的 0.15.2 版本,进行安装。 2,打开 obsidian,用默认自带的拼音输入法输入拼音:women(注意:输入任何拼音都可以,但不要按回车,要保持联想状态,就是拼音下面有横线的状态)。 3,然后按 option + 右方向键。(就是 mac 的向右边跳一个单词的快捷键) 4,就会出现 0x1d 控制字符。
1,关于编辑器的测试 用 RIME 在其它部分编辑器(例如 sublime),无法输出控制字符(估计从编辑器层面上就禁止输入了)。但我在语雀上输出过。
2,关于输入法的测试 用其它部分输入法(Mac 自带的五笔/拼音)在大部分编辑器上,用上面的方式无法输出控制字符。(其它输入法没有进行测试)
我沒能用語雀重現該問題,但 Obsidian 確實會在用鼠鬚管時出現這個問題。
https://user-images.githubusercontent.com/3164826/177919304-02109ead-f24e-42e4-8939-21d79ffa7ff3.mov
我沒能用語雀重現該問題,但 Obsidian 確實會在用鼠鬚管時出現這個問題。
语雀前两年用的时候,打出来过。这次没有用语雀进行测试。
在Vim中可以輸入控制字符,^_
就是0x1F,但按住⌥+↓
並不會出現該控制字符:
在Obsidian中同樣可輸入控制字符,但輸入時輸入行的預覽(使用了首選嵌入)並沒有顯示US
即x01F,回車後方上屏US
在Obsidian中輸入任意字符按⌥+↓
會出現US
,同樣,按⌥
+任意鍵會出現對應的擴展字符,如⌥+s
出現ß。
然而不開啓鼠鬚管時,按⌥+s
出現ß,按⌥+↓
卻不出現US
屏蔽上屏不能解決此問題,因爲出現0x1F是在上屏前,此時尚未觸發上屏(commit)操作。而且就算關閉一切嵌入模式,輸入欄只應有一全角空格時,同樣會出現0x1F。
而發生些行爲時,方向鍵並未生效,鼠鬚管並未讀到方向鍵,且在鼠鬚管本不應輸出字符時出現0x1F,此條指向非鼠鬚管的問題。但使用系統自帶輸入法又未觀察到此行爲,指向是鼠鬚管的問題。有待進一步研究
@LEOYoon-Tsaw 不妨把我在上文引用的那段當中的 //NSLog(@"commitString:");
的註解標記暫時去掉?
這樣可以徹底證明 0x1F 究竟是不是在 commit 的過程當中產生的。
@LEOYoon-Tsaw 不妨把我在上文引用的那段當中的
//NSLog(@"commitString:");
的註解標記暫時去掉? 這樣可以徹底證明 0x1F 究竟是不是在 commit 的過程當中產生的。
沒有到這個函數的,這個函數調用後都
[NSApp.squirrelAppDelegate.panel hide];
輸入框都隱藏了。
直接對這裡要遞交的 string 做「遞交前過濾」,將閉區間「0...31」以及「127」這些 ASCII 數值都過濾掉。
糟糕的想法
问题
使用 RIME 打字时,因为电脑比较慢,有时候会打出 control character,如下图:
请问这个是什么问题。
版本
RIME:0.15.2 输入法:wubi_pinyin