Tecla ESC nas teclas personalizadas

Iniciado por ReiDaCocada, 10 de Outubro de 2014, 13:57

tópico anterior - próximo tópico

ReiDaCocada

Então, depois de beber uma xícara de café no Notebook, acabei cometendo um infeliz acidente e derramei café no teclado, por sorte, não deu nenhum problema no Note, mas a bendita tecla ESC me deixou na mão e parou de funcionar  >:(
Já procurei vários métodos pra mapear teclas, mas como sou um pouco novato no linux, não achei um que funcionasse. Então, minha última alternativa é as teclas personalizadas nas configurações do Sistema, e gostaria de saber se é possível, por exemplo, dar a mesma função da tecla ESC pra combinação Ctrl + M? ;--;

edjen

#1
Fiz bem explicado para que sirva para quem precisar ou quiser personalizar seu teclado.

OBS: Os programas necessários acredito que venham instalados por padrão


Vamos a solução do seu problema como exemplo.

A primeira coisa a fazer é identificar o código da tecla que você está pressionando, para isto existe o programa xev. Abra o terminal e digite xev. Vai abrir um quadradinho preto e diversos códigos ficarão rolando na tela do terminal conforme você digita.

TECLA ESC

KeyRelease event, serial 37, synthetic NO, window 0x5e00001,
   root 0x7c, subw 0x0, time 128419806, (-162,384), root:(829,436),
   state 0x10, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
   XLookupString gives 1 bytes: (1b) ""
   XFilterEvent returns: False

Atente para códigos com este padrão. Este código foi gerado ao pressionar a tecla ESC. Em negrito os pontos importantes.

keycode 9: Representa o código da tecla pressionada

Escape : Representa a função da tecla pressionada

...........................

TECLA CONTROL

KeyRelease event, serial 37, synthetic NO, window 0x5a00001,
   root 0x7c, subw 0x0, time 129768012, (-318,141), root:(673,193),
   state 0x14, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
   XLookupString gives 0 bytes:
   XFilterEvent returns: False

keycode 37: Representa o código da tecla pressionada

control_L : Representa a função da tecla pressionada

...................................

TECLA M

KeyRelease event, serial 37, synthetic NO, window 0x5a00001,
   root 0x7c, subw 0x0, time 129930395, (-665,74), root:(326,126),
   state 0x10, keycode 58 (keysym 0x6d, m), same_screen YES,
   XLookupString gives 1 bytes: (6d) "m"
   XFilterEvent returns: False

keycode 58: Representa o código da tecla pressionada

m : Representa a função da tecla pressionada

..........................................

Agora vem a parte simples, é só rodar o seguinte comando sem aspas:

xmodmap -e "keycode 9 = Control_L m"

Entre as aspas duplas é onde está a parte importante.


Simples assim.

É só executar este comando que já está tudo legal, só tem um problema, ao reiniciar a máquina para de funcionar. Então dentro da sua pasta home você cria um arquivo chamado .xmodmaprc, com o seguinte conteúdo:

keycode 9 = Control_L m


Ao reiniciar o Ubuntu, vai perguntar se você deseja carregar este arquivo, você diz que sim e já era, agora suas teclas estão mapeadas do jeito que você deseja.

Até mais
GNULinux = Asus P5K-E = Intel Q9450 = Quadro 400 = 3 Hd 80Gb Samsung + Hd 500Gb Seagate = 8Gb RAM DDR2 OCZ 1066 mhz

ReiDaCocada

Citação de: edjen online 30 de Outubro de 2014, 20:02
Fiz bem explicado para que sirva para quem precisar ou quiser personalizar seu teclado.

OBS: Os programas necessários acredito que venham instalados por padrão


Vamos a solução do seu problema como exemplo.

A primeira coisa a fazer é identificar o código da tecla que você está pressionando, para isto existe o programa xev. Abra o terminal e digite xev. Vai abrir um quadradinho preto e diversos códigos ficarão rolando na tela do terminal conforme você digita.

TECLA ESC

KeyRelease event, serial 37, synthetic NO, window 0x5e00001,
   root 0x7c, subw 0x0, time 128419806, (-162,384), root:(829,436),
   state 0x10, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
   XLookupString gives 1 bytes: (1b) ""
   XFilterEvent returns: False

Atente para códigos com este padrão. Este código foi gerado ao pressionar a tecla ESC. Em negrito os pontos importantes.

keycode 9: Representa o código da tecla pressionada

Escape : Representa a função da tecla pressionada

...........................

TECLA CONTROL

KeyRelease event, serial 37, synthetic NO, window 0x5a00001,
   root 0x7c, subw 0x0, time 129768012, (-318,141), root:(673,193),
   state 0x14, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
   XLookupString gives 0 bytes:
   XFilterEvent returns: False

keycode 37: Representa o código da tecla pressionada

control_L : Representa a função da tecla pressionada

...................................

TECLA M

KeyRelease event, serial 37, synthetic NO, window 0x5a00001,
   root 0x7c, subw 0x0, time 129930395, (-665,74), root:(326,126),
   state 0x10, keycode 58 (keysym 0x6d, m), same_screen YES,
   XLookupString gives 1 bytes: (6d) "m"
   XFilterEvent returns: False

keycode 58: Representa o código da tecla pressionada

m : Representa a função da tecla pressionada

..........................................

Agora vem a parte simples, é só rodar o seguinte comando sem aspas:

xmodmap -e "keycode 9 = Control_L m"

Entre as aspas duplas é onde está a parte importante.


Simples assim.

É só executar este comando que já está tudo legal, só tem um problema, ao reiniciar a máquina para de funcionar. Então dentro da sua pasta home você cria um arquivo chamado .xmodmaprc, com o seguinte conteúdo:

keycode 9 = Control_L m


Ao reiniciar o Ubuntu, vai perguntar se você deseja carregar este arquivo, você diz que sim e já era, agora suas teclas estão mapeadas do jeito que você deseja.

Até mais

Obrigado pela resposta, vou tentar suas instruções  ;D