Проблема клавішної роботи під час роботи з Emacs та Openbox


17

У мене є клавіатура Apple, і мені довелося виконати повторну перестановку клавіш, щоб зробити mod-4клавішу першою клавішею зліва від Spaceпанелі під час роботи з Emacs. Наведений нижче сценарій чудово працював, коли я використовував диспетчер вікон dwm, але після переходу на Openbox я виявив, що замість того, щоб замінювати клавіші коду між клавішами опцій та командами, обидва ключі роблять те саме.

Одне дивне, що я помітив, - це нове налаштування, коли я натискаю запуск showkeyі натискаю на параметри та командні клавіші, отримую відповідно 56 і 125, але ці клавіші взагалі не працюють, коли вставляти їх у нижченаведений сценарій замість 64 та 133.

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

.xmodmap

# switch alt and command...the switch is not being done properly
xmodmap -e "keycode 64 = Alt_L"
xmodmap -e "keycode 133 = Meta_L"

# remap of mod 4
xmodmap -e "clear Mod4"
xmodmap -e "add Mod4 = Super_L"

Оновлення

Я звик до попереднього налаштування клавіатури і відмовився від спроб налаштувати його. На жаль, після недавнього Перезапустіть , CapsLockщоб Ctrlбільше не працював так що тут я не буду знову.

Цього разу замість відображення, яке використовувалося вище, я біг xmodmap -pke > ~/.xmodі замість нього підправляв ключі (що набагато простіше).

Однак все ще не зовсім правильно. Ці CapsLockфункції ще як зазвичай , за винятком , коли xevкоманда запущена, то вона повертає наступне , який робить , здається , щоб показати правильне відображення:

# caplock
KeyRelease event, serial 40, synthetic NO, window 0x2200001,
root 0x156, subw 0x0, time 4858000, (57,-31), root:(426,402),
state 0x2, keycode 66 (keysym 0xffe3, Control_L), same_screen YES,
XKeysymToKeycode returns keycode: 37
XLookupString gives 0 bytes: 
XFilterEvent returns: False

# ctrl-L
KeyRelease event, serial 40, synthetic NO, window 0x2200001,
root 0x156, subw 0x0, time 4805947, (686,148), root:(1055,581),
state 0x4, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes: 
XFilterEvent returns: False

# Alt-L
KeyPress event, serial 40, synthetic NO, window 0x2200001,
root 0x156, subw 0x0, time 4555825, (-158,-649), root:(959,133),
state 0x0, keycode 64 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes: 
XmbLookupString gives 0 bytes: 
XFilterEvent returns: False

# Super-L
KeyRelease event, serial 40, synthetic NO, window 0x2200001,
root 0x156, subw 0x0, time 4920564, (-63,169), root:(306,602),
state 0x40, keycode 133 (keysym 0xffe9, Alt_L), same_screen YES,
XLookupString gives 0 bytes: 
XFilterEvent returns: False

4
На комп'ютерах (я не знаю, чи це правда і в Macs) showkeyне відображаються ті самі коди клавіш, що і X. Запустіть, xevщоб побачити X клавішних кодів та їх дії. Покажіть нам результат xmodmap -pmта вихід, xevколи ви натискаєте кожну із включених клавіш.
Жил 'SO- перестань бути злим'

Я додав вище оновлення для команди xmodmap -pm
chris

Ви можете поглянути на wiki.archlinux.org/index.php/Apple_Keyboard та help.ubuntu.com/community/AppleKeyboard . Підводячи підсумок, ви можете сказати драйверу клавіатури в ядрі поводитись по-різному, а не зламати речі в X.
wingedsubmariner

Якщо він працював у DWM, я здогадуюсь, що в цьому полягає конфлікт ~/.config/openbox/rc.xml.
МайорБріггс

Чи думали ви використовувати udev для перенастроювання ключів замість xmodmap? udev просто зажадає файл hwdb, щоб перекомпонувати сканирующие коди до конкретних клавішних кодів.
Centimane

Відповіді:


1

Напевно, вам потрібно розмістити наступне на початку свого ~/.xmod

remove Lock = Caps_Lock
remove Control = Control_L
remove Mod1 = Alt_L Meta_L
remove Mod4 = Super_L Hyper_L

А нижче внизу ~/.xmod

add Control = Control_L
add Mod1 = Alt_L Meta_L
add Mod4 = Super_L Hyper_L

Це оновить систему, щоб визнати характер модифікатора цих клавіш.

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