Держите NumLock всегда включенным

У меня есть стандартная клавиатура с числовыми клавишами с правой стороны (я думаю, это называется 104-клавишной клавиатурой). Я хочу использовать цифровые клавиши только как цифровые клавиши. Это означает, что я не хочу, чтобы NumLock включал и выключал цифровые клавиши.

Однако иногда это случается (я не знаю, как, возможно, случайно случайно нажав клавишу NumLock ), что numlock выключен, и я должен снова нажать его. Это очень раздражает.

Можно ли отключить отключение numlock?

Другими словами: я хочу, чтобы мои числовые клавиши всегда действовали как цифровые клавиши и отключили переключатель numlock .

Я использую Debian и LXDE (Openbox).

13 Solutions collect form web for “Держите NumLock всегда включенным”

Прочитав весь ответ, я был очень удивлен, увидев, что вы можете сделать следующее.

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

Поэтому каждый раз, когда вы нажимаете Num , который деактивирует numlock. Он будет выполнять numlockx on , что реактивирует numlock.

Название происходит от моего вывода xev который дал мне код ключа 77 и имя Num_Lock

В случае @MartinVegters ему нужно было подождать несколько секунд, чтобы numlockx on определен после выполнения numlockx on Num . Поскольку между обработкой numlock в ядре и выполнением numlockx .

Для этого случая вы можете написать небольшой скрипт denumlock.sh как

 #!/bin/sh sleep "$1" numlockx on 

и использовать его в привязке клавиш

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

Это грязно, но оно работает.

Я рекомендую следующее, что я не мог проверить сам. Вы лучше следуете первым ответам, которые предлагают использовать

 xmodmap -e 'keycode 77 = Escape' 

Но для LXDE вам нужно использовать механизм автозапуска LXDE, который отличается от метода Openbox редактирования ~/.config/openbox/autostart .

В LXDE вам, видимо, нужно отредактировать ~/.config/lxsession/LXDE/autostart или с Lubuntu ~/.config/lxsession/Lubuntu/autostart , в котором содержатся команды для запуска. (См. Документы Arch docs и LXDE ) Возможно, вам потребуется создать этот файл и добавить эту строку.

 @xmodmap -e 'keycode 77 = Escape' 

К сожалению, как я уже сказал, я не могу проверить, работает ли это, так как у меня только виртуальная машина работает с LXDE.

возможно, я случайно ударил ключ NumLock

Если клавиатура принадлежит вам (а не вашему работодателю), просто удалите ее с клавиатуры физически.

Вы все равно можете надавить на него с помощью заостренной вещи, если вам действительно нужно.

введите описание изображения здесь

На моей клавиатуре ноутбука (Ubuntu 10.04) блокировка клавиатуры в данный момент включена.

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

Вуаля! numlock теперь отключен.

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

Вернет обратно. (Может быть, greping для Num_lock был бы лучшей идеей, но вы получите суть).

Ответ на комментарий @Martin Vegter.

Хорошо , в ответ на ваш комментарий xmodmap разрушает ваши привязки, понимается.

Я только что проверил Openbox Documentation

Взгляните в ~ / .config / openbox / lxde-rc.xml

ls -l lxde-rc.xml (у вас есть rc.xml, пожалуйста, проверьте).

возьмите его копию как резервную копию

(используйте редактор) для поиска numlock (возможно, nmlk).

Вы видите что-то вроде этого?

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

Комментируйте это ИЛИ измените значение ключа keybind на альтернативу, например Alt-Numlock для переключения

 key="A-Numlock" 

Например

Комментировать

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

или

Изменить на Alt + Numlock toggle

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

сохранить изменения и выйти / войти в систему или перезапустить.

Найдите свой код xev с xev . Например, здесь Num_Lock имеет значение 77.

Используйте xmodmap для переназначения кода ключа:

  • Для текущих сеансов X внутри оболочки используйте xmodmap -e 'keycode 77 = ' .
  • Для всех будущих сеансов X внутри ~/.xprofile поместите xmodmap -e 'keycode 77 = ' .

    EDIT: Примечание. Не работает, если программное обеспечение изменяет состояние Num Lock.

Просто удалите сопоставление ключей NumLock, сопоставив его ни с чем: сначала запустите xev и нажмите Num Lock (вероятно, напечатайте 77), а затем запустите команду:

 xmodmap -e "keycode # = """ 

где # – код ключа NumLock.

Вы также поместите это в ~/.xprofile чтобы отключить NumLock в x сеансах.

Параметры клавиатуры с LinuxMint 17.2, и я предполагаю, что другие версии Ubuntu вы можете перейти к настройке KEYBOARD, а затем LAYOUTS на этой странице вы найдете небольшую кнопку «Параметры».

Оттуда переходите к «разным вариантам совместимости» и проверяйте, что «цифровые ключи всегда вводят цифры»

Это спасение для меня. Это вызывает у меня извинения, чтобы набрать номер и переместиться в другое место на странице. Ура! 😉

Другой способ, если вы хотите отключить ключ numlock, отключается навсегда. Вы можете сделать это, изменив текущий файл ключевого слова, изменив код 77.

Установите это значение как «none», чтобы случайное нажатие клавиши ничего не сделало.

Используйте numlockx при загрузке, чтобы запустить его, и использовать модифицированный файл keymap в одном из стартовых скриптов, например ~/.bashrc или в /etc/profile .

ПРИМЕЧАНИЕ. Я не тестировал это, но он должен работать.

В OpenSuse 13.x с KDE это сработало для меня:

  • установить numlockx
  • Добавить пользовательский ярлык:
    • Пользовательские ярлыки -> Изменить -> Создать -> Глобальный ярлык -> Команда / URL:
    • Название действия: NumLockOn
    • Комментарий: держите numlock на
    • Триггер: установите значение NumLockk
    • Action-> Command / URL: sh -c 'sleep 0.5; numlockx on'
    • Хит применяется
    • (сделанный)

Если NumLock нужно включить, потому что он выключен, просто используйте % numlockx on .

Другие ответы здесь предложили использовать numlockx on с помощью xmodmap -e 'keycode 77 =' , но numlockx on не будет работать в моей системе вместе с этой командой xmodmap , показывая мне сообщение об ошибке:

 $ 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 

А также установка xmodmap -e 'keycode 77 =' по какой-то причине удалит все мои привязки клавиш, сделанные с помощью xbindkeys .

Однако этот ответ на аналогичный вопрос помог мне. Часть моего ~/.xinitrc :

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

Таким образом, NumLock ничего не делает сам по себе, но если нажать Shift, он выполняет свою оригинальную (в основном бесполезную) цель, и, самое главное, это не мешает работе numlockx on работать в моей системе или испортить мои xbindkeys клавиш xbindkeys .

Это может быть не лучшее решение, но это сработало для меня:

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

Где 11 – идентификатор вашей клавиатуры. Сделайте список xinput для определения вашего идентификатора клавиатуры (в моем случае это 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)] 

Очевидно, что numlockx должен быть установлен для этого.

Объяснение:

  • stdbuf -oL изменяет операции буферизации выходного потока на строку с буферизацией
  • xinput test 11 печатает xinput test 11 клавиши в stdout
  • mawk -W interactive '$3==77 {printf "/usr/bin/numlockx on\n"}' для каждой напечатанной строки и содержит 77 (ключ numlock), создайте команду /usr/bin/numlockx on . ..
  • | bash | bash … и перетащите его в bash, чтобы выполнить его.

Вы можете вставить этот oneliner в один из начальных сценариев среды рабочего стола или запустить его в фоновом режиме.

Я также хочу, чтобы числовые клавиши клавиатуры всегда были цифрами, ни одна из вещей KP _….

Мое решение является частью моей клавиатуры Apple Remapping для использования с репо Linux .

По сути, он просто переназначает Num_Lock как F20, а числа – сами.

Это решение всегда обеспечивает желаемый результат и дополнительный функциональный ключ в качестве дополнительной выгоды.

Довольно хакерское обходное решение состоит в том, чтобы добавить задание cron которое выполняет следующую команду

 setleds +num 

каждые 30 секунд или около того, чтобы включить NumLock.

Смотрите также

  • Включение caplock из командной строки

Создайте следующий скрипт и сделайте его исполняемым с помощью chmod +x <filename>

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

Поместите путь к файлу в .config/openbox/autostart

Или поместите его как задание cron, которое проверяет каждую пару минут и запускает скрипт, если numlocks выключен.

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

Или просто запустите скрипт в цикле.

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

Если у вас нет numlockx, вы сможете получить его с помощью sudo apt-get install numlockx

Linux и Unix - лучшая ОС в мире.