2012-02-28 9 views
9

Emacsを入力するときは、キーボードレイアウトスイッチを使用します。Emacsがシステムのキーボードレイアウトを無視するようにする

他のアプリケーションで作業するときに、時々私はシステムのキーボードレイアウトを切り替えることがあります。

Emacsの内部レイアウトとシステムレイアウトの両方が英語でない場合、それらは干渉して動作することができません。 たとえば、文字を入力するには2通りの方法がありますが、カンマ文字を入力する方法はありません。

私はEmacsにシステムのキーボードレイアウトを無視させたいと思っています。出来ますか?

EDIT:
私のOSは
私はEmacsの24を使用Linuxのミント10(64ビット)である

+0

Emacsの入力方法は何ですか?システムのキーボードレイアウトは?正確な名前を教えてください。 –

答えて

4

あなたがあなたのOSで使用していて、Emacsで何インプットメソッドを使用しているもののキーボードレイアウトを伝えることはできますか?現在、投稿に十分な情報がありません。私の問題は、例えば、私はOSのレイアウトとしてColemakとロシアのタイプライターを使用し、Emacsのセカンダリ入力メソッドとしてロシアのタイプライターを使用したということでした。 Emacsの入力方法は、OSから受け取った英語の文字をロシア語の文字にマッピングするものであり、Emacsのすべての入力メソッドはQWERTYからのマッピングに基づいているため、Combination 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を使用しました。関連するペアをレイアウトに対応させて変更することができます。

EDIT:もちろん、これは最も正しい解決策ではありません。 Maksimに記載されているように、両方の言語に共通の文字は、そうしてはならない場合でも翻訳されます。例えば、私はシステムレイアウトをColemakに、Emacsの入力メソッドを "colemak-russian"に設定します。そして、 "б"になるコンマは使用できません。

システムレイアウトを無視するには、xxkb,SCIMIBusなどのサードパーティ製ソフトウェアと統合することができます。あなたはロシア語を話すときに、これを試してみてくださいtutorial

私は個人的にhacky workaroundを使用して、キーコンボ内でロシア語の文字を翻訳し、Emacsの入力方法を完全に無視します。

+0

いつテストできるかは分かりませんが、問題ないと思います。 –

+0

Emacsはキーボードから直接入力されないので、システムレイアウトを無視することは不可能です。あなたのコードはキリル文字を正しく解釈させますが、 "、"、 "。"ラテンのレイアウトにも存在する文字? –

関連する問題