xinput testTüm klavye olaylarını X sunucusuna bildirebilir. Bir GNU sisteminde:
xinput list |
grep -Po 'id=\K\d+(?=.*slave\s*keyboard)' |
xargs -P0 -n1 xinput test
Anahtar kodlardan anahtar isimleri almak istiyorsanız, bu çıktıyı aşağıdakilerle işlemden geçirebilirsiniz:
awk 'BEGIN{while (("xmodmap -pke" | getline) > 0) k[$2]=$4}
{print $0 "[" k[$NF] "]"}'
> file.logBir günlük dosyasında depolamak için ekleyin . Veya | tee file.logher iki kütüğe ve görmek için.
xinputX sunucusunun XinputExtension'ı sorgular. Bu, bir standart (X yardımcı programlarını kapsayan herhangi bir standardın farkında değilim) veya ortak bir komut alacağınız kadar yakındır. Bu aynı zamanda kök ayrıcalıkları gerektirmez.
X sunucusu ve xinput, XinputExtension'ın 2. sürümünü destekliyorsa, test-xi2bunun yerine testdaha fazla bilgi veren, özellikle değiştiricilerin durumu (shift, ctrl, alt ...) kullanabilirsiniz. Örnek:
$ xinput test-xi2 --root
EVENT type 2 (KeyPress)
device: 11 (11)
detail: 54
flags:
root: 846.80/451.83
event: 846.80/451.83
buttons:
modifiers: locked 0 latched 0 base 0x4 effective: 0x4
group: locked 0 latched 0 base 0 effective: 0
valuators:
windows: root 0x26c event 0x26c child 0x10006e6
Tuş kodunu (in detail) xmodmap -pketekrar yardımı ile bir tuş takımına , effectivedeğiştirici bit maskesini de yardımı ile daha yararlı bir şeye çevirebilirsiniz xmodmap -pm. Örneğin:
xinput test-xi2 --root | perl -lne '
BEGIN{$"=",";
open X, "-|", "xmodmap -pke";
while (<X>) {$k{$1}=$2 if /^keycode\s+(\d+) = (\w+)/}
open X, "-|", "xmodmap -pm"; <X>;<X>;
while (<X>) {if (/^(\w+)\s+(\w*)/){($k=$2)=~s/_[LR]$//;$m[$i++]=$k||$1}}
close X;
}
if (/^EVENT type.*\((.*)\)/) {$e = $1}
elsif (/detail: (\d+)/) {$d=$1}
elsif (/modifiers:.*effective: (.*)/) {
$m=$1;
if ($e =~ /^Key/){
my @mods;
for (0..$#m) {push @mods, $m[$_] if (hex($m) & (1<<$_))}
print "$e $d [$k{$d}] $m [@mods]"
}
}'
çıktı:
KeyPress 24 [q] 0x19 [Shift,Alt,Num_Lock]
num-lock açıkken Shift + Alt + q tuşlarına bastığımda.
Bir program yüklemek için süper kullanıcı ayrıcalıklarına sahip olmanız gerekmediğini unutmayın . Dosya sisteminde, yürütme izninin verildiği bir yere yazma erişiminiz varsa (giriş dizininiz /tmp,, /var/tmp...) , xinputoradaki uyumlu bir sistemden bir komut kopyalayıp yürütebilirsiniz.