ARPUS/ce, Version 2.6.2 (03/10/05) (SCCS 1.9)
_______________________________________________________________________________
Concept: Keys and key definitions.
DESCRIPTION:
While everything you want to accomplish in an edit window can be done
explicitly through command input at the "Command: " prompt, you will
most likely use a variety of keys or key combinations that invoke ce
commands.
In general, every key on the keyboard can be defined to execute some Ce
command sequence. The modifier keys (Shift, Ctrl, Alt, ... ) can be
used to multiply the number of possible definitions. In addition, the
mouse keys are considered to be keys with the names m1 (for the left
button), m2 (for the center button), and m3 (for the right button). In
compliance with X standards, m4 and m5 can be defined, but a 5 button
mouse would be needed to access these. Both the downstroke of a key or
mouse button can be defined as well as the upstroke.
The "kd" command is used to assign Ce command sequences to keys and to
view the command sequences for a given key name. The help page for the
kd command contains the syntax for defining keys with and without the
various modifiers and also putting a definition under the upstroke of a
key. The kk command information on the X key names associated with
keys.
Example 1:
An example is the "<RETURN>" key. When the cursor is in a
ce or cv window, and "<RETURN>" is pressed, it implements
the ce command "en", which means "insert a newline
character at the cursor position". In other words, the
"<RETURN>" key is DEFINED as the command sequence "en".
One popular re-definition of the "<RETURN>" key is
"tr;en", which first places the cursor at the end of the
current line (tr) and then inserts a newline character.
Effectively this key definition causes "<RETURN>" to
insert a new line below the current line without changing
the current line.
Example 2:
In the above example, the "<RETURN>" key invokes a single
ce command. In general, a single key or a key combination
can invoke a series of commands. For example, the key
combination "<CONTROL> t" by default moves the cursor to
line 1, column 1; that key combination is defined as
"pt;tt;tl", which is a series of 3 ce commands separated
by semicolons.
Key Definitions:
The ce software is delivered with a standard set of key
definitions. The 'ce_init' command copies a file
containing those standard definitions into $HOME/.Cekeys.
If you look at that file, you will see a number of lines
of the form "kd <keyname> <definition> ke". 'kd' is the
ce command to assign a definition to a key. Once you are
comfortable with how those key combinations operate, you
will probably want to customize them or add new ones to
suit your editing style.
"$HOME/.Cekeys" is loaded the first time you invoke ce or
cv in a login session. If you want to create a key
definition that works every time you start ce or cv, add
your own 'kd' command to that file. Key definitions
assigned from the command input window are good only for
the duration of the login session.
When Ce loads key definitions, it first checks environment
variable CEKEYS. If it exists, its value is used as the
name of the file to load the key definitions from. If this
variable is not set, "$HOME/.Cekeys" is used. This feature
is useful if you have one home directory but use several
hardware platforms. In this environment, you usually have
your .profile determine which machine you are logging on
to. At this point you can set the CEKEYS environment
variable to an appropriate set of key definitions. You can
also use this to load an arbitrary file by temporarily
setting CEKEYS and running "ce -reload". In Borne or Korn
shells this would be:
CE_KEYS=some/path ce -reload
Extended Key Definitions:
The default key definitions described above use keys that
can be found on virtually every keyboard. The definitions
do not take advantage of keys with special labels such as
"Cut", "Paste", etc. This is because keyboards vary
greatly from system to system. The ce software includes
additional key definition files to take advantage of those
special keys. Type "ce_init sysnames" for a listing of
systems for which ce has extended key definition files.
You will probably find a key definition file that matches
your system's keyboard.
DETAILS:
Keys which are not defined in the .Cekeys file may carry default
definitions. These are generally the Alphabetic and numeric keys.
It is not necessary to define the 'a' key as "es 'a'" explicitly.
Ce deals with these by default. It is however possible to define
the 'a' key to do something else. The command "kd a es 'eee' ke"
will cause the 'a' key to be equivalent to pressing the 'e' key
three times. This is generally a bad idea since you may end up
resorting to copy and paste to get a letter 'a' to redefine the
key. If a key definition is set to null as in "kd a ke", the key
will take on it's default meaning.
The calculation of default key definitions is affected by the
"isolatin" parameter and X resource and the state of vt100
emulation in ceterm. vt100 emulation overrides the isolatin
state. Default key definitions are always in the form of "es"
commands for the character pressed.
The following discussion references keys which have a value
associated with them. The value referenced is the XLookupString
value for the key event generated when the key is released. This
value can be determined with the standard xev program by starting
xev, moving the pointer into the xev window and pressing the
desired key. The last line of the information displayed for the
key press event is the XLookupString value. Beware that xev also
reports data on the key release so make sure you are looking a
the right thing.
In the default, state (isolatin off, vt100 off), a key has a
default key definition if the key press event has an value with a
length other than zero and no modifiers other than shift are
currently pressed. Thus, even though ^c has a value of x'03', an
es of the 03 is not generated if you press ^c in a window when
there is no key definition for ^c.
In isolatin mode, the restriction on modifier keys is removed.
This is because many of the special European keys use special
modifiers to access them. For example: On many HP/UX keyboards,
the <extend-char>h combination yields the Yen symbol when using
an isolatin font. If a non-isolatin font is used, it generates a
non-printable character. If a user is making use of the special
symbols and European characters accessed via the <extend-char>
key, it is desirable to insert the code for these special
characters into the file just as if they were a standard
character. However, if one is using an American font and not
using these characters and there is no Ce key definition for
*yen, it is desirable to do nothing. This makes the action
consistent with pressing *F2 when *F2 has not been defined.
In vt100 emulation mode in a ceterm, if the key has a value, the
value is used even if the key has a key definition. Only if a key
does not have a value, is a Ce key definition used. Note also,
that in vt100 emulation mode, special values are assigned to the
numeric keypad keys and function keys 1 to 8.
SUGGESTION:
If you are an Apollo user migrating to another platform, take
your key definition file from your Apollo and put in on the new
platform. The key names change, but most of the names are
obvious, f1 becomes F1. The kk command can help you find the
names of the other keys. Thus you can carry your customized
environment with you. Some platforms have a left hand bank of
keys with copy and paste keycaps. These make a good choice for
many of the keys from the left hand key bank on the Apollo. In
most cases, the key definition syntax is the same from the
Apollo. In a few cases, the number of escape characters changes.
Sorry. Carrying your custom key definitions with you can go a
long way toward making you comfortable on the new platform.
CONVERTING KEYDEFS FROM AEGIS TO UNIX REGULAR EXPRESSION MODE:
Some key definitions employ search commands (both forward and
reverse) which make use of "regular expressions" to do the
pattern matching. Ce supports both the "regular expressions" use
by Apollo Domain machines and the standard Unix "regular
expressions". By default, Ce is installed in Aegis regular
expression mode. Ce can be converted to Unix regular expressions
by either the system administrator or the individual user. The
changes made by the system administrator affect anyone who runs
the ce_init command. Changes made by an individual affect only
that user.
SYSTEM ADMINISTRATOR CHANGES:
In $CEDATADIR/.Xdefaults find the line containing Ce.expr : Unix
In the .Xdefaults file, find the line which contains "Ce.expr :
U" and uncomment this line. If the line above it, which contains
"Ce.expr : A" is not commented out, comment it out by placing an
'!' in column 1.
In each of the keydef files with a ".common" suffix, find the
string "Ce.expr". This string will be in a comment. Following
this line will be one or more key definitions followed by a group
of commented out key definitions with the same key names prefixed
by "#Unix expr". Comment out the first set of key definitions and
uncomment the second by removing the '#Unix expr' marker string.
It is suggested that when commenting out the Aegis regular
expression lines that the string "#Aegis expr" be used in case
someone wishes to reverse the process.
INDIVIDUAL USER CHANGES:
First the X resource used by Ce must be changed to Unix mode. On
machines not running HP/UX or COSE, edit the .Xdefaults file and
find the Ce.expr line which was created by ce_init. Uncomment the
"Ce.expr : Unix" line by removing the '!'. .Xdefaults files use
'!' as the comment character. On HP/UX or COSE machines, create a
file such as /tmp/file with the line
Ce.expr : U
and then execute
xrdb -merge /tmp/file
Then use the palate to resave your home session.
In your $HOME/.Cekeys file, find the string "Ce.expr". This
string will be in a comment. Following this line will be one or
more key definitions followed by a group of commented out key
definitions with the same key names prefixed by "#Unix expr".
Comment out the first set of key definitions and uncomment the
second by removing the '#Unix expr' marker string. It is
suggested that when commenting out the Aegis regular expression
lines that the string "#Aegis expr" be used in case someone
wishes to reverse the process.
If your installation has been defaulted to Unix "regular
expression" mode by the system administrator and you wish to
change back to Aegis mode, you are at the mercy of the system
administrator. If the Aegis mode definitions were commented out
with "#Aegis expr" as is recommended above, you just reverse the
conversion process. If the original lines were deleted, You will
have to convert ^F5 and the mouse definitions yourself. The mouse
definition keys are listed near the end of this help file.
MULTIPLE SETS OF KEY DEFINITIONS:
The environment variable CE_KDP can be used to have multiple sets
of key definitions active on the same display at the same tine.
If the -kdp argument is NOT specfied and the CE_KDP environment
variable is set all windows started with this use a separate set
of key definitions. The value of the environment variable is not
critical. By default, key definitions are associated with an X
property name CeKeys. When the CE_KDP environment variable is
set, the key definitions associated with the X property whose
name is the value of the CE_KDP environment variable is used. If
there are not key definitions associated with this X property
name, the .Cekeys file on the machine where the ce or ceterm is
running will be loaded and associated with this name.
There are cases where a person wants to use different key
definitions for windows originating on a particular machine. By
setting the CE_KDP environment variable in the .profile for that
machine to other than the default value, ce and ceterm windows
started on that machine will use key definitions from a
$HOME/.Cekeys file on that machine. If you do this, you are on
your own as far as keeping track of which windows are using which
set of key definitions.
WARNINGS:
1. It is possible to define keys which cannot be pressed. This
can be done in two ways. First all the X key names known to
your X server are available for definition. Thus you could
type "kd yen es 'abc' ke" even if there is no key on your
keyboard which generates the yen keysym. The other is by
miscombining modifiers to create unreachable states. For
example, the definition "kd aS es 'ab' ke" would appear to
redefine the shifted 'a'. However, more specifically, it
defines the shifted lower case 'a'. When the shift key is
pressed, the keysym generated by the X server is the upper
case 'A'. Thus you will not ever get a shifted lower case
'a', only a shifted upper case 'A'. By the same rule, if you
want to redefine upper case 'A', you need to define upper
case 'A' shifted (AS). Ce cannot code special cases for this
since it is quite legal to use the xmodmap utility to define
some key which generates the lower case 'a' keysym when the
shift key is pressed.
2. Occasionally one may suddenly find that none of the key
definitions appear to work. You check the definition and it
is there, but you press the key and nothing happens. Check to
see if the cap's lock is down or the num-lock. Thus all the
keys are being subjected to the modifier. The num-lock is not
a problem on some platforms but is on others. To fix the
problem permanently and free up the NumLock key for other
purposes, put the following line in your .dtprofile,
.vueprofile, or .openwin-init file as appropriate.
xmodmap -e "remove mod3 = Num_Lock" 2>/dev/console
If you do this, a popular set of custom key definitions you
can apply to your .Cekeys file are as follows:
kd Num_Lock rec -p cemacro ke # macro record on
kd KP_Divide rec ke # macro record off
kd KP_Multiply cmdf -p cemacro ke # macro play
If you are doing something repetitive, like shifting a
column over 3 spaces, you would press Num_Lock to turn
recording on, type the 3 spaces, press arrow down to get to
the next line, press arrow left 3 times to get back under the
next spot to move, and press the Key Pad Divide key to turn
recording off. Then press key pad multiply and it will repeat
the insert 3 spaces, go down a line, move left 3 spaces with
one keystroke.
SPECIAL SUN NOTES:
Some Sun keyboards have a blank key on the top row next to the
Help key and 4 blank keys on the top row at the right side of the
keyboard. Using the kk command on these keys will give a keysym
of "#0" and also list the hardware key code. Since there is no
keysym for this key, it cannot be defined.
To create a keysym for this key, put the following line in your
.dtprofile file (for CDE) or .openwin-init file (for Open
Windows) before the first toolwait command. You can create a
.openwin-init file by coping $OPENWINHOME/lib/openwin-init to
.openwin-init in your home directory.
xmodmap -e "keycode 0x34 = Greek_ALPHA" \
-e "keycode 0x09 = Greek_BETA" \
-e "keycode 0x0b = Greek_GAMMA" \
-e "keycode 0x37 = Greek_DELTA" \
-e "keycode 0x16 = Greek_EPSILON"
The Sun Type 5 keyboards often map the numeric key pad to odd
function key numbers and also to the key keysym as the arrow keys
and page up keys. To break these out for independent use you can
put the following in your .dtprofile or .openwin-init as
appropriate. They set the keysyms for the numeric pad to the more
intuitive values.
xmodmap -e "keycode 0x65 = KP_0" \
-e "keycode 0x77 = KP_1" \
-e "keycode 0x78 = KP_2" \
-e "keycode 0x79 = KP_3" \
-e "keycode 0x62 = KP_4" \
-e "keycode 0x63 = KP_5" \
-e "keycode 0x64 = KP_6" \
-e "keycode 0x4B = KP_7" \
-e "keycode 0x4C = KP_8" \
-e "keycode 0x4D = KP_9"
xmodmap -e "keycode 0x39 = KP_Decimal" \
-e "keycode 0x84 = KP_Add" \
-e "keycode 0x4e = KP_Subtract" \
-e "keycode 0x36 = KP_Multiply" \
-e "keycode 0x35 = KP_Divide"
RELATED HELP FILES:
kd (Key Definition)
lkd (Local Key Definition)
kk (Key Key)
commands (List of Commands)
xresources (Arguments and X resources)
keyboard (default definitions)
support (customer support)
xev manual page (execute man xev from a Unix prompt)
xmodmap manual page (execute man xmodmap from a Unix prompt)
USEFUL KEY DEFINITIONS:
The standard Ce key definitions handle most of the editing
functionality using a standardized set of keys. However, to provide
examples of other uses of the Ce command set, the following key
definitions are provided along with explanations. These key
definitions have been found to be useful and may be of interest. With
the exception of the mouse keys, the key name used for a given key may
change based on the actual key map used at your site. To try out any of
these key definitions, copy them to the bottom of your .Cekeys file and
run "ce -reload" to install them.
#
# The following definitions set the Shell DISPLAY environment variable to the
# place the ceterm is being displayed. This is useful when doing telnets. The
# first definition is for non-vt100 mode. The second is for vt100 mode.
#
kd *h env CEHOST;tdmo;tl;/=/;ar;dr;tr;xc -l host;ti;tl;xd -l junk;es 'DISPLAY=';xp host;tr;es ';export DISPLAY';en;msg ' ' ke
kd *F1 env CEHOST;tdmo;tl;/=/;ar;dr;tr;xc -l host;tmw;es 'DISPLAY=';xp host;es ';export DISPLAY';er 0d ke
# on HP's replace *h with
kd *yen env CEHOST;tdmo;tl;/=/;ar;dr;tr;xc -l host;ti;tl;xd -l junk;es 'DISPLAY=';xp host;tr;es ';export DISPLAY';en;msg ' ' ke
#
# Many users use the numeric pad keys to arrange windows with the keypad
# mapping to the screen. That is, the '9' key in the upper right of the
# keypad puts the window in the upper right corner of the screen. The '8'
# is the top half of the screen, the '4' is the left side of the srceen and
# so on. They key names may differ with different keyboards and the
# exact geometries may vary with different display screen sizes. This should
# provide a good start.
#
#
# Apollo DN
#
kd np1 geo 600x517+0+480 ke
kd np2 geo 1200x517+0+480 ke
kd np3 geo 600x517-80+480 ke
kd np4 geo 600x994+0+0 ke
kd np5 geo 1200x994+0+0 ke
kd np6 geo 600x994-80+0 ke
kd np7 geo 600x517+0+0 ke
kd np8 geo 1200x517+0+0 ke
kd np9 geo 600x517-80+0 ke
#
# HP/UX 700 series
#
kd KP_7 geo 575x420+90+35 ke
kd KP_8 geo 1180x420+90+35 ke
kd KP_9 geo 575x420-10+35 ke
kd KP_1 geo 575x400+90-120 ke
kd KP_2 geo 1180x400+90-120 ke
kd KP_3 geo 575x400-10-120 ke
kd KP_4 geo 575x860+90+35 ke
kd KP_5 geo 1180x860+90+35 ke
kd KP_6 geo 575x860-10+35 ke
kd KP_5S geo c80x24+100+100 ke
#
# Sun Sparc 10, 16" monitor
#
kd `F27 geo 560x365+5+25 ke
kd `Up geo 1140x365+5+25 ke
kd ~Up geo 905x365+245+25 ke
kd `F29 geo 560x365-5+25 ke
kd `R13 geo 560x410+5+425 ke
kd `Down geo 1140x410+5+425 ke
kd `F35 geo 560x410-5+425 ke
kd `Left geo 560x810+5+25 ke
kd `F31 geo 1140x860+5+25 ke
kd `Right geo 560x810-5+25 ke
kd F31S geo c80x24+200+200 ke
#
# IBM RS6000
#
kd KP_7 geo 550x465+10+35 ke
kd KP_8 geo 1175x465+10+35 ke
kd KP_9 geo 550x465-100+35 ke
kd KP_1 geo 550x465+10-35 ke
kd KP_2 geo 1175x465+10-35 ke
kd KP_3 geo 550x465-100-35 ke
kd KP_4 geo 550x990+10+35 ke
kd KP_5 geo 1175x990+10+35 ke
kd KP_6 geo 550x990-100+35 ke
#
# X Station with 14" screen
#
kd KP_7 geo 490x335+10+35 ke
kd KP_8 geo 1000x335+10+35 ke
kd KP_9 geo 490x335-10+35 ke
kd KP_1 geo 490x335+10-10 ke
kd KP_2 geo 1000x335+10-10 ke
kd KP_3 geo 490x335-10-10 ke
kd KP_4 geo 490x720+10+35 ke
kd KP_5 geo 990x700+10+35 ke
kd KP_6 geo 490x720-10+35 ke
kd *KP_9 geo 790x353+224+34 ke
#
# Dec Alpha
#
kd KP_7 geo 550x465+10+35;tt ke
kd KP_8 geo 1175x465+10+35;tt ke
kd KP_9 geo 550x465-100+35;tt ke
kd KP_1 geo 550x465+10-35;tt ke
kd KP_2 geo 1175x465+10-35;tt ke
kd KP_3 geo 550x465-100-35;tt ke
kd KP_4 geo 550x990+10+35;tt ke
kd KP_5 geo 1175x990+10+35;tt ke
kd KP_6 geo 550x990-100+35;tt ke
# When choosing a font to call your favorite. The following
# key definitions are useful.
# execute "xlsfonts | cv" from the Unix command window and
# have the following key definition installed.
# position the cursor over a font you want to try and press
# alt-z. This font will be loaded. When you find a font
# you like, put it in the .Xdefaults file for Ce:font.
# If you get an unreadable font loaded, pick some random
# line and load that font. That should at least make it readable.
#
kd *z tl;dr;tr;xc -l font;tdm;tl;xd -l junk;es 'fl ';xp font;tr;en ke
#on HP's use
kd *paragraph tl;dr;tr;xc -l font;tdm;tl;xd -l junk;es 'fl ';xp font;tr;en ke
# When choosing colors, execute "cv /usr/lib/X11/rgb.txt"
# This gives a list of all the colors known to your X server.
# With the following key definitions, mod1-X will load the
# color on the current cursor line as the background.
# ctrl-mod1-X will load the color as the foreground color.
# On Sun, mod1 is usually the diamond key. On other boxes
# it is the alt key.
kd *x [,14]dr;tr;xc -l color;tdm;tl;xd -l junk;es 'bgc ';xp color;tr;en ke
kd ^*x [,14]dr;tr;xc -l color;tdm;tl;xd -l junk;es 'fgc ';xp color;tr;en ke
on HP's use
kd *scaron [,14]dr;tr;xc -l color;tdm;tl;xd -l junk;es 'bgc ';xp color;tr;en ke
kd ^*scaron [,14]dr;tr;xc -l color;tdm;tl;xd -l junk;es 'fgc ';xp color;tr;en ke
#
# When programming, it is nice to be able to quickly find
# balancing delimiters. The following key definition is
# useful to match delimiters. See the help for bl for more
# information on bl.
kd *b bl -d ke
_______________________________________________________________________________
Copyright (c) 2005, Robert Styma Consulting. All rights reserved.