Mantenga NumLock siempre activado

29

Tengo un teclado estándar con teclas numéricas en el lado derecho (supongo que se llama teclado de 104 teclas). Quiero usar las teclas numéricas solo como teclas numéricas. Eso significa que no quiero NumLockencender y apagar las teclas numéricas.

Sin embargo, a veces sucede (no sé cómo, quizás NumLockpresionando la tecla accidentalmente ) que el bloqueo numérico está desactivado y tengo que presionarlo nuevamente. Esto es extremadamente molesto.

¿Es posible desactivar el bloqueo numérico?

En otras palabras: quiero que mis teclas numéricas siempre actúen como teclas numéricas y deshabilite el interruptor de bloqueo numérico .

Estoy usando Debian y LXDE (Openbox).

Martin Vegter
fuente
@MartinVegter ¿Desea publicar aquí el contenido de ~/.config/openbox/autostarty ~/.config/openbox/rc.xml?
Risto Salminen
Necesita un evento, que activará el bloqueo numérico nuevamente si detecta que el bloqueo numérico está activado. Deshabilitar el bloqueo numérico es tan fácil como lo menciona xmodmap. La única pregunta que queda es cómo conseguir ese evento ......?
SHW

Respuestas:

7

Después de leer toda la respuesta aquí, me sorprendió ver que puedes hacer lo siguiente.

<keybind key="Num_Lock">
  <action name="Execute">
    <command>numlockx on</command>
  </action>
</keybind>

Entonces, cada vez que presiona Num, lo que desactiva el bloqueo numérico. Se ejecutará numlockx on, lo que reactiva el bloqueo numérico.

El nombre proviene de mi salida, xevque me dio el código clave 77 y el nombreNum_Lock

En el caso de @MartinVegters, tuvo que esperar unos segundos para que numlockx onse ejecute definitivamente después de que Numse maneje el evento . Dado que existe una condición de carrera entre el manejo de numlock en el kernel y la ejecución numlockx.

Para este caso puedes escribir un pequeño script denumlock.shcomo

#!/bin/sh

sleep "$1"
numlockx on

y úsalo en la encuadernación de teclas

<command>/bin/sh denumlock.sh 1</command>

Esto está sucio pero funciona.

Lo que recomiendo es lo siguiente que no pude probar yo mismo. Es mejor que siga las primeras respuestas que sugieren usar

xmodmap -e 'keycode 77 = Escape'

Pero para LXDE necesita usar el mecanismo de inicio automático de LXDE, que es diferente de la forma de edición de Openbox ~/.config/openbox/autostart.

En LXDE aparentemente necesita editar ~/.config/lxsession/LXDE/autostarto con Lubuntu ~/.config/lxsession/Lubuntu/autostart, que contiene los comandos para el inicio. (Consulte Arch docs y LXDE docs ) Es posible que deba crear ese archivo y agregar esta línea.

@xmodmap -e 'keycode 77 = Escape'

Lamentablemente, como dije, no puedo probar si esto funciona, ya que solo tengo una VM ejecutándose con LXDE.

Raphael Ahrens
fuente
1
He probado tu solución <keybind key="Num_Lock">pero desafortunadamente no funciona. Mientras numlockx onse ejecuta el comando , <kbd> NumLock </kbd> todavía vende su función como bloqueo numérico. Así que todavía puedo activar / desactivar el bloqueo numérico.
Martin Vegter
En cuanto a la otra solución, usando xmodmap, cuando probé la solución sugerida por Risto Salminen, el comando funcionó, pero he perdido todas mis combinaciones de teclas.
Martin Vegter
@MartinVegter Mhh, puedes probar con una combinación de sleep 3; numlockx onteclas. Para la segunda solución, ¿lo has probado con el inicio automático?
Raphael Ahrens
No entiendo por qué, pero incluso sleep 3; /usr/bin/numlockx onno funciona. NumLocktodavía actúa como un interruptor de encendido / apagado.
Martin Vegter
@MartinVegter /usr/bin/numlockx onfunciona en su sistema?
Raphael Ahrens
13

quizás por mí accidentalmente NumLockpresionando la tecla

Si el teclado es suyo (en lugar del de su empleador, por ejemplo), simplemente quítelo físicamente.

Todavía puede presionarlo con algo puntiagudo si realmente lo necesita.

ingrese la descripción de la imagen aquí


fuente
44
Sí, +1. Lo simple es elegante.
ypercubeᵀᴹ
1
lamentablemente el estado predeterminado de mi NumLuck es el incorrecto :(
MichaelChirico
6

En el teclado de mi computadora portátil (Ubuntu 10.04) el bloqueo del teclado está actualmente activado.

$ xmodmap -pke|grep 77
keycode  77 = Num_Lock Pointer_EnableKeys Num_Lock Pointer_EnableKeys
keycode 177 = XF86Phone NoSymbol XF86Phone
$ xmodmap -e "keycode 77 ="

Voila! numlock ahora está deshabilitado.

xmodmap -e "keycode  77 = Num_Lock Pointer_EnableKeys Num_Lock Pointer_EnableKeys"

Lo vuelve a poner. (Tal vez la codicia por Num_lock hubiera sido una mejor idea, pero entiendes lo esencial).

Responde al comentario de @Martin Vegter.

Ok , en respuesta a tu comentario xmodmap arruina tus enlaces, entendido.

Acabo de revisar la documentación de Openbox

Echa un vistazo en ~ / .config / openbox / lxde-rc.xml

ls -l lxde-rc.xml (¿también tiene un rc.xml?, verifique).

tomar una copia como respaldo

(use un editor) busque numlock (quizás nmlk).

¿Ves algo como esto?

<keybind key="Numlock">
<action name="whatEverItSays"/>
</keybind>

Comente o cambie el valor clave de la combinación de teclas a una alternativa, por ejemplo, Alt-Numlock para alternar

key="A-Numlock"

P.ej

Para comentar

<!-Commented out from here
    <keybind key="Numlock">
    <action name="whatEverItSays"/>
    </keybind>
To Here -->

o

Cambiar a Alt + alternar alternar

<keybind key="A-Numlock">
  <action name="whatEverItSays"/>
</keybind>

guardar cambios y cerrar sesión / iniciar sesión o reiniciar.

X Tian
fuente
El problema es que cualquier xmodmapcomando (es decir xmodmap -e 'keycode 77 = Escape') destruye mis .config/openbox/lxde-rc.xml
combinaciones de
1
He respondido anteriormente para obtener un mejor formato.
X Tian
gracias por su respuesta. Sin embargo, en mi .config/openbox/lxde-rc.xml, no hay una línea que contenga Numlocko Num_Lock. Cuando creo uno, no tiene ningún efecto: <keybind key = "Num_Lock"> <action name = "Execute"> <command> / bin / true </command> </action> </keybind>
Martin Vegter
1
Debe haber otro archivo de configuración que se está leyendo antes del que está en su directorio de inicio. sugiero buscar en dos lugares, / etc / xdg / openbox y / usr / share / ... Si esto no es de ayuda, tendré que rendirme - lo siento.
X Tian
desde 3.4.7 registro modificado (openbox) "Se corrigieron los enlaces de teclas que se pierden si no se pueden traducir varios enlaces al mismo nivel (Corrige VMWare que hace que los enlaces de teclas de Openbox dejen de funcionar)"
X Tian
5

Encuentra tu código numérico con xev. Por ejemplo, aquí, Num_Lock es 77.

Use xmodmap para reasignar el código clave:

  • Para las sesiones X actuales, dentro de un shell, use xmodmap -e 'keycode 77 = '.
  • A todas las futuras sesiones X, dentro del ~/.xprofilelugar xmodmap -e 'keycode 77 = '.

    EDITAR: Nota: No funciona si un software está cambiando el estado de Num Lock.

emp.justine
fuente
1
El comando xmodmap -e 'keycode 77 = 'funciona, pero causa un problema grave: todas mis
combinaciones de
Bueno, puede intentar asignarlo a una clave válida e inofensiva. Me gusta xmodmap -e 'keycode 77 = Escape'(YMMV, ESC parece seguro para mí). ¿Tiene un archivo ~ / .Xmodmap? En caso afirmativo, en lugar de ~/.xprofile, coloque el keycode 77 = Escapeal final de este archivo.
emp.justine
1
El problema es que cualquier xmodmapcomando (es decir xmodmap -e 'keycode 77 = Escape') destruye mis .config/openbox/lxde-rc.xml
combinaciones de
4

Simplemente elimine la asignación de teclas NumLock asignándola a nada: primero ejecute xevy presione Num Lock (probablemente imprimirá 77), y luego ejecute el comando:

xmodmap -e "keycode # = """

donde # es el código clave de NumLock.

También pondría esto ~/.xprofilepara deshabilitar NumLock en x sesiones.

Risto Salminen
fuente
En caso de que mi pregunta original no esté clara: no quiero desactivar el bloqueo numérico. Quiero lo contrario Quiero asegurarme de que no se pueda desactivar (quiero que el bloqueo numérico esté siempre activado)
Martin Vegter
Ah, obviamente tuve un error en mi pensamiento, gracias por hacérmelo saber. :) Veré si puedo mejorar mi respuesta.
Risto Salminen
esto no tiene ningún efecto en mi sistema:xmodmap -e "remove Lock = Num_Lock"
Martin Vegter
Ahora el comando funciona, pero destruye todas mis combinaciones de teclas. Todas las combinaciones de teclas dejan de funcionar.
Martin Vegter
Bueno, no debería, según esta respuesta en superusuario .
Risto Salminen
4

foto de las opciones del tecladocon LinuxMint 17.2 e imagino que otras versiones de Ubuntu pueden ir a su configuración de TECLADO y luego LAYOUTS en esa página encontrará un pequeño botón de "opciones".

Desde allí, vaya a "opciones de compatibilidad miscelánea" y marque "las teclas numéricas siempre ingresan dígitos"

Este es un salvavidas para mí. Me fastidia muchísimo escribir un número y ser trasladado a otro lugar de la página. ¡Aclamaciones! ;)

drifter volador
fuente
1
¡Esta respuesta debería tener muchos más puntos!
Carlos Gant
Esto se puede hacer también desde la línea de comandos setxkbmap -option numpad:maco mediante el establecimiento Option "XkbOptions" "numpad:mac"de xorg.conf.
j123b567
2

Otras respuestas aquí sugirieron usar numlockx oncon xmodmap -e 'keycode 77 =', pero numlockx onno funcionarían en mi sistema junto con ese xmodmapcomando, mostrándome un mensaje de error:

$ numlockx on
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  132 (XTEST)
  Minor opcode of failed request:  2 (X_XTestFakeInput)
  Value in failed request:  0x0
  Serial number of failed request:  17
  Current serial number in output stream:  20

Y también la configuración xmodmap -e 'keycode 77 ='eliminaría por alguna razón todas mis combinaciones de teclas hechas con xbindkeys.

Sin embargo, esta respuesta a una pregunta similar me ha ayudado. Parte de mi ~/.xinitrc:

numlockx on
xmodmap -e 'keycode 77 = NoSymbol Num_Lock'

De esta manera, el NumLock no hace nada por sí mismo, pero si se presiona con Shift, cumple su propósito original (en su mayoría inútil), y lo más importante es que no impide que numlockx onfuncione en mi sistema ni estropee mis xbindkeysatajos de teclas.

jojman
fuente
1

Otra forma, si desea desactivar la numlocktecla, desactívela permanentemente. Puede hacerlo modificando su archivo de mapa de teclas actual modificando el código de tecla 77.

Establezca este valor en "ninguno", de modo que presionar accidentalmente la tecla no haga nada.

Uso numlockxen el arranque para iniciar y utilizar el archivo de mapa de teclado modificado en una de script de inicio, por ejemplo ~/.bashrc, o en /etc/profile.

NOTA: No he probado esto, pero debería funcionar.

SHW
fuente
1

En OpenSuse 13.x con KDE, esto funcionó para mí:

  • instalar numlockx
  • Agregar acceso directo personalizado:
    • Atajos personalizados -> Editar -> Nuevo -> Atajo global -> Comando / URL:
    • Nombre de acción: NumLockOn
    • Comentario: mantener el bloqueo numérico activado
    • Desencadenador: establecido en NumLockk
    • Acción-> Comando / URL: sh -c 'sleep 0.5; numlockx on'
    • Hit aplicar
    • (hecho)

Si NumLock necesita estar habilitado porque está desactivado, solo utilícelo % numlockx on.

Timothy C. Quinn
fuente
Esto es lo que necesito. Trabajando en Xubuntu 16.04.
kodmanyagha
0

Puede que no sea la mejor solución, pero esto funcionó para mí:

stdbuf -oL xinput test 11 | mawk -W interactive '$3==77 {printf "/usr/bin/numlockx on\n"}' | bash

Donde 11 es la identificación de su teclado. Haga una xinputlista para determinar la identificación de su teclado (en mi caso es 11):

user@host:~$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ DualPoint Stick                           id=12   [slave  pointer  (2)]
⎜   ↳ AlpsPS/2 ALPS DualPoint TouchPad          id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Video Bus                                 id=6    [slave  keyboard (3)]
    ↳ Sony Vaio Keys                            id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ USB 2.0 Camera                            id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]

Obviamente, numlockxdebe instalarse para que eso funcione.

Explicación:

  • stdbuf -oL modifica las operaciones de almacenamiento en búfer de la secuencia de salida a la línea almacenada en búfer
  • xinput test 11 imprime las teclas presionadas en stdout
  • mawk -W interactive '$3==77 {printf "/usr/bin/numlockx on\n"}'para cada línea que se imprime y contiene 77 (la tecla de bloqueo numérico), cree un comando /usr/bin/numlockx on...
  • | bash ... y canalizarlo a bash para ejecutarlo.

Puede insertar este oneliner en uno de los scripts iniciales de entornos de escritorio o ejecutarlo en segundo plano.

caos
fuente
0

También quiero que las teclas numéricas del teclado numérico sean siempre números, ninguna de las cosas de KP _...

Mi solución es parte de mi Remapping Apple Keyboard para usar con el repositorio de Linux .

Básicamente, simplemente reasigna Num_Lock como F20 y los números como ellos mismos.

Esta solución siempre proporciona el resultado deseado y una tecla de función adicional como beneficio adicional.

guivho
fuente
-1

Cree el siguiente script y hágalo ejecutable con chmod +x <filename>

#!/bin/bash
if [ -x /usr/bin/numlockx ];then
/usr/bin/numlockx on
fi

Ponga la ruta del archivo en .config/openbox/autostart

O colóquelo como un trabajo cron que verifica cada dos minutos y ejecuta el script si los bloqueos numéricos están desactivados.

crontab -e 
*/1 * * * * <path-to-file>

O simplemente ejecute el script en un bucle.

#!/bin/bash
  x=0
  while [ x -eq 0 ];do
    if [ -x /usr/bin/numlockx ];then
    /usr/bin/numlockx on
    fi
  done

Si no tiene numlockx, debería poder obtenerlo con sudo apt-get install numlockx

Jeight
fuente
No, ciertamente esta no es una buena solución. Lo sentimos
Martin Vegter
1
¿Puedes explicar por qué no?
Jeight
1
Bueno, porque es una solución muy sucia. No soluciona el problema subyacente, solo barre los síntomas debajo de la alfombra.
Martin Vegter
Desafortunadamente, si xmodmap no funciona, realmente no tienes otras opciones. Escribir un script para verificar y habilitar el bloqueo numérico no está barriendo el problema debajo de la alfombra. Piense en ello como un control y equilibrio para los dedos gordos tocando la tecla. No hay efectos secundarios y el script se puede detener / iniciar fácilmente en cualquier momento. Realmente no es una solución tan sucia. He visto cosas mucho peores en el código fuente real de los programas que usas todos los días.
Jeight
¿Cómo puedes estar tan seguro de que no tengo otras opciones?
Martin Vegter