Skip to content

Keyboard input does not work with CJK IME (macOS, 0.12.1) #6942

@parksb

Description

@parksb

System

OS: macOS
Version: alacritty 0.12.1 (5fdfd47)

Description

This issue is the same as #6838 (0.12.0):

When I type non-ASCII characters like Hangul(Korean alphabet), the first number or special character I typed is ignored. For example, in the above logs, I attempted to type ㄱㄴㄷ. by pressing four keys: .. I expected that the terminal would show ㄱㄴㄷ., but the last special character . was ignored, resulting in the display of only ㄱㄴㄷ. To print ㄱㄴㄷ., I had to type the character . twice: . ..

This issue has also occurred with other special characters such as :, ;, (, and numbers. While I have only tested it in the Korean alphabet, I think this problem may occur with other non-ASCII languages, such as Chinese and Japanese.

I attached the two videos that demonstrate what happens when typing ㄱㄴㄷ. in macOS Terminal and Alacritty in the same shell.

I expected it would be resolved in 0.12.1 via #6817, but I faced it again. I wonder is this occurred only with CJK IME.

macOS Terminal

terminal.mov

Alacritty

alacritty.mov

Logs

Keyboard and bindings: alacritty --print-events

21.195816375s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424179, tv_nsec: 726856208 }, requested_resume: None })
[21.217091833s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(4989223664)), event: KeyboardInput { device_id: DeviceId(DeviceId), input: KeyboardInput { scancode: 15, state: Pressed, virtual_keycode: Some(R), modifiers: (empty) }, is_synthetic: false } }
[21.217196083s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(4989223664)), event: ReceivedCharacter('ㄱ') }
[21.217228042s] [INFO ] [alacritty] winit event: MainEventsCleared
[21.217249042s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[21.217615917s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424179, tv_nsec: 748332833 }, requested_resume: None })
[21.217656792s] [INFO ] [alacritty] winit event: UserEvent(Event { window_id: Some(WindowId(WindowId(4989223664))), payload: Terminal(Wakeup) })
[21.217685500s] [INFO ] [alacritty] winit event: MainEventsCleared
[21.217706167s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[21.220093583s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424179, tv_nsec: 751139375 }, requested_resume: None })
[21.220140500s] [INFO ] [alacritty] winit event: UserEvent(Event { window_id: Some(WindowId(WindowId(4989223664))), payload: Terminal(Wakeup) })
[21.220162958s] [INFO ] [alacritty] winit event: UserEvent(Event { window_id: Some(WindowId(WindowId(4989223664))), payload: Frame })
[21.220181625s] [INFO ] [alacritty] winit event: MainEventsCleared
[21.220199375s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[21.232141792s] [INFO ] [alacritty] winit event: NewEvents(ResumeTimeReached { start: Instant { tv_sec: 424179, tv_nsec: 752383458 }, requested_resume: Instant { tv_sec: 424179, tv_nsec: 762159500 } })
[21.232202875s] [INFO ] [alacritty] winit event: MainEventsCleared
[21.232221750s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[21.232248000s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424179, tv_nsec: 763289916 }, requested_resume: None })
[21.232267875s] [INFO ] [alacritty] winit event: UserEvent(Event { window_id: Some(WindowId(WindowId(4989223664))), payload: Frame })
[21.232285292s] [INFO ] [alacritty] winit event: MainEventsCleared
[21.232301042s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[21.232317208s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424179, tv_nsec: 763364083 }, requested_resume: None })
[21.232333375s] [INFO ] [alacritty] winit event: MainEventsCleared
[21.232346417s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[21.305956500s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424179, tv_nsec: 763408708 }, requested_resume: None })
[21.306072167s] [INFO ] [alacritty] winit event: MainEventsCleared
[21.306096750s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[21.306120625s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424179, tv_nsec: 837165875 }, requested_resume: None })
[21.306320208s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(4989223664)), event: KeyboardInput { device_id: DeviceId(DeviceId), input: KeyboardInput { scancode: 15, state: Released, virtual_keycode: Some(R), modifiers: (empty) }, is_synthetic: false } }
[21.306355333s] [INFO ] [alacritty] winit event: MainEventsCleared
[21.306375625s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[21.448276750s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424179, tv_nsec: 837446458 }, requested_resume: None })
[21.448579625s] [INFO ] [alacritty] winit event: MainEventsCleared
[21.448659625s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[21.934880792s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424179, tv_nsec: 979769541 }, requested_resume: None })
[21.949484083s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(4989223664)), event: Ime(Enabled) }
[21.949536250s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(4989223664)), event: Ime(Preedit("ㄴ", Some((3, 3)))) }
[21.949563542s] [INFO ] [alacritty] winit event: MainEventsCleared
[21.949583000s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[21.952384042s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424180, tv_nsec: 483428291 }, requested_resume: None })
[21.952442708s] [INFO ] [alacritty] winit event: UserEvent(Event { window_id: Some(WindowId(WindowId(4989223664))), payload: Frame })
[21.952491167s] [INFO ] [alacritty] winit event: MainEventsCleared
[21.952515250s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[22.024800875s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424180, tv_nsec: 483587000 }, requested_resume: None })
[22.025114500s] [INFO ] [alacritty] winit event: MainEventsCleared
[22.025191917s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[22.025260917s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424180, tv_nsec: 556300333 }, requested_resume: None })
[22.025682417s] [INFO ] [alacritty] winit event: MainEventsCleared
[22.025748917s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[22.186789625s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424180, tv_nsec: 556851708 }, requested_resume: None })
[22.187174000s] [INFO ] [alacritty] winit event: MainEventsCleared
[22.187265167s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[22.971343083s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424180, tv_nsec: 718380166 }, requested_resume: None })
[22.985164792s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(4989223664)), event: Ime(Preedit("ㄴ", Some((3, 3)))) }
[22.985242667s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(4989223664)), event: Ime(Preedit("", None)) }
[22.985274958s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(4989223664)), event: Ime(Commit("ㄴ")) }
[22.985301917s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(4989223664)), event: Ime(Preedit("", None)) }
[22.985326167s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(4989223664)), event: Ime(Preedit("ㄷ", Some((3, 3)))) }
[22.985351542s] [INFO ] [alacritty] winit event: MainEventsCleared
[22.985372542s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[22.991724042s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424181, tv_nsec: 522768166 }, requested_resume: None })
[22.991809167s] [INFO ] [alacritty] winit event: UserEvent(Event { window_id: Some(WindowId(WindowId(4989223664))), payload: Terminal(Wakeup) })
[22.991838500s] [INFO ] [alacritty] winit event: UserEvent(Event { window_id: Some(WindowId(WindowId(4989223664))), payload: Frame })
[22.991860625s] [INFO ] [alacritty] winit event: MainEventsCleared
[22.991879000s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[22.998260417s] [INFO ] [alacritty] winit event: NewEvents(ResumeTimeReached { start: Instant { tv_sec: 424181, tv_nsec: 524569958 }, requested_resume: Instant { tv_sec: 424181, tv_nsec: 528755500 } })
[22.998322708s] [INFO ] [alacritty] winit event: MainEventsCleared
[22.998346250s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[22.998381125s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424181, tv_nsec: 529419208 }, requested_resume: None })
[22.998408708s] [INFO ] [alacritty] winit event: UserEvent(Event { window_id: Some(WindowId(WindowId(4989223664))), payload: Frame })
[22.998428958s] [INFO ] [alacritty] winit event: MainEventsCleared
[22.998445333s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[22.998465958s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424181, tv_nsec: 529511958 }, requested_resume: None })
[22.998487042s] [INFO ] [alacritty] winit event: MainEventsCleared
[22.998503458s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[23.047906500s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424181, tv_nsec: 529569500 }, requested_resume: None })
[23.048295750s] [INFO ] [alacritty] winit event: MainEventsCleared
[23.048364083s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[23.048398583s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424181, tv_nsec: 579442458 }, requested_resume: None })
[23.048692833s] [INFO ] [alacritty] winit event: MainEventsCleared
[23.048726042s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[23.223244042s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424181, tv_nsec: 579798333 }, requested_resume: None })
[23.223570833s] [INFO ] [alacritty] winit event: MainEventsCleared
[23.223653292s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[23.847373500s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424181, tv_nsec: 754763625 }, requested_resume: None })
[23.864833042s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(4989223664)), event: Ime(Preedit("ㄷ", Some((3, 3)))) }
[23.864900333s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(4989223664)), event: Ime(Preedit("", None)) }
[23.864925667s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(4989223664)), event: Ime(Commit("ㄷ")) }
[23.864948458s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(4989223664)), event: Ime(Preedit("", None)) }
[23.864971375s] [INFO ] [alacritty] winit event: MainEventsCleared
[23.864992042s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[23.868096208s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424182, tv_nsec: 399141750 }, requested_resume: None })
[23.868156250s] [INFO ] [alacritty] winit event: UserEvent(Event { window_id: Some(WindowId(WindowId(4989223664))), payload: Terminal(Wakeup) })
[23.868198667s] [INFO ] [alacritty] winit event: UserEvent(Event { window_id: Some(WindowId(WindowId(4989223664))), payload: Frame })
[23.868216417s] [INFO ] [alacritty] winit event: MainEventsCleared
[23.868233125s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[23.882049708s] [INFO ] [alacritty] winit event: NewEvents(ResumeTimeReached { start: Instant { tv_sec: 424182, tv_nsec: 399872708 }, requested_resume: Instant { tv_sec: 424182, tv_nsec: 412053583 } })
[23.882127417s] [INFO ] [alacritty] winit event: MainEventsCleared
[23.882145292s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[23.882173333s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424182, tv_nsec: 413215291 }, requested_resume: None })
[23.882192583s] [INFO ] [alacritty] winit event: UserEvent(Event { window_id: Some(WindowId(WindowId(4989223664))), payload: Frame })
[23.882209375s] [INFO ] [alacritty] winit event: MainEventsCleared
[23.882222708s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[23.882239417s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424182, tv_nsec: 413285833 }, requested_resume: None })
[23.882255958s] [INFO ] [alacritty] winit event: MainEventsCleared
[23.882270708s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[23.948569208s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424182, tv_nsec: 413333666 }, requested_resume: None })
[23.948798958s] [INFO ] [alacritty] winit event: MainEventsCleared
[23.948854167s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[23.948895375s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424182, tv_nsec: 479939333 }, requested_resume: None })
[23.949215083s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(4989223664)), event: KeyboardInput { device_id: DeviceId(DeviceId), input: KeyboardInput { scancode: 47, state: Released, virtual_keycode: Some(Period), modifiers: (empty) }, is_synthetic: false } }
[23.949270583s] [INFO ] [alacritty] winit event: MainEventsCleared
[23.949299708s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[24.099240250s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424182, tv_nsec: 480380708 }, requested_resume: None })
[24.099460667s] [INFO ] [alacritty] winit event: MainEventsCleared
[24.099503917s] [INFO ] [alacritty] winit event: RedrawEventsCleared
[24.749121917s] [INFO ] [alacritty] winit event: NewEvents(WaitCancelled { start: Instant { tv_sec: 424182, tv_nsec: 630583458 }, requested_resume: None })
[24.753092542s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(4989223664)), event: KeyboardInput { device_id: DeviceId(DeviceId), input: KeyboardInput { scancode: 47, state: Pressed, virtual_keycode: Some(Period), modifiers: (empty) }, is_synthetic: false } }
[24.753209583s] [INFO ] [alacritty] winit event: WindowEvent { window_id: WindowId(WindowId(4989223664)), event: ReceivedCharacter('.') }
[24.753254083s] [INFO ] [alacritty] winit event: MainEventsCleared
[24.753289583s] [INFO ] [alacritty] winit event: RedrawEventsCleared

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions