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

时间:2016-03-04 20:11:31

标签: haskell unicode utf-8 ghc xmonad

使用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根本不能与Umlauts一起工作,正如上面提到的函数pasteSelection一样。但是在选择ö字符时,它并没有。所以我想我需要使用xdotool或类似的东西。

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

1 个答案:

答案 0 :(得分:0)

pasteStringpasteChar映射到字符串中的每个字符;反过来,pasteChar会遇到非ASCII字符问题,the source code的评论中说明了这一点:

  

请注意,此函数使用'stringToKeysym',因此可能会遇到ASCII之外的任何'Char'。

鉴于此,我建议设置一个X Compose键,您可以使用 Compose o 键入”ö“。