Problemas com DELETE no WINE

Publicado por Danilo em 29/04/2005

[ Hits: 7.408 ]

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

Montando uma imagem de CD (iso)

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

CD's do Ubuntu de graça!

Funções de data usando time.h

Leitura recomendada

Atalho para área de trabalho no lançador do Ubuntu

Netdata no RockyLinux

Verificando a configuração de um servidor DNS rapidamente!

Tema escuro no Elementary sem programas

Trocando tela de login do Fedora 17

  

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