Xmodmap falha ao remapear teclas modificadoras

1

Quando tento mover as teclas, para que eu tenha CapsLock em escape, Control no CapsLock e Escape no controle da esquerda, recebo o seguinte erro:

% 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

Esse é o código que falha:

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

Se eu comentar todas as linhas que começam com add ou remove , ele é executado sem nenhum erro, mas não faz o que eu quero.

Versões do programa (Gentoo x86 (estável)):

  • 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

Tudo funcionou antes da atualização.

    
por ZyX 27.04.2010 / 16:53

2 respostas

3

Na maior parte do tempo, quando recebo este erro, é porque eu tento atribuir um key-sym a um modificador, mas esse key-sym já é usado para um modificador diferente. Tente executar "xmodmap -pm" e verifique se os syms-chave que você está tentando atribuir aos modificadores ainda não foram usados.

Por exemplo, se Meta_L já estiver atribuído a, digamos, mod4, você poderá receber este erro se tentar atribuir Meta_L a mod1 sem primeiro removê-lo de mod4.

    
por 07.11.2014 / 09:52
2

De acordo com o Manual do Xmodmap , há pelo menos um passo fundamental que parece que você deixou de fora. Não apenas você deve "remover" as atribuições do bit de modificadores, você também deve "limpar" as chaves dos grupos de modificadores.

Sim, é confuso, eu sei!

Também parece que essas tarefas / comandos devem ser executados em uma determinada ordem:

  1. A remoção / limpeza de atribuições a grupos & chaves
  2. Atribuir os keyyms aos códigos de teclas desejados
  3. Adicione os keyyms aos grupos de modificadores apropriados

Vejo que esse segmento ficou inativo por um tempo e está claramente inativo (o OP resolveu ou desistiu desse problema). Mas esperamos que este esclarecimento possa ajudar alguém a lidar com uma situação semelhante.

    
por 24.01.2017 / 04:04