Тримайте NumLock завжди ввімкненим


29

У мене стандартна клавіатура з цифровими клавішами праворуч (я думаю, це називається клавіатурою 104 клавіш). Я хочу використовувати цифрові клавіші лише як цифрові клавіші. Це означає, що я не хочу NumLockвмикати та вимикати цифрові клавіші.

Однак іноді трапляється (я не знаю, як, можливо, випадково натиснувши NumLockклавішу) numlock вимкнено, і мені доведеться натиснути його ще раз. Це надзвичайно дратує.

Чи можна відключити відключення numlock?

Іншими словами: я хочу, щоб мої цифрові клавіші завжди виконували роль цифрових клавіш і вимикали перемикач numlock .

Я використовую Debian та LXDE (Openbox).



@MartinVegter Чи хотіли б ви розмістити тут вміст ~/.config/openbox/autostartта ~/.config/openbox/rc.xml?
Risto Salminen

Потрібна подія, яка запустить Numlock знову, якщо виявить, що numlock ВКЛ. Вимкнути numlock так само просто, як згадується в xmodmap. Залишилося лише питання - як отримати цю подію ......?
SHW

Відповіді:


7

Прочитавши всю відповідь тут, я був дуже здивований, побачивши, що ви можете зробити наступне.

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

Тому кожен раз, коли ви натискаєте Num, що деактивує дімблок. Він виконає numlockx on, що повторно активує numlock.

Назва походить від мого виходу, xevякий дав мені код ключа 77 та ім'яNum_Lock

У випадку @MartinVegters йому потрібно було почекати кілька секунд, щоб 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 та документи LXDE ) Можливо, вам знадобиться створити цей файл і додати цей рядок.

@xmodmap -e 'keycode 77 = Escape'

На жаль, як я вже сказав, я не можу перевірити, чи працює це, оскільки у мене працює лише VM, що працює з LXDE.


1
Я спробував ваше рішення, <keybind key="Num_Lock">але, на жаль, це не працює. Поки команда numlockx onвиконується, <kbd> NumLock </kbd> як і раніше зберігає свою функцію як numlock. Тому я все ще можу вмикати / вимикати numlock.
Мартін Вегтер

Щодо іншого рішення, використовуючи xmodmap, коли я спробував рішення, запропоноване Рісто Салмінен, команда спрацювала, але я втратив усі свої ключові прив’язки.
Мартін Вегтер

@MartinVegter Mhh, ви можете спробувати sleep 3; numlockx onключ для прив’язки. Для другого рішення ви спробували це з автозапуском?
Рафаель Аренс

Я не розумію чому, але навіть sleep 3; /usr/bin/numlockx onне працює. NumLockяк і раніше працює як перемикач включення / вимкнення.
Мартін Вегтер

@MartinVegter /usr/bin/numlockx onпрацює у вашій системі?
Рафаель Аренс

13

можливо, я випадково натиснув NumLockключ

Якщо клавіатура ваша (а не, наприклад, роботодавець), просто фізично вийміть її з клавіатури .

Ви все одно можете натискати на це влучною річчю, якщо вам це дійсно потрібно.

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


4
Так, +1. Простий - елегантний.
ypercubeᵀᴹ

1
на жаль стан за замовчуванням мого NumLuck невірний :(
MichaelChirico

6

На моїй клавіатурі ноутбука (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"

Знову повертає. (Можливо, поздоровлення для Num_lock було б кращою ідеєю, але ви отримаєте суть).

Відповідь на коментар @Martin Vegter

Гаразд , у відповідь на ваш коментар xmodmap руйнує ваші зв'язки, зрозуміли.

Я щойно перевірив документацію на Openbox

Погляньте в ~ / .config / openbox / lxde-rc.xml

ls -l lxde-rc.xml (у вас також є rc.xml?, будь ласка, перевірте).

взяти його копію як резервну копію

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

Ви бачите щось подібне?

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

Прокоментуйте це чи змінити Зв'язок клавіш-клавіші на альтернативну, наприклад, Alt-Numlock для перемикання

key="A-Numlock"

Напр

Для того, щоб Закоментуйте

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

або

Перейдіть до переключення Alt + Numlock

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

зберегти зміни та вийти / увійти або перезапустити.


Проблема в тому, що будь-яка xmodmapкоманда (тобто xmodmap -e 'keycode 77 = Escape') руйнує мої існуючі прив'язки ключів, які визначені в.config/openbox/lxde-rc.xml
Мартін Вегтер

1
Я відповів вище, щоб отримати краще форматування.
X Tian

Дякуємо за Ваш відповідь. Однак у моєму .config/openbox/lxde-rc.xmlнемає рядка, що містить Numlockабо Num_Lock. Коли я створюю, це не має ефекту: <keybind key = "Num_Lock"> <ім'я дії = "Виконати"> <command> / bin / true </command> </action> </keybind>
Мартін Вегтер

1
Має бути ще один конфігураційний файл, який читається перед тим у вашому домашньому каталозі. два місця, які я пропоную шукати, / etc / xdg / openbox та / usr / share / ... Якщо це не допоможе, мені потрібно буде здатися - вибачте.
X Tian

від 3.4.7 змінено журнал (openbox) "Виправити прив'язку клавіш, втратившись, якщо декілька прив’язок на одному рівні не вдалося перекласти (Виправлення VMWare спричиняє припинення роботи клавіш Openbox)"
X Tian

5

Знайдіть код клавіші numlock за допомогою xev. Наприклад, тут Num_Lock - 77.

Використовуйте xmodmap, щоб перевстановити код ключа:

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

    EDIT: Примітка: Не працює, якщо програмне забезпечення змінює стан Num Lock.


1
Команда xmodmap -e 'keycode 77 = 'працює, але це викликає серйозну проблему: усі мої прив'язки ключів перестають працювати
Мартін Вегтер

Ну, ви можете спробувати відобразити його на дійсному, нешкідливому ключі. Як xmodmap -e 'keycode 77 = Escape'(YMMV, ESC мені здається безпечним). У вас є файл ~ / .Xmodmap? Якщо так, замість цього ~/.xprofile, розмістіть keycode 77 = Escapeв кінці цього файлу.
emp.justine

1
Проблема в тому, що будь-яка xmodmapкоманда (тобто xmodmap -e 'keycode 77 = Escape') руйнує мої існуючі прив'язки ключів, які визначені в.config/openbox/lxde-rc.xml
Мартін Вегтер

4

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

xmodmap -e "keycode # = """

де # - ключовий код NumLock.

Ви також покладете це, ~/.xprofileщоб відключити NumLock у x сеансах.


Якщо моє первісне питання не зрозуміло: я не хочу вимикати numlock. Я хочу навпаки. Я хочу переконатися, що його не можна вимкнути (я хочу, щоб
numlock

Ах, я, очевидно, помилився в своєму мисленні, дякую, що дав мені знати. :) Я побачу, чи зможу я покращити свою відповідь.
Risto Salminen

це не впливає на мою систему:xmodmap -e "remove Lock = Num_Lock"
Мартін Вегтер

Тепер команда працює, але вона руйнує всі мої прив'язки ключів. Усі прив'язки клавіш припиняють свою роботу.
Мартін Вегтер


4

рис параметрів клавіатуриз LinuxMint 17.2, і я думаю, що в інших версіях Ubuntu ви можете перейти до налаштування KEYBOARD, а потім НАЗАД на цій сторінці ви знайдете невелику кнопку "параметри".

Звідти перейдіть до "Параметри сумісності з різними" та встановіть прапорець "цифрові клавіші завжди вводять цифри"

Це рятівник для мене. Це помилка у мене, щоб набрати номер і переміститися кудись ще на сторінці. Ура! ;)


1
Ця відповідь повинна мати набагато більше балів!
Карлос Гант

Це можна зробити також з командного рядка, setxkbmap -option numpad:macабо встановивши Option "XkbOptions" "numpad:mac"в xorg.conf.
j123b567

2

Інші відповіді тут пропонують використовувати 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ключові прив’язки.


1

Інший спосіб, якщо ви хочете numlockостаточно відключити ключ, відключіть. Це можна зробити, змінивши поточний файл ключової карти, змінивши код коду 77.

Встановіть це значення на "немає", щоб випадкове натискання клавіші нічого не призвело.

Використовуйте numlockxпід час завантаження, щоб запустити його та використовувати модифікований файл клавіатури в одному зі стартових сценаріїв, наприклад, ~/.bashrcабо в /etc/profile.

ПРИМІТКА. Я цього не перевіряв, але це має працювати.


1

У OpenSuse 13.x з KDE це працювало для мене:

  • встановити numlockx
  • Додати спеціальний ярлик:
    • Спеціальні ярлики -> Редагувати -> Нове -> Глобальний ярлик -> Команда / URL:
    • Назва дії: NumLockOn
    • Коментар: Тримайте numlock
    • Тригер: встановлено NumLockk
    • Дія-> Команда / URL: sh -c "сплять 0,5; numlockx увімкнено"
    • Натисніть застосувати
    • (зроблено)

Якщо NumLock потрібно ввімкнути, оскільки його вимкнено, просто використовуйте % numlockx on.


Це те, що мені потрібно. Працює над Xubuntu 16.04.
kodmanyagha


0

Це може бути не найкращим рішенням, але це працювало для мене:

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 друкує натиснуті клавіші для викреслювання
  • mawk -W interactive '$3==77 {printf "/usr/bin/numlockx on\n"}'для кожного рядка, який надрукується і містить 77 (клавіша numlock), побудуйте команду /usr/bin/numlockx on...
  • | bash ... і передайте його на удар, щоб його виконати.

Ви можете вставити цей oneliner в один із початкових сценаріїв робочого середовища або запустити його у фоновому режимі.


0

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

Моє рішення є частиною моєї програми перегляду клавіатури Apple для використання з Linux repo.

В основному, він просто переосмислює Num_Lock як F20, а числа як самі.

Це рішення завжди забезпечує бажаний результат та додаткову функціональну клавішу як перевагу бахроми.


-1

Створіть наступний сценарій і зробіть його виконуваним за допомогою chmod +x <filename>

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

Покладіть шлях до файлу .config/openbox/autostart

Або розмістіть це як роботу з кроном, яка перевіряє кожні пару хвилин і запускає сценарій, якщо вимкнено блокування.

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


Ні, це, звичайно, не вдале рішення. Вибачте
Мартін Вегтер

1
Чи можете ви пояснити, чому ні?
Jeight

1
Ну, тому що це дуже брудне рішення. Це не виправляє основної проблеми, вона лише підмітає симптоми під килим.
Мартін Вегтер

На жаль, якщо xmodmap не працює, у вас насправді немає інших варіантів. Написання скрипту для перевірки та включення numlock не спричинює проблеми під килимком. Подумайте про це як контрольний баланс жиру, перебираючи ключ. Побічних ефектів немає, і сценарій можна легко зупинити / запустити в будь-який час. Це справді не так брудно. Я бачив набагато гірше у фактичному вихідному коді програм, якими ви користуєтесь щодня.
Jeight

як ти можеш бути таким впевненим, що я не маю інших варіантів?
Мартін Вегтер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.