我添加了一个简单的序列,但它不起作用。如何确定操作系统(带有 Unity 的 Ubuntu 12.10)是否正在加载文件?
Gil*_*il' 18
撰写定义($XCOMPOSE
,~/.XCompose
或下一个文件/usr/share/X11/locale
)由每个客户端应用程序加载,而不是由X服务器。因此,请确保您正在测试的应用程序正在加载~/.XCompose
。您可以看到它正在读取哪些文件strace
:
$ strace -e open,openat xterm |& grep Compose
open("/home/gilles/.XCompose", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/X11/locale/en_US.UTF-8/Compose", O_RDONLY) = 5
$ touch .XCompose
$ strace -e open,openat xterm |& grep Compose
open("/home/gilles/.XCompose", O_RDONLY) = 5
Run Code Online (Sandbox Code Playgroud)
大多数应用程序仅在启动时加载文件,因此如果您更改了撰写定义,则必须重新启动应用程序。
如果应用程序未加载这些文件,则它们很可能未使用“X 输入法”(xim)。您可以强制 GTK 或 QT 应用程序使用 xim:
$ GTK_IM_MODULE=xim QT_IM_MODULE=xim strace -e open,openat xterm |& grep Compose
Run Code Online (Sandbox Code Playgroud)
如果这解决了问题,那么您应该考虑全局设置环境变量,或alias
用作针对每个应用程序的解决方法。