Mostrar teclas presionadas en Linux

131

en windows hay un programa llamado keyboard jedi que muestra qué teclas se presionan en el teclado. ¿Hay un equivalente para Linux?

ftravers
fuente
1
Estaba buscando algo que ayude con los lanzamientos de pantalla ... screenkey parece ser lo que quería.
ftravers
Xev es una gran opción y probablemente ya esté instalada en su máquina
deFreitas

Respuestas:

124

Otros han mencionado xev, lo cual es bueno cuando estás ejecutando X11. Cuando estás en la consola, sin embargo, showkeyes lo que quieres.

Y si está en una sesión SSH o en un terminal real, puede usar /usr/lib/ncurses/examples/demo_altkeys(disponible en Debian en el paquete ncurses-examples).

Osito de peluche
fuente
1
Bienvenido a las filas de los atletas de pila .
Dennis Williamson
3
Ninguno de los dos trabaja en la terminal SSH.
anatoly techtonik
66
para evitar showkeydar el error de no conseguir un descriptor de archivo (como en el comentario de @anatolytechtonik), intentesudo showkey
pestophagous
1
@anatolytechtonik Respuesta editada para agregar comandos para sesiones SSH (y terminales reales).
Teddy
55
@Johann xevreporta códigos de escaneo mientras que showkeypor defecto reporta códigos clave. sudo showkey -sreporta códigos de escaneo.
Nizam Mohamed
49

También screenkey , una herramienta de screencast que muestra las teclas presionadas en la pantalla.

Adobe
fuente
1
Intenté esto y no me mostró teclas como subir / bajar volumen.
Bas Peeters
Para mí, esto muestra ajustes de brillo y volumen. ¡Un pequeño gran programa en general!
joelostblom
La versión en los repositorios de Debian Stretch es antigua (y Stretch es estable solo, idk, ¿2 meses quizás?). Use la versión de Github para obtener algunas configuraciones.
Luc
Repo fue migrado a Gitlab .
rkta
32
 chris@retina:~$ xinput list
 ⎡ Virtual core pointer                     id=2    [master pointer  (3)]
 ⎜   ↳ Virtual core XTEST pointer               id=4    [slave  pointer  (2)]
 ⎜   ↳ bcm5974                                  id=13   [slave  pointer  (2)]
 ⎜   ↳ Logitech Unifying Device. Wireless PID:1028  id=9    [slave  pointer  (2)]
 ⎣ Virtual core keyboard                    id=3    [master keyboard (2)]
     ↳ Virtual core XTEST keyboard              id=5    [slave  keyboard (3)]
     ↳ Power Button                             id=6    [slave  keyboard (3)]
     ↳ Power Button                             id=7    [slave  keyboard (3)]
     ↳ Sleep Button                             id=8    [slave  keyboard (3)]
     ↳ FaceTime HD Camera (Built-in)            id=11   [slave  keyboard (3)]
     ↳ Apple Inc. Apple Internal Keyboard / Trackpad    id=12   [slave  keyboard (3)]
     ↳ daskeyboard                              id=10   [slave  keyboard (3)]
     ↳ daskeyboard                              id=14   [slave  keyboard (3)]
 chris@retina:~$ xinput test 14
 key release 36 
 key press   43 
 hkey release 43 
 key press   26 
 ekey release 26 
 key press   46 
 lkey release 46 
 key press   46 
 lkey release 46 
 key press   32 
 okey release 32 
 key press   37 
 key press   54 
 ^C
 chris@retina:~$ 
Christopher Done
fuente
1
xev no pudo mostrarme los botones del mouse Mx Anywhere 2, este método muestra el botón correcto.
sdkks
32

Si está buscando algo que le muestre gráficamente qué tecla se presiona actualmente (tal vez para la esquina de un screencast), key-mon podría ser el boleto.

asjo
fuente
24

El mejor comando que conozco para esta funcionalidad es showkey, con parámetro -a.

Podrías intentar y Ctrl+ Dpara salir:

showkey -a
Rafael Quirino Castro
fuente
showkeyya se menciona en las respuestas anteriores.
Dmitry Grigoryev
Pero la adición -aes útil, ya que muestra cómo usar el comando. Pero debería ser un comentario entonces.
Stefan van den Akker
sudo showkey -afunciona con ssh también.
Nizam Mohamed
17

También puedes usar evtest. En alguna situación mejor que xevcomo muestra las claves, incluso cuando la clave ya está capturada.

Para instalar en ubuntu / mint sudo apt-get install evtest.

Para ejecutar sudo evtesty elegir el número de dispositivo.

Salida de ejemplo:

$ sudo evtest 
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:  Lid Switch
/dev/input/event1:  Power Button
/dev/input/event2:  Power Button
/dev/input/event3:  AT Translated Set 2 keyboard
/dev/input/event4:  ETPS/2 Elantech Touchpad
/dev/input/event5:  Logitech Logitech G930 Headset
/dev/input/event6:  Video Bus
/dev/input/event7:  HDA Intel HDMI HDMI/DP,pcm=8
/dev/input/event8:  HDA Intel HDMI HDMI/DP,pcm=7
/dev/input/event9:  HDA Intel HDMI HDMI/DP,pcm=3
/dev/input/event10: HDA Intel PCH Headphone
/dev/input/event11: HDA Intel PCH Mic
/dev/input/event12: WebCam SC-10HDP12B24N
/dev/input/event13: ELAN Touchscreen
Select the device event number [0-13]: 5
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x46d product 0xa1f version 0x101
Input device name: "Logitech Logitech G930 Headset"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 163 (KEY_NEXTSONG)
    Event code 164 (KEY_PLAYPAUSE)
    Event code 165 (KEY_PREVIOUSSONG)
    Event code 256 (BTN_0)
    Event code 257 (BTN_1)
    Event code 258 (BTN_2)
    Event code 259 (BTN_3)
    Event code 260 (BTN_4)
    Event code 261 (BTN_5)
    Event code 262 (BTN_6)
    Event code 263 (BTN_7)
    Event code 264 (BTN_8)
    Event code 265 (BTN_9)
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
Properties:
Testing ... (interrupt to exit)
Event: time 1412585327.807585, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00b5
Event: time 1412585327.807585, type 1 (EV_KEY), code 163 (KEY_NEXTSONG), value 1
Event: time 1412585327.807585, -------------- SYN_REPORT ------------
Event: time 1412585327.927557, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00b5
Event: time 1412585327.927557, type 1 (EV_KEY), code 163 (KEY_NEXTSONG), value 0
Event: time 1412585327.927557, -------------- SYN_REPORT ------------
Kamil Dziedzic
fuente
1
No funciona con SSH. Parece que no hay /dev/inputnada allí.
anatoly techtonik
12

Si está en un indicador de comandos de shell, puede presionar Ctrl, vluego la tecla de interés para ver cuál es el resultado. Por ejemplo, en mi sistema, presionar Ctrl- vluego Right Arrowmuestra lo ^[[Cque significa Escape, Soporte izquierdo, C.

Como otros han mencionado, xeves el camino a seguir para X11.

Dennis Williamson
fuente
5

Que estaría deseando xev .

Tony Miller
fuente
5
xev | grep 'keycode'
    state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
    state 0x0, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    state 0x4, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    state 0x0, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    state 0x4, keycode 52 (keysym 0x7a, z), same_screen YES,
    state 0x4, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    state 0x0, keycode 54 (keysym 0x63, c), same_screen YES,
    state 0x0, keycode 52 (keysym 0x7a, z), same_screen YES,
    state 0x0, keycode 54 (keysym 0x63, c), same_screen YES,
LeCanardNoir
fuente
66
Consulte cómo escribir una buena respuesta
juego de palabras el
xev -event keyboardinforma solo eventos de teclado.
Nizam Mohamed