godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
88.68k stars 20.11k forks source link

Can't input English punctuation with Chinese IME on Windows #74043

Open zuiaiyangyang3 opened 1 year ago

zuiaiyangyang3 commented 1 year ago

Godot version

4.0.6

System information

win10 Enterprise edition

Issue description

Input method. In godot4.0. Most English punctuation cannot be used in Chinese.

In godot3.5. Can be used.

2 preview dynamic diagrams

I pressed ~! @ # $% ^ & * () and so on.

↓↓↓ 4.0.6

4 0

Steps to reproduce

↓↓↓ 3.5

3 5

Minimal reproduction project

null

4.0 or 3.5.zip

11

In earlier versions, ↓↓↓↓ In the above question. Godot4.0 bate14 is normal. Godot 4.0bate15 is invalid

akien-mga commented 1 year ago

The videos you uploaded don't work, so it's hard to know what the issue is and how to reproduce it.

zuiaiyangyang3 commented 1 year ago

您上传的视频不起作用,因此很难知道问题是什么以及如何重现它。

I don't know why mp4 can't be played, so I changed it to zip.

zuiaiyangyang3 commented 1 year ago

您上传的视频不起作用,因此很难知道问题是什么以及如何重现它。

I don't know why mp4 can't be played, so I changed it to zip.

AThousandShips commented 1 year ago

Can you upload it in another video format? It's very inconvenient to have to download it, especially on phone

zuiaiyangyang3 commented 1 year ago

In the above question. Godot4.0 bate14 is normal. Godot 4.0bate15 is invalid

bruvzg commented 1 year ago

Can't reproduce in current master, input seems to be the same as in other apps. e.g., Shift+9, Shift+0 input full width brackets in Chinese Mode and normal brackets in English Mode, so it's possible it was an issued with the fonts (system font fallback support also had significant changed).

saierXP commented 1 year ago

Test whether godot can input the following symbols shift+3,5,7 (#,%,&) under the Chinese mode.

The result is that the qq pinyin IME, palm IME, and Google pinyin IME do not work, while Microsoft pinyin and Sogou pinyin can work normally. Regression from #70052 (beta14-beta15) with git-bisect.

Press shift+3(#) to listen for the following results in _input func:

Microsoft,Sogou
InputEventKey: keycode=4194325 (Shift), mods=none, physical=false, pressed=true, echo=false unicode= 0
InputEventKey: keycode=51 (3), mods=Shift, physical=false, pressed=true, echo=false unicode= 35
qq,palm,google
InputEventKey: keycode=4194325 (Shift), mods=none, physical=false, pressed=true, echo=false unicode= 0

Press the minus and equal keys to listen for the following results in _input func:

Microsoft,Sogou
InputEventKey: keycode=45 (Minus), mods=none, physical=false, pressed=true, echo=false unicode= 45
InputEventKey: keycode=61 (Equal), mods=none, physical=false, pressed=true, echo=false unicode= 61
qq,palm,google
InputEventKey: keycode=8388607 (Unknown), mods=none, physical=false, pressed=true, echo=false unicode= 61

Pressing the minus has no output and can't input "-" in LineEdit, but the equal has output and can input "=" in LineEdit.
Press a key alone in Chinese mode. It seems that only the minus key cannot be captured by the _input function.
Other Punctuation can(,。;).
revaraver commented 1 month ago

I encountered the same problem. I was using the Google Pinyin input method and could not enter shift+3,5,7,9 in the editor. In addition, I could not enter a period (.) alone.

revaraver commented 1 month ago

@zuiaiyangyang3 I made an ahk2 script to circumvent these problems. If you are interested, you can check it out. The implementation process of this script is relatively dirty, but in order not to use the more disgusting Microsoft input method, I had to make this script. I use Google Pinyin Input method, and my handling of double quotes " is not perfect keyboard_godot.ahk