osu-framework icon indicating copy to clipboard operation
osu-framework copied to clipboard

Space inserted before last character during Korean IME input

Open smoogipoo opened this issue 3 years ago • 4 comments

Discussed in https://github.com/ppy/osu-framework/discussions/5045

Originally posted by pnutbtr1 February 20, 2022 When entering Korean, spacing is placed before last character. I'm using Arch Linux with fcitx and X11.

https://user-images.githubusercontent.com/94981525/154814822-0dc5dac4-b653-47ef-9c55-0131f01a3cb3.mp4

logs.tar.gz

smoogipoo avatar Feb 21 '22 05:02 smoogipoo

@pnutbtr1 could you post the SDL event log of the bug occuring?

Set the environment variable SDL_EVENT_LOGGING=1 and then run osu!.

Susko3 avatar Mar 06 '22 11:03 Susko3

@Susko3

$ env SDL_EVENT_LOGGING=1 ./osu.AppImage 
INFO: SDL EVENT: SDL_WINDOWEVENT (timestamp=668 windowid=1 event=SDL_WINDOWEVENT_SIZE_CHANGED data1=1920 data2=1039)
ALSA lib control.c:1528:(snd_ctl_open_noupdate) Invalid CTL jack
INFO: SDL EVENT: SDL_WINDOWEVENT (timestamp=2190 windowid=1 event=SDL_WINDOWEVENT_SHOWN data1=0 data2=0)
INFO: SDL EVENT: SDL_WINDOWEVENT (timestamp=2191 windowid=1 event=SDL_WINDOWEVENT_EXPOSED data1=0 data2=0)
INFO: SDL EVENT: SDL_WINDOWEVENT (timestamp=2193 windowid=1 event=SDL_WINDOWEVENT_FOCUS_GAINED data1=0 data2=0)
INFO: SDL EVENT: SDL_WINDOWEVENT (timestamp=2256 windowid=1 event=SDL_WINDOWEVENT_TAKE_FOCUS data1=0 data2=0)
INFO: SDL EVENT: SDL_WINDOWEVENT (timestamp=2256 windowid=1 event=SDL_WINDOWEVENT_EXPOSED data1=0 data2=0)
INFO: SDL EVENT: SDL_WINDOWEVENT (timestamp=2256 windowid=1 event=SDL_WINDOWEVENT_EXPOSED data1=0 data2=0)
INFO: SDL EVENT: SDL_WINDOWEVENT (timestamp=2256 windowid=1 event=SDL_WINDOWEVENT_MOVED data1=654 data2=841)
INFO: SDL EVENT: SDL_WINDOWEVENT (timestamp=2256 windowid=1 event=SDL_WINDOWEVENT_ENTER data1=0 data2=0)
INFO: SDL EVENT: SDL_WINDOWEVENT (timestamp=2556 windowid=1 event=SDL_WINDOWEVENT_LEAVE data1=0 data2=0)
INFO: SDL EVENT: SDL_WINDOWEVENT (timestamp=2556 windowid=1 event=SDL_WINDOWEVENT_EXPOSED data1=0 data2=0)
INFO: SDL EVENT: SDL_WINDOWEVENT (timestamp=2556 windowid=1 event=SDL_WINDOWEVENT_ENTER data1=0 data2=0)
INFO: SDL EVENT: SDL_KEYDOWN (timestamp=16724 windowid=1 state=pressed repeat=false scancode=44 keycode=32 mod=0)
INFO: SDL EVENT: SDL_KEYUP (timestamp=16787 windowid=1 state=released repeat=false scancode=44 keycode=32 mod=0)
INFO: SDL EVENT: SDL_KEYDOWN (timestamp=17587 windowid=1 state=pressed repeat=false scancode=44 keycode=32 mod=0)
INFO: SDL EVENT: SDL_KEYUP (timestamp=17692 windowid=1 state=released repeat=false scancode=44 keycode=32 mod=0)
INFO: SDL EVENT: SDL_KEYDOWN (timestamp=18155 windowid=1 state=pressed repeat=false scancode=44 keycode=32 mod=0)
INFO: SDL EVENT: SDL_TEXTEDITING (timestamp=18265 windowid=1 text='' start=0 length=0)
INFO: SDL EVENT: SDL_KEYUP (timestamp=18267 windowid=1 state=released repeat=false scancode=44 keycode=32 mod=0)
INFO: SDL EVENT: SDL_TEXTEDITING (timestamp=19773 windowid=1 text='ㄱ' start=0 length=1)
INFO: SDL EVENT: SDL_TEXTEDITING (timestamp=19868 windowid=1 text='가' start=0 length=1)
INFO: SDL EVENT: SDL_TEXTEDITING (timestamp=20059 windowid=1 text='간' start=0 length=1)
INFO: SDL EVENT: SDL_TEXTINPUT (timestamp=20163 windowid=1 text='가')
INFO: SDL EVENT: SDL_TEXTEDITING (timestamp=20163 windowid=1 text='나' start=0 length=1)
INFO: SDL EVENT: SDL_TEXTEDITING (timestamp=20324 windowid=1 text='낟' start=0 length=1)
INFO: SDL EVENT: SDL_TEXTINPUT (timestamp=20428 windowid=1 text='나')
INFO: SDL EVENT: SDL_TEXTEDITING (timestamp=20428 windowid=1 text='다' start=0 length=1)
INFO: SDL EVENT: SDL_KEYDOWN (timestamp=21027 windowid=1 state=pressed repeat=false scancode=44 keycode=32 mod=0)
INFO: SDL EVENT: SDL_TEXTINPUT (timestamp=21027 windowid=1 text=' ')
INFO: SDL EVENT: SDL_TEXTINPUT (timestamp=21027 windowid=1 text='다')
INFO: SDL EVENT: SDL_TEXTEDITING (timestamp=21027 windowid=1 text='' start=0 length=0)
INFO: SDL EVENT: SDL_KEYUP (timestamp=21147 windowid=1 state=released repeat=false scancode=44 keycode=32 mod=0)
INFO: SDL EVENT: SDL_WINDOWEVENT (timestamp=25133 windowid=1 event=SDL_WINDOWEVENT_LEAVE data1=0 data2=0)
INFO: SDL EVENT: SDL_WINDOWEVENT (timestamp=25465 windowid=1 event=SDL_WINDOWEVENT_ENTER data1=0 data2=0)
INFO: SDL EVENT: SDL_KEYDOWN (timestamp=26300 windowid=1 state=pressed repeat=false scancode=226 keycode=1073742050 mod=256)
INFO: SDL EVENT: SDL_KEYMAPCHANGED
INFO: SDL EVENT: SDL_KEYDOWN (timestamp=26357 windowid=1 state=pressed repeat=false scancode=61 keycode=1073741885 mod=256)
INFO: SDL EVENT: SDL_WINDOWEVENT (timestamp=26358 windowid=1 event=SDL_WINDOWEVENT_CLOSE data1=0 data2=0)
INFO: SDL EVENT: SDL_QUIT (timestamp=26358)
INFO: SDL EVENT: SDL_KEYUP (timestamp=26444 windowid=1 state=released repeat=false scancode=226 keycode=1073742050 mod=0)
INFO: SDL EVENT: SDL_KEYMAPCHANGED
INFO: SDL EVENT: SDL_KEYUP (timestamp=26572 windowid=1 state=released repeat=false scancode=61 keycode=1073741885 mod=0)
INFO: SDL EVENT: SDL_KEYDOWN (timestamp=27116 windowid=1 state=pressed repeat=false scancode=40 keycode=13 mod=0)
INFO: SDL EVENT: SDL_KEYUP (timestamp=27251 windowid=1 state=released repeat=false scancode=40 keycode=13 mod=0)
INFO: SDL EVENT: SDL_WINDOWEVENT (timestamp=30128 windowid=1 event=SDL_WINDOWEVENT_HIDDEN data1=0 data2=0)
INFO: SDL EVENT: SDL_WINDOWEVENT (timestamp=30129 windowid=1 event=SDL_WINDOWEVENT_FOCUS_LOST data1=0 data2=0)
INFO: SDL EVENT: SDL_WINDOWEVENT (timestamp=30129 windowid=1 event=SDL_WINDOWEVENT_LEAVE data1=0 data2=0)

pnutbtr1 avatar Mar 07 '22 04:03 pnutbtr1

INFO: SDL EVENT: SDL_KEYDOWN (timestamp=21027 windowid=1 state=pressed repeat=false scancode=44 keycode=32 mod=0)
INFO: SDL EVENT: SDL_TEXTINPUT (timestamp=21027 windowid=1 text=' ')
INFO: SDL EVENT: SDL_TEXTINPUT (timestamp=21027 windowid=1 text='다')

Do you want the space to happen after is entered? If so, it's definitely a bug in SDL and/or your specific IME configuration. You could do a bit more testing and report to SDL or fcitx. (I don't have a linux dev environment so I can't repro nor test it.)

This shouldn't make a difference, but could you try running in single-threaded mode?

If not already, upgrade to Fcitx5 as Fcitx is in maintenance mode.

Susko3 avatar Mar 07 '22 17:03 Susko3

Upgrading to fcitx5 or changing thread mode didn't do anything. I also tested with ibus and kime. When using ibus, korean input was completly broken. kime worked fine but it didn't show composition string. Considering that the same bug occurs in SDL repo's testime, it seems to be a bug of SDL.

pnutbtr1 avatar Mar 08 '22 12:03 pnutbtr1