O modelo de entrada X é muito complexo (alguns até dizem que apenas 5 pessoas na Terra o compreendem completamente :) Eu não sou um deles entre)
a) Então, no começo, você tinha apenas uma função X11 que lia o teclado, um símbolo de uma tecla.
b) Mas algumas pessoas queriam chaves mortas, então outra função permite, várias chaves, uma string.
Isso também precisa de um ou vários arquivos para descrever quais sequências de chaves produzem quais sequências de caracteres.
c) Depois, há também métodos de entrada mais complexos, que interagem com outro programa semelhante a um servidor. Isso geralmente é feito para digitar em japonês ou chinês.
Para b) ec) para trabalhar você precisa de um XMODIFICADORES variável corretamente definido "@ im = none" para b) (para c) o valor de @ im = xxxxx depende do programa 3d usado); e configuração correta de tudo, e que o aplicativo usa as funções de entrada certas (alguns programas X11 ainda estão por aí que usam apenas a função raw em a), sem sorte então: ()
d) Então, como tudo isso era muito complexo, e particularmente c) tinha uma interação muito feia; Toolkits modernos como Qt e Gtk, começaram a fornecer seu próprio suporte de nível de entrada, ignorando b) / c)
Portanto, você tem a opção de usar o método de entrada do kit de ferramentas (mas será diferente entre Gtk / Qt / other); ou use b) / c) (b ou c depende principalmente do idioma que você deseja digitar).
Mas para usar b / c, você precisa dizer ao seu kit de ferramentas de alto nível para não fazer isso sozinho, mas deixar o X11 fazer isso. No Gtk existe uma entrada chamada "entrada do servidor XIM" ou algo parecido; ao escolhê-lo, você usa o método b / c.
O Qt deve ter algo parecido.
Com o KDE3 (Qt3) tendo uma variável de shell QT_IM_MODULE=xim
foi suficiente.
Agora, é possível que uma configuração dinâmica (por exemplo, através da GUI e do dbus) tenha prioridade sobre a variável shell.