배경
Mac에서 Citrix VDI를 사용할 때 한영 전환이 골치 아픈 이유는, Mac IME와 Windows IME가 완전히 독립적으로 동작하기 때문입니다.
VDI Windows 키보드 레이아웃
VDI는 한국어 Windows 표준 키보드 레이아웃(Type 1)을 사용합니다.
[ Right Alt ] = 한/영 전환
[ Right Ctrl ] = 한자 전환
Mac 키보드 레이아웃
Mac 키보드는 물리적 키 위치가 Windows와 다릅니다.
Windows 기준 위치: [ Right Alt ] [ Right Ctrl ]
Mac 실제 키: [ Right Cmd ] [ Right Option ]
즉, Mac에서 Windows의 Right Alt 자리에 해당하는 물리적 키는 Right Command이고, Right Ctrl 자리에 해당하는 키는 Right Option입니다.
Karabiner로 키 재배열
이 물리적 위치 차이를 맞추기 위해 Karabiner-Elements로 키를 재배열합니다.
Right Cmd → Right Alt (한/영 전환)
Right Option → Right Ctrl (한자 전환)
목표: Right Cmd(물리적 Right Alt 위치) 키 하나로 Mac IME와 VDI IME를 동시에 전환
- VDI: Karabiner가 변환한 Right Alt로 한영 전환
- Mac: 같은 키를 눌렀을 때 Mac IME도 함께 전환
준비물
brew install --cask karabiner-elements hammerspoon
Step 1. Karabiner-Elements 권한 설정
Karabiner-Elements 설치 후 아래 두 가지 권한을 허용해야 합니다.
① 시스템 설정 → 개인 정보 보호 및 보안 → 입력 모니터링
- Karabiner-Elements 체크 허용
② 시스템 설정 → 개인 정보 보호 및 보안 → 보안
- Karabiner 드라이버(DriverKit) 설치 허용
- 허용 후 Mac 재시작 필요
Step 2. Karabiner-Elements 설정
Karabiner-Elements → Simple Modifications → Apple Internal Keyboard 에서 아래와 같이 설정합니다.
From To
| right_command | right_option |
| right_option | right_control |
키보드 오른쪽 키 배치를 VDI 환경에 맞게 재배열하는 설정입니다.
Step 3. Citrix Workspace 키보드 Scancode 설정
Citrix Workspace는 기본적으로 Unicode 방식으로 키 입력을 전달합니다. 이 경우 한/영, 한자 키가 VDI에 제대로 전달되지 않기 때문에 Scancode 방식으로 변경해야 합니다.
Citrix Workspace → 환경설정(Preferences) → 키보드(Keyboard)
- 키보드 입력 방식 을 Scancode 로 변경
Scancode 방식은 키의 물리적 위치를 그대로 전달하기 때문에 Karabiner로 재배열한 키가 VDI에서도 정확히 동작합니다.
Step 4. Hammerspoon 권한 설정
시스템 설정 → 개인 정보 보호 및 보안 → 손쉬운 사용에서 Hammerspoon을 반드시 허용합니다.
Step 5. Hammerspoon 스크립트 설정
Hammerspoon 메뉴바 → Open Config 로 init.lua 를 열고 아래 코드를 추가합니다. (~/.hammerspoon/init.lua)
local function isKorean()
return hs.keycodes.currentMethod() == "2-Set Korean"
-- 3벌식390 사용자: "3-Set Korean (390)"
end
_rightOptionWatcher = hs.eventtap.new(
{ hs.eventtap.event.types.flagsChanged },
function(event)
local flags = event:getFlags()
local keyCode = event:getKeyCode()
-- right_option 키코드 = 61
if keyCode == 61 and flags["alt"] then
if isKorean() then
hs.keycodes.setLayout("ABC")
else
hs.keycodes.setMethod("2-Set Korean")
-- 3벌식390 사용자: hs.keycodes.setMethod("3-Set Korean (390)")
end
return false -- 키 이벤트 통과 → VDI가 Right Option 그대로 수신
end
end
)
_rightOptionWatcher:start()
설정 후 Hammerspoon 메뉴바 → Reload Config
동작 원리
Right Cmd 키 입력 (물리적 Right Alt 위치)
│
└─ Karabiner-Elements
└─ Right Cmd → Right Option 으로 변환
│
├─ Hammerspoon flagsChanged 감지 (keyCode 61)
│ └─ Mac IME 전환 (한↔영)
│
└─ return false → 키 이벤트 통과
└─ Citrix Workspace 수신 (Scancode 방식)
└─ VDI Right Alt 로 인식
└─ VDI IME 전환 (한↔영)
자동 시작 설정
시스템 설정 → 일반 → 로그인 항목에 Hammerspoon 추가하면 Mac 재시작 후에도 자동으로 동작합니다.