Initial import to Tizen
[profile/ivi/python-twisted.git] / doc / core / examples / mouse.py
1 #!/usr/bin/env python
2
3 # Copyright (c) Twisted Matrix Laboratories.
4 # See LICENSE for details.
5
6 """
7 Example using MouseMan protocol with the SerialPort transport.
8 """
9
10 # TODO set tty modes, etc.
11 # This works for me:
12
13 # speed 1200 baud; rows 0; columns 0; line = 0;
14 # intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D;
15 # eol = <undef>; eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z;
16 # rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
17 # -parenb -parodd cs7 hupcl -cstopb cread clocal -crtscts ignbrk
18 # -brkint ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon
19 # -ixoff -iuclc -ixany -imaxbel -opost -olcuc -ocrnl -onlcr -onocr
20 # -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon -iexten
21 # -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl
22 # -echoke
23
24 import sys
25 from twisted.python import usage, log
26 from twisted.protocols.mice import mouseman
27
28 if sys.platform == 'win32':
29     # win32 serial does not work yet!
30     raise NotImplementedError, "The SerialPort transport does not currently support Win32"
31     from twisted.internet import win32eventreactor
32     win32eventreactor.install()
33
34 class Options(usage.Options):
35     optParameters = [
36         ['port', 'p', '/dev/mouse', 'Device for serial mouse'],
37         ['baudrate', 'b', '1200', 'Baudrate for serial mouse'],
38         ['outfile', 'o', None, 'Logfile [default: sys.stdout]'],
39     ]
40
41 class McFooMouse(mouseman.MouseMan):
42     def down_left(self):
43         log.msg("LEFT")
44
45     def up_left(self):
46         log.msg("left")
47
48     def down_middle(self):
49         log.msg("MIDDLE")
50
51     def up_middle(self):
52         log.msg("middle")
53
54     def down_right(self):
55         log.msg("RIGHT")
56
57     def up_right(self):
58         log.msg("right")
59
60     def move(self, x, y):
61         log.msg("(%d,%d)" % (x, y))
62
63 if __name__ == '__main__':
64     from twisted.internet import reactor
65     from twisted.internet.serialport import SerialPort
66     o = Options()
67     try:
68         o.parseOptions()
69     except usage.UsageError, errortext:
70         print "%s: %s" % (sys.argv[0], errortext)
71         print "%s: Try --help for usage details." % (sys.argv[0])
72         raise SystemExit, 1
73
74     logFile = sys.stdout
75     if o.opts['outfile']:
76         logFile = o.opts['outfile']
77     log.startLogging(logFile)
78     
79     SerialPort(McFooMouse(), o.opts['port'], reactor, baudrate=int(o.opts['baudrate']))
80     reactor.run()