터미널에서 Esc 키를 일시적으로 비활성화하는 방법은 무엇입니까?

터미널에서 Esc 키를 일시적으로 비활성화하는 방법은 무엇입니까?

예를 들어 키보드 입력을 구문 분석 중이지만 실제 키 누르기 와 다른 키 누르기에 의해 생성된 제어 시퀀스의 첫 번째 이스케이프 문자(바이트)를 read -n 1구별하는 방법을 찾지 못했습니다 . , ... EscapeLEFTRIGHT

Escape동안에는 키가 필요하지 않으므로 read키를 비활성화하면 문제가 해결됩니다. Escape현지화된 방식으로 키를 비활성화하거나 재할당하는 방법이 있습니까 ? ...현재 터미널과 현재 스크립트에만 적용됩니다.

답변1

이 작업은 터미널 내에서 수행할 수 없습니다. 불행하게도 동일한 ESC문자가 키보드의 특정 키로 전송되는 문자와 다중 문자 시퀀스의 접두사로 사용될 수 있습니다. 양측의 역사적 선례는 무시하기에는 너무 강력합니다.

애플리케이션은 개별적으로 의미 할당을 피 Esc하거나 지연을 설정합니다(일반적으로 1초). 예를 들어, vim에서는 삽입 모드로 들어가서 ESC O D빠르게 누르는 것은 키를 누르는 것과 같습니다 Left. 그러나 를 누른 후 너무 오래 기다리면 Esc일반 모드로 전환되어 현재 모드 위에 한 줄을 삽입하게 됩니다( O일반 모드 명령).

Esc키 입력이 () 문자가 아닌 일부 이스케이프 시퀀스를 보내도록 터미널 에뮬레이터를 재구성할 수 있습니다 . 그러나 키를 집중적으로 사용하는 응용 프로그램(예: vi(m))을 실행하는 경우 이는 비생산적일 수 있습니다.ESC\eESC

답변2

Mac을 사용하고 계시다면 다음 도구 쌍을 진심으로 추천해 드립니다.

  • PC 키보드 해커, 키를 다른 것으로 다시 매핑하는 유틸리티 caps lock,
  • 그리고키 재매핑 4MacBook, 동일한 해커의 또 다른 (보다 정교한) 유틸리티는 거의 모든 것을 다시 매핑할 수 있습니다.다른키 (즉, 아님 caps lock)

caps lock결합하여 에 다시 매핑 Esc하고 실제 Esc키를 완전히 비활성화했습니다(지금까지는 "여기"에 있으며 다시 매핑한 Caps Lock 키를 사용하는 것이 더 좋습니다.)

관련 정보