Ci와 TAB을 구별하는 방법?


20

일반적으로 역사적 이유로 emacs는 TAB키 코드와 C-i키를 동일하게 취급합니다 ( cf. 기능 키에 대한 emacs lisp 문서 또는 "TAB와?의 차이점은 무엇입니까?"라는 질문에 대한 abo-abo의 답변 .

참고 : 이 게시물에서, 키 코드는 TAB, <tab>C-i; tabCtrl+ i다른 한편으로는있는 물리적 키보드의 키.

그러나 현재 emacs는 TABand C-i를 같은 것으로 처리합니다 (equal (kbd "TAB") (kbd "C-i")).-> t.

그러나, 우리가 더 이상 컴퓨팅의 구석에 살고 있지 않기 때문에 나는 이것이 매우 성가신 것을 발견합니다 . 이 문제를 해결하기 위해 수행 할 수있는 몇 가지 제안이 있습니다.

  • "TAB를 변경하지 않고 명령을 Ci에 어떻게 바인딩합니까?"

    • Trey 's Solution 이 작동하지 않아 변수 local-function-key-maps가 변경되지 않았습니다. 변수 를 사용 delete하지 않고 수정하면 delq변수가 수정되지만 resolve ... tabCtrl+ i는 여전히 동일 하지 않습니다 .
    • 하이퍼 맵으로 번역하는 것은 1980 년대 해결 방법처럼 보입니다 ... Hyper+ i도 사용하고 싶을 것입니다.
  • input-decode-mapto map Ctrl+ i를 사용하여 일부 사후 ASCII 코드 에 매핑하는 것이 거의 내가 찾고있는 것입니다. kbd매크로 와 함께 제대로 작동하지 않는 한 Ctrl+ 를 묶을 소스 코드의 모든 비트를 수정해야합니다 i. 모든 소스 코드가 올바르게 수정되었다는 점을 고려할 때 이것이 최선의 해결책 일 것입니다.

  • 사용 (kbd "<tab>")에 대한 tab(kbd "C-i")(로 변환하는 (kbd "TAB")IE의 \t리터럴을) Ctrl+하는 i 작업을 수행 하지만 당신은 수정해야 할 것 모두 의 잘못된 종류의 사용 소스 파일 tab[읽기 : 키 코드 TAB] 짜증나 인을.
    이것은 예를 들어 github 문제emacs.sx 에서 제안되었습니다 .

이러한 솔루션 중 어느 것도 실제 솔루션처럼 보이지는 않지만 기존 버그 의 해결 방법이나 해킹을 고려하고 싶습니다 .

거기 밖으로 방법이 강제로 매핑하는 이맥스 tabto (kbd "<tab>")하고 (kbd "TAB")있는 동안 Ctrl+ i에 매핑 (kbd "C-i")이맥스 소스 코드를 modyfing의 짧은?

이 방법은 즉, 사용자에게 완전히 보이지 않는해야 tab키 코드와 같은 <tab>TAB동안 바인딩 하나에 매핑해야 Ctrl+ i키 코드와 같은 C-i다른 바인딩에 매핑해야합니다.

덜 심각한 참고 사항 : 이맥스 개발자는 어떤 시점에서 이맥스 소스 코드에서 변경 / 수정 될지 여부를 언급 할 수 있습니까?


2
참고 TAB하고 C-i(코드가 아닌 키) 하나의 정의에 의해 동일합니다 TAB.
Stefan

@Stefan 그렇기 때문에 노트를 추가했습니다 . 글을 편집하고 거기에 넣겠습니다.
elemakil


IMO,이 질문은 <tab> 대신 TAB에 정의 된 모든 키 바인딩 (외부 패키지의 키 바인딩)을 재배치하려고하기 때문에 중복되지 않습니다. 다른 질문은 자신의 코드에서 차별화하는 방법을 묻고있었습니다.
Malabarba

kbdTAB을 [tab]으로 번역하는 것이 좋습니다. Emacs의 사전로드 된 부분에서는 작동하지 않습니다.
Malabarba

답변:


21

미래는 오랫동안 사라졌고 컴퓨팅의 석기 시대는 곧 다가올 것입니다. 난 아직도 알고있는 모든 텍스트 터미널에 대한 이맥스에 동일한 바이트 시퀀스를 전송 C-i에 관해서는 TAB, 그래서 그들이 우리와 함께 여전히 아주 많이 "의 Unify"원래이 필요합니다.

입력-디코드-맵 (à la (define-key input-decode-map "\C-i" [C-i]))은 아마도 지금 당장 좋은 결과 일 것입니다.

Emacs의 전 유지 업체로서이 문제에 대한 더 나은 해결책을 환영하며 GUI 아래에 C-i(및 C-mC-[) 키를 비울 수 있습니다 (아마도 "사용자를 위해 예약 됨"). 그러나 기존 패키지에 많은 문제를 일으키지 않고 어떻게 해야할지 모르겠습니다.



어떤 종류의 키보드를 사용하는지 궁금하십니까? 전형적인 QWERT 키보드를 사용하면 구별이 명백해지며 이러한 키를 구별 할 수없는 것은 매우 고통스러운 일입니다.
Ivan Huang
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.