Linux,更改文本字段行为

时间:2012-03-12 06:54:53

标签: linux gnome kde

我有一个想法,可以编写一个修改Linux上文本字段行为的程序。我想要的是程序将根据所有系统中文本字段的文本方向自动更改文本输入语言。例如,如果我安装了英语和希伯来语,并且我点击某些软件中的文本字段,这些软件通常从右向左输出文本,那么程序将自动将文本输入语言更改为希伯来语。如果我单击从左到右输出文本的文本字段,程序将把语言切换为英语。

我对Linux上的系统或UI编程知之甚少(在Windows上更有经验),我不知道从哪里开始。有没有办法在Gnome和KDE上的GUI元素上注册'hooks'?也许我应该把它添加到Gnome和KDE的代码中?

我很欣赏任何关于如何开始的提示。

非常感谢,

奥德。

1 个答案:

答案 0 :(得分:1)

首先注意一些事项:

通常,GUI窗口工具包的文本字段对齐要么由程序显式设置,要么根据检测到的系统区域设置(至少在Qt和GTK中)设置在Qt中的相关文本对象QLineEdit或{{ 3}}在GTK中或包含它们的更高级别的布局对象中。

那说为了至少为你自己的程序实现功能,你需要识别一些东西

  • GTK或Qt或两者兼而有之?如果你在基层实现(即不只是绑定),那么这也意味着C或C ++或两者兼而有之?
  • GTK 2或GTK 3,QT 3或QT4?
  • 您希望覆盖每个GUI工具包上的哪些文本小部件?我上面提到过的两个,或者两个库中的任何或所有可能的文本小部件?
  • 您是否希望无论区域设置如何,您的行为都能正常工作?例如,如果您有LTR区域设置,您是否希望右对齐文本小部件切换输入法?
  • 您想使用哪种切换输入法的方法? SCIM,XIM,ibus或只是immodule(以GTK和Qt形式)?这些输入方法是否支持以编程方式更改?
  • 如果用户安装了2个或更多LTR语言或安装了2个以上RTL语言会怎样?他们可以选择哪种语言?是否遵守当前的区域设置?

假设你想要沿着免疫模块走下去

请参阅Qt的以下资源

请参阅以下GTK资源

一般方法是一样的。

  1. 实现事件处理程序,以便在文本输入窗口小部件时但在窗口小部件中显示文本之前。
  2. 根据窗口小部件的对齐属性切换输入法
  3. 学习GTK的资源

    学习QT的资源

    从您的评论中,您似乎可以编写自己的InputMethod机制或修改现有的机制。

    为了让它在Gnome和KDE程序中默认加载并不困难,只需根据区域设置关联设置输入法。困难的部分是让InputMethod知道它正被输入的位置。通常,InputMethod不知道调用应用程序,更不用说编写它的GUI框架了。

    输入法的资源