Archiv verlassen und diese Seite im Standarddesign anzeigen : wine hack: keine tastatur in cs
hi,
da ich trotz "DXGrab" = "Y" "UseTakeFocus" = "Y" mit XFree4.3 und dem neusten wine keinen keyboard input focus hab, habe ich mal wine gehackt:
datei: winexyz/dlls/x11drv/mouse.c
funktion: void X11DRV_ButtonPress
/************************************************** *********************
* X11DRV_ButtonPress
*/
void X11DRV_ButtonPress( HWND hwnd, XButtonEvent *event )
{
int buttonNum = event->button - 1;
WORD wData = 0;
POINT pt;
static int first_click = 1;
if (buttonNum >= NB_BUTTONS) return;
if (!hwnd) return;
if (first_click) {
X11DRV_SetFocus(hwnd);
first_click=0;
}
update_cursor( hwnd, event->window );
get_coords( &hwnd, event->window, event->x, event->y, &pt );
switch (buttonNum)
{
case 3:
wData = WHEEL_DELTA;
break;
case 4:
wData = -WHEEL_DELTA;
break;
}
update_key_state( event->state );
send_mouse_event( hwnd, button_down_flags[buttonNum] | MOUSEEVENTF_ABSOLUTE,
pt.x, pt.y, wData, event->time );
}
geht mit dem neusten wine und mit der cvs version
wenn schon nen wine installiert ist:
make uninstall
patchen
make
make install
gruss jebe
mastergizmo
22.08.03, 19:39
Vielen dank funzt 1a :D
vielen dank,
hoch damit !
bitte sticky machen :D
Funktioniert hier auch wunderbar. Sollte nicht verloren gehen dieser Patch...
bis dann,
red
Jokerchris2000
29.09.03, 07:43
werde das daheim glich mal ausprobieren. Aber wenn das bei sovielen funktioniert, dann sollte man das sofort Anpinne oda?
makaveli2003
29.09.03, 16:35
gibts eine möglichkeit das im installierten rpm wine auch diese function zu implementieren? oder kann ich irgendwie nur den x11drv ordner in meine bestehende wine konfiguration reinkompilieren... wäre über jede hilfe dankbar
Original geschrieben von makaveli2003
gibts eine möglichkeit das im installierten rpm wine auch diese function zu implementieren? oder kann ich irgendwie nur den x11drv ordner in meine bestehende wine konfiguration reinkompilieren... wäre über jede hilfe dankbar
nope geht nicht, musst die sourcen ziehen
die rpms sind doch eh meist schon alt, anleitung um die sourcen zu kompilieren gibts hier:
http://holarse.wue.de/?content=wine_comp
gruss jebe
Normalerweise tuts das auch, einfach Managed = "Y" zu machen :rolleyes:
Oder ging es bei euch trozdem nicht? ;)
makaveli2003
29.09.03, 19:42
also bei mir ging das mit maged usw nich.
die rpm die ich hab is genau das gleiche wie der aktuelle cvs tree. aber nunja dann muss ich das wohl irgendwie so machen obwohl gerad alles so schön läuft mit dem wine aus der rpm oder kann ich das parallel machen?`
Original geschrieben von ciruZ
Normalerweise tuts das auch, einfach Managed = "Y" zu machen :rolleyes:
Oder ging es bei euch trozdem nicht? ;)
Nein, hat zumindestens bei mir nicht funktioniert... (und wer will denn immer 'manages'-Fenster haben?!)
bis dann,
red
1.) Mehr Programme laufen mit managed.
2.) Bei managed hat man keinerlei Probleme mim Window Manager ;)...
Original geschrieben von ciruZ
1.) Mehr Programme laufen mit managed.
2.) Bei managed hat man keinerlei Probleme mim Window Manager ;)...
ciruZ: hier gehts um den full-screen modus von spielen, da will man keinen window-manager sehen
jebe
also bei mir geht der fullscreen modus auch, wenn managed an is?!? dann kann ich auch durch die arbeitsflächen noch durchzappen was ohne managed nicht geht...
overflowed
01.10.03, 17:21
Super, der hack funktioniert einwandfrei, mach doch den leuten von winehq.com nen Vorschlag es direkt einzubauen in die sourcen.
mfg
Original geschrieben von overflowed
Super, der hack funktioniert einwandfrei, mach doch den leuten von winehq.com nen Vorschlag es direkt einzubauen in die sourcen.
mfg
ich habs mal denen geschickt, wurde abgelehnt da es nicht die ursachen (falsches focus handling) patched.
allerdings hab ich keinen bock mich durch den wine source durchzukämpfen, wenns auch so geht.
jebe
Original geschrieben von jebe
ciruZ: hier gehts um den full-screen modus von spielen, da will man keinen window-manager sehen
jebe
Habe im Fullscreen auch bei Managed kein Problem, seh da gar nix vom WM... ;)
Original geschrieben von ciruZ
Habe im Fullscreen auch bei Managed kein Problem, seh da gar nix vom WM... ;)
sorry ich meinte desktop-mode, bei managed gehts ja net ....
(glaubs einfach ;) )
gruss jebe
wenn ich das versuche bekomm ich das hier:
[sonnenvogel@chello moo3]$ ./moo3starter
err:module:BUILTIN32_dlopen failed to load .so lib for builtin x11drv.dll: /usr/local/lib/libx11drv.so: undefined symbol: update_cursor
Could not load graphics driver 'x11drv'
err:mmsys:MULTIMEDIA_GetIData IData not found for pid=0806f078. Suicide !!!
err:win:GetDesktopWindow Wine init error: either you're trying to use an invalid native USER.EXE config, or some graphics/GUI libraries or DLLs didn't initialize properly. Aborting.
jemand ne ahnung was ich tun könnte?
verwende das aktuelle cvs winex
mfg
hier meine änderung:
/************************************************** *********************
* X11DRV_ButtonPress
*/
void X11DRV_ButtonPress( HWND hwnd, XButtonEvent *event )
{
int buttonNum = event->button - 1;
WORD wData = 0;
POINT pt;
static int first_click = 1;
if (buttonNum >= NB_BUTTONS) return;
if (!hwnd) return;
if (first_click) {
X11DRV_SetFocus(hwnd);
first_click=0;
}
update_cursor( hwnd, event->window );
get_coords( &hwnd, event->window, event->x, event->y, &pt );
switch (buttonNum)
{
case 3:
wData = WHEEL_DELTA;
break;
case 4:
wData = -WHEEL_DELTA;
break;
}
update_key_state( event->state );
send_mouse_event( hwnd, button_down_flags[buttonNum] | MOUSEEVENTF_ABSOLUTE,
pt.x, pt.y, wData, event->time );
}
ohne diesen eingriff funktioniert wine bis auf die probleme die hier stehen
http://www.linuxinfoserver.de/forums/showthread.php?s=&threadid=105947
ps: wenn ich die veränderungen in mouse.c vornehme funktioniert nichtmal notepad,es kommt die selbe fehler meldung wie weiter oben erwähnt!
mfg
Original geschrieben von pavosos
verwende das aktuelle cvs winex
Scherzkeks, winex hat keine fokusprobleme
hä?
das ist alles ?
was soll ich damit anfangen?
das der patch nur fuer das normale wine ist ;)
aber wenn du da grad im source code von winex rumwülst kannt doch gleich mal nachschauen wie winex das löst ;)
gruss jebe
aso ;)
na dann ist ja kein wunder das nicht funzt!
ich hab jetzt ebenso das normale wine genommen und damit gehts jetzt auch ohne
änderungen in der datei mouse.c !
danke nochmal für alles ;)
mfg
wine --version Wine 20031016
:ugly:
ps: mit winex hab ich nicht viel dazu bewegen können meine tastatur anzunehmen!
das größte prob bei der ganzen sache ist einfach wenn du den mouse hackverwendest dass die maus sich in den spielen nur ruckweise bewegt und nicht mehr flüssig geht
Original geschrieben von Atomara
das größte prob bei der ganzen sache ist einfach wenn du den mouse hackverwendest dass die maus sich in den spielen nur ruckweise bewegt und nicht mehr flüssig geht
du meinst, wenn man bei jedem maus click den focus neu setzt ?
mmh man könnte das auch so lösen (keine ahnung ob ich dazukomme) das man mit der daumentaste den focus setzt wenn man ihn braucht. dann hat man ihn ja dann.
vielleicht hat ja einer lust das zu machen
gruss jebe
ich verstehe sowieso nicht warum sich die entwickler von wine dem fehler witmen
das ganze ist doch schon so oft passiert
Bei mir verursacht der Hack beim Kompilieren einen Fehler. Aber es kann auch daran liegen das ich ihn falsch angewendet habe. Ich hänge mal den Ausschnitt der bearbeitet werden soll an:
/ ************************************************** *********************
* X11DRV_ButtonPress
*/
void X11DRV_ButtonPress( HWND hwnd, XButtonEvent *event )
{
int buttonNum = event->button - 1;
WORD wData = 0;
POINT pt;
static int first_click = 1;
if (buttonNum >= NB_BUTTONS) return;
if (!hwnd) return;
if (first_click) {
X11DRV_SetFocus(hwnd);
first_click=0;
}
update_cursor( hwnd, event->window );
get_coords( &hwnd, event->window, event->x, event->y, &pt );
switch (buttonNum)
{
case 3:
wData = WHEEL_DELTA;
break;
case 4:
wData = -WHEEL_DELTA;
break;
}
update_key_state( event->state );
send_mouse_event( hwnd, button_down_flags[buttonNum] | MOUSEEVENTF_ABSOLUTE,
pt.x, pt.y, wData, event->time );
}
/************************************************** *********************
* X11DRV_ButtonRelease
*/
void X11DRV_ButtonRelease( HWND hwnd, XButtonEvent *event )
{
int buttonNum = event->button - 1;
POINT pt;
if (buttonNum >= NB_BUTTONS || !button_up_flags[buttonNum]) return;
if (!hwnd) return;
update_cursor( hwnd, event->window );
get_coords( &hwnd, event->window, event->x, event->y, &pt );
update_key_state( event->state );
send_mouse_event( hwnd, button_up_flags[buttonNum] | MOUSEEVENTF_ABSOLUTE,
pt.x, pt.y, 0, event->time );
}
Hab ich da was falsch gemacht?
poste mal die fehlermeldung, das macht die sache einfacher ;)
gruss jebe
Das Problem hat sich jetzt von selbst gelöst. Hab da einen simplen Fehler den ich beim zweiten Kompilierungsanlauf beseitigt habe. *SCHÄM*
Aber kann mir jemand sagen wieso Counter Strike beim Connecten auf einen Server einfach stehen bleibt und nichts mehr macht. Infos aus der Console kann ich leider nicht liefern da ich mich immer über Strg+Alt+Entf immer abmelden muss da sonst nichts geht.
Original geschrieben von jebe
sorry ich meinte desktop-mode, bei managed gehts ja net ....
(glaubs einfach ;) )
gruss jebe
Ich hatte noch nie Probleme mit Managed, ging immer bestens ;)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.