반응형

루팅된 안드로이드에서 리모컨이나 조이스틱 버튼 키매핑을 하고 싶을때가 있습니다.
여러 키매핑 어플들이 있으나 입력장치를 매핑어플용으로 변경해야 해서 불편할때가 많습니다.
한글 입력이 안되거나 스크린 키보드가 안뜨거나 뭐 그렇죠.

 

셋팅하기는 어렵지만 사용하기 가장 편리한 방법은 직접 장치별 keylayout 파일을 수정하는 방법이 있습니다.
장치별로 매핑을 해놓으면 다른데 영향을 전혀 안주거든요.

 

루팅이 되어있어야 합니다.
루팅이 안되있을 경우 아래 글 참조해주세요.

2020/08/30 - [분류 전체보기] - 블루투스 리모컨 버튼 키매핑 - 게임, 이북용

 


준비물

루팅된 안드로이드폰/타블렛
ADB 와 드라이버가 설치된 PC
(2020/08/22 - [모바일 디바이스/루팅 및 커스텀 펌웨어] - 루팅과 펌웨어 업데이트를 위한 ADB / fastboot 설치와 사용)
PC와 연결할 데이터 케이블

 

키 리맵

keylayout 파일 수정 (.kl file)

안드로이드 장치의 keylayout 파일은 아래와 같은 순서로 참조됩니다.
파일들은 소유 권한이 660 (rw,r,r) 입니다. 새 파일을 만들고 chmod 660 을 잊지 마세요.

/odm/usr/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl
/vendor/usr/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl
/system/usr/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl
/data/system/devices/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl
/odm/usr/keylayout/Vendor_XXXX_Product_XXXX.kl
/vendor/usr/keylayout/Vendor_XXXX_Product_XXXX.kl
/system/usr/keylayout/Vendor_XXXX_Product_XXXX.kl
/data/system/devices/keylayout/Vendor_XXXX_Product_XXXX.kl
/odm/usr/keylayout/DEVICE_NAME.kl
/vendor/usr/keylayout/DEVICE_NAME.kl
/system/usr/keylayout/DEVICE_NAME.kl
/data/system/devices/keylayout/DEVICE_NAME.kl
/odm/usr/keylayout/Generic.kl
/vendor/usr/keylayout/Generic.kl
/system/usr/keylayout/Generic.kl
/data/system/devices/keylayout/Generic.kl

공식 문서 설명은 아래와 같습니다.
Source: https://source.android.com/devices/input/key-layout-files.html

 

연결된 장치 이름 찾기

먼저 키맵을 수정하고 싶은 특정 device 의 vendor 와 product 이름을 찾아야 합니다.
pc 와 안드로이드를 연결 후 adb 명령으로 접속 후 (블루투스 페어링 후)연결된 device를 확인합니다.
윈도우에서는 cmd 를 실행한 후 아래 명령어를 순서대로 입력합니다.

adb shell
su
cat /proc/bus/input/devices

저는 아래와 같은 장치를 찾았고 매핑할 예정입니다.

cat /proc/bus/input/devices

I: Bus=0005 Vendor=05ac Product=3232 Version=0001  
N: Name="Gamepad"  
P: Phys=  
S: Sysfs=/devices/virtual/misc/uhid/0005:05AC:3232.0005/input/input11  
U: Uniq=D1:88:05:05:55:55  
H: Handlers=mouse0 event7 cpufreq  
B: PROP=0  
B: EV=10001f  
B: KEY=3f0003007f 0 0 483ffff17aff32d bf54444600000000 6fdb0000001f0001 130f938b17c007 ffff7bfad9415fff febeffdfffefffff fffffffffffffffe  
B: REL=143  
B: ABS=100030627  
B: MSC=10

기억해야 할건 vendor 05ac 와 product 3232 입니다.

 

key code 구조

kl 파일 안에 key code 는 아래와 같은 구조입니다.

KEYCODE_APP_SWITCH = APP_SWITCH

사용 가능한 키 코드 리스트는 공식 문서에서 확인 가능합니다.
http://developer.android.com/reference/android/view/KeyEvent.html

 

 

key code 스캔

앱스토어에서 "Gamepad test" 를 설치 후 실행합니다.
Gamepad test를 선택하고 들어간 후 사용하고 싶은 button 을 눌르면 scancode 에 키코드가 나타납니다.
이 키코드를 .kl 파일에 서 매핑 하면 됩니다.
제 경우는 아래와 같군요.

 

 

 

 

 

.kl 파일 수정

adb shell 로 접속해서 수정해도 되고
root 접근권한 있는 앱에서 수정해도 됩니다.

 

아래 폴더에서 아까 기억해놓은 vendor 와 product 파일이 있는지 확인합니다.

/odm/usr/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl  
/vendor/usr/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl  
/system/usr/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl
...
...

있을경우 사본을 복사해놓고 수정하면 됩니다.

저는 없어서 general.kl 을 복사해서 하나 만들었습니다.


/system/usr/keylayout/Vendor_05ac_Product_3232.kl

이 파일을 열어서 필요한 키를 다시 매핑해줍니다.


파일 수정 방법은 fx파일브라우저나 cx브라우저 같은 루트 접근 가능한 브라우저로 들어가서
rw 로 시스템 remount 후 해당 파일을 열어서 수정하면 됩니다.


저는 adb 로 shell 연결 후 nano 로 수정했는데요. adb 연결 후 nano 사용법은 아래 글 참조하면 됩니다.

2020/08/13 - [서버와 홈디바이스/NAS, VPN, 클라우드] - Android ADB 연결 후 vi / nano 에디터 사용

저는 Button A, B, X, Y 를 각각 Volume down / up 으로 매핑했습니다. (이북을 보기 위해서)


/system/usr/keylayout/Vendor_05ac_Product_3232.kl

key 308   VOLUME_DOWN  
key 305   VOLUME_DOWN

key 304   VOLUME_UP  
key 307   VOLUME_UP

 

이제 키보드/게임패드 연결을 끊고 다시 연결하면 반영이 됩니다.
즐겁게 사용하면 됩니다.

 

반응형
반응형

전자책 도서관을 이용하거나 게임을 할 때 블루투스 리모컨을 사용할 때가 있습니다.

이때 각 버튼이 내가 원하는 배치가 아닌 경우 다시 키매핑을 합니다.

특히 전자책의 경우 북큐브 같은 경우 리모컨에 따라 버튼이 잘 안먹히는 경우가 많아서 보통 키매핑을 바꿔서 사용중입니다.

 

알리익스프레스에서 3~4달러면 살 수 있는 저렴한 리모컨입니다.

주로 책볼때 사용하는데 위쪽 조이스틱보단 아래 버튼이 더 편해서 버튼 매핑을 바꿔서 이북을 볼 때 사용중입니다.

 

 

 

 

 

 

루팅 없이 사용하는 쉬운 방법은 아래 어플리케이션을 사용하는 방법입니다.

 

 


요약

프로그램 설치

  • External keyboard helper demo (EKH)
  • keyboard switcher

구글 스토어가 사용 불가할 경우 apkmirror 에서 받습니다.

 

 

셋팅 및 사용

  • EKH 에서 키매핑을 진행 하고
  • 키보드를 EKH 로 선택 후 사용
  • 일반적인 사용을 위해서는 다시 기존 키보드를 선택

 


블루투스 키,버튼 매핑 방법 (no root)

설치 과정 동영상

 

 

 

설치과정 설명

기본적으로 원하는 블루투스 장치가 페어링 되어 있어야 합니다. 

구글 스토어에서 External keyboard helper demo(EKH)를 받습니다.

 

 

 

EKH 를 실행하면 키보드 관리로 자동으로 연결됩니다.

EKH 를 키보드로 사용할 수 있도록 체크 하고

 

 

 

다시 EKH를 실행해서 고급설정에 들어갑니다.

 

 

키보드 매핑

 

 

나만의 키보드 맵핑

 

 

새로운 키맵핑을 추가

 

 

scancode 옆에 칸이 활성화 된 상태에서 페이지 다운으로 사용하려는 블루투스 키를 눌러서 키코드를 스캔합니다.

그리고 keycode 를 체크하고 해당 버튼이 눌릴때 원하는 동작을 선택합니다.

저는 이북을 주로 보기 때문에 volume up 이나 down 을 선택했습니다. 보통 이북 프로그램들이 볼륨 버튼은 인식하게 만들어져 있어서요.

 

 

여기까지만 해도 사용 가능합니다.

다만 EKH 가 활성화 될때만 해당 키매핑이 먹히기 때문에 키보드를 쉽게 바꾸기 위한 프로그램을 하나 더 설치했습니다.

사용 스마트폰에 따라 기본 제공되는 경우도 있습니다. 

 

아래 Keyboard Switcher 를 설치하고 notification 바에 사용 가능하도록 체크하면 이제 노티바 내리면 키보드를 바꿀 수 있게 보입니다.

 

 

 

 

 

이제 사용하시면 됩니다.

EKH 키보드 선택된 상태에서는 블루투스 장치 버튼이 매핑되어서 동작합니다.

 

 

다음번에는 루팅된 장치에서 프로그램을 사용하지 않고 바로 키맵을 편집하는 방법을 올릴 예정입니다.

장치별 키매핑 파일을 만들어서 사용하면 됩니다.

 

 

이상입니다.

반응형

+ Recent posts