2012-02-28 3 views
9

Emacs에서 타이핑 할 때 내부 키보드 레이아웃 스위치를 사용합니다.Emacs가 시스템 키보드 레이아웃을 무시하도록 만들기

가끔은 다른 응용 프로그램에서 작업 할 때 시스템 키보드 레이아웃을 전환합니다.

Emacs의 내부 및 시스템 레이아웃이 모두 영어가 아니면 방해가되어 작동하지 않습니다. 예를 들어, 문자를 입력하는 두 가지 방법이 있지만 쉼표 문자를 입력 할 수는 없습니다.

Emacs가 시스템 키보드 레이아웃을 무시하도록하고 싶습니다. 가능한가?

편집 :
내 OS는
내가 이맥스 24 사용 리눅스 민트 10 (64 비트)입니다

+0

이멕스 입력 방법이란 무엇이며 시스템 키보드 레이아웃은 무엇입니까? 정확한 이름을 말해주십시오. –

답변

4

당신이 당신의 OS에서 사용하고 이맥스에서 어떤 입력 방법을 사용하여 어떤 키보드 레이아웃을 말할 수 있습니까? 현재 귀하의 게시물에 충분한 정보가 없습니다. 내 문제는 예를 들어 OS 레이아웃으로 Colemak과 러시아어 타자기를 사용했고 보조 이맥스 입력 방법으로 러시아어 타자기를 사용했다는 것입니다. 이맥스의 입력 방법은 OS에서받은 영문 문자를 러시아어 문자로 매핑하고 이맥스의 모든 입력 방법은 QWERTY에서 매핑을 기반으로하기 때문에 Combine Colemak (OS) -Russian (Emacs)은 입력을 엉망으로 만들었습니다. 예를 들어, "무엇이 었음에 틀림 없는가?"는 "йцазпо"로 인쇄되었습니다.

(require 'quail) 

(quail-define-package 
"colemak-russian" "Russian" "ru" nil 
"Russian-typewriter keyboard layout assuming that your default 
keyboard layout is Colemak" 
nil t t t t nil nil nil nil nil t) 

(quail-define-rules 
("1" ?№) ("2" ?-) ("3" ?/) ("4" ?\") ("5" ?:) ("6" ?,) ("7" ?.) ("8" ?_) ("9" ??) 
("0" ?%) ("-" ?!) ("=" ?\;) ("q" ?й) ("w" ?ц) ("f" ?у) ("p" ?к) ("g" ?е) ("j" ?н)("l" ?г) 
("u" ?ш) ("y" ?щ) (";" ?з) ("[" ?х) ("]" ?ъ) ("\\" ?\)) ("a" ?ф) ("r" ?ы) ("s" ?в) 
("t" ?а) ("d" ?п) ("h" ?р) ("n" ?о) ("e" ?л) ("i" ?д) ("o" ?ж) ("'" ?э) ("z" ?я) ("x" ?ч) 
("c" ?с) ("v" ?м) ("b" ?и) ("k" ?т) ("m" ?ь) ("," ?б) ("." ?ю) ("/" ?ё) ("~" ?+) ("!" ?1) 
("@" ?2) ("#" ?3) ("$" ?4) ("%" ?5) ("^" ?6) ("&" ?7) ("*" ?8) ("\(" ?9) ("\)" ?0) ("_" ?=) 
("+" ?\\) ("Q" ?Й) ("W" ?Ц) ("F" ?У) ("P" ?К) ("G" ?Е) ("J" ?Н) ("L" ?Г) ("U" ?Ш) ("Y" ?Щ) 
(":" ?З) ("{" ?Х) ("}" ?Ъ) ("|"?\() ("A" ?Ф) ("R" ?Ы) ("S" ?В) ("T" ?А) ("D" ?П) ("H" ?Р) 
("N" ?О) ("E" ?Л) ("I" ?Д) ("O" ?Ж) ("\"" ?Э) ("Z" ?Я) ("V" ?Ч) ("X" ?С) ("C" ?М) ("B" ?И) 
("K" ?Т) ("M"?Ь) ("<" ?Б) (">" ?Ю) ("?" ?Ё)) 

을 다음 colemak-russian 대신 russian-typewriter를 사용 : 나는 다음과 같은 코드를 실행하여 해결했다. 레이아웃에 해당하는 관련 쌍을 변경할 수 있습니다.

편집 : 물론 이것은 가장 정확한 해결책이 아닙니다. Maksim에 명시된 바와 같이, 두 언어 모두에 공통된 문자가 없어야하는 경우에도 번역됩니다. 예를 들어, 시스템 레이아웃을 Colemak 및 Emacs 입력 방법을 "colemak-russian"으로 설정하면 "б"가되는 쉼표를 사용할 수 없습니다.

Emacs가 시스템 레이아웃을 무시하도록하려면 xxkb, SCIM 또는 IBus과 같은 타사 소프트웨어와 통합 할 수 있습니다. 러시아어를 할 때는이 tutorial을 사용해보십시오.

필자는 hacky workaround을 사용하여 키 조합 내에서 러시아어 문자를 번역하고 Emacs 입력 방법을 모두 무시합니다.

+0

언제 테스트 할 수 있을지 모르겠지만 괜찮다고 생각합니다. –

+0

이맥스는 키보드에서 직접 입력을받지 않기 때문에 시스템 레이아웃을 무시할 수없는 것처럼 보입니다. 귀하의 코드는 키릴 문자를 올바르게 해석하지만, ","및 "."에 대해 작동합니다. 라틴어 레이아웃에도 나타나는 문자는 무엇입니까? –

관련 문제