대화 상자 실행 중에 ESC를 캡처/무시하는 방법은 무엇입니까?

대화 상자 실행 중에 ESC를 캡처/무시하는 방법은 무엇입니까?

현재 대화 상자 명령을 가지고 놀고 있는데 Shift-Tab을 누르거나 ESC를 누르면 실행이 즉시 종료되고 명령 프롬프트로 돌아갑니다. 이는 신호가 아니기 때문에 트랩하여 버릴 수 없습니다. , 그렇다면 대화 상자를 종료할 수 있는 유일한 방법이 내가 설정한 위젯/상자를 통해서만 이 이스케이프를 "트랩"/캡처하고 폐기할 수 있습니까?

참고: Shift와 Tab을 조합하면 이스케이프가 발생하는 이유를 이미 조사했습니다. 이는 단일 키 입력이 아니며 예상되는 입력이 단일 키보드 입력인 경우에만 작동하는 솔루션입니다. 매뉴얼 페이지 이외의 내용은 부족한 것 같습니다.

답변1

Shift+는 Tab일반적으로 사용할 가능성이 있는 터미널의 백탭입니다.

매뉴얼 페이지 섹션키 바인딩대화 상자의 키 바인딩이 가능하다는 설명열쇠를 저주하다

다음에서 파생된 이름 중 하나일 수 있습니다.curses.h, 예: "돕다" 에서 "KEY_HELP".

그리고 섹션에서내장 바인딩설명한다.--trace옵션을 사용하여 내장 바인딩을 표시할 수 있습니다.

이 매뉴얼 페이지에는 각 위젯에 대한 키 바인딩이 나열되어 있지 않습니다. 자세한 정보는 다음을 실행하여 얻을 수 있기 때문입니다.dialog.설정한 경우--trace옵션,dialog등록된 각 위젯에 대한 키 바인딩 정보를 작성합니다.

예를 들어 바인딩 방법을 보여줍니다.그리고비타브(curses에서 파생된 이름 KEY_BTAB):

          bindkey formfield TAB  form_NEXT
          bindkey formbox   TAB  form_NEXT
          bindkey formfield BTAB form_prev
          bindkey formbox   BTAB form_prev

KEY_BTAB(보다잡아매뉴얼 페이지)는백탭열쇠.

~ 안에용어 정보, 이름은 다음과 같습니다 kcbt.

     key_btab                    kcbt      kB     back-tab key

다음을 사용하여 터미널 설명을 볼 수 있습니다.infocmp.

TERM을 정의하지 않는 터미널 설명으로 설정한 경우 kcbt(보통이스케이프 시퀀스),curses는 이를 인식하지 못하고 ASCII 이스케이프 문자(대화 상자)를 사용하여 개별 바이트를 응용 프로그램(대화 상자)에 전달합니다.ESC) 현재 위젯을 취소하려면 쉘 스크립트에서 종료 상태를 검사하여 이를 확인할 수 있습니다.환경섹션에는 종료 상태를 사용자 정의하는 데 사용할 수 있는 환경 변수가 설명되어 있습니다.

종료 코드를 변경하려면 다음 변수 중 하나를 정의하십시오. 취소 (1),오류(-1),ESC(255),추가의(삼),돕다(2), --item-help 도움말(2) 또는좋아요 (0) 일반적으로 쉘 스크립트는 -1과 255를 구별할 수 없습니다.

관련 정보