Muszę rejestrować każde naciśnięcie klawisza i przechowywać w pliku w katalogu użytkownika ~, podczas korzystania z mojego konta nie jestem sudoer i nie mogę w żaden sposób instalować programów (takich jak logKeys ). Jak mogę to zrobić za pomocą terminala?
UWAGA: To pytanie nie jest duplikatem drugiego pytania o wzmiankę; w tym pytaniu pytam o każde naciśnięcie klawisza, podczas gdy w drugim pytający pyta o naciśnięcie klawisza w sesji terminalu.
Odpowiedzi:
xinput test
może zgłaszać wszystkie zdarzenia związane z klawiaturą na serwerze X. W systemie GNU:Jeśli chcesz uzyskać nazwy kluczy z kodów kluczy, możesz przetworzyć dane wyjściowe za pomocą:
Dodaj,
> file.log
aby przechowywać w pliku dziennika. Lub| tee file.log
zalogować się i zobaczyć.xinput
odpytuje XinputExtension serwera X. Jest to tak blisko, jak masz zamiar dostać się jako standard (nie znam żadnego standardu, który obejmowałby narzędzia X) lub wspólne polecenie, aby to zrobić. To również nie wymaga uprawnień roota.Jeśli serwer X i xinput obsługują wersję XinputExtension w wersji 2, można użyć
test-xi2
zamiast niejtest
daje więcej informacji, w szczególności stan modyfikatorów (shift, ctrl, alt ...). Przykład:Możesz przetłumaczyć kod klucza (in
detail
) na klucz za pomocą przyciskuxmodmap -pke
, aeffective
maska bitowa modyfikatora na coś bardziej pomocnego za pomocąxmodmap -pm
. Na przykład:wyprowadziłby:
kiedy naciskam Shift + Alt + q, gdy włączona jest funkcja num-lock.
Pamiętaj, że nie musisz mieć uprawnień superużytkownika, aby zainstalować program. Jeśli masz dostęp do zapisu w dowolnym miejscu w systemie plików, w którym udzielono uprawnień do wykonywania (katalog domowy
/tmp
,/var/tmp
...), możesz skopiowaćxinput
polecenie z kompatybilnego systemu i wykonać je.źródło
xinput
1.6.1
lub nowszego do--root
. Narzędzia X można pobrać osobno ze strony xorg.freedesktop.org/releases/indidual/app . Jeśli nie chcesz kompilować ze źródła. Debian ma xinput 1.6.1 dla kilku architektur dla Linuksa lub kfreebsd.xmodmap
jest w implementacji X odniesienia przynajmniej od 1987 roku. O jakim systemie tutaj mówimy? Czy to możliwe, żexmodmap
nie ma go w twoim$PATH
(/usr/dt/bin
lub innym?).Czy rozważałeś użycie
script
polecenia?źródło