Канонический способ сделать это в Vim должно использовать параметр конфигурации компилятора. Ваша установка энергии почти наверняка идет с плагином компилятора для gcc. Ввести :help compiler
в Vim для обнаружения больше о том, как это работает.
Для соединения gcc с c исходными файлами Вам нужно что-то вроде этого в Вашем .vimrc:
au BufEnter *.c compiler gcc
Прочитав здесь весь ответ, я с удивлением увидел, что Вы можете сделать следующее.
<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.
.На самом деле я смог решить эту проблему раз и навсегда другим способом:
Об этом есть целая ветка: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. Я сам использую его, и он работает без нареканий.
На моей клавиатуре ноутбука (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>
сохраните изменения и выход из системы/вход в систему или перезапуск.
xmodmap
команда (т.е. xmodmap -e 'keycode 77 = Escape'
) уничтожает мои существующие привязки клавиш, которые определяются в .config/openbox/lxde-rc.xml
– Martin Vegter
11.11.2013, 15:02
.config/openbox/lxde-rc.xml
, нет никакой строки, содержащей Numlock
или Num_Lock
. Когда я создаю один, это не имеет никакого эффекта: <keybind ключ = "Num_Lock"> <имя действия = "Выполняется"> <команда>/bin/true </команда> </действие> </keybind>
– Martin Vegter
11.11.2013, 16:44
Найдите свой numlock код клавиши с xev
. Например, здесь, Num_Lock равняется 77.
Используйте xmodmap для переотображения кода клавиши:
xmodmap -e 'keycode 77 = '
.Ко всему будущему X сессий, внутри ~/.xprofile
место xmodmap -e 'keycode 77 = '
.
Править: Примечание: Не работает, если программное обеспечение изменяет состояние Num Lock.
xmodmap -e 'keycode 77 = '
работы, но это вызывает серьезную проблему: все мои привязки клавиш останавливают рабочий
– Martin Vegter
07.11.2013, 11:17
xmodmap -e 'keycode 77 = Escape'
(YMMV, ESC кажется безопасным для меня). У Вас есть ~/.Xmodmap файлом? Если да, вместо ~/.xprofile
, поместите keycode 77 = Escape
в конце этого файла.
– emp.justine
10.11.2013, 10:22
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.
См. также
Просто удалите клавишу Num Lock, отображающуюся путем отображения его ни на что: первый показ xev
и нажмите Num Lock (он, вероятно, распечатает 77), и затем выполните команду:
xmodmap -e "keycode # = """
где # является кодом клавиши NumLock.
Вы также поместили это в ~/.xprofile
отключить NumLock на x сессиях.
xmodmap -e "remove Lock = Num_Lock"
– Martin Vegter
07.11.2013, 11:17
Создайте следующий сценарий и сделайте его исполняемым файлом с 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
возможно, случайно нажав клавишу NumLock
Если клавиатура Ваша (а не, например, работодателя), просто удалите ее с клавиатуры физически.
Вы все еще можете нажать ее с помощью заостренной штуки, если это действительно необходимо.
Другой способ, если вы хотите отключить клавишу numlock, отключите ее навсегда. Вы можете сделать это, модифицировав ваш текущий файл keymap, изменив код клавиши 77.
Установите это значение на "none", так чтобы случайное нажатие клавиши ничего не делало.
Во время загрузки используйте numlockx
и используйте модифицированный файл keymap в одном из стартовых скриптов, например, ~/.bashrc
или в /etc/profile
.
ЗАМЕЧАНИЕ: Я не тестировал это, но оно должно работать.
.Это может быть не лучшим решением, но это сработало для меня:
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
печатает нажатые клавиши на stdoutmawk -W интерактивный '$3==77 {printf "/usr/bin/numlockx on\n"}"
для каждой печатаемой строки, содержащей 77 (клавиша numlock), построить команду /usr/bin/numlockx на
. ...| bash
... и подключите его к bash для выполнения.Вы можете вставить этот oneliner в один из исходных сценариев рабочего окружения или запустить его в фоновом режиме.
.В OpenSuse 13.x с KDE у меня сработало:
Если NumLock необходимо включить, потому что он выключен, просто используйте % numlockx on
.
с LinuxMint 17.2 и я воображаю другие версии Ubuntu, вы можете пойти в свою КЛАВИШНУЮ настройку и затем РАСПОЛОЖЕНИЯ на той странице, вы найдете маленькую кнопку «вариантов».
Перейдите на страницу «misc compatibility options» и проверьте
«Числовые ключи всегда вводят цифры»
Это спасатель для меня. Это жучок из меня, чтобы ввести число и быть перемещен в другое место на странице. Ура!;)
Я также хочу, чтобы на цифровых клавишах цифровой клавиатуры всегда были цифры, а не всякие KP_... штуки.
Мое решение является частью моего Remapping Apple Keyboard for use with Linux репозитория.
По сути, оно просто переставляет Num_Lock как F20, а цифры как сами по себе.
Это решение всегда дает желаемый результат и дополнительную функциональную клавишу в качестве побочного преимущества.
В других ответах здесь предлагается использовать 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
.
Я исхожу из предположения, что "всегда включено" означает "ВСЕГДА ВКЛЮЧЕНО!"
Я также предполагаю, что 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.