如果无法识别死键组合,请插入两个字符(例如'a→á,'b→'b)


9

当我在Linux Mint机器上使用英语,美国国际语言的任何变体(带有死键,altGr死键或替代键)时,我总是会遇到这种现象。
当我按下以下任一键时:' "然后跟随它们,出现“不可重音”字符,如a [bno输出。

在Windows US-International中,它将打印[b。如果要键入此字符,则必须用空格而不是任何“不可重读”字符对每个死键进行转义。这在编程时很烦人(不是真的,但是我在Windows'Qwerty International'上接受了type.io的培训,并且在系统之间来回切换很烦人)。

有什么方法可以改变它,使其像在Windows中一样工作吗?


请注意,这<Compose>'b是一个较差的示例,因为实际上存在以那些字符开头的有效撰写序列,例如,<Compose>'ba导致
Celada 2015年

Answers:


5

在Ubuntu 14.04上,我执行了以下操作:

1)安装uim使用软件管理器,其他包一样uim-ximuim-gtk2uim-gtk3uim-qt安装自动。参见https://launchpad.net/ubuntu/+source/uim

2)通过向添加下一行来定义环境变量~/.profile,这样自定义组合键序列仅适用于当前用户:

# Restart the X-server after making alterations using:
# $ sudo restart lightdm
# It seems only GTK_IM_MODULE or QT_IM_MODULE needs to be defined.
export GTK_IM_MODULE="uim"
export QT_IM_MODULE="uim"

3)为了模拟Window US International键盘,我在以下位置保存了以下文件之一~/.XCompose

1)重新启动Ubuntu或2)在终端中输入以下命令,仅对X-server起作用:

$ sudo restart lightdm

注意:仅在更改~/.profile文件后才需要重新启动,所做的更改~/.XCompose将在下次启动应用程序(终端,Gedit等)时生效。

要检查环境变量是否设置正确,请在终端中输入以下命令:

$ printenv | grep IM_MODULE

非常感谢:

关于自定义组合键序列:

关于自定义键盘映射:


这很好。但是我不建议任何人使用第二个文件(pastebin),因为我做了它,但它不如我现在使用的第一个文件完整。
杰米·霍尔斯滕

在Linux Mint 18(Sarah)中工作,其中通过键盘输入法(图形窗口)完成uim的安装。我只需要调整.profile / .bashrc中的环境变量,并安装〜/ .XCompose文件。
Luciano

分析器中共享的.XCompose文件都存在问题。在第一个斜杠(/)成为deakey,在第二个死键不能在ç/Ç中组成'c或'C。我修复了它,更改了第二个.XCompose文件,该文件来自链接pastebin.com/vJg6G0th
Luciano

8

我在OpenSUSE中找到了使之工作的方法,希望它在Mint中不会有太大不同。也许您的文件会在稍微不同的位置,但是找到正确的文件应该不难。

OpenSUSE ibus默认使用(或者至少是Gnome版本使用),但是我摆脱了它并使用xim。我不知道Mint是否也使用ibus它,但是无论如何,我都会发布完整的说明。根据需要跳过/调整步骤。

  1. 卸载ibus。在OpenSUSE中,这是sudo zypper rm ibus。注销并再次登录以杀死僵尸守护程序。

  2. 安装gtk3-immodule-xim。在OpenSUSE中,它是sudo zypper in gtk3-immodule-xim

  3. 编辑/etc/X11/xim.d/none。设置XMODIFIERS@im=none。设置GTK_IM_MODULEQT_IM_MODULExim

  4. cp /usr/share/X11/locale/en_US.UTF-8/Compose ~/.XCompose。如果.XCompose您的主目录中有一个文件,X11将使用它。因此,现在我们可以编辑此文件以自定义死键。

  5. 现在,无聊的部分。编辑.XCompose文件并为每个死键组合创建规则,输出所需的字符串。例如:

    <dead_acute> <b> : "'b"
    <dead_acute> <r> : "'r"
    ...
    

    记住也要为大写字母(和标点符号,以及任何您需要的东西)创建规则。

  6. 如果像我一样,当您使用时也想获得cedilla(ç)而不是重音c(ć<dead_acute> <c>,只需查找并编辑这些行即可。

而且你有它。注销并再次登录,所有应用程序都应正确处理输入!

编辑:我知道这xim是旧的和有问题的(它在配置文件上这样说),但以上是我可以使所有工作正常的唯一方法。也许uim也可以做。


这很棒。在Linux Mint中,我只需要在开始菜单中搜索“输入法”,就可以切换到xim(跳过前三个步骤)。当我在主目录中创建文件时,它可以工作。但是,当我甚至给它一个新命令时,例如:<dead_acute> <r>:“'r”,它也“忘记”所有无效键(不再有á,à,ã或ä)。因此,我必须手动设置所有死键组合,这很好,因为我将始终将那个文件带到新系统中。您能告诉我“,〜和`”的关键字吗
Jamie Holsten

奇怪的是,它忘记了其他死键,这在这里没有发生。尝试将新规则放在文件的末尾而不是开头,然后看是否有帮助。
cksk 2015年

顺便说一句,将整个Compose文件复制到本地XCompose的另一种方法是第一行上的include原始:include "%L"。然后在下面添加新规则。(见这里了解详细信息。)其他关键字dead_diaeresisdead_tildedead_grave。只需看看其他人的原始Compose文件即可。
cksk 2015年

到目前为止,我找不到原始的.XCompose文件。我的X11文件夹没有'locale'或'xim.d'文件夹。也许是BCS。不同的发行版,或者可能是因为我通过GUI更改为Xim。我现在在HDD上重新安装了LMint(而不是像以前一样不使用USB记忆棒),根本无法使用死键。但是您的“ include“%L””以某种方式解决了该问题。Xim确实非常奇怪。我几乎已经制定了所有规则,因此它与Microsoft Int完全相同。QWERTY非常好。您能给我XCompose文件的副本,然后我就可以完成它并提供给需要它的每个人。
杰米·霍尔斯滕

我自己从VM运行OpenSuse,并获得了一个文件以供参考。我马上就好。最难的部分是弄清楚如何表达“-”符号,因为它在编码中用作字符串字符(实际上是\ 42八进制,我可以这样写:<diaeresis> <b>:“ \ 42b” ,42真是个启示。)现在,我只需要更正错误并添加所有特殊字符即可。我不会做第三行和第四行,因为这样做的工作量太大,收益也太少了(所以它不会完全起作用)就像在Windows中一样,但是要足够舒适)。非常感谢您的输入,我自己不会发现这一点
Jamie Holsten 2015年

2

拥有'a'b表现不同听起来很烦人。我建议您使用其他方式输入带变音符号的字符。而不是'使用诸如此类的死键,而使用compose键。要输入'a',请' a '正常键入。要输入á,请输入Compose ' a

我对Mint的键盘布局配置界面不熟悉,但是它应该具有在某处启用Compose键的选项。通常的选择是使用位于右键右边的“菜单” Ctrl键(但这在笔记本电脑上并不总是很方便)。

为了保持一致,可以在Windows上使用Wincompose启用Compose键。


不,这一点都不令人讨厌,因为您永远都不想在开头加上重音来使ab(或任何特殊字符)成为可能。至少对我来说,这是一种非常直观的好方法,它可以快速键入我的代码,并且仍然可以(也非常快速)键入我的母语,而不必处理烦人的布局更改。老实说,在我从德语的QWERTZ更改为MS QWERTY,Int bcs之前,我对编码的了解不多。特殊字符太难了。Windows也没有其他国际布局,我不喜欢Ä在其他alt + GR Int中的Q上。Linux上的布局。
Jamie Holsten 2015年

2
正确的行为永远不会令人讨厌。令人烦恼的是花了3次按键来完成应该只用两次的操作。专家提示:如果有人问如何做X,那么不回答就说“您不想做X”,尤其是在涉及可用性问题时。linux上默认的US Intl键盘不可用,简单明了。
Leandro M.

0

我还无法使全部工作正常(无法弄清楚如何做一些事情,例如。^和&[可能是八进制值]),但是对我而言这已经足够了。当我最终在第一/第二级完成该操作时,我将重新上传经过正确修改的.xCompose for xim。再次感谢cksk的帮助。

http://pastebin.com/vJg6G0th


0

为了完成上述@lmeurs和@Luciano的回答,以下是一个~/.XCompose文件,该文件截至2018年6月在Linux Mint 18.3上正常工作,xim用作输入方法:

include "%L" # or include "/usr/share/X11/locale/en_US.UTF-8/Compose"

<dead_acute> <b> : "'b"
<dead_acute> <c> : "ç"   ccedilla
<dead_acute> <d> : "'d"
<dead_acute> <f> : "'f"
<dead_acute> <g> : "'g"
<dead_acute> <h> : "'h"
<dead_acute> <j> : "'j"
<dead_acute> <k> : "'k"
<dead_acute> <l> : "'l"
<dead_acute> <m> : "'m"

<dead_acute> <n> : "'n"
<dead_acute> <p> : "'p"
<dead_acute> <q> : "'q"
<dead_acute> <r> : "'r"
<dead_acute> <s> : "'s"
<dead_acute> <t> : "'t"
<dead_acute> <v> : "'v"
<dead_acute> <w> : "'w"

<dead_acute> <x> : "'x"
<dead_acute> <y> : "'y"
<dead_acute> <z> : "'z"
<dead_acute> <B> : "'B"
<dead_acute> <C> : "Ç"   Ccedilla
<dead_acute> <D> : "'D"
<dead_acute> <F> : "'F"
<dead_acute> <G> : "'G"
<dead_acute> <H> : "'H"
<dead_acute> <J> : "'J"

<dead_acute> <K> : "'K"
<dead_acute> <L> : "'L"
<dead_acute> <M> : "'M"
<dead_acute> <N> : "'N"
<dead_acute> <P> : "'P"
<dead_acute> <Q> : "'Q"
<dead_acute> <R> : "'R"
<dead_acute> <S> : "'S"
<dead_acute> <T> : "'T"
<dead_acute> <V> : "'V"

<dead_acute> <W> : "'W"
<dead_acute> <X> : "'X"
<dead_acute> <Y> : "'Y"
<dead_acute> <Z> : "'Z"


<dead_acute> <dead_acute> : "''"
<dead_acute> <1> : "'1"
<dead_acute> <2> : "'2"
<dead_acute> <3> : "'3"
<dead_acute> <4> : "'4"
<dead_acute> <5> : "'5"
<dead_acute> <6> : "'6"
<dead_acute> <7> : "'7"
<dead_acute> <8> : "'8"
<dead_acute> <9> : "'9"
<dead_acute> <0> : "'0"
<dead_acute> <minus> : "'-"'
<dead_acute> <equal> : "'="
<dead_acute> <slash> : "'/"
<dead_acute> <bracketleft> : "'["
<dead_acute> <bracketright> : "']"
<dead_acute> <semicolon> : "';"
<dead_acute> <apostrophe> : "''"
<dead_acute> <comma> : "',"
<dead_acute> <period> : "'."
<dead_acute> <backslash> : "'\\"



<dead_acute> <dead_tilde> : "'~"
<dead_acute> <exclam> : "'!"
<dead_acute> <at> : "'@"
<dead_acute> <numbersign> : "'#"
<dead_acute> <dollar> : "'$"
<dead_acute> <percent> : "'%"
<dead_acute> <dead_circumflex> : "'^"
<dead_acute> <ampersand> : "'&"
<dead_acute> <asterisk> : "'*"
<dead_acute> <parenleft> : "'("
<dead_acute> <parenright> : "')"


<dead_acute> <underscore> : "'_"

<dead_acute> <plus> : "'+"
<dead_acute> <braceleft> : "'{"
<dead_acute> <braceright> : "'}"
<dead_acute> <colon> : "':"
<dead_acute> <quotedbl> : "'""
<dead_acute> <leftarrow> : "'<"
<dead_acute> <leftarrow> : "'>"
<dead_acute> <question> : "'?"


<dead_diaeresis> <dead_diaeresis> : "\"\""
<dead_diaeresis> <b> : "\42b"
<dead_diaeresis> <c> : "\42c"
<dead_diaeresis> <d> : "\42d"
<dead_diaeresis> <f> : "\42f"
<dead_diaeresis> <g> : "\42g"
<dead_diaeresis> <h> : "\42h"
<dead_diaeresis> <j> : "\42j"
<dead_diaeresis> <k> : "\42k"
<dead_diaeresis> <l> : "\42l"
<dead_diaeresis> <m> : "\42m"

<dead_diaeresis> <n> : "\42n"
<dead_diaeresis> <p> : "\42p"
<dead_diaeresis> <q> : "\42q"
<dead_diaeresis> <r> : "\42r"
<dead_diaeresis> <s> : "\42s"
<dead_diaeresis> <t> : "\42t"
<dead_diaeresis> <v> : "\42v"
<dead_diaeresis> <w> : "\42w"

<dead_diaeresis> <x> : "\42x"
<dead_diaeresis> <y> : "\42y"
<dead_diaeresis> <z> : "\42z"
<dead_diaeresis> <B> : "\42B"
<dead_diaeresis> <C> : "\42C"
<dead_diaeresis> <D> : "\42D"
<dead_diaeresis> <F> : "\42F"
<dead_diaeresis> <G> : "\42G"
<dead_diaeresis> <H> : "\42H"
<dead_diaeresis> <J> : "\42J"

<dead_diaeresis> <K> : "\42K"
<dead_diaeresis> <L> : "\42L"
<dead_diaeresis> <M> : "\42M"
<dead_diaeresis> <N> : "\42N"
<dead_diaeresis> <P> : "\42P"
<dead_diaeresis> <Q> : "\42Q"
<dead_diaeresis> <R> : "\42R"
<dead_diaeresis> <S> : "\42S"
<dead_diaeresis> <T> : "\42T"
<dead_diaeresis> <V> : "\42V"

<dead_diaeresis> <W> : "\42W"
<dead_diaeresis> <X> : "\42X"
<dead_diaeresis> <Y> : "\42Y"
<dead_diaeresis> <Z> : "\42Z"



<dead_diaeresis> <dead_acute> : "\42'"
<dead_diaeresis> <1> : "\421"
<dead_diaeresis> <2> : "\422"
<dead_diaeresis> <3> : "\423"
<dead_diaeresis> <4> : "\424"
<dead_diaeresis> <5> : "\425"
<dead_diaeresis> <6> : "\426"
<dead_diaeresis> <7> : "\427"
<dead_diaeresis> <8> : "\428"
<dead_diaeresis> <9> : "\429"
<dead_diaeresis> <0> : "\420"
<dead_diaeresis> <minus> : "\42-"
<dead_diaeresis> <equal> : "\42="
<dead_diaeresis> <slash> : "\42/"
<dead_diaeresis> <bracketleft> : "\42["
<dead_diaeresis> <bracketright> : "\42]"
<dead_diaeresis> <semicolon> : "\42;"
<dead_diaeresis> <comma> : "\42,"
<dead_diaeresis> <period> : "\42."
<dead_diaeresis> <backslash> : "\42\\"


<dead_diaeresis> <dead_tilde> : "\42~"
<dead_diaeresis> <exclam> : "\42!"

<dead_diaeresis> <at> : "\42@"
<dead_diaeresis> <numbersign> : "\42#"
<dead_diaeresis> <dollar> : "\42$"
<dead_diaeresis> <percent> : "\42"
<dead_diaeresis> <dead_circumflex> : "\42^"
<dead_diaeresis> <ampersand> : "\42&"
<dead_diaeresis> <asterisk> : "\42*"
<dead_diaeresis> <parenleft> : "\42("
<dead_diaeresis> <parenright> : "\42)"

<dead_diaeresis> <underscore> : "\42_"

<dead_diaeresis> <plus> : "\42+"
<dead_diaeresis> <braceleft> : "\42{"
<dead_diaeresis> <braceright> : "\42}"
<dead_diaeresis> <colon> : "\42:"
<dead_diaeresis> <quotedbl> : "\42\42"
<dead_diaeresis> <leftarrow> : "\42<"
<dead_diaeresis> <leftarrow> : ">"
<dead_diaeresis> <question> : "\42?"



<dead_grave> <b> : "`b"
<dead_grave> <c> : "`c"
<dead_grave> <d> : "`d"
<dead_grave> <f> : "`f"
<dead_grave> <g> : "`g"
<dead_grave> <h> : "`h"
<dead_grave> <j> : "`j"
<dead_grave> <k> : "`k"
<dead_grave> <l> : "`l"
<dead_grave> <m> : "`m"

<dead_grave> <n> : "`n"
<dead_grave> <p> : "`p"
<dead_grave> <q> : "`q"
<dead_grave> <r> : "`r"
<dead_grave> <s> : "`s"
<dead_grave> <t> : "`t"
<dead_grave> <v> : "`v"
<dead_grave> <w> : "`w"

<dead_grave> <x> : "`x"
<dead_grave> <y> : "`y"
<dead_grave> <z> : "`z"
<dead_grave> <B> : "`B"
<dead_grave> <C> : "`C"
<dead_grave> <D> : "`D"
<dead_grave> <F> : "`F"
<dead_grave> <G> : "`G"
<dead_grave> <H> : "`H"
<dead_grave> <J> : "`J"

<dead_grave> <K> : "`K"
<dead_grave> <L> : "`L"
<dead_grave> <M> : "`M"
<dead_grave> <N> : "`N"
<dead_grave> <P> : "`P"
<dead_grave> <Q> : "`Q"
<dead_grave> <R> : "`R"
<dead_grave> <S> : "`S"
<dead_grave> <T> : "`T"
<dead_grave> <V> : "`V"

<dead_grave> <W> : "`W"
<dead_grave> <X> : "`X"
<dead_grave> <Y> : "`Y"
<dead_grave> <Z> : "`Z"


<dead_grave> <dead_acute> : "`'"
<dead_grave> <1> : "`1"
<dead_grave> <2> : "`2"
<dead_grave> <3> : "`3"
<dead_grave> <4> : "`4"
<dead_grave> <5> : "`5"
<dead_grave> <6> : "`6"
<dead_grave> <7> : "`7"
<dead_grave> <8> : "`8"
<dead_grave> <9> : "`9"
<dead_grave> <0> : "`0"
<dead_grave> <minus> : "`-"
<dead_grave> <equal> : "`="
<dead_grave> <slash> : "`/"
<dead_grave> <bracketleft> : "`["
<dead_grave> <bracketright> : "`]"
<dead_grave> <semicolon> : "`;"
<dead_grave> <dead_grave> : "``"
<dead_grave> <comma> : "`,"
<dead_grave> <period> : "`."
<dead_grave> <backslash> : "`\\"


<dead_grave> <dead_tilde> : "`~"
<dead_grave> <exclam> : "`!"
<dead_grave> <at> : "`@"
<dead_grave> <numbersign> : "`#"
<dead_grave> <dollar> : "`$"
<dead_grave> <percent> : "`%"
<dead_grave> <dead_circumflex> : "`^"
<dead_grave> <ampersand> : "`&"
<dead_grave> <asterisk> : "`*"
<dead_grave> <parenleft> : "`("
<dead_grave> <parenright> : "`)"
<dead_grave> <underscore> : "`_"
<dead_grave> <plus> : "`+"
<dead_grave> <braceleft> : "`{"
<dead_grave> <braceright> : "`}"
<dead_grave> <colon> : "`:"
<dead_grave> <quotedbl> : "``"
<dead_grave> <leftarrow> : "`,"
<dead_grave> <leftarrow> : "`."
<dead_grave> <question> : "`?"


<dead_tilde> <b> : "~b"
<dead_tilde> <c> : "~c"
<dead_tilde> <d> : "~d"
<dead_tilde> <f> : "~f"
<dead_tilde> <g> : "~g"
<dead_tilde> <h> : "~h"
<dead_tilde> <j> : "~j"
<dead_tilde> <k> : "~k"
<dead_tilde> <l> : "~l"
<dead_tilde> <m> : "~m"

<dead_tilde> <n> : "~n"
<dead_tilde> <p> : "~p"
<dead_tilde> <q> : "~q"
<dead_tilde> <r> : "~r"
<dead_tilde> <s> : "~s"
<dead_tilde> <t> : "~t"
<dead_tilde> <v> : "~v"
<dead_tilde> <w> : "~w"

<dead_tilde> <x> : "~x"
<dead_tilde> <y> : "~y"
<dead_tilde> <z> : "~z"
<dead_tilde> <B> : "~B"
<dead_tilde> <C> : "~C"
<dead_tilde> <D> : "~D"
<dead_tilde> <F> : "~F"
<dead_tilde> <G> : "~G"
<dead_tilde> <H> : "~H"
<dead_tilde> <J> : "~J"

<dead_tilde> <K> : "~K"
<dead_tilde> <L> : "~L"
<dead_tilde> <M> : "~M"
<dead_tilde> <N> : "~N"
<dead_tilde> <P> : "~P"
<dead_tilde> <Q> : "~Q"
<dead_tilde> <R> : "~R"
<dead_tilde> <S> : "~S"
<dead_tilde> <T> : "~T"
<dead_tilde> <V> : "~V"

<dead_tilde> <W> : "~W"
<dead_tilde> <X> : "~X"
<dead_tilde> <Y> : "~Y"
<dead_tilde> <Z> : "~Z"


<dead_tilde> <dead_acute> : "~'"
<dead_tilde> <1> : "~1"
<dead_tilde> <2> : "~2"
<dead_tilde> <3> : "~3"
<dead_tilde> <4> : "~4"
<dead_tilde> <5> : "~5"
<dead_tilde> <6> : "~6"
<dead_tilde> <7> : "~7"
<dead_tilde> <8> : "~8"
<dead_tilde> <9> : "~9"
<dead_tilde> <0> : "~0"
<dead_tilde> <minus> : "~-"
<dead_tilde> <equal> : "~="
<dead_tilde> <slash> : "~/"
<dead_tilde> <bracketleft> : "~["
<dead_tilde> <bracketright> : "~]"
<dead_tilde> <semicolon> : "~;"
<dead_tilde> <comma> : "~,"
<dead_tilde> <period> : "~."
<dead_tilde> <backslash> : "~\\"


<dead_tilde> <dead_tilde> : "~~"
<dead_tilde> <exclam> : "~!"
<dead_tilde> <at> : "~@"
<dead_tilde> <numbersign> : "~#"
<dead_tilde> <dollar> : "~$"
<dead_tilde> <percent> : "~%"
<dead_tilde> <dead_circumflex> : "~^"
<dead_tilde> <ampersand> : "~&"
<dead_tilde> <asterisk> : "~*"
<dead_tilde> <parenleft> : "~("
<dead_tilde> <parenright> : "~)"

<dead_tilde> <underscore> : "~_"

<dead_tilde> <plus> : "~+"
<dead_tilde> <braceleft> : "~{"
<dead_tilde> <braceright> : "~}"
<dead_tilde> <colon> : "~:"
<dead_tilde> <quotedbl> : "~""
<dead_tilde> <leftarrow> : "~<"
<dead_tilde> <leftarrow> : ">"
<dead_tilde> <question> : "~?"

我的/etc/environment包含:

GTK_IM_MODULE=xim
QT_IM_MODULE=xim

并且我将以下行添加到~/.profile

export XCOMPOSEFILE=/home/my-user-name/.XCompose

当然,我使用“英语(美国,带死键的国际)”布局:

$ setxkbmap -query
rules:      evdev
model:      pc105
layout:     us
variant:    intl
options:    terminate:ctrl_alt_bksp

唯一不能很好运行的问题(是吗?)是在Qt应用程序中一次只能输出一个字符……因此,例如,如果您按+其他任何键,则只会输入撇号。

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.