diff options
author | Mattias Andrée <maandree@operamail.com> | 2015-07-14 13:51:31 +0200 |
---|---|---|
committer | Mattias Andrée <maandree@operamail.com> | 2015-07-14 13:51:31 +0200 |
commit | 2a981a921c4a5e43b821533131dc78f64ccad772 (patch) | |
tree | d67af31cfb1fe5701e91c83dee1f43a091372211 /doc/info | |
parent | m + indices (diff) | |
download | mds-2a981a921c4a5e43b821533131dc78f64ccad772.tar.gz mds-2a981a921c4a5e43b821533131dc78f64ccad772.tar.bz2 mds-2a981a921c4a5e43b821533131dc78f64ccad772.tar.xz |
info: misc
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to '')
-rw-r--r-- | doc/info/mds.texinfo | 1127 |
1 files changed, 758 insertions, 369 deletions
diff --git a/doc/info/mds.texinfo b/doc/info/mds.texinfo index e45fa77..a16b4b0 100644 --- a/doc/info/mds.texinfo +++ b/doc/info/mds.texinfo @@ -1,67 +1,184 @@ \input texinfo @c -*-texinfo-*- +@copying +Copyright @copyright{} 2014, 2015 Mattias Andrée (@email{maandree@@member.fsf.org}) + +@quotation +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, with no Front-Cover Texts, and with no Back-Cover +Texts. A copy of the license is included in the section entitled +``GNU Free Documentation License''. +@end quotation +@end copying + @c %**start of header @setfilename mds.info -@settitle mds +@settitle mds -- The avant-garde micro-display server +@documentencoding UTF-8 +@documentlanguage en_GB +@finalout +@iftex +@c @set USLETTER @c @set AFIVEPAPER @c @set SMALLBOOK -@c This document does not look too good on A5-paper -@c This document looks best on A4-paper, but smallbook format is acceptable + +@c @set HARDCOPY +@c @set CROPMARKS +@c @set SKIPCHAPTERNEWPAGE +@c @set SKIPFONTTEXTSIZE +@end iftex +@c @set LOGO +@c @set DOUBLE_HEADINGS +@c @set SINGLE_HEADINGS +@c @set AMERICANSPACING + +@ignore + + This document does not look too good on A5-paper. + This document looks best on A4-paper, but smallbook + format and US Letter is acceptable. + + CROPMARKS has no effect unless HARDCOPY is set. + CROPMARKS and AFIVEPAPER (or actually @cropmarks + and @afivepaper) does not play well together. + + You can configure how TeX output files should look by + uncommenting @set commands above. Do not uncomment more + than one of the paper sizes (USLETTER, AFIVEPAPER and + SMALLBOOK); if none is uncomment AFOURPAPER will be set. + However, if you do not want to modify this source file, + you can run `make` with for example `TEXIFLAGS='-D HARDCOPY'` + or `TEXIFLAGS='--texinfo="@set HARDCOPY"'`. + +@end ignore + +@ifclear SINGLE_HEADINGS +@ifclear DOUBLE_HEADINGS +@ifclear HARDCOPY +@set SINGLE_HEADINGS +@end ifclear +@ifset HARDCOPY +@set DOUBLE_HEADINGS +@end ifset +@end ifclear +@end ifclear @ifset AFIVEPAPER @afivepaper @end ifset -@ifclear AFIVEPAPER @ifset SMALLBOOK @smallbook @end ifset +@ifclear AFIVEPAPER @ifclear SMALLBOOK +@ifclear USLETTER @afourpaper @set AFOURPAPER @end ifclear @end ifclear - -@documentencoding UTF-8 -@documentlanguage en - -@c @set HARDCOPY -@c @set LOGO +@end ifclear @ifset HARDCOPY +@ifset CROPMARKS @cropmarks +@end ifset +@ifclear SKIPCHAPTERNEWPAGE @setchapternewpage odd +@end ifclear @end ifset -@finalout -@c %**end of header +@ifclear SKIPFONTTEXTSIZE +@ifset SMALLBOOK +@set SMALLFONT +@end ifset +@ifset AFIVEPAPER +@set SMALLFONT +@end ifset +@end ifclear +@ifset SMALLFONT +@fonttextsize 10 +@end ifset +@ifclear SMALLFONT +@fonttextsize 11 +@end ifclear + +@ifclear AMERICANSPACING +@frenchspacing on +@end ifclear +@c @paragraphindent asis +@c @firstparagraphindent none +@c @exampleindent asis +@c @kbdinputstyle distinct @dircategory Graphics environment @direntry -* mds: (mds). The avant-garde micro-display server +* mds: (mds). The avant-garde micro-display server. @end direntry +@documentdescription +User and developer manual for mds, the avant-garde +micro-display server, and servers, protocols, +libraries and concepts. +@end documentdescription +@c %**end of header + + + +@ifset AFIVEPAPER +@set AFIVEPAPER_OR_USLETTER +@set SMALLBOOK_OR_AFIVEPAPER +@set AFOURPAPER_OR_AFIVEPAPER +@end ifset +@ifset USLETTER +@set AFIVEPAPER_OR_USLETTER +@set AFOURPAPER_OR_USLETTER +@end ifset +@ifset AFOURPAPER +@set AFOURPAPER_OR_USLETTER +@set AFOURPAPER_OR_AFIVEPAPER +@end ifset +@ifset SMALLBOOK +@set SMALLBOOK_OR_AFIVEPAPER +@end ifset + +@ifset SMALLFONT +@set AFOURPAPER_OR_USLETTER_OR_SMALLFONT +@ifset SMALLBOOK +@set SMALLBOOK_WITH_SMALLFONT +@set AFOURPAPER_OR_USLETTER_OR_SMALLBOOK_WITH_SMALLFONT +@set AFIVEPAPER_OR_USLETTER_OR_SMALLBOOK_WITH_SMALLFONT +@end ifset +@ifset AFIVEPAPER +@set AFIVEPAPER_WITH_SMALLFONT +@end ifset +@ifset AFOURPAPER +@set AFOURPAPER_WITH_SMALLFONT +@set AFIVEPAPER_OR_AFOURPAPER_WITH_SMALLFONT +@end ifset +@ifset USLETTER +@set USLETTER_WITH_SMALLFONT +@end ifset +@end ifset +@ifset AFOURPAPER_OR_USLETTER +@set AFOURPAPER_OR_USLETTER_OR_SMALLFONT +@set AFOURPAPER_OR_USLETTER_OR_SMALLBOOK_WITH_SMALLFONT +@end ifset +@ifset AFIVEPAPER_OR_USLETTER +@set AFIVEPAPER_OR_USLETTER_OR_SMALLBOOK_WITH_SMALLFONT +@set AFIVEPAPER_OR_AFOURPAPER_WITH_SMALLFONT +@end ifset + + @defindex op @defindex sg -@ifclear HARDCOPY -@copying -Copyright @copyright{} 2014, 2015 Mattias Andrée - -@quotation -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 or -any later version published by the Free Software Foundation; with no -Invariant Sections, with no Front-Cover Texts, and with no Back-Cover -Texts. A copy of the license is included in the section entitled -``GNU Free Documentation License''. -@end quotation -@end copying -@end ifclear @ifset HARDCOPY @include hardcopy-copying.texinfo @end ifset @@ -99,6 +216,14 @@ Texts. A copy of the license is included in the section entitled @insertcopying @end titlepage +@ifset DOUBLE_HEADINGS +@headings double +@end ifset +@ifset SINGLE_HEADINGS +@headings single +@end ifset + +@shortcontents @contents @@ -120,8 +245,10 @@ Texts. A copy of the license is included in the section entitled * Specifications:: Specifications. * New Concepts:: Discussion of new display server concepts. * Discussion:: Discussion on display server-architecture. + * GNU General Public License:: Copying and sharing @command{mds}. * GNU Free Documentation License:: Copying and sharing this manual. + * Program index:: Index of servers, clients and utilities. * Variable index:: Index of environment variables. * Option index:: Index of command line options. @@ -130,7 +257,7 @@ Texts. A copy of the license is included in the section entitled * Function index:: Index of functions. * Data type index:: Index of data types. @end menu -@c TODO @detailmenu +@c TODO @detailmenu (`C-c C-u m`) @@ -282,7 +409,7 @@ things: @itemize @item -Request assignment of a unique ID. +Request assignment of a unique ID@. @item Multicast a message. @@ -486,7 +613,7 @@ environment variable @env{DISPLAY} to @code{<host>:<display index>}, where @code{<host>} is empty if the display is one the local machine. In this tradition @command{mds} does the same thing -with the environment variable @env{MDS_DISPLAY}. +with the environment variable @env{MDS_DISPLAY}@. @cpindex Environment variables @vrindex @env{MDS_PGROUP} @@ -494,7 +621,7 @@ with the environment variable @env{MDS_DISPLAY}. @cpindex Process group, display server @command{mds} also creates a new process group and export the new process group ID to the environment -variable @command{MDS_PGROUP}. This process group +variable @command{MDS_PGROUP}@. This process group can be used to send signals to all @command{mds} servers collectively. @@ -533,7 +660,7 @@ If you need servers to free up allocated memory that they do not use, send the signal @code{SIGDANGER}, or if not defined @code{SIGRTMIN + 1}. Unimportant servers -may choose to die on @code{SIGDANGER}. +may choose to die on @code{SIGDANGER}@. @sgindex @code{SIGINFO} @sgindex @code{SIGRTMIN + 2} @@ -546,7 +673,7 @@ that server do support this signal, but thay must not die when received. @code{SIGINFO} is send by a user to the server, if she wants the server to dump information about the -server's state or statistics to the TTY. +server's state or statistics to the TTY@. @sgindex @code{SIGRTMIN} @cpindex No-operation signal @@ -643,9 +770,11 @@ is seldom a reason for servers to do this.} To do this the client sends @example +@group Command: assign-id\n Message ID: 0\n \n +@end group @end example where @code{\n} is an LF-line break. @@ -691,9 +820,11 @@ and the value that was in the For example: @example +@group ID assignment: 0:1\n In response to: 0\n \n +@end group @end example Notice that the master server never @@ -720,8 +851,10 @@ and contain ID of the client that closed. For example: @example +@group Client closed: 0:1\n \n +@end group @end example Be aware that if a server or client @@ -729,18 +862,20 @@ closes and does not have a unique client ID, this message will be: @example +@group Client closed: 0:0\n \n +@end group @end example Once a client has an unique client ID assigned to it, it should always include the header @code{Client ID} in its messages. The value of @code{Client ID} -should be the client's ID. If a server +should be the client's ID@. If a server wants to address this client, it should include the header @code{To} with the -value set to the recipient's client ID. +value set to the recipient's client ID@. Be aware that such message may not be sent to that recipient uniquely, any server or client is free to sign up @@ -780,9 +915,11 @@ the display server, simply sign up for all messages: @example +@group Command: intercept\n Message ID: 0\n \n +@end group @end example But if you only want messages contain @@ -1039,7 +1176,7 @@ integer would overflow. Native endianness when a endianness is choosen. Do not assume big endianness, but the same endianness that appear on the same machine when -using C. +using C@. @item @cpindex UTF-8, portability @@ -1117,9 +1254,11 @@ its own argument. For example: @opindex @option{--initial-spawn} @example +@group mds-respawn --interval=5 \ @{ mds-foo --initial-spawn @} \ @{ mds-bar --initial-spawn @} & +@end group @end example @cpindex Server supervision @@ -1137,7 +1276,7 @@ respawned. @sgindex @code{SIGTERM} A server is considered to exit with a failure status unless it exits with the return value 0 or is terminated -by the signal @code{SIGTERM}. +by the signal @code{SIGTERM}@. @@ -1280,7 +1419,7 @@ be used to select monitor. @opindex @option{--monitor} Take screenshot of the monitor whose root window's window ID is @var{WINDOW_ID} or has another window -in it whose window ID is @var{WINDOW_ID}. +in it whose window ID is @var{WINDOW_ID}@. @item --embed @opindex @option{--embed} @@ -1290,7 +1429,7 @@ The rat will be used to select window. @item --embed=WINDOW_ID @opindex @option{--monitor} Take a screenshot of an embedded window whose -window ID is @var{WINDOW_ID}. +window ID is @var{WINDOW_ID}@. @item --window @opindex @option{--window} @@ -1300,7 +1439,7 @@ The rat will be used to select window. @item --window=WINDOW_ID @opindex @option{--window} Take a screenshot of a window whose -window ID is @var{WINDOW_ID}. +window ID is @var{WINDOW_ID}@. @item --decoration @opindex @option{--decoration} @@ -1373,7 +1512,7 @@ The rat will be used to select window. @item --embed=WINDOW_ID @opindex @option{--embed} Kill an embedded window whose -window ID is @var{WINDOW_ID}. +window ID is @var{WINDOW_ID}@. @item --window @opindex @option{--window} @@ -1383,7 +1522,7 @@ The rat will be used to select window. @item --window=WINDOW_ID @opindex @option{--window} Kill a window whose -window ID is @var{WINDOW_ID}. +window ID is @var{WINDOW_ID}@. @item --signal=SIGNAL @opindex @option{--signal} @@ -1424,7 +1563,7 @@ recognises the following options: @table @option @item --switch=VT @opindex @option{--switch} -Switch to the virtual terminal with the index @var{VT}. +Switch to the virtual terminal with the index @var{VT}@. @end table @@ -1459,8 +1598,10 @@ can be initialised, you can in @file{$@{XDG_CONFIG_HOME@}/mdsinitrc} write: @example +@group mds-foo --on-init-fork mds-bar & +@end group @end example @opindex @option{--on-init-fork} @@ -1492,6 +1633,21 @@ mds-respawn @{ mds-bar @} & # Spawn `mds-bar`. @end example @end ifset @ifclear AFOURPAPER +@ifset USLETTER +@example +S=$(cmdipc -Scx set 1 | cut -d ' ' -f 2) +# Create a System V semaphore with the value 1. + +mds-respawn @{ mds-foo --on-init-sh="cmdipc -Sk $S p" @} & +# Spawn `mds-foo` and decrease the semaphore with 1 when initialised. + +cmdipc -Sk $S z # Wait for the semaphore's + # value to become 0. +cmdipc -Srk $S # Remove the semaphore. +mds-respawn @{ mds-bar @} & # Spawn `mds-bar`. +@end example +@end ifset +@ifclear USLETTER @example S=$(cmdipc -Scx set 1 | cut -d ' ' -f 2) # Create a System V semaphore with the value 1. @@ -1506,6 +1662,7 @@ cmdipc -Srk $S # Remove the semaphore. mds-respawn @{ mds-bar @} & # Spawn `mds-bar`. @end example @end ifclear +@end ifclear @pgindex @command{mds-reg} This is however seldom necessary as @command{mds-reg} can @@ -1657,7 +1814,7 @@ mode to graphical mode or text mode. By default @command{mds-vt} will select the next available virtual terminal for the display server. You can override this behaviour by exporting a value -to the environment variable @env{XDG_VTNR}. The value +to the environment variable @env{XDG_VTNR}@. The value must be a decimal integer of a valid virtual terminal index@footnote{Which is the same thing as a valid TTY index.}. To select the virtual terminal the display @@ -2303,7 +2460,7 @@ It creates a window that emulates a monitor. @command{mds-meta} is a metadisplay server. It creates or joins a named metadisplay server, and creates an alternative value for -@env{MDS_DISPLAY}. Any server connecting to +@env{MDS_DISPLAY}@. Any server connecting to this alternative @env{MDS_DISPLAY} connects to this metadisplay server. This can be used to make servers shared between display server @@ -2583,7 +2740,7 @@ simple, reference implementation of a, status icon tray. @section Infrastructure Protocols @menu -* assign-id:: Assign new ID to client, or fetch current ID. +* assign-id:: Assign new ID to client, or fetch current ID@. * intercept:: Sign up for reception of message. * register:: Register availability of a command for which you implement a service. * reregister:: Request for reregistration for available commands. @@ -2600,7 +2757,7 @@ simple, reference implementation of a, status icon tray. @code{Command: assign-id} @item Action: -Assign new ID to client, or fetch current ID. +Assign new ID to client, or fetch current ID@. @item Purpose: Assigning ID to clients so server can respond to that client. @@ -2833,7 +2990,7 @@ Allow programs to be aware of which VT the server is running on. @item Purpose: Allow programs to gain access of the TTY associated with the -VT such that they can use ioctl and similar calls on that TTY. +VT such that they can use ioctl and similar calls on that TTY@. @item Compulsivity: Required. @@ -2868,9 +3025,9 @@ Set the TTY text mode if the value of the header @code{Graphical} is @code{no}. @end table The server implementing this protocol should not set the -TTY to text mode temporarily when switching TTY. It is +TTY to text mode temporarily when switching TTY@. It is up to the server that set the request for graphical mode -to temporarily switch to text mode when switching TTY. +to temporarily switch to text mode when switching TTY@. @item Optional header: @code{Exclusive} @table @code @@ -2894,7 +3051,7 @@ Allow presentation servers to enter and leave graphical mode. @item Purpose: Allow programs to gain access of the TTY associated with the -VT such that they can use ioctl and similar calls on that TTY. +VT such that they can use ioctl and similar calls on that TTY@. @item Compulsivity: Required. @@ -2938,7 +3095,7 @@ let the message pass to the next server by telling the master server that it is no modification to do. Once all servers are read for the switch the server that emitted this message should signal the kernel -that it may switch VT. The server should detect +that it may switch VT@. The server should detect this by setting up secondary contection to the display that intercepts this message. This connection should intercept this message with priority @math{-2^{62}}, @@ -3027,36 +3184,36 @@ bit zeroed out. This may not be remapped. Single blank space separated list of active modifiers: @table @code @item shift -Shift (level 2) +@key{Shift} (level 2) @item ctrl -Control +@key{Control} @item alt -Alternative/Option +@key{Alternative}/@key{Option} @item altgr -Alternative Graphic (level 3) +@key{Alternative Graphic} (level 3) @item lvl* @code{*} may be any @math{2^n + 1} integer with @math{1 < n < 20}. @item super -Super +@key{Super} @item hyper -Hyper +@key{Hyper} @item ultra -Ultra +@key{Ultra} @item caps -Caps (usually a lock key) +@key{Caps} (usually a lock key) @item num -Num (usually a lock key) +@key{Num} (usually a lock key) @item scrl -Scroll (usually a lock key) +@key{Scroll} (usually a lock key) @item top -Top (historical) +@key{Top} (historical) @item front -Front (historical) +@key{Front} (historical) @item greek -Greek (historical) +@key{Greek} (historical) @item compose -Compose (rare, it is usually a dead key) +@key{Compose} (rare, it is usually a dead key) @end table Any key that has been locked should be prefix with @code{+}, if the key has been locked by nullified @@ -3069,93 +3226,93 @@ A textual representation of the key that has been typed or released, as mapped by the keyboard layout. @table @code @item esc -Escape +@key{Escape} @item f* -F@code{*} where @code{*} is any integer. +@key{F*} where @code{*} is any integer. @item sysrq -System Request/Print Screen +@key{System Request}/@key{Print Screen} @item scrl -Scroll (lock) +@key{Scroll} (lock) @item break -Break/Pause +@key{Break}/@key{Pause} @item backspace -Backspace +@key{Backspace} @item tab -Tab +@key{Tab} @item return -Return/Enter +@key{Return}/@key{Enter} @item space -Blank Space +@key{Blank Space} @item menu -Application Menu +@key{Application Menu} @item ins -Insert +@key{Insert} @item home -Home +@key{Home} @item pgup -Page Up +@key{Page Up} @item del -Delete +@key{Delete} @item end -End +@key{End} @item pgdown -Page Down +@key{Page Down} @item up -Up Arrow +@key{Up} arrow @item left -Left Arrow +@key{Left} arrow @item down -Down Arrow +@key{Down} arrow @item right -Right Arrow +@key{Right} arrow @item shift -Shift (level 2) +@key{Shift} (level 2) @item begin -Begin (keypad 5 in nagivation mode) +@key{Begin} (keypad @key{5} in nagivation mode) @item ctrl -Control +@key{Control} @item alt -Alternative/Option +@key{Alternative}/@key{Option} @item altgr -Alternative Graphic (level 3) +@key{Alternative Graphic} (level 3) @item lvl* @code{*} may be any @math{2^n + 1} integer with @math{1 < n < 20}. @item super -Super +@key{Super} @item hyper -Hyper +@key{Hyper} @item ultra -Ultra +@key{Ultra} @item caps -Caps (usually a lock key) +@key{Caps} (usually a lock key) @item num -Num (usually a lock key) +@key{Num} (usually a lock key) @item scrl -Scroll (usually a lock key) +@key{Scroll} (usually a lock key) @item top -Top (historical) +@key{Top} (historical) @item front -Front (historical) +@key{Front} (historical) @item greek -Greek (historical) +@key{Greek} (historical) @item compose -Compose (usually a dead key) +@key{Compose} (usually a dead key) @item hexcompose -Hex-Compose (usually a dead key) +@key{Hex-Compose} (usually a dead key) (Used to create aribitrary characters.) @item longhexcompose -Long Hex-Compose (usually a dead key) -(Variant of hexcompose for longer codepoints.) +@key{Long Hex-Compose} (usually a dead key) +(Variant of @code{hexcompose} for longer codepoints.) @item modelock -Mode Lock +@key{Mode Lock} @item letter * @code{*} may be any UTF-8 encoded letter. @end table Keys that lock/unlock a modifer should be suffixed with a blank space and a @code{lock}. If the key is a dead key -(even the compose key) should use @code{dead} instead. A -position, either @code{left}, @code{right}, @code{keypad} +(even the @key{Compose} key) should use @code{dead} instead. +A position, either @code{left}, @code{right}, @code{keypad} or an index, followed by a blank space, should prefix any key that occurs on multiple position on the keyboard, unless it only appears on the keypad once and once not on @@ -3279,13 +3436,13 @@ it is off, and turned off if it is on. The value is a single blank space separated list of LED:s: @table @code @item num -Num lock +@key{Num lock} @item caps -Caps lock +@key{Caps lock} @item scroll -Scroll lock +@key{Scroll lock} @item compose -Compose +@key{Compose} @end table Unsupported LED:s should be silently ignored. @@ -3531,13 +3688,15 @@ is included in the headers. Each line contains contains two single space delimited numbers, the first number is the keycode as determined by the scancode, the second number is keycode that scancode should generate. -For example, @code{1 1} resets Escape to be mapped to Escape, -and @code{1 59} remaps Escape to F1, while +For example, @code{1 1} resets @key{Escape} to be mapped to +@key{Escape}, and @code{1 59} remaps @key{Escape} to @key{F1}, while @example +@group 1 59 59 1 +@end group @end example -swaps Escape and F1. +swaps @key{Escape} and @key{F1}. @item Purpose: Enable the user to swap or replace keys on the keyboard. @@ -3995,49 +4154,61 @@ Alpha channel should be included but ignored if @code{Has alpha: no}, in such as it is best to set it to full. -@ifset AFOURPAPER +@ifset AFOURPAPER_OR_USLETTER Example image with @code{Bytes: 2}, @code{Has alpha: no} and @code{Size: 3}: @example +@group sRGB(x0102, 0, 0), sRGB(0, x0304, 0), sRGB(0, 0, x0506) sRGB(x0708, 0, 0), sRGB(0, x090A, 0), sRGB(0, 0, x0B0C) sRGB(x0D0E, 0, 0), sRGB(0, x0F10, 0), sRGB(0, 0, x1112) +@end group @end example Encoding of example image in hexadecimal representation: @example +@group FFFF 0102 0000 0000 FFFF 0000 0304 0000 FFFF 0000 0000 0506 FFFF 0708 0000 0000 FFFF 0000 090A 0000 FFFF 0000 0000 0B0C FFFF 0D0E 0000 0000 FFFF 0000 0F10 0000 FFFF 0000 0000 1112 +@end group @end example Note that on a big-endian system this would be: @footnote{x86_64 computers are big-endian.} @example +@group FF FF 02 01 0 0 0 0 FF FF 0 0 04 03 0 0 FF FF 0 0 0 0 06 05 FF FF 08 07 0 0 0 0 FF FF 0 0 0A 09 0 0 FF FF 0 0 0 0 0C 0B FF FF 0E 0D 0 0 0 0 FF FF 0 0 10 0F 0 0 FF FF 0 0 0 0 12 11 +@end group @end example @end ifset -@ifclear AFOURPAPER +@ifclear AFOURPAPER_OR_USLETTER Example image with @code{Bytes: 2}, @code{Has alpha: no} and @code{Size: 2}: @example +@group sRGB(x0102, 0, 0), sRGB(0, x0304, 0) sRGB(x0708, 0, 0), sRGB(0, x090A, 0) +@end group @end example Encoding of example image in hexadecimal representation: @example +@group FFFF 0102 0000 0000 FFFF 0000 0304 0000 FFFF 0708 0000 0000 FFFF 0000 090A 0000 +@end group @end example Note that on a big-endian system this would be: @footnote{x86_64 computers are big-endian.} @example +@group FF FF 02 01 0 0 0 0 FF FF 0 0 04 03 0 0 FF FF 08 07 0 0 0 0 FF FF 0 0 0A 09 0 0 +@end group @end example @end ifclear @@ -4235,16 +4406,20 @@ ramp is (17, 18, 19, 20, 21, 22, 23) and the blue ramp is (33, 34, 35, 36, 37, 38, 39, 40) then the message will be (hexadecimal representation): @example +@group 0001 0002 0003 0004 0005 0006 0011 0012 0013 0014 0015 0016 0017 0021 0022 0023 0024 0025 0026 0027 0028 +@end group @end example On a big-endian system this would be: @example +@group 01 00 02 00 03 00 04 00 05 00 06 00 11 00 12 00 13 00 14 00 15 00 16 00 17 00 21 00 22 00 23 00 24 00 25 00 26 00 27 00 28 00 +@end group @end example However if @code{Coalesce: no} was used in the query, @@ -4331,17 +4506,21 @@ is (1, 2, 3, 4, 5, 6), the green ramp is (17, 18, 19, 37, 38, 39, 40) then the message will be (hexadecimal representation): @example +@group 0001 0002 0003 0004 0005 0006 0011 0012 0013 0014 0015 0016 0017 0021 0022 0023 0024 0025 0026 0027 0028 +@end group @end example Note that on a big-endian system this would be: @footnote{x86_64 computers are big-endian.} @example +@group 01 00 02 00 03 00 04 00 05 00 06 00 11 00 12 00 13 00 14 00 15 00 16 00 17 00 21 00 22 00 23 00 24 00 25 00 26 00 27 00 28 00 +@end group @end example It is up to the networking servers to translate @@ -4664,7 +4843,7 @@ this is however dependent on the operating system. The server will respond with a @command{Command: error} message. In this message the server all include an -ad-hoc header: @code{Process ID}. Its value +ad-hoc header: @code{Process ID}@. Its value will be the ID of the process that owns the window. @@ -4887,8 +5066,10 @@ Decreases the pointer @code{buffer} by the size of @cpindex Marshalling macros @sgindex @code{SIGUPDATE} @example +@group buf_set(buffer, type, 0, variable), buf_next(buffer, type, 1); +@end group @end example @item @code{buf_get_next} [(@code{char* buffer, type, type variable}) @arrow{} @code{type}] @@ -4901,22 +5082,24 @@ buf_next(buffer, type, 1); @cpindex Marshalling macros @sgindex @code{SIGUPDATE} @example +@group buf_get(buffer, type, 0, variable), buf_next(buffer, type, 1); +@end group @end example @item @code{strequals} [(@code{const char* a, const char* b}) @arrow{} @code{int}] @fnindex @code{strequals} @cpindex String comparison Evaluates whether the strings @code{a} and @code{b} -are equals, neither may be @code{NULL}. +are equals, neither may be @code{NULL}@. @item @code{startswith} [(@code{const char* haystack, const char* needle}) @arrow{} @code{int}] @fnindex @code{startswith} @cpindex String comparison Evaluates whether the string @code{haystack} starts with the string @code{needle}, neither -may be @code{NULL}. +may be @code{NULL}@. @item @code{drop_privileges} [(void) @arrow{} @code{int}] @fnindex @code{drop_privileges} @@ -5240,7 +5423,7 @@ may not even refer to the program, and @code{chdir} could also hinter its use. @item -The kernel appends ` (deleted)' to +The kernel appends @samp{ (deleted)} to @file{/proc/self/exe} once it has been removed, so it cannot be replaced. @end enumerate @@ -5586,7 +5769,7 @@ a list, reads its variable @code{size_t size}. The variable @code{uint64_t* clients} is used to retrieve stored elements. -@ifset AFOURPAPER +@ifset AFOURPAPER_OR_USLETTER_OR_SMALLBOOK_WITH_SMALLFONT @example void print_elements(client_list_t* this) @{ @@ -5596,7 +5779,7 @@ void print_elements(client_list_t* this) @} @end example @end ifset -@ifclear AFOURPAPER +@ifclear AFOURPAPER_OR_USLETTER_OR_SMALLBOOK_WITH_SMALLFONT @example void print_elements(client_list_t* this) @{ @@ -5939,7 +6122,7 @@ be stored to the variable @code{entry} and the bucket index will be stored to the variable @code{i}. -@ifset AFOURPAPER +@ifset AFOURPAPER_OR_USLETTER_OR_SMALLBOOK_WITH_SMALLFONT @example void print_hash_table(hash_table_t* table) @{ @@ -5950,7 +6133,7 @@ void print_hash_table(hash_table_t* table) @} @end example @end ifset -@ifclear AFOURPAPER +@ifclear AFOURPAPER_OR_USLETTER_OR_SMALLBOOK_WITH_SMALLFONT @example void print_hash_table(hash_table_t* table) @{ @@ -5972,7 +6155,7 @@ is not a popinter. @vrindex @code{fd_table_t.value_comparator} The structures @code{hash_table_t} and @code{fd_table_t} contain the variable @code{value_comparator} which by -default is @code{NULL}. If this variable is set to @code{NULL}, +default is @code{NULL}@. If this variable is set to @code{NULL}, two values will be considered equal if and only if they are numerically identical; otherwise two values will be considered equal if and only if @code{value_comparator} returned a @@ -6217,7 +6400,7 @@ the server has been initialised. @item --on-init-sh=COMMAND @opindex @option{--on-init-sh} When the server has been initialised, run the -command @var{COMMAND}. +command @var{COMMAND}@. @item --immortal @opindex @option{--immortal} @@ -6364,7 +6547,7 @@ Calculate and returns the number of bytes that will be stored by @code{marshal_server}. On failure the server should call @code{abort} or exit with failure status by other means. However it should not be possible for this function to fail. -@code{marshal_server_size} must be pure.@footnote{That is, +@code{marshal_server_size} must be pure@footnote{That is, define with and conforming to @code{__attribute__((pure))}.}. @item @code{marshal_server} [(@code{char* state_buf}) @arrow{} @code{int}] @@ -6633,119 +6816,119 @@ for reference. @table @asis @item @code{1} -@kbd{Escape} key +@key{Escape} key @item @code{2}--@code{11} -Keys: @kbd{1}, @kbd{2}, @kbd{3}, @kbd{4}, @kbd{5}, @kbd{6}, @kbd{7}, @kbd{8}, @kbd{9}, @kbd{0} +Keys: @key{1}, @key{2}, @key{3}, @key{4}, @key{5}, @key{6}, @key{7}, @key{8}, @key{9}, @key{0} @item @code{12} -Key right of @kbd{0}. +Key right of @key{0}. @item @code{13} -Key left of @kbd{backspace} +Key left of @key{Backspace} @item @code{14} -@kbd{Backspace} key +@key{Backspace} key @item @code{15} -@kbd{Tab} key +@key{Tab} key @item @code{16}--@code{25} -Keys: @kbd{q}, @kbd{w}, @kbd{e}, @kbd{r}, @kbd{t}, @kbd{y}, @kbd{u}, @kbd{i}, @kbd{o}, @kbd{p} +Keys: @key{q}, @key{w}, @key{e}, @key{r}, @key{t}, @key{y}, @key{u}, @key{i}, @key{o}, @key{p} @item @code{26} -Key right of @kbd{p}, once removed +Key right of @key{p}, once removed @item @code{27} -Key right of @kbd{p}, twice removed +Key right of @key{p}, twice removed @item @code{28} -@kbd{Return} key +@key{Return} key @item @code{29} -Left @kbd{control} key +Left @key{Control} key @item @code{30}--@code{38} -Keys: @kbd{a}, @kbd{s}, @kbd{d}, @kbd{f}, @kbd{g}, @kbd{h}, @kbd{j}, @kbd{k}, @kbd{l} +Keys: @key{a}, @key{s}, @key{d}, @key{f}, @key{g}, @key{h}, @key{j}, @key{k}, @key{l} @item @code{39} -Key right of @kbd{l}, once removed +Key right of @key{l}, once removed @item @code{40} -Key right of @kbd{l}, twice removed +Key right of @key{l}, twice removed @item @code{41} -Key left of @kbd{1} +Key left of @key{1} @item @code{42} -Left @kbd{shift} key +Left @key{Shift} key @item @code{43} -Key right of @kbd{l}, three times removed +Key right of @key{l}, three times removed @item @code{44}--@code{50} -Keys: @kbd{z}, @kbd{x}, @kbd{c}, @kbd{v}, @kbd{b}, @kbd{n}, @kbd{m} +Keys: @key{z}, @key{x}, @key{c}, @key{v}, @key{b}, @key{n}, @key{m} @item @code{51} -Key right of @kbd{m}, once removed +Key right of @key{m}, once removed @item @code{52} -Key right of @kbd{m}, twice removed +Key right of @key{m}, twice removed @item @code{53} -Key right of @kbd{m}, three times removed +Key right of @key{m}, three times removed @item @code{54} -Right @kbd{shift} key +Right @key{Shift} key @item @code{55} -@kbd{Multiply} key on the keypad +@key{Multiply} key on the keypad @item @code{56} -@kbd{Alternative} key +@key{Alternative} key @item @code{57} -@kbd{Space} key +@key{Space} key @item @code{58} -@kbd{Caps lock} key +@key{Caps Lock} key @item @code{59}--@code{68} -Keys: @kbd{F1} through @kbd{F10} +Keys: @key{F1} through @key{F10} @item @code{69} -@kbd{Num lock} key +@key{Num Lock} key @item @code{70} -@kbd{Scroll lock} key +@key{Scroll Lock} key @item @code{71}--@code{73} -@kbd{7}, @kbd{8}, @kbd{9} keys on the keypad +@key{7}, @key{8}, @key{9} keys on the keypad @item @code{74} -@kbd{Minus} key on the keypad +@key{Minus} key on the keypad @item @code{75}--@code{77} -@kbd{4}, @kbd{5}, @kbd{6} keys on the keypad +@key{4}, @key{5}, @key{6} keys on the keypad @item @code{78} -@kbd{Plus} key on the keypad +@key{Plus} key on the keypad @item @code{79}--@code{82} -@kbd{1}, @kbd{2}, @kbd{3}, @kbd{0} keys on the keypad +@key{1}, @key{2}, @key{3}, @key{0} keys on the keypad @item @code{83} -@kbd{Comma} key on the keypad +@key{Comma} key on the keypad @item @code{86} -Key left of @kbd{z} +Key left of @key{z} @item @code{87} -@kbd{F11} key +@key{F11} key @item @code{88} -@kbd{F12} key +@key{F12} key @item @code{96} -@kbd{Return} key on the keypad +@key{Return} key on the keypad @item @code{97} -Right @kbd{control} key +Right @key{control} key @item @code{98} -@kbd{Divide} key on the keypad +@key{Divide} key on the keypad @item @code{99} -@kbd{System Request/Print Screen} key +@key{System Request}/@key{Print Screen} key @item @code{100} -@kbd{Alternative graphic} key +@key{Alternative Graphic} key @item @code{102} -@kbd{Home} key +@key{Home} key @item @code{103} -@kbd{Up} arrow key +@key{Up} arrow key @item @code{104} -@kbd{Page up} key +@key{Page up} key @item @code{105} -@kbd{Left} arrow key +@key{Left} arrow key @item @code{106} -@kbd{Right} arrow key +@key{Right} arrow key @item @code{107} -@kbd{End} key +@key{End} key @item @code{108} -@kbd{Down} arrow key +@key{Down} arrow key @item @code{109} -@kbd{Page down} down +@key{Page down} down @item @code{110} -@kbd{Insert} key +@key{Insert} key @item @code{111} -@kbd{Delete} key +@key{Delete} key @item @code{119} -@kbd{Pause/Break} key +@key{Pause}/@key{Break} key @item @code{125} -Left @kbd{super} key +Left @key{Super} key @item @code{126} -Right @kbd{super} key +Right @key{Super} key @item @code{127} -@kbd{Application menu} key +@key{Application Menu} key @end table @@ -6799,7 +6982,7 @@ other, does not matter. Additionally, the layout files are parsed line by line, and leading whitespace is ignored. Comment can be started with a #-character and end at the end of the line. It is important to know that modifiers -like @kbd{shift} and @kbd{control} needs to be mapped from +like @key{Shift} and @key{Control} needs to be mapped from a keycode, this and similar that many keyboards have in common, except dead key composition and compose sequences, is already available in the @file{layout/common} directory @@ -6844,27 +7027,33 @@ space when we are writting so we add giving us @example +@group <keycode 57> : <space> <space> : " " +@end group @end example Because the order of the mapping statements does not matter we can just as well write @example +@group <space> : " " <keycode 57> : <space> +@end group @end example @code{" "} represents a text string with one blank space, but it is possible to have multiple characters. -We want to extend this to @kbd{altgr+space} producing +If we want to extend this to @kbd{altgr+space} producing a no-break space, we can add either of the lines @example +@group <altgr space> : "\u00A0" # no-break space (# comment) <altgr keycode 57> : "\u00A0" # no-break space +@end group @end example However, we also need a mapping to @kbd{altgr}: @@ -6877,8 +7066,10 @@ If we want to add a mapping to @kbd{ultra} from @kbd{altgr+menu} we can write @example +@group <keycode 127> : <menu> <altgr menu> : <-altgr ultra> +@end group @end example @code{-altgr} means that @kbd{altgr} should @@ -6901,7 +7092,7 @@ are lock keys or not. To map the keycode But if you do not want it be a lock key, but instead be required to be held down, -similar to how is normal for @kbd{shift}, +similar to how is normal for @key{Shift}, instead write @example @@ -6911,14 +7102,14 @@ instead write Any modifier may be a lock key. Another, just as important, use of mappings -to is map letter keys. Unlike control keys -like space and shift, there are no predefined -letters@footnote{With letters with mean any -character other than space.}. Therefore the -letter is prefixed with the word `letter'. +to is map letter keys. Unlike @key{Control} keys +like @key{Space} and @key{Shift}, there are no +predefined letters@footnote{With letters with +mean any character other than space.}. Therefore +the letter is prefixed with the word `letter'. For example: -@ifset AFOURPAPER +@ifset AFOURPAPER_OR_USLETTER @example <keycode 16> : <letter q> # The Q-key has keycode 16 (on QWERTY) <letter q> : "q" # The Q-key should produce a `q' @@ -6927,7 +7118,7 @@ For example: <shift caps letter q> : "q" # but not when both are used @end example @end ifset -@ifclear AFOURPAPER +@ifclear AFOURPAPER_OR_USLETTER @example # The Q-key has keycode 16 (on QWERTY) <keycode 16> : <letter q> @@ -6962,15 +7153,17 @@ To define @kbd{´}, with keycode 13, @kbd{compose}, with keycode 125, as a dead keys write @example +@group <keycode 13> : <dead letter ´> <keycode 125> : <dead compose> +@end group @end example @cpindex Duplicate keys @cpindex Keys, duplicates Some may appear on multiple locations on the keyboard, -for example, there may be a left and a right shift key, -and a normal return key and one on the keypad: +for example, there may be a left and a right @key{Shift} +key, and a normal @key{Return} key and one on the keypad: @example <keycode 42> : <left shift> @@ -6985,9 +7178,9 @@ Because @code{<left>} and @code{<right>} are valid keys --- they are arrow keys --- it is importatn to place them directly before the key, and not after. For instance @code{<left shift>} -denotes the left @kbd{shift} key, whilst -@code{<shift left>} denotes the left-arrow key -with a @kbd{shift} key held down. Modifiers +denotes the left @key{Shift} key, whilst +@code{<shift left>} denotes the @key{Left} arrow +key with a @key{Shift} key held down. Modifiers goes first. @@ -7024,8 +7217,8 @@ a sequence: <super tab> : <tab> <tab> <tab> <tab> @end example -An alternative to @kbd{compose} as a dead key, -is @kbd{compose} as a modifier. If you use this, +An alternative to @key{Compose} as a dead key, +is @key{Compose} as a modifier. If you use this, the compose table need to be written for just that. There two ways do this this. Either you can write for example @@ -7035,7 +7228,7 @@ can write for example @end example This maps two `s':es to a `ß', but requires that -@kbd{compose} is held down during both key-presses. +@key{Compose} is held down during both key-presses. The other way is to write @example @@ -7050,8 +7243,10 @@ where it does not matter in which order you press some of the keys. For example, instead of @example +@group <dead compose> "S" "|" : "$" <dead compose> "|" "S" : "$" +@end group @end example you can write @@ -7070,8 +7265,10 @@ You can also use @code{[ ]} for alternation. For example, instead of @example +@group <dead compose> ("S" "|") : "$" <dead compose> ("s" "|") : "$" +@end group @end example you can write @@ -7085,8 +7282,10 @@ for specify that no key press is needed. For example, instead of @example +@group <dead compose> "|" "S" : "$" <dead compose> "|" "|" "S" : "$" +@end group @end example you can write @@ -7108,8 +7307,8 @@ subsequence inside unordered subsequence because of readability issues. Unordered subsequences longer than 5 elements -cannot compile under normal circumstances. This -is eliminiation of unordered subsequences grows +cannot compile under normal circumstances. +Eliminiation of unordered subsequences grows superexponentially, and thus is probably an error than can cause memory exhaustion and unrealistic compilation-time. Therefore, if an unordered @@ -7118,7 +7317,7 @@ compiler required that the @option{--force} flag is used and that the unordered subsequences uses double brackets: -@ifset AFOURPAPER +@ifset AFOURPAPER_OR_USLETTER @example <dead compose> ("1" "2" "3" "4" "5") : "120" <dead compose> (("1" "2" "3" "4" "5" "6")) : "720" @@ -7127,13 +7326,25 @@ double brackets: <dead compose> (("1" "2" "3" "4" "5" "6" "7" "8" "9")) : "362880" @end example @end ifset -@ifclear AFOURPAPER +@ifclear AFOURPAPER_OR_USLETTER +@ifset SMALLBOOK_WITH_SMALLFONT +@example +<dead compose> ("1" "2" "3" "4" "5") : "120" +<dead compose> (("1" "2" "3" "4" "5" "6")) : "720" +<dead compose> (("1" "2" "3" "4" "5" "6" "7")) : "5040" +<dead compose> (("1" "2" "3" "4" "5" "6" "7" "8")) : "40320" +@end example +@end ifset +@ifclear SMALLBOOK_WITH_SMALLFONT @example +@group <dead compose> ("1" "2" "3" "4" "5") : "120" <dead compose> (("1" "2" "3" "4" "5" "6")) : "720" <dead compose> (("1" "2" "3" "4" "5" "6" "7")) : "5040" +@end group @end example @end ifclear +@end ifclear @@ -7237,9 +7448,9 @@ is compile by itself. If this is done, the compiler can warn when one of the compositions cannot be reached from those basic keys. -If we want to make the compiler assume that @kbd{compose} -is available as a dead key, that @kbd{shift}, @kbd{altgr} -and @kbd{space} are available and that the ASCII letter, +If we want to make the compiler assume that @key{compose} +is available as a dead key, that @key{shift}, @key{altgr} +and @key{space} are available and that the ASCII letter, digits and some basic special characters are available we can write. @@ -7279,8 +7490,10 @@ For instance @file{layout/sv/qwerty} has two include statements to implement its basics: @example +@group include "../common/qwerty" include "../common/base" +@end group @end example @@ -7292,7 +7505,7 @@ include "../common/base" @cpindex Macros, keyboard layout There is a lot of repetitive work in layouts, for instance all letters need mapping for any combination of use of -@kbd{shift} and @kbd{compose}. To reduce this, you can +@key{shift} and @key{compose}. To reduce this, you can define macros. For example instead of writing @@ -7326,9 +7539,9 @@ letter("b" "B") # and so on ... @end example -The name of this macro is `letter/2', -but it is called with the name `letter' -and two arguments. The `/2'-suffix means +The name of this macro is @code{letter/2}, +but it is called with the name @code{letter} +and two arguments. The @code{/2}-suffix means that it is invoked with exactly two arguments. You can use this do define multiple version of the same macro, with the same invocation @@ -7355,45 +7568,48 @@ letter("ö" "Ö") @end example @code{\add( )} and @code{\sub( )} are calls to two -built-in functions named `add/2' and `sub/2'. +built-in functions named @code{add/2} and @code{sub/2}. @cpindex Alternation, keys @cpindex Key alternations Alternation can be used to invoke a macro: -@ifset AFOURPAPER +@ifset AFOURPAPER_OR_USLETTER_OR_SMALLFONT @example +@group letter(["a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m"]) letter(["n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"]) +@end group @end example @end ifset -@ifclear AFOURPAPER +@ifclear AFOURPAPER_OR_USLETTER_OR_SMALLFONT @example +@group letter(["a" "b" "c" "d" "e" "f" "g" "h" "i" "j"]) letter(["k" "l" "m" "n" "o" "p" "q" "r" "s" "t"]) letter(["u" "v" "w" "x" "y" "z"]) +@end group @end example @end ifclear @cpindex Alternation, keys @cpindex Key alternations -You may use `.' in an alternation, in that case +You may use @code{.} in an alternation, in that case macro is called once with the argument, causing it -to invoke for example `letter/0' instead of -`letter/1'. +to invoke for example @code{letter/0} instead of +@code{letter/1}. -A related issue are for-loops. If we for -example want to call the macro `letter/1' for -all letters betweeh and including `a' and `z' +A related issue are for-loops. If we for example +want to call the macro @code{letter/1} for all +letters between and including `a' and `z' we can just write -@ifclear AFOURPAPER -@page -@end ifclear @example +@group for "a" to "z" as \1 letter(\1) end for +@end group @end example instead of using the alternation-trick. @@ -7451,7 +7667,6 @@ to or greater than 2 to the power of 31 not allowed and can either cause compile-time error or erroneous compiled files. - @cpindex Keyboard layout, macros @cpindex Macros, keyboard layout Functions are similar to function macros, @@ -7462,13 +7677,15 @@ to the last value it evaluted before it returned. For example instead of @code{\not(\greater(\1 "z"))} you can write @code{\less_eq(\1 "z")} after you -have defined the function `less_eq/2' with the +have defined the function @code{less_eq/2} with the following code: @example +@group function less_eq/2 \not(\greater(\1 \2)) end function +@end group @end example A final construct to make layout code less @@ -7518,16 +7735,20 @@ them, may span multiple lines. For example you may write @example +@group let \1 : @{ "å" "ä" "ö" "à" "é" "ü" @} +@end group @end example but not @example +@group let \1 : @{ "å" "ä" "ö" "à" "é" "ü" @} +@end group @end example See @ref{Builtin Functions} for how they are used. @@ -7572,13 +7793,13 @@ a @code{< >}. But `\' can also be used to specify characters by their code point, for example if you want an `æ' you can write @code{"\u00E6"} or @code{"\uE6"}, instead of @code{"æ"}. You can also write @code{"\0346"}, -the difference between `\0' and `\u' is that `\0' uses -octal whereas `\u' uses hexadecimal. A noteworthy -side-effect of this is that function names cannot start -with a lower case `u'. +the difference between @code{\0} and @code{\u} is that +@code{\0} uses octal whereas @code{\u} uses hexadecimal. +A noteworthy side-effect of this is that function names +cannot start with a lower case `u'. `\' can also be used to access variables and parameters. -For example `\1' in +For example @code{\1} in @example macro letter/2 @@ -7590,19 +7811,20 @@ end macro letter("å" "Å") @end example -is expanded to an `å', where as `\2' is expanded to an `Å'. +is expanded to an `å', where as @code{\2} is expanded +to an `Å'. `\' is also used to call functions, for example if -you want to call the function `f/0' you write +you want to call the function @code{f/0} you write @code{\f()}. Because numerical (possibly prefixed with an `u') are of variable length, it is possible to specify the escape's -termination point with a dot. For instance, if you -want the value of the first variable (\1) followed by -two zeroes, you do not write `\100' as that would expand -to the value of the hundredth variable. Instead you -write `\1.00'. +termination point with a dot. For instance, if you want +the value of the first variable (@code{\1}) followed by +two zeroes, you do not write @code{\100} as that would +expand to the value of the hundredth variable. Instead +you write @code{\1.00}. Use of function calls and variables inside @code{include}-statments invokes undefined behaviour. @@ -7624,74 +7846,73 @@ of basic functions: @table @code @item add/2 @fnindex @code{add/2} -The code points in \1 plus the code points of the -corresponding characters in \2. If \1 and \2 are -not of the same length, the returned string will -be of the length of the longer of the parameters, -and modulo is used to map to the corresponing -character. +The code points in @code{\1} plus the code points +of the corresponding characters in @code{\2}. If +@code{\1} and @code{\2} are not of the same length, +the returned string will be of the length of the +longer of the parameters, and modulo is used to map +to the corresponing character. @item sub/2 @fnindex @code{sub/2} -Like `add/2' but subtraction. +Like @code{add/2} but subtraction. @item mul/2 @fnindex @code{mul/2} -Like `add/2' but multiplication. +Like @code{add/2} but multiplication. @item div/2 @fnindex @code{div/2} -Like `add/2' but division. +Like @code{add/2} but division. @item mod/2 @fnindex @code{mod/2} -Like `add/2' but modulo. +Like @code{add/2} but modulo. @item rsh/2 @fnindex @code{rsh/2} -Like `add/2' but rightward bitwise shift. -If a character in \2 is has a code point -greater than 30, undefined behaviour is -invoked. +Like @code{add/2} but rightward bitwise shift. +If a character in @code{\2} is has a code point +greater than 30, undefined behaviour is invoked. @item lsh/2 @fnindex @code{lsh/2} -Like `add/2' but leftward bitwise shift. -If a character in \2 is has a code point -greater than 30, undefined behaviour is -invoked. +Like @code{add/2} but leftward bitwise shift. +If a character in @code{\2} is has a code point +greater than 30, undefined behaviour is invoked. @item or/2 @fnindex @code{or/2} -Like `add/2' but bitwise OR. +Like @code{add/2} but bitwise OR@. @item and/2 @fnindex @code{and/2} -Like `add/2' but bitwise AND. +Like @code{add/2} but bitwise AND@. @item xor/2 @fnindex @code{xor/2} -Like `add/2' but bitwise XOR. +Like @code{add/2} but bitwise XOR@. @item not/1 @fnindex @code{not/1} -For each character in \1, evaluate to -zero if the character is not zero, and +For each character in @code{\1}, evaluate +to zero if the character is not zero, and one if the character is zero. @item equals/2 @fnindex @code{equals/2} For each character, evalute to one if -the characters in \1 and \2 are equal -and zero otherwise. +the characters in @code{\1} and @code{\2} +are equal and zero otherwise. @item greater/2 @fnindex @code{greater/2} -Like `equals/2' but \1 greater than \2 -rather than \1 equals \2. +Like @code{equals/2} but @code{\1} greater +than @code{\2} rather than @code{\1} equals +@code{\2}. @item less/2 @fnindex @code{less/2} -Like `equals/2' but \1 less than \2 -rather than \1 equals \2. +Like @code{equals/2} but @code{\1} less than +@code{\2} rather than @code{\1} equals @code{\2}. @item set/3 @fnindex @code{set/3} -Set the element with index \2, in the -array with variable index \1, to \3, -and return \3. +Set the element with index @code{\2}, in +the array with variable index @code{\1}, to +@code{\3}, and return @code{\3}. For example @code{\set(1 0 4)} sets the -first element in \1 to 4. +first element in @code{\1} to 4. @item get/2 @fnindex @code{get/2} -Return the element with index \2 in the -array with variable index \1. +Return the element with index @code{\2} in +the array with variable index @code{\1}. For example after @code{\set(1 0 4)} or @code{let \1 : @{ 4 3 2 1 0 @}} has been used, @code{\get(1 0)} evaluates to 4. @@ -7726,10 +7947,10 @@ the compose key. @c * Ancient Greek Numbers:: Ancient Greek Numbers. @c * Ancient Symbols:: Ancient Symbols. @c * Arabic:: Arabic. -@c * Arabic Extended-A:: Arabic Extended-A. +@c * Arabic Extended-A:: Arabic Extended-A@. @c * Arabic Mathematical Alphabetic Symbols:: Arabic Mathematical Alphabetic Symbols. -@c * Arabic Presentation Forms-A:: Arabic Presentation Forms-A. -@c * Arabic Presentation Forms-B:: Arabic Presentation Forms-B. +@c * Arabic Presentation Forms-A:: Arabic Presentation Forms-A@. +@c * Arabic Presentation Forms-B:: Arabic Presentation Forms-B@. @c * Arabic Supplement:: Arabic Supplement. @c * Armenian:: Armenian. * Arrows:: Arrows. @@ -7765,10 +7986,10 @@ the compose key. @c * CJK Strokes:: CJK Strokes. @c * CJK Symbols and Punctuation:: CJK Symbols and Punctuation. @c * CJK Unified Ideographs:: CJK Unified Ideographs. -@c * CJK Unified Ideographs Extension A:: CJK Unified Ideographs Extension A. -@c * CJK Unified Ideographs Extension B:: CJK Unified Ideographs Extension B. -@c * CJK Unified Ideographs Extension C:: CJK Unified Ideographs Extension C. -@c * CJK Unified Ideographs Extension D:: CJK Unified Ideographs Extension D. +@c * CJK Unified Ideographs Extension A:: CJK Unified Ideographs Extension A@. +@c * CJK Unified Ideographs Extension B:: CJK Unified Ideographs Extension B@. +@c * CJK Unified Ideographs Extension C:: CJK Unified Ideographs Extension C@. +@c * CJK Unified Ideographs Extension D:: CJK Unified Ideographs Extension D@. @c * Combining Diacritical Marks:: Combining Diacritical Marks. @c * Combining Diacritical Marks Extended:: Combining Diacritical Marks Extended. @c * Combining Diacritical Marks for Symbols:: Combining Diacritical Marks for Symbols. @@ -7784,8 +8005,8 @@ the compose key. @c * Currency Symbols:: Currency Symbols. @c * Cypriot Syllabary:: Cypriot Syllabary. @c * Cyrillic:: Cyrillic. -@c * Cyrillic Extended-A:: Cyrillic Extended-A. -@c * Cyrillic Extended-B:: Cyrillic Extended-B. +@c * Cyrillic Extended-A:: Cyrillic Extended-A@. +@c * Cyrillic Extended-B:: Cyrillic Extended-B@. @c * Cyrillic Supplement:: Cyrillic Supplement. @c * Deseret:: Deseret. @c * Devanagari:: Devanagari. @@ -7802,7 +8023,7 @@ the compose key. @c * Enclosed CJK Letters and Months:: Enclosed CJK Letters and Months. @c * Ethiopic:: Ethiopic. @c * Ethiopic Extended:: Ethiopic Extended. -@c * Ethiopic Extended-A:: Ethiopic Extended-A. +@c * Ethiopic Extended-A:: Ethiopic Extended-A@. @c * Ethiopic Supplement:: Ethiopic Supplement. * General Punctuation:: General Punctuation. * Geometric Shapes:: Geometric Shapes. @@ -7819,8 +8040,8 @@ the compose key. @c * Halfwidth and Fullwidth Forms:: Halfwidth and Fullwidth Forms. @c * Hangul Compatibility Jamo:: Hangul Compatibility Jamo. @c * Hangul Jamo:: Hangul Jamo. -@c * Hangul Jamo Extended-A:: Hangul Jamo Extended-A. -@c * Hangul Jamo Extended-B:: Hangul Jamo Extended-B. +@c * Hangul Jamo Extended-A:: Hangul Jamo Extended-A@. +@c * Hangul Jamo Extended-B:: Hangul Jamo Extended-B@. @c * Hangul Syllables:: Hangul Syllables. @c * Hanunoo:: Hanunoo. @c * Hebrew:: Hebrew. @@ -7846,16 +8067,16 @@ the compose key. @c * Khudawadi:: Khudawadi. @c * Lao:: Lao. @c * Latin Extended Additional:: Latin Extended Additional. -* Latin Extended-A:: Latin Extended-A. -* Latin Extended-B:: Latin Extended-B. -* Latin Extended-C:: Latin Extended-C. -@c * Latin Extended-D:: Latin Extended-D. -@c * Latin Extended-E:: Latin Extended-E. +* Latin Extended-A:: Latin Extended-A@. +* Latin Extended-B:: Latin Extended-B@. +* Latin Extended-C:: Latin Extended-C@. +@c * Latin Extended-D:: Latin Extended-D@. +@c * Latin Extended-E:: Latin Extended-E@. * Latin-1 Supplement:: Latin-1 Supplement. @c * Lepcha:: Lepcha. @c * Letterlike Symbols:: Letterlike Symbols. @c * Limbu:: Limbu. -@c * Linear A:: Linear A. +@c * Linear A:: Linear A@. @c * Linear B Ideograms:: Linear B Ideograms. @c * Linear B Syllabary:: Linear B Syllabary. @c * Lisu:: Lisu. @@ -7874,8 +8095,8 @@ the compose key. @c * Meroitic Cursive:: Meroitic Cursive. @c * Meroitic Hieroglyphs:: Meroitic Hieroglyphs. @c * Miao:: Miao. -* Miscellaneous Mathematical Symbols-A:: Miscellaneous Mathematical Symbols-A. -* Miscellaneous Mathematical Symbols-B:: Miscellaneous Mathematical Symbols-B. +* Miscellaneous Mathematical Symbols-A:: Miscellaneous Mathematical Symbols-A@. +* Miscellaneous Mathematical Symbols-B:: Miscellaneous Mathematical Symbols-B@. @c * Miscellaneous Symbols:: Miscellaneous Symbols. * Miscellaneous Symbols and Arrows:: Miscellaneous Symbols and Arrows. @c * Miscellaneous Symbols and Pictographs:: Miscellaneous Symbols and Pictographs. @@ -7886,8 +8107,8 @@ the compose key. @c * Mro:: Mro. @c * Musical Symbols:: Musical Symbols. @c * Myanmar:: Myanmar. -@c * Myanmar Extended-A:: Myanmar Extended-A. -@c * Myanmar Extended-B:: Myanmar Extended-B. +@c * Myanmar Extended-A:: Myanmar Extended-A@. +@c * Myanmar Extended-B:: Myanmar Extended-B@. @c * Nabataean:: Nabataean. @c * New Tai Lue:: New Tai Lue. @c * NKo:: NKo. @@ -7932,9 +8153,9 @@ the compose key. @c * Sundanese:: Sundanese. @c * Sundanese Supplement:: Sundanese Supplement. * Superscripts and Subscripts:: Superscripts and Subscripts. -* Supplemental Arrows-A:: Supplemental Arrows-A. -* Supplemental Arrows-B:: Supplemental Arrows-B. -* Supplemental Arrows-C:: Supplemental Arrows-C. +* Supplemental Arrows-A:: Supplemental Arrows-A@. +* Supplemental Arrows-B:: Supplemental Arrows-B@. +* Supplemental Arrows-C:: Supplemental Arrows-C@. * Supplemental Mathematical Operators:: Supplemental Mathematical Operators. @c * Syloti Nagri:: Syloti Nagri. @c * Syriac:: Syriac. @@ -7994,11 +8215,11 @@ the compose key. @subsection Box Drawing Most of the box drawing glyphs can be composed by -typing @kbd{<dead compose>} followed by two -glyphs that should be combined to form the desired -glyphs. If the two glyphs are identical the glyph -becomes heavy. More general, common parts of the -glyphs become heavy. +typing @kbd{<dead compose>} followed by two glyphs +that should be combined to form the desired glyphs. +If the two glyphs are identical the glyph becomes +heavy. More general, common parts of the glyphs +become heavy. Glyphs that contain a heavy part be transformed so that the heavy parts become double stroked. @@ -8698,7 +8919,7 @@ the cursor should transition from @code{X} to @code{X-hold}. @code{X-hold} is the version of @code{X} that should be used if any rat button is held down. @code{X} is an animation from @code{X-release} to @code{X} and is used when the cursor should -transition from @code{X-release} to @code{X}. Clients should +transition from @code{X-release} to @code{X}@. Clients should not set the cursor to either of them, it is up to the server to do this based on events from the rat device. @@ -8721,6 +8942,7 @@ This cursor is usually a north-west or north-north-west pointing arrow. For left-handed themes this cursor is usually a north-east or north-north-east pointing arrow. @example +@group ## #### ###### @@ -8737,6 +8959,7 @@ usually a north-east or north-north-east pointing arrow. ###### #### #### +@end group @end example @page @@ -8749,6 +8972,7 @@ context menu. This cursor is typically @command{default} combined with a small menu. @example +@group ## ############ #### ############ ###### ## ## @@ -8765,8 +8989,9 @@ small menu. ###### #### #### +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @ifset AFIVEPAPER @page @@ -8777,6 +9002,7 @@ an horizontal text that can be selected and possibly edited. This cursor is usually a vertical I-beam. @example +@group ############## ## ## @@ -8793,10 +9019,13 @@ This cursor is usually a vertical I-beam. ## ## ############## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll +@ifclear AFOURPAPER_WITH_SMALLFONT @page +@end ifclear @item vertical-text This cursor should be used when the rat pointers is above an vertical text that can be selected and possibly edited. @@ -8806,6 +9035,7 @@ the first fallback. This cursor is usually a horizontal I-beam. @example +@group ## ## ## ## ## ## @@ -8813,9 +9043,13 @@ This cursor is usually a horizontal I-beam. ## ## ## ## ## ## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll +@ifset AFOURPAPER_WITH_SMALLFONT +@page +@end ifset @item progress This cursor indicates that the interface can be used as when @command{default} is used. @@ -8825,6 +9059,7 @@ with command the user previously issued. This cursor is usually rendered as a combination of @command{default} and @command{wait}. @example +@group ## ############ #### ############ ###### ######## @@ -8841,10 +9076,13 @@ of @command{default} and @command{wait}. ###### #### #### +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll +@ifclear AFOURPAPER_WITH_SMALLFONT @page +@end ifclear @item wait This cursor indicates that the interface cannot be used because it is working or is blocked by @@ -8854,6 +9092,7 @@ This cursor is typically rendered as a hourglass, watch, sundial or some sort of animated ring. @example +@group #################### #################### ################ @@ -8870,10 +9109,11 @@ of animated ring. ################ #################### #################### +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll -@ifset AFIVEPAPER +@ifset AFIVEPAPER_OR_AFOURPAPER_WITH_SMALLFONT @page @end ifset @item pointer @@ -8886,6 +9126,7 @@ apparent by design that the object is clickable. This cursor is usually a right hand (left hand if left-handed) pointing with the index-finger. @example +@group #### #### #### @@ -8902,10 +9143,13 @@ left-handed) pointing with the index-finger. ######################## #################### ################ +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll +@ifclear AFOURPAPER_WITH_SMALLFONT @page +@end ifclear @item help This cursor indicates that the interface is in context help mode. This is usually activated by @@ -8915,6 +9159,7 @@ question mark on it --- on the titlebar. This cursor is typically renderas as @code{default} with a question mark next to it. @example +@group ## ###### #### ########## ###### #### #### @@ -8931,8 +9176,9 @@ with a question mark next to it. ###### #### #### +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @item drag This cursor indicates that an object is @@ -8941,6 +9187,7 @@ being dragged. This cursor is usually a closed right hand, or closed left hand if left-handed. @example +@group #### #### #### ################ #### ############################ @@ -8951,8 +9198,9 @@ or closed left hand if left-handed. ######################## #################### ################ +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @page @item copy @@ -8965,6 +9213,7 @@ be used as the first fallback. This cursor is usually rendered as @code{drag} with a plus-sign next to it. @example +@group ## ## ########## @@ -8981,8 +9230,9 @@ This cursor is usually rendered as ######################## #################### ################ +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @ifset AFIVEPAPER @page @@ -9000,6 +9250,7 @@ This cursor is usually rendered as The arrow is usually point north east, or north west if left-handed. @example +@group ###### #### ## ## @@ -9016,8 +9267,9 @@ or north west if left-handed. ######################## #################### ################ +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @page @item alias @@ -9032,6 +9284,7 @@ This cursor is usually rendered as @code{drag} with an two or three linked links next to it, or an arced arrow. @example +@group #### #### ## ## ## ######## ## @@ -9048,12 +9301,17 @@ links next to it, or an arced arrow. ######################## #################### ################ +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @ifclear AFOURPAPER +@ifclear SMALLBOOK_WITH_SMALLFONT +@ifclear USLETTER_WITH_SMALLFONT @page @end ifclear +@end ifclear +@end ifclear @item no-drop This cursor indicates that the dragged object cannot be release where the rat pointer is @@ -9068,6 +9326,7 @@ should be used as the first fallback, and This cursor is typically rendered as a combination of @code{drag} and @code{not-allowed}. @example +@group ######## ## #### ## ## ## @@ -9084,8 +9343,9 @@ combination of @code{drag} and @code{not-allowed}. ######################## #################### ################ +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @page @item not-allowed @@ -9096,6 +9356,7 @@ operation. This cursor is often rendered as a circle with a diagonal line through it. @example +@group ######## #### #### ## ## @@ -9112,8 +9373,9 @@ a diagonal line through it. ## ## #### #### ######## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @ifset AFIVEPAPER @page @@ -9126,6 +9388,7 @@ below the cursor This cursor is often rendered as a combined vertical and horizontal twin-headed arrow. @example +@group ## ###### ########## @@ -9141,10 +9404,11 @@ vertical and horizontal twin-headed arrow. ########## ###### ## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll -@ifclear AFIVEPAPER +@ifclear AFIVEPAPER_OR_AFOURPAPER_WITH_SMALLFONT @page @end ifclear @item up-arrow @@ -9153,6 +9417,7 @@ insertion point. It is often rendered an upwards pointing arrow. @example +@group ## ###### ########## @@ -9164,15 +9429,20 @@ It is often rendered an upwards pointing arrow. ###### ###### ###### +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll +@ifset AFOURPAPER_WITH_SMALLFONT +@page +@end ifset @item cell This cursor is often used in spread-sheet applications -when selecting cells +when selecting cells. It is typically rendered as a thick plus-sign. @example +@group ###### ###### ###### @@ -9186,10 +9456,13 @@ It is typically rendered as a thick plus-sign. ###### ###### ###### +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll +@ifclear AFOURPAPER_WITH_SMALLFONT @page +@end ifclear @item col-resize This cursor is used to indicate the the cursor is within a region that allows it rat to be used to resize a column. @@ -9203,6 +9476,7 @@ with an arrow from the left side pointing horizontally towards it and an arrow from the right side pointing horizontally towards it. @example +@group ## ## ## @@ -9218,12 +9492,18 @@ horizontally towards it. ## ## ## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @ifclear AFOURPAPER +@ifclear USLETTER_WITH_SMALLFONT @page @end ifclear +@end ifclear +@ifset AFOURPAPER_WITH_SMALLFONT +@page +@end ifset @item row-resize This cursor is used to indicate the the cursor is within a region that allows it rat to be used to resize a column. @@ -9237,6 +9517,7 @@ with an arrow from the left side pointing vertically towards it and an arrow from the right side pointing vertically towards it. @example +@group ## ## ## @@ -9252,16 +9533,27 @@ vertically towards it. ## ## ## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll +@ifclear USLETTER +@ifclear SMALLBOOK_WITH_SMALLFONT +@ifclear AFOURPAPER_WITH_SMALLFONT +@page +@end ifclear +@end ifclear +@end ifclear +@ifset USLETTER_WITH_SMALLFONT @page +@end ifset @item crosshair This cursor is used for precision drawing or precision manipulation of an area. This cursor typically a thin crosshair. @example +@group ## ## ## @@ -9277,8 +9569,9 @@ This cursor typically a thin crosshair. ## ## ## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @item w-resize If this cursor is missing, @code{w-select} @@ -9293,6 +9586,7 @@ This cursor is typically rendered as a west pointing arrow, optionally with a wall at the arrow head. @example +@group ## ## ## ## ## ## @@ -9300,9 +9594,13 @@ wall at the arrow head. ## ## ## ## ## ## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll +@ifset AFOURPAPER_WITH_SMALLFONT +@page +@end ifset @item w-select If this cursor is missing, @code{w-resize} should be used as the first fallback, @@ -9315,6 +9613,7 @@ the fourth fallback. This cursor is typically rendered as a west pointing arrow. @example +@group ## ## ## @@ -9322,12 +9621,18 @@ west pointing arrow. ## ## ## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll -@ifclear AFIVEPAPER +@ifclear AFIVEPAPER_OR_USLETTER_OR_SMALLBOOK_WITH_SMALLFONT +@ifclear AFOURPAPER_WITH_SMALLFONT @page @end ifclear +@end ifclear +@ifset USLETTER_WITH_SMALLFONT +@page +@end ifset @item e-resize If this cursor is missing, @code{e-select} should be used as the first fallback, @@ -9341,6 +9646,7 @@ This cursor is typically rendered as a east pointing arrow, optionally with a wall at the arrow head. @example +@group ## ## ## ## ## ## @@ -9348,11 +9654,14 @@ wall at the arrow head. ## ## ## ## ## ## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll -@ifset AFIVEPAPER +@ifset AFIVEPAPER_OR_USLETTER_OR_SMALLBOOK_WITH_SMALLFONT +@ifclear USLETTER_WITH_SMALLFONT @page +@end ifclear @end ifset @item e-select If this cursor is missing, @code{e-resize} @@ -9366,6 +9675,7 @@ the fourth fallback. This cursor is typically rendered as a east pointing arrow. @example +@group ## ## ## @@ -9373,10 +9683,16 @@ east pointing arrow. ## ## ## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @ifset SMALLBOOK +@ifclear SMALLFONT +@page +@end ifclear +@end ifset +@ifset AFOURPAPER_WITH_SMALLFONT @page @end ifset @item n-resize @@ -9392,6 +9708,7 @@ This cursor is typically rendered as a north pointing arrow, optionally with a wall at the arrow head. @example +@group ############## ## @@ -9408,12 +9725,18 @@ wall at the arrow head. ## ## ## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @ifclear SMALLBOOK +@ifclear AFOURPAPER_WITH_SMALLFONT @page @end ifclear +@end ifclear +@ifset SMALLBOOK_WITH_SMALLFONT +@page +@end ifset @item n-select If this cursor is missing, @code{n-resize} should be used as the first fallback, @@ -9426,6 +9749,7 @@ the fourth fallback. This cursor is typically rendered as a north pointing arrow. @example +@group ## ###### ## ## ## @@ -9440,12 +9764,16 @@ north pointing arrow. ## ## ## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll -@ifclear AFOURPAPER +@ifclear AFOURPAPER_OR_USLETTER_OR_SMALLBOOK_WITH_SMALLFONT @page @end ifclear +@ifset AFOURPAPER_WITH_SMALLFONT +@page +@end ifset @item s-resize If this cursor is missing, @code{s-select} should be used as the first fallback, @@ -9459,6 +9787,7 @@ This cursor is typically rendered as a south pointing arrow, optionally with a wall at the arrow head. @example +@group ## ## ## @@ -9475,12 +9804,15 @@ wall at the arrow head. ## ############## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @ifclear SMALLBOOK +@ifclear AFOURPAPER_WITH_SMALLFONT @page @end ifclear +@end ifclear @item s-select If this cursor is missing, @code{s-resize} should be used as the first fallback, @@ -9493,6 +9825,7 @@ the fourth fallback. This cursor is typically rendered as a south pointing arrow. @example +@group ## ## ## @@ -9507,10 +9840,11 @@ south pointing arrow. ## ## ## ###### ## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll -@ifset AFIVEPAPER +@ifset AFIVEPAPER_OR_AFOURPAPER_WITH_SMALLFONT @page @end ifset @item nw-resize @@ -9526,6 +9860,7 @@ This cursor is typically rendered as a north-west pointing arrow, optionally with a corner at the arrow head. @example +@group ################## ## ## @@ -9542,12 +9877,15 @@ with a corner at the arrow head. ## ## ## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @ifclear SMALLBOOK +@ifclear AFOURPAPER_WITH_SMALLFONT @page @end ifclear +@end ifclear @item nw-select If this cursor is missing, @code{nw-resize} should be used as the first fallback, @@ -9560,6 +9898,7 @@ the fourth fallback. This cursor is typically rendered as a north-west pointing arrow. @example +@group ############ #### ## ## @@ -9573,10 +9912,11 @@ north-west pointing arrow. ## ## ## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll -@ifset AFIVEPAPER +@ifset AFIVEPAPER_OR_AFOURPAPER_WITH_SMALLFONT @page @end ifset @item se-resize @@ -9592,6 +9932,7 @@ This cursor is typically rendered as a south-east pointing arrow, optionally with a corner at the arrow head. @example +@group ## ## ## @@ -9608,12 +9949,15 @@ with a corner at the arrow head. ## ## ################## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @ifclear SMALLBOOK +@ifclear AFOURPAPER_WITH_SMALLFONT @page @end ifclear +@end ifclear @item se-select If this cursor is missing, @code{se-resize} should be used as the first fallback, @@ -9626,6 +9970,7 @@ the fourth fallback. This cursor is typically rendered as a south-east pointing arrow. @example +@group ## ## ## @@ -9639,10 +9984,11 @@ south-east pointing arrow. ## ## #### ############ +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll -@ifset AFIVEPAPER +@ifset AFIVEPAPER_OR_AFOURPAPER_WITH_SMALLFONT @page @end ifset @item ne-resize @@ -9658,6 +10004,7 @@ This cursor is typically rendered as a north-east pointing arrow, optionally with a corner at the arrow head. @example +@group ################## ## ## @@ -9674,12 +10021,15 @@ with a corner at the arrow head. ## ## ## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @ifclear SMALLBOOK +@ifclear AFOURPAPER_WITH_SMALLFONT @page @end ifclear +@end ifclear @item ne-select If this cursor is missing, @code{ne-resize} should be used as the first fallback, @@ -9692,6 +10042,7 @@ the fourth fallback. This cursor is typically rendered as a north-east pointing arrow. @example +@group ############ #### ## ## @@ -9705,10 +10056,11 @@ north-east pointing arrow. ## ## ## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll -@ifset AFIVEPAPER +@ifset AFIVEPAPER_OR_AFOURPAPER_WITH_SMALLFONT @page @end ifset @item sw-resize @@ -9724,6 +10076,7 @@ This cursor is typically rendered as a south-west pointing arrow, optionally with a corner at the arrow head. @example +@group ## ## ## @@ -9740,12 +10093,15 @@ with a corner at the arrow head. ## ## ################## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @ifclear SMALLBOOK +@ifclear AFOURPAPER_WITH_SMALLFONT @page @end ifclear +@end ifclear @item sw-select If this cursor is missing, @code{sw-resize} should be used as the first fallback, @@ -9758,6 +10114,7 @@ the fourth fallback. This cursor is typically rendered as a south-west pointing arrow. @example +@group ## ## ## @@ -9771,8 +10128,9 @@ south-west pointing arrow. ## ## #### ############ +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @item ew-resize If this cursor is missing, @code{ew-select} @@ -9784,6 +10142,7 @@ This cursor is typically rendered as a east and west pointing twin-arrow, optionally with a wall at the arrow heads. @example +@group ## ## ## ## ## ## ## ## ## ## ## ## @@ -9791,9 +10150,15 @@ optionally with a wall at the arrow heads. ## ## ## ## ## ## ## ## ## ## ## ## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll +@ifset SMALLFONT +@ifset AFOURPAPER_OR_AFIVEPAPER +@page +@end ifset +@end ifset @item ew-select If this cursor is missing, @code{ew-resize} should be used as the first fallback, and @@ -9803,6 +10168,7 @@ second fallback. This cursor is typically rendered as a east and west pointing twin-arrow. @example +@group ## ## ## ## ## ## @@ -9810,10 +10176,11 @@ east and west pointing twin-arrow. ## ## ## ## ## ## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll -@ifclear AFIVEPAPER +@ifclear AFIVEPAPER_OR_AFOURPAPER_WITH_SMALLFONT @page @end ifclear @item ns-resize @@ -9826,6 +10193,7 @@ This cursor is typically rendered as a north and south pointing twin-arrow, optionally with a wall at the arrow heads. @example +@group ############## ## @@ -9842,8 +10210,9 @@ optionally with a wall at the arrow heads. ## ############## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @item ns-select If this cursor is missing, @code{ns-resize} @@ -9854,6 +10223,7 @@ second fallback. This cursor is typically rendered as a north and south pointing twin-arrow. @example +@group ## ###### ## ## ## @@ -9866,10 +10236,21 @@ north and south pointing twin-arrow. ## ## ## ###### ## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll +@ifclear SMALLFONT +@ifclear AFIVEPAPER @page +@end ifclear +@end ifclear +@ifset USLETTER_WITH_SMALLFONT +@page +@end ifset +@ifset AFOURPAPER_WITH_SMALLFONT +@page +@end ifset @item nwse-resize If this cursor is missing, @code{all-resize} should be used as the first fallback. @@ -9878,6 +10259,7 @@ This cursor is typically rendered as a north-west and south-east pointing twin-arrow, optionally with a corner at the arrow heads. @example +@group ################## ## ## @@ -9894,8 +10276,9 @@ optionally with a corner at the arrow heads. ## ## ################## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @ifset AFIVEPAPER @page @@ -9908,6 +10291,7 @@ This cursor is typically rendered as a north-east and south-west pointing twin-arrow, optionally with a corner at the arrow heads. @example +@group ################## ## ## @@ -9924,8 +10308,9 @@ optionally with a corner at the arrow heads. ## ## ################## +@end group @end example -@vskip 0pt plus 2filll +@vskip 0pt plus 1filll @page @item all-resize @@ -9935,6 +10320,7 @@ twin-arrow and a north-west and south-east pointing twin-arrow, optionally with a corner at the arrow heads. @example +@group ########## ########## #### #### ## ## ## ## @@ -9950,6 +10336,7 @@ at the arrow heads. ## ## ## ## #### #### ########## ########## +@end group @end example @end table @@ -9971,7 +10358,7 @@ the windows ID of the socket that the application should be embedded in. All @command{mds} applications must be aware -of the environment variable @env{MDS_EMBED}. +of the environment variable @env{MDS_EMBED}@. The application may choose not to embed itself in the announced socket, however it should have good reason for not doing this. @@ -10012,7 +10399,7 @@ if and only if @env{PREFERRED_DISPLAY} lists any other display protocol. If a compatibility server is successfully started, -it shoul be listed in @env{PREFERRED_DISPLAY}. +it shoul be listed in @env{PREFERRED_DISPLAY}@. Be sure to keep the list ordered by preference. @table @code @@ -10077,7 +10464,7 @@ to run them across any number of computers. @pgindex @code{@command{mds-host}} @pgindex @command{mds-remote} -@pgindex Networking +@cpindex Networking If a hosting server, like @command{mds-host}, runs inside a metadisplay, any number of computers can connect to the metadisplay using a server like @@ -10695,7 +11082,7 @@ Development of @command{mds} started out of concern that Wayland would not meet our needs, and the knowledge that X does not. We are now however aware that Wayland meets our needs even -less than X.@footnote{Not even counting that +less than X@.@footnote{Not even counting that the documentation for Wayland is way more lacking that X's documentation.} @@ -11027,31 +11414,31 @@ backgrund. @include fdl.texinfo @node Program index -@appendix Program index +@unnumbered Program index @printindex pg @node Variable index -@appendix Variable index +@unnumbered Variable index @printindex vr @node Option index -@appendix Option index +@unnumbered Option index @printindex op @node Concept index -@appendix Concept index +@unnumbered Concept index @printindex cp @node Signal index -@appendix Signal index +@unnumbered Signal index @printindex sg @node Function index -@appendix Function index +@unnumbered Function index @printindex fn @node Data type index -@appendix Data type index +@unnumbered Data type index @printindex tp @bye @@ -11096,7 +11483,7 @@ TODO protocol: workspace TODO protocol: ping TODO notifications (balloons, bubbles) -TODO virtual resultion (the screen is larger than the output) +TODO virtual resolution (the screen is larger than the output) TODO taskbar features: progress bars (any number) with colours @@ -11111,3 +11498,5 @@ TODO application menu features: different ways to start an program, for example, browers may include a safe-browsing mode. +In `Rat Cursors` use anchors and references to hyperlink names. + |