Tenho um script Autokey para inserir a data atual quando estou digitando. Ele funciona bem na maioria dos casos (aqui, Thunderbird, xed, terminal Gnome, etc.). Ele funciona no LibreOffice Calc, mas não no Writer.
Para usá-lo, eu digito a abreviação (dt) e depois um espaço. Normalmente, o Autokey remove esses três caracteres e os substitui pela data atual seguida por um espaço.
No Writer, os caracteres digitados permanecem, então a data é impressa e o Autokey parece enviar 3 backspaces. O espaço é emitido um pouco mais tarde.
Por exemplo, aqui “Data é 'dt' hoje” (sem as aspas simples) se torna “Data é 25 de fevereiro de 2025 hoje”. No Writer, obtenho “Data é dt 25 de fevereiro de 2025 hoje” (observe a colocação estranha do espaço após o T de 'hoje'.
O script Autokey é
# Abbreviation to insert the current date
import time
datestring = system.exec_command("date +%d\ %B\ %Y")
keyboard.send_keys(datestring)
Eu estaria interessado em quaisquer insights sobre esse comportamento estranho, ou quaisquer dicas para depuração. É um problema do Autokey ou do Writer?
Detalhes do sistema: autokey-gtk 0.96.0, LibreOffice 24.8.2.1, Linux Mint 22.1.
O script não funciona no vim, provavelmente porque ctrl-V significa algo diferente.
Editar - Adicionar depuração Autokey
Obrigado a @Destroy666 pela opção detalhada do autokey.
Eu usei autokey-gtk --verbose >o 2>e
e testei no Writer e no Betterbird (meu programa de e-mail).
Os resultados estão abaixo (cortados para economizar espaço). Eles não são idênticos, mas não consigo ver nenhuma indicação do motivo pelo qual o Writer dá errado. O Writer poderia estar armazenando em buffer a entrada de diferentes fontes?
Escritor
Título visível da janela: 'Sem título 1 — LibreOffice Writer', Classe da janela: 'libreoffice.libreoffice-writer' Fila de entrada no final de handle_keypress: deque([' '], maxlen=150) Tecla bruta: 'd', modificadores: [], Tecla: d Título visível da janela: 'Sem título 1 — LibreOffice Writer', Classe da janela: 'libreoffice.libreoffice-writer' Fila de entrada no final de handle_keypress: deque([' ', 'd'], maxlen=150) Tecla bruta: 't', modificadores: [], Tecla: t Título visível da janela: 'Sem título 1 — LibreOffice Writer', Classe da janela: 'libreoffice.libreoffice-writer' Fila de entrada no final de handle_keypress: deque([' ', 'd', 't'], maxlen=150) Tecla bruta: ' ', modificadores: [], Tecla:
Título visível da janela: 'Untitled 1 — LibreOffice Writer', classe Window: 'libreoffice.libreoffice-writer' Correspondeu ao script "AbbrDT" com abreviações "['dt']" em relação à entrada atual Executor de script em execução: Script('AbbrDT') Fila de entrada no final de handle_keypress: deque([], maxlen=150) Disparou um script por uma abreviação. Definindo-o para engine.get_triggered_abbreviation(). abbreviation=' dt', trigger=' ' Enviar chave especial: [<Key.BACKSPACE: ''>] Enviar chave especial: [<Key.BACKSPACE: ''>] Enviar via interface de evento Enviar via interface de evento Enviar chave especial: [<Key.BACKSPACE: ''>] Enviando string: '25 de fevereiro de 2025' Enviando string: ' '
Melhor pássaro
Chave bruta: 'd', modificadores: [], Chave: d Título visível da janela: 'Gravar: (sem assunto) - Betterbird', Classe da janela: 'Msgcompose.eu.betterbird.Betterbird' Chave bruta: 't', modificadores: [], Chave: t Título visível da janela: 'Gravar: (sem assunto) - Betterbird', Classe da janela: 'Msgcompose.eu.betterbird.Betterbird' Fila de entrada no final de handle_keypress: deque(['a', 'b', 'c', ' ', 'd', 't'], maxlen=150) Chave bruta: ' ', modificadores: [], Chave: Título visível da janela: 'Gravar: (sem assunto) - Betterbird', Classe da janela: 'Msgcompose.eu.betterbird.Betterbird' Script correspondente "AbbrDT" com abreviações "['dt']" em relação à entrada atual Executor de script em execução: Script('AbbrDT') Fila de entrada no final de handle_keypress: deque([], maxlen=150) Disparou um Script por uma abreviação. Definindo-o para engine.get_triggered_abbreviation(). abbreviation='abc dt', trigger=' ' Enviar chave especial: [<Key.BACKSPACE: ''>] Enviar chave especial: [<Key.BACKSPACE: ''>] Enviar chave especial: [<Key.BACKSPACE: ''>] Enviar via interface de evento Enviar via interface de evento Enviando string: '26 de fevereiro de 2025' Enviando string: ' '