~0x44/nova/config-drive

« back to all changes in this revision

Viewing changes to vendor/Twisted-10.0.0/doc/core/examples/mouse.py

  • Committer: Jesse Andrews
  • Date: 2010-05-28 06:05:26 UTC
  • Revision ID: git-v1:bf6e6e718cdc7488e2da87b21e258ccc065fe499
initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
 
 
3
# Copyright (c) 2009 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()