tmux에서 F1-F4 키가 정상적으로 작동하도록 만드는 방법

tmux에서 F1-F4 키가 정상적으로 작동하도록 만드는 방법

일반 터미널에서는 F1- F4키가 를 생성 ^[[11~^[[12~^[[13~^[[14~하지만 tmux에서는 ^[OP^[OQ^[OR^[OS. 나는 그들이 tmux에서 동일하게 동작하기를 원하므로 tmux의 프로그램 바인딩에 대해 걱정할 필요가 없습니다. PuTTY가 없습니다.엑스텀 R6옵션이 열립니다.

다른 키 불일치를 피하기 위해 tmux에서 putty와 터미널 유형을 사용하고 있지만 putty-256color여전히 화살표 키를 다시 매핑해야 합니다.

구성예전에는 :

set -g default-terminal "putty-256color"
set -g terminal-overrides "putty*:smkx@:rmkx@:kLFT5=\eOD:kRIT5=\eOC:kUP5=\eOA:kDN5=\eOB:kf1=\e[11~:kf2=\e[12~:kf3=\e[13~:kf4=\e[14~"

내 구성의 나머지 부분은 관련이없는 화장품입니다. 4개의 기능 키를 원래 상태로 다시 매핑하려고 시도했지만 아직 성공하지 못한 것을 볼 수 있습니다.

내 키가 동일하게 유지되지 않는 이유에 대한 기본적인 내용이 누락된 것 같습니다.모든tmux 내부 및 외부 키(제외)접두사그러면 이런 문제는 발생하지 않을까요?

편집하다
내 문제는 여전히 존재하지만 나는예전에는기본적인 내용 누락: default-terminal터미널 유형 참조이내에tmux는 terminal-overrides내가 연결하는 용어의 유형을 나타냅니다.외부tmux. (네, 제가 바보가 된 것 같아요.)

이제 내 구성은 다음과 같습니다.

set -g default-terminal "screen-256color"
set -g terminal-overrides "putty*:kLFT5=\eOD:kRIT5=\eOC:kUP5=\eOA:kDN5=\eOB:kf1=\e[11~:kf2=\e[12~:kf3=\e[13~:kf4=\e[14~:smkx@:rmkx@"

F1- 여전히 외부 및 내부 tmux를 F4제공합니다 .^[[11~^[[12~^[[13~^[[14~^[OP^[OQ^[OR^[OS

답변1

매뉴얼 페이지는 불분명하지만 소스 코드를 읽는 것이 도움이 됩니다.

    /*
     * 이 파일의 이름은 약간 오해의 소지가 있습니다. 포함된 코드는 다음과 같습니다.
     * 키 코드는 다음으로 전송하기에 적합한 콘텐츠로 번역됩니다.
     * 애플리케이션은 창에서 실행됩니다(input.c가 다른 창에서 수행하는 것과 유사).
     * 방향 및 출력).
     */

귀하의 쉘은 주석에서 참조되는 애플리케이션입니다.

터미널 설명과 일치하지 않는 구성(외부 "실제" 터미널)을 사용할 수 있도록 terminal-overrides터미널 설명 읽기를 수정 하는 데 사용됩니다 .tmux

tmux키를 고유한 이스케이프 시퀀스 세트로 변환합니다( 의 이스케이프 시퀀스와 일치 screen하지만 옵션이 추가됨 xterm-keys). 이것상단에 댓글window.c다음과 같이 요약됩니다.

 * A pane has two buffers attached, these are filled and emptied by the main
 * server poll loop. Output data is received from pty's in screen format,
 * translated and returned as a series of escape sequences and strings via
 * input_parse (in input.c). Input data is received as key codes and written
 * directly via input_key.

이것매뉴얼 페이지설명하다

default-terminal 단말기
이 세션에서 생성된 새 창에 대한 기본 터미널 설정 - 기본값TERM환경 변수. tmux이것이 올바르게 작동 하려면~ 해야 하다로 설정'화면','티먹스'또는 그 파생상품.

제한의 이유는 input-keys.c원하는 방식으로 데이터를 사용자 정의할 수 없기 때문입니다.

답변2

기능키의 키코드는 단말기에서 정의한 키코드와 일치해야 합니다.

내 말은 F1 기능 키가 ^[[11~를 생성하는 경우 터미널 정의에 kf1=\E[11~이 있어야 한다는 것입니다(예: TERM=dtterm).

F1 기능 키가 ^[OP를 생성하는 경우 터미널 정의에는 kf1=\EOP(예: TERM=vt220)가 있어야 합니다.

다음 명령을 사용하여 터미널의 키 할당을 확인할 수 있습니다.정보 CMP주문하다.

관련 정보