PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : wine hack: keine tastatur in cs



jebe
20.04.03, 20:46
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

terabaud
29.08.03, 00:42
vielen dank,

hoch damit !

bitte sticky machen :D

redrat
07.09.03, 23:16
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

jebe
29.09.03, 17:27
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

ciruZ
29.09.03, 18:17
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?`

redrat
30.09.03, 10:11
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

ciruZ
30.09.03, 15:49
1.) Mehr Programme laufen mit managed.
2.) Bei managed hat man keinerlei Probleme mim Window Manager ;)...

jebe
30.09.03, 16:22
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

MiB
30.09.03, 17:48
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

jebe
01.10.03, 19:52
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

ciruZ
02.10.03, 17:00
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... ;)

jebe
02.10.03, 19:04
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

pavosos
29.10.03, 00:45
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

pavosos
29.10.03, 13:15
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

MiB
29.10.03, 13:57
Original geschrieben von pavosos

verwende das aktuelle cvs winex

Scherzkeks, winex hat keine fokusprobleme

pavosos
29.10.03, 14:00
hä?

das ist alles ?

was soll ich damit anfangen?

jebe
29.10.03, 14:50
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

pavosos
29.10.03, 15:19
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!

Atomara
05.11.03, 23:22
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

jebe
06.11.03, 00:07
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

Atomara
06.11.03, 02:24
ich verstehe sowieso nicht warum sich die entwickler von wine dem fehler witmen


das ganze ist doch schon so oft passiert

Premi
03.01.04, 12:52
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?

jebe
03.01.04, 17:36
poste mal die fehlermeldung, das macht die sache einfacher ;)


gruss jebe

Premi
03.01.04, 19:43
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.

ciruZ
06.01.04, 21:00
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 ;)