Xmonad 使用 pasteString 粘贴特殊字符 \x00f6?

Xmonad paste special character \x00f6 with pasteString?

当使用 Xmonad.Util.Paste 时,我试图用 pasteString 粘贴一个 ö 字符,但什么也没有出现。我怎样才能粘贴这个字符?

我尝试使用:

 , ((mod4Mask                , xK_o      ),   pasteString "ö")

但这给了我一个编译错误(这是我所预料的):lexical error in string/character literal (UTF-8 decoding error) 所以我查找了相应的转义序列 here 并尝试了以下行:

 , ((mod4Mask                , xK_o      ),   pasteString "\x00f6")

这编译得很好,但是当按下组合键时,似乎什么也没有出现(我用一个普通的字符串试了一下,它工作正常,pasteSelection 也按预期工作)。我做错了什么?

旁注:我也试过 \x00F6 但没有任何区别。我也在使用 ghc version 7.8.4.

更新 1:

我找到 haskell 的 this 备忘单,所以我尝试了字符串 \xC\&4,结果是 ,4。仅使用 \&4 时,结果为 4,使用 \x2C 时,结果为 ,.

更新 2:

似乎 XMonad.Util.Paste 根本不适用于变音符号,如前所述,函数 pasteSelection 有效。 But when selecting an ö character it doesn't.所以我想我需要使用 xdotool 或类似的东西。

非常感谢您的帮助,感谢您查看此问题!

pasteStringpasteChar 映射到字符串中的每个字符; pasteChar,反过来,遇到非 ASCII 字符的问题,这在 the source code:

的注释中说明

Note that this function makes use of 'stringToKeysym', and so will probably have trouble with any 'Char' outside ASCII.

鉴于此,我建议设置一个 X Compose 键,您可以在其中键入“ö”并使用 Compose o ".