Kiedy próbuję przenieść klucze, aby mieć CapsLock podczas ucieczki, Control na CapsLock i Escape na lewym klawiszu sterowania, pojawia się następujący błąd:
% xmodmap ~/.Xmodmap
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 118 (X_SetModifierMapping)
Value in failed request: 0x17
Serial number of failed request: 15
Current serial number in output stream: 15
Oto kod, który zawodzi:
remove Lock = Caps_Lock
! ESC
keycode 9 = Caps_Lock
add Lock = Caps_Lock
remove Control = Control_L
! CapsLock
keycode 66 = Control_L
add control = Control_L
! Control_R
keycode 37 = Escape
! 2*Meta_L
keycode 148 = Meta_L
add mod1 = Meta_L
Jeśli skomentuję wszystkie wiersze, które zaczynają się od któregoś z nich add
lub remove
działają bezbłędnie, ale nie robią tego, co chcę.
Wersje programu (Gentoo x86 (stabilny)):
- xorg-server-1.7.6
- xmodmap-1.0.4
- xf86-input-evdev-2.3.2
Xorg.conf:
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 1.0 (buildmeister@builder63) Fri Aug 14 17:54:58 PDT 2009
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0"
InputDevice "Evdev Keyboard" "CoreKeyboard"
InputDevice "Evdev Mouse" "CorePointer"
EndSection
Section "Module"
Disable "dri"
Disable "dri2"
EndSection
Section "InputDevice"
Identifier "Evdev Keyboard"
Driver "evdev"
Option "Device" "/dev/input/event2"
Option "CoreKeyboard"
Option "AutoRepeat" "500 25"
Option "XkbRules" "xorg"
Option "XkbModel" "yahoo"
Option "XkbLayout" "dvp2"
Option "XkbOptions" "grp_led:scroll,grp:rctrl_toggle,compose:rwin,grp:lwin_switch"
EndSection
Section "InputDevice"
Identifier "Evdev Mouse"
Driver "evdev"
Option "CorePointer"
Option "Device" "/dev/input/event3"
Option "Name" "Genius Ergo Mouse"
Option "HWHEELRelativeAxisButtons" "7 6"
Option "WHEELRelativeAxizButtons" "4 5"
Option "SendCoreEvents" "true"
Option "Buttons" "11"
EndSection
Section "Files"
FontPath "/usr/share/fonts/misc"
FontPath "/usr/share/fonts/Type1"
FontPath "/usr/share/fonts/100dpi"
FontPath "/usr/share/fonts/75dpi"
FontPath "/usr/share/fonts/terminus"
# FontPath "/usr/share/fonts/intlfonts"
FontPath "/usr/share/fonts/ttf-bitstream-vera"
# FontPath "/usr/share/fonts/ttf"
FontPath "/usr/share/fonts/corefonts"
FontPath "/usr/share/fonts/paratype"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 28.0 - 33.0
VertRefresh 43.0 - 72.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection
#Section "Extensions"
#Option "Composite" "Disable"
#EndSection
Section "ServerFlags"
Option "AutoAddDevices" "false"
Option "DontVTSwitch" "false"
Option "DontZap" "false"
Option "DontZoom" "true"
EndSection
Wszystko działało przed aktualizacją.
ctrl:nocaps
do mapowania kontroli na Caps Lock. Ale jak zmapować mod1 (alt) naXF86Calculator
klawisz (znajduje się w pobliżu spacji na klawiaturze)?XF86Calculator
modyfikator alt, muszę wziąć nazwę postaci istniejącego modyfikatora (tak jestAlt_L
). Nadal zastanawiam się, jak odwzorować ucieczkę na czapkę, ale, jak powiedziałem, nigdy jej nie używam.Odpowiedzi:
W większości przypadków, gdy pojawia się ten błąd, to dlatego, że próbuję przypisać symulator klucza do modyfikatora, ale symulator ten jest już używany dla innego modyfikatora. Spróbuj uruchomić „xmodmap -pm” i sprawdź, czy kombinacje klawiszy, które próbujesz przypisać modyfikatorom, nie są już używane.
Na przykład, jeśli Meta_L jest już przypisany, powiedzmy, do mod4, możesz otrzymać ten błąd, jeśli spróbujesz przypisać Meta_L do mod1 bez uprzedniego usunięcia go z mod4.
źródło
Zgodnie z instrukcją Xmodmap istnieje co najmniej jeden kluczowy krok, który wydaje się pominięty. Musisz nie tylko „usunąć” przypisania bitów modyfikatora, ale także „wyczyścić” klucze z grup modyfikatorów.
Tak, to jest mylące, wiem!
Wydaje się również, że te zadania / polecenia muszą być uruchamiane w określonej kolejności:
Widzę, że ten wątek był przez jakiś czas nieaktywny i jest wyraźnie martwy (PO rozwiązał ten problem lub zrezygnował z niego). Ale mam nadzieję, że to wyjaśnienie może pomóc komuś innemu poradzić sobie z podobną sytuacją.
źródło