어려운 길

바이브 코딩 3

by 최의택

“하지만 윈도우 터치형 화상키보드를 쓰면 한/영 상태 신경 쓸 필요도 없고 한국어 자동 완성도 되는데 ‘dkssud’하지 못한 이 화상키보드를 굳이 써야 할 이유가 있을까?”

골머리를 썩이며 윈도우 터치형 화상키보드를 만지작대던 나는 돌연 의아함을 느꼈다. 윈도우 기본 화상키보드와는 달리 터치형 화상키보드는 내가 원하는 대로 한글과 알파벳을 각각 표기하는 이중 구조였다. 그런데 이중인 게 하나 더 있었다. 한/영 키도 이중이었다.

정확히는 두 개의 한/영 키가 있었다. 하나는 모두가 알 만한 일반적인 한/영 키로 그것을 누르면 윈도우의 한/영 상태가 바뀐다.

다른 하나는 터치형 키보드의 문자를 전환한다. 그 키가 ‘가’로 표시 중이면 다른 문자 키도 한글만 표시한다. 이때 문자 키를 누르면 한글이 입력된다. ‘가’ 키를 누르면 ‘가’가 ‘A’가 되고 문자 키들도 알파벳으로 바뀐다. 그 상태에서 문자 키를 누르면 영어가 입력된다.

그리고 터치형 화상키보드는 윈도우의 한/영 상태와 무관하게 자체 상태의 언어를 입력시킨다!

그 순간 머릿속에서 우두둑하고 이런 생각이 지나갔다. 알트키가 윈도우 언어 상태를 알 필요 없이 그냥 글자를 붙여넣어 버리면 될 텐데. 그럼 ‘dkssud’하지 못한 입력은 피할 수 있을 터였다. 나는 그러한 생각을 AI한테 설명했다. 그랬더니 돌아오는 답변은 훨씬 간단한 문제였다. 바로 유니코드를 사용하는 거였다.

나도 자세히는 모른다. 어쨌든 우리가 이해할 수 있는 문자는 컴퓨터한테는 그저 이진수의 집합으로 된 무언가에 불과하다. ㄱ 집합과 ㅏ 집합은 다르고, 또 달라야 한다. 한글의 경우에는 초성으로 쓰이는 ㄱ과 종성으로 쓰이는 ㄱ이 다르다. 게다가 ㄱ과 ㅏ를 더해 ‘가’를 만드는 방식이 1 + 2 = 3 과도 달라서 별도의 집합으로 존재하는 ‘가’를 따로 가져오는 식이다. 다시 말해 ㄱ과 ㅏ를 입력하면 컴퓨터는 ㄱ에 ㅏ를 더해서 ‘가’로 만드는 게 아니라 ㄱ와 ㅏ를 치우고 ‘가’라는 완전히 별개의 집합을 새로 가져오는 것이다. 그리고 여기에 ㄴ을 치면? ‘가’와 ㄴ을 또 치우고 ‘간’을 가져온다. 무식하고 비효율적이지만 컴퓨터의 속도가 워낙 빨라서 사람한테는 티가 안 난다.

한 가지 더. 기본적으로 키보드란 컴퓨터와 사전에 약속한 가상 키 값을 버튼마다 새기고 있다. 가령, A 키는 VK_A라는 값을 가지고 있어서 우리가 A키를 누를 때마다 VK_A 신호를 보낸다. 컴퓨터는 그 신호를 받아 문자를 입력하는데 그 순간 윈도우의 언어 상태가 영어라면 a를 입력하고 한국어라면 ㅁ을 입력한다. 그래서 내가 ‘안녕’을 자동 완성시킬 때 윈도우 언어 상태가 한국어가 아니라 영어로 되어 있으면 ‘dkssud’이 입력되는 것이다. 만약 화상키보드가 가상 키 신호를 보내는 게 아니라 유니코드를 직접 보낸다면. ‘안’과 ‘녕’의 집합을 곧장 컴퓨터로 보낸다면. ‘안녕‘이라는 단어를 복사해서 영어 상태일 때 붙여넣어도 ‘dkssud’이 아니라 ’안녕‘이 입력되는 것처럼 작동할 터였다.

이 대안적 계획은 정말로 컴퓨터 친화적이라 그런지 큰 무리 적용됐다(중간중간 사소한 버그가 있기는 했지만 특이한 수준은 아니었다). 다만, 이 계획이라고 문제가 아주 없는 건 아니었는데, 일단 첫 번째로 유니코드를 붙여넣는 식의 입력을 막도록 설계된 프로그램에서는 작동하지 않는다. 게임 같은 프로그램 말이다. 그래서 자동 완성 기능을 켤 때에만 유니코드를 사용하게 했다. 이러한 이유로 두 번째 문제가 불거진다. 프로그램이 쓸데없이 복잡해졌다는 것이다. 글쎄, 일종의 강박일지도 모르지만(그것도 스티브 잡스식의), 사용자 입장에서 그냥 프로그램을 실행하고, 원하는 문자를 입력하고, 자동 완성도 특별히 신경 쓰지 않고 할 수 있으면 좋겠다고 생각한다. 한/영 키가 두 개에, 기능에 따라 무슨 작동 방식이 달라지고 등등 신경을 쓰자면 쓸 거리가 꽤 되는 지금의 구조가 과연 접근성을 개선시키는 건지 반대로 진입 장벽을 높이는 건지 확신이 없다. 다만, 지금보다 기능을 줄이고 구조를 단순하게 하는 경우에는 윈도우 터치형 화상키보드의 대체제로서 존재 의미가 많이 약해지는 건 사실이다.

현재 알트키(AltKey)는 기본적인 뼈대는 거의 자리를 잡은 걸로 보인다. 최소한 내가 이걸로 에세이를 쓰면서 거슬리는 부분이 없는 정도다. 그밖에 추가 기능들, 그리고 접근성 기능들을 욱여넣고 있는 단계라 프로그램의 복잡도 증대는 현재진행형이다. 단순할 수 없다면, 그 반대로 갈 데까지 가보자. 물론 기본적인 기능은 최소한의 설정으로 쓸 수 있다. 하지만 더 깊이 들어가보고 싶은 사람에게 알트키는 가능성을 보여줄 수 있을 것이다.

내 바람이다.

작가의 이전글바이브 코딩