emacs 및 gnome 터미널에 키를 전달하는 방법은 무엇입니까?

emacs 및 gnome 터미널에 키를 전달하는 방법은 무엇입니까?

Alt+6을 사용하여 6번째 그놈 터미널 탭으로 전환하고 싶습니다. 하지만 터미널 탭 아래의 emacs에 있으면 키가 emacs로 전달되고 터미널에서 작동하지 않습니다.

키가 먼저 터미널에 의해 캡처된 다음 터미널에 의해 emacs로 전달됩니까?

emacs나 gnome 터미널 키를 변경하고 싶지 않습니다. Emacs에서는 작동하지 않지만 gnome 터미널에서는 작동하도록 Alt+6 앞에 이스케이프 수정자 키를 추가할 수 있는 방법이 있습니까?

감사해요!

답변1

Ubuntu Utopic 이전에 출시된 이전 버전의 gnome-terminal은 "자동" "이중" 동작을 구현하는 데 사용되었습니다. 탭이 6개 이상인 경우 Alt+6을 누르면 6번째 탭으로 전환됩니다. 그렇지 않으면 내부에서 실행 중인 모든 응용 프로그램(예: emacs)에 키 입력이 전송됩니다.

최신 버전(Ubuntu Vivid로 시작)에는 더 이상 이러한 자동 동작이 없습니다. Alt+1 – Alt+9는 기본적으로 탭을 전환하도록 바인딩되어 있으므로 열려 있는 탭이 충분하지 않은 경우 아무 작업도 수행하지 마십시오. Edit->Preferences->Shortcuts에서 이러한 작업을 정의 해제하거나 이러한 작업을 원하는 다른 키에 다시 할당할 수 있습니다. 이 경우 Alt+6이 응용 프로그램(emacs)으로 전송됩니다.

또는 Esc 6을 누르는 데 익숙해질 수도 있습니다.

키가 먼저 터미널에 의해 캡처된 다음 터미널에 의해 emacs로 전달됩니까?

예. 터미널은 내부에서 실행 중인 애플리케이션이 "not" 이벤트를 처리할지 여부를 알 수 없으며 이벤트가 전송된 후에도 이를 알아낼 방법이 없습니다. 따라서 반대 접근 방식(emacs가 이에 대해 조치를 취하는지 살펴보고, 그렇지 않은 경우 gnome 터미널 스위치 탭을 살펴보겠습니다)은 의도적으로 작동하지 않습니다.

이 디자인의 유일한 예외는 마우스 이벤트입니다. 응용 프로그램이 마우스 이벤트에 관심이 있는 경우 터미널에 미리 신호를 보내야 합니다. 그렇다면 gnome-terminal은 이벤트를 보내고, 그렇지 않으면 자체적으로 처리합니다.

편집: 마우스 이벤트가 유일한 예외는 아닙니다 :) 방금 나에게 발생한 또 다른 문제는 터미널이 대체 화면(스크롤 막대가 없는 화면, 대부분의 전체 화면 앱과 마찬가지로)으로 전환할 때 스크롤되는 키 누르기 효과입니다. 막대(예: Shift+PageUp) )도 이스케이프 시퀀스로 애플리케이션에 전송됩니다.

관련 정보