![X가 없는 다기능 CapsLock](https://linux55.com/image/45212/X%EA%B0%80%20%EC%97%86%EB%8A%94%20%EB%8B%A4%EA%B8%B0%EB%8A%A5%20CapsLock.png)
단독으로 눌렀을 때와 다른 키와 함께 눌렀을 때 CapsLock를 다시 매핑하고 싶습니다.EscCtrlX를 사용하지 마세요.
이는 이전 질문과 유사합니다(CapsLock을 시스템 전체 이스케이프 및 컨트롤로 다시 매핑) 그러나 저는 구체적으로 X가 없는 솔루션을 찾고 있습니다.
답변1
Linux 콘솔 키맵
altf1가상 터미널( + - + ) alt의 키맵을 변경하려면 f6loadkeys를 사용하세요. 이는 가상 터미널 로그인에만 영향을 미치며변하지 않을 것이다X 또는 X 터미널 애플리케이션의 키맵(예:Xterm또는UrxVT.
loadkeys 명령은 루트로 실행해야 합니다. 그렇지 않으면 다음 오류가 발생합니다:Couldn't get a file descriptor referring to the console
교환하려면 escape다음 caps_lock을 수행해야 합니다.
# echo keycode 58 = Escape | loadkeys -
# echo keycode 1 = Caps_Lock | loadkeys -
또 다른 옵션은 + Caps_Lock로 다시 매핑하는 것입니다.shiftScroll Lock
# echo keycode 69 = Num_Lock Caps_Lock | loadkeys -
키맵의 형식은 약간 혼란스러울 수 있습니다. 어떤 수정자를 누르는지에 따라 가중치 시스템을 사용합니다. (Ctrl, Alt, Shift 등). 키보드 매핑 매뉴얼 페이지의 예입니다.
keycode 30 = a A VoidSymbol VoidSymbol VoidSymbol .....
및 a를 누르면 shiftShift 키의 가중치가 1이므로 두 번째 열에서 작업을 수행합니다. control반면에 Shift의 가중치는 4입니다.
이로 인해 수정자를 매핑할 때 문제가 발생할 수 있습니다. 예를 들어, 키 인코딩이 control작동하는 첫 번째이자 유일한 열인 경우입니다. 이제 누른 이후의 가중치는 4이고 키를 놓으면 control해제된 것으로 표시되지 않습니다. 이제 5번째 열 작업이 수행될 예정이지만 작업이 아직 정의되지 않았기 때문입니다. 따라서 control키는 절대 공개되지 않습니다.
이것이 대부분의 수정자에 할당된 다른 작업이 없는 이유입니다. 키맵에 하나의 작업만 정의된 경우 해당 작업이 모든 작업에 적용됩니다.
이 문제를 해결하려고 노력했지만 일관성 없는 결과만 얻었습니다. 수정자가 해제되는 경우도 있고 해제되지 않는 경우도 있습니다.
밝히다
Caps Lock을 변경하여 탈출 또는 제어 기능으로 사용하는 것이 이 방법에 적합합니다. 둘 다에 매핑하는 것은 그다지 많지 않습니다.
중요한
키맵을 망친 경우 다음을 수행하여 재설정하세요.
# loadkeys -d
인용하다
답변2
이것버튼 모듈프로그램은 장치에서 키보드 이벤트를 읽고 /dev/input/eventX
장치를 사용하여 커널에 직접 다시 주입합니다 /dev/uinput
. 동작은 caps lock특별합니다. 다른 키를 건드리지 않고 키를 눌렀다가 떼면 Esc키가 커널로 전송됩니다 . 다른 키를 누른 상태에서 누르면 caps lock(왼쪽) 키를 누르는 것과 같습니다.control
프로그램이 지정된 이벤트 장치를 제어하기 때문에 테스트 중에도 SSH 등을 이용하여 컴퓨터에 접속할 수 있어 매우 편리합니다. 예를 들어, 프로그램을 일시 중지하면(예: ctrl-z 사용) 더 이상 키보드를 사용할 수 없게 됩니다(키보드는 키보드를 완전히 제어할 수 있으며 더 이상 활성화되지 않습니다).