피드로 돌아가기
Hacker NewsHacker News
Infrastructure

xcb_send_event를 통한 i3 Window Manager의 Key Event 재전송 구현

My I3-Emacs Integration

2026년 5월 23일2advanced

Context

i3 Window Manager가 root x window에서 xcb_grab_key()를 통해 모든 키 이벤트를 전역적으로 가로채는 구조. 이로 인해 다른 애플리케이션이 특정 키 입력을 수신하지 못하는 Event Interception 한계 발생.

Technical Solution

  • root window 기반의 xcb_grab_key() 설정을 통한 전역 키 바인딩 인터셉트 구조 분석
  • owner_events = 1 설정 시 이벤트가 root window로만 전달되는 제약으로 인해 Passthrough 방식 배제
  • handle_key_press() 함수 내에서 수신한 xcb_key_press_event_t 원본 데이터를 식별
  • xcb_send_event() 함수를 호출하여 인터셉트한 이벤트를 대상 윈도우로 직접 재전송하는 로직 설계
  • i3의 전역 인터셉트 특성으로 인한 Window Focus 손실 문제는 미해결 과제로 잔존

1. Event Passthrough 설정이 기대와 다르게 Root Window에만 한정되는지 확인

2. 가로챈 이벤트의 원본 데이터 구조(xcb_key_press_event_t)를 보존하여 재전송 가능성 검토

3. 전역 이벤트 인터셉트 시 발생할 수 있는 Focus Loss 및 상태 불일치 사이드 이펙트 분석

원문 읽기