使Emacs忽略系统键盘布局

Mak*_*dev 10 keyboard emacs

在Emacs中输入时,我使用其内部键盘布局开关.

有时我在使用其他应用程序时切换系统键盘布局.

如果Emacs的内部和系统布局都不是英语,则它们会干扰并且无法工作.例如,我有两种方法可以键入一些字母,但无法输入逗号字符.

我想让Emacs忽略系统键盘布局.可能吗?

编辑:
我的操作系统是Linux Mint 10(64位)
我使用Emacs 24

Mir*_*lov 5

你能说出你在操作系统中使用的键盘布局以及你在Emacs中使用的输入方法吗?目前您的帖子中没有足够的信息.我的问题是,例如,我使用Colemak和俄罗斯打字机作为OS布局,使用俄语打字机作为辅助Emacs输入法.组合Colemak(OS)-Russian(Emacs)搞砸了我的输入,因为Emacs的输入法是从OS接收的英文字符到某些俄语字符的映射,并且Emacs中的所有输入方法都基于QWERTY的映射.例如,应该将"йцукен"打印为"йцазпо".我通过运行以下代码解决了它:

(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"??) ("<" ??) (">" ??) ("?" ??))
Run Code Online (Sandbox Code Playgroud)

然后用来colemak-russian代替russian-typewriter.您可以使用与布局相对应的关联对更改.

编辑:当然,这不是最正确的解决方案.正如马克西姆所指出的那样,两种语言共有的字符即使不应该被翻译.例如,我将系统布局设置为Colemak和Emacs输入法为"colemak-russian" - 然后我不能使用逗号,它们变成"б".

要使Emacs忽略系统布局,您可以将其与第三方软件(如xxkb,SCIMIBus)集成.当您说俄语时,您可以尝试本教程.

我个人使用hacky解决方法在关键组合中翻译俄语字符并完全忽略Emacs输入法.