1

Когда я пытаюсь переместить клавиши, так что у меня есть CapsLock на escape, Control на CapsLock и Escape на левой панели управления, я получаю следующую ошибку:

% 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

Это код, который не работает:

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

Если я закомментирую все строки, которые начинаются с add или remove он запускается без каких-либо ошибок, но не делает то, что я хочу.

Версии программы (Gentoo x86 (стабильная версия)):

  • Xorg-сервера 1.7.6
  • Xmodmap-1.0.4
  • xf86-вход-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

Все работало до обновления.

2 ответа2

3

В большинстве случаев, когда я получаю эту ошибку, это происходит потому, что я пытаюсь назначить ключ-символ модификатору, но этот ключ-символ уже используется для другого модификатора. Попробуйте запустить "xmodmap -pm" и убедитесь, что ключевые символы, которые вы пытаетесь присвоить модификаторам, еще не используются.

Например, если Meta_L уже назначен, скажем, для mod4, вы можете получить эту ошибку, если попытаетесь назначить Meta_L для mod1 без предварительного удаления его из mod4.

2

Согласно Руководству по Xmodmap, есть, по крайней мере, один ключевой шаг, который, по-видимому, вы пропустили. Вы должны не только "удалить" назначения битов модификаторов, но и "очистить" ключи от групп модификаторов.

Да, это сбивает с толку, я знаю!

Также кажется, что эти задачи / команды должны выполняться в определенном порядке:

  1. Удаление / очистка назначений группам и ключам
  2. Назначьте ключевые символы на нужные коды клавиш
  3. Добавьте ключевые слова в соответствующие группы модификаторов

Я вижу, что этот поток был неактивен некоторое время, и он явно мертв (ОП решил или отказался от этой проблемы). Но, надеюсь, это разъяснение может помочь кому-то еще, имеющему дело с подобной ситуацией.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .