Diagnosticando erros do xmodmap

4

Estou recebendo este erro ao tentar usar xmodmap para me livrar do caps lock:

$ xmodmap -e 'clear Lock'
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:  8
  Current serial number in output stream:  8

Estou executando o xfce. Esse problema não ocorreu antes de adicionar o miniaplicativo Layouts do Teclado a um painel; antes de fazer isso, eu consegui rodar meu script xmodmap para trocar Esc e CapsLock:

!Remap Caps_Lock as Escape
remove Lock = Caps_Lock
keysym Caps_Lock = Escape

Pode ser relevante que eu escolha o alt-capslock como combinação de teclas nas preferências de Layouts de Teclado.

Eu tive um problema semelhante antes, em uma máquina diferente, executando o openbox. Naquela máquina, esse problema começou quando atualizei para o Lucid. Eu relatei um bug no xorg. No entanto, ainda não está claro se é realmente um problema com o xorg, ou se estou apenas fazendo algo errado com a minha configuração.

Já outras pessoas experimentaram esse problema? Alguém pode lançar alguma luz sobre o que está acontecendo aqui? Parece que há algumas camadas envolvidas, e eu não entendo nenhuma delas particularmente bem, então qualquer informação seria útil.

atualização

Descobri que o problema é especificamente acionado pela adição da variante de layout do Canadá "Multilingual" (ca-multix). Se, em vez disso, adicionar a variante "Multilingual (primeira parte)" (ca-multi), o problema não ocorrerá. Acho que isso provavelmente acabará sendo uma solução útil, mas ainda não sei qual é a diferença entre essas variantes.

Arquivei um problema do freedesktop e estou comentando sobre um assunto relacionado outdo de Ubuntu .

    
por intuited 05.12.2010 / 04:59

3 respostas

2

O Xorg moderno usa a extensão XKB para suportar layouts de teclado. Xmodmap é emulado através de uma camada de compatibilidade, mas tem peculiaridades. Você pode desabilitar o XKB completamente e o Xorg irá voltar a usar os antigos mapeamentos de teclado do Xmodmap. Eu acho que está configurando a opção XkbDisable para true em xorg.conf, mas você provavelmente quer fazer o método XKB. Existem muitas opções configuráveis localizadas em /usr/share/X11/xkb/rules/xorg.xml e eu acho que você quer caps: swapescape que troca Caps Lock e Escape. Tente setxkbmap -option caps: swapescape

    
por 31.03.2011 / 04:55
1

O problema surge quando você tenta adicionar um keysym a um modificador que já está adicionado a outra tecla modificadora. É vital saber que, se você adicionar um keysym a um modificador, todos os outros keyyms que acompanham o keysym no caso são adicionados também a esse modificador.

Por exemplo:

clear mod5
add mod5    = ISO_Level3_Shift Mode_switch

pode resultar em

mod5        backslash (0x33),  Caps_Lock (0x42),  ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

porque você tem algo parecido

keycode  66 = Caps_Lock NoSymbol ISO_Level3_Shift

no seu ~ / .Xmodmap (ou .xmodmap, ... Você pode visualizar o código de acesso atual para o mapeamento de keysym via " xmodmap -pke ")

que produzirá o erro BadValue em questão quando você também tentar fazer algo como

add lock    = Caps_Lock

porque o Caps_Lock já está adicionado ao modificador mod5.

    
por 20.05.2011 / 18:07
0
setxkbmap -option caps:escape # use caps as esc

ou

setxkbmap -option caps:swapescape # to swap caps with esc
    
por 15.08.2013 / 17:10

Tags