home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / root / usr / share / YaST2 / clients / keyboard.ycp < prev    next >
Text File  |  2006-11-29  |  4KB  |  185 lines

  1. /*
  2.  *
  3.  * Module:             keyboard.ycp
  4.  *
  5.  * Author:             Thomas Roelz (tom@suse.de)
  6.  *
  7.  * Submodules:
  8.  *
  9.  *
  10.  * Purpose:    configure keyboard in running system
  11.  *
  12.  * Modify:
  13.  *
  14.  *
  15.  * $Id: keyboard.ycp 25808 2005-10-05 15:13:41Z jsuchome $
  16.  */
  17.  
  18. {
  19. textdomain "country";
  20.  
  21. import "Arch";
  22. import "CommandLine";
  23. import "Confirm";
  24. import "Keyboard";
  25. import "Service";
  26. import "Stage";
  27. import "Wizard";
  28.  
  29. include "keyboard/dialogs.ycp";
  30.  
  31. /**
  32.  * read keyboard settings
  33.  */
  34. define boolean KeyboardRead () {
  35.  
  36.     Keyboard::Read ();
  37.     // Check if this is a reconfiguration run.
  38.     //
  39.     if (Stage::reprobe ())
  40.     {
  41.     // Reprobe keyboard module to achieve same behaviour as
  42.     // during installation.
  43.     Keyboard::Probe();
  44.     Keyboard::SetConsole( Keyboard::current_kbd );
  45.     Keyboard::SetX11( Keyboard::current_kbd );
  46.  
  47.     y2milestone("Reprobed keyboard");
  48.     }
  49.     return true;
  50. }
  51.  
  52. /**
  53.  * write keyboard settings
  54.  */
  55. define boolean KeyboardWrite () {
  56.  
  57.     Keyboard::Save (false);
  58.     Service::Restart ("kbd");
  59.     return true;
  60. }
  61.  
  62. /**
  63.  * the keyboard configuration sequence
  64.  */
  65. define any KeyboardSequence () {
  66.  
  67.     // dont ask for keyboard on S/390
  68.     if (Arch::s390 ())
  69.     return `next;
  70.  
  71.     map display_info    = (map) UI::GetDisplayInfo ();
  72.     if (!display_info["TextMode"]:true)
  73.     {
  74.     if (Confirm::MustBeRoot ())
  75.     {
  76.         // call sax
  77.         SCR::Execute (.target.bash, "/usr/sbin/sax2 -O Keyboard");
  78.         return `finish;
  79.     }
  80.     return `cancel;
  81.     }
  82.  
  83.     KeyboardRead ();
  84.  
  85.     Wizard::OpenAcceptDialog();
  86.  
  87.     symbol result = KeyboardDialog ($[]);
  88.  
  89.     if (result == `next)
  90.     {
  91.     KeyboardWrite ();
  92.     }
  93.     else
  94.     {
  95.     y2milestone( "User cancelled --> no change" );
  96.     }
  97.     Wizard::CloseDialog();
  98.     return result;
  99. }
  100.  
  101. /**
  102.  * Handler for keyboard summary
  103.  */
  104. define boolean KeyboardSummaryHandler (map options) {
  105.  
  106.     // summary label
  107.     CommandLine::Print (sformat (_("Current Keyboard Layout: %1"),
  108.     Keyboard::current_kbd));
  109.     return false;
  110. }
  111.  
  112. /**
  113.  * Handler for listing keyboard layouts
  114.  */
  115. define boolean KeyboardListHandler (map options) {
  116.  
  117.     foreach (string code, string name, Keyboard::Selection (), {
  118.     CommandLine::Print (sformat ("%1 (%2)", code, name));
  119.     });
  120.     return false;
  121. }
  122.  
  123.  
  124. /**
  125.  * Handler for changing keyboard settings
  126.  */
  127. define boolean KeyboardSetHandler (map options) {
  128.  
  129.     string keyboard    = options["layout"]:"";
  130.  
  131.     if (keyboard == "" || !haskey (Keyboard::Selection(), keyboard))
  132.     {
  133.     // error message (%1 is given layout); do not translate 'list'
  134.     CommandLine::Print (sformat (_("Keyboard layout '%1' is invalid. Use a 'list' command to see possible values."), keyboard));
  135.     }
  136.     Keyboard::Set (keyboard);
  137.  
  138.     return (Keyboard::Modified ());
  139. }
  140.  
  141.  
  142. /* -- the command line description map -------------------------------------- */
  143. map cmdline = $[
  144.     "id"        : "keyboard",
  145.     // translators: command line help text for Securoty module
  146.     "help"        : _("Keyboard configuration."),
  147.     "guihandler"    : KeyboardSequence,
  148.     "initialize"    : KeyboardRead,
  149.     "finish"        : KeyboardWrite,
  150.     "actions"        : $[
  151.     "summary" :$[
  152.         "handler"    : KeyboardSummaryHandler,
  153.         // command line help text for 'summary' action
  154.         "help"    : _("Keyboard configuration summary."),
  155.     ],
  156.     "set" :$[
  157.         "handler"    : KeyboardSetHandler,
  158.         // command line help text for 'set' action
  159.         "help"    : _("Set new values for keyboard configuration."),
  160.     ],
  161.     "list": $[
  162.         "handler"    : KeyboardListHandler,
  163.         // command line help text for 'list' action
  164.         "help"    : _("List all available keyboard layouts.")
  165.     ],
  166.     ],
  167.     "options"        : $[
  168.     "layout"        : $[
  169.         // command line help text for 'set layout' option
  170.         "help"    : _("New keyboard layout"),
  171.         "type"    : "string"
  172.     ],
  173.     ],
  174.     "mappings"        : $[
  175.     "summary"    : [],
  176.     "set"        : [ "layout" ],
  177.     "list"        : [],
  178.     ]
  179. ];
  180.  
  181. CommandLine::Run (cmdline);
  182. return true;
  183.  
  184. }
  185.