알겠습니다! 로마자 모드를 사용하지 않고 Dvorak 레이아웃에서 3벌식 한글 입력을 제대로 작동하도록 설정하는 데 집중하겠습니다. 이전 답변의 ~/.uim.d/ 기반 커스텀 키맵 설정이 가장 적합한 해결책입니다. 아래는 로마자 모드를 배제하고, ~/.uim.d/를 사용해 Dvorak용 3벌식 키맵을 설정하는 방법을 간결히 정리하고, 추가로 콘솔 환경(fbterm) 최적화 팁을 보강합니다. Debian 13과 uim-byeoru 기준입니다.
해결책: ~/.uim.d/로 Dvorak 3벌식 키맵 설정
1. ~/.uim.d/ 디렉토리 설정
디렉토리 생성 (없을 경우):
bashmkdir -p ~/.uim.d
2. Dvorak용 키맵 파일 생성
파일 생성: ~/.uim.d/dvorak-byeoru.scm
bashnano ~/.uim.d/dvorak-byeoru.scm
아래 내용 추가 (표준 3벌식 키맵을 Dvorak으로 변환, 초성/중성/종성 전체 포함):
scheme;;; ~/.uim.d/dvorak-byeoru.scm
;;; Dvorak 3beol layout for uim-byeoru
(require "byeoru.scm")
;; Dvorak 3beol 레이아웃 정의
(byeoru-define-layout dvorak-3beol
;; 초성 (Choseong)
("p" (choseong-giyeok . 1)) ; QWERTY 'r' → Dvorak 'p' = ㄱ
("f" (choseong-nieun . 1)) ; QWERTY 'e' → Dvorak 'f' = ㄴ
("g" (choseong-digeut . 1)) ; QWERTY 'w' → Dvorak 'g' = ㄷ
("c" (choseong-rieul . 1)) ; QWERTY 's' → Dvorak 'c' = ㄹ
("r" (choseong-mieum . 1)) ; QWERTY 'f' → Dvorak 'r' = ㅁ
("o" (choseong-bieup . 1)) ; QWERTY 'd' → Dvorak 'o' = ㅂ
("s" (choseong-siot . 1)) ; QWERTY ';' → Dvorak 's' = ㅅ
("u" (choseong-ieung . 1)) ; QWERTY 'u' → Dvorak 'u' = ㅇ
("h" (choseong-jieut . 1)) ; QWERTY 'j' → Dvorak 'h' = ㅈ
("t" (choseong-chieut . 1)) ; QWERTY 'k' → Dvorak 't' = ㅊ
("n" (choseong-kieuk . 1)) ; QWERTY 'l' → Dvorak 'n' = ㅋ
("e" (choseong-tieut . 1)) ; QWERTY 'i' → Dvorak 'e' = ㅌ
("l" (choseong-pieup . 1)) ; QWERTY 'p' → Dvorak 'l' = ㅍ
("b" (choseong-hieut . 1)) ; QWERTY 'n' → Dvorak 'b' = ㅎ
;; 복합 초성
("P" (choseong-ssanggiyeok . 1)) ; Shift+p = ㄲ
("G" (choseong-ssangdigeut . 1)) ; Shift+g = ㄸ
("O" (choseong-ssangbieup . 1)) ; Shift+o = ㅃ
("S" (choseong-ssangsiot . 1)) ; Shift+s = ㅆ
("H" (choseong-ssangjieut . 1)) ; Shift+h = ㅉ
;; 중성 (Jungseong)
("a" (jungseong-a . 1)) ; QWERTY 'k' → Dvorak 'a' = ㅏ
("o" (jungseong-ae . 1)) ; QWERTY 'l' → Dvorak 'o' = ㅐ
("i" (jungseong-ya . 1)) ; QWERTY 'h' → Dvorak 'i' = ㅑ
("j" (jungseong-yae . 1)) ; QWERTY 'g' → Dvorak 'j' = ㅒ
("e" (jungseong-eo . 1)) ; QWERTY 'i' → Dvorak 'e' = ㅓ
("u" (jungseong-e . 1)) ; QWERTY 'u' → Dvorak 'u' = ㅔ
("d" (jungseong-yeo . 1)) ; QWERTY 'y' → Dvorak 'd' = ㅕ
("k" (jungseong-ye . 1)) ; QWERTY 'v' → Dvorak 'k' = ㅖ
("q" (jungseong-o . 1)) ; QWERTY 'x' → Dvorak 'q' = ㅗ
("w" (jungseong-wa . 1)) ; QWERTY ',' → Dvorak 'w' = ㅘ
("v" (jungseong-wae . 1)) ; QWERTY '.' → Dvorak 'v' = ㅙ
("z" (jungseong-oe . 1)) ; QWERTY '/' → Dvorak 'z' = ㅚ
(";" (jungseong-yo . 1)) ; QWERTY 'z' → Dvorak ';' = ㅛ
("'" (jungseong-u . 1)) ; QWERTY 'q' → Dvorak ''' = ㅜ
("," (jungseong-weo . 1)) ; QWERTY 'm' → Dvorak ',' = ㅝ
("." (jungseong-we . 1)) ; QWERTY ',' → Dvorak '.' = ㅞ
("/" (jungseong-wi . 1)) ; QWERTY '/' → Dvorak '/' = ㅟ
("y" (jungseong-yu . 1)) ; QWERTY 't' → Dvorak 'y' = ㅠ
("x" (jungseong-eu . 1)) ; QWERTY 'b' → Dvorak 'x' = ㅡ
("m" (jungseong-i . 1)) ; QWERTY 'm' → Dvorak 'm' = ㅣ
;; 종성 (Jongseong, 초성과 유사)
("p" (jongseong-giyeok . 1)) ; QWERTY 'r' → Dvorak 'p' = ㄱ
("f" (jongseong-nieun . 1)) ; QWERTY 'e' → Dvorak 'f' = ㄴ
("g" (jongseong-digeut . 1)) ; QWERTY 'w' → Dvorak 'g' = ㄷ
("c" (jongseong-rieul . 1)) ; QWERTY 's' → Dvorak 'c' = ㄹ
("r" (jongseong-mieum . 1)) ; QWERTY 'f' → Dvorak 'r' = ㅁ
("o" (jongseong-bieup . 1)) ; QWERTY 'd' → Dvorak 'o' = ㅂ
("s" (jongseong-siot . 1)) ; QWERTY ';' → Dvorak 's' = ㅅ
("u" (jongseong-ieung . 1)) ; QWERTY 'u' → Dvorak 'u' = ㅇ
("h" (jongseong-jieut . 1)) ; QWERTY 'j' → Dvorak 'h' = ㅈ
("t" (jongseong-chieut . 1)) ; QWERTY 'k' → Dvorak 't' = ㅊ
("n" (jongseong-kieuk . 1)) ; QWERTY 'l' → Dvorak 'n' = ㅋ
("e" (jongseong-tieut . 1)) ; QWERTY 'i' → Dvorak 'e' = ㅌ
("l" (jongseong-pieup . 1)) ; QWERTY 'p' → Dvorak 'l' = ㅍ
("b" (jongseong-hieut . 1)) ; QWERTY 'n' → Dvorak 'b' = ㅎ
("P" (jongseong-ssanggiyeok . 1)) ; Shift+p = ㄲ
("G" (jongseong-ssangdigeut . 1)) ; Shift+g = ㄸ
("O" (jongseong-ssangbieup . 1)) ; Shift+o = ㅃ
("S" (jongseong-ssangsiot . 1)) ; Shift+s = ㅆ
("H" (jongseong-ssangjieut . 1)) ; Shift+h = ㅉ
)
;; 기본 레이아웃을 Dvorak 3beol로 설정
(set! byeoru-default-layout 'dvorak-3beol)
;; 한글 모드 전환 시 키맵 새로 고침 (Dvorak 반영)
(set! byeoru-refresh-keymap-on-hangul-switch #t)
설명:
위 코드는 표준 3벌식(QWERTY 기준)을 Dvorak 키로 변환한 완전한 매핑입니다.
Dvorak 키는 QWERTY와 다른 위치를 가지므로, 각 자음/모음이 Dvorak의 물리적 키에 맞게 재정의됨 (예: QWERTY 'r'=ㄱ → Dvorak 'p'=ㄱ).
byeoru-refresh-keymap-on-hangul-switch를 t로 설정해 한글 모드로 전환 시 Dvorak 레이아웃을 강제로 반영.
필요 시 /usr/share/uim/byeoru.scm을 참고해 추가 기호(숫자, 특수문자) 매핑 보완.
3. 콘솔 환경 설정 (fbterm 최적화)
콘솔 키맵을 Dvorak으로 설정:
bashsudo dpkg-reconfigure console-setup
"Keyboard layout" → "English (US)", "Keymap" → "dvorak".
UTF-8 인코딩 유지.
fbterm 실행 전 키맵 로드:
bashloadkeys dvorak
fbterm
uim 환경 변수 설정:
bashexport GTK_IM_MODULE=uim
uim-xim --engine=byeoru &
4. 테스트 및 디버깅
uim 재시작:
bashpkill uim-xim
uim-xim --engine=byeoru &
fbterm에서 한글 입력 테스트:
한영 전환 (기본: Shift+Space).
Dvorak 키로 입력 (예: 'p' 누르면 ㄱ, 'a' 누르면 ㅏ 출력 확인).
오류 확인:
bashuim -d
/tmp/uim.log나 stderr로 키매핑 오류 확인.
특정 키가 안 맞으면 ~/.uim.d/dvorak-byeoru.scm에서 해당 키 수정.
5. uim-pref-gtk 보완 (선택)
로마자 모드를 안 쓰더라도 GUI로 설정 보완:
실행:
bashuim-pref-gtk
Byeoru 탭:
"Korean keyboard layout" → "3beol" 확인.
"Refresh keyboard map at each switch into Hangul mode" 체크 (필수, Dvorak 반영).
한영 전환 키 (Shift+Space 등) 확인.
저장 후 uim 재시작.
문제 지속 시
매핑 오류: dvorak-byeoru.scm의 특정 키 (예: 'p'가 ㄱ 대신 다른 글자 출력) 수정.
fbterm 호환성: fbterm 버전 확인 (fbterm --version), 최신인지 확인 (sudo apt update && sudo apt install fbterm).
로그 공유: 오류 로그나 특정 키 입력 결과 (예: 'p'를 눌렀는데 X 나옴)를 알려주시면 매핑 조정 도움드립니다.
요약
~/.uim.d/dvorak-byeoru.scm에 Dvorak용 3벌식 키맵을 정의하고, byeoru-refresh-keymap-on-hangul-switch를 활성화하면 fbterm에서 한글 입력이 Dvorak 키로 정상 작동합니다. 로마자 모드를 배제했으니, 3벌식 기반으로 정확한 자판 입력이 가능할 겁니다. 추가 질문이나 특정 키 문제 있으면 말씀해 주세요!
댓글 없음:
댓글 쓰기