Bash의 메타 키는 원래 다음과 같이 정의되었습니다 ( lib/readline/ChangeLog
).
Mon Jul 13 11:34:07 1992 Brian Fox (bfox@cubit)
* readline.c: (rl_variable_bind) New variable "meta-flag" if "on"
means force the use of the 8th bit as Meta bit. Internal variable
is called meta_flag.
그것이 ncurses 와 xterm으로 해석되는 방식 입니다. 몇 이 기능의 옵션을 제공 단말기 (즉 측면은 널리 아니었다 단말기의 대부분은 당신이 사용하는 하드 코딩 행동 (매우 흥미로운되지 않음)가 발생됩니다.. terminfo의 매뉴얼 페이지 문서 이러한 터미널 기능 :
has_meta_key km km Has a meta key
(i.e., sets 8th-bit)
meta_off rmm mo turn off meta mode
meta_on smm mm turn on meta mode
(8th-bit on)
그리고 기능을 설명합니다 :
터미널에 전송되는 문자의 8 비트를 설정하는 Shift 키 역할을하는 "메타 키"가있는 경우이 사실은로 표시 될 수 있습니다 km
. 그렇지 않으면 소프트웨어는 8 번째 비트가 패리티라고 가정하고 일반적으로 지워집니다. 문자열이 "메타 모드"와 오프를 켜있는 경우, 그들은으로 부여 할 수 smm
와 rmm
.
Alt
키 에 응답하여 이스케이프 문자를 접두사로하는 다른 기능 이 일부 터미널 에뮬레이터에 통합되었습니다. Bash (실제로는 readline
라이브러리) 는 2004 년부터 변경 로그에 사용 된 내용을 문서화합니다 .
lib/readline/callback.c
- use _rl_dispatch_callback and a chain of _rl_keyseq_contexts to
simulate the recursion used to decode multicharacter key sequences
(even things like ESC- as meta-prefix
메타는 특별한 경우입니다 수정 키. 마찬가지로 control, shift다른 키와 동시에 누르면 키 자체를 누르는 것과 다른 것을 기대합니다. X는 키의 X 이벤트와 함께 전달되는 수정 자 값에 비트를 할당하여 수정 자 키를 제공합니다. 키 누름은 여러 X 이벤트 일 수 있습니다. X는 수정자를 유지하면서 이러한 이벤트를 결합하는 기능을 제공합니다.
X는 키보드에 나타날 수있는 각 키의 기호도 정의합니다. 이벤트를 결합하는 함수에서 특수 처리하여 다른 값 (예 : 유니 코드)을 제공합니다.
그러나 "메타"는 특별한 경우입니다.
X 응용 프로그램에는 meta규칙을 제외하고 키 가 없습니다 . X에는 메타 키 또는 메타 한정자에 대한 정의가 없습니다. 통상적으로, 단말기는 Alt키 및 / 또는 xmodmap
예를 들어, 알려진 것으로 알려진 수정 자 중 하나를 찾는다 mod2
. 이후의 xkb 기능은 Alt키 를 찾기 위해 다른 정보 계층을 제공하여 문제를 복잡하게하지만 (이 논의와 관련하여 개선되지는 않습니다) .
물론 meta 에 관한 어떤 xmodmap
것도 xkb
알지 못한다면 컨벤션은 지금까지만 가능 합니다. 예를 들어, xterm은 구성 가능하며 모든 사용자 가 동일한 방식으로 메타 를 구성하려는 것은 아닙니다 . 예를 들어 리소스 에서 사용되는 경우 의도 된 메타 키가 아닐 수 있습니다 . 다른 키는 메타 키일 수 있지만 사용자 (특히 bash에서 이스케이프 시퀀스를 사용하는 사용자)는를 누를 때 이스케이프 문자를 보내려고 할 수 있습니다. 그러나 수정 자로 구성 되지 않으면 xterm은 자체적으로 이벤트를 결합하지 않습니다.Alttranslation
Alt
xterm에는 몇 가지 자원 설정이 있습니다 ( 매뉴얼 페이지에 설명되어 있음 ).
altIsNotMeta
그리고 altSendsEscape
( 2007 년에 추가됨 ).
eightBitInput
이후 2,006 메타 모드의 원래 의미에 대응하고, 제공하는이 정의 이스케이프 시퀀스가 smm
와 rmm
(설정 / 제거 메타 모드)를 단말 기능.
eightBitInput
디코딩 된 유니 코드 값을 원시 입력 바이트가 아닌 128만큼 시프트하여 UTF-8을 고려하도록 2003 년 에 수정되었습니다 .
metaSendsEscape
에서 날짜 1999
eightBitInput
보다 훨씬 더 늙었습니다 metaSendsEscape
. 이는 메타 모드 (8 번째 비트 추가) 또는 escapeX11R4 (1989) 이후 키 접두사 사이에서 선택을 구현했습니다 . 그러나이 기능은 시작시 결정되었습니다. 초기화 중에 입력이 8 비트 또는 7 개만 허용되도록 설정되었는지 확인했습니다. 그 후에는 변경되지 않았습니다.
어떤 사람들은 후자를 메타 모드 ( meta mode )로 지칭 하는 두 가지 ( 8 비트 와 이스케이프 접두사)를 동일시 합니다. 문제에 대한 관점에 따라 xterm 의 리소스 설정은 실행 가능한 메타 키를 얻는 솔루션의 일부입니다.eightBitInput
더 읽을 거리 :
MENU
키도 X에 의해 발견? 사용중인 창 관리자-일부는 키 재정의에 도움이 될 수 있습니다.