[FEATURE] linux support
plusls opened this issue · 7 comments
由于我本人主要使用 linux,着实被这个输入法搞得很恶心,花了一个晚上看了一下怎么解决 linux 的问题
总的来讲,第一要根据系统把 immanager 类拆开,用反射进行加载来避免加载别的系统的 class(如果在 linux 下加载 windows 的 class 会因为找不到 native 库而加载失败)
其次, minecraft 对输入法支持的缺陷是由其底层的 glfw 运行库导致的,我去翻看了一下代码发现了一个比较 hack 的解决方案,native hook XFilterEvent 的返回值让其返回 true,这样 glfw 就不会把按键信息使用 XIM 协议发送给 fcitx 了
然后我用 gbd 做了一个简单的实验,随手写了个 hook
然后在游戏里实验确实不会弹输入法了
接下来就是考虑怎么 hook 的问题,由于运行时已经加载,用 ld_preload 来 hook 不太现实,inline hook 可能会有版本兼容性的问题,最优解应该是直接 hook got 表,看看这两天能不能把代码摸出来
至于前面的1.15的问题,我看到你直接回滚了代码,等写完 linux 的 hook 后我检查一下看看能不能修
https://github.com/plusls/ImBlockerFabric
等两边代码同步后发 pr
说起来我还没测 windows 可能还得你帮我测一下,最近手头没有 windows
https://github.com/plusls/ImBlockerFabric/actions/runs/652054556
