레노버 노트북의 키보드 레이아웃에 대한 단상 - 이런 형태의 키보드 레이아웃은 도대체 누가 생각해 내는가?

레노버 노트북의 키보드 레이아웃에 대한 단상 - 이런 형태의 키보드 레이아웃은 도대체 누가 생각해 내는가?

노트북을 선택할 때 가장 중요한 것은 CPU, RAM~~(?.. 흠...)~~ 혹은 SSD 용량과 같은 소위 말하는 스펙이 전부가 아닐 수 있습니다. 예를 들어 무게, 두께 등과 같은 성능과 무관하지만 이동성을 고려하는 분들도 계시고, 저처럼 키보드 레이아웃을 중요하게 고려하는 분들도 계십니다.

저는 HHKB과 같은 일반적인 사용자에게 사실상 하드웨어 보안에 가까운 키보드 레이아웃을 원하는 것은 아니지만, 흔히 말하는 '전형적인' 레이아웃을 간절하게 원합니다. 예를 들어 서피스 랩탑 스튜디오 2와 같은 키보드 레이아웃을 일반적인 키보드 레이아웃이라 생각합니다. 유사한 형태의 레이아웃으로 Dell의 XPS, Apple의 MacBook도 개인적으로 만족하는 형태의 키보드 레이아웃 입니다(물론, Apple은 키보드와 별개로 선택할 수 밖에 없는 아픔이 있기도 하다). 다른 브랜드에서 출시되는 노트북들의 레이아웃에 대한 특장점이 있다곤 하지만, 개인적인 입장에서 사용하기 좋은 키보드 레이아웃 이라고 말하기 어렵습니다. 반면에, 현재 제가 사용하는 레노버 노트북은 지금까지 거쳐온 모든 노트북 중에서 가장 범죄적인 레이아웃을 가지는 제품입니다. 해당 모델은 LTE(4G) 모뎀을 사용해야 하는 어쩔 수 없는 상황에서 선택할 수 있는 여지가 (당시에는) 레노버 제품밖에 없었기 때문입니다.

레노버의 키보드 레이아웃이 범죄적인 형태로 구성되어 있다고 주장하는 이유는 한영키(일반적으로 RIGHT_ALT) 옆에 PrtSc 즉, 스크린 캡쳐키가 위치하고 있기 때문이다. 한국어 사용자의 특성을 고려하자면 무의식적으로 PrtSc를 누르는 일이 빈번합니다. 사실 빈번하게 키를 좀 누른다고 해서 크게 문제가 될 것이 없기 때문에, 많은 분들이 "그게 범죄적"인가? 하실 수도 있습니다. 저처럼 해당 제품을 회사에서 사용하게 될 경우, 회사 보안 프로그램에서 스크린 캡쳐를 남발한다고 자동으로 보고가 되기 때문에 레노버에서 채택한 키보드 레이아웃은 저에게 있어서 '위험'합니다.

레노버를 구입할 당시에는 리눅스 운영체제를 사용할 것으로 예상하고 구매했으나, 회사의 보안 프로그램이 리눅스를 지원하지 않는다고 해서(맥도 지원하는데 왜... 리눅스는?!!) 윈도우를 설치하였습니다. 리눅스였다면 키를 마음대로 변경하는게 어렵지 않지만, 윈도우의 경우 별도의 프로그램을 서비스로 상주시키는 형태로 진행해야 한다고 주변에서 조언해주었습니다. 하지만, 그럴 수 없었습니다. 보안 프로그램에서 키보드 관련 변경 사항의 경우 생각보다 강력하게 제어하고 있어서, 조금 복잡한 일이 벌어지기 때문입니다. 그래서 윈도우에서 범죄에 가까운 키보드 레이아웃을 조금 고쳐서 사용해보려고 노력한 흔적을 남겨봅니다.

목표는 'PrtSC'의 사용 금지

세상의 모든 키보드는 언제나 그러하듯이 문화적이며 사용자 환경의 맥락적인 상황을 고려해서 결정됩니다. 이런 사용자 환경과 맥락을 제거하고, 제시된 레이아웃의 철학을 뒤로한체 PtrSc를 사용하지 못하도록 하는게 중요한 목표입니다. 그리고, CapsLock이라 쓰고 Ctrl으로 읽어야 되는 키도 원래의 용도에 맞게, Ctrl로 변경할 생각입니다. 대문자라는 개념이 없는 언어권의 사용자이고, CapsLock을 전혀 사용 할 일이 없습니다. 그리고 세상의 거의 모든 사람들이 Emacs를 사용하고 있는데(반박시 내 말이 맞음, 흥!!), 왜 Ctrl 키를 CapsLock으로 인쇄를 하는지 이해하기 쉽지 않습니다. 하지만, 윈도우에서는 세상에서 가장 우아한 편집기를 사용하지 못하는 문제가 있기도 합니다(젠...장...).

예제 : 레지스터를 변경해보자.

레딧과 이런저런 키보드 사이트에서 검색을 통해서 알아낸 결과 윈도우 레지스터를 수정하면 된다는 것을 알았습니다(사유서를 쓰고, 보안인증 판정을 받으면 이것은 허용 가능한 범위라고 확답도 받았습니다. 사유서... 젠...장..). 그러기 위해서는 레지스터 수정을 해야 하는데 아래 코드를 통해서 확인할 수 있습니다. 예를 들어 아래 코드는 Left-CtrlCapsLock으로 변경하는 레지스터 수정 파일입니다.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00 

위에서 확인하실 수 있는 것과 같이 레이아웃을 변경하기 위해서는 16진수(hex)를 활용합니다. 위 코드는 나름의 규칙이 있는데 다음과 같이 구성됩니다.

  1. 16진수 데이터(hex data)는 5개 그룹(xx,xx,xx,xx) 그룹으로 구성된다.
  2. 해당 그룹에 대한 세부 사항은 아래와 같다.
  • 00,00,00,00 -- 버전 (항상 00,00,00,00)
  • 00,00,00,00 -- 플래그 (항상 00,00,00,00)
  • 02,00,00,00 -- 변경할 키의 개수 (NULL을 포함하기 때문에 변경할 키에 +1을 함)
  • 1d,00,3a,00 -- 변경내용(K, W => W키를 K키로 변경(순서주의!))
  • 00,00,00,00 -- 종료(NULL)

위의 16진수를 해석하자면 "1개의 키를 변경(02,00,00,00)하는데, 0x3a 키를 0x1d키로 변경해라" 이때, 1dLeft-Ctrl이며, 3aCapsLock이다. 즉, "CapsLock"을 "Left-Ctrl"키로 변경하는 16진수 데이터입니다.

실전 : 레노버 레이아웃을 변경해보자.

내가 원하는 변경사항은 아래와 같습니다.

  1. PrtSc키를 무력화
  2. CapsLockRight-Ctrl로 변경

그러기 위해서 아래와 같은 헥사 데이터로 구성할 수 있습니다.

  • 00,00,00,00 -- 버전 (항상 00,00,00,00)
  • 00,00,00,00 -- 플래그 (항상 00,00,00,00)
  • 03,00,00,00 -- 변경할 키의 갯수 (NULL을 포함하기 때문에 변경할 키에 +1을 해야 함)
  • 1d,e0,3a,00 -- CapsLockRight-Ctrl로 변경
  • 00,00,37,e0 -- PrtSc키를 무력화
  • 00,00,00,00 -- 종료(NULL)

아래와 같은 형태로 레지스터를 수정하는 코드를 작성하고 reg(예를 들어, 첨부된 파일명은 KeyBoard_Layout_Disable_CapsLock_PrtSc.reg) 파일을 작성하면 됩니다.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,1d,00,3a,00,00,00,37,e0,00,00,00,00

키보드의 스캔 코드만 알고 있으면, 다양하게 응용할 수 있지만 애초에 좋은 것을 사면 이런 골치아픈 일을 할 필요가 없습니다.

맺음말

좋은 레이아웃을 가진 노트북을 구매하세요. 레이아웃이 좋다는 것은 해당 노트북을 설계하고 만드는 분들이 입력 장치에 대한 나름의 고민이 있다는 의미입니다. 다양한 형태의 변형 레이아웃을 통해서 제조사의 철학과 사용자 그룹의 편의성을 도모하고 있습니다. 하지만 일반적이고 보편적인 형태의 키보드가 사용하기 좋고, 편리합니다. 윈도우의 레지스터 변경을 통해서 자신만의 레이아웃을 구성하거나 불편한 부분을 수정할 수 있지만, 개인이 하기에 쉽지 않을 수 있습니다. 개선할 수 있는 여지가 있다는 점에선 그나마 다행이라고 생각하지만, 레노버가 이런 정신나간 레이아웃을 만들지 않았다면 더 좋았을 것 같습니다.

레노버로 개발하시는 분들에게 도움이 되셨기를 바라며...

P.S

윈도우에서 제공하는 Settings > Accessibility > Keyboard > Use the Print screen key to open screen capture의 경우 PrtSc키를 눌렀을 때 윈도우에서 제공하는 Snipping Tool의 실행 여부를 설정하는 것입니다. 보안 프로그램에서 스크린캡쳐 여부가 남는 걸 원하지 않았기 때문에 해당 키를 비활성화하는 방법을 선택했습니다. Snipping Tool이 실행되는 것을 원치 않으시면 Accessibility 설정을 활용하는 것도 좋은 방법입니다.

P.S

개발회사에서 보안 프로그램을 설치하도록 하는 것은 보안인증 및 개인정보에 접근하는 일이 잦은 업무를 하기 때문입니다. 정확히는 민감한 정보에 접근해야 되는 인가자라서 그렇습니다만, 사실 보안 프로그램만 아니라면, 리눅스를 사용하시는 것도 좋은 선택입니다. 아마, 단기간에 놀라울 정도로 컴퓨팅 실력이 향상되실 껍니다. 더 많은 정보는 우분투한국커뮤니티에 오시면 됩니다.

Ref