elsa in mac

Ghostty 터미널에서 fcitx5를 사용할 때, 단일키로 한/영 전환이 되지 않는 문제 대응법 본문

Terminal

Ghostty 터미널에서 fcitx5를 사용할 때, 단일키로 한/영 전환이 되지 않는 문제 대응법

elsa in mac 2025. 1. 12. 12:59

ghostty 터미널이 공개 전환되면서, 많은 사람들이 ghostty 터미널을 사용하고 있습니다 만, 다국어를 사용하는 사람들에게 한 가지 문제가 있습니다. 

바로, 포스트 제목과 같이 fcitx5를 IME로 사용하는 Linux에서 single modifer key 로 한/영 전환을 이용하는 사용자들이 여타 다른 terminal emulator에서 와는 달리 ghostty에서는 사용할 수 없다는 것 입니다. 

본인의 경우 자판의 "왼쪽 Shift 키"를 한/영 전환키로 사용합니다.  kitty, wezterm, foot 등 기존의 다른 terminal emulator에서는 단일 shift키를 이용한 한/영 전환에 아무런 문제가 없는데, ghostty에서는 이것이 동작하지 않습니다. 이것은 아마도 내부 key binding 로직(modifier + 일반 key로 binding 선언) 에 따른 제한사항으로 보이는데, github에 issue가 제기되어 있지만 정책과 관련된 것이라 쉽게 바뀔 수 있는 문제로 보이지 않습니다. 

습관이라는 것이 무서워서 기존에 사용하던 환경과 다른 환경에서 app을 사용해야 한다면. 굉장한 저항감이 생가게 됩니다. 굳이 대안들이 많이 있는데, 불편함을 감수하면서 이 app을 사용해야 할까 ??? 뭐.. 이런거죠.. 

자, 여찌되었던 방법이 없는 것은 아닙니다.  이 문제를 해결하는 것에는 두 가지 방법이 있는데요.. 

첫번째 방법은 github issue에서 밝힌 바와 같이 GTK_IM_MODULE의 설정을 일시적으로 변경한 상태에서 ghostty를 실행하는 것 입니다. 

GTK_IM_MODULE=wayland ghostty

이 방법으로 ghostty를 실행하면 single modifier key 로 한/영 전환을 할 수는 있지만, 한글 모드에서 한글 입력 시, 자/모 조합이 실시간으로 표시되지 않고 한 글자가 완성된 후에 표시가 됩니다.  따라서, 자/모 입력 과정에서 오타가 발생한 경우 즉각적으로 수정할 수 없고 한 글자를 완전히 다 지우고 다시 써야 하므로 한글 입력 및 편집이 굉장히 불편합니다. 

두 번째 방법은 key mapping 앱을 사용하는 것 입니다. 
이 방법은 fcitx에서 한/영 toggle 키로 ShiftLeft 키 이 외에 추가적으로 Shift + Space 와 같이 toogle 키를 추가적으로 선안하여 사용하는 방법입니다.  fcitx5에서 Shift + Space키를 추가하면, ghostty에서 Shift + Space 키로 한/영 전환을 정상적으로 사용할 수 있게 됩니다.  단, ghostty에서만 다른 여타 app과 달리 한/영 전환을 Shift + Space로 사용해야 한다는 문제가 남게 됩니다. 

여타 다른 앱 처럼 Shift 단일 키로 한/영 toggle을 하려면 key mapping 앱의 도움을 받아야 합니다.  여기서는 이전에 소개한 keymapper 앱을 이용합니다.  keymapper에 대한 소개는 여기를 참조 하시기 바랍니다. 

ghostty에 대한 key mapping을 ~/.config/keymapper/keymapper.conf 파일에 다음과 같이 추가 합니다. 

[system = "Linux", class = "com.mitchellh.ghostty"]
ShiftLeft{Any} >> ShiftLeft{Any}
ShiftLeft   >> ShiftLeft{Space}

위의 설정은 Linux 시스템에서, com.mitchellh.ghostty 라는 class(app_id)를 사용하는 앱에 대한 제한적인 key mapping을 선언한 것 입니다. 

shiftLeft{Any} >> ShiftLeft{Any}
이것은 shift키를 누른 상태에서 여타 다른 키를 누른 경우에는 그대로 shift + [any key] 로 동작하도록 합니다. 

ShiftLeft >> ShiftLeft{Space}
이것은 Shift키만 단독으로 push/pull 한 경우, ghostty에 Shift 대신 Shift + Space 키를 보내게 됩니다. 따라서, 마치 Shift + Space 키를 눌러 한/영 전환을 시킨 것과 같은 효과를 부여하게 합니다. 

 

근본적으로는 ghostty 의 소스 수정으로 이 문제가 해결되는 것이 가장 깔끔하기는 하지만, Issue가 언제 반영될지 모르는 상황이므로, ghostty를 꼭 사용하고 싶다면 참조 하시기 바랍니다. 

공유하기 링크
Comments