reserveword / IMBlocker

A mod for Minecraft helping control Input Methods
GNU General Public License v3.0
56 stars 12 forks source link

可否将【输入法是否开关的检测逻辑】从【检测有无文本框】改为【光标是否在文本框键入】 #10

Closed gezinfly closed 2 years ago

gezinfly commented 2 years ago

装了jei之后,玩家物品栏乃至箱子界面的假阳性实在是过于影响手感了, 于是我看了一下fabric版本的解决方案,不知道作者大大能不能修改一下检测逻辑

reserveword commented 2 years ago

我自己测试的时候是没有假阳性的来着。。可以说明一下使用的是哪个版本吗?mc的版本和mod版本都说明一下吧

reserveword commented 2 years ago

还有就是假阳性是只会出现一下还是会一直持续下去呢?

gezinfly commented 2 years ago

抱歉时隔这么久才看到, MC版本1.16.5-forge_36.2.26 mod版本2.0.1

gezinfly commented 2 years ago

可以一直持续,至少超过30秒

gezinfly commented 2 years ago

Client only settings

[client]

Checking Every tick is not efficient, how about check once every several tick?

#Range: > 1
checkInterval = 2
#Matched screens would disable your IME
screenBlacklist = []
#Matched screens would enable your IME
screenWhitelist = ["net.minecraft.client.gui.screen.EditBookScreen", "net.minecraft.client.gui.screen.EditSignScreen"]
#We want to check if any TextWidgetField comes to life after several ticks.
#How many ticks should we check?
#Larger number means more precise and more error-tolerant, but less efficiency.
#Better be rounded to an exact multiple of `checkInterval`
#Range: > 1
checkDelayTime = 20
gezinfly commented 2 years ago

这是我的config

gezinfly commented 2 years ago

另minemenu mod 使用时按住r键呼出面板后,会自动打开输入法键入r minemenu版本1.8.7

gezinfly commented 2 years ago

测试所得凡是有jei的页面都会出现持续的假阳性

reserveword commented 2 years ago

复现了一下,发现在打开聊天栏后再打开esc菜单和物品栏时会出现假阳性的情况,点击esc菜单的“返回游戏”按钮后假阳性状态会消失,正在修复

reserveword commented 2 years ago

更新:观察到似乎是聊天栏(ChatScreen)下的TextFieldWidget在聊天栏被关闭后没有被销毁,打算hook文本框的tick()方法,如果在一个client tick里没有执行文本框tick就视为文本框失效,否则文本框有效

gezinfly commented 2 years ago

感谢作者大大,请先不要关闭该问题(好尴尬,中文写得跟英文似的),我这测试专用bug体质,必能在测试时祝您一臂之力。 对了我有点担心,就如果用钩子会不会报毒(应该不会吧,毕竟MC本身就对按键有检测)

reserveword commented 2 years ago

好吧实际上不是钩子,和系统没有关系,只是修改mc自己的类,往里插进去一段自己的代码 另外我还没修完呢,等我写完帮我测一下吧,谢谢你哦

gezinfly commented 2 years ago

测试什么的应该的,感谢您的耐心解答

gezinfly commented 2 years ago

!酒吧炸了。不好意思啊我还没点炒饭,mod直接失效了。根据我5年bug经验,会不会是循环体的问题?

reserveword commented 2 years ago

噫~可以把debug.log传上来吗?

gezinfly commented 2 years ago

debug.log

gezinfly commented 2 years ago

对于像聊天框这样的内容,还有jei选框、合成配方搜索框都无法识别

reserveword commented 2 years ago

我试了一下,好像和optfine有关系,说不定是optfine改了一些机制所以没法检测到tick了 我试试能不能兼容吧 不对,好像是我忘记重混淆了(啊这)

reserveword commented 2 years ago

release里面更新了,现在能用了吗(能用了吧,一定能用了吧)

gezinfly commented 2 years ago

正准备提交debug log来着,我把opitfine卸了又测试了测试,才看到新版本2333 不早了,您早点睡,注意身体

gezinfly commented 2 years ago

成功了,恭喜,版本3.0fixed 十分感谢