00001 #!/usr/bin/env python 00002 # Copyright (c) 2013, Oregon State University 00003 # All rights reserved. 00004 00005 # Redistribution and use in source and binary forms, with or without 00006 # modification, are permitted provided that the following conditions are met: 00007 # * Redistributions of source code must retain the above copyright 00008 # notice, this list of conditions and the following disclaimer. 00009 # * Redistributions in binary form must reproduce the above copyright 00010 # notice, this list of conditions and the following disclaimer in the 00011 # documentation and/or other materials provided with the distribution. 00012 # * Neither the name of the Oregon State University nor the 00013 # names of its contributors may be used to endorse or promote products 00014 # derived from this software without specific prior written permission. 00015 00016 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 00017 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 00018 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00019 # DISCLAIMED. IN NO EVENT SHALL OREGON STATE UNIVERSITY BE LIABLE FOR ANY 00020 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 00021 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 00022 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 00023 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00024 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00025 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00026 00027 # Author Dan Lazewatsky/lazewatd@engr.orst.edu 00028 00029 import roslib; roslib.load_manifest('world_intersect') 00030 import rospy 00031 from std_msgs.msg import Empty 00032 00033 from pymouse import PyMouse 00034 import random, time 00035 from signal import signal, SIGINT 00036 00037 def stop(signum, frame): 00038 cleanup_stop_thread(); 00039 sys.exit() 00040 signal(SIGINT, stop) 00041 00042 from pymouse import PyMouseEvent 00043 00044 class event(PyMouseEvent): 00045 def __init__(self): 00046 super(event, self).__init__() 00047 self.click_pub = rospy.Publisher('click', Empty) 00048 00049 def move(self, x, y): 00050 pass 00051 00052 def click(self, x, y, button, press): 00053 if not press: 00054 self.click_pub.publish() 00055 00056 if __name__ == '__main__': 00057 rospy.init_node('mouse_click') 00058 e = event() 00059 e.capture = False 00060 e.daemon = False 00061 e.start() 00062 m = PyMouse() 00063 try: 00064 while not rospy.is_shutdown(): 00065 rospy.sleep(1) 00066 except KeyboardInterrupt: 00067 pass 00068 e.stop()