Outra abordagem é usar xmodmap
. Adicione o seguinte ao seu ~/.Xmodmap
:
keycode 134 = ISO_Level3_Shift Multi_key
Isso faz distinção entre maiúsculas e minúsculas. A tecla alt direita ( AltGr ) no meu teclado tem o código de tecla 134. Se isso não funcionar, a explicação provável é que o teclado usa um número diferente para essa tecla. Para descobrir, execute xev
, clique na chave que deseja usar e procure a parte que diz "keycode XXX".
Você pode, obviamente, usar qualquer chave para o propósito; por exemplo,
keycode 38 = a Multi_key
faria com que a tecla a servisse como chave de composição (apenas) quando fosse alterada. A incapacidade de digitar o capital Como seria um claro prejuízo, talvez você queira fazer outra coisa ☺
Eu uso Shift + Shift com um truque:
keysym Shift_L = Shift_L Multi_key
keysym Shift_R = Shift_R Multi_key
Isso faz com que a tecla shift esquerda atue como tecla shift esquerda e tecla shift direita como tecla shift direita - exceto que se você mantiver uma tecla Shift, cada tecla Shift age como Compor . Alguns cenários para ilustrar:
Se você pressionar shift à esquerda, pressione shift à direita, solte à direita e solte à esquerda - então você terá o mesmo efeito de ter pressionado uma tecla física Compose (teclados antigos da Sun tinham , IIRC). Então, em particular:
-
Shift Deslocamento + : + ) produz um smiley, ☺ (pelo menos com meu
~/.XCompose
)
-
Deslocar Deslocar + a + a produz o & ar; personagem, "å".
Se você pressionar o shift para a esquerda, pressionar shift para a direita e depois soltar as duas teclas de shift na ordem oposta, você terá o mesmo efeito que o acima.
Se você pressionar shift para a esquerda e soltar novamente (sem nenhum desvio à direita), você receberá dois eventos de teclado:
- um evento
KeyPress
para Shift_L
- um evento
KeyRelease
para Multi_key
Isso ocorre porque, quando você solta a tecla Shift esquerda, uma tecla Shift está sendo pressionada (a esquerda é um -_-), então a tecla é tratada como se Multi_key
fosse tudo o que ela fazia. Isso não me causou nenhum problema perceptível, mas talvez algum aplicativo antigo e cheio de bugs possa ser afetado pela incompatibilidade de KeyPress
vs. KeyRelease
.
Note também que a interação entre chaves one-shot, teclas modificadoras e chaves de estado (eg a , Shift e Caps Lock ) interagir de forma divertida. Se você quiser usar a mesma tecla como tecla Caps Lock e (quando a tecla estiver pressionada) uma tecla de composição, você poderá obter efeitos funky. Eu me lembro que você obtém todos os efeitos aplicáveis, o que provavelmente não é o que você quer, mas fique à vontade para testá-los.