FreeBSD 터미널에서 Linux .bashrc 설정을 사용하려고 합니다. Linux에서는 set -o vi
키 바인딩과 함께 bash를 사용합니다 Ctr+H
(내 기록 파일의 편집기를 호출합니다). 가상 머신의 FreeBSD에서는(ssh를 통해 연결된 경우가 아님) 백스페이스 키를 누를 때마다 이 키 바인딩이 호출됩니다.
Linux 터미널에 나타나 백스페이스 키를 생성합니다 ^?
( 와는 다름 ^H
). FreeBSD에서 백스페이스로 생성된 키는 이며 ^H
, 이는 내 키 바인딩을 트리거합니다. 내 키 바인딩이 두 터미널 모두에서 작동하도록 하는 방법이 있는지 ^H
(즉, FreeBSD 터미널에서 ^H 대신 백스페이스로 ^?를 사용하도록 하는 방법), 아니면 다른 단축키 방식을 사용해야 하는지 궁금합니다.
나는 노력했다 stty -a
. ... erase = ^?; erase2 = ^H ...
시도했다고 합니다 stty erase2 ^?
. stty -a
예상대로 출력이 변경되었지만 백스페이스 키의 동작은 변경되지 않았으며 여전히 생성 중입니다 ^H
.
답변1
stty
이것과는 아무 상관이 없습니다. 이는 제어라인 규율. 선 규칙은 커널 가상 터미널에 대한 가상 와이어를 따라갈 때 문자에 반응합니다. 이 시점에서 입력은 실제 라인을 통해 보내는 실제 터미널처럼 문자가 됩니다.
커널 가상 터미널의 문자에 키 입력을 매핑하는 것이 바로 키맵입니다.
% sed -ne '2,4p;/014/p' /usr/share/vt/keymaps/uk.capsctrl.kbd
# alt
# scan cntrl alt alt cntrl lock
# code base shift cntrl shift alt shift cntrl shift state
014 bs bs del del bs bs del del O
%
14는 PC 모델 M 및 Windows 키보드의 ISO 9995-1 위치 A13 및 A14에 있는 백스페이스 키에 대한 PC/AT 키 코드입니다. 이 키맵에서 어떻게 매핑되는지 확인할 수 있습니다. 여기서 무엇을 바꿔야 할지 분명해야 합니다. ☺
kbdcontrol
대상 커널의 가상 터미널 장치를 표준 입력으로 사용하여 키맵을 로드할 수 있습니다. 물론 파일 형식은 kbdmap(5)으로 문서화되어 있습니다. 실제로는 전적으로 SCO Unix에서 제공되며 이에 대한 문서를 찾을 수 있습니다.FreeBSD보다 낫습니다..
추가 읽기
- 건반§7.SCO 유닉스 매뉴얼.