POOOLING FOREST
개발자의 키보드 해방일지: 따옴표의 저주와 AltGr의 구원 - 키보드 레이아웃의 '데드 키' 문제로 고통받던 테크리드가 발견한 해결책, AltGr 레이아웃과 데이터 기반
Culture & Philosophy

개발자의 키보드 해방일지: 따옴표의 저주와 AltGr의 구원

키보드 레이아웃의 '데드 키' 문제로 고통받던 테크리드가 발견한 해결책, AltGr 레이아웃과 데이터 기반 키보드 최적화에 대한 흥미로운 여정을 소개합니다.

김영태

테크리드

안녕하세요. 풀링포레스트 테크리드 김영태입니다.

개발자라면 누구나 한 번쯤 '키보드 레이아웃' 때문에 속을 끓여본 적이 있을 겁니다. 특히 저처럼 영어권 기술 문서를 자주 접하거나, 다국어 처리가 필요한 백엔드 시스템을 다루는 분들이라면 더욱 그렇겠죠. 오늘은 제가 최근에 겪은, 아주 사소하지만 워크플로우를 완전히 망가뜨리던 '따옴표' 문제와 그 해결책을 찾으며 알게 된 흥미로운 키보드 레이아웃 이야기를 해보려 합니다.

사건의 발단은 단순했습니다. 글로벌 서비스 확장을 위해 i18n(국제화) 테스트를 진행하던 중이었습니다. 프랑스어와 독일어 데이터를 입력해야 할 일이 생겨 윈도우와 리눅스 설정에서 'US International' 키보드 레이아웃을 켰습니다. 악센트 문자(é, ö 등)를 입력하기 위해서였죠. 그런데 곧바로 코드를 수정하려고 IDE로 돌아왔을 때 사달이 났습니다.

JSON 데이터를 수정하려는데 큰따옴표(")가 바로 찍히지 않는 겁니다. "를 누르고 스페이스바를 한 번 더 눌러야 비로소 화면에 문자가 나타났습니다. 개발자에게 따옴표는 산소와도 같습니다. 스트링(String) 하나 선언할 때마다 스페이스바를 한 번 더 쳐야 한다니, 정말 끔찍한 경험이었습니다. 이른바 'Dead Key(데드 키)'의 저주였습니다.

답답한 마음에 해결책을 찾다 한 흥미로운 아티클을 발견했습니다. 1981년부터 키보드를 두드려온 한 베테랑 개발자가 쓴 글이었는데, 저와 똑같은 고통을 이미 30년 전에 겪고 해결해 두었더군요. 그는 이 문제를 해결하기 위해 리눅스 커뮤니티에 altgr-intl이라는 레이아웃을 제안했고, 이것이 2007년에 채택되었다고 합니다.

핵심은 간단합니다. 프로그래머에게 가장 중요한 기본 따옴표(', ")는 즉시 입력되게 두고, 악센트가 필요할 때만 오른쪽 Alt 키(AltGr)를 조합해서 사용하는 방식입니다. 예를 들어 AltGr + e를 누르면 é가 나오는 식이죠. 기존 방식이 를 먼저 누르고 e를 누르는 순차적 방식이었다면, 이건 조합형 방식인 셈입니다.

더 흥미로운 점은 이 개발자가 여기서 멈추지 않고 더 효율적인 레이아웃인 altgr-weur를 고안했다는 사실입니다. 그는 마이크로소프트의 기본 인터내셔널 레이아웃이 비효율적이라고 지적했습니다. 예를 들어, 우리가 거의 쓸 일 없는 고대 영어 문자나 저작권 기호(©) 같은 것들이 접근하기 쉬운 자리를 차지하고 있다는 것이죠. 반면 독일어나 프랑스어에서 빈번하게 쓰이는 문자들은 구석에 처박혀 있고요.

그는 데이터 컨설턴트와 협업하여 서유럽 10개 언어의 문자 빈도표를 분석했습니다. 그리고 가장 많이 쓰이는 악센트 문자를 가장 누르기 편한 위치에 재배치했습니다. 이른바 '데이터 기반 키보드 최적화'인 셈입니다.

새로운 레이아웃의 규칙은 개발자들의 암기 패턴과도 잘 맞아떨어집니다.

  • 움라우트(ü)는 해당 모음 키(u)에 매핑됩니다. (AltGr + u = ü)

  • 모양이나 위치를 기반으로 직관성을 높였습니다. 둥근 모양의 Q에는 링이 달린 å를 할당하는 식이죠.

이 글을 읽으며 저는 단순히 "키보드 설정을 바꿨다"는 사실보다, 도구 하나를 대하는 태도에 대해 다시 생각하게 되었습니다. 우리는 종종 주어진 개발 환경이나 기본값(Default)에 순응하며 불편함을 감수합니다. "원래 이런 거니까"라며 따옴표 뒤에 스페이스바를 치는 습관을 들이려 노력하죠. 하지만 누군가는 그 0.1초의 비효율을 참지 않고 시스템(X11 소스 트리)을 뜯어고쳐 전 세계 개발자들에게 배포합니다.

물론 당장 여러분에게 이 레이아웃을 설치하라고 권하는 것은 아닙니다. 하지만 매일 수천 번씩 누르는 키보드, 매일 마주하는 IDE 설정에서 "이게 최선인가?"라는 의문을 품어보는 건 어떨까요?

저도 이참에 리눅스 장비의 설정을 altgr-intl 기반으로 변경했습니다. 이제 스트링 리터럴을 입력할 때마다 멈칫거리지 않아도 됩니다. 혹시 정말 희귀한 특수문자가 필요할 때는 'Compose Key(Multi_Key)' 기능을 활용하면 됩니다. (예: Compose 키 -> ' -> e 순서로 입력)

도구를 탓하지 않는 것이 장인이라지만, 진짜 장인은 자신의 도구를 끊임없이 갈고닦아 최상의 상태로 만드는 사람이 아닐까 싶습니다. 오늘 하루, 여러분의 개발 생산성을 갉아먹는 아주 작은 '데드 키'는 무엇인가요? 한 번쯤 찾아내어 해결해 보시길 바랍니다.

지금 읽으신 내용, 귀사에 적용해보고 싶으신가요?

상황과 목표를 알려주시면 가능한 옵션과 현실적인 도입 경로를 제안해드립니다.