Skip to content

请教下:linux的输入法的系统大概是什么样的? #364

Answered by wengxt
zhangfuwen asked this question in Q&A
Discussion options

You must be logged in to vote

https://www.csslayer.info/wordpress/fcitx-dev/fcitx5-dev-keyevent-from-app-to-fcitx/
协议的文档:https://www.x.org/releases/X11R7.6/doc/libX11/specs/XIM/xim.html
现存的实现:
服务器端 https://www.x.org/archive/unsupported/lib/IMdkit/ https://github.com/fcitx/xcb-imdkit/
客户端:Xlib

gtk/qt 和 qt 提供了一个跨平台的抽象给程序。对于 C/S 架构的输入法而言,需要某种手段把按键从程序传输给输入法。gtk 和 qt 过去都是通过和你说的一样的机制通过 XIM 来实现的,但是问题是 XIM (或者说现存的 xim 实现)自己存在了太多问题,以及扩展性方面的考虑,ibus,fcitx(还有过去的 scim)都选择了自己实现自己的接口。简单来说你可以当作把协议的控制掌握在自己手里的一种行为。Qt5 因为迁移到 xcb 的关系,已经不支持 xim 了(当时还没有基于 xcb 的 xim 实现)。Gtk4 似乎也删掉了 xim。

你要选择实现自己的输入法,如果你乐意也可以选择实现 fcitx 或者 ibus 的接口(都是基于 dbus 的),就像 fcitx5 就实现了 ibus 的接口可以和用 ibus im module 的程序通信。

但是如果回到你最初的问题,想要把 Android 的键盘对接到能打字,如果只考虑 X 不考虑 wa…

Replies: 3 comments 3 replies

Comment options

You must be logged in to vote
3 replies
@zhangfuwen
Comment options

@wengxt
Comment options

@zhangfuwen
Comment options

Answer selected by wengxt
Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
0 replies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
3 participants