home *** CD-ROM | disk | FTP | other *** search
/ Australian Personal Computer 2000 July / CD 3 / redhat-6.2.iso / RedHat / instimage / usr / lib / anaconda / xkb.py < prev    next >
Encoding:
Python Source  |  2000-03-08  |  1.3 KB  |  59 lines

  1. import _xkb
  2. import tree
  3. import string
  4. import os
  5.  
  6. class XKB:
  7.     def __init__ (self):
  8.         self.rules = _xkb.list_rules ()                            
  9.  
  10.     def getRules (self):
  11.         return self.rules
  12.  
  13.     def getModels (self):
  14.         return self.rules[0]
  15.  
  16.     def getLayouts (self):
  17.         return self.rules[1]
  18.  
  19.     def getVariants (self):
  20.         return self.rules[2]
  21.  
  22.     def getOptions (self):
  23.         keys = self.rules[3].keys (); keys.sort ()
  24.         groups = ()
  25.         for x in keys:
  26.             groups = tree.merge (groups, string.split (x, ":"))
  27.         return (groups, self.rules[3])
  28.  
  29.     def setRule (self, model, layout, variant, options):
  30.     if model == None: model = ""
  31.     if layout == None: layout = ""
  32.     if variant == None: variant = ""
  33.     if options == None: options = ""
  34.  
  35.     args = ()
  36.  
  37.     if (model):
  38.             args = args + ("-model", model)
  39.         if (layout):
  40.             args = args + ("-layout", layout)
  41.         if (variant):
  42.             args = args + ("-variant", variant)
  43.  
  44.     path = ("/usr/X11R6/bin/setxkbmap",)
  45.     if (os.fork () == 0):
  46.             os.execv (path[0], path + args)
  47.  
  48.         return
  49.  
  50.         # don't use any of our code, since it seems to corrupt
  51.         # lots of memory
  52.         return _xkb.set_rule (model, layout, variant, options)
  53.  
  54.  
  55.  
  56.     def getRulesBase (self):
  57.         return _xkb.get_rulesbase ()
  58.  
  59.