시스템 전체를 탈출 및 제어하기 위해 CapsLock 재 맵핑


18

CapsLock 버튼을 단독으로 누르면 이스케이프 키로 작동하고 다른 키로 누르면 제어 키로 작동하도록 CapsLock 키 시스템을 넓게 다시 매핑 할 수 있습니까?


5
이것은 매우 어려울 것 같습니다. 예를 들어, 어떤 키를 눌렀는지 알 수 없으므로 키 다운 이벤트를 생성 할 수 없습니다. 다른 키를 누르지 않은 상태에서 손을 떼면 탈출 (Escape)이고 그렇지 않은 경우에는 제어 (Control)였습니다.
cjm

답변:


16

xcape 라는 매우 좋은 솔루션을 찾았습니다 . 읽어보기에서 :

xcape는 데몬으로 실행되며 Control 키를 가로 챕니다. Control 키를 눌렀다가 놓으면 Esc 키 이벤트가 생성됩니다.

Caps Lock 키를 Control에 다시 매핑 한 경우 더 의미가 있습니다. 이 프로그램의 이후 버전에서는 이러한 매핑을 수행 할 수 있지만 지금은이 작업을 수행해야합니다.


나는 이것을하기 위해 해키 스크립트를 만들었다 : github.com/cmatheson/super-caps
cam

6

Vim을보다 편안하게 입력 할 수 있도록 Caps를 Escape로 매핑했습니다. 나는 이것을 사용 xmodmap했다 ~/.Xmodmap.

clear Lock
keycode 0x42 = Escape

적용하려면 : xmodmap ~/.Xmodmap. ~ / .bash_profile과 같은 파일에 이것을 넣을 수 있습니다 (로그인 관리자를 사용하지 않기 때문에 ~ / .xinitrc에 넣었습니다.

CapsLock + [다른 키]를 매핑하려면 사용을 고려하십시오 xbindkeys.


4

시스템 전체에서 키를 다시 매핑하는 Linux 전용 솔루션은 간단한 udev 규칙을 작성하는 것입니다. X에 의존하지 않고 터미널이나 앱에서 작동하며 단순히 두 개의 파일을 복사하여 최신 Linux 설치간에 이식 가능합니다.

커널에 키를 다시 매핑하도록 지시하는 udev 규칙과 필요한 실제 매핑을 포함하는 2 개의 파일을 작성해야합니다.

이 방법을 사용하여 전체 키보드를 다시 가져 왔습니다. 어쩌면 코드가 영감으로 유용 할 수 있습니다 http://git.adirat.com/carpalx-keyboard


링크가 죽었습니다. 업데이트 하시겠습니까? 감사!
qed

나는 지연 죄송합니다, 그것을 업데이트
gimmesudo

Bitbucket은 "이 저장소에 액세스 할 수 없습니다"라고 말합니다. 다시 공개 할 수 있습니까? 감사!
Tianyi Cui

@TianyiCui 지금 링크를 확인하십시오
gimmesudo

1
연결이 끊어 졌거나 차단되었습니다. 실제 파일을 답변에 넣을 수 있습니까?
미로


1

AskUbuntu에 대해 다른 말로 표현 된 질문에 대해 을 얻었지만 내 시스템에서 작동하도록 약간 수정해야했습니다.

Louis와 Sergiy의 의견에 따르면 Ubuntu 16.04 (Xenial)에서 나를 위해 일하고있는이 솔루션을 생각해 냈고 사용하는 다른 Linux 시스템으로 가져올 것입니다.

xcape를 설치 하고 .profile홈 디렉토리의 파일에 다음 코드 줄을 넣었습니다 .

업데이트 된 방법 :

다양한 디스플레이 관리자 (gdm / kdm / sddm / etc)가 이상한 방식으로 동작하고 setxbmap애프터 일시 중지 / 재개 또는 잠금 / 잠금 해제를 재설정하기 때문에 옵션을 상속하고받지 않는 방식으로 옵션을 설정하는 방법을 발견했습니다. 항상 리셋하십시오. 일시 중단하고 재개하기 때문에 xcape아래의 새 스크립트에서 해결되는 많은 실행 사본을 얻지 않도록해야했습니다 .

먼저 키보드 설정을 수정 sudo gedit /etc/default/keyboard하고 설정 XKBOPTIONS="ctrl:nocaps"한 다음 ~/.xprofile아래 한 줄을 입력하십시오.

ps aux | grep -i '[x]cape' && killall -9 xcape; hash xcape 2>&1 >/dev/null && xcape -e 'Control_L=Escape' -t 100 &

스크립트의 다양한 섹션이 시간 / 문제를 줄이고 로그인이 멈추는 것을 방지하기를 바랍니다. 먼저 실행중인 인스턴스가 있는지 확인하고 종료합니다. xcapeCtrl 키를 Esc에 매핑하는 것이 유일한 방법이기 때문에 안전합니다.이 hash부분은 xcape 모든 시작 때문에 로그인을 시도 할 때 시스템 이 설치되지 않았는지 확인합니다. 스크립트가 깨끗하게 종료 될 것으로 예상됩니다.

옛날 방식 :

setxkbmap -option 'caps:ctrl_modifier'; xcape -e '#66=Escape'

세르지 :

Ubuntu 14.04의 시스템 설정에 키보드 레이아웃이 없으므로 gnome-tweak-tool을 사용하여 Caps Lock을 Ctrl에 매핑했습니다. 그런 다음 xcape -e 'Control_L = Escape'가 작동하지 않았지만 xcape -d를 사용한 후 Caps Lock이 키 코드 66을 생성하고 각각 xcape -e '# 66 = Escape'를 다시 매핑 한 것을 발견했습니다. – Sergiy Byelozyorov 9 월 4 일 '14 : 10 : 08

루이스 :

이 블로그 게시물에 따라 xcape 만 사용하여이 작업을 수행 할 수 있습니다. setxkbmap -option 'caps : ctrl_modifier'; xcape -e 'Caps_Lock = 이스케이프'setxkbmap-옵션 'caps : ctrl_modifier'; xcape -e 'Caps_Lock = 탈출; Control_L = 탈출; Control_R = 탈출'– Louis Simoneau 8 월 4 '15시 10:06

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.