.inputrc의 TAB 및 Ci에 대한 별도의 매핑

.inputrc의 TAB 및 Ci에 대한 별도의 매핑

내가 시도한 바에 따르면 .inputrc의 "TAB"과 "Ci"는 하나에 바인딩하는 것이 다른 것에 바인딩되는 것과 같은 의미인 것 같습니다. 원래는 똑같았고 이 동작은 옛날부터 상속되었지만 요즘은 터미널 에뮬레이터를 제외하고 모든 X 응용 프로그램이 Ci와 TAB 프레스의 차이를 만든다는 것을 알고 있습니다.

그러면 TAB 키를 누를 때 터미널 명령(예: "완료")을 실행하고 "Ci"를 누를 때 다른 명령을 실행할 수 있는 방법이 있습니까?

(원래 바인딩이 아닌 다른 방법으로 보내고 싶은 Cm 및 ENTER, Cz, Cd 및 모든 제어 시퀀스에도 동일한 질문이 적용되며 이러한 귀중한 키 바인딩에 내 명령을 적용합니다)

그런데 키 누르기부터 쉘 해석까지의 과정을 조금 설명해 주시면 이해하는 데 도움이 될 것 같습니다. 지금은 키보드 이벤트가 Xmodmap에 의해 변환된 다음 .inputrc에 의해 변환되고 결과가 셸 또는 이와 유사한 것에 의해 해석된다는 것을 이해했습니다.

답변1

xmodmap와 사이에는 직접적인 연관성이 없습니다 .inputrc.

터미널을 통해 전송된 키를 수정하는 방법은 터미널 에뮬레이터에 따라 몇 가지가 있습니다. 그 중 일부는 다음과 같습니다

  • X 키보드 구성 수정(xkb)
  • 특정 이벤트에 대해 전송된 키코드 수정(xmodmap)
  • translationsxterm에서 사용하는 리소스 와 같은 터미널 관련 항목입니다 .

그러나 일반적인 상황에서는 거의 모든 터미널이 그렇게 설정되어 있기 때문에 문자를 control/I보냅니다 .tab

를 사용하면 xkb(원칙적으로) 키보드의 기능을 변경할 수 있습니다. 그러면 X 응용 프로그램은 키 누르기 및 떼기 이벤트를 감지하고 이를 키 기호로 변환합니다. xev이벤트를 표시하는 데 유용합니다. X에서 실행되는 터미널 에뮬레이터는 X 라이브러리 호출을 사용하여 문자로 변환할 수 있는 일련의 이벤트를 가져옵니다. tab이 경우 A 는 또 다른 문자일 뿐입니다.

xmodmap그 과정에서 의 역할은 X 키보드 구성을 임시로 변경하는 것입니다.

을 사용하는 경우 xterm리소스 translations는 많은 구성 가능성을 제공합니다. 그것이 특징이다.X 툴킷, xterm의 내장 동작과 다양한 키 조합을 연결할 수 있습니다. 기본 키 바인딩은 다음에 나열되어 있습니다.수동. 해당 바인딩을 재정의하거나 추가할 수 있습니다. 정보를 설정할 수 있는 위치가 여러 군데 있습니다( $HOME/.Xdefaults예를 들어 정보가 쉽게 복잡해질 수 있음). 예를 들어XAPPLRESDIR사용자 정의된 앱 기본값 파일이 포함된 사용자 디렉터리를 가리키도록 하는 환경 변수입니다. 이름이 지정된 항목에서 XTerm다음 결과를 변경하기 위해 이것을 넣을 수 있습니다 ctrl/I.

*VT100*translations:    #override \n\ 
    Ctrl ~Shift<Key>I:string("??")

tab에는 고유한 특수 키 기호가 있으므로 이 변환의 영향을 받지 않습니다.

관련 정보