Preciso gravar cada pressionamento de tecla e armazenar em um arquivo no diretório do usuário ~, ao usar minha conta, não sou sudoer e não consigo instalar programas (como logKeys ) de forma alguma. Como eu poderia fazer isso usando o terminal?
NOTA: Esta questão não é uma duplicata da outra questão de menção; nesta pergunta, estou perguntando sobre cada pressionamento de tecla, enquanto no outro o solicitante pergunta sobre o pressionamento de tecla na sessão do terminal.
Respostas:
xinput test
pode relatar todos os eventos do teclado para o servidor X. Em um sistema GNU:Se você deseja obter os nomes das chaves, poderá pós-processar essa saída com:
Adicionar
> file.log
para armazenar em um arquivo de log. Ou| tee file.log
para logar e vê-lo.xinput
consulta o XinputExtension do servidor X. Isso é o mais próximo que você vai conseguir de um padrão (não conheço nenhum padrão que cubra os utilitários X) ou um comando comum para fazer isso. Isso também não requer privilégios de root.Se o servidor X e o xinput suportarem a versão 2 do XinputExtension, você poderá usar, em
test-xi2
vez dissotest
, para obter mais informações, em particular o estado dos modificadores (shift, ctrl, alt ...). Exemplo:Você pode traduzir o código-chave (in
detail
) em um chaveiro com a ajuda dexmodmap -pke
novamente, e oeffective
modificador bitmask para algo mais útil com a ajuda dexmodmap -pm
. Por exemplo:produziria:
quando pressiono Shift + Alt + q quando o num-lock está ativado.
Observe que você não precisa ter privilégios de superusuário para instalar um programa. Se você tiver acesso de gravação para algum lugar no sistema de arquivos onde executar permissão é concedida (seu diretório home,
/tmp
,/var/tmp
...), então você pode copiar umxinput
comando a partir de um sistema compatível lá e executá-lo.fonte
xinput
1.6.1
ou mais novo para--root
. Os utilitários X podem ser baixados individualmente em xorg.freedesktop.org/releases/individual/app . Se você não deseja compilar a partir da fonte. O Debian possui um xinput 1.6.1 para várias arquiteturas para Linux ou kfreebsd.xmodmap
está na implementação de referência X desde 1987, pelo menos. De que sistema estamos falando aqui? Será quexmodmap
não está no seu$PATH
(/usr/dt/bin
ou outro?).Você já pensou em usar o
script
comando?fonte