Skip to content

한컴 단축키 호환성 전체 정비 — Ctrl+G 계열 보기 메뉴 + 누락 단축키 추가 #131

@edwardkim

Description

@edwardkim

배경

한컴 단축키 체계는 Windows 3.1 시절부터 설계되어 현대 브라우저/OS 예약 키와 태생적으로 충돌이 많다.
한컴 웹오피스 포함 기존 제품들도 이 문제를 해결하지 못한 채 문서만 유지하고 있다.
rhwp는 웹 퍼스트 제품으로서 충돌 정책을 명확히 설계하고 문서화하는 것 자체가 차별점이 된다.


브라우저 충돌 분석 결과

CDP로 한컴 공식 단축키 목록을 전수 추출하여 Chrome 예약 키와 비교 분석.

① 브라우저가 양보하는 키 (편집 영역 포커스 시 preventDefault()로 가로챌 수 있음)

Ctrl+S, Ctrl+P, Ctrl+F, Ctrl+Z, Ctrl+B, Ctrl+I, Ctrl+U, Ctrl+H, Ctrl+D
한컴 호환 단축키 그대로 지원 가능

② 브라우저가 절대 양보하지 않는 키

한컴 단축키 한컴 기능 브라우저 기능
Ctrl+T 한 단어 지우기 새 탭
Ctrl+W 화면 이동 탭 닫기
Ctrl+N 새 문서 새 창
Ctrl+Tab 문서 탭 순환 브라우저 탭 순환
F5 셀 선택 새로고침
Ctrl+F5 첫 줄 내어쓰기 강제 새로고침
Ctrl+Shift+I 첫 줄 들여쓰기 개발자 도구
Ctrl+Shift+J 가로 평균 콘솔
Ctrl+Shift+C 가운데 정렬 요소 검사
Ctrl+Shift+N 세로 곱 시크릿 창
Ctrl+Shift+T 배분 정렬 탭 복원
Ctrl+Shift+R 오른쪽 정렬 강제 새로고침
F11 개체 선택 전체화면
F12 한컴 사전 개발자 도구
rhwp 독자 키로 재매핑 필요

③ OS 수준 충돌

단축키 충돌
Alt+F4 Windows 창 닫기
대체 키 필요

설계 방향

1. 호환 레이어

브라우저가 양보하는 범위에서 한컴 단축키 그대로 지원.

2. 재매핑 레이어

브라우저가 절대 양보하지 않는 키는 rhwp 독자 키로 대체.
재매핑 원칙:

  • 의미적으로 유사한 키 조합 우선
  • Chord 방식(Ctrl+G,* 등) 활용
  • 재매핑 내용을 사용자에게 명시적으로 안내

3. / 커맨드 팔레트

Notion/Linear/GitHub 패턴 도입:

  • / 입력 → 커맨드 팔레트 팝업
  • 기능명 검색 → 단축키 함께 표시
  • 브라우저 충돌로 재매핑된 키도 여기서 안내
  • 한컴 사용자가 "이건 rhwp에서 어떤 키지?" 즉시 확인 가능
  • 단축키를 몰라도 기능을 찾고, 찾으면서 자연스럽게 학습

구현 단계

1단계 (우선순위 높음) — [보기] Ctrl+G 계열 완성

  • chordMapG에 추가: t → view:para-mark, p → view:zoom-fit-page, w → view:zoom-fit-width, q → view:zoom-100
  • index.html 보기 메뉴 md-shortcut 표시 정비

2단계 — [서식] 기본 글자 서식 단축키

  • Ctrl+B, Ctrl+I, Ctrl+U — 진하게/기울임/밑줄
  • Ctrl+], Ctrl+[ — 글씨 크게/작게
  • Ctrl+Shift+L/C/R/M — 정렬 (브라우저 충돌 키 재매핑 포함)

3단계 — / 커맨드 팔레트

  • / 키 입력 → 커맨드 팔레트 UI
  • 전체 커맨드 검색 + 단축키 표시
  • 재매핑 안내 포함

4단계 — 재매핑 정책 문서화 + 나머지 누락 단축키

  • Shift+Enter 강제 줄 나누기
  • Alt+C 모양 복사
  • 단축키 정책 문서 (mydocs/tech/shortcut_policy.md)

참고

한컴 단축키 원문: https://help.hancom.com/hoffice/multi/ko_kr/hwp/view/toolbar/shortcut(table).htm

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions