Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/10/2005, à 19:26

Sacre

[Résolu] Wine et mon clavier Suisse-Français

J'ai un problème assez étrange avec Wine (installation compilée depuis les sources 20050930).

Quelque soit l'application que je lance, mon clavier (qwertz Suisse-Français) est presque entièrement reconnu à l'exception de trois touches et demi.

Les trois touches en question sont le "éö", "àä", "$£" et le "!"=(maj+guillmets) alors que les guillmets fonctionnent. Le "èü" aussi, il est dans la même zone que les touches rebelles pourtant.

Ces touches fonctionnent parfaitement dans mon install d'Ubuntu. Le keymap Suisse-Français est aussi référencé dans le fichier source "keyboard.c" de Wine et mes touches rebelles y sont notées correctement (en apparence en tout cas).

Les seules modifications apportées au code sources de Wine avant que je l'aie compilé furent les patch pour avoir une souris fonctionnant correctement dans World of Warcraft. 

J'avoue que le problème est assez déroutant, et après des recherches sur Google, je n'ai rien trouvé de vraiment utile pour savoir si Wine utilise le bon keymap et comment le changer le cas echéant. (Mise à part une méthode pour ajouter son propre keymap dans le keyboard.c, ce que j'aimerais quand même éviter d'avoir à faire, surtout ne sachant pas comment forcer Wine à l'utiliser par la suite.)

Est-ce que quelqu'un à une idée de solution ou déjà rencontré ce problème ?

Merci pour vos réponses.

Dernière modification par Sacre (Le 25/10/2005, à 17:21)

Hors ligne

#2 Le 21/10/2005, à 19:17

Sacre

Re : [Résolu] Wine et mon clavier Suisse-Français

J'ai enfin trouver une méthode pour avoir plus d'info sur le lien entre Wine et mon clavier.

export WINEDEBUG=+key

Cela donne dans le terminal un debug des événements claviers perçu par Wine. Pour les test je fais un

wine notepad 2> debug.txt

Ce que j'obtiens au lancement :

trace:key:X11DRV_InitKeyboard NumLockMask is 10
trace:key:X11DRV_KEYBOARD_DetectLayout mismatch for keysym 0x0000, keycode 10, got 1+
trace:key:X11DRV_KEYBOARD_DetectLayout mismatch for keysym 0x0000, keycode 11, got 2"
trace:key:X11DRV_KEYBOARD_DetectLayout mismatch for keysym 0x0000, keycode 12, got 3*
trace:key:X11DRV_KEYBOARD_DetectLayout mismatch for keysym 0x0000, keycode 13, got 4\uffff
trace:key:X11DRV_KEYBOARD_DetectLayout mismatch for keysym 0x0000, keycode 15, got 6&
trace:key:X11DRV_KEYBOARD_DetectLayout mismatch for keysym 0x0000, keycode 16, got 7/
trace:key:X11DRV_KEYBOARD_DetectLayout mismatch for keysym 0x0000, keycode 17, got 8(
trace:key:X11DRV_KEYBOARD_DetectLayout mismatch for keysym 0x0000, keycode 18, got 9)
trace:key:X11DRV_KEYBOARD_DetectLayout mismatch for keysym 0x0000, keycode 19, got 0=
trace:key:X11DRV_KEYBOARD_DetectLayout mismatch for keysym 0x0000, keycode 20, got '?
trace:key:X11DRV_KEYBOARD_DetectLayout mismatch for keysym 0x0000, keycode 21, got ^`
trace:key:X11DRV_KEYBOARD_DetectLayout mismatch for keysym 0x0000, keycode 34, got \uffff
trace:key:X11DRV_KEYBOARD_DetectLayout mismatch for keysym 0x0000, keycode 35, got \uffff!
trace:key:X11DRV_KEYBOARD_DetectLayout mismatch for keysym 0x0000, keycode 47, got \uffff
trace:key:X11DRV_KEYBOARD_DetectLayout mismatch for keysym 0x0000, keycode 48, got \uffff\uffff
trace:key:X11DRV_KEYBOARD_DetectLayout mismatch for keysym 0x0000, keycode 49, got \uffff\uffff
trace:key:X11DRV_KEYBOARD_DetectLayout mismatch for keysym 0x0000, keycode 51, got $\uffff

Ca continue sur des centaines de ligne, avec répétitions.

Ensuite, j'ai appuyé sur "è"

trace:key:X11DRV_KeyEvent type 2, window 2e00001, state 0x0000, keycode 0x0022
trace:key:X11DRV_KeyEvent state = 0 nbyte = 2, status 0x4
trace:key:X11DRV_KeyEvent KeyPress : keysym=E8 (egrave), # of chars=2 / 0xc3 / 'è'
trace:key:EVENT_event_to_vkey e->keycode = 22
trace:key:X11DRV_KeyEvent keycode 0x22 converted to vkey 0xba
trace:key:X11DRV_KeyEvent bScan = 0x27.
trace:key:X11DRV_send_keyboard_input  wParam=00ba, lParam=00270001, InputKeyState=c1
trace:key:TranslateMessage Translating key VK_OEM_1 (00ba), scancode 27
trace:key:GetKeyboardState (0x7facf6ec)
trace:key:X11DRV_ToUnicodeEx (00BA, 0027) : faked state = 0x0000
trace:key:EVENT_event_to_vkey e->keycode = 22
trace:key:X11DRV_ToUnicodeEx type 2, window 2e00001, state 0x0000, keycode 0x0022
trace:key:X11DRV_ToUnicodeEx Translating char 0xc3 to unicode
trace:key:X11DRV_ToUnicodeEx ToUnicode about to return 1 with char e8
trace:key:TranslateMessage 1 -> PostMessageW(0x10024,WM_CHAR,00e8,00270001)
trace:key:GetKeyState key (0x12) -> 0
trace:key:GetKeyState key (0x10) -> 0
trace:key:GetKeyState key (0x11) -> 0
trace:key:GetKeyState key (0x11) -> 0
trace:key:X11DRV_KeyEvent type 3, window 2e00001, state 0x0000, keycode 0x0022
trace:key:X11DRV_KeyEvent state = 0 nbyte = 0, status 0x1
trace:key:X11DRV_KeyEvent KeyRelease : keysym=0 (No Name), # of chars=0 / 0x00 / ''
trace:key:EVENT_event_to_vkey e->keycode = 22
trace:key:X11DRV_KeyEvent keycode 0x22 converted to vkey 0xba
trace:key:X11DRV_KeyEvent bScan = 0x27.
trace:key:X11DRV_send_keyboard_input  wParam=00ba, lParam=c0270001, InputKeyState=41

et sur "é"

trace:key:X11DRV_KeyEvent type 2, window 2e00001, state 0x0000, keycode 0x002f
trace:key:X11DRV_KeyEvent state = 0 nbyte = 2, status 0x4
trace:key:X11DRV_KeyEvent KeyPress : keysym=E9 (eacute), # of chars=2 / 0xc3 / 'é'
trace:key:EVENT_event_to_vkey e->keycode = 2f
trace:key:X11DRV_KeyEvent keycode 0x2f converted to vkey 0xc0
trace:key:X11DRV_KeyEvent bScan = 0x29.
trace:key:X11DRV_send_keyboard_input  wParam=00c0, lParam=00290001, InputKeyState=c1
trace:key:TranslateMessage Translating key VK_OEM_3 (00c0), scancode 29
trace:key:GetKeyboardState (0x7facf6ec)
trace:key:X11DRV_ToUnicodeEx (00C0, 0029) : faked state = 0x0000
trace:key:EVENT_event_to_vkey e->keycode = 15
trace:key:X11DRV_ToUnicodeEx type 2, window 2e00001, state 0x0000, keycode 0x0015
trace:key:X11DRV_ToUnicodeEx ToUnicode about to return -1 with char 5e
trace:key:TranslateMessage -1 -> PostMessageW(0x10024,WM_DEADCHAR,005e,00290001)
trace:key:GetKeyState key (0x12) -> 0
trace:key:GetKeyState key (0x10) -> 0
trace:key:GetKeyState key (0x11) -> 0
trace:key:X11DRV_KeyEvent type 3, window 2e00001, state 0x0000, keycode 0x002f
trace:key:X11DRV_KeyEvent state = 0 nbyte = 0, status 0x1
trace:key:X11DRV_KeyEvent KeyRelease : keysym=0 (No Name), # of chars=0 / 0x00 / ''
trace:key:EVENT_event_to_vkey e->keycode = 2f
trace:key:X11DRV_KeyEvent keycode 0x2f converted to vkey 0xc0
trace:key:X11DRV_KeyEvent bScan = 0x29.
trace:key:X11DRV_send_keyboard_input  wParam=00c0, lParam=c0290001, InputKeyState=41

Voila, quand j'aurais le temps, j'analyserais un poil ces output et j'essairais de comprendre ce qui se passe ... (mais si y'en a qui veulent essayer de le faire entre temps, ne vous gênez pas smile)

Merci d'avance pour toute indication ou aide utile sur ce sujet.

Hors ligne

#3 Le 25/10/2005, à 17:21

Sacre

Re : [Résolu] Wine et mon clavier Suisse-Français

J'ai découvert qu'il y'avait une autre option pour WINEDEBUG

export WINEDEBUG=+keyboard

A partir de la, j'ai pu constaté que Wine préférait utiliser un clavier Slovaque plutôt que mon Suisse-Français (les deux sont de type "qwertz", d'où une très forte similitude).

Pour le forcer à prendre mon type de clavier, j'ai laissé uniquement l'entrée "Swiss French Keyboard" dans le tableau regroupant les config clavier du fichier "sources_de_wine/dlls/x11drv/keyboard.c". J'ai lancé le scripte de desinstallation, j'ai recompilé wine (c'est assez court, le makefile detecte qu'il n'y a qu'un fichier qui a été modifié) et réinstallé sans problème.

Methode assez bourine mais qui a eut le mérite de fonctionner smile

Dernière modification par Sacre (Le 25/10/2005, à 17:23)

Hors ligne

#4 Le 25/08/2006, à 15:59

Araxor

Re : [Résolu] Wine et mon clavier Suisse-Français

J'ai le même problème que tu avais, et, ne connaissant rien au c, j'aimerais savoir ce que tu as supprimé.

Merci d'avance big_smile

Hors ligne