如何切换不同语言的键盘布局?


11

问:使用非标准键盘布局时,如何在不同语言的输入法之间切换?

我必须用两种不同的语言编辑文本。我希望能够跨两种语言使用我的键绑定,当然,除了在将文本插入缓冲区中时。看来我应该能够toggle-input-methodC-\)并选择其他语言。

到目前为止,还算不错。

麻烦所在:我使用英语Dvorak布局,该布局是在操作系统级别设置的(即,使用setxkbmap)。当我toggle-input-method使用QWERTY布局(美国标准)时,插入的文本将是正确的,但由于我使用的是Dvorak,因此显示为乱码。(FWIW,当我将布局切换到标准美国时,它可以正常工作。)

因此:我如何通知Emacs我正在使用Dvorak,以便toggle-input-method和朋友将我的按键转换成另一种语言的正确字符?


swedish-postfix和其他合成输入法对我有用,您遇到哪些问题?
shapr 2014年

@shapr:我正在英语和阿拉伯语之间切换。问题似乎是我在操作系统级别使用了Dvorak布局,因为当我在操作系统级别使用标准的美国布局时,切换效果很好。

Answers:


7

有一种方法可以通过设置更改输入法的物理布局定义quail-keyboard-layout-type。但是看起来Dvorak不在quail-keyboard-layout-alist我的Emacs 24.4中可能的候选对象之列。

您可以通过查看quail-keyboard-layout-alistin的定义来定义新的物理键盘布局,也可以quail.el通过为Dvorak布局定义相应的阿拉伯键来创建新的输入法。

我没有第一种方法的经验,但是我可以证明第二种方法比您想象的要容易。(我必须在波斯语上创建一个奥斯曼土耳其语输入法。)将arabic.el(复制到我的Debian系统中的/usr/share/emacs/24.4/lisp/leim/quail/arabic.el.gz)复制到您的家中,site-lisp然后根据您的喜好更改键。同样,不要忘记更改输入法名称等。您刚刚创建了新的Dvorak-Arabic输入法。

如果有什么复杂的问题,我可以提供更多详细信息来更新答案。


谢谢!这使我走上了正确的道路。我将发布一个额外的答案,列出我如何到达该...-alist版本。

别客气。您可能会考虑将更新提交quail-. *-alist给Emacs开发。我确信还有其他Dvorak用户将从中受益。
Emre Sahin 2014年

7

@EmreSahin使我走上了回答这个问题的正确道路,所以我在列出一些详细信息,以防其他任何人不得不自己解决此类问题。

正如Emre所指出的,我们需要在中添加Dvorak布局quail-keyboard-layout-alist。事实证明,该quail库在手册中没有得到很好的文档说明,其中在传递一个节点时提到了两个相关功能。

但是,在咨询了该帮助线程之后,尤其是在使用Dvorak的俄语版EmacsWiki页面上(从中可以找到答案),我认为我已经弄清楚了。

变量的文档字符串quail-keyboard-layout描述了我们需要放入的内容quail-keyboard-layout-alist。这是一个长字符串,对应于每行15个键的6行。每行对应于每个键的未移位值和已移位值,每行总共30个字符。对于以下几点,我不太确定,但是看来,对于我称之为具有四行键的“半标准”键盘,第一行和第六行应分别为30个空格。

大揭示:

(require 'quail)

(add-to-list 'quail-keyboard-layout-alist
             `("dvorak" . ,(concat "                              "
                                   "  1!2@3#4$5%6^7&8*9(0)[{]}`~  "
                                   "  '\",<.>pPyYfFgGcCrRlL/?=+    "
                                   "  aAoOeEuUiIdDhHtTnNsS-_\\|    "
                                   "  ;:qQjJkKxXbBmMwWvVzZ        "
                                   "                              ")))

(quail-set-keyboard-layout "dvorak")
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.