![intr을 del 키에 매핑](https://linux55.com/image/30606/intr%EC%9D%84%20del%20%ED%82%A4%EC%97%90%20%EB%A7%A4%ED%95%91.png)
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전송 ^H
및 Delete전송 상황을 시뮬레이션합니다 ^?
.
세 번째 줄은 애플리케이션이 $TERMCAP
환경 변수를 통해 termcap을 사용하도록 지시하지만 이를 사용하는 사용자는 terminfo
알림을 받지 못한다는 점에 유의하세요.
답변2
예상되는 문자는 레거시 터미널(예: VT220)에서 DEL로 표시된 키인 ^?입니다.
stty intr을 할 수 있나요 ^? 애플리케이션을 시작하기 전에 인터럽트 신호로 사용하도록 하세요. 하지만 Putty를 DEL로 보내도록 구성하는 방법이 있는지 모르겠습니다. 다른 터미널에서는 다시 매핑할 수 있다는 것을 알고 있습니다.
인쇄되는 메시지를 변경할 수는 없나요?
다른 터미널 에뮬레이터가 필요할 수도 있고 터미널과 애플리케이션 사이의 화면과 같은 추가 터미널 에뮬레이션 계층이 필요할 수도 있습니다.
편집: "기능 키 및 키보드"에서 "SCO" 옵션을 선택하면 DEL 키가 생성되어야 하며 ^?
이를 stty intr에 매핑할 수 있습니다. 또한 백스페이스를 Control-H로 설정해야 합니다. 응용 프로그램은 SCO 운영 체제에서 실행되도록 설계된 응용 프로그램이므로 이 모드에서 Home, End 등의 키에 대한 문자 시퀀스를 생성할 것으로 예상할 수도 있습니다.
그러나 screen을 사용하면 더 통제된 환경이 생성되므로 @StephaneChazelas의 답변을 고려해야 합니다(즉, 모든 사람의 클라이언트 시스템에 퍼티를 구성할 필요가 없습니다).