cht電腦資訊gcin
adm Find login register

請教 gcin API 能做到偵測中文輸入法啟用狀態嗎?

gholk
1 請教 gcin API 能做到偵測中文輸入法啟用狀態嗎?
Promote 1 Bookmark 05 days agoquote  

eliu 您好,
因為我是 vim 的使用者,我想要在離開輸入模式 (insert mode) 時自動關閉中文輸入法方便使用快捷鍵。

我大概看了程式,就我的理解,修改 gcin.cpp 主程式,再搭配 im-client 的函數,即可做到切換輸入法的開關狀態,甚至指定切換為開啟或關閉狀態。

但要偵測 gcin 是否在中文輸入狀態的話,看起來 `send_gcin_message` 沒有回傳值,我也沒有看到其他可以讀取狀態的函數?
(恕我 C 語言的實戰能力只有程式設計的通識課等級)

另外其他輸入法或有用到 dbus 當 API 介面,不知道 gcin 有沒有這種功能?

我有粗略做了一版能切換開關狀態的 patch 如附件。

如果您有意願指點一二,或接受相關 patch ,將不勝感激!

eliu
2
Promote 0 Bookmark 02 days agoquote  
eliu
3
Promote 0 Bookmark 02 days agoquote  
gholk
4 透過參數指定狀態
Promote 0 Bookmark 03 hr agoquote  

eliu 您好:

我加了指定切換為啟用或停用的功能,gcin-im-toggle 現在能接受 `-enable` `-disable` `-toggle` 三種參數,沒參數的話預設行為是 toggle 。

這個功能因為 toggle_im_enabled 的邏輯比較複雜,我是直接改寫原本的函數。

本來想改成可選參數,但對 C/C++ 不熟,不知道怎麼改……,就比較粗暴的改了函數的名字,再定義一個和原本用法一樣的。toggle_im_enabled 行為的變化上,我是都直接 return,但我看函數最後有呼叫 save_CS_current_to_temp ,不確定直接 return 會不會有問題(至少我跑了一個小時 gcin 沒有 crush) 

然後我看來看去還是不知道怎麼偵測 gcin 目前的狀態 Cry

奉上 patch

cht電腦資訊gcin
adm Find login register
views:120