Сохраняйте NumLock всегда на

Канонический способ сделать это в Vim должно использовать параметр конфигурации компилятора. Ваша установка энергии почти наверняка идет с плагином компилятора для gcc. Ввести :help compiler в Vim для обнаружения больше о том, как это работает.

Для соединения gcc с c исходными файлами Вам нужно что-то вроде этого в Вашем .vimrc:

au BufEnter *.c compiler gcc
29
29.04.2016, 05:36
15 ответов

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

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

Поэтому каждый раз, когда Вы нажимаете Num, Вы деактивируете нумератор. Он выполнит нумерацию на , которая снова активирует нумерацию.

Имя происходит от моего выхода xev, который дал мне код клавиши 77 и имя Num_Lock

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

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

#!/bin/sh

sleep "$1"
numlockx on

и использовать его в связке ключей

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

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

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

xmodmap -e 'keycode 77 = Escape'

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

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

@xmodmap -e 'keycode 77 = Escape'

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

.
7
27.01.2020, 19:38

На самом деле я смог решить эту проблему раз и навсегда другим способом:

Об этом есть целая ветка:https://codereview.stackexchange.com/a/147817/104270

Но на самом деле это так же просто, как позвонить:

# the program `numlockx`  is from the package `numlockx`
# the program `setxkbmap` is from the package `x11-xkb-utils`

numlockx on
setxkbmap -option numpad:mac

после входа в GUI. Я сам использую его, и он работает без нареканий.

6
04.09.2020, 00:53

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

Прокомментируйте его ИЛИ измените 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>

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

6
27.01.2020, 19:38
  • 1
    Проблема, любой xmodmap команда (т.е. xmodmap -e 'keycode 77 = Escape') уничтожает мои существующие привязки клавиш, которые определяются в .config/openbox/lxde-rc.xml –  Martin Vegter 11.11.2013, 15:02
  • 2
    я ответил выше для получения лучше форматирования. –  X Tian 11.11.2013, 16:00
  • 3
    благодарит за Ваш ответ. Однако в моем .config/openbox/lxde-rc.xml, нет никакой строки, содержащей Numlock или Num_Lock. Когда я создаю один, это не имеет никакого эффекта: <keybind ключ = "Num_Lock"> <имя действия = "Выполняется"> <команда>/bin/true </команда> </действие> </keybind> –  Martin Vegter 11.11.2013, 16:44
  • 4
    Должен быть другой файл конфигурации, прочитанный перед тем в Вашем корневом каталоге. два места я предлагаю смотреть,/etc/xdg/openbox и/usr/share/... Если это не будет никакой справкой, то я должен буду сдаться - извините. –  X Tian 11.11.2013, 16:59
  • 5
    от 3.4.7 измененных журналов (openbox) "Фиксирует привязки клавиш, теряющиеся, если несколько привязки на том же уровне не могли бы быть переведены (Фиксирует то, чтобы заставлять VMware привязки клавиш Openbox прекратить работать)", –  X Tian 11.11.2013, 19:06

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

Используйте xmodmap для переотображения кода клавиши:

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

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

5
27.01.2020, 19:38
  • 1
    Команда xmodmap -e 'keycode 77 = ' работы, но это вызывает серьезную проблему: все мои привязки клавиш останавливают рабочий –  Martin Vegter 07.11.2013, 11:17
  • 2
    Ну, можно попытаться отобразить его на допустимый, безопасный ключ. Как xmodmap -e 'keycode 77 = Escape' (YMMV, ESC кажется безопасным для меня). У Вас есть ~/.Xmodmap файлом? Если да, вместо ~/.xprofile, поместите keycode 77 = Escape в конце этого файла. –  emp.justine 10.11.2013, 10:22
  • 3
    Проблема, любой xmodmap команда (т.е. xmodmap -e 'keycode 77 = Escape') уничтожает мои существующие привязки клавиш, которые определяются в .config/openbox/lxde-rc.xml –  Martin Vegter 11.11.2013, 14:50

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

setleds +num

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

См. также

0
27.01.2020, 19:38

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

xmodmap -e "keycode # = """

где # является кодом клавиши NumLock.

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

4
27.01.2020, 19:38
  • 1
    В случае, если мой исходный вопрос не ясен: Я не хочу выключать numlock. Я хочу противоположное. Я хочу удостовериться, что это не может быть выключено (я всегда хочу numlock на), А-ч –  Martin Vegter 06.11.2013, 13:03
  • 2
    , у меня, очевидно, была ошибка в моих взглядах, благодарит сообщить мне.:) Я буду видеть, могу ли я улучшить свой ответ. –  Risto Salminen 06.11.2013, 13:10
  • 3
    , это не имеет никакого эффекта на мою систему: xmodmap -e "remove Lock = Num_Lock" –  Martin Vegter 07.11.2013, 11:17
  • 4
    Теперь работы команды, но это уничтожает все мои привязки клавиш. Все привязки клавиш прекращают работать. –  Martin Vegter 07.11.2013, 13:37
  • 5
    Ну, это не было должно, согласно этому ответу на суперпользователе. –  Risto Salminen 07.11.2013, 13:56

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

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

Вставьте путь к файлу .config/openbox/autostart

Или поместите его как задание крона, которое проверяет каждую пару минуты и запускает скрипт, если 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

-1
27.01.2020, 19:38
  • 1
    Нет, это - конечно, не хорошее решение. Жаль –  Martin Vegter 08.11.2013, 17:18
  • 2
    можно объяснить почему нет? –  Jeight 08.11.2013, 19:52
  • 3
    Ну, потому что это - очень грязное обходное решение. Это не решает базовую проблему, это только скрывает признаки. –  Martin Vegter 11.11.2013, 15:01
  • 4
    , К сожалению, если xmodmap не работает, у Вас действительно нет никаких других опций. При записи сценария, чтобы проверить и включить numlock, не развертывает проблему под ковриком. Думайте о нем как о проверке-и-балансе на жир, перебирающий ключ. Нет никаких побочных эффектов, и сценарий может легко быть остановлен/запущен в любое время. Это действительно не настолько грязно из обходного решения. Я видел намного намного хуже сделанный в фактическом исходном коде программ, что Вы используете каждый день. –  Jeight 11.11.2013, 20:52
  • 5
    , как можно быть так уверены, у меня нет других опций? –  Martin Vegter 24.06.2014, 16:01

возможно, случайно нажав клавишу NumLock

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

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

enter image description here

14
27.01.2020, 19:38

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

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

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

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

.
1
27.01.2020, 19:38

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

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

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

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

.
0
27.01.2020, 19:38

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

  • установить numlockx
  • Добавить собственный ярлык: {{ 1}}
    • Пользовательские ярлыки -> Редактировать -> Создать -> Глобальный ярлык -> Команда / URL:
    • Название действия: NumLockOn
    • Комментарий: оставить номер блокировки на
    • Триггер: установить на NumLockk
    • Действие-> Команда / URL: sh -c 'sleep 0.5; numlockx on'
    • Hit apply
    • (done)

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

1
27.01.2020, 19:38

pic of keyboard options с LinuxMint 17.2 и я воображаю другие версии Ubuntu, вы можете пойти в свою КЛАВИШНУЮ настройку и затем РАСПОЛОЖЕНИЯ на той странице, вы найдете маленькую кнопку «вариантов».

Перейдите на страницу «misc compatibility options» и проверьте «Числовые ключи всегда вводят цифры»

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

4
27.01.2020, 19:38

Я также хочу, чтобы на цифровых клавишах цифровой клавиатуры всегда были цифры, а не всякие KP_... штуки.

Мое решение является частью моего Remapping Apple Keyboard for use with Linux репозитория.

По сути, оно просто переставляет Num_Lock как F20, а цифры как сами по себе.

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

0
27.01.2020, 19:38

В других ответах здесь предлагается использовать 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.

3
27.01.2020, 19:38

Я исхожу из предположения, что "всегда включено" означает "ВСЕГДА ВКЛЮЧЕНО!"

Я также предполагаю, что Num Lock так же раздражает в текстовом режиме, как и в графическом... потому что это так.

Если сборка ядер — это ваша проблема, и вы не хотите снимать физическую заглушку с клавиатуры, то вот лучшее решение, которое я нашел...

Джаскаран Вир Сингх | Навсегда отключить Numlock через ядро ​​Linux

Подводя итог, на случай разрыва ссылки и т. д.:

Найдите этот файл в исходном коде ядра и откройте его в vim(, поскольку все другие текстовые редакторы бесполезны):

./drivers/tty/vt/keyboard.c

Найдите функцию:

static void k_pad(struct vc_data *vc, unsigned char value, char up_flag)

Найдите оператор if:

if (!vc_kbd_led(kbd, VC_NUMLOCK))

И закомментируйте (или удалите )весь блок:

/*
if (!vc_kbd_led(kbd, VC_NUMLOCK)) {

    switch (value) {
    case KVAL(K_PCOMMA):
    case KVAL(K_PDOT):
        k_fn(vc, KVAL(K_REMOVE), 0);
        return;
    case KVAL(K_P0):
        k_fn(vc, KVAL(K_INSERT), 0);
        return;
    case KVAL(K_P1):
        k_fn(vc, KVAL(K_SELECT), 0);
        return;
    case KVAL(K_P2):
        k_cur(vc, KVAL(K_DOWN), 0);
        return;
    case KVAL(K_P3):
        k_fn(vc, KVAL(K_PGDN), 0);
        return;
    case KVAL(K_P4):
        k_cur(vc, KVAL(K_LEFT), 0);
        return;
    case KVAL(K_P6):
        k_cur(vc, KVAL(K_RIGHT), 0);
        return;
    case KVAL(K_P7):
        k_fn(vc, KVAL(K_FIND), 0);
        return;
    case KVAL(K_P8):
        k_cur(vc, KVAL(K_UP), 0);
        return;
    case KVAL(K_P9):
        k_fn(vc, KVAL(K_PGUP), 0);
        return;
    case KVAL(K_P5):
        applkey(vc, 'G', vc_kbd_mode(kbd, VC_APPLIC));
        return;
    }
}
*/

...сохраняйте, создавайте, устанавливайте, загружайтесь, получайте прибыль и наслаждайтесь!

Изменить :Я подумал, что должен убедиться, что это работает в моей текущей системе... в текстовом режиме работает, а в графическом нет. Я предполагаю, что это может иметь какое-то отношение к драйверу Xorg... в любом случае, как упоминалось в другом ответе , добавление этого в xorg.conf решает:

Section "InputClass"
    Identifier  "Keyboard Defaults"
    Option      "XkbOptions" "numpad:mac"
EndSection

...и таким образом конечным результатом является вечное совершенство Num Lock.

4
03.09.2020, 19:27

Теги

Похожие вопросы