F1 ~ F12는 할당된 특수키 (화면 밝기 조절, 음량 조절 등)가 기본 값이고 펑션키(F1~F12)는 FN 키와 같이 눌러야 동작한다. 이것을 펑션키를 기본으로 하도록 설정한다.
k760_conf 설치
github에서 소스를 받아서 k760_conf을 설치한다.
$ git clone https://github.com/neoesque/k760-linux-fn-conf
$ cd k760-linux-fn-conf
$ ./build.sh
$ chmod +x k760_conf
$ sudo cp k760_conf /usr/local/bin/
수동으로 설정 변경
아래와 같은 스크립트를 만들어 root 권한으로 실행하면 펑션키가 기본으로 동작하게 된다. 단, 장치를 다시 연결하면 설정이 초기화 되기 때문에 매번 다시 실행해줘야 한다.
#!/bin/bash
found=0
hidraw_name=
for x in /sys/class/hidraw/hidraw*; do
for y in $x/device/input/input*; do
found=$(cat $y/name | grep "Logitech K760" | wc --lines)
if [ $found -gt 0 ]; then
break;
fi;
done;
if [ $found -gt 0 ]; then
hidraw_name=$(echo $x | sed -e 's/\/sys\/class\/hidraw\//\/dev\//')
break;
fi;
done;
if [ "$hidraw_name" != "" ]; then
echo "/usr/local/bin/k760_conf -d $hidraw_name -f off"
/usr/local/bin/k760_conf -d $hidraw_name -f off
fi;
장치 연결시 자동으로 설정
udev rule을 이용해서 K760이 연결되면 자동으로 k760_conf를 실행하게 만든다.
/etc/bluetooth/input.conf에서 UserspaceHID 가 true/false 에 따라서 설정 방법이 조금 달라진다
UserspaceHID==true
k760_udev_userland.sh
아래와 같은 내용으로 /usr/local/bin/k760_udev_userland.sh 파일을 만든다.
#!/bin/bash
LOGFILE=/tmp/logfile_k760sh.log
echo "RUN: at `date` by `whoami` act=$ACTION param=$1 DEVPATH=$DEVPATH DEVNAME=$DEVNAME" >> ${LOGFILE}
if [ "$ACTION" == "add" ];
then
for inp in /sys/class/hidraw/hidraw$1/device/input/*; do
model_name=`cat $inp/name`
if [ "$model_name" == "Logitech K760 Keyboard" ]; then
echo "CONF: /usr/local/bin/k760_conf -d /dev/hidraw$1 -f off" >> ${LOGFILE}
/usr/local/bin/k760_conf -d /dev/hidraw$1 -f off
break
fi
done
fi
실행 속성을 부여한다.
$ sudo chmod +x /usr/local/bin/k760_udev_userland.sh
udev rule 작성
아래와 같은 내용의 /etc/udev/rules.d/99-k760.rules 파일을 만든다.
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", RUN+="/usr/local/bin/k760_udev_userland.sh %n"
udev rule을 다시 읽는다.
$ sudo udevadm control --reload-rules
K760을 다시 연결한다.
UserspaceHID=false
k760_udev.sh
아래와 같은 내용으로 /usr/local/bin/k760_udev.sh 파일을 만든다.
#!/bin/bash
LOGFILE=/tmp/logfile_k760sh.log
echo "RUN: at `date` by `whoami` act=$ACTION param=$1 DEVPATH=$DEVPATH DEVNAME=$DEVNAME" >> ${LOGFILE}
if [ "$ACTION" == "add" ];
then
echo "CONF: /usr/local/bin/k760_conf -d $DEVNAME -f off" >> ${LOGFILE}
/usr/local/bin/k760_conf -d $DEVNAME -f off
fi
실행 속성을 부여한다.
$ sudo chmod +x /usr/local/bin/k760_udev.sh
udev rule 작성
아래와 같은 내용의 /etc/udev/rules.d/99-k760.rules 파일을 만든다.
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idProduct}=="0029", ATTRS{idVendor}=="8087", RUN+="/usr/local/bin/k760_udev.sh %p"
udev rule을 다시 읽는다.
$ sudo udevadm control --reload-rules
K760을 다시 연결한다.
Fn+F4, Fn+F6, Fn+F7 키 보정
위 작업을 끝낸 후 Fn+F4, Fn+F6, Fn+F7 키를 눌러보면 제대로 동작하지 않는다(Fn+F5는 XF86Home 키로 동작한다). Fn+F4, Fn+F6, Fn+F7의 scancode를 적당한 keycode로 바꿔줘야 한다.
그리고 [alt][command][space][command][alt] 배열을 PC계열 키보드처럼 [win][alt][space][alt][menu] 로 바꿔준다.
udev hwdb를 이용하기 위해 아래와 같은 내용으로 /etc/udev/hwdb.d/99-k760.hwdb 파일을 만든다.
# Logitech K760 map:
# Fn + F4 -> scale
# Fn + F6 -> brightnessdown
# Fn + F7 -> birghtnessup
# LWin -> LAlt
# LAlt -> LWin
# RWin -> RAlt
# RAlt -> Menu
evdev:input:b0005v046DpB316*
KEYBOARD_KEY_700e0=scale
KEYBOARD_KEY_70047=brightnessdown
KEYBOARD_KEY_70048=brightnessup
KEYBOARD_KEY_700e3=leftalt
KEYBOARD_KEY_700e2=leftmeta
KEYBOARD_KEY_700e7=rightalt
KEYBOARD_KEY_700e6=compose
파일이 만들어졌으면 hwdb를 갱신한다.
$ sudo systemd-hwdb update
$ sudo udevadm trigger
적용 후 잠시 기다리면 Fn-F4, Fn-F7, Fn-F8이 원하는 키로 동작한다.