Problemas com DELETE no WINE

Publicado por Danilo em 29/04/2005

[ Hits: 6.746 ]

Blog: http://www.danilocesar.com

 


Problemas com DELETE no WINE



Toda vez que iniciamos algum aplicativo emulado pelo WINE com teclado ABNT2 e apertamos a tecla DEL com a intenção de deletar algum caractere, o aplicativo deleta o caractere e adiciona uma vírgula caso o Num-Lock esteja ligado.

Para revolver o problema, deve-se instalar um patch no código fonte do seu wine. Para não precisar recompilar o wine inteiro, iremos fazer apenas o necessário.

Digite o comando:

$ wine --version

Provavelmente irá retornar algo como:

Wine 20041201
Wine exited with a successful status

Sabemos que a minha versão do Wine é 20041201.

Agora entre em:
E faça o download da sua versão do wine[SUA_VERSAO].tar.gz

No meu caso, puxo o arquivo Wine-20041201.tar.gz.

Descompacto em um diretório qualquer com o comando:

$ tar -xvzf Wine-20041201.tar.gz

Edite o arquivo wine-XXXXXXX/dlls/x11drv/keyboard.c e procure pela linha que contem a seguinte string:

XLookupString(e, NULL, 0, &keysym, NULL);

Substitua as linhas:

XLookupString(e, NULL, 0, &keysym, NULL);

if ((keysym >= 0xFFAE) && (keysym <= 0xFFB9) && (keysym != 0xFFAF)
&& (e->state & NumLockMask))
/* Only the Keypad keys 0-9 and . send different keysyms
* depending on the NumLock state */
return nonchar_key_vkey[keysym & 0xFF];

TRACE_(key)("e->keycode = %x\n", e->keycode);

return keyc2vkey[e->keycode];
}

Pelas linhas:

XLookupString(e, NULL, 0, &keysym, NULL);

/* these fixmes allow you to see keysyms and keycodes
FIXME("keysym is %X\n",keysym);
FIXME("e->keycode is %X\n",e->keycode); */

/* about the numbers below:
0xFF9F: middle keyboard delete (keysym)
0x2C : keypad delete (keysym)
0x3B : comma (keycode)
*/


if ( ((keysym == 0xFF9F) || (keysym == 0x2C))
&& (e->state & NumLockMask))
{
if (keysym == 0xFF9F)
return nonchar_key_vkey[keysym & 0xFF];
if (keysym == 0x2C)
return keyc2vkey[0x3B];
}

if ((keysym >= 0xFFAE) && (keysym <= 0xFFB9) && (keysym != 0xFFAF)
&& (e->state & NumLockMask))
/* Only the Keypad keys 0-9 and . send different keysyms
* depending on the NumLock state */

return nonchar_key_vkey[keysym & 0xFF];

return keyc2vkey[e->keycode];
}

Salve o arquivo e vá ao diretório principal do código fonte do wine. Agora você irá à fase de compilação:

$ ./configure

Depois

$ make depend && make

Agora é esperar.. pode ir tomar um café, jogar um dominó... a compilação demora um pouco.

Após ter compilado corretamente, o programa gerará um arquivo x11drv.dll.so, que deve ser substituído pelo padrão do seu WINE.

Para localizá-lo, dê:

$ find / -name x11drv.dll.so

Que geralmente está em /usr/lib/wine/x11drv.dll.so.

E faça um backup dele caso precise:

$ mv /usr/lib/wine/x11drv.dll.so /usr/lib/wine/x11drv.dll.so2

Depois substitua o arquivo /usr/lib/wine/x11drv.dll.so padrão pelo seu novo arquivo com o comando:

$ sudo cp dlls/x11drv/x11drv.dll.so /usr/lib/wine/x11drv.dll.so

E pronto! Agora faça o teste, abra qualquer aplicação que rode sobre o wine e perceba que o problema do DELETE já não existe.

Essa dica funciona para teclado ABNT2. Pesquisando pela internet descobri que pode dar problemas com outros layouts de teclado, por isso é necessário que você faça backup dos seus arquivos de sistemas.

É isso, qualquer dúvida grite.

Abraços,
Danilo

Outras dicas deste autor

Sockets em shell script

Rodando o Quanta em uma única instância

Funções de data usando time.h

Opções de optimização do VNC

Câmera Sony P32 no Linux [Debian]

Leitura recomendada

Digite a senha para desbloquear o seu chaveiro de sessão - como remover no Ubuntu

A melhor forma de rodar o Kurumin 2.04 com o Windows em dual boot

Porta paralela /dev/lp0 não aparece

Como desabilitar beeps chatos no Linux Mint Debian Edition

Desabilitando Ctrl + Alt + Del no Ubuntu 9.10 (Karmic Koala)

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário