Desde =~ 2 anos, parece que não podemos usar a Supertecla (também conhecida como tecla do Windows) para executar alguns atalhos de teclado.
Eu tento com kde, gnome, xfce4, nenhum funciona totalmente.
Por exemplo, eu tenho um atalho de teclado para digitar a data como se eu digitasse atribuído via Super+ a, quando eu bato nessas teclas, nada acontece.
A linha de comando está bash -c 'xvkbd -xsendevent -text $(date +%Y%m%d)'
configurada corretamente nas preferências do xfce4.
Atualmente uso archlinux x86_64, com kernel 4.15.1-2-ARCH.
Alguém sabe o que há de errado? Onde ? Existe uma correção? Uma solução alternativa?
O atalho de tecla usado não é o problema
Você pode verificar se o atalho de teclado está sendo definido com sucesso substituindo seu
bash …
comando porxterm
(ou algum outro aplicativo gráfico). Se uma janela aparecer, seu atalho está definido corretamente. O problema é quase certamente o comando desejado:Na minha experiência, o uso de
XSendEvent
não é confiável. 1 Essa pode ser a origem do seu problema. Usarxdotool
um pode selecionar entreXTEST
eXSendEvent
, e o primeiro geralmente funciona para mim. Vocêxvkbd
pode ter opções semelhantes.Ao enviar sequências de teclas, você precisa limpar os modificadores atuais para garantir que está enviando a sequência desejada (por exemplo ,
test
e não Super+ t, Super+ e, etc.)Além disso,
xdotool
pelo menos tem um comportamento estranho onde, se enviar eventos muito cedo, eles desaparecem. 2 Isso pode ser, de fato, os eventos de queda do servidor X ou pode ser algo totalmente diferente. De qualquer forma, você pode contornar isso (pelo menos emxdotool
) com um atraso:O
type
subcomando tem uma--delay
opção caso o atraso inicial não seja suficiente para evitar a queda de eventos.Resumindo
Eu usaria:
para replicar o comportamento pretendido, embora os valores usados para
sleep
e--delay
possam precisar de ajuste, dependendo da sua configuração.Outra opção possível
Se você não se importa em destruir sua área de transferência, uma abordagem melhor pode ser enviar o atalho padrão para
paste selection
:Isso usa
xsel
para colocar o texto desejado nas seleçõesCLIPBOARD
ePRIMARY
(já que ShiftInsertnão é consistente em qual deles ele usa). Em seguida, sintetiza a sequência de teclas para colar essa seleção. Como isso requer apenas dois pressionamentos de tecla sintetizados, é menos provável que descarte eventos do que o outro método.1 De
xdotool(1)
:2 Revisitarei essa resposta e expandirei esse ponto se souber exatamente por que esse é o caso.