현재 대화 상자 명령을 가지고 놀고 있는데 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를 구별할 수 없습니다.