Mercurial > hg > xemacs-beta
annotate etc/emacskeys.sco @ 665:fdefd0186b75
[xemacs-hg @ 2001-09-20 06:28:42 by ben]
The great integral types renaming.
The purpose of this is to rationalize the names used for various
integral types, so that they match their intended uses and follow
consist conventions, and eliminate types that were not semantically
different from each other.
The conventions are:
-- All integral types that measure quantities of anything are
signed. Some people disagree vociferously with this, but their
arguments are mostly theoretical, and are vastly outweighed by
the practical headaches of mixing signed and unsigned values,
and more importantly by the far increased likelihood of
inadvertent bugs: Because of the broken "viral" nature of
unsigned quantities in C (operations involving mixed
signed/unsigned are done unsigned, when exactly the opposite is
nearly always wanted), even a single error in declaring a
quantity unsigned that should be signed, or even the even more
subtle error of comparing signed and unsigned values and
forgetting the necessary cast, can be catastrophic, as
comparisons will yield wrong results. -Wsign-compare is turned
on specifically to catch this, but this tends to result in a
great number of warnings when mixing signed and unsigned, and
the casts are annoying. More has been written on this
elsewhere.
-- All such quantity types just mentioned boil down to EMACS_INT,
which is 32 bits on 32-bit machines and 64 bits on 64-bit
machines. This is guaranteed to be the same size as Lisp
objects of type `int', and (as far as I can tell) of size_t
(unsigned!) and ssize_t. The only type below that is not an
EMACS_INT is Hashcode, which is an unsigned value of the same
size as EMACS_INT.
-- Type names should be relatively short (no more than 10
characters or so), with the first letter capitalized and no
underscores if they can at all be avoided.
-- "count" == a zero-based measurement of some quantity. Includes
sizes, offsets, and indexes.
-- "bpos" == a one-based measurement of a position in a buffer.
"Charbpos" and "Bytebpos" count text in the buffer, rather than
bytes in memory; thus Bytebpos does not directly correspond to
the memory representation. Use "Membpos" for this.
-- "Char" refers to internal-format characters, not to the C type
"char", which is really a byte.
-- For the actual name changes, see the script below.
I ran the following script to do the conversion. (NOTE: This script
is idempotent. You can safely run it multiple times and it will
not screw up previous results -- in fact, it will do nothing if
nothing has changed. Thus, it can be run repeatedly as necessary
to handle patches coming in from old workspaces, or old branches.)
There are two tags, just before and just after the change:
`pre-integral-type-rename' and `post-integral-type-rename'. When
merging code from the main trunk into a branch, the best thing to
do is first merge up to `pre-integral-type-rename', then apply the
script and associated changes, then merge from
`post-integral-type-change' to the present. (Alternatively, just do
the merging in one operation; but you may then have a lot of
conflicts needing to be resolved by hand.)
Script `fixtypes.sh' follows:
----------------------------------- cut ------------------------------------
files="*.[ch] s/*.h m/*.h config.h.in ../configure.in Makefile.in.in ../lib-src/*.[ch] ../lwlib/*.[ch]"
gr Memory_Count Bytecount $files
gr Lstream_Data_Count Bytecount $files
gr Element_Count Elemcount $files
gr Hash_Code Hashcode $files
gr extcount bytecount $files
gr bufpos charbpos $files
gr bytind bytebpos $files
gr memind membpos $files
gr bufbyte intbyte $files
gr Extcount Bytecount $files
gr Bufpos Charbpos $files
gr Bytind Bytebpos $files
gr Memind Membpos $files
gr Bufbyte Intbyte $files
gr EXTCOUNT BYTECOUNT $files
gr BUFPOS CHARBPOS $files
gr BYTIND BYTEBPOS $files
gr MEMIND MEMBPOS $files
gr BUFBYTE INTBYTE $files
gr MEMORY_COUNT BYTECOUNT $files
gr LSTREAM_DATA_COUNT BYTECOUNT $files
gr ELEMENT_COUNT ELEMCOUNT $files
gr HASH_CODE HASHCODE $files
----------------------------------- cut ------------------------------------
`fixtypes.sh' is a Bourne-shell script; it uses 'gr':
----------------------------------- cut ------------------------------------
#!/bin/sh
# Usage is like this:
# gr FROM TO FILES ...
# globally replace FROM with TO in FILES. FROM and TO are regular expressions.
# backup files are stored in the `backup' directory.
from="$1"
to="$2"
shift 2
echo ${1+"$@"} | xargs global-replace "s/$from/$to/g"
----------------------------------- cut ------------------------------------
`gr' in turn uses a Perl script to do its real work,
`global-replace', which follows:
----------------------------------- cut ------------------------------------
: #-*- Perl -*-
### global-modify --- modify the contents of a file by a Perl expression
## Copyright (C) 1999 Martin Buchholz.
## Copyright (C) 2001 Ben Wing.
## Authors: Martin Buchholz <martin@xemacs.org>, Ben Wing <ben@xemacs.org>
## Maintainer: Ben Wing <ben@xemacs.org>
## Current Version: 1.0, May 5, 2001
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with XEmacs; see the file COPYING. If not, write to the Free
# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
eval 'exec perl -w -S $0 ${1+"$@"}'
if 0;
use strict;
use FileHandle;
use Carp;
use Getopt::Long;
use File::Basename;
(my $myName = $0) =~ s@.*/@@; my $usage="
Usage: $myName [--help] [--backup-dir=DIR] [--line-mode] [--hunk-mode]
PERLEXPR FILE ...
Globally modify a file, either line by line or in one big hunk.
Typical usage is like this:
[with GNU print, GNU xargs: guaranteed to handle spaces, quotes, etc.
in file names]
find . -name '*.[ch]' -print0 | xargs -0 $0 's/\bCONST\b/const/g'\n
[with non-GNU print, xargs]
find . -name '*.[ch]' -print | xargs $0 's/\bCONST\b/const/g'\n
The file is read in, either line by line (with --line-mode specified)
or in one big hunk (with --hunk-mode specified; it's the default), and
the Perl expression is then evalled with \$_ set to the line or hunk of
text, including the terminating newline if there is one. It should
destructively modify the value there, storing the changed result in \$_.
Files in which any modifications are made are backed up to the directory
specified using --backup-dir, or to `backup' by default. To disable this,
use --backup-dir= with no argument.
Hunk mode is the default because it is MUCH MUCH faster than line-by-line.
Use line-by-line only when it matters, e.g. you want to do a replacement
only once per line (the default without the `g' argument). Conversely,
when using hunk mode, *ALWAYS* use `g'; otherwise, you will only make one
replacement in the entire file!
";
my %options = ();
$Getopt::Long::ignorecase = 0;
&GetOptions (
\%options,
'help', 'backup-dir=s', 'line-mode', 'hunk-mode',
);
die $usage if $options{"help"} or @ARGV <= 1;
my $code = shift;
die $usage if grep (-d || ! -w, @ARGV);
sub SafeOpen {
open ((my $fh = new FileHandle), $_[0]);
confess "Can't open $_[0]: $!" if ! defined $fh;
return $fh;
}
sub SafeClose {
close $_[0] or confess "Can't close $_[0]: $!";
}
sub FileContents {
my $fh = SafeOpen ("< $_[0]");
my $olddollarslash = $/;
local $/ = undef;
my $contents = <$fh>;
$/ = $olddollarslash;
return $contents;
}
sub WriteStringToFile {
my $fh = SafeOpen ("> $_[0]");
binmode $fh;
print $fh $_[1] or confess "$_[0]: $!\n";
SafeClose $fh;
}
foreach my $file (@ARGV) {
my $changed_p = 0;
my $new_contents = "";
if ($options{"line-mode"}) {
my $fh = SafeOpen $file;
while (<$fh>) {
my $save_line = $_;
eval $code;
$changed_p = 1 if $save_line ne $_;
$new_contents .= $_;
}
} else {
my $orig_contents = $_ = FileContents $file;
eval $code;
if ($_ ne $orig_contents) {
$changed_p = 1;
$new_contents = $_;
}
}
if ($changed_p) {
my $backdir = $options{"backup-dir"};
$backdir = "backup" if !defined ($backdir);
if ($backdir) {
my ($name, $path, $suffix) = fileparse ($file, "");
my $backfulldir = $path . $backdir;
my $backfile = "$backfulldir/$name";
mkdir $backfulldir, 0755 unless -d $backfulldir;
print "modifying $file (original saved in $backfile)\n";
rename $file, $backfile;
}
WriteStringToFile ($file, $new_contents);
}
}
----------------------------------- cut ------------------------------------
In addition to those programs, I needed to fix up a few other
things, particularly relating to the duplicate definitions of
types, now that some types merged with others. Specifically:
1. in lisp.h, removed duplicate declarations of Bytecount. The
changed code should now look like this: (In each code snippet
below, the first and last lines are the same as the original, as
are all lines outside of those lines. That allows you to locate
the section to be replaced, and replace the stuff in that
section, verifying that there isn't anything new added that
would need to be kept.)
--------------------------------- snip -------------------------------------
/* Counts of bytes or chars */
typedef EMACS_INT Bytecount;
typedef EMACS_INT Charcount;
/* Counts of elements */
typedef EMACS_INT Elemcount;
/* Hash codes */
typedef unsigned long Hashcode;
/* ------------------------ dynamic arrays ------------------- */
--------------------------------- snip -------------------------------------
2. in lstream.h, removed duplicate declaration of Bytecount.
Rewrote the comment about this type. The changed code should
now look like this:
--------------------------------- snip -------------------------------------
#endif
/* The have been some arguments over the what the type should be that
specifies a count of bytes in a data block to be written out or read in,
using Lstream_read(), Lstream_write(), and related functions.
Originally it was long, which worked fine; Martin "corrected" these to
size_t and ssize_t on the grounds that this is theoretically cleaner and
is in keeping with the C standards. Unfortunately, this practice is
horribly error-prone due to design flaws in the way that mixed
signed/unsigned arithmetic happens. In fact, by doing this change,
Martin introduced a subtle but fatal error that caused the operation of
sending large mail messages to the SMTP server under Windows to fail.
By putting all values back to be signed, avoiding any signed/unsigned
mixing, the bug immediately went away. The type then in use was
Lstream_Data_Count, so that it be reverted cleanly if a vote came to
that. Now it is Bytecount.
Some earlier comments about why the type must be signed: This MUST BE
SIGNED, since it also is used in functions that return the number of
bytes actually read to or written from in an operation, and these
functions can return -1 to signal error.
Note that the standard Unix read() and write() functions define the
count going in as a size_t, which is UNSIGNED, and the count going
out as an ssize_t, which is SIGNED. This is a horrible design
flaw. Not only is it highly likely to lead to logic errors when a
-1 gets interpreted as a large positive number, but operations are
bound to fail in all sorts of horrible ways when a number in the
upper-half of the size_t range is passed in -- this number is
unrepresentable as an ssize_t, so code that checks to see how many
bytes are actually written (which is mandatory if you are dealing
with certain types of devices) will get completely screwed up.
--ben
*/
typedef enum lstream_buffering
--------------------------------- snip -------------------------------------
3. in dumper.c, there are four places, all inside of switch()
statements, where XD_BYTECOUNT appears twice as a case tag. In
each case, the two case blocks contain identical code, and you
should *REMOVE THE SECOND* and leave the first.
author | ben |
---|---|
date | Thu, 20 Sep 2001 06:31:11 +0000 |
parents | 376386a54a3c |
children |
rev | line source |
---|---|
0 | 1 # |
2 # SCO(tm) keyboard mapping file with Emacs meta-keys | |
3 # Automatically generated using the emap utility | |
4 # | |
5 # Below is the uuencoded source for the emap utility. This program | |
6 # will, when run on an SCO console, take the current keyboard | |
7 # map and set the 'meta' bit for all keys. To make this usable | |
8 # under Emacs, edit your termcap and terminfo entries for the | |
9 # sco console (the ansi entries) and add the 'km' capability. | |
10 # Usage: | |
11 # emap [-o] [-f filename] | |
12 # If you run the utility with no flags, it will simply modify the | |
13 # current keyboard map in kernel memory for the multiscreen on | |
14 # which it was invoked. Specifying -f and a filename will cause | |
15 # a file suitable for input to the mapkey(M) utility to be generated. | |
16 # Specifying -o will produce, on stdout, a file suitable for input | |
17 # to the mapkey(M) utility but will NOT modify the in-memory | |
18 # map. | |
19 # I personally run this utility once, and replace /usr/lib/keyboard/keys | |
20 # with the result. You may prefer to run it in your .profile or | |
21 # via a shell-script which will in turn invoke emacs. | |
22 # | |
23 # begin 600 emap.c.gz | |
24 # M'XL("'F'RC " V5M87 N8P"=5VUOXC@0_LZOF$W50KIT%^AM[U2V>Z*HW%9+ | |
25 # MH2JL=*<6H6"<$A&27&RZ1;?][S=C.X&$%'H7(>S8\\R;QS.3 R]@_G+*X;.0 | |
26 # M4R_\,/M2.DB7EH&'J]DUL1(?Y2KB8GMYSE>3T(D5H,2?)8\#8#,GAN,PDD[\ | |
27 # MV$P6O4 "+GG!M$HCCV,UXJ]9*FF$(UC@++BX'\$%_%,"L(*E;U5I(L*9F<AG | |
28 # M/>'I))1F$ORM)PZ;Z\F$&_A$Z'%F2 .S_I2\1WID<2+.C)X>ISXW$U9/)HUD | |
29 # M<II,?C','"->K()$UXGA[R0K"T.R-#M<,#UQC:J/9HS-& BK])*ZJH1^][V | |
30 # M0X7\RJJ [PLG&DLXGB_L$CE/2$=Z3!]&_'3?^'0V:N*R>I>BKA:J.&ND6\1* | |
31 # MSJO@H1C$1S$NN%!!XBI8AY^FJ$45F-U4S&,6K: 2/Q&+NJT0;ABC/GAVM29X | |
32 # M\!EZWV_&@V%K>#7 ]_?O;20!=:[TR#D2DO;V?''R!=6_9Z,/:,*]-U+,Z/%0 | |
33 # M^O5@/+B]:E^WNE!!VZIDK&?;AF+-CQ[QPY-LAAK/[8W5+ UZP!$<OHU[_=OS | |
34 # MU YM8Q!&EMV$2<R=>;,(TQU\S6-\,?-<N1MVMPV+WP!K=[_E8<P/,;AWHGK; | |
35 # MJ& _:K"-$OM1E\/691XVD<YD-ZK5'>9!CK_/A06@>"^J/>QN>5#&_AY1!:AX | |
36 # M/ZSWYZ"]Y7B!&:48->6NL_3E>691ASS&+WRYH$-IWW5L.#JBB(;/9J5KVSG, | |
37 # MUEU%J8=3O*L$.TGYO(>ZW<Q!N8^Z9V1VOO=R,G'E#3)=O,(9H9K1:T+WL=-7 | |
38 # M,4/U4LK/,HPV+SE91.K#:2.K>.9XTGHCYZ.,K-0KE*0NH-[X=0<7:\I]JQAN | |
39 # MG(I*;#BTWCC+>3-G>OE0'+(R>=+(+S^4RS;\_ GI^T/9MN%WL!X>+#@'2U6( | |
40 # M@@?S8%ZO78)KSX>U!E;5+"YQ]@9Q@^K!R9F@>J"S_]HOCDRJ0L.LOZAJ8E)S | |
41 # M92/;N_ZC@".H/==.[<WBH"Y4=]P_+V!K]7/WR1"W"XG;Q<2]0N)>,?%E(?%E | |
42 # MCIB\%'.YQ$X'"=!RM)KJZ<+Q EVDL1G"TJ7+]S&^/.DRK?NBBQIV0^Y%+:W0 | |
43 # MQVZ ]1'[!(<)=)>@TFC1;N>Z>X6[-$UK/OXG]=NK,E4^?\P\'[N#>K;H,N3Y | |
44 # MR*GI@HK6AQ1!<T+W?!W#%+J, NVJWUE':B:'I2&NZ,IA>4T71BBD_@JA6RZN | |
45 # MW*&[":)'V9_TD&^^^$F,6M^%\\C/ ?T7P?U).,(_%UST"=WXT4.0N['/GB1G | |
46 # MY26IT"6G>2&3/E3PE/ZX[H^_7?UUT[JMPA%R5QAMX#OL?++^CK#-I:;(6J/6 | |
47 # M@K70S"TA/N0*]$66$;G'#2..L>0&>%X_LJ>E(!4=&G:MV,6I+NUPZ4\A"+%O | |
48 # MQ".5',*EC)92>:?(+8V"9. FCG91F8--=V9W8-#N5^3"AN0[@6(U\H)')0TP | |
49 # M*<S@BF(<%EPZ)Q3I.YBUEC)<4%?K^/X* SG@,>H_A:4@CG+&]7DOI>=[<O4Z | |
50 # MHQTB_N>#G<@.I@+[_F(<"["OR+!9#V:/NK =O%F(GV(PH5P%JJ=,@>;-<"O< | |
51 # MHV\$_A8_O:3]/=/]/</BBK[^$(SIS/ ]W]]36+[;;-Z16C7OO?[=36NSH2 V | |
52 # M&_T_-GHCLW.1W]/8$?S$HO%;K;E/U.#K=6>X4]+@:V=4*$E!WRRH/;S;;1&V | |
53 # ME,5R"/D?[.D@HWT&*5D%!NF-1-2&+,K8:<;)9-%#NHWJXU)_;#*3\S+))Y.P | |
54 # MMH)H#XOBM.?B=PX&=,75'Y9K)6O;]6R=FF^+4O.ZH*W3\ZNI\;8@3>]*A/2O | |
55 # .]VJJY/\+D-=?N%H1 #5 | |
56 # | |
57 # end | |
58 # | |
59 # The output below is the result of running emap on the default | |
60 # SCO keymap as installed by SCO. It is the equivalent of the | |
61 # at.ibm.usa key map file in /usr/lib/keyboard/keys, but with | |
62 # the meta bits set properly. Note that for meta keys to work correctly | |
63 # you MUST edit /etc/termcap and /usr/lib/terminfo/terminfo.src and add | |
64 # the 'km' capability for the 'ansi' entry, and you must disable channel | |
65 # mapping in /etc/default/mapchan for the console screens. Extra function | |
66 # keys have been added, and the matching emacsstrs.sco is in this | |
67 # directory to make a map which scoansi.el can use. So the sequence of | |
68 # events should be: | |
69 # a) Copy this file to /usr/lib/keyboard/keys | |
70 # b) copy emacsstrs.sco to /usr/lib/keyboard/stings | |
71 # c) run mapkey and mapstr and set MAPKEY=yes in /etc/default/boot | |
72 # d) Add mapstr -f to your /etc/profile or your shell startup | |
73 # e) Arrange to have scoansi.el loaded from your .emacs file. | |
74 # | |
75 # alt | |
76 # scan cntrl alt alt cntrl lock | |
77 # code base shift cntrl shift alt shift cntrl shift state | |
78 # | |
79 0 nop nop nop nop nop nop nop nop O | |
80 1 esc esc esc esc 0x9b 0x9b 0x9b 0x9b O | |
81 2 '1' '!' nop nop 0xb1 0xa1 nop nop O | |
82 3 '2' '@' nul nul 0xb2 0xc0 0x80 0x80 O | |
83 4 '3' '#' nop nop 0xb3 0xa3 nop nop O | |
84 5 '4' '$' nop nop 0xb4 0xa4 nop nop O | |
85 6 '5' '%' nop nop 0xb5 0xa5 nop nop O | |
86 7 '6' '^' rs rs 0xb6 0xde 0x9e 0x9e O | |
87 8 '7' '&' nop nop 0xb7 0xa6 nop nop O | |
88 9 '8' '*' nop nop 0xb8 0xaa nop nop O | |
89 10 '9' '(' nop nop 0xb9 0xa8 nop nop O | |
90 11 '0' ')' nop nop 0xb0 0xa9 nop nop O | |
91 12 '-' '_' ns ns 0xad 0xdf 0x9f 0x9f O | |
92 13 '=' '+' nop nop 0xbd 0xab nop nop O | |
93 14 bs bs del del 0x88 0x88 0xff 0xff O | |
94 15 ht btab nop nop 0x89 btab nop nop O | |
95 16 'q' 'Q' dc1 dc1 0xf1 0xd1 0x91 0x91 C | |
96 17 'w' 'W' etb etb 0xf7 0xd7 0x97 0x97 C | |
97 18 'e' 'E' enq enq 0xe5 0xc5 0x85 0x85 C | |
98 19 'r' 'R' dc2 dc2 0xf2 0xd2 0x92 0x92 C | |
99 20 't' 'T' dc4 dc4 0xf4 0xd4 0x94 0x94 C | |
100 21 'y' 'Y' em em 0xf9 0xd9 0x99 0x99 C | |
101 22 'u' 'U' nak nak 0xf5 0xd5 0x95 0x95 C | |
102 23 'i' 'I' ht ht 0xe9 0xc9 0x89 0x89 C | |
103 24 'o' 'O' si si 0xef 0xcf 0x8f 0x8f C | |
104 25 'p' 'P' dle dle 0xf0 0xd0 0x90 0x90 C | |
105 26 '[' '{' esc esc 0xdb 0xfb 0x9b 0x9b O | |
106 27 ']' '}' gs gs 0xdd 0xfd 0x9d 0x9d O | |
107 28 cr cr nl nl 0x8d 0x8d 0x8a 0x8a O | |
108 29 ctrl ctrl ctrl ctrl ctrl ctrl ctrl ctrl O | |
109 30 'a' 'A' soh soh 0xe1 0xc1 0x81 0x81 C | |
110 31 's' 'S' dc3 dc3 0xf3 0xd3 0x93 0x93 C | |
111 32 'd' 'D' eot eot 0xe4 0xc4 0x84 0x84 C | |
112 33 'f' 'F' ack ack 0xe6 0xc6 0x86 0x86 C | |
113 34 'g' 'G' bel bel 0xe7 0xc7 0x87 0x87 C | |
114 35 'h' 'H' bs bs 0xe8 0xc8 0x88 0x88 C | |
115 36 'j' 'J' nl nl 0xea 0xca 0x8a 0x8a C | |
116 37 'k' 'K' vt vt 0xeb 0xcb 0x8b 0x8b C | |
117 38 'l' 'L' np np 0xec 0xcc 0x8c 0x8c C | |
118 39 ';' ':' nop nop 0xbb 0xba nop nop O | |
119 40 '\'' '"' nop nop 0xa7 0xa2 nop nop O | |
120 41 '`' '~' nop nop 0xe0 0xfe nop nop O | |
121 42 lshift lshift lshift lshift lshift lshift lshift lshift O | |
122 43 '\\' '|' fs fs 0xdc 0xfc 0x9c 0x9c O | |
123 44 'z' 'Z' sub sub 0xfa 0xda 0x9a 0x9a C | |
124 45 'x' 'X' can can 0xf8 0xd8 0x98 0x98 C | |
125 46 'c' 'C' etx etx 0xe3 0xc3 0x83 0x83 C | |
126 47 'v' 'V' syn syn 0xf6 0xd6 0x96 0x96 C | |
127 48 'b' 'B' stx stx 0xe2 0xc2 0x82 0x82 C | |
128 49 'n' 'N' so so 0xee 0xce 0x8e 0x8e C | |
129 50 'm' 'M' cr cr 0xed 0xcd 0x8d 0x8d C | |
130 51 ',' '<' nop nop 0xac 0xbc nop nop O | |
131 52 '.' '>' nop nop 0xae 0xbe nop nop O | |
132 53 '/' '?' nop nop 0xaf 0xbf nop nop O | |
133 54 rshift rshift rshift rshift rshift rshift rshift rshift O | |
134 55 '*' '*' nscr nscr 0xaa 0xaa nscr nscr O | |
135 56 alt alt alt alt alt alt alt alt O | |
136 57 ' ' ' ' ' ' ' ' 0xa0 0xa0 0xa0 0xa0 O | |
137 58 clock clock clock clock clock clock clock clock O | |
138 59 fkey1 fkey13 fkey25 fkey37 scr1 scr11 scr1 scr11 O | |
139 60 fkey2 fkey14 fkey26 fkey38 scr2 scr12 scr2 scr12 O | |
140 61 fkey3 fkey15 fkey27 fkey39 scr3 scr13 scr3 scr13 O | |
141 62 fkey4 fkey16 fkey28 fkey40 scr4 scr14 scr4 scr14 O | |
142 63 fkey5 fkey17 fkey29 fkey41 scr5 scr15 scr5 scr15 O | |
143 64 fkey6 fkey18 fkey30 fkey42 scr6 scr16 scr6 scr16 O | |
144 65 fkey7 fkey19 fkey31 fkey43 scr7 scr7 scr7 scr7 O | |
145 66 fkey8 fkey20 fkey32 fkey44 scr8 scr8 scr8 scr8 O | |
146 67 fkey9 fkey21 fkey33 fkey45 scr9 scr9 scr9 scr9 O | |
147 68 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O | |
148 69 nlock nlock dc3 dc3 nlock nlock 0x93 0x93 O | |
149 70 slock slock del del slock slock 0xff 0xff O | |
150 71 fkey49 '7' '7' '7' '7' 0xb7 0xb7 0xb7 N | |
151 72 fkey50 '8' '8' '8' '8' 0xb8 0xb8 0xb8 N | |
152 73 fkey51 '9' '9' '9' '9' 0xb9 0xb9 0xb9 N | |
153 74 fkey52 '-' '-' '-' '-' 0xad 0xad 0xad N | |
154 75 fkey53 '4' '4' '4' '4' 0xb4 0xb4 0xb4 N | |
155 76 fkey54 '5' '5' '5' '5' 0xb5 0xb5 0xb5 N | |
156 77 fkey55 '6' '6' '6' '6' 0xb6 0xb6 0xb6 N | |
157 78 fkey56 '+' '+' '+' '+' 0xab 0xab 0xab N | |
158 79 fkey57 '1' '1' '1' '1' 0xb1 0xb1 0xb1 N | |
159 80 fkey58 '2' '2' '2' '2' 0xb2 0xb2 0xb2 N | |
160 81 fkey59 '3' '3' '3' '3' 0xb3 0xb3 0xb3 N | |
161 82 fkey60 '0' '0' '0' '0' 0xb0 0xb0 0xb0 N | |
162 83 del '.' del del 0xff 0xae 0xff 0xff N | |
163 84 ns ns ns ns 0x9f 0x9f 0x9f 0x9f O | |
164 85 nop nop nop nop nop nop nop nop O | |
165 86 nop nop nop nop nop nop nop nop O | |
166 87 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O | |
167 88 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O | |
168 89 nop nop nop nop nop nop nop nop O | |
169 90 nop nop nop nop nop nop nop nop O | |
170 91 nop nop nop nop nop nop nop nop O | |
171 92 nop nop nop nop nop nop nop nop O | |
172 93 nop nop nop nop nop nop nop nop O | |
173 94 nop nop nop nop nop nop nop nop O | |
174 95 nop nop nop nop nop nop nop nop O | |
175 96 fkey50 fkey62 fkey72 fkey50 fkey82 fkey62 fkey72 fkey50 N | |
176 97 fkey53 fkey64 fkey74 fkey53 fkey84 fkey64 fkey74 fkey53 N | |
177 98 fkey58 fkey67 fkey77 fkey58 fkey87 fkey67 fkey77 fkey58 N | |
178 99 fkey55 fkey65 fkey75 fkey55 fkey85 fkey65 fkey75 fkey55 N | |
179 100 fkey49 fkey61 fkey71 fkey49 fkey81 fkey61 fkey71 fkey49 N | |
180 101 nop nop nop nop nop nop nop nop O | |
181 102 fkey57 fkey66 fkey76 fkey57 fkey86 fkey66 fkey76 fkey57 N | |
182 103 fkey59 fkey68 fkey78 fkey59 fkey88 fkey68 fkey78 fkey59 N | |
183 104 fkey60 fkey69 fkey79 fkey60 fkey89 fkey69 fkey79 fkey60 N | |
184 105 del del del del 0xff 0xff 0xff 0xff N | |
185 106 fkey54 fkey54 fkey93 fkey54 fkey96 fkey54 fkey54 fkey54 N | |
186 107 nop nop nop nop nop nop nop nop O | |
187 108 nop nop nop nop nop nop nop nop O | |
188 109 nop nop nop nop nop nop nop nop O | |
189 110 nop nop nop nop nop nop nop nop O | |
190 111 nop nop nop nop nop nop nop nop O | |
191 112 nop nop nop nop nop nop nop nop O | |
192 113 nop nop nop nop nop nop nop nop O | |
193 114 nop nop nop nop nop nop nop nop O | |
194 115 nop nop nop nop nop nop nop nop O | |
195 116 nop nop nop nop nop nop nop nop O | |
196 117 nop nop nop nop nop nop nop nop O | |
197 118 nop nop nop nop nop nop nop nop O | |
198 119 nop nop nop nop nop nop nop nop O | |
199 120 nop nop nop nop nop nop nop nop O | |
200 121 nop nop nop nop nop nop nop nop O | |
201 122 nop nop nop nop nop nop nop nop O | |
202 123 nop nop nop nop nop nop nop nop O | |
203 124 nop nop nop nop nop nop nop nop O | |
204 125 nop nop nop nop nop nop nop nop O | |
205 126 nop nop nop nop nop nop nop nop O | |
206 127 nop nop nop nop nop nop nop nop O | |
207 128 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O | |
208 129 ralt ralt ralt ralt ralt ralt ralt ralt O | |
209 130 fkey60 fkey69 fkey79 fkey60 fkey89 fkey69 fkey79 fkey60 O | |
210 131 del del del del 0xff 0xff 0xff 0xff N | |
211 132 fkey49 fkey61 fkey71 fkey49 fkey81 fkey61 fkey71 fkey49 N | |
212 133 fkey57 fkey66 fkey76 fkey57 fkey86 fkey66 fkey76 fkey57 N | |
213 134 fkey51 fkey63 fkey73 fkey51 fkey83 fkey63 fkey73 fkey51 N | |
214 135 fkey59 fkey68 fkey78 fkey59 fkey88 fkey68 fkey78 fkey59 N | |
215 136 fkey55 fkey65 fkey75 fkey55 fkey85 fkey65 fkey75 fkey55 N | |
216 137 fkey53 fkey64 fkey74 fkey53 fkey84 fkey64 fkey74 fkey53 N | |
217 138 fkey50 fkey62 fkey72 fkey50 fkey82 fkey62 fkey72 fkey50 N | |
218 139 fkey58 fkey67 fkey77 fkey58 fkey87 fkey67 fkey77 fkey58 N | |
219 140 '/' nop nop nop 0xaf nop nop nop O | |
220 141 cr cr nl nl 0x8d 0x8d 0x8a 0x8a O |