Чому в Cinnamon / Linux / Xorg відключена клавіша Scroll Lock?


13

Нещодавно я придбав клавіатуру з підсвічуванням, яка була розроблена таким чином, що клавіша Scroll Lock використовується для перемикання заднього світла. Я швидко виявив, що Кориця не реагує належним чином при натисканні клавіші прокрутки. Спочатку я думав, що підсвічування клавіатури була DOA, оскільки все інше працювало поза коробкою. Після перезавантаження я виявив, що перед запуском Xorg мені вдалося переключити підсвічування за допомогою клавіші Scroll Lock. Потім, знову після запуску Xorg (і, отже, cinnamon_session), ця функція знову перестала працювати.

Для того, щоб підсвітка працювала після запуску Xorg, я був змушений випустити: xset led named "Scroll Lock"увімкнути та вимкнути цю функціональність.

Після невеликих досліджень я натрапив на програму під назвою, xevяка скидала ключову інформацію про події після терміналу. Після натискання клавіші Scroll Lock термінал заповнюється цією інформацією:

Подія KeyPress, серійний 34, синтетичний НЕТ, вікно 0x2c00001, корінь 0x2df, subw 0x0, час 2609824, (410,0), корінь: (1724,142), стан 0x0, клавішний код 78 (клавіша 0xff14, Scroll_Lock), той самий екран YES, XLookupString дає 0 байт: XmbLookupString дає 0 байт: XFilterEvent повертає: False

Подія KeyRelease, серійний 37, синтетичний НІ, вікно 0x2c00001, корінь 0x2df, subw 0x0, час 2609912, (410,0), корінь: (1724,142), стан 0x0, клавішний код 78 (клавіша 0xff14, Scroll_Lock), той же_екран ТАК, XLookupString дає 0 байт:

Тому я знаю, що ключова подія надсилається до ядра.

Крім того, що цікаво, я спостерігав дивну поведінку, коли знаходився в терміналі (ще до запуску Xorg або Cinnamon) та користуючись Scroll Lock. А саме, в цей момент моя підсвічування перемкнула, як очікувалося, але коли увімкнено функцію прокрутки, я нічого не набрав, на екрані не було написано. Після відключення програми Scroll Lock все, що я написав, негайно перекидається на термінал, як ніби він раніше був завантажений.

tl; dr Яка угода з прокруткою Lock та Xorg?


Пощастило вирішити це питання @sherrellbc?
Піклер

Відповіді:


10

Я не знайомий із Корицею, але слід включити ваш ключ прокрутки.

По-перше, ми повинні дізнатися, чи є у вас запасний гніздо для модифікатора клавіатури. Виконати:

xmodmap -pm

Це надрукує список вашої поточної установки модифікатора. Сподіваємось, в одному з цих рядків не буде вказаних жодних ключів; взагалі, що буде mod3. Якщо припустити, що це так, ви можете ввімкнути Блокування прокрутки за допомогою цієї команди:

xmodmap -e "add mod3 = Scroll_Lock"

Тепер ваш світлодіодний блок "Блокування прокрутки" повинен відповідати натисканням клавіш "Блокування прокрутки".

Якщо це працює, ви, ймовірно, хочете, щоб X робив це автоматично, коли він починається. Існують різні способи зробити це: це можна зробити на основі кожного користувача, але для чогось подібного, я думаю, має сенс встановити його в усьому світі.

Але я ніколи цього не робив раніше, тому краще перевірити це, перш ніж подавати детальнішу інформацію. :)

ГАРАЗД. Метод, який я намагався активувати цей мод-карту в усьому світі, не працює для мене в KDE. :( Але активація цього в моєму домашньому каталозі, здається, працює нормально.

Створіть .Xmodmapу домашньому каталозі файл, що містить цей рядок:

add mod3 = Scroll_Lock

Найпростіший спосіб зробити це:

cd ~
echo >.Xmodmap "add mod3 = Scroll_Lock"

Тепер перезапустіть X (вихід та вхід знову). Сподіваємось, ваша клавіша прокрутки буде працювати. Якщо це не так, будь ласка, повідомте мене про це.


Конфігурація .Xmodmap не працювала для мене на Ubuntu 16.04 / Unity, але постійне рішення у відповіді Pykler спрацювало :)
Nebel54

7

Знайшов постійний шлях після довгої ночі з великою кількістю напівзапечених розчинів.

# backup your symbols file
sudo cp /usr/share/X11/xkb/symbols/us{,.distribution} 

Додайте наступний рядок у xkb_symbols "basic" {розділ. не хвилюйтесь, якщо цього другого рядка немає, він є лише для деяких мов і не був для нас у моїй системі.

...
    modifier_map Mod3   { Scroll_Lock }; <==<< Add this line

    include "level3(ralt_switch)" <==<< before this line
};

Можливо, вам доведеться зробити те саме в інших макетах, якщо ви переходите між мовами

Також є кеш, де живуть макети xkb. Ви повинні очистити його перед перезавантаженням сервера X, щоб перевірити нові файли символів клавіатури.

sudo rm -f /var/lib/xkb/*

Це добре, але він працював лише разом зі зміною gsettings та зміною xkboptions, згаданими в askubuntu.com/a/1067921/274298 .
peschü

2

Оскільки це Scroll Lockможе заважати комбінаціям клавіш, коли активовано (ім'я F12, Ctrl+ Spaceне працюватиме, як очікувалося), я вирішив узгодити Scroll Lockключ до ручного запуску xset, переключивши світлодіодний стан щодо його попереднього стану.

Я створив виконуваний сценарій на ім'я toggle_keyb_led.sh:

xset q | awk '/LED/{ if ($10 ~ "00000000") print "led"; else print "-led" }' | xargs xset

Це аналізує висновок xset q, узгоджуючи рядок з LED mask.

Примітка 1 : Якщо для вас не працює, перевірте, xset -led; xset q | grep 'LED'що є поточним значенням маски.

Примітка 2. Деяким користувачам потрібно запустити, xset led 3щоб активувати світло. У цьому випадку, будь ласка, перепишіть вище скрипт.


Тоді ви можете запустити цей скрипт як користувацький ярлик за допомогою робочого середовища на зразок (ось із Корицею):

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

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