home *** CD-ROM | disk | FTP | other *** search
- import kudzu
- from simpleconfig import SimpleConfigFile
- from snack import *
- import os
-
- class Mouse (SimpleConfigFile):
- mice = {
- "ALPS - GlidePoint (PS/2)" :
- ("ps/2", "GlidePointPS/2", "psaux", 1),
- "ASCII - MieMouse (serial)" :
- ("ms3", "IntelliMouse", "ttyS", 1),
- "ASCII - MieMouse (PS/2)" :
- ("ps/2", "NetMousePS/2", "psaux", 1),
- "ATI - Bus Mouse" :
- ("Busmouse", "BusMouse", "atibm", 1),
- "Generic - 2 Button Mouse (serial)" :
- ("Microsoft", "Microsoft", "ttyS", 1),
- "Generic - 3 Button Mouse (serial)" :
- ("Microsoft", "Microsoft", "ttyS", 0),
- "Generic - 2 Button Mouse (PS/2)" :
- ("ps/2", "PS/2", "psaux", 1),
- "Generic - 3 Button Mouse (PS/2)" :
- ("ps/2", "PS/2", "psaux", 0),
- "Genius - NetMouse (serial)" :
- ("ms3", "IntelliMouse", "ttyS", 1),
- "Genius - NetMouse (PS/2)" :
- ("netmouse", "NetMousePS/2", "psaux", 1),
- "Genius - NetMouse Pro (PS/2)" :
- ("netmouse", "NetMousePS/2", "psaux", 1),
- "Genius - NetScroll (PS/2)" :
- ("netmouse", "NetScrollPS/2", "psaux", 1),
- "Kensington - Thinking Mouse (PS/2)" :
- ("ps/2", "ThinkingMousePS/2", "psaux", 1),
- "Logitech - C7 Mouse (serial, old C7 type)" :
- ("Logitech", "Logitech", "ttyS", 0),
- "Logitech - CC Series (serial)" :
- ("logim", "MouseMan", "ttyS", 0),
- "Logitech - Bus Mouse" :
- ("Busmouse", "BusMouse", "logibm", 0),
- "Logitech - MouseMan/FirstMouse (serial)" :
- ("MouseMan", "MouseMan", "ttyS", 0),
- "Logitech - MouseMan/FirstMouse (PS/2)" :
- ("ps/2", "PS/2", "psaux", 0),
- "Logitech - MouseMan+/FirstMouse+ (serial)" :
- ("pnp", "IntelliMouse", "ttyS", 0),
- "Logitech - MouseMan+/FirstMouse+ (PS/2)" :
- ("ps/2", "MouseManPlusPS/2", "psaux", 0),
- "Microsoft - Compatible Mouse (serial)" :
- ("Microsoft", "Microsoft", "ttyS", 1),
- "Microsoft - Rev 2.1A or higher (serial)" :
- ("pnp", "Auto", "ttyS", 1),
- "Microsoft - IntelliMouse (serial)" :
- ("ms3", "IntelliMouse", "ttyS", 1),
- "Microsoft - IntelliMouse (PS/2)" :
- ("imps2", "IMPS/2", "psaux", 1),
- "Microsoft - Bus Mouse" :
- ("Busmouse", "BusMouse", "inportbm", 1),
- "Mouse Systems - Mouse (serial)" :
- ("MouseSystems", "MouseSystems", "ttyS", 1),
- "MM - Series (serial)" :
- ("MMSeries", "MMSeries", "ttyS", 1),
- "MM - HitTablet (serial)" :
- ("MMHitTab", "MMHittab", "ttyS", 1),
- "None - None" :
- ("none", "none", "null", 0),
- "Sun - Mouse":
- ("sun", "sun", "sunmouse", 0),
- }
-
- # XXX fixme - externalize
- def __init__ (self, xmouseType = None, mouseType = None):
- self.info = {}
- self.device = None
-
- if (xmouseType):
- (proto, emulate, device) = xmouseType
- mouseType = None
- mice = self.mice.keys()
- mice.sort()
- for desc in mice:
- (gpm, x11, dev, em) = self.mice[desc]
- # print "trying %s: '%s', '%s'" % (desc, x11, proto)
- if (x11 == proto and emulate == em):
- if (desc[:7] == "Generic" or desc[:3] == "Sun"):
- mouseType = (desc, emulate, device)
- break
- self.device = device
- if not mouseType:
- raise KeyError, "unknown X11 mouse type %s" % proto
-
- if (mouseType):
- if (len(mouseType) == 3):
- apply(self.set, mouseType)
- else:
- list = kudzu.probe(kudzu.CLASS_MOUSE, kudzu.BUS_UNSPEC,
- kudzu.PROBE_ONE)
- if (list):
- (device, module, desc) = list[0]
-
- if device == "sunmouse":
- self.set("Sun - Mouse", 0)
- elif device == "psaux":
- self.set("Generic - 3 Button Mouse (PS/2)", 0)
- else:
- self.set("Generic - 2 Button Mouse (serial)", 1)
-
- self.device = device
- else:
- self.set("Generic - 2 Button Mouse (serial)", 1, 'ttyS0')
-
- def available (self):
- return self.mice
-
- def get (self):
- return (self.info ["FULLNAME"], self.emulate)
-
- def __str__(self):
- if (self.emulate):
- self.info["XEMU3"] = "yes"
- else:
- self.info["XEMU3"] = "no"
- return SimpleConfigFile.__str__(self)
-
- def makeLink(self, root):
- try:
- os.unlink(root + "/dev/mouse")
- except:
- pass
- if (self.device):
- os.symlink(self.device, root + "/dev/mouse")
-
- def getDevice(self):
- return self.device
-
- def setDevice(self, device):
- self.device = device
-
- def set (self, mouse, emulateThreeButtons = -1, thedev = None):
- (gpm, x11, dev, em) = self.mice[mouse]
- self.info["MOUSETYPE"] = gpm
- self.info["XMOUSETYPE"] = x11
- self.info["FULLNAME"] = mouse
- if emulateThreeButtons != -1:
- self.emulate = emulateThreeButtons
- else:
- self.emu = em
- if not self.device and thedev: self.device = thedev
- if not self.device: self.device = dev
-