Xmodmap kann Änderungsschlüssel nicht neu zuordnen

2847
ZyX

Wenn ich versuche, Tasten so zu verschieben, dass CapsLock auf Escape, Control auf CapsLock und Escape auf Linkskontrolle stehen, erhalte ich die folgende Fehlermeldung:

% 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 

Das ist der Code, der fehlschlägt:

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 

Wenn ich alle Zeilen auskommentiere, die entweder mit addoder beginnen remove, laufen sie ohne Fehler, tun aber nicht, was ich will.

Programmversionen (Gentoo x86 (stable)):

  • 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 

Alles hat vor dem Update funktioniert.

1
Ich kann Caps Lock vergessen: Ich verwende es nicht und verwende xkboption `ctrl: nocaps`, um die Kontrolle über Caps Lock abzubilden. Aber wie kann ich mod1 (alt) der `XF86Calculator`-Taste zuordnen (sie befindet sich in der Nähe der Leertaste auf meiner Tastatur)? ZyX vor 14 Jahren 0
Letzte Ausgabe wurde gelöst: Um 'XF86Calculator' dem Alt-Modifizierer zuzuordnen, muss ich den vorhandenen Namen des Modifizierers verwenden (er ist `Alt_L`). Ich frage mich immer noch, wie man Flucht nach Caps Lock kartieren kann, aber wie gesagt, ich benutze es nie. ZyX vor 14 Jahren 0
Ich bekomme den gleichen Fehler, auch auf Gentoo. Flow vor 12 Jahren 0

2 Antworten auf die Frage

3
Per Knytt

Wenn ich diesen Fehler bekomme, liegt es meistens daran, dass ich versuche, einem Modifikator ein Schlüsselsymbol zuzuweisen, das jedoch bereits für einen anderen Modifikator verwendet wird. Führen Sie "xmodmap -pm" aus und stellen Sie sicher, dass die Tastensymbole, die Sie den Modifikatoren zuweisen möchten, nicht bereits verwendet werden.

Wenn Meta_L beispielsweise bereits mod4 zugewiesen ist, wird diese Fehlermeldung möglicherweise angezeigt, wenn Sie versuchen, Meta_L mod1 zuzuweisen, ohne es zuvor aus mod4 zu entfernen.

2
AuralArch

Gemäß dem Xmodmap-Handbuch gibt es mindestens einen Schlüsselschritt, den Sie ausgelassen haben. Sie müssen nicht nur die Modifizierer-Bit-Zuweisungen "entfernen", sondern auch die Schlüssel aus den Modifikatorgruppen "löschen".

Ja, es ist verwirrend, ich weiß!

Es scheint auch, dass diese Tasks / Befehle in einer bestimmten Reihenfolge ausgeführt werden müssen:

  1. Das Entfernen / Löschen von Zuweisungen zu Gruppen und Schlüsseln
  2. Ordnen Sie die Keysym den gewünschten Keycodes zu
  3. Fügen Sie die Keysym zu den entsprechenden Modifikatorgruppen hinzu

Ich sehe, dass dieser Thread eine Zeitlang inaktiv war und eindeutig tot ist (das OP hat dieses Problem gelöst oder aufgegeben). Aber hoffentlich kann diese Klarstellung jemandem helfen, der mit einer ähnlichen Situation umgeht.