SakuraKoi / BattlefieldChat

External Chinese input tool for Battlefield 1 / 战地1 外置中文输入工具
GNU Affero General Public License v3.0
135 stars 5 forks source link

bug反馈及功能建议 #2

Closed CrazyZhang666 closed 3 years ago

CrazyZhang666 commented 3 years ago

我目前测试了v6和v7预览版本

我在使用种遇到一些问题:

  1. 如果是第一次启动中文输入工具,我在游戏里按J/K/L聊天,此时会弹出中文输入工具的输入框,但是焦点却不在中文输入工具的输入框上,而是在游戏自己的输入框上,需要玩家手动把鼠标移动到最上方的中文输入工具的输入框点击一下,焦点才会到这里,此时才可以正常输入中文,当中文输入工具的输入框获取到焦点后以后的输入都没有问题,此bug v6、v7版本均存在(不知道是不是只有我才有这个问题,我是win10 20H2)
  2. v7版本的转拼音我这里测试是这样,输入框输入的是中文,但是按回车键发送的却是空白,而不是拼音

一些输入框外观上的建议:

  1. 中文输入工具的输入框的字体可不可以改成与游戏类似的字体或者是微软雅黑,宋体看起来有点难受(当然不改也没啥影响的)
  2. 中文输入工具的输入框能不能改成那种文字颜色是白色的,背景的那种毛玻璃或者透明效果,边框弄细一点,这样看起来和游戏保持一致(当然不改也没啥影响的)
SakuraKoi commented 3 years ago
SakuraKoi commented 3 years ago

先搁一些焦点问题的资料在这备忘 https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setforegroundwindow Remarks http://chabster.blogspot.com/2010/03/focus-and-window-activation-in-win32.html

目前初步猜测是跨进程激活窗口(焦点在bf的线程里)导致跨线程获取焦点失败,下次更新尝试先attach了input再激活看看 HWND hForgroundWnd = GetForegroundWindow(); DWORD dwForeID = GetWindowThreadProcessId(hForgroundWnd, NULL); DWORD dwCurID = GetCurrentThreadId();

AttachThreadInput(dwCurID, dwForeID, TRUE); SetForegroundWindow((HWND)winId()); AttachThreadInput(dwCurID, dwForeID, FALSE);

SakuraKoi commented 3 years ago

好耶.png

好耶!

这个模糊效果应该只在win10有效(

CrazyZhang666 commented 3 years ago

这个就绪旁边我觉得可以加个中文和拼音和切换按钮,比如 中/拼,这样不用每次到外面切换了

SakuraKoi commented 3 years ago

模式切换的话考虑到一般是游玩过程中不需要切换的(打欧服开英文, 打亚服开中文, 私服不让打中文就开拼音) 快速切换的需求并不大, 也为了确保输入界面的简洁高效, 所以先咕一咕( 回头有可能在主界面添加一个开关用于展示快速切换按钮(咕

CrazyZhang666 commented 3 years ago

这样也可以,这个就绪的字体颜色建议改下,我取了游戏聊天小队的文字颜色#489034