Problemas com DELETE no WINE

Publicado por Danilo em 29/04/2005

[ Hits: 7.409 ]

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

Opções de optimização do VNC

Montando uma imagem de CD (iso)

CD's do Ubuntu de graça!

Anjuta 1.2.4 e Ubuntu Edgy: Sim, é possível

Listar arquivos de um diretório em C

Leitura recomendada

Debris - Iniciação do X (gráfico)

Como configurar IP manualmente no Linux

Nem todas as janelas maximizadas no UNR

Como se livrar do OpenDNS no Linux

Mudar gateway no CentOS

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts