Estou tentando remapear meu teclado para tornar o emacs utilizável. Meu teclado ergonômico coloca sua única tecla Control em uma ilha isolada de 4 teclas, à esquerda.
O sistema operacional é o Debian squeeze.
Aqui estão as linhas nas quais estou tentando alimentar xmodmap
, coloco-as em um arquivo ~ / .Xmodmap:
Controle claro limpar Mod1 ! As teclas Alt estão ativadas como 'Option' no meu teclado, ! usando o xev mostra para eles enviarem as chaves Alt_L e Alt_R respectivamente keysym Alt_L = Control_L keysym Alt_R = Control_R ! As teclas Super_L e Super_R são as teclas do Windows keysym Super_L = Alt_L Chaves_ Super_R = Alt_R adicionar Control = Control_L Control_R adicione Mod1 = Alt_L Alt_R
Meu objetivo é fazer com que minhas Altchaves Option (aka ) se comportem como teclas de controle e fazer com que minhas chaves do Windows (aka Super) se comportem como Alt.
Aqui estão os códigos de chaves e osmsms produzidos pelo xev para as chaves em questão. Observe que meu teclado (um teclado ergonômico Goldtouch) possui apenas uma tecla de controle.
keycode 37 (keysym 0xffe3, Control_L) código-chave 64 (keysym 0xffe9, Alt_L) código de chave 133 (keysym 0xffeb, Super_L) keycode 134 (keysym 0xffec, Super_R) código de chave 108 (keysym 0xffea, Alt_R)
Aqui está o que o xev exibe durante a execução xmodmap .Xmodmap
Evento MappingNotify, série 34, NO sintético, janela 0x0, solicitação MappingKeyboard, first_keycode 204, contagem 1 Evento MappingNotify, série 34, NO sintético, janela 0x0, solicitação MappingKeyboard, first_keycode 64, contagem 1 Evento MappingNotify, série 34, NO sintético, janela 0x0, solicitação MappingKeyboard, first_keycode 108, contagem 1 Evento MappingNotify, série 34, NO sintético, janela 0x0, solicitação MappingKeyboard, first_keycode 206, contagem 1 Evento MappingNotify, série 34, NO sintético, janela 0x0, solicitação MappingKeyboard, first_keycode 133, contagem 1 Evento MappingNotify, série 34, NO sintético, janela 0x0, solicitação MappingKeyboard, first_keycode 134, contagem 1
E aqui está o erro retornado por xmodmap
:
X Erro de solicitação com falha: BadValue (parâmetro inteiro fora do intervalo para operação) Opcode principal da solicitação com falha: 118 (X_SetModifierMapping) Valor na solicitação com falha: 0x17 Número de série da solicitação com falha: 17 Número de série atual no fluxo de saída: 17
alguma sugestão sobre como resolver isso?
xev
em um terminal e depoisxmodmap
em outro terminal. Você deve ver algumasMappingNotify
estrofes dexev
, adicione-as à sua pergunta. Além disso, naxev
janela, pressione as várias teclas envolvidas e diga-nos a que código de chave e código de chave eles correspondem (a parte “código de chave 37 (código de chave 0xffe3, Control_L)” da saída xev).Respostas:
Isso já foi relatado como bug Debian # 564327 , bug Debian # 565279 , bug Ubuntu # 524774 e bug do FreeDesktop 20145 . Há um patch de origem anexado à discussão de bug do FreeDesktop. Existem várias propostas de solução alternativa na discussão de bugs do Ubuntu, em particular uma
.Xmodmap
solução alternativa .fonte
Observando a solução alternativa vinculada por Giles, foi isso que funcionou para mim:
As teclas Minhas opções agora funcionam como teclas de controle e as teclas Windows como teclas Alt.
fonte
O problema surge quando você tenta adicionar um chave de acesso a um modificador que já foi adicionado a outra chave modificadora. É vital saber que, se você adicionar um keyym a um modificador, todas as outras academias que acompanham o keyym no caso serão adicionadas também a esse modificador.
Por exemplo:
pode resultar em
porque você tem algo como
no seu ~ / .Xmodmap (visualize o código-chave atual para o mapeamento de código-chave via
xmodmap -pke
)que produzirá o erro BadValue em questão quando você também tentar fazer algo como
porque Caps_Lock já foi adicionado ao mod5 mod5.
fonte
Essa é outra solução para o seu problema, embora não responda realmente à sua pergunta. Edite o xorg.conf, inserindo o seguinte na seção "InputDevice":
fonte