디시인사이드 갤러리

마이너 갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

Wayland에서 hwdb로 한글키 맥이는 법 알아냈다...

왓따루갤로그로 이동합니다. 2023.09.15 20:13:08
조회 141 추천 4 댓글 6

딱히 적을 곳이 없어서 여기다가 적음


tl;dr


1./proc/bus/input/devices 에서 키보드 기기명 확인

2. sudo evtest 명령어로 키코드 확인

3. 다음처럼 /etc/udev/hwdb.d/61-hangul.hwdb 파일 작성:


evdev:name:<기기명>:*
KEYBOARD_KEY_<R_Alt 키코드>=hanguel
KEYBOARD_KEY_<R_Ctrl 키코드>=hanja


4. 설정값 강제 리로드

sudo systemd-hwdb update

sudo udevadm trigger



HWDB란?


udev에 들어있는 하드웨어 데이터베이스.

각종 하드웨어에 대한 세팅정보 같은게 들어가있음.

옛날에는 별도의 이름이 없이 udev의 일부였는데, systemd로 흡수된 이후에 따로 명칭이 생김.


https://www.freedesktop.org/software/systemd/man/hwdb.html

 


이걸로 설정 가능한 내용 중에는 키 입력의 키코드 값 매핑도 있음.

여기서는 노트북 빌트인 키보드의 우측 alt/ctrl을 한글/한자 키로 매핑함.


설정값을 준비하자


일단 키를 매핑하려면 3가지가 필요함

1. 목표가 되는 키보드 기기

2. 매핑할 키의 키코드

3. 매핑후 사용할 키의 키코드


키보드 기기 확인


정확히는 설정파일에서 사용할 수 있는 "기기의 경로" 값을 확보해햐 함.

경로를 지정하는 방법에는 여러가지가 있는데, 가장 사람이 쓰기 편한 방법으로 기기의 명칭(name)을 사용하는 방법이 있음.

cat /proc/bus/input/devices 명령어로 기기 목록을 뽑아서, 그 중 N: Name 값을 경로에 이용할 수 있음.

가령 N: Name="AT Translated Set 2 keyboard" 이라면 경로는 다음 처럼 쓸 수 있음.


evdev:name:AT Translated Set 2 keyboard:*


가령 내 노트북(thinkpad)에 달린 키보드는 atkbd 모듈로 구동되는데, 이렇게도 쓸 수 있고: evdev:atkbd:dmi:*

이거 외에 USB의 VID, PID를 사용하는 방법도 있는 것 같은데 내가 쓸일 없어서 몰루?


매핑할 키의 키코드


이건 sudo evtest 명령으로 쉽게 알 수 있음.

해당 명령어를 실행하면 기기 목록이 뜨는데, 키보드를 선택하고 엔터, 그 뒤 매핑할 키를 누르면 키코드가 포함된 이벤트 정보가 뜸.


Event: time 1694775193.222899, type 4 (EV_MSC), code 4 (MSC_SCAN), value 1c
Event: time 1694775193.222899, type 1 (EV_KEY), code 28 (KEY_ENTER), value 0
Event: time 1694775193.222899, -------------- SYN_REPORT ------------
Event: time 1694775194.716147, type 4 (EV_MSC), code 4 (MSC_SCAN), value b8
Event: time 1694775194.716147, type 1 (EV_KEY), code 122 (KEY_HANGUEL), value 1
Event: time 1694775194.716147, -------------- SYN_REPORT ------------
Event: time 1694775194.794984, type 4 (EV_MSC), code 4 (MSC_SCAN), value b8
Event: time 1694775194.794984, type 1 (EV_KEY), code 122 (KEY_HANGUEL), value 0
Event: time 1694775194.794984, -------------- SYN_REPORT ------------
Event: time 1694775194.984991, type 4 (EV_MSC), code 4 (MSC_SCAN), value 9d
Event: time 1694775194.984991, type 1 (EV_KEY), code 123 (KEY_HANJA), value 1
Event: time 1694775194.984991, -------------- SYN_REPORT ------------
Event: time 1694775195.031933, type 4 (EV_MSC), code 4 (MSC_SCAN), value 9d
Event: time 1694775195.031933, type 1 (EV_KEY), code 123 (KEY_HANJA), value 0
Event: time 1694775195.031933, -------------- SYN_REPORT ------------

여기서 EV_MSC, MSC_SCAN 이 표시되는 줄이 키보드 키 스캔 이벤트임.

RAlt, RCtrl을 순서대로 누른거고, 해당 키코드 값은 b8, 9d임.

해당 값은 기기별로 다르기 때문에 복붙하지 말고 직접 실험할 것.


매핑후 사용할 키의 키코드


이건 이미 기존에 정의된 값이라 고민할게 별로 없음.

다만 한글/한자키는 외국에선 안쓰다보니 인터넷에도 자료가 잘 안 뜰거임.


한글키는 hanguel

한자키는 hanja


이렇게 이름이 붙어있으니 참고.


설정하기


설정파일 작성


hwdb 설정파일은 /etc/udev/hwdb.d에 넣으면 udev가 구동할 때 자동으로 읽어들임.

hwdb 설정파일의 형식이 궁금하거나 키보드 설정 내용이 궁금하면 /usr/lib/udev/hwdb.d/60-keyboard.hwdb 을 참고할 것.


일단 다음의 위치에 설정파일을 생성하자 (편집기는 편한거 사용할 것)

sudo vi /etc/udev/hwdb.d/61-hangul.hwdb


내용은 다음과 같음:


evdev:name:<기기명>:*
KEYBOARD_KEY_<R_Alt 키코드>=hanguel
KEYBOARD_KEY_<R_Ctrl 키코드>=hanja


설정 리로드 시키기


일반적으로는 구동시에만 로드되는 값이라 설정이 바뀌면 수동으로 다시 로드 해줘야됨


sudo systemd-hwdb update

sudo udevadm trigger


정상적으로 작동하는지는 evtest로 확인할 수 있음.


추천 비추천

4

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 비난 여론에도 뻔뻔하게 잘 살 것 같은 스타는? 운영자 24/06/03 - -
3215 재미로 luks2 디스크 암호화 했었는데 [2] 리갤러(211.36) 12:26 28 0
3214 빔이 빔이 아니야~ [1] ReimuHakurei갤로그로 이동합니다. 00:27 37 0
3213 씨발윈도우ㅈㄴ불편하노 [2] ReimuHakurei갤로그로 이동합니다. 06.02 73 1
3212 윈도우 복구 완!(듀얼부팅 글쓴이) [5] 리갤러(211.176) 06.02 87 2
3211 심심할 땐 정전갤 뻘글 [2] 리갤러(211.54) 06.02 59 0
3210 우분투 설치를 했는데 들어가지를 못한다… [2] 리갤러(222.118) 06.02 52 0
3209 musl사용한 시스템 사용한 후기. [2] 리갤러(136.23) 06.02 76 3
3208 노트북은 걍 리눅스가 편한듯 [2] ReimuHakurei갤로그로 이동합니다. 06.02 104 0
3207 밑 아치 윈도우 듀얼부팅 글쓴이입니다. [19] 리갤러(223.38) 06.02 153 0
3206 타일링 WM 한번 쓰니까 다시 못돌아가겠어... [3] 리갤러(49.172) 06.02 66 1
3205 우분투 한달차 [1] 리갤러(14.5) 06.01 74 2
3204 게임만 한다면 리눅스도 괜찮은듯 [2] 전웅갤로그로 이동합니다. 06.01 116 0
3203 리눅스-윈도 부팅 게이 다시 보아라. [6] oooo(49.143) 06.01 107 0
3202 6개월간의 리눅스 사용 후기 [7] ReimuHakurei갤로그로 이동합니다. 05.31 163 0
3201 아치나 젠투 쓰면 좋은점 [2] ㅇㅇ(223.39) 05.31 105 0
3200 밑에 아치-윈도우 듀얼부팅 게이 보아라. [26] oooo(110.35) 05.31 246 3
3199 우분투 efi 파티션을 새 usb에 만들어도 되남? [1] 리갤러(211.36) 05.31 57 0
3198 뉴비 질문 좀 [3] ㅇㅇ(1.237) 05.29 119 0
3197 듀얼 부팅 윈도우 자동 복구 [37] 리갤러(211.176) 05.29 276 0
3196 리눅스는 유튜브 서드파티 앱 없나? [14] 리갤러(36.39) 05.27 201 0
3195 구닥다리 그램에 페도라 40 올려봄 [3] 리갤러(211.54) 05.27 139 1
3194 쿠분투 24.04 부팅 안 됨 원인 찾음 [2] 전웅갤로그로 이동합니다. 05.27 118 0
3193 우분투에서 데비안 가면 적응 쉽냐 [5] 전웅갤로그로 이동합니다. 05.27 184 0
3192 centos7 담달까지네? [5] 리갤러(223.39) 05.27 142 0
3191 갤북 사운드 해결법 [4] 리갤러(172.226) 05.26 125 0
3190 듀얼부팅 하면 안되는 이유 [2] ㅇㅇ(37.19) 05.26 196 0
3189 리눅스가 이론적으로는 커널 업데이트빼고 재부팅이 필요없음? [5] 리갤러(37.120) 05.26 168 0
3188 노트북 키보드 왜 리눅스에서만 특정키 먹통이냐 [3] ㅇㅇ(14.6) 05.26 111 0
3187 갤럭시북4 프로 리눅스 설치 후기 [7] ㅇㅇㅇㅇ갤로그로 이동합니다. 05.26 185 0
3186 리눅스 입문자 배포판 추천좀요 [2] linux갤로그로 이동합니다. 05.25 155 0
3185 kde 올렸다 [2] 리갤러(211.54) 05.25 145 0
3184 형님들 갤북프처럼 드라이버 지원해주는 놋북은 [7] linux갤로그로 이동합니다. 05.25 112 0
3183 cs35l41 스피커출력 인식시키기 [6] 리갤러(211.54) 05.25 136 2
3182 누트북 바꾼김에 de 바꿔봄 [2] 桜坂・亜衣子갤로그로 이동합니다. 05.25 254 1
3181 리눅스 sgid와 그룹권한 [17] 리갤러(118.235) 05.25 162 1
3180 젠투 올려봤다 [16] 리갤러(59.20) 05.24 323 4
3179 리눅스는 원래 폴더명 띄어쓰기 절대하면 안되나? [10] 리갤러(106.240) 05.23 222 0
3178 ssd 리눅스 설치 질문 [11] 전웅갤로그로 이동합니다. 05.23 154 0
3177 Shift + alt + s 키매핑이 어떻게 되어있는지 아는 사람있음? [5] aa(211.217) 05.23 85 0
3176 가상머신에 리눅스 설치해서 공부하는거 비추한다 [5] ㅇㅇ(66.115) 05.23 208 1
3175 선생님들... 프리도스 ASUS 노트북에 칼리리눅스를 깔아봤는데.. [4] 리갤러(180.69) 05.22 115 0
3174 윈도우로 듀얼 부팅했다가 다시시작으로 리눅스 들어가면 블루투스 안 됨 [3] 리갤러(37.120) 05.22 115 0
3173 윈도우 듀얼부팅에서 배터리 60% 제한하면 리눅스에서도 되는 이유가 [4] 리갤러(37.120) 05.22 130 0
3172 쿠분투 24.04 업그레이드 하래서 [7] 전웅갤로그로 이동합니다. 05.22 198 0
3171 서피스리눅스 3일차 늦 [3] 레퓌갤로그로 이동합니다. 05.22 98 0
3170 리눅스 ㄹㅇ 지리는게 안될것같은게 다 되네 [2] 리갤러(124.53) 05.22 185 0
3169 아치 리눅스 블루투스 문제 해결했음 [2] 리갤러(37.120) 05.21 138 0
3168 곧 있음 갤북4엣지 출시한다던데 [2] 전웅갤로그로 이동합니다. 05.21 98 0
3167 가상머신으로는 동영상보는거 절대아닌걸까? [15] 리갤러(36.39) 05.21 187 0
3166 서피스리눅스 2일차 [3] 레퓌갤로그로 이동합니다. 05.20 105 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2