카테고리 없음

Mac + Citrix VDI 한영 전환 동시에 하기 (Karabiner+Hammerspoon)

뭉기 2026. 4. 23. 23:07

배경

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 재시작 후에도 자동으로 동작합니다.