Linux에는 좋은 키 재매핑 솔루션이 부족합니다. 만족스러운 결과를 얻으려면 다양한 도구(예: xcape, xmodmap)를 사용해야 하며 최종 결과는 종종 지정된 환경(X11)에 연결됩니다. keyd는 커널 수준 입력 기본 요소(evdev, uinput)를 사용하여 키를 다시 매핑하는 유연한 시스템 전체 데몬을 제공하여 이 문제를 해결하려고 합니다.
구성 형식은 첫 번째 릴리스 이후 여러 번 반복되었습니다. v1에서 구성을 마이그레이션하는 경우 매뉴얼 페이지를 다시 읽는 것이 가장 좋습니다.
참조: 변경 로그.
keyd에는 전통적으로 QMK와 같은 사용자 정의 키보드 펌웨어에서만 볼 수 있는 여러 가지 고유한 기능이 있으며 일부는 keyd 고유의 기능입니다.
더 흥미로운 것 중 일부는 다음과 같습니다.
C-1
다시 매핑할 수 있기를 원합니다.참고: master는 개발 분기 역할을 하며 릴리스 사이에 문제가 발생할 수 있습니다. 릴리스에는 태그가 지정되어 있으며 안정적인 것으로 간주되어야 합니다.
git clone https://github.com/rvaiya/keyd
cd keyd
make && sudo make install
sudo systemctl enable keyd && sudo systemctl start keyd
keyd 설치 및 시작(예: sudo systemctl enable keyd
)
/etc/keyd/default.conf
에 다음을 입력하세요.
[ids]
*
[main]
# Maps capslock to escape when pressed and control when held.
capslock = overload(control, esc)
# Remaps the escape key to capslock
esc = capslock
키 이름은 keyd monitor
명령을 사용하여 얻을 수 있습니다. keyd가 실행되는 동안 이 명령의 출력은 keyd의 출력과 일치합니다. 원래 입력 이벤트는 먼저 keyd를 중지한 다음 명령을 실행하여 볼 수 있습니다. 자세한 내용은 매뉴얼 페이지를 참조하십시오.
sudo keyd reload
실행하여 구성 세트를 다시 로드합니다.
보다 포괄적인 설명은 매뉴얼 페이지( man keyd
)를 참조하십시오.
구성 오류는 로그 출력에 표시되며 시스템의 서비스 관리자(예: sudo journalctl -eu keyd
)를 사용하여 일반적인 방법으로 액세스할 수 있습니다.
참고 : 잘못된 구성 파일로 인해 컴퓨터를 사용할 수 없게 될 수 있습니다. 이 위치에 있는 경우 특수 키 시퀀스인 backspace+escape+enter
누르면 keyd가 종료됩니다.
일부 마우스(예: Logitech MX Master)는 키를 방출할 수 있으므로 결과적으로 와일드카드 ID와 일치합니다. 이를 명시적으로 블랙리스트에 추가해야 할 수도 있습니다.
keyd 그룹에 자신을 추가하십시오.
usermod -aG keyd <user>
~/.config/keyd/app.conf
채우기:
예
[alacritty]
alt.] = macro(C-g n)
alt.[ = macro(C-g p)
[chromium]
alt.[ = C-S-tab
alt.] = macro(C-tab)
달리다:
keyd-application-mapper
Gnome을 실행하지 않는 한 디스플레이 서버 초기화 로직(예: ~/.xinitrc) 어딘가에 keyd-application-mapper -d
넣기를 원할 것입니다.
자세한 내용은 매뉴얼 페이지를 참조하십시오.
Giorgi Chavchanidze의 도움으로 usb-gadget을 통한 단일 보드 컴퓨터(SBC)에 대한 실험적 지원이 추가되었습니다.
자세한 내용은 usb-gadget.md를 참조하세요.
일부 배포판에 대한 타사 패키지도 존재합니다. 목록에 귀하의 제품을 추가하려면 PR을 제출하십시오. 이는 커뮤니티 구성원이 친절하게 관리하며 이에 대해 개인적인 책임을 지지 않습니다.
@jirutka가 관리하는 keyd 패키지입니다.
Arch Linux 패키지는 Arch 패키지 작성자가 관리합니다.
실험적인 keyd
및 keyd-application-mapper
패키지는 작업 진행 중인 데비안 패키지 저장소의 CI 빌드 아티팩트에서 찾을 수 있습니다:
데비안화 노력을 검토하고 업로드를 후원하려는 데비안 개발자는 @rhansen에 문의하는 것이 좋습니다(Debian ITP 버그도 참조).
@alternateved가 유지 관리하는 COPR 패키지입니다.
@bubbleguuum이 관리하는 opensuse 패키지입니다.
sudo zypper in keyd
사용하면 쉽게 설치할 수 있습니다.
실험적인 keyd
및 keyd-application-mapper
패키지는 ppa:keyd-team/ppa
아카이브에서 찾을 수 있습니다.
이 PPA 유지에 도움을 주고 싶다면 @rhansen에 문의하세요.
[ids]
*
[main]
leftshift = oneshot(shift)
capslock = overload(symbols, esc)
[symbols]
d = ~
f = /
...
많은 사용자는 아마도 keyd를 최대한 활용하는 데 관심이 없을 것입니다. 간단한 삶의 질 향상을 원하는 사람들에게는 다음 구성을 권장할 수 있습니다.
[ids]
*
[main]
shift = oneshot(shift)
meta = oneshot(meta)
control = oneshot(control)
leftalt = oneshot(alt)
rightalt = oneshot(altgr)
capslock = overload(control, esc)
insert = S-insert
이렇게 하면 Capslock 키가 Esc(누른 경우) 및 제어(누르고 있는 경우) 기능을 모두 수행하고 모든 수정자를 '원샷' 키로 다시 매핑합니다. 따라서 문자 A를 생성하려면 이제 키를 누르는 대신 Shift 키를 누른 다음 a를 누르기만 하면 됩니다. 마지막으로 insert를 S-insert로 다시 매핑합니다(X11에 붙여넣기).
xmodmap과 친구들은 기능이 제한된 디스플레이 서버 수준 도구입니다. keyd는 레이어링 및 원샷 수정자와 같은 고급 기능을 구현하는 시스템 수준 솔루션입니다. 일부 X 도구는 유사한 기능을 제공하지만 keyd만큼 유연한 도구는 없습니다.
keyd는 점점 늘어나는 키보드 컬렉션에서 다양한 레이아웃을 쉽게 실험할 수 있도록 몇 년 전에 작성되었습니다. 당시 kmonad는 존재하지 않았으며 QMK(keyd에 영감을 주었음)와 같은 사용자 정의 키보드 펌웨어가 비슷한 기능을 얻을 수 있는 유일한 방법이었습니다. keyd를 출판한 후 kmonad를 알게 되었습니다. Kmonad는 비슷한 목표를 가진 훌륭한 프로젝트이지만 접근 방식이 다르고 디자인 철학도 다릅니다.
특히 keyd는 성능과 단순성을 염두에 두고 완전히 C로 작성되었으며 kmonad(Haskell에서 확장 가능)만큼 구성 가능하지는 않을 것입니다. 그렇긴 하지만, (저자의 견해로는) C의 2000줄 미만으로 가장 가치 있는 기능을 제공하는 동시에 언어에 구애받지 않는 간단한 구성 형식을 제공합니다.
뭔가 빠졌다고 생각하거나 버그를 발견했다면 github에 문제를 제출해 주세요. keyd는 특정 기능을 의도적으로 생략하는(예: 루트로 임의의 실행 파일 실행) 최소한의(그러나 건전한) 디자인 철학을 가지고 있습니다. QMK와 같은 맞춤형 키보드 펌웨어에 이미 존재하는 것들은 포함하기에 좋은 후보입니다.
기여를 참조하세요. IRC 채널: oftc의 #keyd