[Wine] python for game menus needing mouse but with mwo=force
carling5
wineforum-user at winehq.org
Thu Apr 7 16:32:35 CDT 2011
#
#
# WHY DID WRITE SCRIPT ? : GAMES !
# WINETRICKS MWO=FORCE but want to use GAME MENUS with MOUSE
# example SWAT4 , need to use menu in game to start shooting baddies !! but need MWO=FORCE in game ??
#
# PLATFORM : linux
# REQUIRES : python python-xlib xdotool
# AUTHOR : terry.cadd at gmail.com
# DATE : Thu Apr 7 22:28:38 BST 2011
# VERSION : 1
#
# USAGE :
# start this script then play the game
# numpad moves mouse , 4 left , 6 right , 8 up , 2 down , 5 clicks mouse
# numpad enter exits script
#
# values for key_up , key_left , key_down , key_right were found from
# xev utility . (the keycode value.)
#
# BEHAVIOUR :
# mouse cursor will flicker because there are now two things controlling the mouse
# this script and usual x windows mouse
#
# FEEDBACK : welcome !
#
# AIMS : wonder if this get put into winetricks package ?!?
#
from subprocess import call
import os
import sys
import time
from Xlib import X, display
mouse = {}
mouse['x'] = 100
mouse['y'] = 100
if len(sys.argv) >= 2 :
mouse['x'] = int(sys.argv[1])
if len(sys.argv) >= 3 :
mouse['y'] = int(sys.argv[2])
print "keeping mouse at (" , mouse['x'] , "," , mouse['y'] , ")"
print "typeof mouse x " , type(mouse['x'])
print "typeof mouse y " , type(mouse['y'])
# custom keys to control mouse
key_up = 80
key_down = 88
key_left = 83
key_right = 85
key_click = 84
key_exit = 104
keys = [key_up,key_down,key_left,key_right,key_click,key_exit]
smallstep = 5
def pointerLeft():
mouse['x'] = mouse['x'] - smallstep
def pointerRight():
mouse['x'] = mouse['x'] + smallstep
def pointerUp():
mouse['y'] = mouse['y'] - smallstep
def pointerDown():
mouse['y'] = mouse['y'] + smallstep
def pointerClick():
os.system("xdotool mousemove " + str(mouse['x']) + " " + str(mouse['y']) + " click 1")
def handle_event(aEvent):
keycode = aEvent.detail
if aEvent.type == X.KeyPress:
# smaller mouse jumps from keyboard
if keycode == key_up:
pointerUp()
elif keycode == key_left:
pointerLeft()
elif keycode == key_right:
pointerRight()
elif keycode == key_down:
pointerDown()
elif keycode == key_click:
pointerClick()
elif keycode == key_exit:
exit()
else :
print "keycode = " , keycode
start = time.time()
d = display.Display()
s = d.screen()
root = s.root
# catch keyPress events
root.change_attributes(event_mask = X.KeyPressMask)
for keycode in keys:
root.grab_key(keycode, X.AnyModifier, 1,X.GrabModeAsync, X.GrabModeAsync)
while True :
root.warp_pointer(mouse['x'],mouse['y'])
d.sync()
elapsed = (time.time() - start)
event = root.display.next_event()
handle_event(event)
More information about the wine-users
mailing list