Shewer Lu
Shewer Lu
可能 查看 wiki
> KeyEvent 函數在官方下載的小狼毫中,好似 librime-lua 版本太舊不支持?! 這邊經驗是 mac 鼠鬚管以下運作正常 > > ``` > key:eq(KeyEvent("Shift+Return")) > ``` > > 後來移到 win 小狼毫卻不行且報錯! 查一下報錯日誌,看看有沒有提示 KeyEvent 問題就知道! mac 版本有更新 librime-lua 2021/7 (可能是 #113 )...
> 這邊 win 小狼毫更換過官方編譯純 librime(rime.dll)過, 應該還是版本未滿 XD 需要會自行編譯 rime.dll 有能力推薦自行編譯,把版本都編譯到最新 > > 以下不是很確定,查之前試功能留下的代碼,改以下試試,不保證可行: > > ``` > key:repr("Release+Return") > ``` 最新新版 CI 還沒砍 ( mac & win ) https://github.com/hchunhui/librime-lua/suites/9748346318/artifacts/467986280
```lua if context.input:match("^zl") then context:clear() engine:commit_text("\n") return 1 end ```
> 請觸發 return 後再看日誌! ```lua engine:press_key() 等同遞歸函式 bool engine->process_key(key) -- 大腸包小腸 int processors -->ProcessKeyEvent(key) -- 小腸包大腸 bool engine->process_key( f_key) ``` 只能用在會可被 processors accepted 的key Noop Rejected 都有失控的風險 且必須小心用 很是麻煩 https://github.com/rime/librime/blob/9086de3dd802d20f1366b3080c16e2eedede0584/src/rime/engine.cc#L96-L115
> 這是在折騰啥? Rime不能向系統發送按鍵,只能輸出文字。 有沒有考慮加上 Engine::CommitKeys(vector ) 給前端
> > 用链接里的rime.dll 替换了,再测试了一遍,还是不行 > > shewer 大大用 win 小狼毫,問他看看好了 這邊主用 mac 鼠鬚管 但之前確實更過小狼毫的 rime.dll,使 librime-lua 增加那時新版功能過! > > https://github.com/fxliang/weasel 應該不是官方版吧?!新改新增外觀候選框可圓弧,但 librime 核心還是三年前的 改用fcitx5 了 win10 放在硬碟裡備著沒在用 :)
我猜是 processors 都不處理 not composing + Return 吧 commit_text 可以在不增加複雜度下完成工作就用吧. 用process_key() 只會增加複雜度和不可控。 要找出在空字串時按下"Return" 是那個processor (Noop Reject ) 這和每個人的方案 engine/processors 排列組合求不一樣都會產生不一樣的結果 檢查process_key() 返回值看看 ```lua if context.input:match("^zl") then context:clear() local res =...
> 如果寫成外掛程序,那也沒必要通過Rime實現,可以在一個插件裏直接發系統調用。這樣一來,程序的權限要比正經的輸入法高。 我的想法 是增加一個 類似 using CommitSink = signal; using CommitKeys= singnal
在engine/filters 最後加上一個 lua_filter 檢查前面commit 的字的最後一個 字元不是空白 時 pre_space = " " 候選字是英文時把 候選字 加上空白 ```lua local F={} function F.init(env) env.size=20 env.history={} env.notifier= env.engine.context.commit_notifier:connect( function(ctx) for i=env.size, #env.history do env.history[i] =...