【问题标题】:Linux, change text field behaviorLinux,更改文本字段行为
【发布时间】:2012-03-28 14:30:19
【问题描述】:

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

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

如果有任何关于如何开始的提示,我将不胜感激。

非常感谢,

奥德。

【问题讨论】:

  • 先学习GTK和Qt。然后,根据您的意愿专门化他们的文本输入小部件。在适当的 Gtk 和 Qt 论坛上讨论,并提出建议。祝你好运(你需要它)。

标签: linux gnome kde


【解决方案1】:

首先要注意几点:

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

也就是说,为了至少为您自己的程序实现该功能,您需要确定一些事情

  • GTK 或 Qt 或两者兼而有之?如果您在基础级别实现(即不仅仅是绑定),那么这也意味着 C 或 C++ 或两者兼而有之?
  • GTK 2 或 GTK 3、QT 3 或 QT4 ?
  • 您要覆盖每个 GUI 工具包上的哪些文本小部件?只是我上面提到的两个或任一库中的任何或所有可能的文本小部件?
  • 您是否希望您的行为不受区域设置影响?例如,如果您设置了 LTR 区域设置,您是否希望右对齐的文本小部件切换输入法?
  • 你想用什么方法切换输入法? SCIM、XIM、ibus 或只是 immodule(GTK 和 Qt 形式)?这些输入法是否支持以编程方式更改??
  • 如果用户安装了 2 种或更多 LTR 语言或安装了 2 种以上 RTL 语言,会发生什么情况?他们可以选择哪种语言吗?是否尊重当前的语言环境设置?

假设你想走 immodule 路径

请参阅以下 Qt 资源

请参阅以下 GTK 资源

一般的方法是一样的。

  1. 在文本被输入到窗口小部件但在它显示在窗口小部件中之前实现事件处理程序。
  2. 根据小部件的对齐属性切换输入法

GTK 学习资源

QT 学习资源

从您的评论来看,您似乎应该编写自己的 InputMethod 机制或修改现有的。

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

输入法资源

【讨论】:

  • 感谢您的指导。看来我有很多东西要学,但应该很有趣。我的想法不仅仅是在我的程序上实现这一点,而是以某种方式“挂钩”到系统中的所有文本字段,或者至少最初是其中的大多数。我想第一步就是学习 GTK。
猜你喜欢
  • 1970-01-01
  • 2018-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多