--- /dev/null
+#! /usr/bin/env python
+"""
+This script will test highgui's mouse functionality
+"""
+
+# name of this test and it's requirements
+TESTNAME = "cvSetMouseCallback"
+REQUIRED = ["cvShowImage"]
+
+
+# needed for sys.exit(int) and .works file handling
+import os
+import sys
+import works
+
+# check requirements and delete old flag file, if it exists
+if not works.check_files(REQUIRED,TESTNAME):
+ sys.exit(77)
+
+# import the necessary things for OpenCV
+from highgui import *
+from cv import *
+
+# global variable which stores information about the pressed mousebuttons
+mouse_events = [False,False,False,False,False,False,False,False,False,False]
+event_detected = False
+
+# some definitions
+win_name = "testing..."
+EVENTS = ['CV_EVENT_MOUSEMOVE', 'CV_EVENT_LBUTTONDOWN', 'CV_EVENT_RBUTTONDOWN', 'CV_EVENT_MBUTTONDOWN', 'CV_EVENT_LBUTTONUP',
+ 'CV_EVENT_RBUTTONUP', 'CV_EVENT_MBUTTONUP' , 'CV_EVENT_LBUTTONDBLCLK','CV_EVENT_RBUTTONDBLCLK','CV_EVENT_MBUTTONDBLCLK']
+
+
+# our callback function, 5th parameter not used here.
+def callback_function(event,x,y,flag,param):
+ globals()["event_detected"] = True
+ # check if event already occured; if not, output info about new event.
+ if globals()["mouse_events"][event] == False:
+ print "Event "+globals()["EVENTS"][event]+" detected."
+ globals()["mouse_events"][event] = True
+ return
+
+
+# create a window ('cvNamedWindow.works' exists, so it must work)
+cvNamedWindow(win_name,CV_WINDOW_AUTOSIZE)
+# show the baboon in the window
+PREFIX = os.path.join(os.environ["srcdir"],"../../opencv_extra/testdata/python/images/")
+cvShowImage(win_name, cvLoadImage(PREFIX+"cvSetMouseCallback.jpg"))
+# assign callback function 'callback_function' to window, no parameters used here
+cvSetMouseCallback( win_name, callback_function )
+
+# give the user information about the test and wait for input
+print "(INFO) Please hover the mouse over the baboon image and press"
+print "(INFO) your available mousebuttons inside the window to 'PASS' this test."
+print "(INFO) You may also perform double-clicks."
+print "(INFO) Press a key on your keyboard ot wait 20 seconds to continue."
+print "(HINT) If no mouseevent was detected this test will be remarked as 'FAIL'."
+
+# now wait 20 seconds for user to press a key
+cvWaitKey(20000)
+
+# reset mouse callback
+cvSetMouseCallback( win_name, 0 )
+# destroy the window
+cvDestroyWindow( win_name )
+
+# check if a mouse event had beed detected
+if not event_detected:
+ # user didn't interact properly or mouse functionality doesn't work correctly
+ print "(ERROR) No mouse event detected."
+ sys.exit(1)
+
+# create flag file for following tests
+works.set_file(TESTNAME)
+
+# return 0 (success)
+sys.exit(0)