__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
#!/usr/bin/perl
# ckbcomp -- translate XKB layout to loadkeys or kbdcontrol format
# Copyright © 2005,2006 Anton Zinoviev <anton@lml.bas.bg>
# 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 of the License, 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.
# If you have not received a copy of the GNU General Public License
# along with this program, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
use warnings 'all';
use strict;
my $debug_flag = 1;
sub debug {
if ($debug_flag) {
print STDERR "@_";
}
}
sub warning {
print STDERR "WARNING: @_";
}
########### ARGUMENTS ###############################################
my $charmap;
my $compose_charmap;
my $acm;
my $verbosity = 0;
my $installdir=$0;
$installdir =~ s|/[^/]*$||g;
if ($installdir =~ m|/bin$|) {
$installdir =~ s|/bin$||;
} else {
$installdir .= "/..";
}
if ( $installdir eq '' || ! -d "$installdir/bin") {
$installdir = '/usr';
}
my @xdirs = ('/etc/console-setup/ckb',
"$installdir/etc/console-setup/ckb",
'/usr/local/share/X11/xkb',
'/usr/share/X11/xkb',
'/etc/X11/xkb');
my $keycodes;
my $symbols;
my $rules;
my $model;
my @layouts;
my @variants = ();
my @options = ();
my $compact = 0;
my $backspace = '';
my $freebsd = 0;
while (@ARGV) {
$_ = shift @ARGV;
if (s/^-//) {
if (/^charmap$/) {
if ($charmap) {
die "$0: No more than one -charmap option is allowed\n";
}
$charmap = $ARGV[0];
shift @ARGV;
} elsif (/^ccharmap$/) {
if ($compose_charmap) {
die "$0: No more than one -ccharmap option is allowed\n";
}
$compose_charmap = $ARGV[0];
shift @ARGV;
} elsif (/^v(erbose)?$/) {
if ($verbosity) {
die "$0: No more than one -verbose option is allowed\n";
}
if ($ARGV[0] =~ /^[0-9]|10$/) {
$verbosity = $ARGV[0];
shift @ARGV;
} else {
$verbosity = 5;
}
} elsif (/^I(.*)$/) {
@xdirs = ($1, @xdirs);
} elsif (/^keycodes$/) {
if ($keycodes) {
die "$0: No more than one -keycodes option is allowed\n";
}
$keycodes = $ARGV[0];
shift @ARGV;
} elsif (/^symbols$/) {
if ($symbols) {
die "$0: No more than one -symbols option is allowed\n";
}
$symbols = $ARGV[0];
shift @ARGV;
} elsif (/^rules$/) {
if ($rules) {
die "$0: No more than one -rules option is allowed\n";
}
$rules = $ARGV[0];
shift @ARGV;
} elsif (/^model$/) {
if ($model) {
die "$0: No more than one -model option is allowed\n";
}
$model = $ARGV[0];
$model =~ s/[[:space:]]//g;
shift @ARGV;
} elsif (/^layout$/) {
if (@layouts) {
die "$0: No more than one -layout option is allowed\n";
}
$ARGV[0] =~ s/[[:space:]]//g;
@layouts = split (/,/, $ARGV[0], -1);
shift @ARGV;
} elsif (/^variant$/) {
if (@variants) {
die "$0: No more than one -variant option is allowed\n";
}
$ARGV[0] =~ s/[[:space:]]//g;
@variants = split (/,/, $ARGV[0], -1);
shift @ARGV;
} elsif (/^option$/) {
$ARGV[0] =~ s/[[:space:]]//g;
@options = (@options, split (/,/, $ARGV[0], -1));
shift @ARGV;
} elsif (/^help$|^-help$|^\?$/) {
print <<EOT;
Usage: ckbcomp [args] [<layout> [<variant> [<option> ... ]]]
Where legal args are:
-?,-help Print this message
-charmap <name> Specifies the encoding to use
-ccharmap <name> Specifies the encoding to use for compose sequences
-I<dir> Add <dir> to list of directories to be used
-keycodes <name> Specifies keycodes component name
-symbols <name> Specifies symbols component name
-rules <name> Name of rules file to use
-model <name> Specifies model used to choose component names
-layout <name> Specifies layout used to choose component names
-variant <name> Specifies layout variant used to choose component names
-option <name> Adds an option used to choose component names
-v[erbose] [<lvl>] Sets verbosity (1..10). Higher values yield
more messages
-compact Generate compact keymap
-freebsd Generate keymap for FreeBSD
-backspace bs|del Backspace is BS (^h) or DEL (^?)
EOT
exit 0;
} elsif (/^compact$/) {
$compact = 1;
} elsif (/^freebsd$/) {
$freebsd = 1;
} elsif (/^backspace$/) {
$backspace = $ARGV[0];
if ($backspace ne 'del' && $backspace ne 'bs') {
die "$0: Option -backspace accepts either del or bs\n";
}
shift @ARGV;
} else {
die "$0: Unknown option -$_\n";
}
} else {
if (! @layouts) {
$_ =~ s/[[:space:]]//g;
@layouts = split (/,/, $_, -1);
@layouts = ('us') if (! @layouts);
} elsif (! @variants) {
$_ =~ s/[[:space:]]//g;
@variants = split (/,/, $_, -1);
@variants = ('') if (! @variants);
} else {
$_ =~ s/[[:space:]]//g;
@options = (@options, split (/,/, $_, -1));
}
}
}
$rules = 'base' if (! $rules);
$model = 'pc104' if (! $model);
$backspace = $freebsd ? 'bs' : 'del' if (! $backspace);
########### GLOBAL VARIABLES #########################################
my %rules_variables = (); # The variables defined in the rules file
my $arch = 'at'; # The name of a mapping between X key codes and kernel
# keycodes
my %acmtable; # Unicode -> legacy code (defined only when -charmap is given)
my $KEYMAP = ''; # This variable contains the generated keymap
my $broken_caps = 0; # In unicode mode Caps_Lock doesn't work for non-ASCII
# letters. 1 = the keymap contains non-ascii letters.
# See http://bugzilla.kernel.org/show_bug.cgi?id=7746#c21
my %keycodes_table; # x keysym -> x key code
my %aliases; # x keysym -> x keysym
my %symbols_table; # x key code -> [[symbols for group0,...],
# [symbols for group1,...], ...]
my %types_table; # x key code -> key type (i.e. "TWO_LEVEL")
my $augment_method = 1; # Constants for different XKB include methods
my $override_method = 2;
my $replace_method = 3;
my $alternate_method = 4;
my $ignore_method = 5; # This is not a XKB method and means "don't include"
my $filename; # The name of the currently read file
my $stream = ''; # The contents of $filename that still has not been parsed
my $method = $override_method; # The current method (by default "override")
my $base_group = 0; # The base group to include in (for "symbols" files only)
my %kernel_modifiers = ( # Linux
'Shift' => 0x01,
'Shift_Lock' => 0x01,
'AltGr' => 0x02,
'AltGr_Lock' => 0x02,
'Control' => 0x04,
'Control_Lock' => 0x04,
'Alt' => 0x08,
'Alt_Lock' => 0x08,
'ShiftL' => 0x10,
'ShiftL_Lock' => 0x10,
'ShiftR' => 0x20,
'ShiftR_Lock' => 0x20,
'CtrlL' => 0x40,
'CtrlL_Lock' => 0x40,
'CtrlR' => 0x80,
'CtrlR_Lock' => 0x80,
# FreeBSD
'lshift' => 0x01,
'rshift' => 0x01,
'shifta' => 0x01, # is this correct ?
'lshifta' => 0x01, # is this correct ?
'rshifta' => 0x01, # is this correct ?
'alt' => 0x02,
'lalt' => 0x02,
'ralt' => 0x02,
'alta' => 0x02, # is this correct ?
'lalta' => 0x02, # is this correct ?
'ralta' => 0x02, # is this correct ?
'ctrl' => 0x04,
'lctrl' => 0x04,
'rctrl' => 0x04,
'ctrla' => 0x04, # is this correct ?
'lctrla' => 0x04, # is this correct ?
'rctrla' => 0x04, # is this correct ?
'alock' => 0x10,
'ashift' => 0x10,
);
my @modifier_combinations = ('plain',
'shift',
'altgr',
'altgr shift',
'control',
'control shift',
'control altgr',
'control altgr shift',
'alt',
'alt shift',
'alt altgr',
'alt altgr shift',
'alt control',
'alt control shift',
'alt control altgr',
'alt control altgr shift',
'shiftl',
'shiftl shift',
'shiftl altgr',
'shiftl altgr shift',
'shiftl control',
'shiftl control shift',
'shiftl control altgr',
'shiftl control altgr shift',
'shiftl alt',
'shiftl alt shift',
'shiftl alt altgr',
'shiftl alt altgr shift',
'shiftl alt control',
'shiftl alt control shift',
'shiftl alt control altgr',
'shiftl alt control altgr shift',
'shiftr',
'shiftr shift',
'shiftr altgr',
'shiftr altgr shift',
'shiftr control',
'shiftr control shift',
'shiftr control altgr',
'shiftr control altgr shift',
'shiftr alt',
'shiftr alt shift',
'shiftr alt altgr',
'shiftr alt altgr shift',
'shiftr alt control',
'shiftr alt control shift',
'shiftr alt control altgr',
'shiftr alt control altgr shift',
'shiftr shiftl',
'shiftr shiftl shift',
'shiftr shiftl altgr',
'shiftr shiftl altgr shift',
'shiftr shiftl control',
'shiftr shiftl control shift',
'shiftr shiftl control altgr',
'shiftr shiftl control altgr shift',
'shiftr shiftl alt',
'shiftr shiftl alt shift',
'shiftr shiftl alt altgr',
'shiftr shiftl alt altgr shift',
'shiftr shiftl alt control',
'shiftr shiftl alt control shift',
'shiftr shiftl alt control altgr',
'shiftr shiftl alt control altgr shift',
'ctrll',
'ctrll shift',
'ctrll altgr',
'ctrll altgr shift',
'ctrll control',
'ctrll control shift',
'ctrll control altgr',
'ctrll control altgr shift',
'ctrll alt',
'ctrll alt shift',
'ctrll alt altgr',
'ctrll alt altgr shift',
'ctrll alt control',
'ctrll alt control shift',
'ctrll alt control altgr',
'ctrll alt control altgr shift',
'ctrll shiftl',
'ctrll shiftl shift',
'ctrll shiftl altgr',
'ctrll shiftl altgr shift',
'ctrll shiftl control',
'ctrll shiftl control shift',
'ctrll shiftl control altgr',
'ctrll shiftl control altgr shift',
'ctrll shiftl alt',
'ctrll shiftl alt shift',
'ctrll shiftl alt altgr',
'ctrll shiftl alt altgr shift',
'ctrll shiftl alt control',
'ctrll shiftl alt control shift',
'ctrll shiftl alt control altgr',
'ctrll shiftl alt control altgr shift',
'ctrll shiftr',
'ctrll shiftr shift',
'ctrll shiftr altgr',
'ctrll shiftr altgr shift',
'ctrll shiftr control',
'ctrll shiftr control shift',
'ctrll shiftr control altgr',
'ctrll shiftr control altgr shift',
'ctrll shiftr alt',
'ctrll shiftr alt shift',
'ctrll shiftr alt altgr',
'ctrll shiftr alt altgr shift',
'ctrll shiftr alt control',
'ctrll shiftr alt control shift',
'ctrll shiftr alt control altgr',
'ctrll shiftr alt control altgr shift',
'ctrll shiftr shiftl',
'ctrll shiftr shiftl shift',
'ctrll shiftr shiftl altgr',
'ctrll shiftr shiftl altgr shift',
'ctrll shiftr shiftl control',
'ctrll shiftr shiftl control shift',
'ctrll shiftr shiftl control altgr',
'ctrll shiftr shiftl control altgr shift',
'ctrll shiftr shiftl alt',
'ctrll shiftr shiftl alt shift',
'ctrll shiftr shiftl alt altgr',
'ctrll shiftr shiftl alt altgr shift',
'ctrll shiftr shiftl alt control',
'ctrll shiftr shiftl alt control shift',
'ctrll shiftr shiftl alt control altgr',
'ctrll shiftr shiftl alt control altgr shift',
);
# Some Unicodes cause the kernel/loadkeys to issue "Segmentation fault"
# kbd 1.15-1 (deliberately) fails on anything in the range 0xf000..0xffff;
# see http://bugs.debian.org/500116.
my %forbidden;
{
for my $i (0xf000..0xffff) {
$forbidden{$i} = 1;
}
}
my %xkbsym_table = (
'space' => '0020',
'exclam' => '0021',
'quotedbl' => '0022',
'numbersign' => '0023',
'dollar' => '0024',
'percent' => '0025',
'ampersand' => '0026',
'apostrophe' => '0027',
'quoteright' => '0027',
'parenleft' => '0028',
'parenlef' => '0028', # Is this recognised by X ? (speling error)
'parenright' => '0029',
'asterisk' => '002a',
'asterix' => '002a', # Is this recognised by X ? (speling error)
'plus' => '002b',
'comma' => '002c',
'minus' => '002d',
'period' => '002e',
'slash' => '002f',
'0' => '0030',
'1' => '0031',
'2' => '0032',
'3' => '0033',
'4' => '0034',
'5' => '0035',
'6' => '0036',
'7' => '0037',
'8' => '0038',
'9' => '0039',
'colon' => '003a',
'semicolon' => '003b',
'less' => '003c',
'equal' => '003d',
'greater' => '003e',
'question' => '003f',
'at' => '0040',
'A' => '0041',
'B' => '0042',
'C' => '0043',
'D' => '0044',
'E' => '0045',
'F' => '0046',
'G' => '0047',
'H' => '0048',
'I' => '0049',
'J' => '004a',
'K' => '004b',
'L' => '004c',
'M' => '004d',
'N' => '004e',
'O' => '004f',
'P' => '0050',
'Q' => '0051',
'R' => '0052',
'S' => '0053',
'T' => '0054',
'U' => '0055',
'V' => '0056',
'W' => '0057',
'X' => '0058',
'Y' => '0059',
'Z' => '005a',
'bracketleft' => '005b',
'backslash' => '005c',
'backlash' => '005c', # Is this recognised by X ? (speling error)
'bracketright' => '005d',
'circumflex' => '005e',
'asciicircum' => '005e',
'underscore' => '005f',
'grave' => '0060',
'quoteleft' => '0060',
'a' => '0061',
'b' => '0062',
'c' => '0063',
'd' => '0064',
'e' => '0065',
'f' => '0066',
'g' => '0067',
'h' => '0068',
'i' => '0069',
'j' => '006a',
'k' => '006b',
'l' => '006c',
'm' => '006d',
'n' => '006e',
'o' => '006f',
'p' => '0070',
'q' => '0071',
'r' => '0072',
's' => '0073',
't' => '0074',
'u' => '0075',
'v' => '0076',
'w' => '0077',
'x' => '0078',
'y' => '0079',
'z' => '007a',
'braceleft' => '007b',
'pipe' => '007c', # Is this recognised by X ?
'bar' => '007c',
'braceright' => '007d',
'asciitilde' => '007e',
'nobreakspace' => '00a0',
'exclamdown' => '00a1',
'cent' => '00a2',
'sterling' => '00a3',
'currency' => '00a4',
'yen' => '00a5',
'brokenbar' => '00a6',
'section' => '00a7',
'diaeresis' => '00a8',
'copyright' => '00a9',
'ordfeminine' => '00aa',
'guillemotleft' => '00ab',
'notsign' => '00ac',
'hyphen' => '00ad',
'registered' => '00ae',
'macron' => '00af',
'overbar' => '00af',
'degree' => '00b0',
'plusminus' => '00b1',
'twosuperior' => '00b2',
'threesuperior' => '00b3',
'acute' => '0027', # APOSTROPHE instead of ACUTE ACCENT
'mu' => '00b5',
'paragraph' => '00b6',
'periodcentered' => '00b7',
'cedilla' => '00b8',
'onesuperior' => '00b9',
'masculine' => '00ba',
'guillemotright' => '00bb',
'onequarter' => '00bc',
'onehalf' => '00bd',
'threequarters' => '00be',
'questiondown' => '00bf',
'Agrave' => '00c0',
'Aacute' => '00c1',
'Acircumflex' => '00c2',
'Atilde' => '00c3',
'Adiaeresis' => '00c4',
'Aring' => '00c5',
'AE' => '00c6',
'Ccedilla' => '00c7',
'Egrave' => '00c8',
'Eacute' => '00c9',
'Ecircumflex' => '00ca',
'Ediaeresis' => '00cb',
'Igrave' => '00cc',
'Iacute' => '00cd',
'Icircumflex' => '00ce',
'Idiaeresis' => '00cf',
'ETH' => '00d0',
'Eth' => '00d0',
'Ntilde' => '00d1',
'Ograve' => '00d2',
'Oacute' => '00d3',
'Ocircumflex' => '00d4',
'Otilde' => '00d5',
'Odiaeresis' => '00d6',
'multiply' => '00d7',
'Ooblique' => '00d8',
'Oslash' => '00d8',
'Ugrave' => '00d9',
'Uacute' => '00da',
'Ucircumflex' => '00db',
'Udiaeresis' => '00dc',
'Yacute' => '00dd',
'THORN' => '00de',
'Thorn' => '00de',
'ssharp' => '00df',
'agrave' => '00e0',
'aacute' => '00e1',
'acircumflex' => '00e2',
'atilde' => '00e3',
'adiaeresis' => '00e4',
'aring' => '00e5',
'ae' => '00e6',
'ccedilla' => '00e7',
'egrave' => '00e8',
'eacute' => '00e9',
'ecircumflex' => '00ea',
'ediaeresis' => '00eb',
'igrave' => '00ec',
'iacute' => '00ed',
'icircumflex' => '00ee',
'idiaeresis' => '00ef',
'eth' => '00f0',
'ntilde' => '00f1',
'ograve' => '00f2',
'oacute' => '00f3',
'ocircumflex' => '00f4',
'otilde' => '00f5',
'odiaeresis' => '00f6',
'division' => '00f7',
'oslash' => '00f8',
'ooblique' => '00f8',
'ugrave' => '00f9',
'uacute' => '00fa',
'ucircumflex' => '00fb',
'udiaeresis' => '00fc',
'yacute' => '00fd',
'thorn' => '00fe',
'ydiaeresis' => '00ff',
'Amacron' => '0100',
'amacron' => '0101',
'Abreve' => '0102',
'abreve' => '0103',
'Aogonek' => '0104',
'aogonek' => '0105',
'Cacute' => '0106',
'cacute' => '0107',
'Ccircumflex' => '0108',
'ccircumflex' => '0109',
'Cabovedot' => '010a',
'cabovedot' => '010b',
'Ccaron' => '010c',
'ccaron' => '010d',
'Dcaron' => '010e',
'dcaron' => '010f',
'Dstroke' => '0110',
'dstroke' => '0111',
'Emacron' => '0112',
'emacron' => '0113',
'Eabovedot' => '0116',
'eabovedot' => '0117',
'Eogonek' => '0118',
'eogonek' => '0119',
'Ecaron' => '011a',
'ecaron' => '011b',
'Gcircumflex' => '011c',
'gcircumflex' => '011d',
'Gbreve' => '011e',
'gbreve' => '011f',
'Gabovedot' => '0120',
'gabovedot' => '0121',
'Gcedilla' => '0122',
'gcedilla' => '0123',
'Hcircumflex' => '0124',
'hcircumflex' => '0125',
'Hstroke' => '0126',
'hstroke' => '0127',
'Itilde' => '0128',
'itilde' => '0129',
'Imacron' => '012a',
'imacron' => '012b',
'Ibreve' => '012c',
'ibreve' => '012d',
'Iogonek' => '012e',
'iogonek' => '012f',
'Iabovedot' => '0130',
'idotless' => '0131',
'Jcircumflex' => '0134',
'jcircumflex' => '0135',
'Kcedilla' => '0136',
'kcedilla' => '0137',
'kra' => '0138',
'Lacute' => '0139',
'lacute' => '013a',
'Lcedilla' => '013b',
'lcedilla' => '013c',
'Lcaron' => '013d',
'lcaron' => '013e',
'Lstroke' => '0141',
'lstroke' => '0142',
'Nacute' => '0143',
'nacute' => '0144',
'Ncedilla' => '0145',
'ncedilla' => '0146',
'Ncaron' => '0147',
'ncaron' => '0148',
'ENG' => '014a',
'eng' => '014b',
'Omacron' => '014c',
'omacron' => '014d',
'Odoubleacute' => '0150',
'odoubleacute' => '0151',
'OE' => '0152',
'oe' => '0153',
'Racute' => '0154',
'racute' => '0155',
'Rcedilla' => '0156',
'rcedilla' => '0157',
'Rcaron' => '0158',
'rcaron' => '0159',
'Sacute' => '015a',
'sacute' => '015b',
'Scircumflex' => '015c',
'scircumflex' => '015d',
'Scedilla' => '015e',
'scedilla' => '015f',
'Scaron' => '0160',
'scaron' => '0161',
'Tcedilla' => '0162',
'tcedilla' => '0163',
'Tcaron' => '0164',
'tcaron' => '0165',
'Tslash' => '0166',
'tslash' => '0167',
'Utilde' => '0168',
'utilde' => '0169',
'Umacron' => '016a',
'umacron' => '016b',
'Ubreve' => '016c',
'ubreve' => '016d',
'Uring' => '016e',
'uring' => '016f',
'Udoubleacute' => '0170',
'udoubleacute' => '0171',
'Uogonek' => '0172',
'uogonek' => '0173',
'Wcircumflex' => '0174',
'wcircumflex' => '0175',
'Ycircumflex' => '0176',
'ycircumflex' => '0177',
'Ydiaeresis' => '0178',
'Zacute' => '0179',
'zacute' => '017a',
'Zabovedot' => '017b',
'zabovedot' => '017c',
'Zcaron' => '017d',
'zcaron' => '017e',
'SCHWA' => '018f',
'Schwa' => '018f', # Is this recognised by X ?
'function' => '0192',
'Obarred' => '019f',
'Ohorn' => '01a0', # Is this recognised by X ?
'ohorn' => '01a1', # Is this recognised by X ?
'Uhorn' => '01af',
'uhorn' => '01b0',
'Zstroke' => '01b5',
'zstroke' => '01b6',
'EZH' => '01b7',
'Ezh' => '01b7',
'Ocaron' => '01d1',
'ocaron' => '01d2',
'Gcaron' => '01e6', # Is this recognised by X ?
'gcaron' => '01e7', # Is this recognised by X ?
'schwa' => '0259', # Is this recognised by X ?
'obarred' => '0275',
'ezh' => '0292',
'caron' => '02c7',
'breve' => '02d8',
'abovedot' => '02d9',
'ogonek' => '02db',
'doubleacute' => '02dd',
'Greek_accentdieresis' => '0385',
'Greek_ALPHAaccent' => '0386',
'Greek_EPSILONaccent' => '0388',
'Greek_ETAaccent' => '0389',
'Greek_IOTAaccent' => '038a',
'Greek_OMICRONaccent' => '038c',
'Greek_UPSILONaccent' => '038e',
'Greek_OMEGAaccent' => '038f',
'Greek_iotaaccentdieresis' => '0390',
'Greek_ALPHA' => '0391',
'Greek_BETA' => '0392',
'Greek_GAMMA' => '0393',
'Greek_DELTA' => '0394',
'Greek_EPSILON' => '0395',
'Greek_ZETA' => '0396',
'Greek_ETA' => '0397',
'Greek_THETA' => '0398',
'Greek_IOTA' => '0399',
'Greek_KAPPA' => '039a',
'Greek_LAMBDA' => '039b',
'Greek_LAMDA' => '039b', # Is this recognised by X ? (speling error)
'Greek_MU' => '039c',
'Greek_NU' => '039d',
'Greek_XI' => '039e',
'Greek_OMICRON' => '039f',
'Greek_PI' => '03a0',
'Greek_RHO' => '03a1',
'Greek_SIGMA' => '03a3',
'Greek_TAU' => '03a4',
'Greek_UPSILON' => '03a5',
'Greek_PHI' => '03a6',
'Greek_CHI' => '03a7',
'Greek_PSI' => '03a8',
'Greek_OMEGA' => '03a9',
'Greek_IOTAdiaeresis' => '03aa',
'Greek_UPSILONdieresis' => '03ab',
'Greek_alphaaccent' => '03ac',
'Greek_epsilonaccent' => '03ad',
'Greek_etaaccent' => '03ae',
'Greek_iotaaccent' => '03af',
'Greek_upsilonaccentdieresis' => '03b0',
'Greek_alpha' => '03b1',
'Greek_beta' => '03b2',
'Greek_gamma' => '03b3',
'Greek_delta' => '03b4',
'Greek_epsilon' => '03b5',
'Greek_zeta' => '03b6',
'Greek_eta' => '03b7',
'Greek_theta' => '03b8',
'Greek_iota' => '03b9',
'Greek_kappa' => '03ba',
'Greek_lambda' => '03bb',
'Greek_lamda' => '03bb', # Is this recognised by X ? (speling error)
'Greek_mu' => '03bc',
'Greek_nu' => '03bd',
'Greek_xi' => '03be',
'Greek_omicron' => '03bf',
'Greek_pi' => '03c0',
'Greek_rho' => '03c1',
'Greek_finalsmallsigma' => '03c2',
'Greek_sigma' => '03c3',
'Greek_tau' => '03c4',
'Greek_upsilon' => '03c5',
'Greek_phi' => '03c6',
'Greek_chi' => '03c7',
'Greek_psi' => '03c8',
'Greek_omega' => '03c9',
'Greek_iotadieresis' => '03ca',
'Greek_upsilondieresis' => '03cb',
'Greek_omicronaccent' => '03cc',
'Greek_upsilonaccent' => '03cd',
'Greek_omegaaccent' => '03ce',
'Cyrillic_IO' => '0401',
'Serbian_DJE' => '0402',
'Macedonia_GJE' => '0403',
'Ukrainian_IE' => '0404',
'Macedonia_DSE' => '0405',
'Ukrainian_I' => '0406',
'Ukrainian_YI' => '0407',
'Cyrillic_JE' => '0408',
'Cyrillic_LJE' => '0409',
'Cyrillic_NJE' => '040a',
'Serbian_TSHE' => '040b',
'Macedonia_KJE' => '040c',
'Byelorussian_SHORTU' => '040e',
'Cyrillic_DZHE' => '040f',
'Cyrillic_A' => '0410',
'Cyrillic_BE' => '0411',
'Cyrillic_VE' => '0412',
'Cyrillic_GHE' => '0413',
'Cyrillic_DE' => '0414',
'Cyrillic_IE' => '0415',
'Cyrillic_ZHE' => '0416',
'Cyrillic_ZH' => '0416',
'Cyrillic_ZE' => '0417',
'Cyrillic_I' => '0418',
'Cyrillic_SHORTI' => '0419',
'Cyrillic_KA' => '041a',
'Cyrillic_EL' => '041b',
'Cyrillic_EM' => '041c',
'Cyrillic_EN' => '041d',
'Cyrillic_N' => '041d',
'Cyrillic_O' => '041e',
'Cyrillic_PE' => '041f',
'Cyrillic_ER' => '0420',
'Cyrillic_ES' => '0421',
'Cyrillic_TE' => '0422',
'Cyrillic_U' => '0423',
'Cyrillic_EF' => '0424',
'Cyrillic_F' => '0424',
'Cyrillic_HA' => '0425',
'Cyrillic_TSE' => '0426',
'Cyrillic_CHE' => '0427',
'Cyrillic_SHA' => '0428',
'Cyrillic_SHCHA' => '0429',
'Cyrillic_HARDSIGN' => '042a',
'Cyrillic_YERU' => '042b',
'Cyrillic_UI' => '042b',
'Cyrillic_SOFTSIGN' => '042c',
'Cyrillic_E' => '042d',
'Cyrillic_YU' => '042e',
'Cyrillic_YA' => '042f',
'Cyrillic_a' => '0430',
'Cyrillic_be' => '0431',
'Cyrillic_ve' => '0432',
'Cyrillic_ghe' => '0433',
'Cyrillic_de' => '0434',
'Cyrillic_ie' => '0435',
'Cyrillic_zhe' => '0436',
'Cyrillic_zh' => '0436',
'Cyrillic_ze' => '0437',
'Cyrillic_i' => '0438',
'Cyrillic_shorti' => '0439',
'Cyrillic_ka' => '043a',
'Cyrillic_el' => '043b',
'Cyrillic_em' => '043c',
'Cyrillic_en' => '043d',
'Cyrillic_n' => '043d',
'Cyrillic_o' => '043e',
'Cyrillic_pe' => '043f',
'Cyrillic_er' => '0440',
'Cyrillic_es' => '0441',
'Cyrillic_te' => '0442',
'Cyrillic_u' => '0443',
'Cyrillic_ef' => '0444',
'Cyrillic_f' => '0444',
'Cyrillic_ha' => '0445',
'Cyrillic_tse' => '0446',
'Cyrillic_che' => '0447',
'Cyrillic_sha' => '0448',
'Cyrillic_shcha' => '0449',
'Cyrillic_hardsign' => '044a',
'Cyrillic_yeru' => '044b',
'Cyrillic_ui' => '044b',
'Cyrillic_softsign' => '044c',
'Cyrillic_e' => '044d',
'Cyrillic_yu' => '044e',
'Cyrillic_ya' => '044f',
'Cyrillic_io' => '0451',
'Serbian_dje' => '0452',
'Macedonia_gje' => '0453',
'Ukrainian_ie' => '0454',
'Macedonia_dse' => '0455',
'Ukrainian_i' => '0456',
'Ukrainian_yi' => '0457',
'Cyrillic_je' => '0458',
'Cyrillic_lje' => '0459',
'Cyrillic_nje' => '045a',
'Serbian_tshe' => '045b',
'Macedonia_kje' => '045c',
'Byelorussian_shortu' => '045e',
'Cyrillic_dzhe' => '045f',
'Ukrainian_GHE_WITH_UPTURN' => '0490', # Is this recognised by X ?
'Ukrainian_ghe_with_upturn' => '0491', # Is this recognised by X ?
'Cyrillic_GHE_bar' => '0492', # Is this recognised by X ?
'Cyrillic_ghe_bar' => '0493', # Is this recognised by X ?
'Cyrillic_ZHE_descender' => '0496',
'Cyrillic_zhe_descender' => '0497',
'Cyrillic_KA_descender' => '049a', # Is this recognised by X ?
'Cyrillic_ka_descender' => '049b', # Is this recognised by X ?
'Cyrillic_KA_vertstroke' => '049c', # Is this recognised by X ?
'Cyrillic_ka_vertstroke' => '049d', # Is this recognised by X ?
'Cyrillic_EN_descender' => '04a2', # Is this recognised by X ?
'Cyrillic_en_descender' => '04a3', # Is this recognised by X ?
'Cyrillic_U_straight' => '04ae', # Is this recognised by X ?
'Cyrillic_u_straight' => '04af', # Is this recognised by X ?
'Cyrillic_U_straight_bar' => '04b0', # Is this recognised by X ?
'Cyrillic_u_straight_bar' => '04b1', # Is this recognised by X ?
'Cyrillic_HA_descender' => '04b2', # Is this recognised by X ?
'Cyrillic_ha_descender' => '04b3', # Is this recognised by X ?
'Cyrillic_CHE_descender' => '04b6',
'Cyrillic_che_descender' => '04b7',
'Cyrillic_CHE_vertstroke' => '04b8', # Is this recognised by X ?
'Cyrillic_che_vertstroke' => '04b9', # Is this recognised by X ?
'Cyrillic_SHHA' => '04ba', # Is this recognised by X ?
'Cyrillic_shha' => '04bb', # Is this recognised by X ?
'Cyrillic_SCHWA' => '04d8', # Is this recognised by X ?
'Cyrillic_schwa' => '04d9', # Is this recognised by X ?
'Cyrillic_I_macron' => '04e2',
'Cyrillic_i_macron' => '04e3',
'Cyrillic_O_bar' => '04e8', # Is this recognised by X ?
'Cyrillic_o_bar' => '04e9', # Is this recognised by X ?
'Cyrillic_U_macron' => '04ee',
'Cyrillic_u_macron' => '04ef',
'Armenian_AYB' => '0531',
'Armenian_BEN' => '0532',
'Armenian_GIM' => '0533',
'Armenian_DA' => '0534',
'Armenian_YECH' => '0535',
'Armenian_ZA' => '0536',
'Armenian_E' => '0537',
'Armenian_AT' => '0538',
'Armenian_TO' => '0539',
'Armenian_ZHE' => '053a',
'Armenian_INI' => '053b',
'Armenian_LYUN' => '053c',
'Armenian_KHE' => '053d',
'Armenian_TSA' => '053e',
'Armenian_KEN' => '053f',
'Armenian_HO' => '0540',
'Armenian_DZA' => '0541',
'Armenian_GHAT' => '0542',
'Armenian_TCHE' => '0543',
'Armenian_MEN' => '0544',
'Armenian_HI' => '0545',
'Armenian_NU' => '0546',
'Armenian_SHA' => '0547',
'Armenian_VO' => '0548',
'Armenian_CHA' => '0549',
'Armenian_PE' => '054a',
'Armenian_JE' => '054b',
'Armenian_RA' => '054c',
'Armenian_SE' => '054d',
'Armenian_VEV' => '054e',
'Armenian_TYUN' => '054f',
'Armenian_RE' => '0550',
'Armenian_TSO' => '0551',
'Armenian_VYUN' => '0552',
'Armenian_PYUR' => '0553',
'Armenian_KE' => '0554',
'Armenian_O' => '0555',
'Armenian_FE' => '0556',
'Armenian_apostrophe' => '055a',
'Armenian_accent' => '055b',
'Armenian_shesht' => '055b',
'Armenian_amanak' => '055c',
'Armenian_exclam' => '055c',
'Armenian_but' => '055d',
'Armenian_separation_mark' => '055d',
'Armenian_paruyk' => '055e',
'Armenian_question' => '055e',
'Armenian_ayb' => '0561',
'Armenian_ben' => '0562',
'Armenian_gim' => '0563',
'Armenian_da' => '0564',
'Armenian_yech' => '0565',
'Armenian_za' => '0566',
'Armenian_e' => '0567',
'Armenian_at' => '0568',
'Armenian_to' => '0569',
'Armenian_zhe' => '056a',
'Armenian_ini' => '056b',
'Armenian_lyun' => '056c',
'Armenian_khe' => '056d',
'Armenian_tsa' => '056e',
'Armenian_ken' => '056f',
'Armenian_ho' => '0570',
'Armenian_dza' => '0571',
'Armenian_ghat' => '0572',
'Armenian_tche' => '0573',
'Armenian_men' => '0574',
'Armenian_hi' => '0575',
'Armenian_nu' => '0576',
'Armenian_sha' => '0577',
'Armenian_vo' => '0578',
'Armenian_cha' => '0579',
'Armenian_pe' => '057a',
'Armenian_je' => '057b',
'Armenian_ra' => '057c',
'Armenian_se' => '057d',
'Armenian_vev' => '057e',
'Armenian_tyun' => '057f',
'Armenian_re' => '0580',
'Armenian_tso' => '0581',
'Armenian_vyun' => '0582',
'Armenian_pyur' => '0583',
'Armenian_ke' => '0584',
'Armenian_o' => '0585',
'Armenian_fe' => '0586',
'Armenian_ligature_ew' => '0587',
'Armenian_full_stop' => '0589',
'Armenian_verjaket' => '0589',
'Armenian_hyphen' => '058a',
'Armenian_yentamna' => '058a',
'hebrew_aleph' => '05d0',
'hebrew_bet' => '05d1',
'hebrew_gimel' => '05d2',
'hebrew_dalet' => '05d3',
'hebrew_he' => '05d4',
'hebrew_waw' => '05d5',
'hebrew_zain' => '05d6',
'hebrew_chet' => '05d7',
'hebrew_tet' => '05d8',
'hebrew_yod' => '05d9',
'hebrew_finalkaph' => '05da',
'hebrew_kaph' => '05db',
'hebrew_lamed' => '05dc',
'hebrew_finalmem' => '05dd',
'hebrew_mem' => '05de',
'hebrew_finalnun' => '05df',
'hebrew_nun' => '05e0',
'hebrew_samech' => '05e1',
'hebrew_ayin' => '05e2',
'hebrew_finalpe' => '05e3',
'hebrew_pe' => '05e4',
'hebrew_finalzade' => '05e5',
'hebrew_zade' => '05e6',
'hebrew_qoph' => '05e7',
'hebrew_resh' => '05e8',
'hebrew_shin' => '05e9',
'hebrew_taw' => '05ea',
'Arabic_comma' => '060c',
'Arabic_semicolon' => '061b',
'Arabic_question_mark' => '061f',
'Arabic_hamza' => '0621',
'Arabic_maddaonalef' => '0622',
'Arabic_hamzaonalef' => '0623',
'Arabic_hamzaonwaw' => '0624',
'Arabic_hamzaunderalef' => '0625',
'Arabic_hamzaonyeh' => '0626',
'Arabic_alef' => '0627',
'Arabic_beh' => '0628',
'Arabic_tehmarbuta' => '0629',
'Arabic_teh' => '062a',
'Arabic_theh' => '062b',
'Arabic_jeem' => '062c',
'Arabic_hah' => '062d',
'Arabic_khah' => '062e',
'Arabic_dal' => '062f',
'Arabic_thal' => '0630',
'Arabic_ra' => '0631',
'Arabic_zain' => '0632',
'Arabic_seen' => '0633',
'Arabic_sheen' => '0634',
'Arabic_sad' => '0635',
'Arabic_dad' => '0636',
'Arabic_tah' => '0637',
'Arabic_zah' => '0638',
'Arabic_ain' => '0639',
'Arabic_ghain' => '063a',
'Arabic_tatweel' => '0640',
'Arabic_feh' => '0641',
'Arabic_qaf' => '0642',
'Arabic_kaf' => '0643',
'Arabic_lam' => '0644',
'Arabic_meem' => '0645',
'Arabic_noon' => '0646',
'Arabic_ha' => '0647',
'Arabic_heh' => '0647', # Is this recognised by X ?
'Arabic_waw' => '0648',
'Arabic_alefmaksura' => '0649',
'Arabic_yeh' => '064a',
'Arabic_fathatan' => '064b',
'Arabic_dammatan' => '064c',
'Arabic_kasratan' => '064d',
'Arabic_fatha' => '064e',
'Arabic_damma' => '064f',
'Arabic_kasra' => '0650',
'Arabic_shadda' => '0651',
'Arabic_sukun' => '0652',
'Arabic_madda_above' => '0653', # Is this recognised by X ?
'Arabic_hamza_above' => '0654', # Is this recognised by X ?
'Arabic_hamza_below' => '0655', # Is this recognised by X ?
'Arabic_0' => '0660',
'Arabic_1' => '0661',
'Arabic_2' => '0662',
'Arabic_3' => '0663',
'Arabic_4' => '0664',
'Arabic_5' => '0665',
'Arabic_6' => '0666',
'Arabic_7' => '0667',
'Arabic_8' => '0668',
'Arabic_9' => '0669',
'Arabic_percent' => '066a',
'Arabic_superscript_alef' => '0670', # Is this recognised by X ?
'Arabic_tteh' => '0679',
'Arabic_peh' => '067e',
'Arabic_tcheh' => '0686',
'Arabic_ddal' => '0688',
'Arabic_rreh' => '0691',
'Arabic_jeh' => '0698',
'Arabic_veh' => '06a4',
'Arabic_keheh' => '06a9',
'Arabic_gaf' => '06af',
'Arabic_noon_ghunna' => '06ba',
'Arabic_heh_doachashmee' => '06be',
'Arabic_heh_goal' => '06c1',
'Arabic_farsi_yeh' => '06cc',
'Farsi_yeh' => '06cc',
'Arabic_yeh_baree' => '06d2',
'Arabic_fullstop' => '06d4',
'Farsi_0' => '06f0',
'Farsi_1' => '06f1',
'Farsi_2' => '06f2',
'Farsi_3' => '06f3',
'Farsi_4' => '06f4',
'Farsi_5' => '06f5',
'Farsi_6' => '06f6',
'Farsi_7' => '06f7',
'Farsi_8' => '06f8',
'Farsi_9' => '06f9',
'Sinh_ng' => '0d82',
'Sinh_h2' => '0d83',
'Sinh_a' => '0d85',
'Sinh_aa' => '0d86',
'Sinh_ae' => '0d87',
'Sinh_aee' => '0d88',
'Sinh_i' => '0d89',
'Sinh_ii' => '0d8a',
'Sinh_u' => '0d8b',
'Sinh_uu' => '0d8c',
'Sinh_ri' => '0d8d',
'Sinh_rii' => '0d8e',
'Sinh_lu' => '0d8f',
'Sinh_luu' => '0d90',
'Sinh_e' => '0d91',
'Sinh_ee' => '0d92',
'Sinh_ai' => '0d93',
'Sinh_o' => '0d94',
'Sinh_oo' => '0d95',
'Sinh_au' => '0d96',
'Sinh_ka' => '0d9a',
'Sinh_kha' => '0d9b',
'Sinh_ga' => '0d9c',
'Sinh_gha' => '0d9d',
'Sinh_ng2' => '0d9e',
'Sinh_nga' => '0d9f',
'Sinh_ca' => '0da0',
'Sinh_cha' => '0da1',
'Sinh_ja' => '0da2',
'Sinh_jha' => '0da3',
'Sinh_nya' => '0da4',
'Sinh_jnya' => '0da5',
'Sinh_nja' => '0da6',
'Sinh_tta' => '0da7',
'Sinh_ttha' => '0da8',
'Sinh_dda' => '0da9',
'Sinh_ddha' => '0daa',
'Sinh_nna' => '0dab',
'Sinh_ndda' => '0dac',
'Sinh_tha' => '0dad',
'Sinh_thha' => '0dae',
'Sinh_dha' => '0daf',
'Sinh_dhha' => '0db0',
'Sinh_na' => '0db1',
'Sinh_ndha' => '0db3',
'Sinh_pa' => '0db4',
'Sinh_pha' => '0db5',
'Sinh_ba' => '0db6',
'Sinh_bha' => '0db7',
'Sinh_ma' => '0db8',
'Sinh_mba' => '0db9',
'Sinh_ya' => '0dba',
'Sinh_ra' => '0dbb',
'Sinh_la' => '0dbd',
'Sinh_va' => '0dc0',
'Sinh_sha' => '0dc1',
'Sinh_ssha' => '0dc2',
'Sinh_sa' => '0dc3',
'Sinh_ha' => '0dc4',
'Sinh_lla' => '0dc5',
'Sinh_fa' => '0dc6',
'Sinh_al' => '0dca',
'Sinh_aa2' => '0dcf',
'Sinh_ae2' => '0dd0',
'Sinh_aee2' => '0dd1',
'Sinh_i2' => '0dd2',
'Sinh_ii2' => '0dd3',
'Sinh_u2' => '0dd4',
'Sinh_uu2' => '0dd6',
'Sinh_ru2' => '0dd8',
'Sinh_e2' => '0dd9',
'Sinh_ee2' => '0dda',
'Sinh_ai2' => '0ddb',
'Sinh_o2' => '0ddc',
'Sinh_oo2' => '0ddd',
'Sinh_au2' => '0dde',
'Sinh_lu2' => '0ddf',
'Sinh_ruu2' => '0df2',
'Sinh_luu2' => '0df3',
'Thai_kokai' => '0e01',
'Thai_khokhai' => '0e02',
'Thai_khokhuat' => '0e03',
'Thai_khokhwai' => '0e04',
'Thai_khokhon' => '0e05',
'Thai_khorakhang' => '0e06',
'Thai_ngongu' => '0e07',
'Thai_chochan' => '0e08',
'Thai_choching' => '0e09',
'Thai_chochang' => '0e0a',
'Thai_soso' => '0e0b',
'Thai_chochoe' => '0e0c',
'Thai_yoying' => '0e0d',
'Thai_dochada' => '0e0e',
'Thai_topatak' => '0e0f',
'Thai_thothan' => '0e10',
'Thai_thonangmontho' => '0e11',
'Thai_thophuthao' => '0e12',
'Thai_nonen' => '0e13',
'Thai_dodek' => '0e14',
'Thai_totao' => '0e15',
'Thai_thothung' => '0e16',
'Thai_thothahan' => '0e17',
'Thai_thothong' => '0e18',
'Thai_nonu' => '0e19',
'Thai_bobaimai' => '0e1a',
'Thai_popla' => '0e1b',
'Thai_phophung' => '0e1c',
'Thai_fofa' => '0e1d',
'Thai_phophan' => '0e1e',
'Thai_fofan' => '0e1f',
'Thai_phosamphao' => '0e20',
'Thai_moma' => '0e21',
'Thai_yoyak' => '0e22',
'Thai_rorua' => '0e23',
'Thai_ru' => '0e24',
'Thai_loling' => '0e25',
'Thai_lu' => '0e26',
'Thai_wowaen' => '0e27',
'Thai_sosala' => '0e28',
'Thai_sorusi' => '0e29',
'Thai_sosua' => '0e2a',
'Thai_hohip' => '0e2b',
'Thai_lochula' => '0e2c',
'Thai_oang' => '0e2d',
'Thai_honokhuk' => '0e2e',
'Thai_paiyannoi' => '0e2f',
'Thai_saraa' => '0e30',
'Thai_maihanakat' => '0e31',
'Thai_saraaa' => '0e32',
'Thai_saraam' => '0e33',
'Thai_sarai' => '0e34',
'Thai_saraii' => '0e35',
'Thai_saraue' => '0e36',
'Thai_sarauee' => '0e37',
'Thai_sarau' => '0e38',
'Thai_sarauu' => '0e39',
'Thai_phinthu' => '0e3a',
'Thai_baht' => '0e3f',
'Thai_sarae' => '0e40',
'Thai_saraae' => '0e41',
'Thai_sarao' => '0e42',
'Thai_saraaimaimuan' => '0e43',
'Thai_saraaimaimalai' => '0e44',
'Thai_lakkhangyao' => '0e45',
'Thai_maiyamok' => '0e46',
'Thai_maitaikhu' => '0e47',
'Thai_maiek' => '0e48',
'Thai_maitho' => '0e49',
'Thai_maitri' => '0e4a',
'Thai_maichattawa' => '0e4b',
'Thai_thanthakhat' => '0e4c',
'Thai_nikhahit' => '0e4d',
'Thai_leksun' => '0e50',
'Thai_leknung' => '0e51',
'Thai_leksong' => '0e52',
'Thai_leksam' => '0e53',
'Thai_leksi' => '0e54',
'Thai_lekha' => '0e55',
'Thai_lekhok' => '0e56',
'Thai_lekchet' => '0e57',
'Thai_lekpaet' => '0e58',
'Thai_lekkao' => '0e59',
'Georgian_an' => '10d0',
'Georgian_ban' => '10d1',
'Georgian_gan' => '10d2',
'Georgian_don' => '10d3',
'Georgian_en' => '10d4',
'Georgian_vin' => '10d5',
'Georgian_zen' => '10d6',
'Georgian_tan' => '10d7',
'Georgian_in' => '10d8',
'Georgian_kan' => '10d9',
'Georgian_las' => '10da',
'Georgian_man' => '10db',
'Georgian_nar' => '10dc',
'Georgian_on' => '10dd',
'Georgian_par' => '10de',
'Georgian_zhar' => '10df',
'Georgian_rae' => '10e0',
'Georgian_san' => '10e1',
'Georgian_tar' => '10e2',
'Georgian_un' => '10e3',
'Georgian_phar' => '10e4',
'Georgian_khar' => '10e5',
'Georgian_ghan' => '10e6',
'Georgian_qar' => '10e7',
'Georgian_shin' => '10e8',
'Georgian_chin' => '10e9',
'Georgian_can' => '10ea',
'Georgian_jil' => '10eb',
'Georgian_cil' => '10ec',
'Georgian_char' => '10ed',
'Georgian_xan' => '10ee',
'Georgian_jhan' => '10ef',
'Georgian_hae' => '10f0',
'Georgian_he' => '10f1',
'Georgian_hie' => '10f2',
'Georgian_we' => '10f3',
'Georgian_har' => '10f4',
'Georgian_hoe' => '10f5',
'Georgian_fi' => '10f6',
'Hangul_J_Kiyeog' => '11a8',
'Hangul_J_SsangKiyeog' => '11a9',
'Hangul_J_KiyeogSios' => '11aa',
'Hangul_J_Nieun' => '11ab',
'Hangul_J_NieunJieuj' => '11ac',
'Hangul_J_NieunHieuh' => '11ad',
'Hangul_J_Dikeud' => '11ae',
'Hangul_J_Rieul' => '11af',
'Hangul_J_RieulKiyeog' => '11b0',
'Hangul_J_RieulMieum' => '11b1',
'Hangul_J_RieulPieub' => '11b2',
'Hangul_J_RieulSios' => '11b3',
'Hangul_J_RieulTieut' => '11b4',
'Hangul_J_RieulPhieuf' => '11b5',
'Hangul_J_RieulHieuh' => '11b6',
'Hangul_J_Mieum' => '11b7',
'Hangul_J_Pieub' => '11b8',
'Hangul_J_PieubSios' => '11b9',
'Hangul_J_Sios' => '11ba',
'Hangul_J_SsangSios' => '11bb',
'Hangul_J_Ieung' => '11bc',
'Hangul_J_Jieuj' => '11bd',
'Hangul_J_Cieuc' => '11be',
'Hangul_J_Khieuq' => '11bf',
'Hangul_J_Tieut' => '11c0',
'Hangul_J_Phieuf' => '11c1',
'Hangul_J_Hieuh' => '11c2',
'Hangul_J_PanSios' => '11eb',
'Hangul_J_KkogjiDalrinIeung' => '11f0',
'Hangul_J_YeorinHieuh' => '11f9',
'Babovedot' => '1e02', # Is this recognised by X ?
'babovedot' => '1e03', # Is this recognised by X ?
'Dabovedot' => '1e0a', # Is this recognised by X ?
'dabovedot' => '1e0b', # Is this recognised by X ?
'Fabovedot' => '1e1e', # Is this recognised by X ?
'fabovedot' => '1e1f', # Is this recognised by X ?
'Lbelowdot' => '1e36',
'lbelowdot' => '1e37',
'Mabovedot' => '1e40', # Is this recognised by X ?
'mabovedot' => '1e41', # Is this recognised by X ?
'Pabovedot' => '1e56', # Is this recognised by X ?
'pabovedot' => '1e57', # Is this recognised by X ?
'Sabovedot' => '1e60', # Is this recognised by X ?
'sabovedot' => '1e61', # Is this recognised by X ?
'Tabovedot' => '1e6a', # Is this recognised by X ?
'tabovedot' => '1e6b', # Is this recognised by X ?
'Wgrave' => '1e80',
'wgrave' => '1e81',
'Wacute' => '1e82',
'wacute' => '1e83',
'Wdiaeresis' => '1e84',
'wdiaeresis' => '1e85',
'Xabovedot' => '1e8a',
'xabovedot' => '1e8b',
'Abelowdot' => '1ea0',
'abelowdot' => '1ea1',
'Ahook' => '1ea2',
'ahook' => '1ea3',
'Acircumflexacute' => '1ea4',
'acircumflexacute' => '1ea5',
'Acircumflexgrave' => '1ea6',
'acircumflexgrave' => '1ea7',
'Acircumflexhook' => '1ea8',
'acircumflexhook' => '1ea9',
'Acircumflextilde' => '1eaa',
'acircumflextilde' => '1eab',
'Acircumflexbelowdot' => '1eac',
'acircumflexbelowdot' => '1ead',
'Abreveacute' => '1eae',
'abreveacute' => '1eaf',
'Abrevegrave' => '1eb0',
'abrevegrave' => '1eb1',
'Abrevehook' => '1eb2',
'abrevehook' => '1eb3',
'Abrevetilde' => '1eb4',
'abrevetilde' => '1eb5',
'Abrevebelowdot' => '1eb6',
'abrevebelowdot' => '1eb7',
'Ebelowdot' => '1eb8',
'ebelowdot' => '1eb9',
'Ehook' => '1eba',
'ehook' => '1ebb',
'Etilde' => '1ebc',
'etilde' => '1ebd',
'Ecircumflexacute' => '1ebe',
'ecircumflexacute' => '1ebf',
'Ecircumflexgrave' => '1ec0',
'ecircumflexgrave' => '1ec1',
'Ecircumflexhook' => '1ec2',
'ecircumflexhook' => '1ec3',
'Ecircumflextilde' => '1ec4',
'ecircumflextilde' => '1ec5',
'Ecircumflexbelowdot' => '1ec6',
'ecircumflexbelowdot' => '1ec7',
'Ihook' => '1ec8',
'ihook' => '1ec9',
'Ibelowdot' => '1eca',
'ibelowdot' => '1ecb',
'Obelowdot' => '1ecc',
'obelowdot' => '1ecd',
'Ohook' => '1ece',
'ohook' => '1ecf',
'Ocircumflexacute' => '1ed0',
'ocircumflexacute' => '1ed1',
'Ocircumflexgrave' => '1ed2',
'ocircumflexgrave' => '1ed3',
'Ocircumflexhook' => '1ed4',
'ocircumflexhook' => '1ed5',
'Ocircumflextilde' => '1ed6',
'ocircumflextilde' => '1ed7',
'Ocircumflexbelowdot' => '1ed8',
'ocircumflexbelowdot' => '1ed9',
'Ohornacute' => '1eda',
'ohornacute' => '1edb',
'Ohorngrave' => '1edc',
'ohorngrave' => '1edd',
'Ohornhook' => '1ede',
'ohornhook' => '1edf',
'Ohorntilde' => '1ee0',
'ohorntilde' => '1ee1',
'Ohornbelowdot' => '1ee2',
'ohornbelowdot' => '1ee3',
'Ubelowdot' => '1ee4',
'ubelowdot' => '1ee5',
'Uhook' => '1ee6',
'uhook' => '1ee7',
'Uhornacute' => '1ee8',
'uhornacute' => '1ee9',
'Uhorngrave' => '1eea',
'uhorngrave' => '1eeb',
'Uhornhook' => '1eec',
'uhornhook' => '1eed',
'Uhorntilde' => '1eee',
'uhorntilde' => '1eef',
'Uhornbelowdot' => '1ef0',
'uhornbelowdot' => '1ef1',
'Ygrave' => '1ef2',
'ygrave' => '1ef3',
'Ybelowdot' => '1ef4',
'ybelowdot' => '1ef5',
'Yhook' => '1ef6',
'yhook' => '1ef7',
'Ytilde' => '1ef8',
'ytilde' => '1ef9',
'enspace' => '2002',
'emspace' => '2003',
'em3space' => '2004',
'em4space' => '2005',
'digitspace' => '2007',
'punctspace' => '2008',
'thinspace' => '2009',
'hairspace' => '200a',
'figdash' => '2012',
'endash' => '2013',
'emdash' => '2014',
'Greek_horizbar' => '2015',
'hebrew_doublelowline' => '2017',
'leftsinglequotemark' => '2018',
'rightsinglequotemark' => '2019',
'singlelowquotemark' => '201a',
'leftdoublequotemark' => '201c',
'rightdoublequotemark' => '201d',
'doublelowquotemark' => '201e',
'dagger' => '2020',
'doubledagger' => '2021',
'enfilledcircbullet' => '2022',
'doubbaselinedot' => '2025',
'ellipsis' => '2026',
'permille' => '2030',
'minutes' => '2032',
'seconds' => '2033',
'caret' => '2038',
'guilsinglleft' => '2039',
'guilsinglright' => '203a',
'overline' => '203e',
'zerosuperior' => '2070',
'foursuperior' => '2074',
'fivesuperior' => '2075',
'sixsuperior' => '2076',
'sevensuperior' => '2077',
'eightsuperior' => '2078',
'ninesuperior' => '2079',
'zerosubscript' => '2080',
'onesubscript' => '2081',
'twosubscript' => '2082',
'threesubscript' => '2083',
'foursubscript' => '2084',
'fivesubscript' => '2085',
'sixsubscript' => '2086',
'sevensubscript' => '2087',
'eightsubscript' => '2088',
'ninesubscript' => '2089',
'EcuSign' => '20a0',
'ColonSign' => '20a1',
'CruzeiroSign' => '20a2',
'FFrancSign' => '20a3',
'LiraSign' => '20a4',
'MillSign' => '20a5',
'NairaSign' => '20a6',
'PesetaSign' => '20a7',
'RupeeSign' => '20a8',
'WonSign' => '20a9',
'Korean_Won' => '20a9',
'NewSheqelSign' => '20aa',
'DongSign' => '20ab', # Is this recognised by X ?
'EuroSign' => '20ac',
'Euro' => '20ac',
'careof' => '2105',
'numerosign' => '2116',
'phonographcopyright' => '2117',
'prescription' => '211e',
'trademark' => '2122',
'onethird' => '2153',
'twothirds' => '2154',
'onefifth' => '2155',
'twofifths' => '2156',
'threefifths' => '2157',
'fourfifths' => '2158',
'onesixth' => '2159',
'fivesixths' => '215a',
'oneeighth' => '215b',
'threeeighths' => '215c',
'fiveeighths' => '215d',
'seveneighths' => '215e',
'leftarrow' => '2190',
'uparrow' => '2191',
'rightarrow' => '2192',
'downarrow' => '2193',
'implies' => '21d2',
'ifonlyif' => '21d4',
'partialderivative' => '2202',
'partdifferential' => '2202',
'emptyset' => '2205',
'nabla' => '2207',
'elementof' => '2208',
'notelementof' => '2209',
'containsas' => '220B',
'jot' => '2218',
'radical' => '221a',
'squareroot' => '221a',
'cuberoot' => '221b',
'fourthroot' => '221c',
'variation' => '221d',
'infinity' => '221e',
'logicaland' => '2227',
'upcaret' => '2227',
'downcaret' => '2228',
'logicalor' => '2228',
'intersection' => '2229',
'upshoe' => '2229',
'downshoe' => '222a',
'union' => '222a',
'integral' => '222b',
'dintegral' => '222c',
'tintegral' => '222d',
'therefore' => '2234',
'because' => '2235',
'approximate' => '223c',
'similarequal' => '2243',
'notapproxeq' => '2247',
'approxeq' => '2248',
'notidentical' => '2262',
'notequal' => '2260',
'identical' => '2261',
'stricteq' => '2263',
'lessthanequal' => '2264',
'greaterthanequal' => '2265',
'includedin' => '2282',
'leftshoe' => '2282',
'includes' => '2283',
'rightshoe' => '2283',
'lefttack' => '22a2',
'righttack' => '22a3',
'uptack' => '22a4',
'downtack' => '22a5',
'upstile' => '2308',
'downstile' => '230a',
'telephonerecorder' => '2315',
'topintegral' => '2320',
'botintegral' => '2321',
'leftanglebracket' => '2329',
'rightanglebracket' => '232a',
'quad' => '2395',
'topleftparens' => '239b',
'botleftparens' => '239d',
'toprightparens' => '239e',
'botrightparens' => '23a0',
'topleftsqbracket' => '23a1',
'botleftsqbracket' => '23a3',
'toprightsqbracket' => '23a4',
'botrightsqbracket' => '23a6',
'leftmiddlecurlybrace' => '23a8',
'rightmiddlecurlybrace' => '23ac',
'leftradical' => '23b7',
'horizlinescan1' => '23ba',
'horizlinescan3' => '23bb',
'horizlinescan7' => '23bc',
'horizlinescan9' => '23bd',
'ht' => '2409',
'lf' => '240a',
'vt' => '240b',
'ff' => '240c',
'cr' => '240d',
'nl' => '2424',
'horizconnector' => '2500',
'horizlinescan5' => '2500',
'vertbar' => '2502',
'vertconnector' => '2502',
'topleftradical' => '250c',
'upleftcorner' => '250c',
'uprightcorner' => '2510',
'lowleftcorner' => '2514',
'lowrightcorner' => '2518',
'leftt' => '251c',
'rightt' => '2524',
'topt' => '252c',
'bott' => '2534',
'crossinglines' => '253c',
'checkerboard' => '2592',
'enfilledsqbullet' => '25aa',
'enopensquarebullet' => '25ab',
'filledrectbullet' => '25ac',
'openrectbullet' => '25ad',
'emfilledrect' => '25ae',
'emopenrectangle' => '25af',
'filledtribulletup' => '25b2',
'opentribulletup' => '25b3',
'filledrighttribullet' => '25b6',
'rightopentriangle' => '25b7',
'filledtribulletdown' => '25bc',
'opentribulletdown' => '25bd',
'filledlefttribullet' => '25c0',
'leftopentriangle' => '25c1',
'soliddiamond' => '25c6',
'circle' => '25cb',
'emopencircle' => '25cb',
'emfilledcircle' => '25cf',
'enopencircbullet' => '25e6',
'openstar' => '2606',
'telephone' => '260e',
'signaturemark' => '2613',
'leftpointer' => '261c',
'rightpointer' => '261e',
'femalesymbol' => '2640',
'malesymbol' => '2642',
'club' => '2663',
'heart' => '2665',
'diamond' => '2666',
'musicalflat' => '266d',
'musicalsharp' => '266f',
'checkmark' => '2713',
'ballotcross' => '2717',
'latincross' => '271d',
'maltesecross' => '2720',
'braille_dots_1' => '2801',
'braille_dots_2' => '2802',
'braille_dots_12' => '2803',
'braille_dots_3' => '2804',
'braille_dots_13' => '2805',
'braille_dots_23' => '2806',
'braille_dots_123' => '2807',
'braille_dots_4' => '2808',
'braille_dots_14' => '2809',
'braille_dots_24' => '280a',
'braille_dots_124' => '280b',
'braille_dots_34' => '280c',
'braille_dots_134' => '280d',
'braille_dots_234' => '280e',
'braille_dots_1234' => '280f',
'braille_dots_5' => '2810',
'braille_dots_15' => '2811',
'braille_dots_25' => '2812',
'braille_dots_125' => '2813',
'braille_dots_35' => '2814',
'braille_dots_135' => '2815',
'braille_dots_235' => '2816',
'braille_dots_1235' => '2817',
'braille_dots_45' => '2818',
'braille_dots_145' => '2819',
'braille_dots_245' => '281a',
'braille_dots_1245' => '281b',
'braille_dots_345' => '281c',
'braille_dots_1345' => '281d',
'braille_dots_2345' => '281e',
'braille_dots_12345' => '281f',
'braille_dots_6' => '2820',
'braille_dots_16' => '2821',
'braille_dots_26' => '2822',
'braille_dots_126' => '2823',
'braille_dots_36' => '2824',
'braille_dots_136' => '2825',
'braille_dots_236' => '2826',
'braille_dots_1236' => '2827',
'braille_dots_46' => '2828',
'braille_dots_146' => '2829',
'braille_dots_246' => '282a',
'braille_dots_1246' => '282b',
'braille_dots_346' => '282c',
'braille_dots_1346' => '282d',
'braille_dots_2346' => '282e',
'braille_dots_12346' => '282f',
'braille_dots_56' => '2830',
'braille_dots_156' => '2831',
'braille_dots_256' => '2832',
'braille_dots_1256' => '2833',
'braille_dots_356' => '2834',
'braille_dots_1356' => '2835',
'braille_dots_2356' => '2836',
'braille_dots_12356' => '2837',
'braille_dots_456' => '2838',
'braille_dots_1456' => '2839',
'braille_dots_2456' => '283a',
'braille_dots_12456' => '283b',
'braille_dots_3456' => '283c',
'braille_dots_13456' => '283d',
'braille_dots_23456' => '283e',
'braille_dots_123456' => '283f',
'braille_dots_7' => '2840',
'braille_dots_17' => '2841',
'braille_dots_27' => '2842',
'braille_dots_127' => '2843',
'braille_dots_37' => '2844',
'braille_dots_137' => '2845',
'braille_dots_237' => '2846',
'braille_dots_1237' => '2847',
'braille_dots_47' => '2848',
'braille_dots_147' => '2849',
'braille_dots_247' => '284a',
'braille_dots_1247' => '284b',
'braille_dots_347' => '284c',
'braille_dots_1347' => '284d',
'braille_dots_2347' => '284e',
'braille_dots_12347' => '284f',
'braille_dots_57' => '2850',
'braille_dots_157' => '2851',
'braille_dots_257' => '2852',
'braille_dots_1257' => '2853',
'braille_dots_357' => '2854',
'braille_dots_1357' => '2855',
'braille_dots_2357' => '2856',
'braille_dots_12357' => '2857',
'braille_dots_457' => '2858',
'braille_dots_1457' => '2859',
'braille_dots_2457' => '285a',
'braille_dots_12457' => '285b',
'braille_dots_3457' => '285c',
'braille_dots_13457' => '285d',
'braille_dots_23457' => '285e',
'braille_dots_123457' => '285f',
'braille_dots_67' => '2860',
'braille_dots_167' => '2861',
'braille_dots_267' => '2862',
'braille_dots_1267' => '2863',
'braille_dots_367' => '2864',
'braille_dots_1367' => '2865',
'braille_dots_2367' => '2866',
'braille_dots_12367' => '2867',
'braille_dots_467' => '2868',
'braille_dots_1467' => '2869',
'braille_dots_2467' => '286a',
'braille_dots_12467' => '286b',
'braille_dots_3467' => '286c',
'braille_dots_13467' => '286d',
'braille_dots_23467' => '286e',
'braille_dots_123467' => '286f',
'braille_dots_567' => '2870',
'braille_dots_1567' => '2871',
'braille_dots_2567' => '2872',
'braille_dots_12567' => '2873',
'braille_dots_3567' => '2874',
'braille_dots_13567' => '2875',
'braille_dots_23567' => '2876',
'braille_dots_123567' => '2877',
'braille_dots_4567' => '2878',
'braille_dots_14567' => '2879',
'braille_dots_24567' => '287a',
'braille_dots_124567' => '287b',
'braille_dots_34567' => '287c',
'braille_dots_134567' => '287d',
'braille_dots_234567' => '287e',
'braille_dots_1234567' => '287f',
'braille_dots_8' => '2880',
'braille_dots_18' => '2881',
'braille_dots_28' => '2882',
'braille_dots_128' => '2883',
'braille_dots_38' => '2884',
'braille_dots_138' => '2885',
'braille_dots_238' => '2886',
'braille_dots_1238' => '2887',
'braille_dots_48' => '2888',
'braille_dots_148' => '2889',
'braille_dots_248' => '288a',
'braille_dots_1248' => '288b',
'braille_dots_348' => '288c',
'braille_dots_1348' => '288d',
'braille_dots_2348' => '288e',
'braille_dots_12348' => '288f',
'braille_dots_58' => '2890',
'braille_dots_158' => '2891',
'braille_dots_258' => '2892',
'braille_dots_1258' => '2893',
'braille_dots_358' => '2894',
'braille_dots_1358' => '2895',
'braille_dots_2358' => '2896',
'braille_dots_12358' => '2897',
'braille_dots_458' => '2898',
'braille_dots_1458' => '2899',
'braille_dots_2458' => '289a',
'braille_dots_12458' => '289b',
'braille_dots_3458' => '289c',
'braille_dots_13458' => '289d',
'braille_dots_23458' => '289e',
'braille_dots_123458' => '289f',
'braille_dots_68' => '28a0',
'braille_dots_168' => '28a1',
'braille_dots_268' => '28a2',
'braille_dots_1268' => '28a3',
'braille_dots_368' => '28a4',
'braille_dots_1368' => '28a5',
'braille_dots_2368' => '28a6',
'braille_dots_12368' => '28a7',
'braille_dots_468' => '28a8',
'braille_dots_1468' => '28a9',
'braille_dots_2468' => '28aa',
'braille_dots_12468' => '28ab',
'braille_dots_3468' => '28ac',
'braille_dots_13468' => '28ad',
'braille_dots_23468' => '28ae',
'braille_dots_123468' => '28af',
'braille_dots_568' => '28b0',
'braille_dots_1568' => '28b1',
'braille_dots_2568' => '28b2',
'braille_dots_12568' => '28b3',
'braille_dots_3568' => '28b4',
'braille_dots_13568' => '28b5',
'braille_dots_23568' => '28b6',
'braille_dots_123568' => '28b7',
'braille_dots_4568' => '28b8',
'braille_dots_14568' => '28b9',
'braille_dots_24568' => '28ba',
'braille_dots_124568' => '28bb',
'braille_dots_34568' => '28bc',
'braille_dots_134568' => '28bd',
'braille_dots_234568' => '28be',
'braille_dots_1234568' => '28bf',
'braille_dots_78' => '28c0',
'braille_dots_178' => '28c1',
'braille_dots_278' => '28c2',
'braille_dots_1278' => '28c3',
'braille_dots_378' => '28c4',
'braille_dots_1378' => '28c5',
'braille_dots_2378' => '28c6',
'braille_dots_12378' => '28c7',
'braille_dots_478' => '28c8',
'braille_dots_1478' => '28c9',
'braille_dots_2478' => '28ca',
'braille_dots_12478' => '28cb',
'braille_dots_3478' => '28cc',
'braille_dots_13478' => '28cd',
'braille_dots_23478' => '28ce',
'braille_dots_123478' => '28cf',
'braille_dots_578' => '28d0',
'braille_dots_1578' => '28d1',
'braille_dots_2578' => '28d2',
'braille_dots_12578' => '28d3',
'braille_dots_3578' => '28d4',
'braille_dots_13578' => '28d5',
'braille_dots_23578' => '28d6',
'braille_dots_123578' => '28d7',
'braille_dots_4578' => '28d8',
'braille_dots_14578' => '28d9',
'braille_dots_24578' => '28da',
'braille_dots_124578' => '28db',
'braille_dots_34578' => '28dc',
'braille_dots_134578' => '28dd',
'braille_dots_234578' => '28de',
'braille_dots_1234578' => '28df',
'braille_dots_678' => '28e0',
'braille_dots_1678' => '28e1',
'braille_dots_2678' => '28e2',
'braille_dots_12678' => '28e3',
'braille_dots_3678' => '28e4',
'braille_dots_13678' => '28e5',
'braille_dots_23678' => '28e6',
'braille_dots_123678' => '28e7',
'braille_dots_4678' => '28e8',
'braille_dots_14678' => '28e9',
'braille_dots_24678' => '28ea',
'braille_dots_124678' => '28eb',
'braille_dots_34678' => '28ec',
'braille_dots_134678' => '28ed',
'braille_dots_234678' => '28ee',
'braille_dots_1234678' => '28ef',
'braille_dots_5678' => '28f0',
'braille_dots_15678' => '28f1',
'braille_dots_25678' => '28f2',
'braille_dots_125678' => '28f3',
'braille_dots_35678' => '28f4',
'braille_dots_135678' => '28f5',
'braille_dots_235678' => '28f6',
'braille_dots_1235678' => '28f7',
'braille_dots_45678' => '28f8',
'braille_dots_145678' => '28f9',
'braille_dots_245678' => '28fa',
'braille_dots_1245678' => '28fb',
'braille_dots_345678' => '28fc',
'braille_dots_1345678' => '28fd',
'braille_dots_2345678' => '28fe',
'braille_dots_12345678' => '28ff',
'kana_comma' => '3001',
'kana_fullstop' => '3002',
'kana_openingbracket' => '300c',
'kana_closingbracket' => '300d',
'voicedsound' => '309b',
'semivoicedsound' => '309c',
'kana_a' => '30a1',
'kana_A' => '30a2',
'kana_i' => '30a3',
'kana_I' => '30a4',
'kana_u' => '30a5',
'kana_U' => '30a6',
'kana_e' => '30a7',
'kana_E' => '30a8',
'kana_o' => '30a9',
'kana_O' => '30aa',
'kana_KA' => '30ab',
'kana_KI' => '30ad',
'kana_KU' => '30af',
'kana_KE' => '30b1',
'kana_KO' => '30b3',
'kana_SA' => '30b5',
'kana_SHI' => '30b7',
'kana_SU' => '30b9',
'kana_SE' => '30bb',
'kana_SO' => '30bd',
'kana_TA' => '30bf',
'kana_CHI' => '30c1',
'kana_tsu' => '30c3',
'kana_TSU' => '30c4',
'kana_TE' => '30c6',
'kana_TO' => '30c8',
'kana_NA' => '30ca',
'kana_NI' => '30cb',
'kana_NU' => '30cc',
'kana_NE' => '30cd',
'kana_NO' => '30ce',
'kana_HA' => '30cf',
'kana_HI' => '30d2',
'kana_FU' => '30d5',
'kana_HE' => '30d8',
'kana_HO' => '30db',
'kana_MA' => '30de',
'kana_MI' => '30df',
'kana_MU' => '30e0',
'kana_ME' => '30e1',
'kana_MO' => '30e2',
'kana_ya' => '30e3',
'kana_YA' => '30e4',
'kana_yu' => '30e5',
'kana_YU' => '30e6',
'kana_yo' => '30e7',
'kana_YO' => '30e8',
'kana_RA' => '30e9',
'kana_RI' => '30ea',
'kana_RU' => '30eb',
'kana_RE' => '30ec',
'kana_RO' => '30ed',
'kana_WA' => '30ef',
'kana_WO' => '30f2',
'kana_N' => '30f3',
'kana_conjunctive' => '30fb',
'kana_middledot' => '30fb', # Is this recognised by X ?
'prolongedsound' => '30fc',
'Hangul_Kiyeog' => '3131',
'Hangul_SsangKiyeog' => '3132',
'Hangul_KiyeogSios' => '3133',
'Hangul_Nieun' => '3134',
'Hangul_NieunJieuj' => '3135',
'Hangul_NieunHieuh' => '3136',
'Hangul_Dikeud' => '3137',
'Hangul_SsangDikeud' => '3138',
'Hangul_Rieul' => '3139',
'Hangul_RieulKiyeog' => '313a',
'Hangul_RieulMieum' => '313b',
'Hangul_RieulPieub' => '313c',
'Hangul_RieulSios' => '313d',
'Hangul_RieulTieut' => '313e',
'Hangul_RieulPhieuf' => '313f',
'Hangul_RieulHieuh' => '3140',
'Hangul_Mieum' => '3141',
'Hangul_Pieub' => '3142',
'Hangul_SsangPieub' => '3143',
'Hangul_PieubSios' => '3144',
'Hangul_Sios' => '3145',
'Hangul_SsangSios' => '3146',
'Hangul_Ieung' => '3147',
'Hangul_Jieuj' => '3148',
'Hangul_SsangJieuj' => '3149',
'Hangul_Cieuc' => '314a',
'Hangul_Khieuq' => '314b',
'Hangul_Tieut' => '314c',
'Hangul_Phieuf' => '314d',
'Hangul_Hieuh' => '314e',
'Hangul_A' => '314f',
'Hangul_AE' => '3150',
'Hangul_YA' => '3151',
'Hangul_YAE' => '3152',
'Hangul_EO' => '3153',
'Hangul_E' => '3154',
'Hangul_YEO' => '3155',
'Hangul_YE' => '3156',
'Hangul_O' => '3157',
'Hangul_WA' => '3158',
'Hangul_WAE' => '3159',
'Hangul_OE' => '315a',
'Hangul_YO' => '315b',
'Hangul_U' => '315c',
'Hangul_WEO' => '315d',
'Hangul_WE' => '315e',
'Hangul_WI' => '315f',
'Hangul_YU' => '3160',
'Hangul_EU' => '3161',
'Hangul_YI' => '3162',
'Hangul_I' => '3163',
'Hangul_RieulYeorinHieuh' => '316d',
'Hangul_SunkyeongeumMieum' => '3171',
'Hangul_SunkyeongeumPieub' => '3178',
'Hangul_PanSios' => '317f',
'Hangul_KkogjiDalrinIeung' => '3181',
'Hangul_SunkyeongeumPhieuf' => '3184',
'Hangul_YeorinHieuh' => '3186',
'Hangul_AraeA' => '318d',
'Hangul_AraeAE' => '318e',
);
if ($freebsd) {
%xkbsym_table =
(%xkbsym_table,
# Control symbols
'BackSpace' => 'bs', # 0008
'Tab' => 'ht', # 0009
'Linefeed' => 'nl', # 000a
'Return' => 'cr', # 000d
'Escape' => 'esc', # 001b
# Keypad keys
'KP_Multiply' => '\'*\'',
'KP_Add' => 'fkey56',
'KP_Seprator' => '\',\'', # Is this recognised by X ?
'KP_Separator' => '\',\'',
'KP_Subtract' => 'fkey52',
'KP_Decimal' => '\'.\'',
'KP_Divide' => '\'/\'',
'KP_0' => '\'0\'',
'KP_1' => '\'1\'',
'KP_2' => '\'2\'',
'KP_3' => '\'3\'',
'KP_4' => '\'4\'',
'KP_5' => '\'5\'',
'KP_6' => '\'6\'',
'KP_7' => '\'7\'',
'KP_8' => '\'8\'',
'KP_9' => '\'9\'',
'KP_Enter' => 'cr',
'KP_Home' => 'fkey49',
'KP_Left' => 'fkey53',
'KP_Up' => 'fkey50',
'KP_Right' => 'fkey55',
'KP_Down' => 'fkey58',
'KP_Prior' => 'fkey51',
'KP_Page_Up' => 'fkey51',
'KP_Next' => 'fkey59',
'KP_Page_Down' => 'fkey59',
'KP_End' => 'fkey57',
'KP_Begin' => 'fkey54',
'KP_Insert' => 'fkey60',
'KP_Delete' => 'del',
'KP_Space' => 'sp',
'KP_Equal' => '\'=\'',
'KP_Tab' => 'ht',
'KP_F1' => 'fkey01',
'KP_F2' => 'fkey02',
'KP_F3' => 'fkey03',
'KP_F4' => 'fkey04',
# Dead symbols
'dead_grave' => 'dgra',
'SunFA_Grave' => 'dgra_grave', # Is this recognised by X ?
'dead_acute' => 'dacu',
'SunFA_Acute' => 'dacu', # Is this recognised by X ?
'dead_circumflex' => 'dcir',
'SunFA_Circum' => 'dcir', # Is this recognised by X ?
'dead_tilde' => 'dtil',
'SunFA_Tilde' => 'dtil',
'dead_breve' => 'dbre',
'dead_diaeresis' => 'ddia',
'SunFA_Diaeresis' => 'ddia', # Is this recognised by X ?
'dead_doubleacute' => 'ddac',
'dead_caron' => 'dcar',
'dead_V' => 'dcar', # Is this correct?
'dead_cedilla' => 'dced',
'SunFA_Cedilla' => 'dced', # Is this recognised by X ?
'dead_ogonek' => 'dogo',
'dead_macron' => 'dmac',
'dead_abovedot' => 'ddot',
'dead_abovering' => 'drin',
'dead_stroke' => 'nop',
'dead_belowdot' => '0323', # ???? Vietnamese
'dead_hook' => 'dsla', # ???? Vietnamese
'dead_belowcomma' => 'nop',
'dead_currency' => 'nop',
'dead_doublegrave' => 'nop',
'dead_invertedbreve' => 'nop',
'dead_iota' => '03b9', # ???? Greek
'dead_horn' => '031b', # ???? Greek
'dead_psili' => 'nop', # ???? Greek
'dead_dasia' => 'nop', # ???? Greek
'dead_greek' => 'fe8c',
# Modifiers
'Multi_key' => 'nop',
'Mode_switch' => 'ashift',
'script_switch' => 'nop',
'Shift_L' => 'lshift',
'Shift_R' => 'rshift',
'Control_L' => 'lctrl',
'Control_R' => 'rctrl',
'Caps_Lock' => 'clock',
'Shift_Lock' => 'clock',
'Meta_L' => 'meta',
'Meta_R' => 'meta',
'Alt_L' => 'lalt',
'Alt_R' => 'ralt',
'Super_L' => 'fkey62',
'Super_R' => 'fkey63',
'Hyper_L' => 'meta',
'Hyper_R' => 'meta',
'ISO_Lock' => 'clock',
'ISO_Level2_Latch' => 'lshift',
'ISO_Level3_Shift' => 'alt',
'ISO_Level3_Latch' => 'alt',
'ISO_Level3_Lock' => 'alta',
'ISO_Level5_Shift' => 'alt',
'ISO_Level5_Latch' => 'alt',
'ISO_Level5_Lock' => 'alta',
'ISO_Group_Shift' => 'ashift',
'ISO_Group_Latch' => 'ashift',
'ISO_Group_Lock' => 'alock',
'ISO_Next_Group' => 'alock',
'ISO_Next_Group_Lock' => 'alock',
'ISO_Prev_Group' => 'alock',
'ISO_Prev_Group_Lock' => 'alock',
'ISO_First_Group' => 'alock',
'ISO_First_Group_Lock' => 'alock',
'ISO_Last_Group' => 'alock',
'ISO_Last_Group_Lock' => 'alock',
# Other symbols
'NoAction' => 'NoSymbol', # Is this recognised by X ?
'nosymbol' => 'NoSymbol', # Is this recognised by X ?
'Nosymbol' => 'NoSymbol', # Is this recognised by X ?
'noSymbol' => 'NoSymbol', # Is this recognised by X ?
'NoSymbol' => 'NoSymbol',
'any' => 'NoSymbol', # Is this recognised by X ?
'VoidSymbol' => 'nop',
'voidsymbol' => 'nop', # Is this recognised by X ?
'ISO_Left_Tab' => 'ht',
'Clear' => 'nop',
'Pause' => 'saver',
'Scroll_Lock' => 'slock',
'Sys_Req' => 'nop',
'Delete' => 'fkey61',
'Codeinput' => 'nop',
'SingleCandidate' => 'nop',
'MultipleCandidate' => 'nop',
'PreviousCandidate' => 'nop',
'Home' => 'fkey49',
'Left' => 'fkey53',
'Up' => 'fkey50',
'Right' => 'fkey55',
'Down' => 'fkey58',
'Prior' => 'fkey51',
'Page_Up' => 'fkey51',
'Next' => 'fkey59',
'Page_Down' => 'fkey59',
'End' => 'fkey57',
'Begin' => 'fkey54',
'Select' => 'fkey57',
'Print' => 'nscr',
'Execute' => 'nop',
'Insert' => 'fkey60',
'Undo' => 'nop',
'Redo' => 'nop',
'Menu' => 'fkey64',
'Find' => 'fkey49',
'Cancel' => 'nop',
'Help' => 'slock', # Is this correct?
'Break' => 'nop',
'Num_Lock' => 'nlock',
'F1' => 'fkey01',
'F2' => 'fkey02',
'F3' => 'fkey03',
'F4' => 'fkey04',
'F5' => 'fkey05',
'F6' => 'fkey06',
'F7' => 'fkey07',
'F8' => 'fkey08',
'F9' => 'fkey09',
'F10' => 'fkey10',
'F11' => 'fkey11',
'L1' => 'fkey11',
'F12' => 'fkey12',
'L2' => 'fkey12',
'F13' => 'fkey13',
'L3' => 'fkey13',
'F14' => 'fkey14',
'L4' => 'fkey14',
'F15' => 'fkey15',
'L5' => 'fkey15',
'F16' => 'fkey16',
'L6' => 'fkey16',
'F17' => 'fkey17',
'L7' => 'fkey17',
'F18' => 'fkey18',
'L8' => 'fkey18',
'F19' => 'fkey19',
'L9' => 'fkey19',
'F20' => 'fkey20',
'L10' => 'fkey20',
'F21' => 'fkey21',
'R1' => 'fkey21',
'F22' => 'fkey22',
'R2' => 'fkey22',
'F23' => 'fkey23',
'R3' => 'fkey23',
'F24' => 'fkey24',
'R4' => 'fkey24',
'F25' => 'fkey25',
'R5' => 'fkey25',
'F26' => 'fkey26',
'R6' => 'fkey26',
'F27' => 'fkey27',
'R7' => 'fkey27',
'F28' => 'fkey28',
'R8' => 'fkey28',
'F29' => 'fkey29',
'R9' => 'fkey29',
'F30' => 'fkey30',
'R10' => 'fkey30',
'F31' => 'fkey31',
'R11' => 'fkey31',
'F32' => 'fkey32',
'R12' => 'fkey32',
'F33' => 'fkey33',
'R13' => 'fkey33',
'F34' => 'fkey34',
'R14' => 'fkey34',
'F35' => 'fkey35',
'R15' => 'fkey35',
'Terminate_Server' => 'nop',
'Pointer_EnableKeys' => 'nop',
'XF86_Switch_VT_1' => 'scr01',
'XF86_Switch_VT_2' => 'scr02',
'XF86_Switch_VT_3' => 'scr03',
'XF86_Switch_VT_4' => 'scr04',
'XF86_Switch_VT_5' => 'scr05',
'XF86_Switch_VT_6' => 'scr06',
'XF86_Switch_VT_7' => 'scr07',
'XF86_Switch_VT_8' => 'scr08',
'XF86_Switch_VT_9' => 'scr09',
'XF86_Switch_VT_10' => 'scr10',
'XF86_Switch_VT_11' => 'scr11',
'XF86_Switch_VT_12' => 'scr12',
'XF86_ClearGrab' => 'nop',
'XF86_Ungrab' => 'nop',
'XF86_Next_VMode' => 'nop',
'XF86_Prev_VMode' => 'nop',
'XF86Copy' => 'nop',
'XF86Cut' => 'nop',
'XF86Paste' => 'nop',
'XF86AudioLowerVolume' => 'nop',
'XF86AudioRaiseVolume' => 'nop',
'XF86AudioMute' => 'nop',
'XF86PowerOff' => 'nop',
'XF86AudioForward' => 'nop',
'XF86AudioMedia' => 'nop',
'XF86AudioNext' => 'nop',
'XF86AudioPause' => 'nop',
'XF86AudioPlay' => 'nop',
'XF86AudioPrev' => 'nop',
'XF86AudioRecord' => 'nop',
'XF86AudioRewind' => 'nop',
'XF86AudioStop' => 'nop',
'XF86Back' => 'nop',
'XF86Battery' => 'nop',
'XF86Bluetooth' => 'nop',
'XF86Calculator' => 'nop',
'XF86Close' => 'nop',
'XF86Display' => 'nop',
'XF86Documents' => 'nop',
'XF86DOS' => 'nop',
'XF86Eject' => 'nop',
'XF86Explorer' => 'nop',
'XF86Favorites' => 'nop',
'XF86Finance' => 'nop',
'XF86Forward' => 'nop',
'XF86HomePage' => 'nop',
'XF86KbdBrightnessDown' => 'nop',
'XF86KbdBrightnessUp' => 'nop',
'XF86KbdLightOnOff' => 'nop',
'XF86Launch1' => 'nop',
'XF86Launch2' => 'nop',
'XF86Launch3' => 'nop',
'XF86Launch4' => 'nop',
'XF86Mail' => 'nop',
'XF86MailForward' => 'nop',
'XF86MenuKB' => 'nop',
'XF86MonBrightnessDown' => 'nop',
'XF86MonBrightnessUp' => 'nop',
'XF86MyComputer' => 'nop',
'XF86New' => 'nop',
'XF86Phone' => 'nop',
'XF86Reload' => 'nop',
'XF86Reply' => 'nop',
'XF86RotateWindows' => 'nop',
'XF86Save' => 'nop',
'XF86ScreenSaver' => 'nop',
'XF86ScrollDown' => 'nop',
'XF86ScrollUp' => 'nop',
'XF86Search' => 'nop',
'XF86Send' => 'nop',
'XF86Shop' => 'nop',
'XF86Sleep' => 'nop',
'XF86Suspend' => 'nop',
'XF86Tools' => 'nop',
'XF86TouchpadToggle' => 'nop',
'XF86WakeUp' => 'nop',
'XF86WebCam' => 'nop',
'XF86WLAN' => 'nop',
'XF86WWW' => 'nop',
'XF86Xfer' => 'nop',
'braille_blank' => '2800', # What does correspond to these?
'braille_dot_1' => 'nop',
'braille_dot_2' => 'nop',
'braille_dot_3' => 'nop',
'braille_dot_4' => 'nop',
'braille_dot_5' => 'nop',
'braille_dot_6' => 'nop',
'braille_dot_7' => 'nop',
'braille_dot_8' => 'nop',
'braille_dot_9' => 'nop',
'braille_dot_10' => 'nop',
# I do not know the Unicodes of these
'0x1000' => 'nop', # Special symbol for X or syntax error?
'0x13a4' => 'nop', # Special symbol for X or syntax error?
'0xfe11' => 'nop', # Special symbol for X or syntax error?
'leftcaret' => 'nop', # Is this recognised by X ?
'guj_rra' => 'nop', # Is this recognised by X ?
'guj_nnna' => 'nop', # Is this recognised by X ?
'guj_llla' => 'nop', # Is this recognised by X ?
'gur_visarga' => 'nop', # Is this recognised by X ?
'gur_v_r' => 'nop', # Is this recognised by X ?
'gur_v_r_s' => 'nop', # Is this recognised by X ?
'Eisu_toggle' => 'nop', # Is this recognised by X ?
'Zenkaku_Hankaku' => 'nop', # Is this recognised by X ?
'Kanji' => 'nop', # Is this recognised by X ?
'Hangul' => 'nop', # Is this recognised by X ?
'Hangul_Hanja' => 'nop', # Is this recognised by X ?
'Henkan' => 'nop',
'Hiragana' => 'nop',
'Hiragana_Katakana' => 'nop',
'Katakana' => 'nop',
'Muhenkan' => 'nop',
# XFree86 does not recognise these
'SunAudioLowerVolume' => 'nop',
'SunAudioRaiseVolume' => 'nop',
'SunAudioMute' => 'nop',
'SunCopy' => 'nop',
'SunCut' => 'nop',
'SunPaste' => 'nop',
'SunAgain' => 'nop',
'SunUndo' => 'nop',
'SunFind' => 'nop',
'SunStop' => 'nop',
'SunF36' => 'nop',
'SunF37' => 'nop',
'SunFront' => 'nop',
'SunOpen' => 'nop',
'SunPowerSwitch' => 'nop',
'SunPowerSwitchShift' => 'nop',
'SunProps' => 'nop',
'SunSys_Req' => 'nop',
'SunVideoDegauss' => 'nop',
'SunVideoLowerBrightness' => 'nop',
'SunVideoRaiseBrightness' => 'nop',
);
if ($backspace eq 'del') {
$xkbsym_table{'BackSpace'} = 'del';
$xkbsym_table{'Delete'} = 'fkey70';
$xkbsym_table{'KP_Delete'} = 'fkey70';
}
} else {
%xkbsym_table =
(%xkbsym_table,
# Control symbols
'BackSpace' => 'Delete', # 0008
'Tab' => 'Tab', # 0009
'Linefeed' => 'Linefeed', # 000a
'Return' => 'Return', # 000d
'Escape' => 'Escape', # 001b
# Keypad keys
'KP_Multiply' => 'KP_Multiply',
'KP_Add' => 'KP_Add',
'KP_Seprator' => 'KP_Comma', # Is this recognised by X ?
'KP_Separator' => 'KP_Comma',
'KP_Subtract' => 'KP_Subtract',
'KP_Decimal' => 'KP_Period',
'KP_Divide' => 'KP_Divide',
'KP_0' => 'KP_0',
'KP_1' => 'KP_1',
'KP_2' => 'KP_2',
'KP_3' => 'KP_3',
'KP_4' => 'KP_4',
'KP_5' => 'KP_5',
'KP_6' => 'KP_6',
'KP_7' => 'KP_7',
'KP_8' => 'KP_8',
'KP_9' => 'KP_9',
'KP_Enter' => 'KP_Enter',
# Keypad keys (alternate level)
'KP_Home' => 'KP_7',
'KP_Left' => 'KP_4',
'KP_Up' => 'KP_8',
'KP_Right' => 'KP_6',
'KP_Down' => 'KP_2',
'KP_Prior' => 'KP_9',
'KP_Page_Up' => 'KP_9',
'KP_Next' => 'KP_3',
'KP_Page_Down' => 'KP_3',
'KP_End' => 'KP_1',
'KP_Begin' => 'VoidSymbol', # What does correspond to this?
'KP_Insert' => 'KP_0',
'KP_Delete' => 'VoidSymbol', # has to be 'KP_Period' or 'KP_Decimal'
# Keypad keys with missing support in the kernel
'KP_Space' => 'space',
'KP_Equal' => 'equal',
'KP_Tab' => 'Tab',
'KP_F1' => 'F1',
'KP_F2' => 'F2',
'KP_F3' => 'F3',
'KP_F4' => 'F4',
# Dead symbols
'dead_grave' => 'dead_grave',
'SunFA_Grave' => 'dead_grave', # Is this recognised by X ?
'dead_acute' => 'dead_acute',
'SunFA_Acute' => 'dead_acute', # Is this recognised by X ?
'dead_circumflex' => 'dead_circumflex',
'SunFA_Circum' => 'dead_circumflex', # Is this recognised by X ?
'dead_tilde' => 'dead_tilde',
'SunFA_Tilde' => 'dead_tilde',
'dead_breve' => 'dead_kbreve',
'dead_diaeresis' => 'dead_diaeresis',
'SunFA_Diaeresis' => 'dead_diaeresis', # Is this recognised by X ?
'dead_doubleacute' => 'dead_kdoubleacute',
'dead_caron' => 'dead_kcaron',
'dead_V' => 'dead_caron', # Is this correct?
'dead_cedilla' => 'dead_cedilla',
'SunFA_Cedilla' => 'dead_cedilla', # Is this recognised by X ?
'dead_ogonek' => 'dead_kogonek',
'dead_macron' => 'dead_macron',
'dead_abovedot' => 'dead_abovedot',
'dead_abovering' => 'dead_abovering',
'dead_stroke' => 'dead_stroke',
'dead_belowdot' => 'dead_belowdot',
'dead_hook' => 'dead_hook',
'dead_belowcomma' => 'dead_belowcomma',
'dead_currency' => 'dead_currency',
'dead_doublegrave' => 'dead_doublegrave',
'dead_invertedbreve' => 'dead_invertedbreve',
'dead_iota' => 'dead_iota',
'dead_horn' => 'dead_horn',
# Dead symbols with no support in the kernel
'dead_psili' => 'VoidSymbol', # ???? Greek
'dead_dasia' => 'VoidSymbol', # ???? Greek
# Modifiers
'Multi_key' => 'Compose',
'Mode_switch' => 'ShiftL',
'script_switch' => 'VoidSymbol',
'Shift_L' => 'Shift',
'Shift_R' => 'Shift',
'Control_L' => 'Control',
'Control_R' => 'Control',
'Caps_Lock' => 'Caps_Lock',
'Shift_Lock' => 'Shift_Lock',
'Meta_L' => 'Alt',
'Meta_R' => 'Alt',
'Alt_L' => 'Alt',
'Alt_R' => 'Alt',
'Super_L' => 'Alt',
'Super_R' => 'Alt',
'Hyper_L' => 'Alt',
'Hyper_R' => 'Alt',
'ISO_Lock' => 'Caps_Lock',
'ISO_Level2_Latch' => 'Shift',
'ISO_Level3_Shift' => 'AltGr',
'ISO_Level3_Latch' => 'AltGr',
'ISO_Level3_Lock' => 'AltGr_Lock',
'ISO_Level5_Shift' => 'AltGr',
'ISO_Level5_Latch' => 'AltGr',
'ISO_Level5_Lock' => 'AltGr_Lock',
'ISO_Group_Shift' => 'ShiftL',
'ISO_Group_Latch' => 'ShiftL',
'ISO_Group_Lock' => 'ShiftL_Lock',
'ISO_Next_Group' => 'ShiftL_Lock',
'ISO_Next_Group_Lock' => 'ShiftL_Lock',
'ISO_Prev_Group' => 'ShiftL_Lock',
'ISO_Prev_Group_Lock' => 'ShiftL_Lock',
'ISO_First_Group' => 'ShiftL_Lock',
'ISO_First_Group_Lock' => 'ShiftL_Lock',
'ISO_Last_Group' => 'ShiftL_Lock',
'ISO_Last_Group_Lock' => 'ShiftL_Lock',
# Other symbols
'NoAction' => 'NoSymbol', # Is this recognised by X ?
'nosymbol' => 'NoSymbol', # Is this recognised by X ?
'Nosymbol' => 'NoSymbol', # Is this recognised by X ?
'noSymbol' => 'NoSymbol', # Is this recognised by X ?
'NoSymbol' => 'NoSymbol',
'any' => 'NoSymbol', # Is this recognised by X ?
'VoidSymbol' => 'VoidSymbol',
'voidsymbol' => 'VoidSymbol', # Is this recognised by X ?
'ISO_Left_Tab' => 'Meta_Tab',
'Clear' => 'VoidSymbol',
'Pause' => 'Pause',
'Scroll_Lock' => 'Scroll_Lock',
'Sys_Req' => 'Last_Console',
'Delete' => 'Remove',
'Codeinput' => 'VoidSymbol',
'SingleCandidate' => 'VoidSymbol',
'MultipleCandidate' => 'VoidSymbol',
'PreviousCandidate' => 'VoidSymbol',
'Home' => 'Home',
'Left' => 'Left',
'Up' => 'Up',
'Right' => 'Right',
'Down' => 'Down',
'Prior' => 'Prior',
'Page_Up' => 'PageUp',
'Next' => 'Next',
'Page_Down' => 'PageDown',
'End' => 'End',
'Begin' => 'VoidSymbol',
'Select' => 'Select',
'Print' => 'Control_backslash',
'Execute' => 'VoidSymbol',
'Insert' => 'Insert',
'Undo' => 'VoidSymbol',
'Redo' => 'VoidSymbol',
'Menu' => 'VoidSymbol',
'Find' => 'Find',
'Cancel' => 'VoidSymbol',
'Help' => 'Help',
'Break' => 'Break',
'Num_Lock' => 'Num_Lock',
'F1' => 'F1',
'F2' => 'F2',
'F3' => 'F3',
'F4' => 'F4',
'F5' => 'F5',
'F6' => 'F6',
'F7' => 'F7',
'F8' => 'F8',
'F9' => 'F9',
'F10' => 'F10',
'F11' => 'F11',
'L1' => 'F11',
'F12' => 'F12',
'L2' => 'F12',
'F13' => 'F13',
'L3' => 'F13',
'F14' => 'F14',
'L4' => 'F14',
'F15' => 'F15',
'L5' => 'F15',
'F16' => 'F16',
'L6' => 'F16',
'F17' => 'F17',
'L7' => 'F17',
'F18' => 'F18',
'L8' => 'F18',
'F19' => 'F19',
'L9' => 'F19',
'F20' => 'F20',
'L10' => 'F20',
'F21' => 'F21',
'R1' => 'F21',
'F22' => 'F22',
'R2' => 'F22',
'F23' => 'F23',
'R3' => 'F23',
'F24' => 'F24',
'R4' => 'F24',
'F25' => 'F25',
'R5' => 'F25',
'F26' => 'F26',
'R6' => 'F26',
'F27' => 'F27',
'R7' => 'F27',
'F28' => 'F28',
'R8' => 'F28',
'F29' => 'F29',
'R9' => 'F29',
'F30' => 'F30',
'R10' => 'F30',
'F31' => 'F31',
'R11' => 'F31',
'F32' => 'F32',
'R12' => 'F32',
'F33' => 'F33',
'R13' => 'F33',
'F34' => 'F34',
'R14' => 'F34',
'F35' => 'F35',
'R15' => 'F35',
'Terminate_Server' => 'VoidSymbol',
'Pointer_EnableKeys' => 'VoidSymbol',
'XF86_Switch_VT_1' => 'Console_1',
'XF86_Switch_VT_2' => 'Console_2',
'XF86_Switch_VT_3' => 'Console_3',
'XF86_Switch_VT_4' => 'Console_4',
'XF86_Switch_VT_5' => 'Console_5',
'XF86_Switch_VT_6' => 'Console_6',
'XF86_Switch_VT_7' => 'Console_7',
'XF86_Switch_VT_8' => 'Console_8',
'XF86_Switch_VT_9' => 'Console_9',
'XF86_Switch_VT_10' => 'Console_10',
'XF86_Switch_VT_11' => 'Console_11',
'XF86_Switch_VT_12' => 'Console_12',
'XF86_ClearGrab' => 'VoidSymbol',
'XF86_Ungrab' => 'VoidSymbol',
'XF86_Next_VMode' => 'VoidSymbol',
'XF86_Prev_VMode' => 'VoidSymbol',
'XF86Copy' => 'VoidSymbol',
'XF86Cut' => 'VoidSymbol',
'XF86Paste' => 'VoidSymbol',
'XF86AudioLowerVolume' => 'VoidSymbol',
'XF86AudioRaiseVolume' => 'VoidSymbol',
'XF86AudioMute' => 'VoidSymbol',
'XF86PowerOff' => 'VoidSymbol',
'XF86AudioForward' => 'VoidSymbol',
'XF86AudioMedia' => 'VoidSymbol',
'XF86AudioNext' => 'VoidSymbol',
'XF86AudioPause' => 'VoidSymbol',
'XF86AudioPlay' => 'VoidSymbol',
'XF86AudioPrev' => 'VoidSymbol',
'XF86AudioRecord' => 'VoidSymbol',
'XF86AudioRewind' => 'VoidSymbol',
'XF86AudioStop' => 'VoidSymbol',
'XF86Back' => 'VoidSymbol',
'XF86Battery' => 'VoidSymbol',
'XF86Bluetooth' => 'VoidSymbol',
'XF86Calculator' => 'VoidSymbol',
'XF86Close' => 'VoidSymbol',
'XF86Display' => 'VoidSymbol',
'XF86Documents' => 'VoidSymbol',
'XF86DOS' => 'VoidSymbol',
'XF86Eject' => 'VoidSymbol',
'XF86Explorer' => 'VoidSymbol',
'XF86Favorites' => 'VoidSymbol',
'XF86Finance' => 'VoidSymbol',
'XF86Forward' => 'VoidSymbol',
'XF86HomePage' => 'VoidSymbol',
'XF86KbdBrightnessDown' => 'VoidSymbol',
'XF86KbdBrightnessUp' => 'VoidSymbol',
'XF86KbdLightOnOff' => 'VoidSymbol',
'XF86Launch1' => 'VoidSymbol',
'XF86Launch2' => 'VoidSymbol',
'XF86Launch3' => 'VoidSymbol',
'XF86Launch4' => 'VoidSymbol',
'XF86Mail' => 'VoidSymbol',
'XF86MailForward' => 'VoidSymbol',
'XF86MenuKB' => 'VoidSymbol',
'XF86MonBrightnessDown' => 'VoidSymbol',
'XF86MonBrightnessUp' => 'VoidSymbol',
'XF86MyComputer' => 'VoidSymbol',
'XF86New' => 'VoidSymbol',
'XF86Phone' => 'VoidSymbol',
'XF86Reload' => 'VoidSymbol',
'XF86Reply' => 'VoidSymbol',
'XF86RotateWindows' => 'VoidSymbol',
'XF86Save' => 'VoidSymbol',
'XF86ScreenSaver' => 'VoidSymbol',
'XF86ScrollDown' => 'VoidSymbol',
'XF86ScrollUp' => 'VoidSymbol',
'XF86Search' => 'VoidSymbol',
'XF86Send' => 'VoidSymbol',
'XF86Shop' => 'VoidSymbol',
'XF86Sleep' => 'VoidSymbol',
'XF86Suspend' => 'VoidSymbol',
'XF86Tools' => 'VoidSymbol',
'XF86TouchpadToggle' => 'VoidSymbol',
'XF86WakeUp' => 'VoidSymbol',
'XF86WebCam' => 'VoidSymbol',
'XF86WLAN' => 'VoidSymbol',
'XF86WWW' => 'VoidSymbol',
'XF86Xfer' => 'VoidSymbol',
'braille_blank' => 'Brl_blank',
'braille_dot_1' => 'Brl_dot1',
'braille_dot_2' => 'Brl_dot2',
'braille_dot_3' => 'Brl_dot3',
'braille_dot_4' => 'Brl_dot4',
'braille_dot_5' => 'Brl_dot5',
'braille_dot_6' => 'Brl_dot6',
'braille_dot_7' => 'Brl_dot7',
'braille_dot_8' => 'Brl_dot8',
'braille_dot_9' => 'Brl_dot9',
'braille_dot_10' => 'Brl_dot10',
# I do not know the Unicodes of these
'0x1000' => 'VoidSymbol', # Special symbol for X or syntax error?
'0x13a4' => 'VoidSymbol', # Special symbol for X or syntax error?
'0xfe11' => 'VoidSymbol', # Special symbol for X or syntax error?
'leftcaret' => 'VoidSymbol', # Is this recognised by X ?
'guj_rra' => 'VoidSymbol', # Is this recognised by X ?
'guj_nnna' => 'VoidSymbol', # Is this recognised by X ?
'guj_llla' => 'VoidSymbol', # Is this recognised by X ?
'gur_visarga' => 'VoidSymbol', # Is this recognised by X ?
'gur_v_r' => 'VoidSymbol', # Is this recognised by X ?
'gur_v_r_s' => 'VoidSymbol', # Is this recognised by X ?
'Eisu_toggle' => 'VoidSymbol', # Is this recognised by X ?
'Zenkaku_Hankaku' => 'VoidSymbol', # Is this recognised by X ?
'Kanji' => 'VoidSymbol', # Is this recognised by X ?
'Hangul' => 'VoidSymbol', # Is this recognised by X ?
'Hangul_Hanja' => 'VoidSymbol', # Is this recognised by X ?
'Henkan' => 'VoidSymbol',
'Hiragana' => 'VoidSymbol',
'Hiragana_Katakana' => 'VoidSymbol',
'Katakana' => 'VoidSymbol',
'Muhenkan' => 'VoidSymbol',
# XFree86 does not recognise these
'SunAudioLowerVolume' => 'VoidSymbol',
'SunAudioRaiseVolume' => 'VoidSymbol',
'SunAudioMute' => 'VoidSymbol',
'SunCopy' => 'VoidSymbol',
'SunCut' => 'VoidSymbol',
'SunPaste' => 'VoidSymbol',
'SunAgain' => 'VoidSymbol',
'SunUndo' => 'VoidSymbol',
'SunFind' => 'VoidSymbol',
'SunStop' => 'VoidSymbol',
'SunF36' => 'VoidSymbol',
'SunF37' => 'VoidSymbol',
'SunFront' => 'VoidSymbol',
'SunOpen' => 'VoidSymbol',
'SunPowerSwitch' => 'VoidSymbol',
'SunPowerSwitchShift' => 'VoidSymbol',
'SunProps' => 'VoidSymbol',
'SunSys_Req' => 'VoidSymbol',
'SunVideoDegauss' => 'VoidSymbol',
'SunVideoLowerBrightness' => 'VoidSymbol',
'SunVideoRaiseBrightness' => 'VoidSymbol',
);
if ($compact) {
$xkbsym_table{'Mode_switch'} = 'AltGr';
$xkbsym_table{'ISO_Group_Shift'} = 'AltGr';
$xkbsym_table{'ISO_Group_Latch'} = 'AltGr';
$xkbsym_table{'ISO_Group_Lock'} = 'AltGr_Lock';
$xkbsym_table{'ISO_Next_Group'} = 'AltGr_Lock';
$xkbsym_table{'ISO_Next_Group_Lock'} = 'AltGr_Lock';
$xkbsym_table{'ISO_Prev_Group'} = 'AltGr_Lock';
$xkbsym_table{'ISO_Prev_Group_Lock'} = 'AltGr_Lock';
$xkbsym_table{'ISO_First_Group'} = 'AltGr_Lock';
$xkbsym_table{'ISO_First_Group_Lock'} = 'AltGr_Lock';
$xkbsym_table{'ISO_Last_Group'} = 'AltGr_Lock';
$xkbsym_table{'ISO_Last_Group_Lock'} = 'AltGr_Lock';
}
if ($backspace eq 'bs') {
$xkbsym_table{'BackSpace'} = 'BackSpace';
$xkbsym_table{'Delete'} = 'Delete';
}
}
my $voidsymbol = $freebsd ? 'nop' : 'VoidSymbol';
my @controlsyms;
my @metasyms;
my @metacontrolsyms;
my %controlsyms_hash;
{
if ($freebsd) {
%controlsyms_hash = (
'nul' => 0x00,
'soh' => 0x01,
'stx' => 0x02,
'etx' => 0x03,
'eot' => 0x04,
'enq' => 0x05,
'ack' => 0x06,
'bel' => 0x07,
'bs' => 0x08,
'ht' => 0x09,
'nl' => 0x0a,
'vt' => 0x0b,
'ff' => 0x0c,
'cr' => 0x0d,
'so' => 0x0e,
'si' => 0x0f,
'dle' => 0x10,
'dc1' => 0x11,
'dc2' => 0x12,
'dc3' => 0x13,
'dc4' => 0x14,
'nak' => 0x15,
'syn' => 0x16,
'etb' => 0x17,
'can' => 0x18,
'em' => 0x19,
'sub' => 0x1a,
'esc' => 0x1b,
'fs' => 0x1c,
'gs' => 0x1d,
'rs' => 0x1e,
'us' => 0x1f,
'del' => 0x7f,
);
} else {
%controlsyms_hash = (
'nul' => 0x00,
'Control_a' => 0x01,
'Control_b' => 0x02,
'Control_c' => 0x03,
'Control_d' => 0x04,
'Control_e' => 0x05,
'Control_f' => 0x06,
'Control_g' => 0x07,
'BackSpace' => 0x08,
'Tab' => 0x09,
'Linefeed' => 0x0a,
'Control_k' => 0x0b,
'Control_l' => 0x0c,
'Return' => 0x0d,
'Control_n' => 0x0e,
'Control_o' => 0x0f,
'Control_p' => 0x10,
'Control_q' => 0x11,
'Control_r' => 0x12,
'Control_s' => 0x13,
'Control_t' => 0x14,
'Control_u' => 0x15,
'Control_v' => 0x16,
'Control_w' => 0x17,
'Control_x' => 0x18,
'Control_y' => 0x19,
'Control_z' => 0x1a,
'Escape' => 0x1b,
'Control_backslash' => 0x1c,
'Control_bracketright' => 0x1d,
'Control_asciicircum' => 0x1e,
'Control_underscore' => 0x1f,
'Delete' => 0x7f,
);
}
for my $special (keys %controlsyms_hash) {
$controlsyms[$controlsyms_hash{$special}] = $special;
}
for my $code (0 .. 255) {
if (! defined $controlsyms[$code]) {
if ($code >= 64 && $code <= 127
&& defined (my $special = $controlsyms[$code % 32])) {
$controlsyms[$code] = $special;
} else {
$controlsyms[$code] = $voidsymbol;
}
}
}
# Ctrl + BS = DEL, Ctrl + DEL = BS
if ($freebsd) {
$controlsyms[0x08] = 'del';
$controlsyms[0x7f] = 'bs';
} else {
$controlsyms[0x08] = 'Delete';
$controlsyms[0x7f] = 'BackSpace';
}
# Some particularities of FreeBSD and Linux
if ($freebsd) {
$controlsyms[0x0d] = 'nl'; # Ctrl+m = ^J
$controlsyms[0x20] = 'nul'; # Ctrl+space = ^@
$controlsyms[0x3f] = 'del'; # Ctrl+? = ^?
} else {
$controlsyms[0x0d] = 'Control_m'; # I don't know
$controlsyms[0x20] = 'nul'; # Ctrl+space = ^@
$controlsyms[0x2e] = 'Compose'; # Ctrl+. = Compose
$controlsyms[0x3f] = 'Delete'; # Ctrl+? = ^?
# I suppose these are not necessary:
# $controlsyms[0x27] = 'Control_g'; # Ctrl+' = ^G
# $controlsyms[0x32] = 'nul'; # 2
# $controlsyms[0x33] = 'Escape'; # 3
# $controlsyms[0x34] = 'Control_backslash'; # 4
# $controlsyms[0x35] = 'Control_bracketright'; # 5
# $controlsyms[0x36] = 'Control_asciicircum'; # 6
# $controlsyms[0x37] = 'Control_underscore'; # 7
# $controlsyms[0x38] = 'Delete'; # 8
}
my %metasyms_hash = (
' ' => 'space',
'`' => 'grave',
'^' => 'asciicircum',
'~' => 'asciitilde',
'<' => 'less',
'=' => 'equal',
'>' => 'greater',
'|' => 'bar',
'_' => 'underscore',
'-' => 'minus',
',' => 'comma',
';' => 'semicolon',
':' => 'colon',
'!' => 'exclam',
'?' => 'question',
'/' => 'slash',
'.' => 'period',
'\'' => 'apostrophe',
'"' => 'quotedbl',
'(' => 'parenleft',
')' => 'parenright',
'[' => 'bracketleft',
']' => 'bracketright',
'{' => 'braceleft',
'}' => 'braceright',
'@' => 'at',
'$' => 'dollar',
'*' => 'asterisk',
'\\' => 'backslash',
'&' => 'ampersand',
'#' => 'numbersign',
'%' => 'percent',
'+' => 'plus',
'0' => 'zero',
'1' => 'one',
'2' => 'two',
'3' => 'three',
'4' => 'four',
'5' => 'five',
'6' => 'six',
'7' => 'seven',
'8' => 'eight',
'9' => 'nine',
chr(0x08) => 'BackSpace',
chr(0x09) => 'Tab',
chr(0x0a) => 'Linefeed',
chr(0x0d) => 'Control_m',
chr(0x1b) => 'Escape',
chr(0x1c) => 'Control_backslash',
chr(0x7f) => 'Delete',
);
for my $code (0 .. 255) {
my $sym = chr($code);
if (defined (my $special = $metasyms_hash{$sym})) {
$sym = $special;
}
$metasyms[$code] = "Meta_". $sym;
}
for my $code (0 .. 255) {
my $control = $controlsyms[$code];
if ($control eq 'Compose') {
$metacontrolsyms[$code] = 'Compose';
} elsif ($control eq 'Return') {
$metacontrolsyms[$code] = 'Meta_Control_m';
} elsif ($control eq 'NoSymbol') {
$metacontrolsyms[$code] = 'NoSymbol';
} elsif ($control eq 'VoidSymbol') {
$metacontrolsyms[$code] = 'VoidSymbol';
} else {
$metacontrolsyms[$code] = 'Meta_'. $control;
}
}
}
############ GLOBAL FUNCTIONS #########################################
# Looks for $_[0] in the known directories and returns ready to use
# file name
sub xfilename {
my $file = $_[0];
(my $base = $file) =~ s/.*\/(.+)/$1/;
for my $dir (@xdirs) {
if (-f "$dir/$file") {
return "$dir/$file";
}
if (-f "$dir/$base") {
return "$dir/$base";
}
}
die "$0: Can not find file \"$file\" in any known directory\n";
}
########### READ THE RULES FILE #######################################
# The string $_[0] matches the pattern $_[1].
# The pattern may be "*", a variable name, or a plain string.
# If the string is 'OPTIONS' then match the pattern against any of the
# options from @options.
sub matches_pattern {
my ($string, $pattern) = @_;
if ($string eq 'OPTIONS') {
for my $option (@options) {
next if ($option eq '');
if ($pattern eq $option) {
return 1;
}
}
} else {
if ($pattern eq '*') {
return $string ne '';
}
if ($pattern =~ /^\$([a-zA-Z0-9_]+)$/) {
for my $member (@{$rules_variables{$1}}) {
if ($string eq $member) {
return 1;
}
}
return 0;
}
if ($string eq $pattern) {
return 1;
}
}
return 0;
}
if (@layouts) {
for my $i (0 .. $#layouts) {
if (! defined $variants[$i]) {
$variants[$i] = '';
}
}
my $rules_keycodes;
my $rules_symbols;
open (RULES, xfilename ("rules/$rules"))
or die "$0: ". xfilename ("rules/$rules") .": $!\n";
my $oldline = '';
my @antecedents;
my @consequents;
my $match_found = 0;
while (<RULES>) {
next if (/^\s*\/\//);
next if (/^\s*$/);
chomp;
s/^\s*//;
s/\s+/ /g;
if ($oldline) {
$_ = $oldline . $_;
$oldline = '';
}
if (s/\\$/ /) {
$oldline = $_;
next;
}
if (/^! ?\$([a-zA-Z0-9_]+) ?= ?(.+)$/) {
$rules_variables{$1} = [ split ' ', $2 ];
next;
}
if (/^! ?(.+)= ?(.+)$/) {
@antecedents = split ' ', $1;
@consequents = split ' ', $2;
foreach my $i (0 .. $#antecedents) {
if ($antecedents[$i] eq 'model') {
$antecedents[$i] = $model;
} elsif ($antecedents[$i] eq 'layout' && @layouts == 1) {
$antecedents[$i] = $layouts[0];
} elsif ($antecedents[$i] =~ /layout\[([1-4])\]/) {
if (@layouts > 1) {
$antecedents[$i] = $layouts[$1 - 1];
} else {
$antecedents[$i] = '';
}
} elsif ($antecedents[$i] eq 'variant' && @variants == 1) {
$antecedents[$i] = $variants[0];
} elsif ($antecedents[$i] =~ /variant\[([1-4])\]/) {
if (@variants > 1) {
$antecedents[$i] = $variants[$1 - 1];
} else {
$antecedents[$i] = '';
}
} elsif ($antecedents[$i] eq 'option') {
$antecedents[$i] = 'OPTIONS';
} elsif ($antecedents[$i] eq 'layout'
|| $antecedents[$i] eq 'variant') {
$antecedents[$i] = '';
} else {
warning "Unknown name \"$antecedents[$i]\" in the following line in \"rules/$rules\":\n";
warning "$_\n";
$antecedents[$i] = '';
}
if (! defined $antecedents[$i]) {
$antecedents[$i] = '';
}
}
$match_found = 0;
next;
}
if (/^(.+)= ?(.+)$/) {
next if ($match_found);
my @antecedent_patterns = split ' ', $1;
my $consequent_str = $2;
if (@antecedent_patterns != @antecedents ) {
warning "Bad number of antecedents in the following line in \"rules/$rules\":\n";
warning "$_\n";
next;
}
my $matches = 1;
for my $i (0 .. $#antecedents) {
if (! matches_pattern ($antecedents[$i],
$antecedent_patterns[$i])) {
$matches = 0;
last;
}
}
if ($matches) {
$match_found = $antecedents[0] ne 'OPTIONS';
my @consequent_values = split ' ', $2;
if (@consequent_values != @consequents) {
warning "Bad number of consequents in the following line in \"rules/$rules\":\n";
warning "$_\n";
}
for my $i (0 .. $#consequents) {
# The purpose of the semicolons is to make %(v) and %_v
# empty strings if %v is an empty string
$consequent_values[$i] =~ s/%\(/\(;%/g;
$consequent_values[$i] =~ s/%_/_;%/g;
$consequent_values[$i] =~ s/(%[lvm](\[[1-4]\])?)/$1;/g;
$consequent_values[$i] =~ s/%m/$model/g;
$consequent_values[$i] =~ s/%l\[1\]/$layouts[0]/g;
$consequent_values[$i] =~ s/%l\[2\]/$layouts[1]/g;
$consequent_values[$i] =~ s/%l\[3\]/$layouts[2]/g;
$consequent_values[$i] =~ s/%l\[4\]/$layouts[3]/g;
$consequent_values[$i] =~ s/%l/$layouts[0]/g;
$consequent_values[$i] =~ s/%v\[1\]/$variants[0]/g;
$consequent_values[$i] =~ s/%v\[2\]/$variants[1]/g;
$consequent_values[$i] =~ s/%v\[3\]/$variants[2]/g;
$consequent_values[$i] =~ s/%v\[4\]/$variants[3]/g;
$consequent_values[$i] =~ s/%v/$variants[0]/g;
$consequent_values[$i] =~ s/\(;;\)//g;
$consequent_values[$i] =~ s/_;;//g;
$consequent_values[$i] =~ s/;//g;
if ($consequent_values[$i] =~ /^\+/) {
if ($consequents[$i] eq 'keycodes') {
$rules_keycodes = $rules_keycodes .
$consequent_values[$i];
} elsif ($consequents[$i] eq 'symbols') {
$rules_symbols = $rules_symbols .
$consequent_values[$i];
}
} else {
if ($consequents[$i] eq 'keycodes') {
if (! $rules_keycodes) {
$rules_keycodes = $consequent_values[$i];
}
} elsif ($consequents[$i] eq 'symbols') {
if (! $rules_symbols) {
$rules_symbols = $consequent_values[$i];
}
}
}
}
}
next;
}
warning "Syntax error in the following line in \"rules/$rules\":\n";
warning "$_\n";
die;
}
close RULES;
if ($verbosity >= 1) {
print STDERR "Acording to the rules file:\n"
." keycodes = $rules_keycodes\n"
." symbols = $rules_symbols\n";
}
if (! $keycodes) {
$keycodes = $rules_keycodes;
}
if (! $symbols) {
$symbols = $rules_symbols;
}
}
if (! $keycodes) {
die "$0: No keycodes, nor layout specified\n";
}
if (! $symbols) {
die "$0: No symbols, nor layout specified\n";
}
########### COMPUTE ARCH ###########################################
if ($keycodes =~ /(^|\+|\|)ataritt(\([^\)]*\))?($|\+|\|)/) {
$arch = 'ataritt';
} elsif ($keycodes =~ /(^|\+|\|)amiga(\([^\)]*\))?($|\+|\|)/) {
$arch = 'amiga';
} elsif ($keycodes =~ /(^|\+|\|)sun(\(type[45][^\)]*\))?($|\+|\|)/) {
$arch = 'sun';
} elsif ($keycodes =~ /(^|\+|\|)evdev(\([^\)]*\))?($|\+|\|)/) {
$arch = 'evdev';
}
########### READ ACM ###############################################
if ($charmap) {
for my $acmfile ("$installdir/share/consoletrans/${charmap}",
"$installdir/share/consoletrans/${charmap}.gz",
"$installdir/share/consoletrans/${charmap}.acm",
"$installdir/share/consoletrans/${charmap}.acm.gz",
"/usr/share/consoletrans/${charmap}",
"/usr/share/consoletrans/${charmap}.gz",
"/usr/share/consoletrans/${charmap}.acm",
"/usr/share/consoletrans/${charmap}.acm.gz",
"${charmap}") {
if (-f $acmfile) {
$acm = $acmfile;
last;
}
}
(-f $acm) or die "$0: no ACM for ${charmap} exists\n";
if ($acm =~ /gz$/) {
open (ACM, '-|:utf8', "zcat $acm") or die "$0: $acm: $!\n";
} else {
open (ACM, '<:utf8', $acm) or die "$0: $acm: $!\n";
}
while (<ACM>) {
s/\#.*//;
chomp;
next unless (/[^\s]/);
if (/^\s*0x([0-9a-fA-F]{1,2})\s+\'([^\']+)\'\s*$/) {
my $uni = ord ($2);
my $c = hex ($1);
$acmtable{$uni} = $c;
} else {
die "$0: Syntax error in ACM file: $_\n";
}
}
close ACM;
}
########### PARSING ###############################################
# Report a syntax error in $filename. $_[0] should describe what was
# expected at $stream.
sub syntax_error {
die "$0: instead of \"". (substr ($stream, 0, 50))
."\" in $filename expected $_[0].\n";
}
# Opens the text file $_[0], reads it and saves its contents in $stream
# The comments are removed, all new lines are replaced by spaces and
# all redundant spaces are removed.
sub file_to_string {
my $file = $_[0];
my $string = '';
open (FILE, "$file") or die "$0: $file: $!\n";
while (<FILE>) {
chomp;
s{//.*}{};
s{\#.*}{};
$string = $string . $_ .' ';
}
close FILE;
my $normalized = '';
my $final_letter = 0;
while ($string) {
if ($string =~ s/^\s+// && $final_letter && $string =~ /^[a-zA-Z0-9_]/) {
$normalized = $normalized .' ';
$final_letter = 0;
}
if ($string =~ s/^([^\"\s]+)//) {
$normalized = $normalized . $1;
$final_letter = ($1 =~ /[a-zA-Z0-9_]$/);
next;
}
if ($string =~ s/^(\"[^\"]*(\"|$))//) {
$normalized = $normalized . $1;
$final_letter = 0;
if ($2 ne '"') {
die "$0: missing quote in ". (substr ($1, 0, 50)) ."...\n";
}
next;
}
(! $string ) or die "Internal error";
}
$stream = $normalized;
}
# removes from $stream initial sequence of xkb flags (default, partial,
# hidden, etc.) Returns true if the "default" flag was among them.
sub xkb_flags {
my $default = 0;
while ($stream =~ s/^(default|partial|hidden
|alphanumeric_keys|modifier_keys
|keypad_keys|function_keys
|alternate_group)\s?(.*)/$2/ix) {
$default = 1 if ($1 =~ /default/i);
}
return $default;
}
# Removes and returns identifier from $stream.
sub xkb_identifier {
if ($stream =~ s/^([a-zA-Z0-1_]+) ?(.*)/$2/) {
return $1;
} else {
syntax_error "identifier";
}
}
# Removes and returns a string from $stream.
sub xkb_string {
if ($stream =~ /^\"([^\"]*)\"(.*)/) {
$stream = $2;
return $1;
} else {
syntax_error "string";
}
}
# Removes an include method name from $stream and returns $alternate_method,
# $augment_method, $replace_method, or $override_method. If $stream
# does not start with a method name, return the default method (i.e. $method)
sub xkb_method {
if ($stream =~ s/^alternate ?(.*)/$1/i) {
return $alternate_method;
} elsif ($stream =~ s/^augment ?(.*)/$1/i) {
return $augment_method;
} elsif ($stream =~ s/^replace ?(.*)/$1/i) {
return $replace_method;
} elsif ($stream =~ s/^override ?(.*)/$1/i) {
return $override_method;
} else {
return $method;
}
}
# If $stream starts with an include statement - process it and return true.
# Otherwise return false. $_[0] is the file type ("symbols" or "keycodes")
sub xkb_include {
my $file_type = $_[0];
if ($stream =~ s/^(include|replace|augment|override)\"([^\"]*)\";?
(.*)/$3/ix) {
my $method_name = $1;
my $include_request = $2;
if ($method != $ignore_method) {
my $oldmethod = $method;
if ($method_name =~ /replace/i) {
$method = $replace_method;
} elsif ($method_name =~ /augment/i) {
$method = $augment_method;
} elsif ($method_name =~ /override/i) {
$method = $override_method;
}
&include_xkb_file ($file_type, $include_request);
$method = $oldmethod;
}
return 1;
} else {
return 0;
}
}
sub xkb_keycodes_definitions {
my $oldmethod = $method;
while ($stream) {
$method = $oldmethod;
if (xkb_include ('keycodes')) {
next;
}
$method = xkb_method ();
if ($stream =~ (s/^(minimum|maximum|indicator|virtual\sindicator)
[^;]*;(.*)/$2/ix)) {
next;
}
if ($stream =~ /^<([^>]*)>=/) {
$stream =~ s/^<([^>]+)>=([0-9]*);(.*)/$3/
or syntax_error "keycode definition";
my $key = $1;
my $code = $2;
if ($method == $replace_method
|| $method == $override_method
|| ($method == $augment_method
&& ! defined $keycodes_table{$key})) {
$keycodes_table{$key} = [ $code ];
delete $aliases{$key};
} elsif ($method == $alternate_method) {
push @{$keycodes_table{$key}}, $code;
}
next;
}
if ($stream =~ /^alias/) {
$stream =~ s/^alias<([^>]+)>=<([^>]+)>;(.*)/$3/
or syntax_error "alias definition";
my $alias = $1;
my $key = $2;
if ($method == $replace_method
|| $method == $override_method
|| ($method == $augment_method
&& ! defined $keycodes_table{$alias})) {
$keycodes_table{$alias} = [];
$aliases{$alias} = $key;
}
next;
}
last;
}
$method = $oldmethod;
}
# Fill @{$symbols_table{$code}[$group]} with symbols
sub symbols_for_group {
my $code = shift;
my $group = shift;
if ($method == $replace_method
|| ($method == $override_method
&& (@_ || ! defined $symbols_table{$code}[$group]))
|| ($method == $augment_method &&
! defined $symbols_table{$code})) {
my $level = 0;
for my $symbol (@_) {
if ($symbol !~ /\(/ && $symbol =~ /./
&& (! defined $xkbsym_table{$symbol}
|| $xkbsym_table{$symbol} ne 'NoSymbol'
|| ! defined $symbols_table{$code}[$group][$level])) {
$symbols_table{$code}[$group][$level] = $symbol;
}
$level++;
}
}
}
sub xkb_key {
my $default_key_type = $_[0];
if ($stream =~ /^key</i) {
$stream =~ s/^key<([^>]+)>\{([^\}]*?)\};(.*)/$3/i
or syntax_error "key definition";
my $key = $1;
my $list = $2 .",";
if ($verbosity >= 4 && ! defined $keycodes_table{$key}) {
warning "No scan code for <$key> is defined.\n";
}
for my $code (@{$keycodes_table{$key}}) {
if ($method == $replace_method) {
$symbols_table{$code} = [];
}
my $group = $base_group;
while ($list =~ /[^ ]/) {
# [ X1, X2, ... ]
if ($list =~ s/^\[([^\]]*?)\],(.*)/$2/) {
(my $symbols = $1) =~ s/,/ /g;
my @groupsymbols = split ' ', $symbols;
symbols_for_group $code, $group, @groupsymbols;
$group++;
next;
}
# symbols[GroupN] = [ X1, X2, ... ]
if ($list =~ (s/^symbols\[Group([1-4])\]
=\[([^\]]*?)\],(.*)/$3/x)) {
my $group = $1 - 1 + $base_group;
(my $symbols = $2) =~ s/,/ /g;
my @groupsymbols = split ' ', $symbols;
symbols_for_group $code, $group, @groupsymbols;
next;
}
# type = "...."
if ($list =~ (s/^type(?:\[Group1\])?
=\"([^\"]+)\",(.*)/$2/x)) {
if ($method == $replace_method
|| $method == $override_method
|| ($method == $augment_method
&& ! defined $types_table{$code})) {
$types_table{$code} = $1;
}
next;
}
# virtualMods = AltGr
# overlay1=<KO7>
next if ($list =~ s/^[a-zA-Z0-9_]+(=[a-zA-Z0-9_<>]+)?,
(.*)/$2/x);
# type = "CTRL+ALT"
next if ($list =~ s/^[a-zA-Z0-9_]+=\"[^\"]+\",(.*)/$1/);
# type[...] = "..."
next if ($list =~ s/^type\[[a-zA-Z0-9_]+\]=\"[^\"]+\",
(.*)/$1/x);
# actions[...] = [ ... ]
next if ($list =~ s/^actions\[[a-zA-Z0-9_]+\]=\[[^\]]*?\],
(.*)/$1/x);
die "$0: garbage in a key definition: \"$list\""
." in $filename.\n";
}
if (! defined $types_table{$code}
|| $types_table{$code} eq 'DEFAULT') {
$types_table{$code} = $default_key_type;
}
}
return 1;
} else {
return 0;
}
}
sub xkb_symbols_definitions {
my $oldmethod = $method;
my $default_key_type = 'DEFAULT';
while ($stream) {
$method = $oldmethod;
if (xkb_include ('symbols')) {
next;
}
$method = xkb_method ();
if ($stream =~ /^name/i) {
$stream =~ s/^name\[[a-zA-Z0-9_]+\]=\"[^\"]*\";(.*)/$1/i
or syntax_error "group name";
next;
}
if ($stream =~ (s/^key\.type(?:\[Group1\])?=\"([^\"]+)\";(.*)/$2/)) {
$default_key_type = $1;
next;
}
if ($stream =~ s/^[a-zA-Z0-9_]+\.[a-zA-Z0-9_]+=.*?;(.*)/$1/i) {
next;
}
if ($stream =~ s/^[a-zA-Z0-9_]+\.[a-zA-Z0-9_]+\[[a-zA-Z0-9_]+\]
=.*?;(.*)/$1/ix) {
next;
}
if (xkb_key $default_key_type) {
next;
}
if ($stream =~ /^(modifier_map|modmap|mod_map)/i) {
$stream =~ (s/^(modifier_map|modmap|mod_map)\s?[a-zA-Z0-9_]+
\{[^\}]*\};(.*)/$2/ix)
or syntax_error "modifier_map";
next;
}
if ($stream =~ /^virtual_modifiers/i) {
$stream =~ (s/^virtual_modifiers\s?[a-zA-Z0-9_,]+;(.*)/$1/ix)
or syntax_error "virtual_modifiers";
next;
}
last;
}
$method = $oldmethod;
}
sub xkb_definitions {
my $file_type = $_[0];
if ($file_type eq 'symbols') {
xkb_symbols_definitions();
} elsif ($file_type eq 'keycodes') {
xkb_keycodes_definitions();
} else {
die "$0: Bad xkb file type $file_type\n";
}
}
# Remove from $stream the characters up to the first unmatched "}"
sub skip_to_brace {
while ($stream && ($stream =~ s/^[^\}\{]*\{//)) {
&skip_to_brace;
}
$stream =~ s/^[^\}\{]*(\}|$)//;
}
sub xkb_block_list {
my $file_type = $_[0];
my $block = $_[1];
my $first = 1;
my $ok = 0;
my $mystream = $stream;
while ($stream) {
my $default = xkb_flags();
xkb_identifier() eq "xkb_". $file_type
or syntax_error "xkb_". $file_type;
my $name = xkb_string();
my $structured;
if ($stream =~ s/^\{//) {
$structured = 1;
} else {
$structured = 0;
}
if ($name eq $block || ($first && ! $block)) {
xkb_definitions ($file_type);
if ($structured) {
$stream =~ s/^\};.*// or syntax_error "};";
} else {
$stream = '';
}
$ok = 1;
} else {
if ($structured) {
skip_to_brace;
$stream =~ s/^;// or syntax_error ";";
} else {
last;
}
}
$first = 0;
}
if (! $ok) {
$stream = $mystream;
}
return $ok;
}
sub include_xkb_file {
my $file_type = $_[0];
my $include_list = '^'. $_[1];
my $oldmethod = $method;
my $oldbase_group = $base_group;
while ($include_list) {
my $file;
my $block;
if ($include_list =~ (s/^(\^|\+|\|)([^\(\|\+]+)\(([^\)]+)\)
:([1234])(.*)/$5/x)) {
if ($1 eq '+') {
$method = $override_method;
} elsif ($1 eq '|') {
$method = $augment_method;
}
$file = $2;
$block = $3;
$base_group = $4 - 1 + $base_group;
} elsif ($include_list =~ (s/^(\^|\+|\|)([^\(\|\+]+)\(([^\)]+)\)
(.*)/$4/x)) {
if ($1 eq '+') {
$method = $override_method;
} elsif ($1 eq '|') {
$method = $augment_method;
}
$file = $2;
$block = $3;
} elsif ($include_list =~ s/^(\^|\+|\|)([^\(\|\+]+):([1234])(.*)/$4/) {
if ($1 eq '+') {
$method = $override_method;
} elsif ($1 eq '|') {
$method = $augment_method;
}
$file = $2;
$block = '';
$base_group = $3 - 1 + $base_group;
} elsif ($include_list =~ s/^(\^|\+|\|)([^\(\|\+]+)(.*)/$3/) {
if ($1 eq '+') {
$method = $override_method;
} elsif ($1 eq '|') {
$method = $augment_method;
}
$file = $2;
$block = '';
} else {
die "$0: bad include list $include_list.\n";
}
my $oldstream = $stream;
if ($file =~ /^\.?\//) {
$stream = file_to_string ("$file");
} else {
$stream = file_to_string (xfilename "$file_type/$file");
}
my $oldfilename = $filename;
$filename = $file;
if (!xkb_block_list ($file_type, $block)) {
warning "Can not find \"$block\" in \"$file\".\n";
xkb_block_list ($file_type, '');
}
# Patch the Greek symbols. See Bug#1026986 and http://kbdlayout.info/kbdhe :
# - xkb-data makes shift-w a SIGMA, which is not that useful.
# - On the other hand, the kernel doesn't support double-dead-keys, and it
# is common usage to make shift-w a dead-acute-diaeresis (here encoded
# as dead_breve)
if ($file eq "gr") {
my $code = $keycodes_table{'AD02'}[0];
if (defined $code) {
my $symbol = $symbols_table{$code}[$base_group][1];
if ($symbol eq "Greek_SIGMA") {
$symbols_table{$code}[$base_group][1] = "dead_breve";
}
}
}
$stream = $oldstream;
$filename = $oldfilename;
$method = $oldmethod;
$base_group = $oldbase_group;
}
}
include_xkb_file 'keycodes', $keycodes;
foreach my $alias (keys %aliases) {
if (! defined $keycodes_table{$aliases{$alias}}) {
die "$0: undefined keyname $aliases{$alias} in ".
"an keycode alias definition in $filename.\n";
}
$keycodes_table{$alias} = [ @{$keycodes_table{$alias}},
@{$keycodes_table{$aliases{$alias}}} ];
}
include_xkb_file 'symbols', $symbols;
if ($arch eq 'at' || $arch eq 'evdev') {
# Pause - 110, Break - 114, PrintScreen - 111, SysRq - 92
for my $group (0 .. 3) {
# no separate Break key on AT keyboards. Break = Ctrl+Pause
if (defined $symbols_table{110}[$group][1]) {
$symbols_table{114}[$group] = [$symbols_table{110}[$group][1]];
}
# no separate SysRq key on AT keyboards. SysRq = Alt+PrintScreen
if (defined $symbols_table{111}[$group][1]) {
$symbols_table{92}[$group] = [$symbols_table{111}[$group][1]];
}
}
}
foreach my $key (keys %symbols_table) {
foreach my $group (0 .. $#{$symbols_table{$key}}) {
if (! defined $symbols_table{$key}[$group]) {
$symbols_table{$key}[$group] = [];
} else {
foreach my $level (0 .. $#{$symbols_table{$key}[$group]}) {
if (! defined $symbols_table{$key}[$group][$level]) {
$symbols_table{$key}[$group][$level] = 'NoSymbol';
}
}
}
}
if (! defined $types_table{$key}) {
$types_table{$key} = 'DEFAULT';
}
}
sub uni_to_legacy {
my $uni = $_[0];
if ($acm) {
if ($uni <= 0x7f) {
if ($freebsd && $uni >= 0x20 && $uni <= 0x7e) {
return sprintf "\'%c\'", $uni;
} else {
return sprintf "0x%02x", $uni;
}
} elsif (defined $acmtable{$uni}) {
if ($freebsd) {
return sprintf "%i", $acmtable{$uni};
} else {
return sprintf "0x%02x", $acmtable{$uni};
}
} else {
if ($verbosity >= 8) {
warning sprintf ("Unicode U+%04x does not exist "
."in the legacy encoding\n", $uni);
}
return $voidsymbol;
}
} else {
return 'U+'. sprintf ("%04x", $uni);
}
}
sub x_to_kernelsym {
my $xkeysym = $_[0];
my $kernelkeysym = $xkbsym_table{$xkeysym};
if (defined $kernelkeysym) {
if ($kernelkeysym !~ /^[0-9][0-9a-fA-F]{3}$/) {
return $kernelkeysym;
}
} else {
$kernelkeysym = ($xkeysym =~ /^0x0*(100)?([0-9a-fA-F]{4})$/
? $2
: ($xkeysym =~ /^U([0-9a-fA-F]+)$/
? $1
: undef));
}
if (defined $kernelkeysym) {
my $uni = hex ($kernelkeysym);
if ($uni > 0xFFFF || defined $forbidden{$uni}) {
if ($verbosity >= 8) {
warning "Forbidden Unicode \"U+$kernelkeysym\"\n";
}
return $voidsymbol;
} else {
if (pack("U", $uni) =~ /\p{IsAlpha}/) {
my $legacy = uni_to_legacy ($uni);
if ($legacy ne $voidsymbol) {
return '+'. $legacy; # further processed for FreeBSD
} else {
return $legacy;
}
} elsif ($uni <= 0x1f) {
return $controlsyms[$uni];
} else {
return uni_to_legacy ($uni);
}
}
} else {
warning "Unknown X keysym \"$xkeysym\"\n";
return $voidsymbol;
}
}
sub x_to_ascii {
my $xkeysym = $_[0];
my $kernelkeysym = $xkbsym_table{$xkeysym};
if (defined $kernelkeysym) {
if (defined $controlsyms_hash{$kernelkeysym}) {
return $controlsyms_hash{$kernelkeysym};
} elsif ($kernelkeysym !~ /^[0-9][0-9a-fA-F]{3}$/) {
return undef;
}
} else {
$kernelkeysym = ($xkeysym =~ /^0x0*(100)?([0-9a-fA-F]{4})$/
? $2
: ($xkeysym =~ /^U([0-9a-fA-F]+)$/
? $1
: undef));
}
if (defined $kernelkeysym) {
my $uni = hex ($kernelkeysym);
if (0x00 <= $uni && 0x7f >= $uni) {
return $uni;
}
}
return undef;
}
# A vector of symbol codes for a key
my @vector;
# $numlockable[group] -> whether the group is numlockable
my @numlockable;
# A vector with same length as @vector. Measures how well each element of
# @vector represents the xkb symbol for the particular key. Bigger values
# mean lower quality.
my @quality;
sub approximate {
my ($coord, $new_sym, $new_quality) = @_;
# $new_sym represents the xkb symbol for position $coord in @vector
# with quality $new_quality
if ((! defined $quality[$coord] || $quality[$coord] > $new_quality)
&& $new_sym ne $voidsymbol) {
$vector[$coord] = $new_sym;
$quality[$coord] = $new_quality;
}
}
# Fill @vector with data for key number $_[0]
sub flatten {
# Kernel X
# -----------------------------------------
# 1 Shift level 2 (Shift)
# 2 AltGr levels 3 and 4 (AltGr)
# 4 Control Control
# 8 Alt Alt
# 0 Group1
# 16 ShiftL Group2
# 32 ShiftR Group4
# 48 ShiftL+ShiftR Group3
my $key = $_[0];
@vector = ();
@quality = ();
@numlockable = (0,0,0,0);
my @real_group_table = ([-1, -1, -1, -1],
[0, 0, 0, 0], # gr1 -> gr1 -> gr1 -> gr1
[0, 1, 1, 0], # gr1 -> gr2 -> gr1 -> gr2
[0, 1, 2, 0], # gr1 -> gr2 -> gr1 -> gr3
[0, 1, 3, 2]);# gr1 -> gr2 -> gr3 -> gr4
for my $group (0..3) {
my $real_group = $real_group_table[1+$#{$symbols_table{$key}}][$group];
my $last_level;
while ($real_group >= 0
&& ($last_level = $#{$symbols_table{$key}[$real_group]}) < 0) {
$real_group = $real_group - 1;
}
next if ($real_group < 0);
for my $level (0..3) {
my $real_level = $level;
if ($types_table{$key} eq 'ONE_LEVEL') {
$real_level = 0;
} elsif ($types_table{$key} eq 'TWO_LEVEL') {
$real_level = $real_level % 2;
} elsif ($types_table{$key} eq 'THREE_LEVEL') {
if ($real_level > 2) {
$real_level = 2;
}
}
if ($last_level == -1) {
next;
} elsif ($last_level == 0) {
$real_level = 0;
} elsif ($last_level == 1) {
$real_level = $real_level % 2;
} elsif ($last_level == 2 && $real_level == 3) {
$real_level = 2;
} elsif ($real_level > $last_level) {
$real_level = $last_level;
}
my $coord;
for ($types_table{$key}) {
if (/^(DEFAULT|ONE_LEVEL|TWO_LEVEL
|THREE_LEVEL|ALPHABETIC
|EIGHT_LEVEL|EIGHT_LEVEL_ALPHABETIC
|EIGHT_LEVEL_SEMIALPHABETIC
|FOUR_LEVEL|FOUR_LEVEL_ALPHABETIC
|FOUR_LEVEL_SEMIALPHABETIC
|SEPARATE_CAPS_AND_SHIFT_ALPHABETIC
|KEYPAD|FOUR_LEVEL_X|FOUR_LEVEL_MIXED_KEYPAD
|FOUR_LEVEL_KEYPAD|LOCAL_EIGHT_LEVEL
|FOUR_LEVEL_PLUS_LOCK
)$/x) {
# Level0: plain
# Level1: shift
# Level2: altgr
# Level3: shift+altgr
$coord = ($group << 4) + $level;
} elsif (/^(PC_BREAK|PC_CONTROL_LEVEL2
|PC_LCONTROL_LEVEL2|PC_RCONTROL_LEVEL2)$/x) {
# Level0: plain
# Level1: control
if ($level == 0 || $level == 2) {
$coord = ($group << 4) + $level;
} else {
$coord = ($group << 4) + $level + 3;
}
} elsif (/^(PC_SYSRQ|PC_ALT_LEVEL2
|PC_LALT_LEVEL2|PC_RALT_LEVEL2)$/x) {
# Level0: plain
# Level1: alt
if ($level == 0 || $level == 2) {
$coord = ($group << 4) + $level;
} else {
# notice that $level is 1 or 3
$coord = ($group << 4) + $level + 7;
}
} elsif (/^SHIFT\+ALT$/) {
# Level0: plain
# Level1: shift+alt
if ($level == 0 || $level == 2) {
$coord = ($group << 4) + $level;
} else {
$coord = ($group << 4) + $level + 8;
}
} elsif (/^CTRL\+ALT$/) {
# Level0: plain
# Level1: control+alt
if ($level == 0 || $level == 2) {
$coord = ($group << 4) + $level;
} else {
$coord = ($group << 4) + $level + 11;
}
} elsif (/^PC_FN_LEVEL2$/) {
# Level0: plain
# Level1: altgr
$coord = ($group << 4) + ($level << 1);
} else {
warning "Unknown key type $types_table{$key}\n";
$coord = ($group << 4) + $level;
}
}
my $xkeysym = $symbols_table{$key}[$real_group][$real_level];
if ($xkeysym =~ /^KP_/) {
$numlockable[$group] = 1;
}
my $is_special = ($xkeysym !~ /^U[0-9a-fA-F]+$/
&& defined $xkbsym_table{$xkeysym}
&& ($xkbsym_table{$xkeysym}
!~ /^[0-9][0-9a-fA-F]{3}$/));
my $kernelkeysym = x_to_kernelsym ($xkeysym);
approximate ($coord, $kernelkeysym, 0);
if (defined (my $ascii = x_to_ascii ($xkeysym))) {
approximate (($coord | 0x08), $metasyms[$ascii], 1);
approximate (($coord | 0x04), $controlsyms[$ascii], 1);
approximate (($coord | 0x0c), $metacontrolsyms[$ascii], 1);
}
}
}
for my $x (0..1) {
my $mask = 1 << $x;
for my $coord (0..63) {
next if (! defined $vector[$coord]);
approximate($coord ^ $mask, $vector[$coord],
$quality[$coord] + $mask << 2);
}
}
for my $x (2..3) {
my $mask = 1 << $x;
for my $coord (0..63) {
next if (! defined $vector[$coord]);
approximate($coord | $mask, $vector[$coord],
$quality[$coord] + $mask << 2);
}
}
for my $coord (0..16) {
next if (! defined $vector[$coord]);
for my $mask (1<<4, 2<<4, 3<<4) {
approximate($coord | $mask, $vector[$coord],
$quality[$coord] + 1 << 6);
}
}
for my $coord (0 .. 63) {
if (! defined $vector[$coord]) {
$vector[$coord] = $voidsymbol;
}
}
for my $coord (0 .. 63) {
next if ($coord & 0x0c); # next if Control and/or Alt
my $mask = $kernel_modifiers{$vector[$coord]};
next unless (defined $mask);
for my $mod (4, 8, 12) {
if ($vector[$coord + $mod] eq $voidsymbol
&& ($vector[($coord + $mod) ^ $mask] eq $voidsymbol)) {
$vector[$coord + $mod] = $vector[$coord];
}
}
}
# Without this it would be possible to lock permanently
# a modifier key such as Control or Alt
for my $coord (0 .. 63) {
my $mask = $kernel_modifiers{$vector[$coord]};
if (defined $mask) {
$vector[$coord ^ $mask] = $vector[$coord];
if ($compact && ! $freebsd) {
# In non-Latin layouts AltGr=ShiftL
# AltGr = 0x02, ShiftL = 0x10
if (($mask & 0x02) && ($mask & 0x10)) {
$vector[$coord ^ $mask ^ 0x02] = $vector[$coord];
$vector[$coord ^ $mask ^ 0x10] = $vector[$coord];
} elsif ($mask & 0x02) {
$vector[$coord ^ $mask ^ 0x10] = $vector[$coord];
$vector[$coord ^ $mask ^ 0x10 ^ 0x02] = $vector[$coord];
} elsif ($mask & 0x10) {
$vector[$coord ^ $mask ^ 0x02] = $vector[$coord];
$vector[$coord ^ $mask ^ 0x02 ^ 0x10] = $vector[$coord];
}
}
}
}
if ($freebsd || ! $compact) {
for my $coord (16 .. 63) {
if ($vector[$coord] =~ /^(ShiftL|ShiftL_Lock|ashift|alock)$/) {
$vector[$coord] = $voidsymbol;
}
}
for my $coord (0 .. 15) {
if ($vector[$coord] eq 'ShiftL_Lock') { # 0 => 16
$vector[$coord + 16] = 'ShiftR_Lock'; # 16 => 48
$vector[$coord + 32] = 'ShiftR_Lock'; # 32 => 0
$vector[$coord + 48] = 'ShiftL_Lock'; # 48 => 32
} elsif ($vector[$coord] =~ /^(ShiftL|ashift|alock)$/) {
$vector[$coord + 16] = $vector[$coord];
$vector[$coord + 32] = $vector[$coord];
$vector[$coord + 48] = $vector[$coord];
}
}
} else {
for my $coord (16 .. 63) {
if ($vector[$coord] =~ /^(AltGr|AltGr_Lock)$/) {
$vector[$coord] = $voidsymbol;
}
}
for my $coord (0 .. 15) {
if ($vector[$coord] =~ /^(AltGr_Lock|AltGr)$/) {
$vector[$coord + 16] = $vector[$coord];
$vector[$coord + 32] = $vector[$coord];
$vector[$coord + 48] = $vector[$coord];
}
}
}
for my $group (0 .. 3) {
my $kp = undef;
for my $x (0 .. 15) {
my $coord = 16 * $group + $x;
if ($vector[$coord] =~ /^KP_/) {
$kp = $vector[$coord];
last;
}
}
if ($types_table{$key} =~ /^(KEYPAD|FOUR_LEVEL_X
|FOUR_LEVEL_MIXED_KEYPAD
|FOUR_LEVEL_KEYPAD)$/x
&& ! defined $kp) {
$kp = 'VoidSymbol';
$numlockable[$group] = 1;
}
if ($kp && ! $freebsd) {
for my $x (0 .. 15) {
my $coord = 16 * $group + $x;
for ($vector[$coord]) {
if (/^VoidSymbol$/) {
# KP_Begin and KP_Delete are mapped to VoidSymbol
$vector[$coord] = $kp;
} elsif (/$xkbsym_table{'plus'}/) {# not anchored match!
$vector[$coord] = 'KP_Add';
} elsif (/$xkbsym_table{'minus'}/) {
$vector[$coord] = 'KP_Subtract';
} elsif (/$xkbsym_table{'asterisk'}/) {
$vector[$coord] = 'KP_Multiply';
} elsif (/$xkbsym_table{'slash'}/) {
$vector[$coord] = 'KP_Divide';
} elsif (/$xkbsym_table{'comma'}/) {
$vector[$coord] = 'KP_Comma';
} elsif (/$xkbsym_table{'period'}/) {
$vector[$coord] = 'KP_Period';
} elsif (/$xkbsym_table{'0'}/) {
$vector[$coord] = 'KP_0';
} elsif (/$xkbsym_table{'1'}/) {
$vector[$coord] = 'KP_1';
} elsif (/$xkbsym_table{'2'}/) {
$vector[$coord] = 'KP_2';
} elsif (/$xkbsym_table{'3'}/) {
$vector[$coord] = 'KP_3';
} elsif (/$xkbsym_table{'4'}/) {
$vector[$coord] = 'KP_4';
} elsif (/$xkbsym_table{'5'}/) {
$vector[$coord] = 'KP_5';
} elsif (/$xkbsym_table{'6'}/) {
$vector[$coord] = 'KP_6';
} elsif (/$xkbsym_table{'7'}/) {
$vector[$coord] = 'KP_7';
} elsif (/$xkbsym_table{'8'}/) {
$vector[$coord] = 'KP_8';
} elsif (/$xkbsym_table{'9'}/) {
$vector[$coord] = 'KP_9';
} elsif (/^(Return|Enter)$/) {
$vector[$coord] = 'KP_Enter';
} elsif (/^Home$/) {
$vector[$coord] = 'KP_7';
} elsif (/^Left$/) {
$vector[$coord] = 'KP_4';
} elsif (/^Up$/) {
$vector[$coord] = 'KP_8';
} elsif (/^Right$/) {
$vector[$coord] = 'KP_6';
} elsif (/^Down$/) {
$vector[$coord] = 'KP_2';
} elsif (/^Prior$/) {
$vector[$coord] = 'KP_9';
} elsif (/^Next$/) {
$vector[$coord] = 'KP_3';
} elsif (/^End$/) {
$vector[$coord] = 'KP_1';
} elsif (/^Insert$/) {
$vector[$coord] = 'KP_0';
}
}
}
}
}
for my $group (0 .. 3) {
my $coord = $group << 4;
my $mainsym = $vector[$coord];
if ($mainsym =~ /^fkey([0-9]+)$/) {
my $num = $1;
if (1 <= $num && $num <= 12) {
$vector[$coord + 1] = 'fkey'. ($num+12); # shift
$vector[$coord + 4] = 'fkey'. ($num+24); # control
$vector[$coord + 5] = 'fkey'. ($num+36); # control + shift
$vector[$coord + 2] = 'scr'. sprintf("%02i", $num); #altgr
my $x = sprintf("%02i", ($num <= 6) ? $num+10 : $num);
$vector[$coord + 3] = 'scr'. $x; # altgr + shift
$vector[$coord + 6] = 'scr'. sprintf("%02i", $num); # altgr+ctrl
$vector[$coord + 7] = 'scr'. $x; # altgr + control + shift
} elsif ($num == 52 || $num == 56) {
my $sym = $num == 52 ? '\'-\'' : '\'+\'';
for my $i ($coord .. $coord+15) {
if ($vector[$i] eq $mainsym && $vector[$i^1] eq $mainsym) {
$vector[$i | 1] = $sym;
}
}
} elsif ($num == 60 && $vector[$coord + 1] eq 'fkey60') {
$vector[$coord + 1] = 'paste';
}
} elsif ($mainsym =~ /^esc$/) {
$vector[$coord + 6] = 'debug';
$vector[$coord + 7] = 'debug';
} elsif ($mainsym =~ /^saver$/) { # 'Pause' key
$vector[$coord] = 'slock';
$vector[$coord + 1] = 'saver'; # shift
$vector[$coord + 2] = 'susp'; # altgr
$vector[$coord + 3] = 'susp'; # altgr + shift
$vector[$coord + 4] = 'slock'; # ctrl
$vector[$coord + 5] = 'saver'; # ctrl + shift
$vector[$coord + 6] = 'susp'; # ctrl + altgr
$vector[$coord + 7] = 'susp'; # ctrl + altgr + shift
} elsif ($freebsd && $mainsym =~ /^\' \'$/) {
$vector[$coord + 6] = 'susp';
$vector[$coord + 7] = 'susp';
} elsif ($mainsym =~ /^ht$/) {
for my $i ($coord .. $coord+15) {
if ($vector[$i] eq 'ht' && $vector[$i ^ 1] eq 'ht') {
$vector[$i | 1] = 'btab';
}
}
} elsif ($mainsym =~ /^nscr$/) {
for my $i ($coord .. $coord+15) {
if ($vector[$i] eq 'nscr' && $vector[$i ^ 1] eq 'nscr') {
$vector[$i | 1] = 'pscr';
}
}
$vector[$coord + 4] = 'debug';
$vector[$coord + 5] = 'debug';
} elsif ($mainsym =~ /^F([0-9]+)$/) {
my $num = $1;
$vector[$coord + 1] = 'F'. ($num + 12); # shift
$vector[$coord + 2] = 'Console_'. ($num + 12); # altgr
$vector[$coord + 3] = 'Console_'. ($num + 24); # altgr + shift
$vector[$coord + 4] = 'F'. ($num + 24); # control
$vector[$coord + 5] = 'F'. ($num + 36); # control + shift
$vector[$coord + 6] = 'Console_'. ($num + 12); # control + altgr
$vector[$coord + 7] = 'Console_'. ($num + 24); # control+altgr+shift
$vector[$coord + 8] = 'Console_'. $num; # alt
$vector[$coord + 9] = 'Console_'. ($num + 12); # alt + shift
$vector[$coord + 12] = 'Console_'. $num; # control + alt
$vector[$coord + 13] = 'Console_'. ($num + 12); # control+alt+shift
} elsif ($mainsym eq 'Scroll_Lock' || $mainsym eq 'Help') {
$vector[$coord + 1] = 'Show_Memory';
$vector[$coord + 2] = 'Show_Registers';
$vector[$coord + 4] = 'Show_State';
$vector[$coord + 8] = 'Show_Registers';
} elsif ($mainsym =~ /^KP_([0-9])$/) {
my $num = $1;
$vector[$coord + 2] = 'Hex_'. $num;
$vector[$coord + 9] = 'Hex_'. $num;
$vector[$coord + 8] = 'Ascii_'. $num;
} elsif ($mainsym eq 'Num_Lock') {
$vector[$coord + 2] = 'Hex_A';
$vector[$coord + 9] = 'Hex_A';
} elsif ($mainsym eq 'KP_Divide') {
$vector[$coord + 2] = 'Hex_B';
$vector[$coord + 9] = 'Hex_B';
} elsif ($mainsym eq 'KP_Multiply') {
$vector[$coord + 2] = 'Hex_C';
$vector[$coord + 9] = 'Hex_C';
} elsif ($mainsym eq 'KP_Subtract') {
$vector[$coord + 2] = 'Hex_D';
$vector[$coord + 9] = 'Hex_D';
} elsif ($mainsym eq 'KP_Add') {
$vector[$coord + 2] = 'Hex_E';
$vector[$coord + 9] = 'Hex_E';
} elsif ($mainsym eq 'KP_Enter') {
$vector[$coord + 2] = 'Hex_F';
$vector[$coord + 9] = 'Hex_F';
} elsif ($mainsym eq 'Prior' || $mainsym eq 'PageUp') {
$vector[$coord + 1] = 'Scroll_Backward';
} elsif ($mainsym eq 'Next' || $mainsym eq 'PageDown') {
$vector[$coord + 1] = 'Scroll_Forward';
} elsif ($mainsym eq 'Left') {
$vector[$coord + 8] = 'Decr_Console';
} elsif ($mainsym eq 'Right') {
$vector[$coord + 8] = 'Incr_Console';
} elsif ($mainsym eq 'Up') {
$vector[$coord + 8] = 'KeyboardSignal';
}
}
return @vector;
}
sub print_vector {
my $kernel_code = $_[0];
my $only_VoidSymbol = 1;
my $no_NoSymbol = 1;
for my $mask (0 .. 63) {
if ($vector[$mask] ne $voidsymbol && $vector[$mask] ne 'NoSymbol') {
$only_VoidSymbol = 0;
last;
}
}
return if ($only_VoidSymbol && $compact);
for my $mask (0 .. 63) {
if ($vector[$mask] eq 'NoSymbol') {
$no_NoSymbol = 0;
last;
}
}
if ($freebsd) {
my @capslockable = (0,0,0,0);
for my $group (0 .. 3) {
if ($vector[$group * 16] =~ /^\+/) {
$capslockable[$group] = 1;
last;
}
}
for my $mask (0 .. 63) {
$vector[$mask] =~ s/^\+//;
$vector[$mask] =~ s/^NoSymbol$/nop/;
}
for my $group (0 .. 1) {
next if ($group && $symbols !~ /:2/);
my $lockstate = ($capslockable[$group] ?
($numlockable[$group] ? 'B' : 'C')
: ($numlockable[$group] ? 'N' : 'O'));
$KEYMAP .= sprintf " %03i ", $kernel_code + 128*$group;
for my $mask (0, 1, 4, 5, 2, 3, 6, 7) {
$KEYMAP .= sprintf "%-6s ", $vector[$mask + 16*$group];
}
$KEYMAP .= " $lockstate\n";
}
} elsif ($compact) {
my $line = ($symbols =~ /:2/ # true if the keymap is non-latin
? "@vector[0, 1, 16, 17, 4, 20, 8, 24, 12, 28]"
: "@vector[0, 1, 2, 3, 4, 6, 8, 10, 12, 14]");
$line =~ s/NoSymbol/VoidSymbol/g;
$KEYMAP .= "keycode $kernel_code = $line\n";
} else {
my @capsvector = @vector;
for my $mask (0 .. 63) {
if ($capsvector[$mask] =~ /^(\+?)U\+([0-9a-fA-F]+)$/) {
my $v = hex ($2);
my $l = ord (lc (pack ("U", $v)));
my $u = ord (uc (pack ("U", $v)));
my $c = ($v == $l ? $u : $l);
$capsvector[$mask] = $1 ."U+". sprintf ("%04x", $c);
if ($v != $c && $v > 0x7f) {
$broken_caps = 1;
}
}
}
if ($no_NoSymbol) {
$KEYMAP .= "keycode $kernel_code = @vector @capsvector\n";
} else {
for my $mask (0 .. 63) {
if ($vector[$mask] ne 'NoSymbol') {
$KEYMAP .= "$modifier_combinations[$mask]"
." keycode $kernel_code = $vector[$mask]\n";
if ($modifier_combinations[$mask] =~ /plain/) {
$KEYMAP .= "ctrll"
." keycode $kernel_code = $capsvector[$mask]\n";
} else {
$KEYMAP .= "ctrll $modifier_combinations[$mask]"
." keycode $kernel_code = $capsvector[$mask]\n";
}
}
}
}
}
}
my %at_scancodes = (
9 => 1,
10 => 2,
11 => 3,
12 => 4,
13 => 5,
14 => 6,
15 => 7,
16 => 8,
17 => 9,
18 => 10,
19 => 11,
20 => 12,
21 => 13,
22 => 14,
23 => 15,
24 => 16,
25 => 17,
26 => 18,
27 => 19,
28 => 20,
29 => 21,
30 => 22,
31 => 23,
32 => 24,
33 => 25,
34 => 26,
35 => 27,
36 => 28,
37 => 29,
38 => 30,
39 => 31,
40 => 32,
41 => 33,
42 => 34,
43 => 35,
44 => 36,
45 => 37,
46 => 38,
47 => 39,
48 => 40,
49 => 41,
50 => 42,
51 => 43,
52 => 44,
53 => 45,
54 => 46,
55 => 47,
56 => 48,
57 => 49,
58 => 50,
59 => 51,
60 => 52,
61 => 53,
62 => 54,
63 => 55,
64 => 56,
65 => 57,
66 => 58,
67 => 59,
68 => 60,
69 => 61,
70 => 62,
71 => 63,
72 => 64,
73 => 65,
74 => 66,
75 => 67,
76 => 68,
77 => 69,
78 => 70,
79 => 71,
80 => 72,
81 => 73,
82 => 74,
83 => 75,
84 => 76,
85 => 77,
86 => 78,
87 => 79,
88 => 80,
89 => 81,
90 => 82,
91 => 83,
92 => 84,
93 => -1, # fake key (KP_Equal)
94 => 86,
95 => 87,
96 => 88,
97 => 102,
98 => 103,
99 => 104,
100 => 105,
102 => 106,
103 => 107,
104 => 108,
105 => 109,
106 => 110,
107 => 111,
108 => 96,
109 => 97,
110 => 119,
111 => 99,
112 => 98,
113 => 100,
114 => 101,
115 => 125,
116 => 126,
117 => 127,
118 => -1, # Japanese
119 => -1, # Japanese
120 => -1, # Japanese
123 => -1,
124 => -1, # fake key
125 => -1, # fake key
126 => -1, # fake key
127 => -1, # fake key
128 => -1, # fake key
129 => -1, # Japanese
131 => -1, # Japanese
133 => 124, # Japanese
134 => 121, # Brasilian ABNT2
144 => -1, # Japanese
156 => -1, # fake key
208 => -1, # Japanese
209 => -1, # Korean
210 => -1, # Korean
211 => 89, # Brasilian ABNT2, Japanese
214 => -1, # alternate between internal and multimedia display
215 => -1, # turn light on/of
216 => -1, # brightness down
217 => -1, # brightness up
);
my %freebsd_scancodes = (
9 => 1,
10 => 2,
11 => 3,
12 => 4,
13 => 5,
14 => 6,
15 => 7,
16 => 8,
17 => 9,
18 => 10,
19 => 11,
20 => 12,
21 => 13,
22 => 14,
23 => 15,
24 => 16,
25 => 17,
26 => 18,
27 => 19,
28 => 20,
29 => 21,
30 => 22,
31 => 23,
32 => 24,
33 => 25,
34 => 26,
35 => 27,
36 => 28,
37 => 29,
38 => 30,
39 => 31,
40 => 32,
41 => 33,
42 => 34,
43 => 35,
44 => 36,
45 => 37,
46 => 38,
47 => 39,
48 => 40,
49 => 41,
50 => 42,
51 => 43,
52 => 44,
53 => 45,
54 => 46,
55 => 47,
56 => 48,
57 => 49,
58 => 50,
59 => 51,
60 => 52,
61 => 53,
62 => 54,
63 => 55,
64 => 56,
65 => 57,
66 => 58,
67 => 59,
68 => 60,
69 => 61,
70 => 62,
71 => 63,
72 => 64,
73 => 65,
74 => 66,
75 => 67,
76 => 68,
77 => 69,
78 => 70,
79 => 71,
80 => 72,
81 => 73,
82 => 74,
83 => 75,
84 => 76,
85 => 77,
86 => 78,
87 => 79,
88 => 80,
89 => 81,
90 => 82,
91 => 83,
92 => 84,
93 => -1, # fake key (KP_Equal)
94 => 86,
95 => 87,
96 => 88,
97 => 94,
98 => 95,
99 => 96,
100 => 97,
102 => 98,
103 => 99,
104 => 100,
105 => 101,
106 => 102,
107 => 103,
108 => 89,
109 => 90,
110 => 104,
111 => 92,
112 => 91,
113 => 93,
114 => 108,
115 => 105,
116 => 106,
117 => 107,
118 => -1, # Japanese
119 => -1, # Japanese
120 => -1, # Japanese
123 => -1,
124 => -1, # fake key
125 => -1, # fake key
126 => -1, # fake key
127 => -1, # fake key
128 => -1, # fake key
129 => -1, # Japanese
131 => -1, # Japanese
133 => 125, # Japanese
134 => 126, # Brasilian ABNT2
144 => -1, # Japanese
156 => -1, # fake key
208 => -1, # Japanese
209 => -1, # Korean
210 => -1, # Korean
211 => 115, # Brasilian ABNT2, Japanese
214 => -1, # alternate between internal and multimedia display
215 => -1, # turn light on/of
216 => -1, # brightness down
217 => -1, # brightness up
);
if ($freebsd) {
$KEYMAP .=
"# alt\n".
"# scan cntrl alt alt cntrl lock\n".
"# code base shift cntrl shift alt shift cntrl shift state\n".
"# ------------------------------------------------------------------\n";
#" 000 nop nop nop nop nop nop nop nop O\n";
} elsif ($compact) {
$KEYMAP .= "keymaps 0-4,6,8,10,12,14\n";
} else {
$KEYMAP .= "keymaps 0-127\n";
}
if ($freebsd) {
foreach my $key (sort {$a <=> $b} (keys %symbols_table)) {
my $kernel_code = $freebsd_scancodes{$key};
next if (! defined $kernel_code || $kernel_code < 0);
@vector = flatten ($key);
if ($kernel_code == 83 || $kernel_code == 103) {
for my $coord (0+6, 0+7, 16+6, 16+7, 32+6, 32+7, 48+6, 48+7,) {
$vector[$coord] = 'boot';
}
}
print_vector $kernel_code;
}
} elsif ($arch eq 'at' || $arch eq 'evdev') {
foreach my $key (sort {$a <=> $b} (keys %symbols_table)) {
my $kernel_code = (($arch eq 'at') ? $at_scancodes{$key} : $key - 8);
next if (! defined $kernel_code || $kernel_code < 0);
@vector = flatten ($key);
if ($kernel_code == 99) {
for my $coord (0, 1, 16, 17, 32, 33, 48, 49) {
$vector[$coord] = 'VoidSymbol';
}
} elsif ($kernel_code == 83 || $kernel_code == 111) {
for my $coord (0+6, 0+12, 0+14,
16+6, 16+12, 16+14,
32+6, 32+12, 32+14,
48+6, 48+12, 48+14) {
$vector[$coord] = 'Boot';
}
}
print_vector $kernel_code;
}
} elsif ($arch eq 'macintosh') {
foreach my $key (sort {$a <=> $b} (keys %symbols_table)) {
my $kernel_code = $key - 8;
@vector = flatten ($key);
print_vector $kernel_code;
}
$KEYMAP .= '\
keycode 127 =
shift control keycode 127 = Boot
'
} elsif ($arch eq 'ataritt') {
foreach my $key (sort {$a <=> $b} (keys %symbols_table)) {
my $kernel_code = $key - 8;
if ($kernel_code == 97) {
@vector = ('F246', 'Break', 'F246', 'F246',
'F246', 'F246', 'F246', 'F246',
'Last_Console', 'F246', 'F246', 'F246',
'F246', 'F246', 'F246', 'F246') x 4;
} else {
@vector = flatten ($key);
}
if ($kernel_code == 83 || $kernel_code == 113) {
for my $coord (0+6, 0+12, 0+14,
16+6, 16+12, 16+14,
32+6, 32+12, 32+14,
48+6, 48+12, 48+14) {
$vector[$coord] = 'Boot';
}
}
print_vector $kernel_code;
}
} elsif ($arch eq 'amiga') {
foreach my $key (sort {$a <=> $b} (keys %symbols_table)) {
my $kernel_code = $key - 8;
@vector = flatten ($key);
if ($kernel_code == 60) {
for my $coord (0+6, 0+12, 0+14,
16+6, 16+12, 16+14,
32+6, 32+12, 32+14,
48+6, 48+12, 48+14) {
$vector[$coord] = 'Boot';
}
}
print_vector $kernel_code;
}
} elsif ($arch eq 'sun') {
foreach my $key (sort {$a <=> $b} (keys %symbols_table)) {
my $kernel_code = $key - 7;
@vector = flatten ($key);
if ($kernel_code == 50) {
for my $coord (0+6, 0+12, 0+14,
16+6, 16+12, 16+14,
32+6, 32+12, 32+14,
48+6, 48+12, 48+14) {
$vector[$coord] = 'Boot';
}
}
print_vector $kernel_code;
}
} else {
die "$0: Unsupported keyboard type $arch\n";
}
if ($broken_caps) {
$KEYMAP =~ s/Caps_Lock/CtrlL_Lock/g;
}
print $KEYMAP;
if (!$compose_charmap && $charmap) {
$compose_charmap = $charmap;
}
if ($freebsd) {
if ($compose_charmap) {
my $file1 = "/etc/console-setup/dkey.${compose_charmap}.inc";
my $file2 = "$installdir/etc/console-setup/dkey.${compose_charmap}.inc";
if (-f $file1) {
system("cat", $file1);
} elsif (-f $file2) {
system("cat", $file2);
}
}
} else {
print "strings as usual\n";
if ($compose_charmap) {
my $file1 = "/etc/console-setup/compose.${compose_charmap}.inc";
my $file2 = "$installdir/etc/console-setup/compose.${compose_charmap}.inc";
if (-f $file1) {
system("cat", $file1);
} elsif (-f $file2) {
system("cat", $file2);
}
}
}
my $file1 = "/etc/console-setup/remap.inc";
my $file2 = "$installdir/etc/console-setup/remap.inc";
if (-f $file1) {
system("cat", $file1);
} elsif (-f $file2) {
system("cat", $file2);
}
exit 0;
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| X11 | Folder | 0755 |
|
|
| 411toppm | File | 14.3 KB | 0755 |
|
| JxrDecApp | File | 26.38 KB | 0755 |
|
| JxrEncApp | File | 27.77 KB | 0755 |
|
| NF | File | 963 B | 0755 |
|
| VGAuthService | File | 130.54 KB | 0755 |
|
| [ | File | 54.44 KB | 0755 |
|
| aa-enabled | File | 18.3 KB | 0755 |
|
| aa-exec | File | 18.3 KB | 0755 |
|
| aa-features-abi | File | 18.3 KB | 0755 |
|
| ab | File | 58.43 KB | 0755 |
|
| acpidbg | File | 1.58 KB | 0755 |
|
| add-apt-repository | File | 16.04 KB | 0755 |
|
| addpart | File | 14.38 KB | 0755 |
|
| animate | File | 14.31 KB | 0755 |
|
| animate-im6 | File | 14.31 KB | 0755 |
|
| animate-im6.q16 | File | 14.31 KB | 0755 |
|
| anytopnm | File | 12.26 KB | 0755 |
|
| apport-bug | File | 2.27 KB | 0755 |
|
| apport-cli | File | 13.31 KB | 0755 |
|
| apport-collect | File | 2.27 KB | 0755 |
|
| apport-unpack | File | 3.7 KB | 0755 |
|
| appstreamcli | File | 138.23 KB | 0755 |
|
| apropos | File | 47.28 KB | 0755 |
|
| apt | File | 18.38 KB | 0755 |
|
| apt-add-repository | File | 16.04 KB | 0755 |
|
| apt-cache | File | 86.47 KB | 0755 |
|
| apt-cdrom | File | 26.47 KB | 0755 |
|
| apt-config | File | 30.39 KB | 0755 |
|
| apt-extracttemplates | File | 22.47 KB | 0755 |
|
| apt-ftparchive | File | 222.48 KB | 0755 |
|
| apt-get | File | 50.47 KB | 0755 |
|
| apt-key | File | 27.99 KB | 0755 |
|
| apt-mark | File | 54.47 KB | 0755 |
|
| apt-sortpkgs | File | 50.4 KB | 0755 |
|
| arch | File | 34.51 KB | 0755 |
|
| aria_chk | File | 5.52 MB | 0755 |
|
| aria_dump_log | File | 5.31 MB | 0755 |
|
| aria_ftdump | File | 5.32 MB | 0755 |
|
| aria_pack | File | 5.35 MB | 0755 |
|
| aria_read_log | File | 5.48 MB | 0755 |
|
| arpaname | File | 14.3 KB | 0755 |
|
| asciitopgm | File | 14.3 KB | 0755 |
|
| atktopbm | File | 14.3 KB | 0755 |
|
| automat-visualize3 | File | 984 B | 0755 |
|
| avstopam | File | 14.3 KB | 0755 |
|
| awk | File | 722.5 KB | 0755 |
|
| b2sum | File | 54.51 KB | 0755 |
|
| base32 | File | 38.51 KB | 0755 |
|
| base64 | File | 38.51 KB | 0755 |
|
| basename | File | 34.51 KB | 0755 |
|
| basenc | File | 46.51 KB | 0755 |
|
| bash | File | 1.38 MB | 0755 |
|
| bashbug | File | 6.82 KB | 0755 |
|
| bc | File | 90.82 KB | 0755 |
|
| bdftopcf | File | 42.26 KB | 0755 |
|
| bdftruncate | File | 14.15 KB | 0755 |
|
| bioradtopgm | File | 14.3 KB | 0755 |
|
| bmptopnm | File | 26.3 KB | 0755 |
|
| bmptoppm | File | 26.3 KB | 0755 |
|
| boltctl | File | 122.84 KB | 0755 |
|
| bpftrace | File | 2.15 MB | 0755 |
|
| bpftrace-aotrt | File | 985.37 KB | 0755 |
|
| brushtopbm | File | 14.3 KB | 0755 |
|
| btrfs | File | 1001.25 KB | 0755 |
|
| btrfs-convert | File | 576.3 KB | 0755 |
|
| btrfs-find-root | File | 520.3 KB | 0755 |
|
| btrfs-image | File | 552.3 KB | 0755 |
|
| btrfs-map-logical | File | 520.3 KB | 0755 |
|
| btrfs-select-super | File | 516.3 KB | 0755 |
|
| btrfsck | File | 1001.25 KB | 0755 |
|
| btrfstune | File | 544.3 KB | 0755 |
|
| busctl | File | 94.59 KB | 0755 |
|
| busybox | File | 2.03 MB | 0755 |
|
| byobu | File | 8.5 KB | 0755 |
|
| byobu-config | File | 996 B | 0755 |
|
| byobu-ctrl-a | File | 4.66 KB | 0755 |
|
| byobu-disable | File | 1.26 KB | 0755 |
|
| byobu-disable-prompt | File | 1.31 KB | 0755 |
|
| byobu-enable | File | 1.15 KB | 0755 |
|
| byobu-enable-prompt | File | 1.42 KB | 0755 |
|
| byobu-export | File | 1.39 KB | 0755 |
|
| byobu-janitor | File | 7.04 KB | 0755 |
|
| byobu-keybindings | File | 1.47 KB | 0755 |
|
| byobu-launch | File | 3.25 KB | 0755 |
|
| byobu-launcher | File | 1.87 KB | 0755 |
|
| byobu-launcher-install | File | 2.47 KB | 0755 |
|
| byobu-launcher-uninstall | File | 1.52 KB | 0755 |
|
| byobu-layout | File | 3.27 KB | 0755 |
|
| byobu-prompt | File | 1.13 KB | 0755 |
|
| byobu-quiet | File | 1.38 KB | 0755 |
|
| byobu-reconnect-sockets | File | 3.22 KB | 0755 |
|
| byobu-screen | File | 8.5 KB | 0755 |
|
| byobu-select-backend | File | 1.42 KB | 0755 |
|
| byobu-select-profile | File | 5.06 KB | 0755 |
|
| byobu-select-session | File | 1012 B | 0755 |
|
| byobu-shell | File | 1.66 KB | 0755 |
|
| byobu-silent | File | 1.28 KB | 0755 |
|
| byobu-status | File | 5.87 KB | 0755 |
|
| byobu-status-detail | File | 1.18 KB | 0755 |
|
| byobu-tmux | File | 8.5 KB | 0755 |
|
| byobu-ugraph | File | 4.56 KB | 0755 |
|
| byobu-ulevel | File | 11.71 KB | 0755 |
|
| c_rehash | File | 6.68 KB | 0755 |
|
| cacaclock | File | 14.45 KB | 0755 |
|
| cacademo | File | 278.39 KB | 0755 |
|
| cacafire | File | 18.3 KB | 0755 |
|
| cacaplay | File | 14.3 KB | 0755 |
|
| cacaserver | File | 18.3 KB | 0755 |
|
| cacaview | File | 22.39 KB | 0755 |
|
| cameratopam | File | 110.38 KB | 0755 |
|
| captoinfo | File | 90.41 KB | 0755 |
|
| cat | File | 38.46 KB | 0755 |
|
| catman | File | 30.77 KB | 0755 |
|
| certbot | File | 958 B | 0755 |
|
| cftp3 | File | 224 B | 0755 |
|
| cgi-fcgi | File | 18.15 KB | 0755 |
|
| chafa | File | 170.23 KB | 0755 |
|
| chage | File | 70.49 KB | 2755 |
|
| chardet | File | 221 B | 0755 |
|
| chardetect | File | 221 B | 0755 |
|
| chattr | File | 14.31 KB | 0755 |
|
| chcon | File | 58.51 KB | 0755 |
|
| checkgid | File | 14.3 KB | 0755 |
|
| chfn | File | 71.09 KB | 4755 |
|
| chgrp | File | 58.51 KB | 0755 |
|
| chmod | File | 54.51 KB | 0755 |
|
| choom | File | 22.38 KB | 0755 |
|
| chown | File | 58.51 KB | 0755 |
|
| chrt | File | 30.38 KB | 0755 |
|
| chsh | File | 43.71 KB | 4755 |
|
| chvt | File | 14.37 KB | 0755 |
|
| cifsiostat | File | 26.45 KB | 0755 |
|
| cistopbm | File | 14.3 KB | 0755 |
|
| ckbcomp | File | 147.14 KB | 0755 |
|
| ckeygen3 | File | 227 B | 0755 |
|
| cksum | File | 102.52 KB | 0755 |
|
| clear | File | 14.31 KB | 0755 |
|
| clear_console | File | 14.23 KB | 0755 |
|
| cmp | File | 42.39 KB | 0755 |
|
| cmuwmtopbm | File | 14.3 KB | 0755 |
|
| codepage | File | 14.3 KB | 0755 |
|
| col | File | 22.38 KB | 0755 |
|
| col1 | File | 963 B | 0755 |
|
| col2 | File | 963 B | 0755 |
|
| col3 | File | 963 B | 0755 |
|
| col4 | File | 963 B | 0755 |
|
| col5 | File | 963 B | 0755 |
|
| col6 | File | 963 B | 0755 |
|
| col7 | File | 963 B | 0755 |
|
| col8 | File | 963 B | 0755 |
|
| col9 | File | 963 B | 0755 |
|
| colcrt | File | 14.38 KB | 0755 |
|
| colrm | File | 14.38 KB | 0755 |
|
| column | File | 38.38 KB | 0755 |
|
| comm | File | 38.52 KB | 0755 |
|
| compare | File | 14.31 KB | 0755 |
|
| compare-im6 | File | 14.31 KB | 0755 |
|
| compare-im6.q16 | File | 14.31 KB | 0755 |
|
| composite | File | 14.31 KB | 0755 |
|
| composite-im6 | File | 14.31 KB | 0755 |
|
| composite-im6.q16 | File | 14.31 KB | 0755 |
|
| conch3 | File | 225 B | 0755 |
|
| conjure | File | 14.31 KB | 0755 |
|
| conjure-im6 | File | 14.31 KB | 0755 |
|
| conjure-im6.q16 | File | 14.31 KB | 0755 |
|
| convert | File | 14.31 KB | 0755 |
|
| convert-im6 | File | 14.31 KB | 0755 |
|
| convert-im6.q16 | File | 14.31 KB | 0755 |
|
| corelist | File | 15.01 KB | 0755 |
|
| cp | File | 138.52 KB | 0755 |
|
| cpan | File | 8.16 KB | 0755 |
|
| cpan5.38-x86_64-linux-gnu | File | 8.18 KB | 0755 |
|
| cpio | File | 137.67 KB | 0755 |
|
| cpupower | File | 1.58 KB | 0755 |
|
| crontab | File | 38.73 KB | 2755 |
|
| csplit | File | 50.51 KB | 0755 |
|
| ctail | File | 960 B | 0755 |
|
| ctstat | File | 22.66 KB | 0755 |
|
| curl | File | 290.32 KB | 0755 |
|
| cut | File | 38.51 KB | 0755 |
|
| cvtsudoers | File | 321.1 KB | 0755 |
|
| dash | File | 126.74 KB | 0755 |
|
| date | File | 106.51 KB | 0755 |
|
| dbilogstrip | File | 1.35 KB | 0755 |
|
| dbiprof | File | 6.06 KB | 0755 |
|
| dbiproxy | File | 5.27 KB | 0755 |
|
| dbus-cleanup-sockets | File | 14.29 KB | 0755 |
|
| dbus-daemon | File | 230.64 KB | 0755 |
|
| dbus-monitor | File | 26.3 KB | 0755 |
|
| dbus-run-session | File | 14.3 KB | 0755 |
|
| dbus-send | File | 30.29 KB | 0755 |
|
| dbus-update-activation-environment | File | 14.29 KB | 0755 |
|
| dbus-uuidgen | File | 14.29 KB | 0755 |
|
| dbxtool | File | 30.3 KB | 0755 |
|
| dd | File | 70.54 KB | 0755 |
|
| ddbugtopbm | File | 14.3 KB | 0755 |
|
| deallocvt | File | 14.37 KB | 0755 |
|
| deb-systemd-helper | File | 23.79 KB | 0755 |
|
| deb-systemd-invoke | File | 6.97 KB | 0755 |
|
| debconf | File | 2.8 KB | 0755 |
|
| debconf-apt-progress | File | 11.57 KB | 0755 |
|
| debconf-communicate | File | 623 B | 0755 |
|
| debconf-copydb | File | 1.68 KB | 0755 |
|
| debconf-escape | File | 668 B | 0755 |
|
| debconf-set-selections | File | 3.14 KB | 0755 |
|
| debconf-show | File | 1.78 KB | 0755 |
|
| debian-distro-info | File | 30.95 KB | 0755 |
|
| delpart | File | 14.38 KB | 0755 |
|
| delv | File | 45.32 KB | 0755 |
|
| df | File | 87.08 KB | 0755 |
|
| dh_bash-completion | File | 4.42 KB | 0755 |
|
| dh_installxmlcatalogs | File | 9.22 KB | 0755 |
|
| dh_perl_dbi | File | 1.17 KB | 0755 |
|
| diff | File | 134.55 KB | 0755 |
|
| diff3 | File | 58.52 KB | 0755 |
|
| dig | File | 150.83 KB | 0755 |
|
| dir | File | 138.98 KB | 0755 |
|
| dircolors | File | 46.52 KB | 0755 |
|
| dirmngr | File | 473.77 KB | 0755 |
|
| dirmngr-client | File | 54.92 KB | 0755 |
|
| dirname | File | 34.38 KB | 0755 |
|
| display | File | 14.31 KB | 0755 |
|
| display-im6 | File | 14.31 KB | 0755 |
|
| display-im6.q16 | File | 14.31 KB | 0755 |
|
| distro-info | File | 26.89 KB | 0755 |
|
| dmesg | File | 68.64 KB | 0755 |
|
| dnsdomainname | File | 22.23 KB | 0755 |
|
| dnssec-cds | File | 51.39 KB | 0755 |
|
| dnssec-dsfromkey | File | 38.38 KB | 0755 |
|
| dnssec-importkey | File | 38.38 KB | 0755 |
|
| dnssec-keyfromlabel | File | 42.38 KB | 0755 |
|
| dnssec-keygen | File | 46.38 KB | 0755 |
|
| dnssec-revoke | File | 30.38 KB | 0755 |
|
| dnssec-settime | File | 46.38 KB | 0755 |
|
| dnssec-signzone | File | 90.41 KB | 0755 |
|
| dnssec-verify | File | 30.39 KB | 0755 |
|
| do-release-upgrade | File | 10.42 KB | 0755 |
|
| domainname | File | 22.23 KB | 0755 |
|
| dpkg | File | 310.72 KB | 0755 |
|
| dpkg-deb | File | 142.58 KB | 0755 |
|
| dpkg-divert | File | 118.57 KB | 0755 |
|
| dpkg-maintscript-helper | File | 20.71 KB | 0755 |
|
| dpkg-query | File | 134.56 KB | 0755 |
|
| dpkg-realpath | File | 4.09 KB | 0755 |
|
| dpkg-split | File | 98.53 KB | 0755 |
|
| dpkg-statoverride | File | 50.38 KB | 0755 |
|
| dpkg-trigger | File | 42.53 KB | 0755 |
|
| du | File | 98.51 KB | 0755 |
|
| dumpkeys | File | 162.85 KB | 0755 |
|
| dvipdf | File | 1007 B | 0755 |
|
| ec2metadata | File | 8.38 KB | 0755 |
|
| echo | File | 34.38 KB | 0755 |
|
| ed | File | 58.55 KB | 0755 |
|
| editor | File | 272.5 KB | 0755 |
|
| egrep | File | 41 B | 0755 |
|
| eject | File | 42.23 KB | 0755 |
|
| enc2xs | File | 40.96 KB | 0755 |
|
| encguess | File | 3 KB | 0755 |
|
| env | File | 46.95 KB | 0755 |
|
| envsubst | File | 34.38 KB | 0755 |
|
| eps2eps | File | 639 B | 0755 |
|
| eqn | File | 188.45 KB | 0755 |
|
| escp2topbm | File | 14.3 KB | 0755 |
|
| ex | File | 3.94 MB | 0755 |
|
| expand | File | 34.53 KB | 0755 |
|
| expiry | File | 26.52 KB | 2755 |
|
| expr | File | 42.41 KB | 0755 |
|
| eyuvtoppm | File | 14.3 KB | 0755 |
|
| factor | File | 62.51 KB | 0755 |
|
| fail2ban-client | File | 1.39 KB | 0755 |
|
| fail2ban-python | File | 7.65 MB | 0755 |
|
| fail2ban-regex | File | 1.25 KB | 0755 |
|
| fail2ban-server | File | 1.38 KB | 0755 |
|
| fail2ban-testcases | File | 2.23 KB | 0755 |
|
| faillog | File | 22.63 KB | 0755 |
|
| fallocate | File | 26.38 KB | 0755 |
|
| false | File | 26.3 KB | 0755 |
|
| fc-cache | File | 22.38 KB | 0755 |
|
| fc-cat | File | 18.38 KB | 0755 |
|
| fc-conflist | File | 14.38 KB | 0755 |
|
| fc-list | File | 14.38 KB | 0755 |
|
| fc-match | File | 14.38 KB | 0755 |
|
| fc-pattern | File | 14.38 KB | 0755 |
|
| fc-query | File | 14.38 KB | 0755 |
|
| fc-scan | File | 14.38 KB | 0755 |
|
| fc-validate | File | 14.38 KB | 0755 |
|
| fcgistarter | File | 14.3 KB | 0755 |
|
| fgconsole | File | 14.37 KB | 0755 |
|
| fgrep | File | 41 B | 0755 |
|
| fiascotopnm | File | 95.15 KB | 0755 |
|
| figlet | File | 26.68 KB | 0755 |
|
| figlet-toilet | File | 26.68 KB | 0755 |
|
| filan | File | 50.48 KB | 0755 |
|
| file | File | 30.6 KB | 0755 |
|
| finalrd | File | 2.06 KB | 0755 |
|
| find | File | 199.48 KB | 0755 |
|
| findmnt | File | 67.66 KB | 0755 |
|
| fitstopnm | File | 18.3 KB | 0755 |
|
| flock | File | 22.48 KB | 0755 |
|
| fmt | File | 38.51 KB | 0755 |
|
| fold | File | 34.51 KB | 0755 |
|
| fonttosfnt | File | 38.16 KB | 0755 |
|
| free | File | 26.38 KB | 0755 |
|
| fstopgm | File | 14.3 KB | 0755 |
|
| ftp | File | 182.9 KB | 0755 |
|
| funzip | File | 26.3 KB | 0755 |
|
| fuser | File | 39.34 KB | 0755 |
|
| fusermount | File | 38.38 KB | 4755 |
|
| fusermount3 | File | 38.38 KB | 4755 |
|
| fwupdmgr | File | 118.3 KB | 0755 |
|
| fwupdtool | File | 110.3 KB | 0755 |
|
| g3topbm | File | 19.13 KB | 0755 |
|
| galera_new_cluster | File | 917 B | 0755 |
|
| galera_recovery | File | 3.29 KB | 0755 |
|
| gapplication | File | 22.38 KB | 0755 |
|
| gawk | File | 722.5 KB | 0755 |
|
| gawkbug | File | 6.74 KB | 0755 |
|
| gdbus | File | 50.38 KB | 0755 |
|
| gdk-pixbuf-csource | File | 14.33 KB | 0755 |
|
| gdk-pixbuf-pixdata | File | 14.31 KB | 0755 |
|
| gdk-pixbuf-thumbnailer | File | 18.39 KB | 0755 |
|
| gemtopbm | File | 14.3 KB | 0755 |
|
| gemtopnm | File | 14.3 KB | 0755 |
|
| gencat | File | 26.44 KB | 0755 |
|
| geoiplookup | File | 18.3 KB | 0755 |
|
| geoiplookup6 | File | 14.3 KB | 0755 |
|
| geqn | File | 188.45 KB | 0755 |
|
| getconf | File | 26.36 KB | 0755 |
|
| getent | File | 38.72 KB | 0755 |
|
| getkeycodes | File | 14.37 KB | 0755 |
|
| getopt | File | 22.38 KB | 0755 |
|
| gettext | File | 34.38 KB | 0755 |
|
| gettext.sh | File | 5.07 KB | 0755 |
|
| ghostscript | File | 14.15 KB | 0755 |
|
| giftopnm | File | 26.3 KB | 0755 |
|
| ginstall-info | File | 47.24 KB | 0755 |
|
| gio | File | 102.4 KB | 0755 |
|
| gio-querymodules | File | 18.3 KB | 0755 |
|
| git | File | 3.88 MB | 0755 |
|
| git-receive-pack | File | 3.88 MB | 0755 |
|
| git-shell | File | 624.81 KB | 0755 |
|
| git-upload-archive | File | 3.88 MB | 0755 |
|
| git-upload-pack | File | 3.88 MB | 0755 |
|
| glib-compile-schemas | File | 54.3 KB | 0755 |
|
| gouldtoppm | File | 14.3 KB | 0755 |
|
| gpasswd | File | 74.46 KB | 4755 |
|
| gpg | File | 1.09 MB | 0755 |
|
| gpg-agent | File | 357.52 KB | 0755 |
|
| gpg-connect-agent | File | 87.3 KB | 0755 |
|
| gpg-wks-client | File | 139.37 KB | 0755 |
|
| gpgconf | File | 115.36 KB | 0755 |
|
| gpgparsemail | File | 34.38 KB | 0755 |
|
| gpgsm | File | 501.37 KB | 0755 |
|
| gpgsplit | File | 26.62 KB | 0755 |
|
| gpgtar | File | 67.83 KB | 0755 |
|
| gpgv | File | 303.14 KB | 0755 |
|
| gpic | File | 196.06 KB | 0755 |
|
| gpu-manager | File | 78.82 KB | 0755 |
|
| grep | File | 182.45 KB | 0755 |
|
| gresource | File | 22.3 KB | 0755 |
|
| groff | File | 94.51 KB | 0755 |
|
| grog | File | 18.75 KB | 0755 |
|
| grops | File | 162.55 KB | 0755 |
|
| grotty | File | 118.51 KB | 0755 |
|
| groups | File | 34.51 KB | 0755 |
|
| growpart | File | 29.19 KB | 0755 |
|
| grub-editenv | File | 393.16 KB | 0755 |
|
| grub-file | File | 741.88 KB | 0755 |
|
| grub-fstest | File | 863.32 KB | 0755 |
|
| grub-glue-efi | File | 102.88 KB | 0755 |
|
| grub-kbdcomp | File | 1.64 KB | 0755 |
|
| grub-menulst2cfg | File | 83.2 KB | 0755 |
|
| grub-mkfont | File | 131.45 KB | 0755 |
|
| grub-mkimage | File | 377.26 KB | 0755 |
|
| grub-mklayout | File | 103.23 KB | 0755 |
|
| grub-mknetdir | File | 429.77 KB | 0755 |
|
| grub-mkpasswd-pbkdf2 | File | 111.32 KB | 0755 |
|
| grub-mkrelpath | File | 259.79 KB | 0755 |
|
| grub-mkrescue | File | 1019.84 KB | 0755 |
|
| grub-mkstandalone | File | 510.16 KB | 0755 |
|
| grub-mount | File | 682.21 KB | 0755 |
|
| grub-ntldr-img | File | 38.39 KB | 0755 |
|
| grub-render-label | File | 750.23 KB | 0755 |
|
| grub-script-check | File | 126.76 KB | 0755 |
|
| grub-syslinux2cfg | File | 698.71 KB | 0755 |
|
| gs | File | 14.15 KB | 0755 |
|
| gsbj | File | 350 B | 0755 |
|
| gsdj | File | 352 B | 0755 |
|
| gsdj500 | File | 352 B | 0755 |
|
| gsettings | File | 30.3 KB | 0755 |
|
| gslj | File | 353 B | 0755 |
|
| gslp | File | 350 B | 0755 |
|
| gsnd | File | 277 B | 0755 |
|
| gtbl | File | 134.48 KB | 0755 |
|
| gunzip | File | 2.29 KB | 0755 |
|
| gzexe | File | 6.3 KB | 0755 |
|
| gzip | File | 91.23 KB | 0755 |
|
| h2ph | File | 28.54 KB | 0755 |
|
| h2xs | File | 59.51 KB | 0755 |
|
| hardlink | File | 46.48 KB | 0755 |
|
| hd | File | 46.39 KB | 0755 |
|
| hdifftopam | File | 14.3 KB | 0755 |
|
| head | File | 42.51 KB | 0755 |
|
| helpztags | File | 2.46 KB | 0755 |
|
| hexdump | File | 46.39 KB | 0755 |
|
| hipstopgm | File | 14.3 KB | 0755 |
|
| host | File | 118.82 KB | 0755 |
|
| hostid | File | 34.51 KB | 0755 |
|
| hostname | File | 22.23 KB | 0755 |
|
| hostnamectl | File | 30.45 KB | 0755 |
|
| hpcdtoppm | File | 798 B | 0755 |
|
| htcacheclean | File | 34.31 KB | 0755 |
|
| htdbm | File | 26.3 KB | 0755 |
|
| htdigest | File | 14.3 KB | 0755 |
|
| htop | File | 370.33 KB | 0755 |
|
| htpasswd | File | 26.3 KB | 0755 |
|
| hwe-support-status | File | 11.24 KB | 0755 |
|
| i386 | File | 26.65 KB | 0755 |
|
| icontopbm | File | 14.3 KB | 0755 |
|
| iconv | File | 66.48 KB | 0755 |
|
| id | File | 38.51 KB | 0755 |
|
| identify | File | 14.31 KB | 0755 |
|
| identify-im6 | File | 14.31 KB | 0755 |
|
| identify-im6.q16 | File | 14.31 KB | 0755 |
|
| ilbmtoppm | File | 38.38 KB | 0755 |
|
| imagetops | File | 1.21 KB | 0755 |
|
| img2sixel | File | 26.3 KB | 0755 |
|
| img2txt | File | 18.66 KB | 0755 |
|
| imgtoppm | File | 14.3 KB | 0755 |
|
| import | File | 14.31 KB | 0755 |
|
| import-im6 | File | 14.31 KB | 0755 |
|
| import-im6.q16 | File | 14.31 KB | 0755 |
|
| inetutils-telnet | File | 177.85 KB | 0755 |
|
| info | File | 241.73 KB | 0755 |
|
| infobrowser | File | 241.73 KB | 0755 |
|
| infocmp | File | 66.38 KB | 0755 |
|
| infotocap | File | 90.41 KB | 0755 |
|
| infotopam | File | 18.3 KB | 0755 |
|
| innochecksum | File | 4.57 MB | 0755 |
|
| innotop | File | 445.71 KB | 0755 |
|
| install | File | 142.52 KB | 0755 |
|
| install-info | File | 47.24 KB | 0755 |
|
| instmodsh | File | 4.27 KB | 0755 |
|
| ionice | File | 18.38 KB | 0755 |
|
| iostat | File | 54.44 KB | 0755 |
|
| ip | File | 754.8 KB | 0755 |
|
| ipcmk | File | 22.45 KB | 0755 |
|
| ipcrm | File | 18.38 KB | 0755 |
|
| ipcs | File | 38.38 KB | 0755 |
|
| iptables-xml | File | 92.95 KB | 0755 |
|
| ischroot | File | 14.48 KB | 0755 |
|
| iscsiadm | File | 370.43 KB | 0755 |
|
| jbigtopnm | File | 57.14 KB | 0755 |
|
| join | File | 50.55 KB | 0755 |
|
| journalctl | File | 78.91 KB | 0755 |
|
| jp2a | File | 50.75 KB | 0755 |
|
| jpeg2ktopam | File | 208.82 KB | 0755 |
|
| jpegtopnm | File | 38.38 KB | 0755 |
|
| jq | File | 30.15 KB | 0755 |
|
| json_pp | File | 4.88 KB | 0755 |
|
| kbd_mode | File | 14.66 KB | 0755 |
|
| kbdinfo | File | 18.37 KB | 0755 |
|
| kbxutil | File | 62.83 KB | 0755 |
|
| keep-one-running | File | 3.51 KB | 0755 |
|
| kernel-install | File | 54.67 KB | 0755 |
|
| kill | File | 22.38 KB | 0755 |
|
| killall | File | 31.34 KB | 0755 |
|
| kmod | File | 170.24 KB | 0755 |
|
| kmodsign | File | 18.45 KB | 0755 |
|
| landscape-sysinfo | File | 646 B | 0755 |
|
| last | File | 34.38 KB | 0755 |
|
| lastb | File | 34.38 KB | 0755 |
|
| lastlog | File | 27.79 KB | 0755 |
|
| lcf | File | 7.6 KB | 0755 |
|
| ld.so | File | 231.07 KB | 0755 |
|
| ldd | File | 5.26 KB | 0755 |
|
| leaftoppm | File | 14.3 KB | 0755 |
|
| less | File | 190.38 KB | 0755 |
|
| lessecho | File | 14.31 KB | 0755 |
|
| lessfile | File | 8.83 KB | 0755 |
|
| lesskey | File | 23.7 KB | 0755 |
|
| lesspipe | File | 8.83 KB | 0755 |
|
| letsencrypt | File | 958 B | 0755 |
|
| lexgrog | File | 99.51 KB | 0755 |
|
| libnetcfg | File | 15.41 KB | 0755 |
|
| libsixel-config | File | 1.81 KB | 0755 |
|
| link | File | 34.51 KB | 0755 |
|
| linux-boot-prober | File | 1.54 KB | 0755 |
|
| linux-check-removal | File | 3.99 KB | 0755 |
|
| linux-update-symlinks | File | 6.17 KB | 0755 |
|
| linux-version | File | 2.63 KB | 0755 |
|
| linux32 | File | 26.65 KB | 0755 |
|
| linux64 | File | 26.65 KB | 0755 |
|
| lispmtopgm | File | 14.3 KB | 0755 |
|
| ln | File | 54.51 KB | 0755 |
|
| lnstat | File | 22.66 KB | 0755 |
|
| loadkeys | File | 202.9 KB | 0755 |
|
| loadunimap | File | 34.46 KB | 0755 |
|
| locale | File | 49.63 KB | 0755 |
|
| locale-check | File | 14.15 KB | 0755 |
|
| localectl | File | 26.45 KB | 0755 |
|
| localedef | File | 319.09 KB | 0755 |
|
| logger | File | 38.97 KB | 0755 |
|
| login | File | 51.81 KB | 0755 |
|
| loginctl | File | 66.58 KB | 0755 |
|
| logname | File | 34.51 KB | 0755 |
|
| logresolve | File | 14.31 KB | 0755 |
|
| look | File | 18.38 KB | 0755 |
|
| lowntfs-3g | File | 118.98 KB | 0755 |
|
| ls | File | 138.98 KB | 0755 |
|
| lsattr | File | 14.31 KB | 0755 |
|
| lsb_release | File | 2.59 KB | 0755 |
|
| lsblk | File | 146.38 KB | 0755 |
|
| lscpu | File | 110.38 KB | 0755 |
|
| lshw | File | 957.2 KB | 0755 |
|
| lsinitramfs | File | 735 B | 0755 |
|
| lsipc | File | 50.38 KB | 0755 |
|
| lslocks | File | 30.77 KB | 0755 |
|
| lslogins | File | 50.38 KB | 0755 |
|
| lsmem | File | 38.38 KB | 0755 |
|
| lsmod | File | 170.24 KB | 0755 |
|
| lsns | File | 42.38 KB | 0755 |
|
| lsof | File | 171.66 KB | 0755 |
|
| lspci | File | 100.11 KB | 0755 |
|
| lspgpot | File | 1.06 KB | 0755 |
|
| lspower | File | 1.18 KB | 0755 |
|
| lsusb | File | 246.52 KB | 0755 |
|
| lzcat | File | 86.92 KB | 0755 |
|
| lzcmp | File | 7.25 KB | 0755 |
|
| lzdiff | File | 7.25 KB | 0755 |
|
| lzegrep | File | 10.09 KB | 0755 |
|
| lzfgrep | File | 10.09 KB | 0755 |
|
| lzgrep | File | 10.09 KB | 0755 |
|
| lzless | File | 1.77 KB | 0755 |
|
| lzma | File | 86.92 KB | 0755 |
|
| lzmainfo | File | 14.38 KB | 0755 |
|
| lzmore | File | 2.14 KB | 0755 |
|
| macptopbm | File | 14.3 KB | 0755 |
|
| mailmail3 | File | 227 B | 0755 |
|
| man | File | 125.41 KB | 0755 |
|
| man-recode | File | 35.4 KB | 0755 |
|
| mandb | File | 143.67 KB | 0755 |
|
| manifest | File | 1.9 KB | 0755 |
|
| manpath | File | 26.78 KB | 0755 |
|
| mapscrn | File | 30.46 KB | 0755 |
|
| mariadb | File | 5.07 MB | 0755 |
|
| mariadb-access | File | 109.31 KB | 0755 |
|
| mariadb-admin | File | 4.85 MB | 0755 |
|
| mariadb-analyze | File | 4.84 MB | 0755 |
|
| mariadb-binlog | File | 5.13 MB | 0755 |
|
| mariadb-check | File | 4.84 MB | 0755 |
|
| mariadb-conv | File | 4.56 MB | 0755 |
|
| mariadb-convert-table-format | File | 4.12 KB | 0755 |
|
| mariadb-dump | File | 4.93 MB | 0755 |
|
| mariadb-dumpslow | File | 8.05 KB | 0755 |
|
| mariadb-find-rows | File | 3.21 KB | 0755 |
|
| mariadb-fix-extensions | File | 1.22 KB | 0755 |
|
| mariadb-hotcopy | File | 34.53 KB | 0755 |
|
| mariadb-import | File | 4.83 MB | 0755 |
|
| mariadb-install-db | File | 22.13 KB | 0755 |
|
| mariadb-optimize | File | 4.84 MB | 0755 |
|
| mariadb-plugin | File | 4.54 MB | 0755 |
|
| mariadb-repair | File | 4.84 MB | 0755 |
|
| mariadb-report | File | 49.02 KB | 0755 |
|
| mariadb-secure-installation | File | 13.49 KB | 0755 |
|
| mariadb-service-convert | File | 2.45 KB | 0755 |
|
| mariadb-setpermission | File | 17.56 KB | 0755 |
|
| mariadb-show | File | 4.83 MB | 0755 |
|
| mariadb-slap | File | 4.85 MB | 0755 |
|
| mariadb-tzinfo-to-sql | File | 4.53 MB | 0755 |
|
| mariadb-upgrade | File | 4.97 MB | 0755 |
|
| mariadb-waitpid | File | 4.53 MB | 0755 |
|
| mariadbcheck | File | 4.84 MB | 0755 |
|
| mariadbd-multi | File | 26.69 KB | 0755 |
|
| mariadbd-safe | File | 30.42 KB | 0755 |
|
| mariadbd-safe-helper | File | 4.49 MB | 0755 |
|
| markdown-it | File | 220 B | 0755 |
|
| mawk | File | 166.77 KB | 0755 |
|
| mbim-network | File | 11.08 KB | 0755 |
|
| mbimcli | File | 216.74 KB | 0755 |
|
| mcookie | File | 26.45 KB | 0755 |
|
| md5sum | File | 38.41 KB | 0755 |
|
| md5sum.textutils | File | 38.41 KB | 0755 |
|
| mdatopbm | File | 14.3 KB | 0755 |
|
| mdig | File | 50.4 KB | 0755 |
|
| memhog | File | 14.42 KB | 0755 |
|
| memusage | File | 7.32 KB | 0755 |
|
| memusagestat | File | 22.44 KB | 0755 |
|
| mesg | File | 14.38 KB | 0755 |
|
| mgrtopbm | File | 14.3 KB | 0755 |
|
| migrate-pubring-from-classic-gpg | File | 3.02 KB | 0755 |
|
| migratepages | File | 14.38 KB | 0755 |
|
| migspeed | File | 14.3 KB | 0755 |
|
| mk_modmap | File | 15.78 KB | 0755 |
|
| mkdir | File | 74.51 KB | 0755 |
|
| mkfifo | File | 42.51 KB | 0755 |
|
| mkfontdir | File | 65 B | 0755 |
|
| mkfontscale | File | 42.67 KB | 0755 |
|
| mknod | File | 42.51 KB | 0755 |
|
| mkpasswd | File | 26.38 KB | 0755 |
|
| mksquashfs | File | 286.95 KB | 0755 |
|
| mktemp | File | 34.51 KB | 0755 |
|
| mmcli | File | 273.94 KB | 0755 |
|
| mogrify | File | 14.31 KB | 0755 |
|
| mogrify-im6 | File | 14.31 KB | 0755 |
|
| mogrify-im6.q16 | File | 14.31 KB | 0755 |
|
| montage | File | 14.31 KB | 0755 |
|
| montage-im6 | File | 14.31 KB | 0755 |
|
| montage-im6.q16 | File | 14.31 KB | 0755 |
|
| more | File | 46.38 KB | 0755 |
|
| mount | File | 50.38 KB | 4755 |
|
| mountpoint | File | 18.38 KB | 0755 |
|
| mpstat | File | 50.45 KB | 0755 |
|
| mrftopbm | File | 14.3 KB | 0755 |
|
| msql2mysql | File | 1.41 KB | 0755 |
|
| mt | File | 70.73 KB | 0755 |
|
| mt-gnu | File | 70.73 KB | 0755 |
|
| mtr | File | 76.25 KB | 0755 |
|
| mtr-packet | File | 34.3 KB | 0755 |
|
| mtrace | File | 6.37 KB | 0755 |
|
| mtvtoppm | File | 14.3 KB | 0755 |
|
| mv | File | 134.52 KB | 0755 |
|
| my_print_defaults | File | 4.53 MB | 0755 |
|
| myisam_ftdump | File | 4.87 MB | 0755 |
|
| myisamchk | File | 4.99 MB | 0755 |
|
| myisamlog | File | 4.85 MB | 0755 |
|
| myisampack | File | 4.9 MB | 0755 |
|
| mysql | File | 5.07 MB | 0755 |
|
| mysql_convert_table_format | File | 4.12 KB | 0755 |
|
| mysql_find_rows | File | 3.21 KB | 0755 |
|
| mysql_fix_extensions | File | 1.22 KB | 0755 |
|
| mysql_install_db | File | 22.13 KB | 0755 |
|
| mysql_plugin | File | 4.54 MB | 0755 |
|
| mysql_secure_installation | File | 13.49 KB | 0755 |
|
| mysql_setpermission | File | 17.56 KB | 0755 |
|
| mysql_tzinfo_to_sql | File | 4.53 MB | 0755 |
|
| mysql_upgrade | File | 4.97 MB | 0755 |
|
| mysql_waitpid | File | 4.53 MB | 0755 |
|
| mysqlaccess | File | 109.31 KB | 0755 |
|
| mysqladmin | File | 4.85 MB | 0755 |
|
| mysqlanalyze | File | 4.84 MB | 0755 |
|
| mysqlbinlog | File | 5.13 MB | 0755 |
|
| mysqlcheck | File | 4.84 MB | 0755 |
|
| mysqld_multi | File | 26.69 KB | 0755 |
|
| mysqld_safe | File | 30.42 KB | 0755 |
|
| mysqld_safe_helper | File | 4.49 MB | 0755 |
|
| mysqldump | File | 4.93 MB | 0755 |
|
| mysqldumpslow | File | 8.05 KB | 0755 |
|
| mysqlhotcopy | File | 34.53 KB | 0755 |
|
| mysqlimport | File | 4.83 MB | 0755 |
|
| mysqloptimize | File | 4.84 MB | 0755 |
|
| mysqlrepair | File | 4.84 MB | 0755 |
|
| mysqlreport | File | 49.02 KB | 0755 |
|
| mysqlshow | File | 4.83 MB | 0755 |
|
| mysqlslap | File | 4.85 MB | 0755 |
|
| mytop | File | 71.95 KB | 0755 |
|
| named-checkconf | File | 38.4 KB | 0755 |
|
| named-checkzone | File | 30.4 KB | 0755 |
|
| named-compilezone | File | 30.4 KB | 0755 |
|
| named-journalprint | File | 14.3 KB | 0755 |
|
| named-nzd2nzf | File | 14.3 KB | 0755 |
|
| named-rrchecker | File | 22.3 KB | 0755 |
|
| namei | File | 22.38 KB | 0755 |
|
| nano | File | 272.5 KB | 0755 |
|
| nawk | File | 722.5 KB | 0755 |
|
| nc | File | 38.63 KB | 0755 |
|
| nc.openbsd | File | 38.63 KB | 0755 |
|
| neofetch | File | 333.58 KB | 0755 |
|
| neotoppm | File | 14.3 KB | 0755 |
|
| neqn | File | 913 B | 0755 |
|
| netaddr | File | 959 B | 0755 |
|
| netcat | File | 38.63 KB | 0755 |
|
| networkctl | File | 122.58 KB | 0755 |
|
| networkd-dispatcher | File | 19.88 KB | 0755 |
|
| newgrp | File | 39.71 KB | 4755 |
|
| ngettext | File | 34.38 KB | 0755 |
|
| nice | File | 34.51 KB | 0755 |
|
| nisdomainname | File | 22.23 KB | 0755 |
|
| nl | File | 38.6 KB | 0755 |
|
| nohup | File | 34.41 KB | 0755 |
|
| nproc | File | 34.51 KB | 0755 |
|
| nroff | File | 5.58 KB | 0755 |
|
| nsec3hash | File | 14.3 KB | 0755 |
|
| nsenter | File | 30.6 KB | 0755 |
|
| nslookup | File | 122.82 KB | 0755 |
|
| nstat | File | 30.38 KB | 0755 |
|
| nsupdate | File | 74.55 KB | 0755 |
|
| ntfs-3g | File | 159.01 KB | 0755 |
|
| ntfs-3g.probe | File | 14.38 KB | 0755 |
|
| ntfscat | File | 26.38 KB | 0755 |
|
| ntfscluster | File | 38.38 KB | 0755 |
|
| ntfscmp | File | 30.38 KB | 0755 |
|
| ntfsdecrypt | File | 42.38 KB | 0755 |
|
| ntfsfallocate | File | 26.38 KB | 0755 |
|
| ntfsfix | File | 34.38 KB | 0755 |
|
| ntfsinfo | File | 54.38 KB | 0755 |
|
| ntfsls | File | 27.45 KB | 0755 |
|
| ntfsmove | File | 30.38 KB | 0755 |
|
| ntfsrecover | File | 102.38 KB | 0755 |
|
| ntfssecaudit | File | 78.86 KB | 0755 |
|
| ntfstruncate | File | 26.3 KB | 0755 |
|
| ntfsusermap | File | 18.3 KB | 0755 |
|
| ntfswipe | File | 46.91 KB | 0755 |
|
| numactl | File | 35.23 KB | 0755 |
|
| numastat | File | 35.56 KB | 0755 |
|
| numfmt | File | 58.54 KB | 0755 |
|
| nvidia-detector | File | 270 B | 0755 |
|
| od | File | 70.51 KB | 0755 |
|
| oem-getlogs | File | 8.3 KB | 0755 |
|
| on_ac_power | File | 3.7 KB | 0755 |
|
| openssl | File | 981.8 KB | 0755 |
|
| openvt | File | 22.73 KB | 0755 |
|
| os-prober | File | 4.42 KB | 0755 |
|
| pager | File | 190.38 KB | 0755 |
|
| palmtopnm | File | 26.3 KB | 0755 |
|
| pamaddnoise | File | 18.3 KB | 0755 |
|
| pamaltsat | File | 14.34 KB | 0755 |
|
| pamarith | File | 22.3 KB | 0755 |
|
| pambackground | File | 18.3 KB | 0755 |
|
| pambayer | File | 14.38 KB | 0755 |
|
| pambrighten | File | 14.3 KB | 0755 |
|
| pamcat | File | 22.3 KB | 0755 |
|
| pamchannel | File | 14.3 KB | 0755 |
|
| pamcomp | File | 18.3 KB | 0755 |
|
| pamcrater | File | 18.3 KB | 0755 |
|
| pamcut | File | 18.3 KB | 0755 |
|
| pamdeinterlace | File | 14.3 KB | 0755 |
|
| pamdepth | File | 14.3 KB | 0755 |
|
| pamdice | File | 18.3 KB | 0755 |
|
| pamditherbw | File | 26.3 KB | 0755 |
|
| pamedge | File | 14.3 KB | 0755 |
|
| pamendian | File | 14.3 KB | 0755 |
|
| pamenlarge | File | 18.38 KB | 0755 |
|
| pamexec | File | 14.3 KB | 0755 |
|
| pamfile | File | 14.3 KB | 0755 |
|
| pamfind | File | 14.3 KB | 0755 |
|
| pamfix | File | 14.3 KB | 0755 |
|
| pamfixtrunc | File | 2.01 KB | 0755 |
|
| pamflip | File | 22.3 KB | 0755 |
|
| pamfunc | File | 18.3 KB | 0755 |
|
| pamgauss | File | 14.3 KB | 0755 |
|
| pamgetcolor | File | 18.38 KB | 0755 |
|
| pamgradient | File | 14.3 KB | 0755 |
|
| pamhomography | File | 18.3 KB | 0755 |
|
| pamhue | File | 14.3 KB | 0755 |
|
| pamlevels | File | 18.3 KB | 0755 |
|
| pamlookup | File | 14.3 KB | 0755 |
|
| pammasksharpen | File | 14.3 KB | 0755 |
|
| pammixinterlace | File | 14.38 KB | 0755 |
|
| pammixmulti | File | 18.3 KB | 0755 |
|
| pammosaicknit | File | 14.3 KB | 0755 |
|
| pamoil | File | 14.3 KB | 0755 |
|
| pampaintspill | File | 18.3 KB | 0755 |
|
| pamperspective | File | 30.38 KB | 0755 |
|
| pampick | File | 14.3 KB | 0755 |
|
| pampop9 | File | 14.3 KB | 0755 |
|
| pamrecolor | File | 18.3 KB | 0755 |
|
| pamrestack | File | 14.3 KB | 0755 |
|
| pamrgbatopng | File | 34.3 KB | 0755 |
|
| pamrubber | File | 34.3 KB | 0755 |
|
| pamscale | File | 34.38 KB | 0755 |
|
| pamseq | File | 14.3 KB | 0755 |
|
| pamshadedrelief | File | 14.3 KB | 0755 |
|
| pamsharpmap | File | 14.3 KB | 0755 |
|
| pamsharpness | File | 14.3 KB | 0755 |
|
| pamshuffle | File | 14.3 KB | 0755 |
|
| pamsistoaglyph | File | 14.3 KB | 0755 |
|
| pamslice | File | 14.3 KB | 0755 |
|
| pamsplit | File | 14.3 KB | 0755 |
|
| pamstack | File | 14.3 KB | 0755 |
|
| pamstereogram | File | 30.3 KB | 0755 |
|
| pamstretch | File | 14.3 KB | 0755 |
|
| pamstretch-gen | File | 3.83 KB | 0755 |
|
| pamsumm | File | 14.3 KB | 0755 |
|
| pamsummcol | File | 14.3 KB | 0755 |
|
| pamtable | File | 14.3 KB | 0755 |
|
| pamthreshold | File | 18.3 KB | 0755 |
|
| pamtilt | File | 18.3 KB | 0755 |
|
| pamtoavs | File | 14.3 KB | 0755 |
|
| pamtodjvurle | File | 14.3 KB | 0755 |
|
| pamtofits | File | 14.3 KB | 0755 |
|
| pamtogif | File | 26.3 KB | 0755 |
|
| pamtohdiff | File | 14.3 KB | 0755 |
|
| pamtohtmltbl | File | 14.3 KB | 0755 |
|
| pamtojpeg2k | File | 212.82 KB | 0755 |
|
| pamtompfont | File | 14.3 KB | 0755 |
|
| pamtooctaveimg | File | 14.3 KB | 0755 |
|
| pamtopam | File | 14.3 KB | 0755 |
|
| pamtopdbimg | File | 18.38 KB | 0755 |
|
| pamtopfm | File | 14.3 KB | 0755 |
|
| pamtopng | File | 34.3 KB | 0755 |
|
| pamtopnm | File | 14.3 KB | 0755 |
|
| pamtoqoi | File | 18.3 KB | 0755 |
|
| pamtosrf | File | 18.3 KB | 0755 |
|
| pamtosvg | File | 70.15 KB | 0755 |
|
| pamtotga | File | 18.3 KB | 0755 |
|
| pamtotiff | File | 46.38 KB | 0755 |
|
| pamtouil | File | 14.3 KB | 0755 |
|
| pamtowinicon | File | 18.3 KB | 0755 |
|
| pamtoxvmini | File | 14.3 KB | 0755 |
|
| pamtris | File | 26.3 KB | 0755 |
|
| pamundice | File | 18.3 KB | 0755 |
|
| pamunlookup | File | 14.3 KB | 0755 |
|
| pamvalidate | File | 14.3 KB | 0755 |
|
| pamwipeout | File | 14.3 KB | 0755 |
|
| pamx | File | 42.38 KB | 0755 |
|
| paperconf | File | 14.15 KB | 0755 |
|
| partx | File | 62.38 KB | 0755 |
|
| passwd | File | 62.65 KB | 4755 |
|
| paste | File | 38.41 KB | 0755 |
|
| pastebinit | File | 16.31 KB | 0755 |
|
| patch | File | 182.52 KB | 0755 |
|
| pathchk | File | 34.51 KB | 0755 |
|
| pbget | File | 2.51 KB | 0755 |
|
| pbmclean | File | 18.3 KB | 0755 |
|
| pbmlife | File | 14.3 KB | 0755 |
|
| pbmmake | File | 14.3 KB | 0755 |
|
| pbmmask | File | 14.3 KB | 0755 |
|
| pbmminkowski | File | 14.3 KB | 0755 |
|
| pbmnoise | File | 14.3 KB | 0755 |
|
| pbmpage | File | 14.3 KB | 0755 |
|
| pbmpscale | File | 14.3 KB | 0755 |
|
| pbmreduce | File | 14.3 KB | 0755 |
|
| pbmtext | File | 30.48 KB | 0755 |
|
| pbmtextps | File | 22.3 KB | 0755 |
|
| pbmto10x | File | 14.3 KB | 0755 |
|
| pbmto4425 | File | 14.3 KB | 0755 |
|
| pbmtoascii | File | 14.3 KB | 0755 |
|
| pbmtoatk | File | 14.3 KB | 0755 |
|
| pbmtobbnbg | File | 14.3 KB | 0755 |
|
| pbmtocis | File | 14.3 KB | 0755 |
|
| pbmtocmuwm | File | 14.3 KB | 0755 |
|
| pbmtodjvurle | File | 14.3 KB | 0755 |
|
| pbmtoepsi | File | 14.3 KB | 0755 |
|
| pbmtoepson | File | 14.3 KB | 0755 |
|
| pbmtoescp2 | File | 14.3 KB | 0755 |
|
| pbmtog3 | File | 19.13 KB | 0755 |
|
| pbmtogem | File | 14.3 KB | 0755 |
|
| pbmtogo | File | 14.3 KB | 0755 |
|
| pbmtoibm23xx | File | 14.3 KB | 0755 |
|
| pbmtoicon | File | 14.3 KB | 0755 |
|
| pbmtolj | File | 18.3 KB | 0755 |
|
| pbmtoln03 | File | 14.3 KB | 0755 |
|
| pbmtolps | File | 14.3 KB | 0755 |
|
| pbmtomacp | File | 14.3 KB | 0755 |
|
| pbmtomatrixorbital | File | 14.3 KB | 0755 |
|
| pbmtomda | File | 14.3 KB | 0755 |
|
| pbmtomgr | File | 14.3 KB | 0755 |
|
| pbmtomrf | File | 14.3 KB | 0755 |
|
| pbmtonokia | File | 14.3 KB | 0755 |
|
| pbmtopgm | File | 14.3 KB | 0755 |
|
| pbmtopi3 | File | 14.3 KB | 0755 |
|
| pbmtopk | File | 26.6 KB | 0755 |
|
| pbmtoplot | File | 14.3 KB | 0755 |
|
| pbmtoppa | File | 30.38 KB | 0755 |
|
| pbmtopsg3 | File | 15.94 KB | 0755 |
|
| pbmtoptx | File | 14.3 KB | 0755 |
|
| pbmtosunicon | File | 14.3 KB | 0755 |
|
| pbmtowbmp | File | 14.3 KB | 0755 |
|
| pbmtox10bm | File | 2.83 KB | 0755 |
|
| pbmtoxbm | File | 14.3 KB | 0755 |
|
| pbmtoybm | File | 14.3 KB | 0755 |
|
| pbmtozinc | File | 14.3 KB | 0755 |
|
| pbmupc | File | 22.3 KB | 0755 |
|
| pbput | File | 2.51 KB | 0755 |
|
| pbputs | File | 2.51 KB | 0755 |
|
| pc1toppm | File | 14.3 KB | 0755 |
|
| pcdindex | File | 6.56 KB | 0755 |
|
| pcdovtoppm | File | 6.56 KB | 0755 |
|
| pcxtoppm | File | 18.3 KB | 0755 |
|
| pdb3 | File | 67.83 KB | 0755 |
|
| pdb3.12 | File | 67.83 KB | 0755 |
|
| pdbimgtopam | File | 18.38 KB | 0755 |
|
| pdf2dsc | File | 698 B | 0755 |
|
| pdf2ps | File | 909 B | 0755 |
|
| pear | File | 793 B | 0755 |
|
| peardev | File | 814 B | 0755 |
|
| pecl | File | 727 B | 0755 |
|
| peekfd | File | 14.3 KB | 0755 |
|
| perf | File | 1.58 KB | 0755 |
|
| perl | File | 3.83 MB | 0755 |
|
| perl5.38-x86_64-linux-gnu | File | 14.3 KB | 0755 |
|
| perl5.38.2 | File | 3.83 MB | 0755 |
|
| perlbug | File | 44.52 KB | 0755 |
|
| perldoc | File | 125 B | 0755 |
|
| perlivp | File | 10.61 KB | 0755 |
|
| perlthanks | File | 44.52 KB | 0755 |
|
| perror | File | 4.72 MB | 0755 |
|
| pf2afm | File | 498 B | 0755 |
|
| pfbtopfa | File | 516 B | 0755 |
|
| pfmtopam | File | 14.3 KB | 0755 |
|
| pgmabel | File | 18.3 KB | 0755 |
|
| pgmbentley | File | 14.3 KB | 0755 |
|
| pgmcrater | File | 3.49 KB | 0755 |
|
| pgmdeshadow | File | 14.3 KB | 0755 |
|
| pgmedge | File | 14.3 KB | 0755 |
|
| pgmenhance | File | 14.3 KB | 0755 |
|
| pgmhist | File | 18.3 KB | 0755 |
|
| pgmkernel | File | 14.3 KB | 0755 |
|
| pgmmake | File | 14.3 KB | 0755 |
|
| pgmmedian | File | 18.3 KB | 0755 |
|
| pgmminkowski | File | 14.3 KB | 0755 |
|
| pgmmorphconv | File | 14.3 KB | 0755 |
|
| pgmnoise | File | 14.3 KB | 0755 |
|
| pgmnorm | File | 18.3 KB | 0755 |
|
| pgmoil | File | 14.3 KB | 0755 |
|
| pgmramp | File | 14.3 KB | 0755 |
|
| pgmslice | File | 14.3 KB | 0755 |
|
| pgmtexture | File | 26.3 KB | 0755 |
|
| pgmtofs | File | 14.3 KB | 0755 |
|
| pgmtolispm | File | 14.3 KB | 0755 |
|
| pgmtopbm | File | 22.3 KB | 0755 |
|
| pgmtopgm | File | 14.3 KB | 0755 |
|
| pgmtoppm | File | 14.3 KB | 0755 |
|
| pgmtosbig | File | 14.3 KB | 0755 |
|
| pgmtost4 | File | 14.3 KB | 0755 |
|
| pgrep | File | 34.47 KB | 0755 |
|
| phar | File | 14.84 KB | 0755 |
|
| phar.phar | File | 14.84 KB | 0755 |
|
| phar.phar8.3 | File | 14.84 KB | 0755 |
|
| phar8.3 | File | 14.84 KB | 0755 |
|
| phar8.3.phar | File | 14.84 KB | 0755 |
|
| php | File | 5.52 MB | 0755 |
|
| php8.3 | File | 5.52 MB | 0755 |
|
| pi1toppm | File | 14.3 KB | 0755 |
|
| pi3topbm | File | 14.3 KB | 0755 |
|
| pic | File | 196.06 KB | 0755 |
|
| pico | File | 272.5 KB | 0755 |
|
| piconv | File | 8.16 KB | 0755 |
|
| pidof | File | 26.23 KB | 0755 |
|
| pidstat | File | 50.45 KB | 0755 |
|
| pidwait | File | 34.47 KB | 0755 |
|
| pinentry | File | 58.65 KB | 0755 |
|
| pinentry-curses | File | 58.65 KB | 0755 |
|
| ping | File | 87.7 KB | 0755 |
|
| ping4 | File | 87.7 KB | 0755 |
|
| ping6 | File | 87.7 KB | 0755 |
|
| pinky | File | 38.41 KB | 0755 |
|
| pjtoppm | File | 18.3 KB | 0755 |
|
| pkaction | File | 18.3 KB | 0755 |
|
| pkcheck | File | 22.3 KB | 0755 |
|
| pkcon | File | 54.3 KB | 0755 |
|
| pkill | File | 34.47 KB | 0755 |
|
| pkmon | File | 22.3 KB | 0755 |
|
| pktopbm | File | 18.3 KB | 0755 |
|
| pkttyagent | File | 22.3 KB | 0755 |
|
| pl2pm | File | 4.43 KB | 0755 |
|
| pldd | File | 22.44 KB | 0755 |
|
| plymouth | File | 46.3 KB | 0755 |
|
| pmap | File | 34.4 KB | 0755 |
|
| pngtopam | File | 34.38 KB | 0755 |
|
| pngtopnm | File | 34.38 KB | 0755 |
|
| pnmalias | File | 18.3 KB | 0755 |
|
| pnmarith | File | 22.3 KB | 0755 |
|
| pnmcat | File | 22.3 KB | 0755 |
|
| pnmcolormap | File | 18.3 KB | 0755 |
|
| pnmcomp | File | 18.3 KB | 0755 |
|
| pnmconvol | File | 34.3 KB | 0755 |
|
| pnmcrop | File | 26.38 KB | 0755 |
|
| pnmcut | File | 18.3 KB | 0755 |
|
| pnmdepth | File | 14.3 KB | 0755 |
|
| pnmenlarge | File | 18.38 KB | 0755 |
|
| pnmfile | File | 14.3 KB | 0755 |
|
| pnmflip | File | 3.63 KB | 0755 |
|
| pnmgamma | File | 18.3 KB | 0755 |
|
| pnmhisteq | File | 14.3 KB | 0755 |
|
| pnmhistmap | File | 18.3 KB | 0755 |
|
| pnmindex | File | 18.3 KB | 0755 |
|
| pnminterp | File | 14.3 KB | 0755 |
|
| pnminterp-gen | File | 3.83 KB | 0755 |
|
| pnminvert | File | 14.3 KB | 0755 |
|
| pnmmargin | File | 2.42 KB | 0755 |
|
| pnmmercator | File | 14.3 KB | 0755 |
|
| pnmmontage | File | 18.3 KB | 0755 |
|
| pnmnlfilt | File | 22.36 KB | 0755 |
|
| pnmnoraw | File | 31 B | 0755 |
|
| pnmnorm | File | 18.3 KB | 0755 |
|
| pnmpad | File | 22.3 KB | 0755 |
|
| pnmpaste | File | 18.3 KB | 0755 |
|
| pnmpsnr | File | 18.3 KB | 0755 |
|
| pnmquant | File | 10.63 KB | 0755 |
|
| pnmquantall | File | 6.84 KB | 0755 |
|
| pnmremap | File | 18.3 KB | 0755 |
|
| pnmrotate | File | 18.3 KB | 0755 |
|
| pnmscale | File | 34.38 KB | 0755 |
|
| pnmscalefixed | File | 18.3 KB | 0755 |
|
| pnmshear | File | 14.3 KB | 0755 |
|
| pnmsmooth | File | 14.3 KB | 0755 |
|
| pnmsplit | File | 14.3 KB | 0755 |
|
| pnmstitch | File | 34.97 KB | 0755 |
|
| pnmtile | File | 14.3 KB | 0755 |
|
| pnmtoddif | File | 18.3 KB | 0755 |
|
| pnmtofiasco | File | 164.21 KB | 0755 |
|
| pnmtofits | File | 14.3 KB | 0755 |
|
| pnmtojbig | File | 61.14 KB | 0755 |
|
| pnmtojpeg | File | 26.3 KB | 0755 |
|
| pnmtopalm | File | 26.3 KB | 0755 |
|
| pnmtopclxl | File | 22.81 KB | 0755 |
|
| pnmtoplainpnm | File | 31 B | 0755 |
|
| pnmtopng | File | 54.3 KB | 0755 |
|
| pnmtopnm | File | 14.3 KB | 0755 |
|
| pnmtops | File | 34.3 KB | 0755 |
|
| pnmtorast | File | 18.3 KB | 0755 |
|
| pnmtorle | File | 34.55 KB | 0755 |
|
| pnmtosgi | File | 14.3 KB | 0755 |
|
| pnmtosir | File | 14.3 KB | 0755 |
|
| pnmtotiff | File | 46.38 KB | 0755 |
|
| pnmtotiffcmyk | File | 38.38 KB | 0755 |
|
| pnmtoxwd | File | 18.3 KB | 0755 |
|
| pod2html | File | 3.95 KB | 0755 |
|
| pod2man | File | 18.46 KB | 0755 |
|
| pod2text | File | 12.8 KB | 0755 |
|
| pod2usage | File | 4.01 KB | 0755 |
|
| podchecker | File | 3.57 KB | 0755 |
|
| pollinate | File | 8.54 KB | 0755 |
|
| pphs | File | 404 B | 0755 |
|
| ppm3d | File | 18.3 KB | 0755 |
|
| ppmbrighten | File | 2 KB | 0755 |
|
| ppmchange | File | 14.3 KB | 0755 |
|
| ppmcie | File | 26.47 KB | 0755 |
|
| ppmcolormask | File | 14.3 KB | 0755 |
|
| ppmcolors | File | 14.3 KB | 0755 |
|
| ppmdcfont | File | 14.3 KB | 0755 |
|
| ppmddumpfont | File | 14.3 KB | 0755 |
|
| ppmdim | File | 14.3 KB | 0755 |
|
| ppmdist | File | 14.3 KB | 0755 |
|
| ppmdither | File | 14.3 KB | 0755 |
|
| ppmdmkfont | File | 22.02 KB | 0755 |
|
| ppmdraw | File | 22.3 KB | 0755 |
|
| ppmfade | File | 14.76 KB | 0755 |
|
| ppmflash | File | 14.3 KB | 0755 |
|
| ppmforge | File | 22.3 KB | 0755 |
|
| ppmglobe | File | 14.3 KB | 0755 |
|
| ppmhist | File | 18.3 KB | 0755 |
|
| ppmlabel | File | 14.3 KB | 0755 |
|
| ppmmake | File | 14.3 KB | 0755 |
|
| ppmmix | File | 14.3 KB | 0755 |
|
| ppmnorm | File | 18.3 KB | 0755 |
|
| ppmntsc | File | 14.3 KB | 0755 |
|
| ppmpat | File | 30.3 KB | 0755 |
|
| ppmquant | File | 2.3 KB | 0755 |
|
| ppmquantall | File | 6.84 KB | 0755 |
|
| ppmrainbow | File | 3.48 KB | 0755 |
|
| ppmrelief | File | 14.3 KB | 0755 |
|
| ppmrough | File | 18.3 KB | 0755 |
|
| ppmshadow | File | 10.85 KB | 0755 |
|
| ppmshift | File | 14.3 KB | 0755 |
|
| ppmspread | File | 14.3 KB | 0755 |
|
| ppmtoacad | File | 19.15 KB | 0755 |
|
| ppmtoapplevol | File | 14.3 KB | 0755 |
|
| ppmtoarbtxt | File | 18.3 KB | 0755 |
|
| ppmtoascii | File | 14.38 KB | 0755 |
|
| ppmtobmp | File | 18.3 KB | 0755 |
|
| ppmtoeyuv | File | 18.3 KB | 0755 |
|
| ppmtogif | File | 14.3 KB | 0755 |
|
| ppmtoicr | File | 14.3 KB | 0755 |
|
| ppmtoilbm | File | 42.39 KB | 0755 |
|
| ppmtojpeg | File | 26.3 KB | 0755 |
|
| ppmtoleaf | File | 14.3 KB | 0755 |
|
| ppmtolj | File | 14.3 KB | 0755 |
|
| ppmtomap | File | 82 B | 0755 |
|
| ppmtomitsu | File | 22.3 KB | 0755 |
|
| ppmtompeg | File | 494.09 KB | 0755 |
|
| ppmtoneo | File | 14.3 KB | 0755 |
|
| ppmtopcx | File | 18.3 KB | 0755 |
|
| ppmtopgm | File | 18.3 KB | 0755 |
|
| ppmtopi1 | File | 14.3 KB | 0755 |
|
| ppmtopict | File | 14.3 KB | 0755 |
|
| ppmtopj | File | 14.38 KB | 0755 |
|
| ppmtopjxl | File | 18.38 KB | 0755 |
|
| ppmtoppm | File | 14.3 KB | 0755 |
|
| ppmtopuzz | File | 14.3 KB | 0755 |
|
| ppmtorgb3 | File | 14.3 KB | 0755 |
|
| ppmtosixel | File | 14.3 KB | 0755 |
|
| ppmtospu | File | 14.3 KB | 0755 |
|
| ppmtoterm | File | 14.3 KB | 0755 |
|
| ppmtotga | File | 18.3 KB | 0755 |
|
| ppmtouil | File | 14.3 KB | 0755 |
|
| ppmtowinicon | File | 18.3 KB | 0755 |
|
| ppmtoxpm | File | 18.3 KB | 0755 |
|
| ppmtoyuv | File | 14.3 KB | 0755 |
|
| ppmtoyuvsplit | File | 14.3 KB | 0755 |
|
| ppmtv | File | 14.3 KB | 0755 |
|
| ppmwheel | File | 14.3 KB | 0755 |
|
| pr | File | 70.58 KB | 0755 |
|
| preconv | File | 58.48 KB | 0755 |
|
| printafm | File | 395 B | 0755 |
|
| printenv | File | 34.38 KB | 0755 |
|
| printf | File | 54.44 KB | 0755 |
|
| prlimit | File | 26.89 KB | 0755 |
|
| pro | File | 1003 B | 0755 |
|
| procan | File | 42.41 KB | 0755 |
|
| prove | File | 13.34 KB | 0755 |
|
| prtstat | File | 18.38 KB | 0755 |
|
| ps | File | 142.99 KB | 0755 |
|
| ps2ascii | File | 631 B | 0755 |
|
| ps2epsi | File | 1.23 KB | 0755 |
|
| ps2pdf | File | 272 B | 0755 |
|
| ps2pdf12 | File | 215 B | 0755 |
|
| ps2pdf13 | File | 215 B | 0755 |
|
| ps2pdf14 | File | 215 B | 0755 |
|
| ps2pdfwr | File | 1.05 KB | 0755 |
|
| ps2ps | File | 647 B | 0755 |
|
| ps2ps2 | File | 669 B | 0755 |
|
| ps2txt | File | 631 B | 0755 |
|
| psfaddtable | File | 22.37 KB | 0755 |
|
| psfgettable | File | 22.37 KB | 0755 |
|
| psfstriptable | File | 22.37 KB | 0755 |
|
| psfxtable | File | 22.37 KB | 0755 |
|
| psidtopgm | File | 14.3 KB | 0755 |
|
| pslog | File | 14.3 KB | 0755 |
|
| pstopnm | File | 22.38 KB | 0755 |
|
| pstree | File | 35.32 KB | 0755 |
|
| pstree.x11 | File | 35.32 KB | 0755 |
|
| ptar | File | 3.48 KB | 0755 |
|
| ptardiff | File | 2.58 KB | 0755 |
|
| ptargrep | File | 4.29 KB | 0755 |
|
| ptx | File | 54.54 KB | 0755 |
|
| purge-old-kernels | File | 1.12 KB | 0755 |
|
| pv | File | 79.41 KB | 0755 |
|
| pwd | File | 34.51 KB | 0755 |
|
| pwdx | File | 14.38 KB | 0755 |
|
| py3clean | File | 7.63 KB | 0755 |
|
| py3compile | File | 13 KB | 0755 |
|
| py3versions | File | 12.52 KB | 0755 |
|
| pydoc3 | File | 80 B | 0755 |
|
| pydoc3.12 | File | 80 B | 0755 |
|
| pygettext3 | File | 23.66 KB | 0755 |
|
| pygettext3.12 | File | 23.66 KB | 0755 |
|
| pygmentize | File | 215 B | 0755 |
|
| pyhtmlizer3 | File | 222 B | 0755 |
|
| pyserial-miniterm | File | 975 B | 0755 |
|
| pyserial-ports | File | 969 B | 0755 |
|
| python3 | File | 7.65 MB | 0755 |
|
| python3.12 | File | 7.65 MB | 0755 |
|
| pzstd | File | 690.54 KB | 0755 |
|
| qmi-firmware-update | File | 168.09 KB | 0755 |
|
| qmi-network | File | 16.04 KB | 0755 |
|
| qmicli | File | 586.84 KB | 0755 |
|
| qoitopam | File | 14.3 KB | 0755 |
|
| qrttoppm | File | 14.3 KB | 0755 |
|
| quirks-handler | File | 2.4 KB | 0755 |
|
| rasttopnm | File | 18.3 KB | 0755 |
|
| rawtopgm | File | 14.3 KB | 0755 |
|
| rawtoppm | File | 14.3 KB | 0755 |
|
| rbash | File | 1.38 MB | 0755 |
|
| rdma | File | 102.52 KB | 0755 |
|
| readlink | File | 42.41 KB | 0755 |
|
| realpath | File | 42.41 KB | 0755 |
|
| red | File | 89 B | 0755 |
|
| rename.ul | File | 22.38 KB | 0755 |
|
| renice | File | 14.38 KB | 0755 |
|
| replace | File | 4.51 MB | 0755 |
|
| rescan-scsi-bus.sh | File | 38.05 KB | 0755 |
|
| reset | File | 26.31 KB | 0755 |
|
| resizecons | File | 26.46 KB | 0755 |
|
| resizepart | File | 22.38 KB | 0755 |
|
| resolve_stack_dump | File | 4.53 MB | 0755 |
|
| resolvectl | File | 158.67 KB | 0755 |
|
| resolveip | File | 4.53 MB | 0755 |
|
| rev | File | 14.38 KB | 0755 |
|
| rgb3toppm | File | 14.3 KB | 0755 |
|
| rgrep | File | 30 B | 0755 |
|
| rlatopam | File | 14.3 KB | 0755 |
|
| rletopnm | File | 38.55 KB | 0755 |
|
| rm | File | 58.51 KB | 0755 |
|
| rmdir | File | 46.41 KB | 0755 |
|
| rnano | File | 272.5 KB | 0755 |
|
| rotatelogs | File | 26.38 KB | 0755 |
|
| routel | File | 1.62 KB | 0755 |
|
| rpcgen | File | 94.59 KB | 0755 |
|
| rrsync | File | 12.34 KB | 0755 |
|
| rsync | File | 502.13 KB | 0755 |
|
| rsync-ssl | File | 5.02 KB | 0755 |
|
| rtla | File | 1.58 KB | 0755 |
|
| rtstat | File | 22.66 KB | 0755 |
|
| run-one | File | 3.51 KB | 0755 |
|
| run-one-constantly | File | 3.51 KB | 0755 |
|
| run-one-until-failure | File | 3.51 KB | 0755 |
|
| run-one-until-success | File | 3.51 KB | 0755 |
|
| run-parts | File | 26.82 KB | 0755 |
|
| run-this-one | File | 3.51 KB | 0755 |
|
| runcon | File | 34.51 KB | 0755 |
|
| rview | File | 3.94 MB | 0755 |
|
| rvim | File | 3.94 MB | 0755 |
|
| sadf | File | 382.31 KB | 0755 |
|
| sar | File | 137.38 KB | 0755 |
|
| sar.sysstat | File | 137.38 KB | 0755 |
|
| savelog | File | 10.24 KB | 0755 |
|
| sbattach | File | 22.54 KB | 0755 |
|
| sbigtopgm | File | 14.3 KB | 0755 |
|
| sbkeysync | File | 34.74 KB | 0755 |
|
| sbsiglist | File | 14.6 KB | 0755 |
|
| sbsign | File | 34.7 KB | 0755 |
|
| sbvarsign | File | 22.73 KB | 0755 |
|
| sbverify | File | 30.61 KB | 0755 |
|
| scalar | File | 668.94 KB | 0755 |
|
| scandeps | File | 6.47 KB | 0755 |
|
| scp | File | 134.59 KB | 0755 |
|
| screen | File | 478.24 KB | 0755 |
|
| screendump | File | 14.3 KB | 0755 |
|
| script | File | 54.38 KB | 0755 |
|
| scriptlive | File | 42.38 KB | 0755 |
|
| scriptreplay | File | 34.38 KB | 0755 |
|
| scsi_logging_level | File | 8.38 KB | 0755 |
|
| scsi_mandat | File | 3.52 KB | 0755 |
|
| scsi_readcap | File | 1.3 KB | 0755 |
|
| scsi_ready | File | 1.09 KB | 0755 |
|
| scsi_satl | File | 3.74 KB | 0755 |
|
| scsi_start | File | 1.25 KB | 0755 |
|
| scsi_stop | File | 1.44 KB | 0755 |
|
| scsi_temperature | File | 936 B | 0755 |
|
| sdiff | File | 50.39 KB | 0755 |
|
| sed | File | 110.57 KB | 0755 |
|
| select-editor | File | 2.39 KB | 0755 |
|
| sensible-browser | File | 1.55 KB | 0755 |
|
| sensible-editor | File | 1.52 KB | 0755 |
|
| sensible-pager | File | 921 B | 0755 |
|
| sensible-terminal | File | 1.15 KB | 0755 |
|
| seq | File | 50.51 KB | 0755 |
|
| setarch | File | 26.65 KB | 0755 |
|
| setfont | File | 54.46 KB | 0755 |
|
| setkeycodes | File | 14.37 KB | 0755 |
|
| setleds | File | 18.43 KB | 0755 |
|
| setlogcons | File | 14.37 KB | 0755 |
|
| setmetamode | File | 14.41 KB | 0755 |
|
| setpci | File | 30.38 KB | 0755 |
|
| setpriv | File | 38.38 KB | 0755 |
|
| setsid | File | 14.38 KB | 0755 |
|
| setterm | File | 34.38 KB | 0755 |
|
| setupcon | File | 40.06 KB | 0755 |
|
| sftp | File | 150.66 KB | 0755 |
|
| sg | File | 39.71 KB | 4755 |
|
| sg_bg_ctl | File | 14.51 KB | 0755 |
|
| sg_compare_and_write | File | 26.91 KB | 0755 |
|
| sg_copy_results | File | 23.3 KB | 0755 |
|
| sg_dd | File | 54.33 KB | 0755 |
|
| sg_decode_sense | File | 14.76 KB | 0755 |
|
| sg_emc_trespass | File | 14.3 KB | 0755 |
|
| sg_format | File | 39.35 KB | 0755 |
|
| sg_get_config | File | 35.38 KB | 0755 |
|
| sg_get_elem_status | File | 26.79 KB | 0755 |
|
| sg_get_lba_status | File | 22.95 KB | 0755 |
|
| sg_ident | File | 14.6 KB | 0755 |
|
| sg_inq | File | 115.61 KB | 0755 |
|
| sg_logs | File | 146.93 KB | 0755 |
|
| sg_luns | File | 22.79 KB | 0755 |
|
| sg_map | File | 18.3 KB | 0755 |
|
| sg_map26 | File | 26.7 KB | 0755 |
|
| sg_modes | File | 46.08 KB | 0755 |
|
| sg_opcodes | File | 35.01 KB | 0755 |
|
| sg_persist | File | 36.08 KB | 0755 |
|
| sg_prevent | File | 14.51 KB | 0755 |
|
| sg_raw | File | 26.91 KB | 0755 |
|
| sg_rbuf | File | 22.73 KB | 0755 |
|
| sg_rdac | File | 18.3 KB | 0755 |
|
| sg_read | File | 26.31 KB | 0755 |
|
| sg_read_attr | File | 36.65 KB | 0755 |
|
| sg_read_block_limits | File | 14.54 KB | 0755 |
|
| sg_read_buffer | File | 27.56 KB | 0755 |
|
| sg_read_long | File | 14.7 KB | 0755 |
|
| sg_readcap | File | 22.79 KB | 0755 |
|
| sg_reassign | File | 18.66 KB | 0755 |
|
| sg_referrals | File | 14.66 KB | 0755 |
|
| sg_rep_pip | File | 14.57 KB | 0755 |
|
| sg_rep_zones | File | 26.8 KB | 0755 |
|
| sg_requests | File | 22.76 KB | 0755 |
|
| sg_reset | File | 14.66 KB | 0755 |
|
| sg_reset_wp | File | 14.6 KB | 0755 |
|
| sg_rmsn | File | 14.51 KB | 0755 |
|
| sg_rtpg | File | 14.6 KB | 0755 |
|
| sg_safte | File | 22.7 KB | 0755 |
|
| sg_sanitize | File | 27.01 KB | 0755 |
|
| sg_sat_identify | File | 18.73 KB | 0755 |
|
| sg_sat_phy_event | File | 19.01 KB | 0755 |
|
| sg_sat_read_gplog | File | 18.73 KB | 0755 |
|
| sg_sat_set_features | File | 18.7 KB | 0755 |
|
| sg_scan | File | 18.38 KB | 0755 |
|
| sg_seek | File | 18.88 KB | 0755 |
|
| sg_senddiag | File | 27.2 KB | 0755 |
|
| sg_ses | File | 119.97 KB | 0755 |
|
| sg_ses_microcode | File | 27.36 KB | 0755 |
|
| sg_start | File | 18.85 KB | 0755 |
|
| sg_stpg | File | 22.73 KB | 0755 |
|
| sg_stream_ctl | File | 18.7 KB | 0755 |
|
| sg_sync | File | 14.66 KB | 0755 |
|
| sg_test_rwbuf | File | 18.6 KB | 0755 |
|
| sg_timestamp | File | 22.83 KB | 0755 |
|
| sg_turs | File | 26.7 KB | 0755 |
|
| sg_unmap | File | 22.76 KB | 0755 |
|
| sg_verify | File | 22.91 KB | 0755 |
|
| sg_vpd | File | 118.42 KB | 0755 |
|
| sg_wr_mode | File | 22.73 KB | 0755 |
|
| sg_write_buffer | File | 27.23 KB | 0755 |
|
| sg_write_long | File | 14.76 KB | 0755 |
|
| sg_write_same | File | 26.95 KB | 0755 |
|
| sg_write_verify | File | 26.79 KB | 0755 |
|
| sg_write_x | File | 55.6 KB | 0755 |
|
| sg_xcopy | File | 42.32 KB | 0755 |
|
| sg_zone | File | 14.86 KB | 0755 |
|
| sginfo | File | 76.01 KB | 0755 |
|
| sgitopnm | File | 18.3 KB | 0755 |
|
| sgm_dd | File | 34.31 KB | 0755 |
|
| sgp_dd | File | 46.31 KB | 0755 |
|
| sh | File | 126.74 KB | 0755 |
|
| sha1sum | File | 38.41 KB | 0755 |
|
| sha224sum | File | 38.41 KB | 0755 |
|
| sha256sum | File | 38.41 KB | 0755 |
|
| sha384sum | File | 38.41 KB | 0755 |
|
| sha512sum | File | 38.41 KB | 0755 |
|
| shasum | File | 9.75 KB | 0755 |
|
| showconsolefont | File | 18.37 KB | 0755 |
|
| showkey | File | 18.37 KB | 0755 |
|
| shred | File | 54.51 KB | 0755 |
|
| shuf | File | 46.51 KB | 0755 |
|
| sirtopnm | File | 14.3 KB | 0755 |
|
| sixel2png | File | 14.3 KB | 0755 |
|
| skill | File | 26.41 KB | 0755 |
|
| slabtop | File | 22.44 KB | 0755 |
|
| sldtoppm | File | 18.35 KB | 0755 |
|
| sleep | File | 34.51 KB | 0755 |
|
| slogin | File | 827.04 KB | 0755 |
|
| snap | File | 20.84 MB | 0755 |
|
| snapctl | File | 7.37 MB | 0755 |
|
| snapfuse | File | 38.23 KB | 0755 |
|
| snice | File | 26.41 KB | 0755 |
|
| socat | File | 447.68 KB | 0755 |
|
| socat-broker.sh | File | 2.24 KB | 0755 |
|
| socat-chain.sh | File | 7.86 KB | 0755 |
|
| socat-mux.sh | File | 3.47 KB | 0755 |
|
| socat1 | File | 447.68 KB | 0755 |
|
| soelim | File | 34.48 KB | 0755 |
|
| sort | File | 102.8 KB | 0755 |
|
| sos | File | 612 B | 0755 |
|
| sos-collector | File | 1.04 KB | 0755 |
|
| sosreport | File | 1.03 KB | 0755 |
|
| sotruss | File | 4.21 KB | 0755 |
|
| spctoppm | File | 14.3 KB | 0755 |
|
| splain | File | 18.99 KB | 0755 |
|
| split | File | 54.94 KB | 0755 |
|
| splitfont | File | 14.3 KB | 0755 |
|
| spottopgm | File | 14.31 KB | 0755 |
|
| sprof | File | 34.44 KB | 0755 |
|
| sputoppm | File | 14.3 KB | 0755 |
|
| sqfscat | File | 147.9 KB | 0755 |
|
| sqfstar | File | 286.95 KB | 0755 |
|
| srftopam | File | 18.3 KB | 0755 |
|
| ss | File | 129.07 KB | 0755 |
|
| ssh | File | 827.04 KB | 0755 |
|
| ssh-add | File | 294.42 KB | 0755 |
|
| ssh-agent | File | 302.43 KB | 2755 |
|
| ssh-argv0 | File | 1.42 KB | 0755 |
|
| ssh-copy-id | File | 12.77 KB | 0755 |
|
| ssh-import-id | File | 985 B | 0755 |
|
| ssh-import-id-gh | File | 785 B | 0755 |
|
| ssh-import-id-lp | File | 785 B | 0755 |
|
| ssh-keygen | File | 442.44 KB | 0755 |
|
| ssh-keyscan | File | 330.44 KB | 0755 |
|
| st4topgm | File | 14.3 KB | 0755 |
|
| stat | File | 86.52 KB | 0755 |
|
| static-sh | File | 2.03 MB | 0755 |
|
| stdbuf | File | 50.51 KB | 0755 |
|
| strace | File | 1.99 MB | 0755 |
|
| strace-log-merge | File | 1.78 KB | 0755 |
|
| stream | File | 14.31 KB | 0755 |
|
| stream-im6 | File | 14.31 KB | 0755 |
|
| stream-im6.q16 | File | 14.31 KB | 0755 |
|
| streamzip | File | 7.87 KB | 0755 |
|
| stty | File | 78.52 KB | 0755 |
|
| su | File | 54.38 KB | 4755 |
|
| sudo | File | 271.42 KB | 4755 |
|
| sudoedit | File | 271.42 KB | 4755 |
|
| sudoreplay | File | 95.95 KB | 0755 |
|
| sum | File | 34.41 KB | 0755 |
|
| sunicontopnm | File | 14.3 KB | 0755 |
|
| svgtopam | File | 22.3 KB | 0755 |
|
| sync | File | 34.41 KB | 0755 |
|
| systemctl | File | 1.43 MB | 0755 |
|
| systemd | File | 98.45 KB | 0755 |
|
| systemd-ac-power | File | 14.45 KB | 0755 |
|
| systemd-analyze | File | 198.85 KB | 0755 |
|
| systemd-ask-password | File | 18.58 KB | 0755 |
|
| systemd-cat | File | 18.45 KB | 0755 |
|
| systemd-cgls | File | 22.57 KB | 0755 |
|
| systemd-cgtop | File | 38.47 KB | 0755 |
|
| systemd-confext | File | 54.64 KB | 0755 |
|
| systemd-creds | File | 42.72 KB | 0755 |
|
| systemd-cryptenroll | File | 70.92 KB | 0755 |
|
| systemd-cryptsetup | File | 78.95 KB | 0755 |
|
| systemd-delta | File | 26.45 KB | 0755 |
|
| systemd-detect-virt | File | 18.45 KB | 0755 |
|
| systemd-escape | File | 22.45 KB | 0755 |
|
| systemd-firstboot | File | 58.82 KB | 0755 |
|
| systemd-hwdb | File | 154.74 KB | 0755 |
|
| systemd-id128 | File | 22.45 KB | 0755 |
|
| systemd-inhibit | File | 22.47 KB | 0755 |
|
| systemd-machine-id-setup | File | 18.63 KB | 0755 |
|
| systemd-mount | File | 50.78 KB | 0755 |
|
| systemd-notify | File | 26.66 KB | 0755 |
|
| systemd-path | File | 18.45 KB | 0755 |
|
| systemd-repart | File | 195.23 KB | 0755 |
|
| systemd-run | File | 66.79 KB | 0755 |
|
| systemd-socket-activate | File | 30.45 KB | 0755 |
|
| systemd-stdio-bridge | File | 22.45 KB | 0755 |
|
| systemd-sysext | File | 54.64 KB | 0755 |
|
| systemd-sysusers | File | 66.63 KB | 0755 |
|
| systemd-tmpfiles | File | 114.7 KB | 0755 |
|
| systemd-tty-ask-password-agent | File | 34.45 KB | 0755 |
|
| systemd-umount | File | 50.78 KB | 0755 |
|
| tabs | File | 18.3 KB | 0755 |
|
| tac | File | 38.41 KB | 0755 |
|
| tail | File | 62.53 KB | 0755 |
|
| tapestat | File | 26.44 KB | 0755 |
|
| tar | File | 421.92 KB | 0755 |
|
| taskset | File | 30.38 KB | 0755 |
|
| tbl | File | 134.48 KB | 0755 |
|
| tclsh | File | 14.15 KB | 0755 |
|
| tclsh8.6 | File | 14.15 KB | 0755 |
|
| tcpdump | File | 1.21 MB | 0755 |
|
| tee | File | 38.51 KB | 0755 |
|
| telnet | File | 177.85 KB | 0755 |
|
| tempfile | File | 14.3 KB | 0755 |
|
| test | File | 46.44 KB | 0755 |
|
| tgatoppm | File | 18.3 KB | 0755 |
|
| thinkjettopbm | File | 18.3 KB | 0755 |
|
| tic | File | 90.41 KB | 0755 |
|
| tifftopnm | File | 42.38 KB | 0755 |
|
| time | File | 26.52 KB | 0755 |
|
| timedatectl | File | 46.45 KB | 0755 |
|
| timeout | File | 38.95 KB | 0755 |
|
| tkconch3 | File | 227 B | 0755 |
|
| tload | File | 22.39 KB | 0755 |
|
| tmux | File | 1.05 MB | 0755 |
|
| tnftp | File | 182.9 KB | 0755 |
|
| toe | File | 22.3 KB | 0755 |
|
| toilet | File | 26.68 KB | 0755 |
|
| top | File | 131.7 KB | 0755 |
|
| touch | File | 94.51 KB | 0755 |
|
| tput | File | 26.34 KB | 0755 |
|
| tr | File | 46.51 KB | 0755 |
|
| trace-cmd | File | 435.41 KB | 0755 |
|
| tracepath | File | 18.15 KB | 0755 |
|
| trial3 | File | 219 B | 0755 |
|
| troff | File | 726.62 KB | 0755 |
|
| true | File | 26.3 KB | 0755 |
|
| truncate | File | 38.51 KB | 0755 |
|
| tset | File | 26.31 KB | 0755 |
|
| tsort | File | 46.51 KB | 0755 |
|
| tty | File | 34.51 KB | 0755 |
|
| turbostat | File | 1.58 KB | 0755 |
|
| twist3 | File | 239 B | 0755 |
|
| twistd3 | File | 220 B | 0755 |
|
| tzselect | File | 15.02 KB | 0755 |
|
| ua | File | 1003 B | 0755 |
|
| ubuntu-advantage | File | 1003 B | 0755 |
|
| ubuntu-bug | File | 2.27 KB | 0755 |
|
| ubuntu-distro-info | File | 26.89 KB | 0755 |
|
| ubuntu-drivers | File | 18.97 KB | 0755 |
|
| ubuntu-security-status | File | 22.25 KB | 0755 |
|
| ucf | File | 40.68 KB | 0755 |
|
| ucfq | File | 18.91 KB | 0755 |
|
| ucfr | File | 10.85 KB | 0755 |
|
| uclampset | File | 30.38 KB | 0755 |
|
| ucs2any | File | 26.15 KB | 0755 |
|
| udevadm | File | 1.37 MB | 0755 |
|
| udisksctl | File | 62.38 KB | 0755 |
|
| ul | File | 22.38 KB | 0755 |
|
| umount | File | 38.38 KB | 4755 |
|
| uname | File | 34.51 KB | 0755 |
|
| unattended-upgrade | File | 97.21 KB | 0755 |
|
| unattended-upgrades | File | 97.21 KB | 0755 |
|
| uncompress | File | 2.29 KB | 0755 |
|
| unexpand | File | 38.53 KB | 0755 |
|
| unicode_start | File | 2.71 KB | 0755 |
|
| unicode_stop | File | 528 B | 0755 |
|
| uniq | File | 38.51 KB | 0755 |
|
| unlink | File | 34.51 KB | 0755 |
|
| unlzma | File | 86.92 KB | 0755 |
|
| unminimize | File | 5.59 KB | 0755 |
|
| unmkinitramfs | File | 3.7 KB | 0755 |
|
| unshare | File | 42.6 KB | 0755 |
|
| unsquashfs | File | 147.9 KB | 0755 |
|
| unxz | File | 86.92 KB | 0755 |
|
| unzip | File | 174.42 KB | 0755 |
|
| unzipsfx | File | 74.42 KB | 0755 |
|
| unzstd | File | 998.79 KB | 0755 |
|
| update-alternatives | File | 58.38 KB | 0755 |
|
| update-mime-database | File | 74.33 KB | 0755 |
|
| upower | File | 14.3 KB | 0755 |
|
| uptime | File | 14.38 KB | 0755 |
|
| usb-devices | File | 4.83 KB | 0755 |
|
| usbhid-dump | File | 30.38 KB | 0755 |
|
| usbip | File | 1.58 KB | 0755 |
|
| usbipd | File | 1.58 KB | 0755 |
|
| usbreset | File | 14.3 KB | 0755 |
|
| users | File | 34.51 KB | 0755 |
|
| utmpdump | File | 22.38 KB | 0755 |
|
| uuidgen | File | 18.38 KB | 0755 |
|
| uuidparse | File | 22.38 KB | 0755 |
|
| varlinkctl | File | 30.45 KB | 0755 |
|
| vcs-run | File | 6.75 KB | 0755 |
|
| vdir | File | 138.98 KB | 0755 |
|
| vi | File | 3.94 MB | 0755 |
|
| view | File | 3.94 MB | 0755 |
|
| vigpg | File | 2.58 KB | 0755 |
|
| vim | File | 3.94 MB | 0755 |
|
| vim.basic | File | 3.94 MB | 0755 |
|
| vim.tiny | File | 1.66 MB | 0755 |
|
| vimdiff | File | 3.94 MB | 0755 |
|
| vimtutor | File | 2.1 KB | 0755 |
|
| vm-support | File | 9.83 KB | 0755 |
|
| vmhgfs-fuse | File | 46.73 KB | 0755 |
|
| vmstat | File | 38.78 KB | 0755 |
|
| vmtoolsd | File | 74.56 KB | 0755 |
|
| vmware-alias-import | File | 42.52 KB | 0755 |
|
| vmware-checkvm | File | 14.38 KB | 0755 |
|
| vmware-hgfsclient | File | 14.38 KB | 0755 |
|
| vmware-namespace-cmd | File | 22.3 KB | 0755 |
|
| vmware-rpctool | File | 18.3 KB | 0755 |
|
| vmware-toolbox-cmd | File | 54.59 KB | 0755 |
|
| vmware-vgauth-cmd | File | 18.3 KB | 0755 |
|
| vmware-vmblock-fuse | File | 22.78 KB | 0755 |
|
| vmware-xferlogs | File | 32.33 KB | 0755 |
|
| w | File | 26.38 KB | 0755 |
|
| w3m | File | 1.58 MB | 0755 |
|
| w3mman | File | 1.37 KB | 0755 |
|
| wall | File | 22.38 KB | 0755 |
|
| watch | File | 30.84 KB | 0755 |
|
| watchgnupg | File | 22.3 KB | 0755 |
|
| wbmptopbm | File | 14.3 KB | 0755 |
|
| wc | File | 54.52 KB | 0755 |
|
| wcmgr | File | 26.2 KB | 0755 |
|
| wdctl | File | 34.4 KB | 0755 |
|
| webalizer | File | 212.35 KB | 0755 |
|
| webazolver | File | 212.35 KB | 0755 |
|
| wget | File | 459.02 KB | 0755 |
|
| whatis | File | 47.28 KB | 0755 |
|
| whereis | File | 30.84 KB | 0755 |
|
| which | File | 1.05 KB | 0755 |
|
| which.debianutils | File | 1.05 KB | 0755 |
|
| whiptail | File | 30.16 KB | 0755 |
|
| who | File | 58.52 KB | 0755 |
|
| whoami | File | 34.51 KB | 0755 |
|
| whois | File | 155.66 KB | 0755 |
|
| wifi-status | File | 2.06 KB | 0755 |
|
| winicontopam | File | 22.3 KB | 0755 |
|
| winicontoppm | File | 18.3 KB | 0755 |
|
| write | File | 22.38 KB | 0755 |
|
| wsrep_sst_backup | File | 2.39 KB | 0755 |
|
| wsrep_sst_common | File | 66.86 KB | 0755 |
|
| wsrep_sst_mariabackup | File | 49.23 KB | 0755 |
|
| wsrep_sst_mysqldump | File | 8.11 KB | 0755 |
|
| wsrep_sst_rsync | File | 29.72 KB | 0755 |
|
| wsrep_sst_rsync_wan | File | 29.72 KB | 0755 |
|
| www-browser | File | 1.58 MB | 0755 |
|
| x86_64 | File | 26.65 KB | 0755 |
|
| x86_energy_perf_policy | File | 1.58 KB | 0755 |
|
| xargs | File | 62.41 KB | 0755 |
|
| xauth | File | 54.96 KB | 0755 |
|
| xbmtopbm | File | 14.3 KB | 0755 |
|
| xdg-user-dir | File | 234 B | 0755 |
|
| xdg-user-dirs-update | File | 26.23 KB | 0755 |
|
| ximtoppm | File | 14.3 KB | 0755 |
|
| xpmtoppm | File | 18.35 KB | 0755 |
|
| xsubpp | File | 5.05 KB | 0755 |
|
| xvminitoppm | File | 14.3 KB | 0755 |
|
| xwdtopnm | File | 26.3 KB | 0755 |
|
| xxd | File | 22.28 KB | 0755 |
|
| xz | File | 86.92 KB | 0755 |
|
| xzcat | File | 86.92 KB | 0755 |
|
| xzcmp | File | 7.25 KB | 0755 |
|
| xzdiff | File | 7.25 KB | 0755 |
|
| xzegrep | File | 10.09 KB | 0755 |
|
| xzfgrep | File | 10.09 KB | 0755 |
|
| xzgrep | File | 10.09 KB | 0755 |
|
| xzless | File | 1.77 KB | 0755 |
|
| xzmore | File | 2.14 KB | 0755 |
|
| ybmtopbm | File | 14.3 KB | 0755 |
|
| yes | File | 34.38 KB | 0755 |
|
| ypdomainname | File | 22.23 KB | 0755 |
|
| yuvsplittoppm | File | 14.3 KB | 0755 |
|
| yuvtoppm | File | 14.3 KB | 0755 |
|
| yuy2topam | File | 14.3 KB | 0755 |
|
| zcat | File | 1.94 KB | 0755 |
|
| zcmp | File | 1.64 KB | 0755 |
|
| zdiff | File | 6.31 KB | 0755 |
|
| zdump | File | 30.28 KB | 0755 |
|
| zegrep | File | 29 B | 0755 |
|
| zeisstopnm | File | 14.3 KB | 0755 |
|
| zfgrep | File | 29 B | 0755 |
|
| zforce | File | 2.03 KB | 0755 |
|
| zgrep | File | 7.91 KB | 0755 |
|
| zip | File | 206.98 KB | 0755 |
|
| zipcloak | File | 70.4 KB | 0755 |
|
| zipdetails | File | 68.55 KB | 0755 |
|
| zipgrep | File | 2.89 KB | 0755 |
|
| zipinfo | File | 174.42 KB | 0755 |
|
| zipnote | File | 62.4 KB | 0755 |
|
| zipsplit | File | 58.4 KB | 0755 |
|
| zless | File | 2.15 KB | 0755 |
|
| zmore | File | 1.8 KB | 0755 |
|
| znew | File | 4.47 KB | 0755 |
|
| zstd | File | 998.79 KB | 0755 |
|
| zstdcat | File | 998.79 KB | 0755 |
|
| zstdgrep | File | 3.78 KB | 0755 |
|
| zstdless | File | 197 B | 0755 |
|
| zstdmt | File | 998.79 KB | 0755 |
|