intr을 del 키에 매핑

intr을 del 키에 매핑

SCO OpenServer 5.0.7에서 CentOS(Red Hat) Linux 5.9로 레거시 4GL 애플리케이션을 마이그레이션하려고 합니다.

사용자에게 "DEL to ABORT"를 누르라는 메시지가 표시되지만 실제로는 인터럽트 신호를 캡처하는 화면이 많이 있습니다.

stty intr일관성을 위해 키 에 매핑하는 방법은 무엇입니까 DEL? 인터럽트를 ansi 시퀀스에 매핑하는 것이 가능합니까?

PuTTY는 각 키에 대해 다음 제어 코드를 생성합니다.

DEL:^[[3~

BACKSPACE:^?

SHIFT BACKSPACE:^H

DELPuTTY에서 키를 구체적으로 다시 매핑하는 옵션을 찾을 수 없습니다 .

답변1

문자는 intr일련의 문자가 아닌 단일 문자여야 합니다.

Random832가 제안한 것처럼 사용하는 것이 screen아마도 최선의 선택일 것입니다. 그런 다음 모든 터미널에서 실행할 수 있습니다.

screen다른 터미널 내에서 터미널을 에뮬레이션합니다. 기본적으로 에뮬레이션하는 터미널은 PuTTY 처럼 계속 전송 ^?하지만 이를 변경할 수 있습니다.Backspace^[[3~Delete

예를 들어 다음을 포함하는 파일을 생성하는 경우:

bindkey -k kb stuff "\10"
bindkey -k kD stuff "\177"
termcap * '' 'kD=\177:kb=\10'
screen sh -c 'stty intr "^?" erase "^H"; exec my-legacy-app'

그리고 그것을 다음과 같이 사용하십시오screen -c /path/to/that-file

그것은 Backspace전송 ^HDelete전송 상황을 시뮬레이션합니다 ^?.

세 번째 줄은 애플리케이션이 $TERMCAP환경 변수를 통해 termcap을 사용하도록 지시하지만 이를 사용하는 사용자는 terminfo알림을 받지 못한다는 점에 유의하세요.

답변2

예상되는 문자는 레거시 터미널(예: VT220)에서 DEL로 표시된 키인 ^?입니다.

stty intr을 할 수 있나요 ^? 애플리케이션을 시작하기 전에 인터럽트 신호로 사용하도록 하세요. 하지만 Putty를 DEL로 보내도록 구성하는 방법이 있는지 모르겠습니다. 다른 터미널에서는 다시 매핑할 수 있다는 것을 알고 있습니다.

인쇄되는 메시지를 변경할 수는 없나요?

다른 터미널 에뮬레이터가 필요할 수도 있고 터미널과 애플리케이션 사이의 화면과 같은 추가 터미널 에뮬레이션 계층이 필요할 수도 있습니다.

편집: "기능 키 및 키보드"에서 "SCO" 옵션을 선택하면 DEL 키가 생성되어야 하며 ^?이를 stty intr에 매핑할 수 있습니다. 또한 백스페이스를 Control-H로 설정해야 합니다. 응용 프로그램은 SCO 운영 체제에서 실행되도록 설계된 응용 프로그램이므로 이 모드에서 Home, End 등의 키에 대한 문자 시퀀스를 생성할 것으로 예상할 수도 있습니다.

그러나 screen을 사용하면 더 통제된 환경이 생성되므로 @StephaneChazelas의 답변을 고려해야 합니다(즉, 모든 사람의 클라이언트 시스템에 퍼티를 구성할 필요가 없습니다).

관련 정보