Template Version: @(#)sac_nextcase 1.66 04/17/08 SMI
This information is Copyright 2008 Sun Microsystems
1. Introduction
    1.1. Project/Component Working Name:
         disp_switch
    1.2. Name of Document Author/Supplier:
         Author:  Henry Zhao
    1.3  Date of This Document:
        13 August, 2008
4. Technical Description
1. Introduction
    1.1. Project/Component Working Name:
         Hot Key Based Display Device Switch (dispswitch)
    1.2. Name of Document Author/Supplier:
         Author:  Henry Zhao
    1.3  Date of This Document:
         Aug 7, 2008

4. Technical Description

   4.1 With the integration of RandR 1.2 into Xorg, it is possible to 
dynamically
       add and remove display devices and adjust display modes while X window 
system
       is running. However only a command line interface is currently available.
       Therefore a user needs to type several lengthy commands to add display
       devices, and possibly another series of commands to adjust the modes for
       each device. This project allows the use of a "hotkey" to probe for 
display 
       devices, turn on or off display devices, and in the case of more than 
one 
       device being turned on, automatically adjust modes to the best shared 
       resolution. This feature is especially useful in applications such as 
       connecting a laptop to a projector. 

   4.2 dispswitch is an X client application that uses Xrandr library functions 
       XRRGetScreenResources() to gather display output information, 
       XRRGetScreenSizeRange() and XRRSetCrtcConfig() to switch display devices 
       and set modes. Switching is triggered by a predefined key stroke - the
       "hotkey".  If a "hotkey" stroke is 5 seconds or longer after the 
previous 
       switch, system output configuration is re-probed so that any output 
       configuration changes, such as adding or removing display devices, can 
be 
       detected and adapted to. When two display devices are turned on, the 
       largest common resolution for both devices will be automatically used. 
The 
       project allows switching among up to three display outputs with one or 
two 
       of them being turned on at a time (Currently most graphics hardware 
       supports up to two simultaneous displays). For example, in a system with 
       three devices connected to LCD, VGA and DVI outputs, 6 different states 
       (excluding states of all on and all off) of them will be cycled through 
       with consecutive "hotkey" stroke. Side-by-side views are included in the 
       state cycling when two devices are connected.

   4.3 The application works on systems where both X server and driver support
       RandR (1.2 or above). It will be added to the Gnome's launcher under
       Preference->Session.

   4.4 Two "hotkey" interfaces are provided.

       4.4.1  On a laptop, if an ACPI notification interface is connected, and 
the 
              notification mechanism is operating,  then the keyboard defined 
              "display device switch function key" is the "hotkey". The 
acpi_drv 
              driver catches this "hotkey" ACPI event and generates a sysevent. 
              An application that subscribes for such event with sysevent layer 
              receives ACPI notification on "hotkey" stroke .

       4.4.2  Since not all laptops have ACPI notification "hotkey" switch 
support,
              on a more general sense, the application allows user to use 
command
              line options (-key <keysym> -mod <modifier>) to define a "hotkey" 
to
              cover desktops, and laptops where ACPI "hotkey" notification 
              mechanism is not working.  The default is "Shift+F5".

   4.5 Usage: dispswitch [options]

       where options are:

      -display <display>
      -key <keysym>
      -mod <modifier> 
      -help
      -nosideview
      -verbose
      -testrun

      -key <keysym> -mod <modifier> will let user define "hotkey":
      <keysym> is any keysym defined in /usr/X11/include/X11/keysymdef.h, with 
      prefix XK_ removed, such as F5, F8, Escape.  <modifier> is any or 
      combination of modifiers on the system. User can run /usr/X11/bin/xmodmap 
to 
      find all available modifiers on the system. They can be shift, control, 
      mod1, mod3, mod4, any. Examples:

      -key Escape -mod shift  defines the "hotkey" to be 'shift + Esc'
      -key F2 -mod "shift+control" defines the "hotkey" to be 'shift + control 
+ F2'

      -help             Prints out a summary of the usage
      -nosideview       Skips side-by-side views in two device cycling.
      -testrun  Switches repeatedly without hotkey strokes
      -verbose  Prints debug messages


Imported Interfaces:
--------------------
RandR 1.2                                       Uncommitted
(http://www.x.org/wiki/Projects/XRandR)
libsysevent                                     committed

Exported Interfaces:
--------------------
/usr/X11/bin/dispswitch                         Uncommitted       

5. Documentation

   Manpage provided 
   /usr/X11/share/man/man1/dispswitch.1

6. Resources and Schedule
    6.1. Projected Availability
        The project is to be available in two stages:
        6.1.1  Putback of implementation of first "hotkey" interface (4.4.2)
                Aug 2008
        6.1.2  Putback of implementation of second "hotkey" interface (4.4.1)
                Oct 2008
    6.4. Steering Committee requested information
        6.4.1. Consolidation C-team Name:
                X Consolidation (Desktop C-Team)
    6.5. ARC review type: FastTrack
    6.6. ARC Exposure: open




6. Resources and Schedule
    6.4. Steering Committee requested information
        6.4.1. Consolidation C-team Name:
                X
    6.5. ARC review type: FastTrack
    6.6. ARC Exposure: open


Reply via email to