2011-12-13 17 views
9

Gtk程序可以通過將不同的鍵綁定到gtk信號來具有不同的鍵綁定主題,但afaik,qt程序現在無法做到這一點。由於Qt支持插件(因爲這類庫中的大部分都是這樣做的,我的意思是這裏是高級插件或Qt擴展),並且至少其中一些(高級插件)可以由所有qt程序自動加載根據ENV這樣的規定,是否可以使用qt插件創建全局(Emacs或其他樣式)的鍵綁定(至少在所有輸入區域中)?或換句話說,沒有人知道這應該是哪種(高級)插件?是否有可能在所有Qt程序中實現emacs樣式的鍵綁定(可能是一個qt插件)?

我的猜測是一個inputcontext插件或一個可訪問的(橋)插件。 對於輸入上下文插件,我不知道這是否可以使用輸入法,因爲afaik只能同時啓用一個inputmethod後端。 對於可訪問的插件,我還沒有找到如何使它自動加載。

謝謝。

回答

1

您可以install an event filter來攔截關鍵事件,並使用它將它們轉換爲other events

我認爲你使用的是與Qt不同的「插件」這個詞。它有各種特定的插件 - 對於圖像編解碼器,SQL驅動程序等 - 但沒有通用的「對所有小部件都這樣做」的機制。爲此,您必須捕獲應用程序中頂級小部件的所有創建點,並添加代碼以安裝每個案例的篩選器。

+0

那麼加載部件呢? (我沒有找到任何關於如何Qt自殺加載這些插件的文檔~~~) – yuyichao

+0

雖然thoes extensions在大多數qt程序(有輸入框)中加載,但不在Skype中加載。有什麼理由呢? – yuyichao

+0

這就是我所說的「插件」。 (和我的問題是,如果有一種類型的插件,我可以使用。)我認爲可能訪問或inputcotext插件可以幫助,但我不知道如何/何時加載這些插件。其實我很確定inputcontext插件可以做到這一點(僅用於輸入上下文),如果你不使用任何輸入法。 (順便說一句,對於Skype,這可能是因爲Skype不使用標準的QT元素~~) – yuyichao

0

我以某種方式解決了問題(連同this one)使用xkb,即重定向C-npfbae適當的鍵,雖然我還沒有製造C-d redirection compatible with terminal EOF

我仍然認爲問題(在Qt中)可以用qtaccessible插件解決,但我還沒有找到如何使這項工作。

+0

嗯,不,不是一個很好的解決方法......例如,在Emacs本身中,我正在使用«C-S-f»來移動選擇字符。但箭現在是免費的,所以我必須在分屏之間移動「S-AnArrow」。如果我將系統級的«C-S-f»綁定到«S-→»,那麼它會打破一切。 –

相關問題