콘솔에서 emacs24를 실행하면 Fn 키가 C-SPC
두 Lenovo 노트북 모두에 선택 표시( 와 동일)를 설정합니다. 화면 밝기, 볼륨 등을 변경하려면 Fn 키가 필요하기 때문에 이는 매우 미친 짓입니다.
Emacs에서 작동하지 않도록 Fn 키를 바인딩 해제하는 방법은 무엇입니까?
편집하다:
emacs를 누르면 C-h k Fn
다음을 누르는 것과 정확히 동일한 출력을 얻습니다 C-h k C-SPC
.
C-@ runs the command set-mark-command, which is an interactive compiledLisp function.
It is bound to C-@, C-SPC.
(set-mark-command ARG)
...
acpi_listen을 실행하고 Fn 키를 누르면 다음과 같은 출력이 표시됩니다.
^@
C-SPC
이는 또는 (Ctrl+AltGr+2)를 누르면 C-@
acpi_listen에서 얻는 출력과 정확히 동일합니다 . 즉, 모두 동일한 acpi 이벤트에 등록되어 있습니다.
이것을 발견한 후 설정을 해제해 보았습니다 C-@
. 내가 작동하게 한 유일한 방법은 다음과 같습니다.
(global-set-key (kbd "\C-@") 'ignore)
이:
(global-set-key (kbd "\^@") 'ignore)
두 경우 모두 C-SPC
재설정을 시도했습니다 C-SPC
.
(global-set-key (kbd "C-SPC") 'set-mark-command)
그러나 이것은 작동하지 않습니다.
그런 다음 질문을 다음과 같이 구체화할 수 있습니다.
C-SPC
및가 동일한 acpi 이벤트에 등록된 경우 Fn
emacs에 이를 구별하도록 지시할 수 있습니까?
(이것은 콘솔에서만 발생하는 문제입니다. Emacs는 내 X 시스템에서 Fn 키를 인식하지 못합니다...)
답변1
dumpkeys, loadkeys 및 showkey를 사용하는 이 솔루션은 Linux 가상 콘솔에서 실행되는 프로그램에 의해 기능 키가 예상치 못한 방식으로 해석되는 다른 인스턴스에 적용될 수 있습니다.
다음 명령을 실행하여 문제를 일으키는 키 또는 키 조합의 키 코드를 찾으십시오.
$ sudo showkey
...그리고 키를 누릅니다. 제 경우에는 클릭 Fn출력이 143입니다.
Fn콘솔의 프로그램이 이를 다른 것으로 해석 하지 못하게 하려면 다음을 /etc/rc.local에 추가하십시오:
(dumpkeys | grep keymaps; echo "keycode 143 =") | loadkeys
143은 당연히 해당 키의 키코드로 대체되어야 합니다. 또한 Fn물결표를 출력하는 +(볼륨 낮추기)에 문제가 있었기 LeftArrow때문에 해당 조합에 대한 코드도 얻었고 /etc/rc.local에 다른 줄을 추가했습니다.
Fn이는 기능의 정상적인 동작(볼륨, 밝기 변경 등)을 방해하지 않으며 단지 emacs와 같은 프로그램에서 기능 키가 다른 것으로 해석되는 것을 방지한다는 점에 유의하십시오 .