home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / X / mit / doc / CLX / s14.doc < prev    next >
Encoding:
Interleaf document  |  1989-10-18  |  56.2 KB  |  1,881 lines

  1. <!OPS, Version = 5.2>
  2.  
  3. <!Document,
  4.     Print Rev Bars =    no,
  5.     Final Output Device =    "ps",
  6.     Default Printer =    "nearest-adps">
  7.  
  8. <!Font Definitions,
  9.     F2 = Times 10 Italic,
  10.     F3 = Times 10,
  11.     F4 = Times 8 Italic,
  12.     F5 = Times 18 Bold,
  13.     F6 = Times 10 Bold,
  14.     F7 = Times 18,
  15.     F8 = Times 12 Bold,
  16.     F9 = Symbol_B 8>
  17.  
  18. <!Page,
  19.     Bottom Margin =        1 inches,
  20.     Left Margin =        1 inches,
  21.     Right Margin =        1.15 inches,
  22.     First Page =        Right,
  23.     Starting Page # =     Inherit,
  24.     Page # Prefix =        "14<#1e>",
  25.     Hyphenation =        on,
  26.     Consecutive Hyphens =    2,
  27.     Vert. Just. =        off>
  28.  
  29. <!Autonumber Stream, List, 2,
  30.     Level 2 Suffix =    ,
  31.     Level 2 Starting Value = 0,
  32.     Level 2 Show =        no>
  33.  
  34. <!Autonumber Stream, Outline, 3,
  35.     Level 1 Symbol Type =    UPPER ROMAN,
  36.     Level 2 Symbol Type =    UPPER ALPHA>
  37.  
  38. <!Autonumber Stream, figure, 2,
  39.     Level 1 Prefix =    "Figure ",
  40.     Level 1 Suffix =    "<#1e>",
  41.     Level 1 Show =        no,
  42.     Level 2 Suffix =    ,
  43.     Level 2 Starting Value = 0,
  44.     Level 2 Show =        no>
  45.  
  46. <!Autonumber Stream, figurelet, 2,
  47.     Level 1 Symbol Type =    UPPER ALPHA,
  48.     Level 1 Prefix =    "Figure ",
  49.     Level 1 Suffix =    "<#1e>",
  50.     Level 1 Show =        no,
  51.     Level 2 Suffix =    "<#04>">
  52.  
  53. <!Autonumber Stream, invisible, 1,
  54.     Level 1 Suffix =    ,
  55.     Level 1 Show =        no>
  56.  
  57. <!Autonumber Stream, item, 2,
  58.     Level 2 Symbol Type =    LOWER ALPHA,
  59.     Level 2 Trail =        yes>
  60.  
  61. <!Autonumber Stream, paralet, 4,
  62.     Level 1 Symbol Type =    UPPER ALPHA,
  63.     Level 1 Suffix =    ,
  64.     Level 1 Show =        no,
  65.     Level 2 Prefix =    .,
  66.     Level 2 Suffix =    ,
  67.     Level 3 Prefix =    .,
  68.     Level 3 Suffix =    ,
  69.     Level 4 Prefix =    .,
  70.     Level 4 Suffix =    >
  71.  
  72. <!Autonumber Stream, paranum, 4,
  73.     Level 1 Suffix =    ,
  74.     Level 1 Show =        no,
  75.     Level 2 Prefix =    .,
  76.     Level 2 Suffix =    ,
  77.     Level 3 Prefix =    .,
  78.     Level 3 Suffix =    ,
  79.     Level 4 Prefix =    .,
  80.     Level 4 Suffix =    >
  81.  
  82. <!Autonumber Stream, table, 2,
  83.     Level 1 Prefix =    "Table ",
  84.     Level 1 Suffix =    "<#1e>",
  85.     Level 1 Show =        no,
  86.     Level 2 Suffix =    >
  87.  
  88. <!Autonumber Stream, tablelet, 2,
  89.     Level 1 Symbol Type =    UPPER ALPHA,
  90.     Level 1 Prefix =    "Table ",
  91.     Level 1 Suffix =    "<#1e>",
  92.     Level 1 Show =        no,
  93.     Level 2 Suffix =    "<#04>">
  94.  
  95. <!Class, arg,
  96.     Bottom Margin =        0.08 inches,
  97.     Left Margin =        1.85 inches,
  98.     First Indent =        -0.25 inches,
  99.     Line Spacing =        1.121 lines,
  100.     Font =            F2,
  101.     Left Tab =        -0.25/0 inches>
  102.  
  103. <!Class, bullet,
  104.     Bottom Margin =        0.153 inches,
  105.     Left Margin =        1.85 inches,
  106.     First Indent =        -0.25 inches,
  107.     Line Spacing =        1.121 lines,
  108.     Font =            F3,
  109.     Allow Page Break Within = no,
  110.     Left Tab =        -0.50/0 inches>
  111.  
  112. <!Class, caption,
  113.     Top Margin =        0.07 inches,
  114.     Bottom Margin =        0.07 inches,
  115.     Line Spacing =        1.100 lines,
  116.     Font =            F4>
  117.  
  118. <!Class, fig,
  119.     Top Margin =        0.07 inches,
  120.     Bottom Margin =        0.07 inches,
  121.     Line Spacing =        1.100 lines,
  122.     Alignment =        Left,
  123.     Font =            F5>
  124.  
  125. <!Class, indentA,
  126.     Bottom Margin =        0.167 inches,
  127.     Left Margin =        1.85 inches,
  128.     Line Spacing =        1.121 lines,
  129.     Font =            F3,
  130.     Allow Page Break Within = no,
  131.     Left Tab =        -0.50/0 inches>
  132.  
  133. <!Class, item,
  134.     Bottom Margin =        0.153 inches,
  135.     Left Margin =        1.85 inches,
  136.     First Indent =        -0.25 inches,
  137.     Line Spacing =        1.121 lines,
  138.     Font =            F3,
  139.     Allow Page Break Within = no,
  140.     Left Tab =        0 inches,
  141.     Right Tab =        -0.50 inches,
  142.     Autonumber Name =    item>
  143.  
  144. <!Class, keyword2,
  145.     Bottom Margin =        0.153 inches,
  146.     Left Margin =        1.85 inches,
  147.     First Indent =        -0.25 inches,
  148.     Line Spacing =        1.121 lines,
  149.     Font =            F6,
  150.     Left Tab =        -0.50/0 inches>
  151.  
  152. <!Class, newpage,
  153.     Bottom Margin =        0 inches,
  154.     Line Spacing =        1 lines,
  155.     Alignment =        Left,
  156.     Font =            F7,
  157.     Hyphenation =        off,
  158.     New Page =        yes,
  159.     Left Tab =        >
  160.  
  161. <!Class, p1para,
  162.     Bottom Margin =        0.153 inches,
  163.     Left Margin =        1.60 inches,
  164.     First Indent =        -1.60 inches,
  165.     Line Spacing =        1.121 lines,
  166.     Alignment =        Left,
  167.     Font =            F8,
  168.     Allow Page Break Within = no,
  169.     Allow Page Break After = no,
  170.     Left Tab =        -1.70/0 inches>
  171.  
  172. <!Class, p1rule,
  173.     Bottom Margin =        0 inches,
  174.     Line Spacing =        1 lines,
  175.     Font =            F3,
  176.     Hyphenation =        off,
  177.     Allow Page Break After = no,
  178.     Left Tab =        0/0.75*13 inches>
  179.  
  180. <!Class, p1stacked,
  181.     Bottom Margin =        0 inches,
  182.     Left Margin =        1.60 inches,
  183.     First Indent =        -1.60 inches,
  184.     Line Spacing =        1 lines,
  185.     Font =            F6,
  186.     Allow Page Break Within = no,
  187.     Allow Page Break After = no,
  188.     Left Tab =        -1.60/-0.17/0 inches>
  189.  
  190. <!Class, p2para,
  191.     Bottom Margin =        0.153 inches,
  192.     Left Margin =        1.60 inches,
  193.     First Indent =        -1.60 inches,
  194.     Line Spacing =        1.121 lines,
  195.     Alignment =        Left,
  196.     Font =            F6,
  197.     Allow Page Break Within = no,
  198.     Allow Page Break After = no,
  199.     Left Tab =        0 inches,
  200.     Right Tab =        -1.60/-0.17 inches,
  201.     TOC Doc Name =        TOC>
  202.  
  203. <!Class, p2rule,
  204.     Bottom Margin =        0 inches,
  205.     Left Margin =        1.60 inches,
  206.     Line Spacing =        1 lines,
  207.     Alignment =        Left,
  208.     Font =            F3,
  209.     Hyphenation =        off,
  210.     Allow Page Break After = no,
  211.     Left Tab =        0/0.75*13 inches>
  212.  
  213. <!Class, p2stacked,
  214.     Bottom Margin =        0 inches,
  215.     Left Margin =        1.60 inches,
  216.     First Indent =        -1.60 inches,
  217.     Line Spacing =        1.121 lines,
  218.     Font =            F6,
  219.     Allow Page Break Within = no,
  220.     Allow Page Break After = no,
  221.     Left Tab =        0 inches,
  222.     Right Tab =        -1.60/-0.17 inches>
  223.  
  224. <!Class, para,
  225.     Bottom Margin =        0.153 inches,
  226.     Left Margin =        1.60 inches,
  227.     Line Spacing =        1.121 lines,
  228.     Font =            F3,
  229.     Allow Page Break Within = no,
  230.     Left Tab =        0/0.75*13 inches>
  231.  
  232. <!Class, return,
  233.     Bottom Margin =        0.077 inches,
  234.     Left Margin =        1.60 inches,
  235.     First Indent =        -0.90 inches,
  236.     Line Spacing =        1.121 lines,
  237.     Alignment =        Left,
  238.     Font =            F6,
  239.     Hyphenation =        off,
  240.     Allow Page Break Within = no,
  241.     Allow Page Break After = no,
  242.     Left Tab =        -0.90/0 inches,
  243.     Right Tab =        7.50 inches>
  244.  
  245. <!Class, secno,
  246.     Top Margin =        0.07 inches,
  247.     Bottom Margin =        0.07 inches,
  248.     Line Spacing =        1.100 lines,
  249.     Alignment =        Left,
  250.     Font =            F5,
  251.     Autonumber Name =    paranum>
  252.  
  253. <!Class, secrule,
  254.     Bottom Margin =        0 inches,
  255.     Line Spacing =        1 lines,
  256.     Font =            F3,
  257.     Hyphenation =        off,
  258.     Allow Page Break After = no,
  259.     Left Tab =        0/0.75*13 inches,
  260.     Autonumber Name =    table>
  261.  
  262. <!Class, sectitle,
  263.     Bottom Margin =        0 inches,
  264.     Line Spacing =        1 lines,
  265.     Alignment =        Right,
  266.     Font =            F5,
  267.     Hyphenation =        off,
  268.     New Page =        yes,
  269.     Left Tab =        0/0.75*13 inches>
  270.  
  271. <!Class, syntax,
  272.     Bottom Margin =        0.077 inches,
  273.     Left Margin =        1.60 inches,
  274.     First Indent =        -0.90 inches,
  275.     Line Spacing =        1.121 lines,
  276.     Alignment =        Left,
  277.     Font =            F6,
  278.     Hyphenation =        off,
  279.     Allow Page Break Within = no,
  280.     Allow Page Break After = no,
  281.     Left Tab =        -0.90/0 inches,
  282.     Right Tab =        8 inches>
  283.  
  284. <!Class, syntax0,
  285.     Bottom Margin =        0 inches,
  286.     Left Margin =        1.60 inches,
  287.     First Indent =        -0.90 inches,
  288.     Line Spacing =        1.121 lines,
  289.     Alignment =        Left,
  290.     Font =            F6,
  291.     Hyphenation =        off,
  292.     Allow Page Break Within = no,
  293.     Allow Page Break After = no,
  294.     Left Tab =        -0.90/0 inches,
  295.     Right Tab =        8 inches>
  296.  
  297. <!Class, "table",
  298.     Top Margin =        0.07 inches,
  299.     Bottom Margin =        0.07 inches,
  300.     Line Spacing =        1.100 lines,
  301.     Font =            F6,
  302.     Autonumber Name =    table>
  303.  
  304. <!Class, title,
  305.     Top Margin =        0.07 inches,
  306.     Bottom Margin =        0.07 inches,
  307.     Line Spacing =        1.100 lines,
  308.     Alignment =        Right,
  309.     Font =            F5,
  310.     TOC Doc Name =        TOC>
  311.  
  312. <!Master Frame,
  313.     Name =            "At Anchor",
  314.     Placement =        At Anchor,
  315.     Width =            0.41 inches,
  316.     Height =        0.137 inches,
  317.     Vertical Alignment =    0.03 inches,
  318.     Diagram =
  319. V4,
  320. (g9,32767,0
  321.  (E10,0,0,0,1,1,0.053333,1,15,0,0,1,0,0,0,1,0,1,1,0.066667,0.066667,6,6,0,0.066
  322.   667,6))>
  323.  
  324. <!Master Frame,
  325.     Name =            p1rule,
  326.     Placement =        At Anchor,
  327.     Width =            6.35 inches,
  328.     Height =        0.153 inches,
  329.     Vertical Alignment =    0.007 inches,
  330.     Shared Contents =    yes,
  331.     Diagram =
  332. V4,
  333. (g9,1,0
  334.  (v4,1,0,0.006667,0.066723,6.326667,0.066611,17,2,0)
  335.  (E10,0,0,0,1,1,0.053333,1,15,0,0,1,0,0,0,0,0,1,1,0.066667,0.066667,6,6,0,0.066
  336.   667,6))>
  337.  
  338. <!Master Frame,
  339.     Name =            p2rule,
  340.     Placement =        At Anchor,
  341.     Width =            4.75 inches,
  342.     Height =        0.15 inches,
  343.     Vertical Alignment =    0.007 inches,
  344.     Shared Contents =    yes,
  345.     Diagram =
  346. V4,
  347. (g9,1,0
  348.  (v4,1,0,4.733333,0.066611,0.006667,0.066723,17,2,0)
  349.  (E10,0,0,0,1,1,0.053333,1,15,0,0,1,0,0,0,0,0,1,1,0.066667,0.066667,6,6,0,0.066
  350.   667,6))>
  351.  
  352. <First Page Header, Frame =
  353. V4,
  354. (g9,0,0
  355.  (E10,0,0,0,1,1,0.053333,1,15,0,0,1,0,0,0,1,1,1,1,0.066667,0.066667,6,6,0,0.066
  356.   667,6))>
  357.  
  358. <Right Page Header, Frame =
  359. V4,
  360. (g9,1,0
  361.  (T8,1,12,4.533333,0.306667,1.8,1,0.333333,0,516,0,17,0,0,0,0,0,0,1,1,2048,512,
  362.   102,1101,2,
  363. <caption,
  364.     Alignment =        Right>
  365.  
  366. Control Functions
  367.  
  368. <End Text>)
  369.  (E10,0,0,0,1,1,0.053333,1,15,0,0,2,0,0,0,0,1,1,1,0.066667,0.066667,6,6,0,0.066
  370.   667,6))>
  371.  
  372. <Left Page Header, Frame =
  373. V4,
  374. (g9,1,0
  375.  (T8,1,12,0,0.306667,2.4,1,0.333333,0,516,0,17,0,0,0,0,0,0,1,1,2048,512,102,110
  376.   1,2,
  377. <caption>
  378.  
  379. Control Functions
  380.  
  381. <End Text>)
  382.  (E10,0,0,0,1,1,0.053333,1,15,0,0,2,0,0,0,0,1,1,1,0.066667,0.066667,6,6,0,0.066
  383.   667,6))>
  384.  
  385. <Right Page Footer, Frame =
  386. V4,
  387. (g9,1,0
  388.  (t8,1,4,6.333333,0.266667,2,17,@nntimsps10b,\240)
  389.  (t8,2,4,0.006667,0.266667,0,17,@nntimsps8i,CLX\ Programmer's\ Reference)
  390.  (v4,3,0,0,0.066667,6.333333,0.066554,17,2,0)
  391.  (E10,0,0,0,1,1,0.053333,1,15,0,0,1,0,0,0,0,1,1,1,0.066667,0.066667,6,6,0,0.066
  392.   667,6))>
  393.  
  394. <Left Page Footer, Frame =
  395. V4,
  396. (g9,1,0
  397.  (t8,1,4,0,0.266667,0,17,@nntimsps10b,\240)
  398.  (t8,2,4,6.333333,0.266667,2,17,@nntimsps8i,CLX\ Programmer's\ Reference)
  399.  (v4,3,0,0.026667,0.066667,6.333333,0.066554,17,2,0)
  400.  (E10,0,0,0,1,0,0.053333,1,15,0,0,1,0,0,0,0,1,0,1,0.066667,0.066667,6,6,0,0.066
  401.   667,6))>
  402.  
  403. <sectitle,
  404.     Allow Page Break Within = no,
  405.     Allow Page Break After = no>
  406.  
  407. <|,"14<#1e>169">
  408. <Frame,
  409.     Name =            "At Anchor",
  410.     Placement =        At Anchor,
  411.     Width =            4.72 inches,
  412.     Height =        0.94 inches,
  413.     Vertical Alignment =    0.03 inches,
  414.     Diagram =
  415. V4,
  416. (g9,1,0
  417.  (T8,1,12,0.133333,0.72,4.563333,1,0.333333,0,516,0,17,0,0,0,0,0,0,1,1,2048,512
  418.   ,102,1101,3,
  419. <title>
  420.  
  421. CONTROL FUNCTIONS
  422.  
  423. <End Text>)
  424.  (E10,0,0,0,1,0,0.053333,1,15,0,0,1,0,0,0,0,1,0,1,0.066667,0.066667,6,6,0,0.066
  425.   667,6))>
  426. <Frame,
  427.     Name =            "At Anchor",
  428.     Placement =        At Anchor,
  429.     Width =            1.626 inches,
  430.     Height =        0.938 inches,
  431.     Vertical Alignment =    0 inches,
  432.     Diagram =
  433. V4,
  434. (g9,1,0
  435.  (T8,1,12,0.066667,0.276667,0,1,0.333333,0,516,0,17,0,0,0,0,0,0,1,1,2048,512,10
  436.   2,1101,3,
  437. <secno,
  438.     TOC Doc Name =        TOC>
  439.  
  440. <Autonum, paranum, 1, First = Yes>
  441.  
  442. <End Text>)
  443.  (T8,2,12,0.026667,0.733333,0,1,0.333333,0,516,0,17,0,0,0,0,0,0,1,1,2048,512,10
  444.   2,1101,3,
  445. <"table">
  446.  
  447. <Autonum, table, 1, First = Yes>
  448.  
  449. <End Text>)
  450.  (T8,3,12,0.066667,0.6,0,1,0.333333,0,516,0,17,0,0,0,0,0,0,1,1,2048,512,102,110
  451.   1,3,
  452. <fig,
  453.     Alignment =        Both,
  454.     Font =            F6,
  455.     Autonumber Name =    figure>
  456.  
  457. <Autonum, figure, 1, First = Yes>
  458.  
  459. <End Text>)
  460.  (g9,5,0
  461.    (p7,5,8,19
  462.      (g9,5,0
  463.        (g9,5,0
  464.          (v4,5,0,0.266667,0,1.6,0,17,1,0)
  465.          (v4,6,0,1.6,0,1.6,0.933333,17,1,0)
  466.          (v4,7,0,1.6,0.933333,0.266667,0.933333,17,1,0)
  467.          (v4,8,0,0.266667,0.933333,0.266667,0,17,1,0))))
  468.    (g9,10,8
  469.      (g9,10,1032
  470.        (p7,10,8,13
  471.          (g9,10,0
  472.            (g9,10,0
  473.              (v4,10,0,1.464913,0.934816,1.302281,0.934816,17,1,0)
  474.              (v4,11,0,1.302281,0.934816,1.302281,0.784694,17,1,0)
  475.              (v4,12,32,1.302281,0.784694,1.302281,0.653329,17,0,0)
  476.              (v4,13,0,1.302281,0.653329,1.302281,0.353088,17,1,0)
  477.              (v4,14,32,1.302281,0.353088,1.284211,0.14667,17,0,0)
  478.              (v4,15,0,1.284211,0.14667,1.464913,0.14667,17,1,0)
  479.              (v4,16,0,1.464913,0.14667,1.464913,0.653329,17,1,0)
  480.              (v4,17,0,1.464913,0.653329,1.555264,0.653329,17,1,0)
  481.              (v4,18,0,1.555264,0.653329,1.555264,0.784694,17,1,0)
  482.              (v4,19,0,1.555264,0.784694,1.464913,0.784694,17,1,0)
  483.              (v4,20,0,1.464913,0.784694,1.464913,0.934816,17,1,0))))
  484.        (p7,22,8,13
  485.          (g9,22,0
  486.            (g9,22,0
  487.              (v4,22,32,1.302281,0.784694,1.302281,0.653329,17,0,0)
  488.              (v4,23,0,1.302281,0.653329,1.103508,0.653329,17,1,0)
  489.              (v4,24,0,1.103508,0.653329,1.302281,0.353088,17,1,0)
  490.              (v4,25,32,1.302281,0.353088,1.284211,0.14667,17,0,0)
  491.              (v4,26,0,1.284211,0.14667,0.958948,0.615804,17,1,0)
  492.              (v4,27,0,0.958948,0.615804,0.958948,0.784694,17,1,0)
  493.              (v4,28,0,0.958948,0.784694,1.302281,0.784694,17,1,0)))))
  494.      (g9,29,2048
  495.        (v4,29,33,0.940876,0.14667,0.940876,0.14667,17,0,0)
  496.        (v4,30,33,0.940876,1.16,0.940876,1.16,17,0,0)
  497.        (v4,31,33,1.573333,1.16,1.573333,1.16,17,0,0)
  498.        (v4,32,33,1.573333,0.14667,1.573333,0.14667,17,0,0)))
  499.    (g9,34,8
  500.      (p7,34,1032,13
  501.        (g9,34,0
  502.          (g9,34,0
  503.            (v4,34,0,0.874386,0.934816,0.874386,0.14667,17,1,0)
  504.            (v4,35,0,0.874386,0.14667,0.729824,0.14667,17,1,0)
  505.            (v4,36,0,0.729824,0.14667,0.585263,0.296792,17,1,0)
  506.            (v4,37,0,0.585263,0.296792,0.585263,0.371851,17,1,0)
  507.            (v4,38,0,0.585263,0.371851,0.711755,0.371851,17,1,0)
  508.            (v4,39,0,0.711755,0.371851,0.711755,0.934816,17,1,0)
  509.            (v4,40,0,0.711755,0.934816,0.874386,0.934816,17,1,0))))
  510.      (g9,41,2048
  511.        (v4,41,33,0.567192,0.14667,0.567192,0.14667,17,0,0)
  512.        (v4,42,33,0.567192,1.16,0.567192,1.16,17,0,0)
  513.        (v4,43,33,0.946667,1.16,0.946667,1.16,17,0,0)
  514.        (v4,44,33,0.946667,0.14667,0.946667,0.14667,17,0,0))))
  515.  (E10,0,0,0,1,1,0.053333,1,15,0,0,1,0,0,0,0,1,1,1,0.066667,0.066667,6,6,0,0.066
  516.   667,6))>
  517.  
  518. <secrule,
  519.     Allow Page Break Within = no,
  520.     Allow Page Break After = yes,
  521.     Autonumber Name =    >
  522.  
  523. <Index, "control", To Named = sectitle>
  524. <Frame,
  525.     Name =            "At Anchor",
  526.     Placement =        At Anchor,
  527.     Width =            6.35 inches,
  528.     Height =        0.153 inches,
  529.     Vertical Alignment =    0.007 inches,
  530.     Diagram =
  531. V4,
  532. (g9,1,0
  533.  (v4,1,0,0.006667,0.066723,6.333333,0.066611,17,2,0)
  534.  (E10,0,0,0,1,1,0.053333,1,15,0,0,1,0,0,0,0,0,1,1,0.066667,0.066667,6,6,0,0.066
  535.   667,6))>
  536.  
  537. <p1stacked,
  538.     Font =            F3,
  539.     Left Tab =        -1.70/0 inches>
  540.  
  541. <F8><Index, "control", "grabbing the server", To Named = p1rule><Index, "server", "grabbing", To Named = p1rule><Index, "grabbing", "server", To Named = p1rule>Grabbing<Tab>
  542. <F6>14.1<#04><F0>Certain cases may require that a client demand 
  543. exclusive access to the<FJ>
  544.  
  545. <p1para,
  546.     Alignment =        Both,
  547.     Font =            F3,
  548.     Allow Page Break After = yes>
  549.  
  550. <F8>the Server<Tab><F0>server,<SP>causing the processing for all 
  551. other clients to be suspended. Such exclusive<SP>access is referred 
  552. to as <F2>grabbing the server<F0>. CLX provides functions to grab<SP>and 
  553. release exclusive access to the server. These function should be used<SP>rarely 
  554. and always with extreme caution, since they have the potential to<SP>disrupt 
  555. the entire window system for all clients. 
  556.  
  557. <syntax,
  558.     Left Tab =        -0.90/0 inches,
  559.     Right Tab =        7.50 inches>
  560.  
  561. grab<#1e>server <F2>display<F0><Tab><F3>Function<Index, Doc = operations, "xlib:grab<#1e>server", Sort String = "grab<#1e>server">
  562.  
  563. <para>
  564.  
  565. Disables processing of requests and close<#1e>downs on all connections 
  566. other than the one on which this request arrived. 
  567.  
  568. <arg>
  569.  
  570. display <F3><#1f> A <F6>display<F3>. 
  571.  
  572. <syntax,
  573.     Left Tab =        -0.90/0 inches,
  574.     Right Tab =        7.50 inches>
  575.  
  576. ungrab<#1e>server <F2>display<F0><Tab><F3>Function<Index, Doc = operations, "xlib:ungrab<#1e>server", Sort String = "ungrab<#1e>server">
  577.  
  578. <para>
  579.  
  580. Restarts processing of requests and close<#1e>downs on other connections.
  581.  
  582. <arg>
  583.  
  584. display <F3><#1f> A <F6>display<F3>. 
  585.  
  586. <syntax,
  587.     Bottom Margin =        0.15 inches,
  588.     Left Tab =        -0.90/0 inches,
  589.     Right Tab =        7.50 inches>
  590.  
  591. with<#1e>server<#1e>grabbed <F2>display <F3>&body<F2> body<F0><Tab><F3>Mac
  592. ro<Index, Doc = operations, "xlib:with<#1e>server<#1e>grabbed", Sort String = "with<#1e>server<#1e>grabbed">
  593.  
  594. <para>
  595.  
  596. Grabs the <F2>display<F0> server only within the dynamic extent 
  597. of the <F2>body<F0>. <F6>ungrab<#1e>server<F0> is automatically 
  598. called upon exit from the <F2>body<F0>. This macro provides the 
  599. most reliable way for CLX clients to grab the server.
  600.  
  601. <arg>
  602.  
  603. display<F3> <#1f> A <F6>display<F3>.
  604.  
  605. body<F3> <#1f> The forms to execute while the server is grabbed.
  606.  
  607. <p1rule>
  608.  
  609. <Index, "pointer", "control", To Named = p1rule><Index, "control", "pointer", To Named = p1rule>
  610. <Frame,
  611.     Name =            p1rule,
  612.     Placement =        At Anchor,
  613.     Width =            6.35 inches,
  614.     Height =        0.153 inches,
  615.     Vertical Alignment =    0.007 inches,
  616.     Shared Contents =    yes>
  617.  
  618. <p1para,
  619.     Alignment =        Both,
  620.     Font =            F3,
  621.     Allow Page Break After = yes>
  622.  
  623. <F8>Pointer Control<Tab><F6>14.2<F0><#04>The following paragraphs 
  624. describe the CLX functions used to:
  625.  
  626. <bullet>
  627.  
  628. <F9>w<Tab><F0>Return or change the pointer acceleration and acceleration 
  629. threshold
  630.  
  631. <F9>w<Tab><F0>Return or change the mapping of pointer button numbers
  632.  
  633. <syntax,
  634.     Left Tab =        -0.90/0 inches,
  635.     Right Tab =        7.50 inches>
  636.  
  637. change<#1e>pointer<#1e>control <F2>display<F3> &key <F0>:acceleration 
  638. :threshold<Tab><F3>Function<Index, Doc = operations, "xlib:change<#1e>pointer<#1e>control", Sort String = "change<#1e>pointer<#1e>control">
  639.  
  640. <para>
  641.  
  642. Changes the acceleration and/or the acceleration threshold of the 
  643. pointer for<SP>the <F2>display<F0>. The <F6>:acceleration<F0> 
  644. number is used as a multiplier, typically<SP>specified as a rational 
  645. number of the form <F2>C/P<F0>, where <F2>C<F0> is the number 
  646. of pixel<SP>positions of cursor motion displayed for <F2>P<F0> units 
  647. of pointer device motion. The<SP>acceleration only occurs if the pointer 
  648. moves more that <F6>:threshold<F0> pixels at<SP>once, and only applies 
  649. to the motion beyond the <F6>:threshold<F0>. Either<SP><F6>:acceleration
  650. <F0> or <F6>:threshold<F0> can be set to <F6>:default<F0>, that 
  651. restores the default<SP>settings of the server.
  652.  
  653. <arg>
  654.  
  655. display <F3><#1f> A <F6>display<F3>.
  656.  
  657. <keyword2>
  658.  
  659. :acceleration <F3><#1f> A number for the acceleration ratio.
  660.  
  661. :threshold <F3><#1f> The number of pixels required for acceleration 
  662. to take effect.
  663.  
  664. <syntax0>
  665.  
  666. <|,"14<#1e>170">pointer<#1e>control <F2>displa<F3>y<F0><Tab><F3>Function<Index, Doc = operations, "xlib:pointer<#1e>control", Sort String = "pointer<#1e>control">
  667.  
  668. <return>
  669.  
  670. <Tab><F3>Returns: <F2><HR>
  671.   acceleration<F3>, <F2>threshold <F3><#1f> Type <F0>number<F3>.
  672.  
  673. <para>
  674.  
  675. Returns the acceleration and threshold for the <F2>display<F0> pointer. 
  676.  
  677. <arg>
  678.  
  679. displa<F3>y <#1f> A <F6>display<F3>.
  680.  
  681. <syntax0>
  682.  
  683. pointer<#1e>mapping <F2>display<F3> &key (<F0>:result<#1e>type 
  684. 'list<F3>)<F0><Tab><F3>Function<Index, Doc = operations, "xlib:pointer<#1e>mapping", Sort String = "pointer<#1e>mapping">
  685.  
  686. <return>
  687.  
  688. <Tab><F3>Returns:<HR>
  689.   <F2>mapping<F3> <#1f> Type <F0>sequence<F3> or <F0>card8<F2>.<F3> 
  690.  
  691. <para>
  692.  
  693. Returns or (with <F6>setf<F0>) changes the mapping of button numbers 
  694. for the <F2>display<F0><SP>pointer. The <F6>:result<#1e>type<F0> 
  695. is not used when changing the mapping. If element <F2>i<F0> of the 
  696. mapping sequence is <F2>j<F0>, then the events from pointer button<SP><F2>j
  697. <F0> are reported by the server as events for button <F2>i<F0>+1. 
  698. (Note that pointer<SP>buttons are numbered beginning with one, while 
  699. the mapping sequence itself is<SP>indexed normally from zero.) If 
  700. element <F2>i<F0> of the mapping sequence is<SP>zero, then button <F2>i
  701. <F0>+1 is disabled and can no longer generate input<SP>events. No 
  702. two elements of the mapping can have the same non<#1e>zero value.
  703.  
  704. The length of the mapping sequence indicates the actual number of 
  705. buttons on<SP>the device. When changing the mapping, the new mapping 
  706. must have this same length.
  707.  
  708. <arg>
  709.  
  710. display <F3><#1f> A <F6>display<F3>.
  711.  
  712. <keyword2>
  713.  
  714. :result<#1e>type <F3><#1f> The type of sequence to return.
  715.  
  716. <p1rule,
  717.     Allow Page Break After = yes>
  718.  
  719. <Index, "keyboard", "bell"><Index, "pointer", "button", "obtaining", To Named = p1rule><Index, "pointer", "button", "setting", To Named = p1rule><Index, "bit vector", "keyboard", To Named = p1rule><Index, "keyboard", "bit vector", To Named = p1rule><Index, "keyboard", "mapping", To Named = p1rule><Index, "mouse", "behavior", To Named = p1rule><Index, "key", "click", To Named = p1rule><Index, "bell", To Named = p1rule><Index, "key", "auto<#1e>repeat", To Named = p1rule><Index, "auto<#1e>repeat keys", To Named = p1rule><Index, "keyboard", "control", To Named = p1rule><Index, "control", "keyboard", To Named = p1rule>
  720. <Frame,
  721.     Name =            p1rule,
  722.     Placement =        At Anchor,
  723.     Width =            6.35 inches,
  724.     Height =        0.153 inches,
  725.     Vertical Alignment =    0.007 inches,
  726.     Shared Contents =    yes>
  727.  
  728. <p1stacked,
  729.     Font =            F3,
  730.     Left Tab =        -1.70/0 inches>
  731.  
  732. <F8>Keyboard <Tab><F6>14.3<F0><#04>The following paragraphs describe 
  733. the CLX functions used to:
  734.  
  735. <p1para,
  736.     Alignment =        Both,
  737.     Font =            F3,
  738.     Allow Page Break After = yes>
  739.  
  740. <F8>Control<Tab>
  741.  
  742. <bullet>
  743.  
  744. <F9>w<Tab><F0>Return or change keyboard controls
  745.  
  746. <F9>w<Tab><F0>Ring the keyboard bell
  747.  
  748. <F9>w<Tab><F0>Return or change the mapping of modifiers
  749.  
  750. <F9>w<Tab><F0>Return the current up/down state of all keys
  751.  
  752. <syntax>
  753.  
  754. bell <F2>display <F3>&optional (<F2>percent<#1e>from<#1e>normal<F3> 
  755. 0)<F0><Tab><F3>Function<Index, Doc = operations, "xlib:bell", Sort String = bell>
  756.  
  757. <para>
  758.  
  759. Rings the bell on the keyboard at a volume relative to the base volume 
  760. for the keyboard, if possible. Percent can range from -100 to 100 
  761. inclusive, or else a Value error occurs. The following is the bell 
  762. volume when percent is non<#1e>negative:
  763.  
  764. (- (+ <F2>base percent<F0>) (<F6>quotient<F0> (* <F2>base percent<F0>) 
  765. 100))
  766.  
  767. and when percent is negative: 
  768.  
  769. (+ <F2>base<F0> (<F6>quotient<F0> (* <F2>base percent<F0>) 100))
  770.  
  771. <arg>
  772.  
  773. display<F3> <#1f> A <F6>display<F3>.
  774.  
  775. percent<#1e>from<#1e>normal<F3> <#1f> An integer (-100 through 100).
  776.  
  777. <syntax,
  778.     New Page =        yes,
  779.     Left Tab =        -0.90/0 inches,
  780.     Right Tab =        7.50 inches>
  781.  
  782. <|,"14<#1e>171">change<#1e>keyboard<#1e>control <F2>display<F3> &key <F0>:key<#1e>clic
  783. k<#1e>percent :bell<#1e>percent<F3> <F0><Tab><F3>Function<Index, Doc = operations, "xlib:change<#1e>keyboard<#1e>control", Sort String = "change<#1e>keyboard<#1e>control"><HR>
  784. <F0>:bell<#1e>pitch :bell<#1e>duration :led :led<#1e>mode :key :auto<#1e>repea
  785. t<#1e>mode
  786.  
  787. <para>
  788.  
  789. Changes the various aspects of the keyboard. The keyword arguments 
  790. specify which controls to change. 
  791.  
  792. The <F6>:key<#1e>click<#1e>percent<F0> keyword sets the volume for 
  793. key clicks, if possible. A value of 0 implies off, while a value of 
  794. 100 implies loud. Setting <F6>:key<#1e>click<#1e>percent<F0> to <F6>:default
  795. <F0> restores the default value. 
  796.  
  797. The <F6>:bell<#1e>percent<F0> sets the base volume for the bell 
  798. between 0 (off) and 100 (loud) if possible. Setting <F6>:bell<#1e>percent
  799. <F0> to <F6>:default<F0> restores the default value. 
  800.  
  801. The <F6>:bell<#1e>pitch<F0> sets the pitch (specified in Hz) of 
  802. the bell, if possible. Setting the <F6>:bell<#1e>pitch<F0> to <F6>:default 
  803. <F0>restores the default value. The <F6>:bell<#1e>duration<F0> 
  804. sets the duration (specified in milliseconds) of the bell, if possible. 
  805. Setting <F6>:bell<#1e>pitch<F0> to <F6>:default<F0> restores the 
  806. default. Note that a bell generator connected with the console but 
  807. not directly on the keyboard is treated as if it were part of the 
  808. keyboard.
  809.  
  810. If both <F6>:led<#1e>mode<F0> and <F6>:led<F0> are specified, 
  811. then the state of that LED is changed, if possible. If only <F6>:led<#1e>mode
  812. <F0> is specified, the state of all LEDs are changed, if possible. 
  813. At most 32 LEDs are supported, numbered from one. No standard interpretation 
  814. of the LEDs are defined. 
  815.  
  816. If both <F6>:auto<#1e>repeat<#1e>mode<F0> and <F6>:key<F0> are 
  817. specified, the auto<#1e>repeat mode of that key is changed, if possible. 
  818. If only <F6>:auto<#1e>repeat<#1e>mode<F0> is specified, the global 
  819. auto<#1e>repeat mode for the entire keyboard is changed, if possible, 
  820. without affecting the per<#1e>key settings. An error occurs if <F6>:key<F0> 
  821. is specified without <F6>:auto<#1e>repeat<#1e>mode<F0>.
  822.  
  823. <arg>
  824.  
  825. display <F3><#1f> A <F6>display<F3>.
  826.  
  827. <keyword2>
  828.  
  829. :key<#1e>click<#1e>percent<F3> <#1f> An integer (0 100).
  830.  
  831. :bell<#1e>percent<F3> <#1f> An integer (0 100).
  832.  
  833. :bell<#1e>pitch<F3> <#1f> A <F0>card16<F3>.
  834.  
  835. :bell<#1e>duration<F3> <#1f> A <F0>card16<F3>.
  836.  
  837. :led <F3><#1f> A <F0>card8<F3>.
  838.  
  839. :led<#1e>mode<F3> <#1f> Either <F0>:on<F3> or <F0>:off<F3>.
  840.  
  841. :key <F3><#1f> A <F0>card8<F3> keycode.
  842.  
  843. :auto<#1e>repeat<#1e>mode <F3><#1f> Either <F0>:on<F3>, <F0>:off<F3>, 
  844. or <F0>:default<F3>.
  845.  
  846. <syntax0>
  847.  
  848. <|,"14<#1e>172">keyboard<#1e>control <F2>display<F0><Tab><F3>Function<Index, Doc = operations, "xlib:keyboard<#1e>control", Sort String = "keyboard<#1e>control">
  849.  
  850. <return,
  851.     Left Tab =        -0.90/0/0.10/7.50 inches>
  852.  
  853. <Tab><F3>Returns: <F2><HR>
  854. <Tab>key<#1e>click<#1e>percent, bell<#1e>percent <F3><#1f> Type <F0>card8
  855. <F3>.<F2><HR>
  856. <Tab>bell<#1e>pitch bell<#1e>duration <F3><#1f> Type <F0>card16<F3>.<F2><HR>
  857. <Tab>led<#1e>mask <F3><#1f> Type <F0>card32<F3>.<F2><HR>
  858. <Tab>global<#1e>auto<#1e>repeat <F3><#1f> Either <F0>:on<F3> or <F0>:off
  859. <F3>.<F2><HR>
  860. <Tab>auto<#1e>repeats <F3><#1f> Type <F0>bit<#1e>vector<F3>.
  861.  
  862. <para>
  863.  
  864. Returns the current control values for the keyboard. For the LEDs, 
  865. the least significant bit of <F2>led<#1e>mask<F0> corresponds to 
  866. LED one, and each one bit in <F2>led<#1e>mask<F0> indicates an LED 
  867. that is lit. <F2>auto<#1e>repeats<F0> is a bit vector; each one 
  868. bit indicates that auto<#1e>repeat is enabled for the corresponding 
  869. key. The vector is represented as 32 bytes. Byte <F2>n<F0> (from 
  870. 0) contains the bits for keys 8<F2>n<F0> to 8<F2>n<F0>+7, with 
  871. the least significant bit in the byte representing key 8<F2>n<F0>.
  872.  
  873. <arg>
  874.  
  875. display<F3> <#1f> A <F6>display<F3>.
  876.  
  877. <syntax0>
  878.  
  879. modifier<#1e>mapping <F2>display <F0><Tab><F3>Function<Index, Doc = operations, "xlib:modifier<#1e>mapping", Sort String = "modifier<#1e>mapping">
  880.  
  881. <return,
  882.     Left Tab =        -0.90/0/0.10/7.50 inches>
  883.  
  884. <Tab><F3>Returns: <F2><HR>
  885. <Tab>shift<#1e>keycodes<F3>,<F2> lock<#1e>keycodes<F3>,<F2> control<#1e>key
  886. codes<F3>,<F2> mod1<#1e>keycodes<F3>,<Tab><Tab><Tab><F2>mod2<#1e>keycodes
  887. <F3>, <F2>mod3<#1e>keycodes<F3>, <F2>mod4<#1e>keycodes<F3>, <F2>mod5<#1e>
  888. keycodes<F3> <#1f> <HR>
  889. <Tab>Type <F0>list<F3> of <F0>card8<F3>.
  890.  
  891. <para>
  892.  
  893. Returns the set of keycodes used for each modifier on the <F2>display<F0> 
  894. keyboard. Each return value is a list of the <F6>card8<F0> keycodes 
  895. used for each modifier key. The order of keycodes within each list 
  896. is server<#1e>dependent.
  897.  
  898. <arg>
  899.  
  900. display <F3><#1f> A <F6>display<F3>.
  901.  
  902. <syntax0>
  903.  
  904. query<#1e>keymap <F2>display<F0><Tab><F3>Function<Index, Doc = operations, "xlib:query<#1e>keymap", Sort String = "query<#1e>keymap">
  905.  
  906. <return>
  907.  
  908. <Tab><F3>Returns: <F2><HR>
  909.   keymap <F3><#1f> Type <F0>bit<#1e>vector <F3>256. 
  910.  
  911. <para>
  912.  
  913. Returns a bit vector that describes the state of the keyboard. Each 
  914. one bit indicates that the corresponding key is currently pressed. 
  915. The vector is represented as 32 bytes. Byte <F2>n<F0> (from 0) contains 
  916. the bits for keys 8<F2>n<F0> to 8<F2>n<F0>+7, with the least significant 
  917. bit in the byte representing key 8<F2>n<F0>.
  918.  
  919. <arg>
  920.  
  921. display<F3> <#1f> A <F6>display<F3>.
  922.  
  923. <syntax0>
  924.  
  925. set<#1e>modifier<#1e>mapping <F2>display <F3>&key <F0>:shift<F3> <F0>:lock
  926. <F3> <F0>:control<F3> <F0>:mod1<F3> <F0>:mod2<F3> <Tab>Function<Index, Doc = operations, "xlib:set<#1e>modifier<#1e>mapping", Sort String = "set<#1e>modifier<#1e>mapping"><HR>
  927. <F0>:mod3 :mod4<F3> <F0>:mod5
  928.  
  929. <return>
  930.  
  931. <Tab><F3>Returns: <F2><HR>
  932.   status <F3><#1f> One of <F0>:success<F3>, <F0>:failed<F3>, 
  933. or <F0>:device<#1e>busy<F3>. 
  934.  
  935. <para>
  936.  
  937. Changes the set of keycodes mapped to the specified modifier keys 
  938. on the<SP><F2>display<F0> keyboard. Each keyword argument contains 
  939. a sequence of new<SP><F6>card8<F0> keycodes for a specific modifier. 
  940. The return value indicates<SP>whether the change was completed successfully.
  941.  
  942. A status of <F6>:failed<F0> is returned if hardware limitations 
  943. prevent the<SP>requested change. For example, multiple keycodes per 
  944. modifier may not be<SP>supported, up transitions on a given keycode 
  945. may not be supported, or<SP>autorepeat may be mandatory for a given 
  946. keycode. If <F6>:failed<F0> is returned,<SP>the mappings for all 
  947. modifiers remain unchanged.
  948.  
  949. <para,
  950.     New Page =        yes>
  951.  
  952. <|,"14<#1e>173">A status of <F6>:device<#1e>busy<F0> is returned if a new 
  953. keycode given for a<SP>modifier was not previously mapped to that 
  954. modifier and is currently in<SP>the down state. In this case, the 
  955. mappings for all modifiers remain<SP>unchanged.
  956.  
  957. <arg>
  958.  
  959. display <F3><#1f> A <F6>display<F3>.
  960.  
  961. <keyword2>
  962.  
  963. :shift<F3>, <F0>:lock<F3>, <F0>:control<F3>, <F0>:mod1<F3>, <F0>:mod2
  964. <F3>, <F0>:mod3<F3>, <F0>:mod4<F3>, <F0>:mod5<F3> <#1f> A sequence 
  965. of <F0>card8<F3> keycodes for the given modifier.
  966.  
  967. <p1rule,
  968.     Allow Page Break After = yes>
  969.  
  970. <Frame,
  971.     Name =            p1rule,
  972.     Placement =        At Anchor,
  973.     Width =            6.35 inches,
  974.     Height =        0.153 inches,
  975.     Vertical Alignment =    0.007 inches,
  976.     Shared Contents =    yes>
  977.  
  978. <p1stacked,
  979.     Font =            F3,
  980.     Left Tab =        -1.70/0 inches>
  981.  
  982. <F8><Index, "keyboard", "encodings", To Named = p1rule>Keyboard <Tab><F6>14.4<F0><#04>Handling 
  983. the great diversity of keyboard devices and international<FJ>
  984.  
  985. <p1para,
  986.     Alignment =        Both,
  987.     Font =            F3,
  988.     Allow Page Break After = yes>
  989.  
  990. <F8>Encodings<Tab><F0>language<SP>character encodings is a difficult 
  991. problem for interactive programs that need<SP>to receive text input 
  992. but must also be portable. The X Window System solves<SP>this problem 
  993. by using different sets of encodings for device keys (<F2>keycodes<F0>)<SP>an
  994. d for character symbols (<F2>keysyms<F0>). Each X server maintains 
  995. a <F2>keyboard<SP>mapping<F0> that associates keycodes and keysyms, 
  996. and which can be returned or<SP>changed by client programs.
  997.  
  998. <para>
  999.  
  1000. To handle text input, a CLX client program must follow these steps:
  1001.  
  1002. <item>
  1003.  
  1004. <Autonum, item, 1, First = Yes, Restart = Yes><Tab>Receive a <F6>:key<#1e>press<F0> 
  1005. (or <F6>:key<#1e>release<F0>) event containing a keycode.
  1006.  
  1007. <Autonum, item, 1><Tab>Convert the keycode into its corresponding 
  1008. keysym, based on the current<SP>keyboard mapping. See <F6>keycode<#1e>keysym
  1009. <F0>.
  1010.  
  1011. <Autonum, item, 1><Tab>Convert the keysym into the corresponding Common 
  1012. Lisp character. See<SP><F6>keysym<#1e>character<F0>.
  1013.  
  1014. <p2rule>
  1015.  
  1016. <Frame,
  1017.     Name =            p2rule,
  1018.     Placement =        At Anchor,
  1019.     Width =            4.75 inches,
  1020.     Height =        0.15 inches,
  1021.     Vertical Alignment =    0.007 inches,
  1022.     Shared Contents =    yes>
  1023.  
  1024. <p2stacked,
  1025.     Font =            F3>
  1026.  
  1027. <Index, "keycodes", To Named = p2rule><Index, "keysyms", To Named = p2rule><Tab><F6>Keycodes and<Tab>14.4.1<F0><#04>
  1028. A <F2>keycode<F0> represents a physical (or logical) key. In CLX, 
  1029. keycodes<FJ>
  1030.  
  1031. <p2para,
  1032.     Alignment =        Both,
  1033.     Font =            F3,
  1034.     Allow Page Break Within = yes,
  1035.     Allow Page Break After = yes,
  1036.     TOC Doc Name =        >
  1037.  
  1038. <Tab><F6>Keysyms<Tab><F0>are values of type (<F6>integer<F0> 8 
  1039. 255). A keycode value carries no intrinsic information, although server 
  1040. implementors may attempt to encode geometry (for example, matrix) 
  1041. information in some fashion so it can be interpreted in a server<#1e> 
  1042. dependent fashion. The mapping between keys and keycodes cannot be 
  1043. changed.
  1044.  
  1045. <para>
  1046.  
  1047. A <F2>keysym<F0> is an encoding of a symbol on the cap of a key. 
  1048. In CLX, keysyms are values of type <F6>card32<F0>. The set of defined 
  1049. keysyms include the ISO Latin character sets (1<#1e>4), Katakana, 
  1050. Arabic, Cyrillic, Greek, Technical, Special, Publishing, APL, Hebrew, 
  1051. and miscellaneous keys found on keyboards (RETURN, HELP, TAB, and 
  1052. so on). The encoding of keysyms is defined by the X Protocol.
  1053.  
  1054. A list of keysyms is associated with each keycode. The length of the 
  1055. list can vary with each keycode. The list is intended to convey the 
  1056. set of symbols on the corresponding key. By convention, if the list 
  1057. contains a single keysym and if that keysym is alphabetic and case 
  1058. distinction is relevant, then it should be treated as equivalent to 
  1059. a two<#1e>element list of the lowercase and uppercase keysyms. For 
  1060. example, if the list contains the single keysym for uppercase A, the 
  1061. client should treat it as if it were a pair with lowercase as the 
  1062. first keysym and uppercase A as the second keysym.
  1063.  
  1064. <para,
  1065.     Bottom Margin =        0.12 inches>
  1066.  
  1067. For any keycode, the first keysym in the list should be chosen as 
  1068. the interpretation of a key press when no modifier keys are down. 
  1069. The second keysym in the list normally should be chosen when the <F6>:shift
  1070. <F0> modifier is on, or when the <F6>:lock<F0> modifier is on and <F6>:lock
  1071. <F0> is interpreted as <F6>:shift<#1e>lock<F0>. When the <F6>:lock<F0> 
  1072. modifier is on and is interpreted as <F6>:caps<#1e>lock<F0>, it 
  1073. is suggested that the <F6>:shift<F0> modifier first be applied to 
  1074. choose a keysym, but if that keysym is lowercase alphabetic, the corresponding 
  1075. uppercase keysym should be used instead. 
  1076.  
  1077. <|,"14<#1e>174">Other interpretations of <F6>:caps<#1e>lock<F0> are possible; 
  1078. for example, it may be viewed as equivalent to <F6>:shift<#1e>lock<F0>, 
  1079. but only applying when the first keysym is lowercase alphabetic and 
  1080. the second keysym is the corresponding uppercase alphabetic. No interpretation 
  1081. of keysyms beyond the first two in a list is suggested here. No spatial 
  1082. geometry of the symbols on the key is defined by their order in the 
  1083. keysym list, although a geometry might be defined on a vendor<#1e>specific 
  1084. basis. The X server does not use the mapping between keycodes and 
  1085. keysyms. Rather, the X server stores the mapping merely for reading 
  1086. and writing by clients.
  1087.  
  1088. <p2rule>
  1089.  
  1090. <Frame,
  1091.     Name =            p2rule,
  1092.     Placement =        At Anchor,
  1093.     Width =            4.75 inches,
  1094.     Height =        0.15 inches,
  1095.     Vertical Alignment =    0.007 inches,
  1096.     Shared Contents =    yes>
  1097.  
  1098. <p2stacked,
  1099.     Font =            F3>
  1100.  
  1101. <Index, "keyboard", "mapping", To Named = p2rule><Tab><F6>Keyboard<Tab>14.4.2<F0><#04>The X server 
  1102. maintains a keyboard mapping that associates each<FJ>
  1103.  
  1104. <p2para,
  1105.     Bottom Margin =        0.12 inches,
  1106.     Alignment =        Both,
  1107.     Font =            F3,
  1108.     Allow Page Break Within = yes,
  1109.     Allow Page Break After = yes,
  1110.     TOC Doc Name =        >
  1111.  
  1112. <Tab><F6>Mapping<Tab><F0>keycode with<SP>one or more keysyms. The 
  1113. following paragraphs describe the CLX functions used to return<SP>or 
  1114. change the mapping of keycodes.
  1115.  
  1116. <syntax,
  1117.     Left Tab =        -0.90/0 inches,
  1118.     Right Tab =        7.50 inches>
  1119.  
  1120. change<#1e>keyboard<#1e>mapping <F2>display keysyms<F3> &key (<F0>:start
  1121. <F3> 0) <F0>:end <Tab><F3>Function<Index, Doc = operations, "xlib:change<#1e>keyboard<#1e>mapping", Sort String = "change<#1e>keyboard<#1e>mapping"><HR>
  1122. (<F0>:first<#1e>keycode :start<F3>)
  1123.  
  1124. <para,
  1125.     Bottom Margin =        0.12 inches>
  1126.  
  1127. Changes the mapping of keycodes to <F2>keysyms<F0>. A <F6>:mapping<#1e>notif
  1128. y<F0> event is<SP>generated for all clients.
  1129.  
  1130. <para>
  1131.  
  1132. The new <F2>keysyms<F0> are specified as a two<#1e>dimensional array 
  1133. in which: 
  1134.  
  1135. (<F6>aref<F0><SP><F2>keysyms<F0> (+ <F6>:start<F0> <F2>i<F0>) <F2>j
  1136. <F0>) 
  1137.  
  1138. is <F2>keysym<F0> <F2>j<F0> associated with keycode (+<SP><F6>:first<#1e>k
  1139. eycode<F0> <F2>i<F0>). The maximum number of <F2>keysyms<F0> 
  1140. associated with any<SP>one keycode is given by: 
  1141.  
  1142. (<F6>array<#1e>dimension<F0> <F2>keysyms<F0> 1)
  1143.  
  1144. <para,
  1145.     Bottom Margin =        0.12 inches>
  1146.  
  1147. <F2>keysyms<F0> should<SP>contain <F6>nil<F0> elements to represent 
  1148. those keysyms that are undefined for<SP>a given keycode. <F6>:start<F0> 
  1149. and <F6>:end<F0> define the subsequence of the <F2>keysyms<F0> 
  1150. array that<SP>defines the new mapping, and the number of keycode mappings 
  1151. changed. By<SP>default, <F6>:end<F0> is given by:
  1152.  
  1153. <para>
  1154.  
  1155. (<F6>array<#1e>dimension<F0> <F2>keysyms<F0> 0) 
  1156.  
  1157. The keycodes<SP>whose mappings are changed are given by <F6>:first<#1e>keycode
  1158. <F0> through the following: 
  1159.  
  1160. (+<SP><F6>:first<#1e>keycode <F0>(- <F6>:end :start<F0>) -1) 
  1161.  
  1162. keycodes outside this range of are<SP>not affected. <F6>:first<#1e>keycode
  1163. <F0> must not be less than (<F6>display<#1e>min<#1e>keycode<F0><SP><F2>disp
  1164. lay<F0>), and the last keycode modified must not be greater than<SP>(<F6>disp
  1165. lay<#1e>max<#1e>keycode<F0> <F2>display<F0>).
  1166.  
  1167. <arg>
  1168.  
  1169. display<F3> <#1f> A <F6>display<F3>.
  1170.  
  1171. keysyms <#1f> <F3>A two<#1e>dimensional array of keysym (<F6>card32<F3>) 
  1172. values.
  1173.  
  1174. <keyword2>
  1175.  
  1176. :start<F3>, <F0>:end<F3> <#1f> Indexes for the subsequence of <F2>keysyms
  1177. <F3> used.
  1178.  
  1179. :first<#1e>keycode<F3> <#1f> A <F0>card8<F3> defining the first 
  1180. keycode mapping changed.
  1181.  
  1182. <syntax0>
  1183.  
  1184. <|,"14<#1e>175">keyboard<#1e>mapping <F2>displa<F3>y &key <F0>:first<#1e>keycode 
  1185. :start :end :data<Tab><F3>Function<Index, Doc = operations, "xlib:keyboard<#1e>mapping", Sort String = "keyboard<#1e>mapping">
  1186.  
  1187. <return>
  1188.  
  1189. <Tab><F3>Returns: <F2><HR>
  1190.   mappings <F3><#1f> Type (<F0>array card32<F3> (* *)).
  1191.  
  1192. <para>
  1193.  
  1194. Returns the keysyms mapped to the given range of keycodes for the<SP><F2>displ
  1195. ay<F0> keyboard. The mappings are returned in the form of a<SP>two<#1e>dimensi
  1196. onal array of <F6>card32<F0> keysym values. The <F6>:data<F0> 
  1197. argument, if<SP>given, must be a two<#1e>dimensional array in which 
  1198. the returned mappings<SP>will be stored. In this case:
  1199.  
  1200. (<F6>array<#1e>dimension :data<F0> 1) 
  1201.  
  1202. defines the<SP>maximum number of keysyms returned for any keycode. 
  1203. Otherwise, a new<SP>array is created and returned. 
  1204.  
  1205. Upon return: 
  1206.  
  1207. (<F6>aref<F0> <F2>mappings<F0> (+ <F2>:start<F0> <F2>i<F0>)<SP><F2>j
  1208. <F0>) 
  1209.  
  1210. will contain keysym <F2>j<F0> associated with keycode (+<SP><F6>:first<#1e>k
  1211. eycode<F0> <F6>i<F0>) (or <F6>nil<F0>, if keysym<SP><F2>j<F0> 
  1212. is undefined for that<SP>keycode).
  1213.  
  1214. <F6>:first<#1e>keycode<F0> specifies the first keycode whose mapping 
  1215. is returned; by<SP>default, <F6>:first<#1e>keycode<F0> is (<F6>display<#1e>m
  1216. in<#1e>keycode<F0> <F2>display<F0>).<SP><F6>:start<F0> and <F6>:end<F0> 
  1217. define the subsequence of the returned array in which<SP>the returned 
  1218. mappings are stored. By default, <F6>:start<F0> is given by<SP><F6>:first<#1e>
  1219. keycode<F0> and <F6>:end<F0> is given by: 
  1220.  
  1221. (1+ (<F6>display<#1e>max<#1e>keycode<F0> <F2>display<F0>))<SP>
  1222.  
  1223. <F6>:first<#1e>keycode<F0> must not be less than (<F6>display<#1e>min<#1e>ke
  1224. ycode<F0> <F2>display<F0>), and<FJ>
  1225. the last keycode returned must not be greater than (<F6>display<#1e>max<#1e>ke
  1226. ycode<F0><SP><F2>display<F0>).
  1227.  
  1228. <arg>
  1229.  
  1230. display<F3> <#1f> A <F6>display<F3>.
  1231.  
  1232. <keyword2>
  1233.  
  1234. :first<#1e>keycode<F3> <#1f> A <F0>card8<F3> defining the first 
  1235. keycode mapping returned.
  1236.  
  1237. :start<F3>, <F0>:end <F3><#1f> Indexes for the subsequence of the 
  1238. returned array which is modified.
  1239.  
  1240. :data <F3><#1f> If given, a two<#1e>dimensional array to receive 
  1241. the returned keysyms.
  1242.  
  1243. <p2rule>
  1244.  
  1245. <Frame,
  1246.     Name =            p2rule,
  1247.     Placement =        At Anchor,
  1248.     Width =            4.75 inches,
  1249.     Height =        0.15 inches,
  1250.     Vertical Alignment =    0.007 inches,
  1251.     Shared Contents =    yes>
  1252.  
  1253. <p2stacked,
  1254.     Font =            F3>
  1255.  
  1256. <Index, "keycodes", "usage", To Named = p1rule><Index, "keysyms", "usage", To Named = p1rule><Tab><F6>Using Keycodes<Tab>14.4.3
  1257. <F0><#04>The following paragraphs describe the CLX functions used 
  1258. to:
  1259.  
  1260. <p2para,
  1261.     Bottom Margin =        0 inches,
  1262.     Alignment =        Both,
  1263.     Font =            F3,
  1264.     Allow Page Break Within = yes,
  1265.     Allow Page Break After = yes,
  1266.     TOC Doc Name =        >
  1267.  
  1268. <Tab><F6>and Keysyms<Tab>
  1269.  
  1270. <bullet>
  1271.  
  1272. <F9>w<Tab><F0>Convert a keycode into a keysym
  1273.  
  1274. <F9>w<Tab><F0>Convert a keysym into a character
  1275.  
  1276. <syntax0>
  1277.  
  1278. keycode<#1e>keysym <F2>display keycode keysym<#1e>index<F0> <Tab><F3>Functio
  1279. n<Index, Doc = operations, "xlib:keycode<#1e>keysym", Sort String = "keycode<#1e>keysym">
  1280.  
  1281. <return>
  1282.  
  1283. <Tab><F3>Returns: <F2><HR>
  1284.   keysym <F3><#1f> Type <F0>keysym<F3>.
  1285.  
  1286. <para>
  1287.  
  1288. Returns the <F2>keysym<F0> at the given <F2>keysym<#1e>index<F0> 
  1289. from the keysym list for the<SP><F2>keycode<F0> in the current keyboard 
  1290. mapping for the <F2>display<F0> server.
  1291.  
  1292. <arg>
  1293.  
  1294. display<F3> <#1f> A <F6>display<F3>.
  1295.  
  1296. keycode <F3><#1f> A <F6>card8<F3>.
  1297.  
  1298. keysym<#1e>index<F3> <#1f> A <F6>card8<F3>.
  1299.  
  1300. <syntax0>
  1301.  
  1302. <|,"14<#1e>176">keycode<#1e>character <F2>display keysym <F3>&optional (<F2>state
  1303. <F3> 0)<F0><Tab><F3>Function<Index, Doc = operations, "xlib:keycode<#1e>character", Sort String = "keycode<#1e>character">
  1304.  
  1305. <return>
  1306.  
  1307. <Tab><F3>Returns: <F2><HR>
  1308.   character <F3><#1f> Type <F0>character<F3> or <F0>null<F3>.
  1309.  
  1310. <para>
  1311.  
  1312. Returns the <F2>character<F0> associated with the <F2>keysym<F0> 
  1313. and the <F2>state<F0>. The <F2>state<F0><SP>is a <F6>mask16<F0> 
  1314. bit mask representing the state of the <F2>display<F0> modifier 
  1315. keys<SP>and pointer buttons. See <F6>state<#1e>mask<#1e>key<F0> 
  1316. in paragraph 1.6, Data Types. If the<SP><F2>keysym<F0> does not 
  1317. represent a Common Lisp character, then <F6>nil<F0> is returned.
  1318.  
  1319. The <F2>state<F0> determines the bits attribute of the returned <F2>characte
  1320. r<F0>, as<SP>follows:
  1321.  
  1322. <F6>:control<Tab>char<#1e>control<#1e>bit<HR>
  1323. :mod<#1e>1<Tab>char<#1e>meta<#1e>bit<HR>
  1324. :mod<#1e>2<Tab>char<#1e>super<#1e>bit<HR>
  1325. :mod<#1e>3<Tab>char<#1e>hyper<#1e>bit
  1326.  
  1327. <arg>
  1328.  
  1329. display<F3> <#1f> A <F6>display<F3>.
  1330.  
  1331. keysym<F3> <#1f> A <F6>keysym<F3>.
  1332.  
  1333. state<F3> <#1f> A <F6>mask16<F3>.
  1334.  
  1335. <p1rule>
  1336.  
  1337. <Index, "client", "termination", To Named = p1rule><Index, "control", "client termination", To Named = p1rule>
  1338. <Frame,
  1339.     Name =            p1rule,
  1340.     Placement =        At Anchor,
  1341.     Width =            6.35 inches,
  1342.     Height =        0.153 inches,
  1343.     Vertical Alignment =    0.007 inches,
  1344.     Shared Contents =    yes>
  1345.  
  1346. <p1stacked,
  1347.     Font =            F3,
  1348.     Left Tab =        -1.70/0 inches>
  1349.  
  1350. <F8>Client <Tab><F6>14.5<#04><F0>The CLX functions affecting client 
  1351. termination are discussed in the<FJ>
  1352.  
  1353. <p1para,
  1354.     Alignment =        Both,
  1355.     Font =            F3,
  1356.     Allow Page Break After = yes>
  1357.  
  1358. <F8>Termination<Tab><F0>following paragraphs.
  1359.  
  1360. <para>
  1361.  
  1362. When a display connection to an X server is closed, whether by an 
  1363. explicit<SP>call to <F6>close<#1e>display<F0> or by some external 
  1364. condition, the server<SP>automatically performs a sequence of operations 
  1365. to clean up server state<SP>information associated with the closed 
  1366. connection. The effect of these<SP>operations depends the <F2>close<#1e>down 
  1367. mode<F0> and the <F2>save<#1e>set<F0> that<SP>the client has specified 
  1368. for the closed display connection. The close<#1e>down<SP>mode of a 
  1369. display determines whether server resources allocated by the<SP>connection 
  1370. are freed or not. The save<#1e>set identifies windows that will<SP>remain 
  1371. after the connection is closed.
  1372.  
  1373. The display save<#1e>set is used primarily by window managers that 
  1374. reparent the<SP>top<#1e>level windows of other clients. For example, 
  1375. such a window manager can<SP>automatically create a frame window that 
  1376. encloses a top<#1e>level client<SP>window, along with a set of controls 
  1377. used for window management.<SP>Ordinarily, termination of the window 
  1378. manager client would then destroy all<SP>client windows! However, 
  1379. the window manager can prevent this by adding to<SP>its save<#1e>set 
  1380. those windows created by other clients that should be<SP>preserved.
  1381.  
  1382. When a display connection closes, an X server performs the following<SP>operati
  1383. ons:
  1384.  
  1385. <item>
  1386.  
  1387. <Autonum, item, 1, Restart = Yes><F9><Tab><F0>For each selection 
  1388. owned by a window created on the connection, the selection owner is 
  1389. set to <F6>nil<F0>.
  1390.  
  1391. <Autonum, item, 1><F9><Tab><F0>An active or passive grab established 
  1392. for a window created on the connection is released.
  1393.  
  1394. <Autonum, item, 1><F9><Tab><F0>If the connection has grabbed the 
  1395. server, the server is ungrabbed.
  1396.  
  1397. <item,
  1398.     Bottom Margin =        0.14 inches,
  1399.     New Page =        yes>
  1400.  
  1401. <|,"14<#1e>177"><Autonum, item, 1><F9><Tab><F0>Server resources and colormap 
  1402. cells allocated by the connection are freed and destroyed, depending 
  1403. on the close<#1e>down mode, as follows:
  1404.  
  1405. <indentA,
  1406.     Bottom Margin =        0.15 inches>
  1407.  
  1408. <F6>:retain<#1e>permanent<F0> <#1f> All resources are marked <F2>permanent
  1409. <F0>, and no resources are destroyed. These resources can later be 
  1410. destroyed by a call to <F6>kill<#1e>client<F0>.
  1411.  
  1412. <F6>:retain<#1e>temporary<F0> <#1f> All resources are marked <F2>temporary
  1413. <F0>, and no resources are destroyed. These resources can later be 
  1414. destroyed by a call to <F6>kill<#1e>client<F0> or <F6>kill<#1e>temporary<#1e>
  1415. clients<F0>.
  1416.  
  1417. <indentA>
  1418.  
  1419. <F6>:destroy<F0> <#1f> All resources are destroyed.
  1420.  
  1421. <para,
  1422.     Bottom Margin =        0.12 inches>
  1423.  
  1424. When server resources allocated by a display connection are destroyed 
  1425. <#1f><SP>whether by closing the connection with close<#1e>down mode <F6>:destr
  1426. oy<F0> or by later<SP>calling <F6>kill<#1e>client<F0> or <F6>kill<#1e>tempo
  1427. rary<#1e>clients<F0> <#1f> then an X server performs<SP>the following 
  1428. operations on each member of the save<#1e>set before actually<SP>destroying 
  1429. resources.
  1430.  
  1431. <item,
  1432.     Bottom Margin =        0.14 inches>
  1433.  
  1434. <Autonum, item, 1, Restart = Yes><F9><Tab><F0>If the save<#1e>set 
  1435. window is a descendant of a window created on the connection, the 
  1436. save<#1e>set window is reparented. The new parent is the closest ancestor 
  1437. such that the save<#1e>set window is no longer a descendant of any 
  1438. window created on the connection. The position of the reparented window 
  1439. with respect to its parent remains unchanged.
  1440.  
  1441. <Autonum, item, 1><F9><Tab><F0>If the save<#1e>set window is unmapped, 
  1442. then it is mapped.
  1443.  
  1444. <para,
  1445.     Bottom Margin =        0.12 inches>
  1446.  
  1447. If the last connection open to an X server is closed with close<#1e>down 
  1448. mode<SP><F6>:destroy<F0>, the server resets its state to restore 
  1449. all initial defaults.<SP>The server state after reset is the same 
  1450. as its initial state when first<SP>started. When an X server resets, 
  1451. it performs the following operations:<Index, "X server", Sort String = "x server", "reset operations">
  1452.  
  1453. <bullet,
  1454.     Bottom Margin =        0.13 inches>
  1455.  
  1456. <F9>w<Tab><F0>All permanent and temporary server resources from 
  1457. previously<#1e>closed connections are destroyed.
  1458.  
  1459. <F9>w<Tab><F0>All but the predefined atoms are deleted.
  1460.  
  1461. <F9>w<Tab><F0>All root window properties are deleted.
  1462.  
  1463. <F9>w<Tab><F0>All device control attributes and mappings are restored 
  1464. to their original default values.
  1465.  
  1466. <F9>w<Tab><F0>The default background and cursor for all root windows 
  1467. are restored.
  1468.  
  1469. <F9>w<Tab><F0>The default font path is restored.
  1470.  
  1471. <F9>w<Tab><F0>The input focus is set to <F6>:pointer<#1e>root<F0>.
  1472.  
  1473. <F9>w<Tab><F0>The access control list is reset.
  1474.  
  1475. <para>
  1476.  
  1477. The following paragraphs describe the CLX functions used to:
  1478.  
  1479. <bullet,
  1480.     Bottom Margin =        0.13 inches>
  1481.  
  1482. <F9>w<Tab><F0>Add or remove a window from a display save<#1e>set.
  1483.  
  1484. <F9>w<Tab><F0>Return or change the display close<#1e>down mode.
  1485.  
  1486. <F9>w<Tab><F0>Force a connection to be closed or all its server 
  1487. resources to be destroyed.
  1488.  
  1489. <bullet>
  1490.  
  1491. <F9>w<Tab><F0>Force a connection to be closed and all temporary 
  1492. resources to be destroyed.
  1493.  
  1494. <syntax,
  1495.     Left Tab =        -0.90/0 inches,
  1496.     Right Tab =        7.50 inches>
  1497.  
  1498. <|,"14<#1e>178">add<#1e>to<#1e>save<#1e>set <F2>window<F0><Tab><F3>Function<Index, Doc = operations, "xlib:add<#1e>to<#1e>save<#1e>set", Sort String = "add<#1e>to<#1e>save<#1e>set">
  1499.  
  1500. <para>
  1501.  
  1502. Adds the specified <F2>window<F0> to the save<#1e>set of the <F2>window
  1503. <F0> display. The <F2>window<F0> must have been created by some 
  1504. other display. Windows are removed automatically from the save<#1e>set 
  1505. when they are destroyed.
  1506.  
  1507. <arg>
  1508.  
  1509. window <F3><#1f> A <F6>window<F3>.
  1510.  
  1511. <syntax0>
  1512.  
  1513. close<#1e>down<#1e>mode <F2>display<F0><Tab><F3>Function<Index, Doc = operations, "xlib:close<#1e>down<#1e>mode", Sort String = "close<#1e>down<#1e>mode">
  1514.  
  1515. <return>
  1516.  
  1517. <Tab><F3>Returns: <F2><HR>
  1518.   mode <F3><#1f> One of <F0>:destroy<F3>,<F0> :retain<#1e>permanent<F3>, 
  1519. or <F0>:retain<#1e>temporary<F3>.
  1520.  
  1521. <para>
  1522.  
  1523. Returns and (with <F6>setf<F0>) sets the close<#1e>down mode of 
  1524. the client's resources at connection close. 
  1525.  
  1526. <arg>
  1527.  
  1528. display<F3> <#1f> A <F6>display<F3>.
  1529.  
  1530. <syntax>
  1531.  
  1532. kill<#1e>client <F2>display resource<#1e>id<F0><Tab><F3>Function<Index, Doc = operations, "xlib:kill<#1e>client", Sort String = "kill<#1e>client">
  1533.  
  1534. <para>
  1535.  
  1536. Closes the display connection which created the given <F2>resource<#1e>id
  1537. <F0>. The<SP><F2>resource<#1e>id<F0> must be valid, but need not 
  1538. belong to the given <F2>display<F0>.
  1539.  
  1540. If the closed connection was previously open, the connection is closed<SP>accor
  1541. ding to its close<#1e>down mode. Otherwise, if the connection had 
  1542. been<SP>previously terminated with close<#1e>down mode <F6>:retain<#1e>permane
  1543. nt<F0> or<SP><F6>:retain<#1e>temporary<F0>, then all its retained 
  1544. server resources <#1f> both permanent<SP>and temporary <#1f> are destroyed.
  1545.  
  1546. <arg>
  1547.  
  1548. display <F3><#1f> A <F6>display<F3>.
  1549.  
  1550. resource<#1e>id<F3> <#1f> A valid <F6>card29<F3> resource ID.
  1551.  
  1552. <syntax>
  1553.  
  1554. kill<#1e>temporary<#1e>clients <F2>display<F0><Tab><F3>Function<Index, Doc = operations, "xlib:kill<#1e>temporary<#1e>clients", Sort String = "kill<#1e>temporary<#1e>clients">
  1555.  
  1556. <para>
  1557.  
  1558. Closes the <F2>display<F0> connection and destroys all retained 
  1559. temporary server<SP>resources for this and all previously<#1e>terminated 
  1560. connections.
  1561.  
  1562. If the <F2>display<F0> connection was previously open, the connection 
  1563. is closed<SP>according to its close<#1e>down mode. Otherwise, if the <F2>displ
  1564. ay<F0> connection had<SP>been previously terminated with close<#1e>down 
  1565. mode <F6>:retain<#1e>permanent<F0> or<SP><F6>:retain<#1e>temporary<F0>, 
  1566. then all its retained server resources <#1f> both permanent<SP>and 
  1567. temporary <#1f> are destroyed.
  1568.  
  1569. <arg>
  1570.  
  1571. display<F3> <#1f> A <F6>display<F3>.
  1572.  
  1573. <syntax,
  1574.     Left Tab =        -0.90/0 inches,
  1575.     Right Tab =        7.50 inches>
  1576.  
  1577. remove<#1e>from<#1e>save<#1e>set <F2>window<F0><Tab><F3>Function<Index, Doc = operations, "xlib:remove<#1e>from<#1e>save<#1e>set ", Sort String = "remove<#1e>from<#1e>save<#1e>set ">
  1578.  
  1579. <para>
  1580.  
  1581. Removes the specified <F2>window<F0> from the save<#1e>set of the <F2>window
  1582. <F0> display. The <F2>window<F0> must have been created by some 
  1583. other display. Windows are removed automatically from the save<#1e>set 
  1584. when they are destroyed.
  1585.  
  1586. <arg>
  1587.  
  1588. window <F3><#1f> A <F6>window<F3>.
  1589.  
  1590. <p1rule,
  1591.     New Page =        yes>
  1592.  
  1593. <|,"14<#1e>179"><Index, "host", "managing access", To Named = p1rule><Index, "control", "host access", To Named = p1rule>
  1594. <Frame,
  1595.     Name =            p1rule,
  1596.     Placement =        At Anchor,
  1597.     Width =            6.35 inches,
  1598.     Height =        0.153 inches,
  1599.     Vertical Alignment =    0.007 inches,
  1600.     Shared Contents =    yes>
  1601.  
  1602. <p1stacked,
  1603.     Font =            F3,
  1604.     Left Tab =        -1.70/0 inches>
  1605.  
  1606. <F8>Managing Host <Tab><F6>14.6<F0><#04>An X server maintains a 
  1607. list of hosts from which client programs can be<FJ>
  1608.  
  1609. <p1para,
  1610.     Alignment =        Both,
  1611.     Font =            F3,
  1612.     Allow Page Break After = yes>
  1613.  
  1614. <F8><Index, "access control list">Access<Tab><F0>run. Only clients executing 
  1615. on hosts that belong to this <F2>access control list<F0> are allowed 
  1616. to open a connection to the server. Typically, the access control 
  1617. list can be changed by clients running on the same host as the server. 
  1618. Some server implementations can also implement other authorization 
  1619. mechanisms in addition to, or in place of, this mechanism. The action 
  1620. of this mechanism can be conditional based on the authorization protocol 
  1621. name and data received by the server at connection setup.
  1622.  
  1623. <para>
  1624.  
  1625. The following paragraphs describe the CLX functions used to:
  1626.  
  1627. <bullet>
  1628.  
  1629. <F9>w<Tab><F0>Add or remove hosts on the access control list.
  1630.  
  1631. <F9>w<Tab><F0>Return the hosts on the access control list.
  1632.  
  1633. <F9>w<Tab><F0>Return or change the state of the access control list 
  1634. mechanism
  1635.  
  1636. <syntax0>
  1637.  
  1638. access<#1e>control <F2>display<F0><Tab><F3>Function<Index, Doc = operations, "xlib:access<#1e>control", Sort String = "access<#1e>control">
  1639.  
  1640. <return>
  1641.  
  1642. <Tab><F3>Returns: <F2><HR>
  1643.   enabled<#1e>p <F3><#1f> Type <F0>boolean<F3>.
  1644.  
  1645. <para>
  1646.  
  1647. Returns and (with <F6>setf<F0>) changes the state of the access 
  1648. control list<SP>mechanism for the <F2>display<F0> server. Returns 
  1649. true if access control is<SP>enabled; otherwise, <F6>nil<F0> is 
  1650. returned. If enabled, the access control list<SP>is used to validate 
  1651. each client during connection setup.
  1652.  
  1653. Only a client running on the same host as the server is allowed to<SP>enable 
  1654. or disable the access control list mechanism.
  1655.  
  1656. <arg>
  1657.  
  1658. display<F3> <#1f> A <F6>display<F3>.
  1659.  
  1660. <syntax0>
  1661.  
  1662. access<#1e>hosts<Tab><F2>display<F3> &key (<F0>:result<#1e>type<F3> <F0>'l
  1663. ist<F3>)<F0><Tab><F3>Function<Index, Doc = operations, "xlib:access<#1e>hosts", Sort String = "access<#1e>hosts">
  1664.  
  1665. <return>
  1666.  
  1667. <Tab><F3>Returns: <F2><HR>
  1668.   hosts <F3><#1f> <F0>sequence<F3> of <F0>string<F3>.<F2><HR>
  1669.   enabled<#1e>p <F3><#1f> Type <F0>boolean<F3>.
  1670.  
  1671. <para>
  1672.  
  1673. Returns a sequence containing the <F2>hosts<F0> that belong to the 
  1674. access<SP>control list of the <F2>display<F0> server. Elements of 
  1675. the returned <F2>hosts<F0><SP>sequence are either strings or some 
  1676. other type of object recognized as a<SP>host name by <F6>add<#1e>access<#1e>ho
  1677. st<F0> and <F6>remove<#1e>access<#1e>host<F0>. The second returned<SP>value 
  1678. specifies whether the access control list mechanism is currently<SP>enabled 
  1679. or disabled (see <F6>access<#1e>control<F0>).
  1680.  
  1681. <arg>
  1682.  
  1683. display<F3> <#1f> A <F6>display<F3>.
  1684.  
  1685. <F6>:result<#1e>type<F0> <F3><#1f> The type of hosts sequence to 
  1686. return.
  1687.  
  1688. <syntax,
  1689.     Left Tab =        -0.90/0 inches,
  1690.     Right Tab =        7.50 inches>
  1691.  
  1692. add<#1e>access<#1e>host <F2>display host<F0><Tab><F3>Function<Index, Doc = operations, "xlib:add<#1e>access<#1e>host", Sort String = "add<#1e>access<#1e>host">
  1693.  
  1694. <para>
  1695.  
  1696. Adds the specified <F2>host<F0> to the access control list. Only 
  1697. a client running on the same host as the server can change the access 
  1698. control list.
  1699.  
  1700. <arg>
  1701.  
  1702. display<F3> <#1f> A <F6>display<F3>.
  1703.  
  1704. host <F3><#1f> A host name. Either a string or some other implementation<#1e>d
  1705. ependent type.
  1706.  
  1707. <syntax,
  1708.     New Page =        yes,
  1709.     Left Tab =        -0.90/0 inches,
  1710.     Right Tab =        7.50 inches>
  1711.  
  1712. <|,"14<#1e>180">remove<#1e>access<#1e>host <F2>display host<F0><Tab><F3>Function<Index, Doc = operations, "xlib:remove<#1e>access<#1e>host", Sort String = "remove<#1e>access<#1e>host">
  1713.  
  1714. <para>
  1715.  
  1716. Removes the specified <F2>host<F0> from the access control list. 
  1717. Only a client running on the same host as the server can change the 
  1718. access control list.
  1719.  
  1720. <arg>
  1721.  
  1722. display<F3> <#1f> A <F6>display<F3>.
  1723.  
  1724. host<F3> <#1f> A host name. Either a string or some other implementation<#1e>d
  1725. ependent type.
  1726.  
  1727. <p1rule>
  1728.  
  1729. <Index, "screen", "saver", To Named = sectitle><Index, "control", "screen saver", To Named = sectitle>
  1730. <Frame,
  1731.     Name =            p1rule,
  1732.     Placement =        At Anchor,
  1733.     Width =            6.35 inches,
  1734.     Height =        0.153 inches,
  1735.     Vertical Alignment =    0.007 inches,
  1736.     Shared Contents =    yes>
  1737.  
  1738. <p1para,
  1739.     Alignment =        Both,
  1740.     Font =            F3,
  1741.     Allow Page Break After = yes>
  1742.  
  1743. <F8>Screen Saver<Tab><F6>14.7<F0><#04>To prevent monitor damage, 
  1744. an X server implements a screen saver function which blanks screens 
  1745. during periods of unuse. The screen saver can be in one of three states:
  1746.  
  1747. <bullet>
  1748.  
  1749. <F9>w<Tab><F0>Disabled <#1f> No screen blanking is done and screen 
  1750. content remains unchanged.
  1751.  
  1752. <F9>w<Tab><F0>Deactivated <#1f> The server is being used. When the 
  1753. server input devices are unused for a specific amount of time, the 
  1754. screen saver becomes activated.
  1755.  
  1756. <F9>w<Tab><F0>Activated <#1f> The server input devices are unused. 
  1757. The screen saver blanks all server screens or displays a server<#1e>dependent 
  1758. image. As soon as an input event from either the pointer or the keyboard 
  1759. occurs, the screen saver is deactivated and its timer is reset.
  1760.  
  1761. <para>
  1762.  
  1763. The following paragraphs describe the CLX functions used to:
  1764.  
  1765. <bullet>
  1766.  
  1767. <F9>w<Tab><F0>Return or change screen saver control values.
  1768.  
  1769. <F9>w<Tab><F0>Activate or reset the screen saver
  1770.  
  1771. <syntax,
  1772.     Left Tab =        -0.90/0 inches,
  1773.     Right Tab =        7.50 inches>
  1774.  
  1775. activate<#1e>screen<#1e>saver <F2>display<F0><Tab><F3>Function<Index, Doc = operations, "xlib:activate<#1e>screen<#1e>saver", Sort String = "activate<#1e>screen<#1e>saver">
  1776.  
  1777. <para>
  1778.  
  1779. Activates the screen saver for the <F2>display<F0> server.
  1780.  
  1781. <arg>
  1782.  
  1783. display<F3> <#1f> A <F6>display<F3>.
  1784.  
  1785. <syntax,
  1786.     Left Tab =        -0.90/0 inches,
  1787.     Right Tab =        7.50 inches>
  1788.  
  1789. reset<#1e>screen<#1e>saver <F2>display<F0><Tab><F3>Function<Index, Doc = operations, "xlib:reset<#1e>screen<#1e>saver", Sort String = "reset<#1e>screen<#1e>saver">
  1790.  
  1791. <para>
  1792.  
  1793. Deactivates the screen saver for the <F2>display<F0> server (if 
  1794. necessary) and resets its timer, just as if a pointer or keyboard 
  1795. event had occurred.
  1796.  
  1797. <arg>
  1798.  
  1799. display<F3> <#1f> A <F6>display<F3>.
  1800.  
  1801. <syntax0>
  1802.  
  1803. screen<#1e>saver<Tab><F2>display<F0><Tab><F3>Function<Index, Doc = operations, "xlib:screen<#1e>saver", Sort String = "screen<#1e>saver">
  1804.  
  1805. <return>
  1806.  
  1807. <Tab><F3>Returns: <F2><HR>
  1808.   timeout<F3>,<F2> period <F3><#1f> Type <F0>int16<F3>.<HR>
  1809.   <F2>blanking<F3>,<F2> exposures <F3><#1f> One of <F0>:yes<F3> 
  1810. or <F0>:no<F3>.
  1811.  
  1812. <para>
  1813.  
  1814. Returns the current control values for the <F2>display<F0> server 
  1815. screen saver. See <F6>set<#1e>screen<#1e>saver<F0>.
  1816.  
  1817. <arg>
  1818.  
  1819. display<F3> <#1f> A <F6>display<F3>.
  1820.  
  1821. <syntax,
  1822.     New Page =        yes,
  1823.     Left Tab =        -0.90/0 inches,
  1824.     Right Tab =        7.50 inches>
  1825.  
  1826. <|,"14<#1e>181">set<#1e>screen<#1e>saver <F2>display timeout period blanking 
  1827. exposures <F0><Tab><F3>Function<Index, Doc = operations, "xlib:set<#1e>screen<#1e>saver", Sort String = "set<#1e>screen<#1e>saver">
  1828.  
  1829. <para>
  1830.  
  1831. Changes the current control values for the <F2>display<F0> server 
  1832. screen saver.<SP>The screen saver is reset. The screen saver is also 
  1833. disabled if:
  1834.  
  1835. <bullet>
  1836.  
  1837. <F9>w<Tab><F2>timeout<F0> is zero, or
  1838.  
  1839. <F9>w<Tab><F0>Both <F2>blanking<F0> and <F2>exposures<F0> are 
  1840. disabled and the server cannot regenerate the screen contents without 
  1841. sending <F6>:exposure<F0> events.
  1842.  
  1843. <para>
  1844.  
  1845. The <F2>timeout <F0>specifies the (non<#1e>negative) number of seconds 
  1846. of input<SP>device inactivity that must elapse before the screen saver 
  1847. is activated.<SP>The <F2>timeout<F0> can be set to <F6>:default<F0> 
  1848. to restore the server default timeout<SP>interval.
  1849.  
  1850. If <F2>blanking<F0> is <F6>:yes<F0> and the screen hardware supports 
  1851. blanking, blanking is enabled; that is, the screen saver will simply 
  1852. blank all<SP>screens when it is activated. <F2>blanking<F0> can 
  1853. be set to <F6>:default<F0> to<SP>restore the server default state 
  1854. for blanking.
  1855.  
  1856. If <F2>exposures<F0> is <F6>:yes<F0>, exposures are enabled. If 
  1857. exposures are<SP>enabled, or if the server is capable of regenerating 
  1858. screen contents<SP>without sending <F6>:exposure<F0> events, the 
  1859. screen saver will display<SP>some server<#1e>dependent image when 
  1860. activated. Frequently, this image will<SP>consist of a repeating animation 
  1861. sequence, in which case <F2>period<F0><SP>specifies the (non<#1e>negative) 
  1862. number of seconds for each repetition. A<SP><F2>period<F0> of zero 
  1863. is a hint that no repetition should occur.
  1864.  
  1865. <arg>
  1866.  
  1867. display <F3><#1f> A <F6>display<F3>.
  1868.  
  1869. timeout<F3> <#1f> Specifies the delay until timeout takes over.
  1870.  
  1871. period<F3> <#1f> Specifies the periodic change interval, if used.
  1872.  
  1873. blanking<F3> <#1f> Specifies whether the blanking option is available.
  1874.  
  1875. exposures <F3><#1f> Specifies whether exposures are allowed during 
  1876. blanking.
  1877.  
  1878. <newpage>
  1879.  
  1880. <|,"14<#1e>182">
  1881.