BBS-Universal
view release on metacpan or search on metacpan
lib/BBS/Universal.pm view on Meta::CPAN
# package BBS::Universal::ASCII;
sub ascii_initialize {
my $self = shift;
$self->{'debug'}->DEBUG(['Start ASCII Initialize']);
$self->{'ascii_meta'} = {
'RETURN' => { 'out' => chr(13), 'unicode' => ' ', 'desc' => 'Carriage Return' },
'LINEFEED' => { 'out' => chr(10), 'unicode' => ' ', 'desc' => 'Linefeed' },
'NEWLINE' => { 'out' => chr(13) . chr(10), 'unicode' => ' ', 'desc' => 'Newline' },
'BACKSPACE' => { 'out' => chr(8), 'unicode' => ' ', 'desc' => 'Backspace' },
'TAB' => { 'out' => chr(9), 'unicode' => ' ', 'desc' => 'Tab' },
'DELETE' => { 'out' => chr(127), 'unicode' => ' ', 'desc' => 'Delete' },
'CLS' => { 'out' => chr(12), 'unicode' => ' ', 'desc' => 'Clear Screen (Formfeed)' },
'CLEAR' => { 'out' => chr(12), 'unicode' => ' ', 'desc' => 'Clear Screen (Formfeed)' },
'RING BELL' => { 'out' => chr(7), 'unicode' => ' ', 'desc' => 'Console Bell' },
};
$self->{'debug'}->DEBUG(['End ACSII Initialize']);
return ($self);
} ## end sub ascii_initialize
sub ascii_output {
my $self = shift;
my $text = shift;
$self->{'debug'}->DEBUG(['Start ASCII Output']);
lib/BBS/Universal.pm view on Meta::CPAN
# package BBS::Universal::ATASCII;
sub atascii_initialize {
my $self = shift;
$self->{'debug'}->DEBUG(['Start ATASCII Initialize']);
$self->{'atascii_meta'} = {
# Control
'ESC' => { 'out' => chr(27), 'unicode' => 'â', 'desc' => 'Escape', },
'UP' => { 'out' => chr(28), 'unicode' => ' ', 'desc' => 'Move Cursor Up', },
'DOWN' => { 'out' => chr(29), 'unicode' => ' ', 'desc' => 'Move Cursor Down', },
'LEFT' => { 'out' => chr(30), 'unicode' => ' ', 'desc' => 'Move Cursor Left', },
'RIGHT' => { 'out' => chr(31), 'unicode' => ' ', 'desc' => 'Move Cursor Right', },
'CLEAR' => { 'out' => chr(125), 'unicode' => ' ', 'desc' => 'Clear Screen', },
'BACKSPACE' => { 'out' => chr(126), 'unicode' => ' ', 'desc' => 'Backspace', },
'TAB' => { 'out' => chr(127), 'unicode' => ' ', 'desc' => 'Tab', },
'RETURN' => { 'out' => chr(155), 'unicode' => ' ', 'desc' => 'Carriage Return', },
'DELETE LINE' => { 'out' => chr(156), 'unicode' => ' ', 'desc' => 'Delete Line', },
'INSERT LINE' => { 'out' => chr(157), 'unicode' => ' ', 'desc' => 'Insert Line', },
'CLEAR TAB STOP' => { 'out' => chr(158), 'unicode' => ' ', 'desc' => 'Clear Tab Stop', },
'SET TAB STOP' => { 'out' => chr(159), 'unicode' => ' ', 'desc' => 'Set Tab Stop', },
'BUZZER' => { 'out' => chr(253), 'unicode' => ' ', 'desc' => 'Console Bell', },
'RING BELL' => { 'out' => chr(253), 'unicode' => ' ', 'desc' => 'Console Bell', },
'DELETE' => { 'out' => chr(254), 'unicode' => ' ', 'desc' => 'Delete', },
'INSERT' => { 'out' => chr(255), 'unicode' => ' ', 'desc' => 'Insert', },
# Normal
'HEART' => { 'out' => chr(0), 'unicode' => 'â¥', 'desc' => 'Heart', },
'VERTICAL BAR MIDDLE LEFT' => { 'out' => chr(1), 'unicode' => 'â£', 'desc' => 'Vertical Bar Middle Left', },
'RIGHT VERTICAL BAR' => { 'out' => chr(2), 'unicode' => 'ð®', 'desc' => 'Right Vertical Bar', },
'BOTTOM RIGHT CORNER' => { 'out' => chr(3), 'unicode' => 'â', 'desc' => 'Bottom Right Corner', },
'VERTICAL BAR MIDDLE RIGHT' => { 'out' => chr(4), 'unicode' => 'â«', 'desc' => 'Vertical Bar Middle Right', },
'TOP RIGHT CORNER' => { 'out' => chr(5), 'unicode' => 'â', 'desc' => 'Top Right Corner', },
'LARGE FORWARD SLASH' => { 'out' => chr(6), 'unicode' => 'â±', 'desc' => 'Large Forward Slash', },
'LARGE BACKSLASH' => { 'out' => chr(7), 'unicode' => 'â²', 'desc' => 'Large Backslash', },
'TOP LEFT WEDGE' => { 'out' => chr(8), 'unicode' => 'â¢', 'desc' => 'Top Left Wedge', },
'BOTTOM RIGHT BOX' => { 'out' => chr(9), 'unicode' => 'â', 'desc' => 'Bottom Right Box', },
'TOP RIGHT WEDGE' => { 'out' => chr(10), 'unicode' => 'â£', 'desc' => 'Top Right Wedge', },
'TOP RIGHT BOX' => { 'out' => chr(11), 'unicode' => 'â', 'desc' => 'Top Right Box', },
'TOP LEFT BOX' => { 'out' => chr(12), 'unicode' => 'â', 'desc' => 'Top Left Box', },
'TOP HORIZONTAL BAR' => { 'out' => chr(13), 'unicode' => 'ð®', 'desc' => 'Top Horizontal Bar', },
'BOTTOM HORIZONTAL BAR' => { 'out' => chr(14), 'unicode' => 'â', 'desc' => 'Bottom Horizontal Bar', },
'BOTTOM LEFT BOX' => { 'out' => chr(15), 'unicode' => 'â', 'desc' => 'Bottom Left Box', },
'CLUB' => { 'out' => chr(16), 'unicode' => 'â£', 'desc' => 'Club', },
'TOP LEFT CORNER' => { 'out' => chr(17), 'unicode' => 'â', 'desc' => 'Top Left Corner', },
'HORIZONTAL BAR' => { 'out' => chr(18), 'unicode' => 'â', 'desc' => 'Horizontal Bar', },
'CROSS BAR' => { 'out' => chr(19), 'unicode' => 'â', 'desc' => 'Cross Bar', },
'CENTER DOT' => { 'out' => chr(20), 'unicode' => 'âº', 'desc' => 'Center Dot', },
'BOTTOM BOX' => { 'out' => chr(21), 'unicode' => 'â', 'desc' => 'Bottom Box', },
'LEFT VERTICAL BAR' => { 'out' => chr(22), 'unicode' => 'â', 'desc' => 'Left Vertical Bar', },
'HORIZONTAL BAR MIDDLE TOP' => { 'out' => chr(23), 'unicode' => 'â³', 'desc' => 'Horizontal Bar Middle Top', },
'HORIZONTAL BAR MIDDLE BOTTOM' => { 'out' => chr(24), 'unicode' => 'â»', 'desc' => 'Horizontal Bar Middle Bottom', },
'LEFT VERTICAL BAR' => { 'out' => chr(25), 'unicode' => 'â', 'desc' => 'Left Vertical Bar', },
'BOTTOM LEFT CORNER' => { 'out' => chr(26), 'unicode' => 'â', 'desc' => 'Botom Left Corner', },
'UP ARROW' => { 'out' => chr(28), 'unicode' => 'ð¡¹', 'desc' => 'Up Arrow', },
'DOWN ARROW' => { 'out' => chr(29), 'unicode' => 'ð¡»', 'desc' => 'Down Arrow', },
'LEFT ARROW' => { 'out' => chr(30), 'unicode' => 'ð¡¸', 'desc' => 'Left Arrow', },
'RIGHT ARROW' => { 'out' => chr(31), 'unicode' => 'ð¡º', 'desc' => 'Right Arrow', },
'DIAMOND' => { 'out' => chr(96), 'unicode' => 'â¦', 'desc' => 'Diamond', },
'SPADE' => { 'out' => chr(123), 'unicode' => 'â ', 'desc' => 'Spade', },
'MIDDLE VERTICAL BAR' => { 'out' => chr(124), 'unicode' => '|', 'desc' => 'Middle Vertical Bar', },
'BACK ARROW' => { 'out' => chr(125), 'unicode' => 'ð¢°', 'desc' => 'Back Arrow', },
'LEFT TRIANGLE' => { 'out' => chr(126), 'unicode' => 'â', 'desc' => 'Left Triangle', },
'RIGHT TRIANGLE' => { 'out' => chr(127), 'unicode' => 'â¶', 'desc' => 'Right Triangle', },
};
my $inv = "\e[7m";
my $ni = "\e[27m";
my @list = keys %{ $self->{'atascii_meta'} };
foreach my $name (@list) {
next if ($name =~ /^(ESC|UP|DOWN|LEFT|RIGHT|CLEAR|BACKSPACE|TAB|RETURN|NEWLINE|DELETE LINE|INSERT LINE|CLEAR TAB STOP|BUZZER|RING BELL|DELETE|INSERT)$/);
$self->{'atascii_meta'}->{"REVERSED $name"}->{'unicode'} = $inv . $self->{'atascii_meta'}->{$name}->{'unicode'} . $ni;
$self->{'atascii_meta'}->{"REVERSED $name"}->{'out'} = chr(128 + ord($self->{'atascii_meta'}->{$name}->{'out'}));
$self->{'atascii_meta'}->{"REVERSED $name"}->{'desc'} = 'Reversed ' . $self->{'atascii_meta'}->{$name}->{'desc'};
}
$self->{'atascii_table'} = [
# Normal
'â¥', 'â£', 'ð®', 'â', 'â«', 'â', 'â±', 'â²', 'â¢', 'â', 'â£', 'ð¬', 'ð¬', 'â', 'â', 'â', 'â£', 'â', 'â', 'â', 'âº', 'â', 'â', 'â³', 'â»', 'â', 'â', 'â', 'ð¡¹', 'ð¡»', 'ð¡¸', 'ð¡º',
' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?',
'@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', "\\", ']', '^', '_',
'â¦', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'â ', '|', 'ð¢°', 'â', 'â¶',
lib/BBS/Universal.pm view on Meta::CPAN
sub petscii_initialize {
my $self = shift;
$self->{'debug'}->DEBUG(['Start PETSCII Initialize']);
my $inv = "\e[7m";
my $ni = "\e[27m";
$self->{'petscii_meta'} = {
# 'NULL 0' => { 'out' => chr(0), 'unicode' => ' ', 'desc' => 'NOP 0', },
# 'NULL 1' => { 'out' => chr(1), 'unicode' => ' ', 'desc' => 'NOP 1', },
# 'NULL 2' => { 'out' => chr(2), 'unicode' => ' ', 'desc' => 'NOP 2', },
'STOP' => { 'out' => chr(3), 'unicode' => ' ', 'desc' => 'PETSCII STOP', },
# 'NULL 4' => { 'out' => chr(4), 'unicode' => ' ', 'desc' => 'NOP 4', },
'WHITE' => { 'out' => chr(5), 'unicode' => ' ', 'desc' => 'White text', },
'RESET' => { 'out' => chr(5), 'unicode' => ' ', 'desc' => 'Reset back to white text', },
# 'NULL 6' => { 'out' => chr(6), 'unicode' => ' ', 'desc' => 'NOP 6', },
# 'NULL 7' => { 'out' => chr(7), 'unicode' => ' ', 'desc' => 'NOP 7', },
'DISABLE SHIFT' => { 'out' => chr(8), 'unicode' => ' ', 'desc' => 'Disable shift', },
'ENABLE SHIFT' => { 'out' => chr(9), 'unicode' => ' ', 'desc' => 'Enable shift', },
# 'NULL 10' => { 'out' => chr(10), 'unicode' => ' ', 'desc' => 'NOP 10', },
# 'NULL 11' => { 'out' => chr(11), 'unicode' => ' ', 'desc' => 'NOP 11', },
# 'NULL 12' => { 'out' => chr(12), 'unicode' => ' ', 'desc' => 'NOP 12', },
'RETURN' => { 'out' => chr(13), 'unicode' => ' ', 'desc' => 'Carriage Return', },
'LOWERCASE' => { 'out' => chr(14), 'unicode' => ' ', 'desc' => 'Lowercase', },
# 'NULL 15' => { 'out' => chr(15), 'unicode' => ' ', 'desc' => 'NOP 15', },
# 'NULL 16' => { 'out' => chr(16), 'unicode' => ' ', 'desc' => 'NOP 16', },
'DOWN' => { 'out' => chr(17), 'unicode' => ' ', 'desc' => 'Cursor down', },
'REVERSE ON' => { 'out' => chr(18), 'unicode' => ' ', 'desc' => 'Reverse on', },
'HOME' => { 'out' => chr(19), 'unicode' => ' ', 'desc' => 'Home', },
'DELETE' => { 'out' => chr(20), 'unicode' => ' ', 'desc' => 'Delete', },
# 'NULL 21' => { 'out' => chr(21), 'unicode' => ' ', 'desc' => 'NOP 21', },
# 'NULL 22' => { 'out' => chr(22), 'unicode' => ' ', 'desc' => 'NOP 22', },
# 'NULL 23' => { 'out' => chr(23), 'unicode' => ' ', 'desc' => 'NOP 23', },
# 'NULL 24' => { 'out' => chr(24), 'unicode' => ' ', 'desc' => 'NOP 24', },
# 'NULL 25' => { 'out' => chr(25), 'unicode' => ' ', 'desc' => 'NOP 25', },
# 'NULL 26' => { 'out' => chr(26), 'unicode' => ' ', 'desc' => 'NOP 26', },
# 'NULL 27' => { 'out' => chr(27), 'unicode' => ' ', 'desc' => 'NOP 27', },
'RED' => { 'out' => chr(28), 'unicode' => ' ', 'desc' => 'Red', },
'RIGHT' => { 'out' => chr(29), 'unicode' => ' ', 'desc' => 'Cursor right', },
'GREEN' => { 'out' => chr(30), 'unicode' => ' ', 'desc' => 'Green', },
'BLUE' => { 'out' => chr(31), 'unicode' => ' ', 'desc' => 'Blue', },
# 'SPACE' => { 'out' => ' ', 'unicode' => ' ', 'desc' => 'Space', },
# 'EXCLAMATION MARK' => { 'out' => '!', 'unicode' => '!', 'desc' => 'Exclamation mark', },
# 'DOUBLE QUOTE' => { 'out' => '"', 'unicode' => '"', 'desc' => 'Double quotation mark', },
# 'HASH' => { 'out' => '#', 'unicode' => '#', 'desc' => 'Hash/pound', },
# 'DOLLAR' => { 'out' => '$', 'unicode' => '$', 'desc' => 'Dollar sign', },
# 'PERCENT' => { 'out' => '%', 'unicode' => '%', 'desc' => 'Percent sign', },
# 'AMPERSAND' => { 'out' => '&', 'unicode' => '&', 'desc' => 'Ampersand', },
# 'SINGLE QUOTE' => { 'out' => "'", 'unicode' => "'", 'desc' => 'Single quotation mark', },
# 'PARENTHESIS LEFT' => { 'out' => '(', 'unicode' => '(', 'desc' => 'Left parenthesis', },
# 'PARENTHESIS RIGHT' => { 'out' => ')', 'unicode' => ')', 'desc' => 'Right parenthesis', },
# 'ASTERISK' => { 'out' => '*', 'unicode' => '*', 'desc' => 'Asterisk', },
# 'PLUS' => { 'out' => '+', 'unicode' => '+', 'desc' => 'Plus sign', },
# 'COMMA' => { 'out' => ',', 'unicode' => ',', 'desc' => 'Comma', },
# 'HYPHEN' => { 'out' => '-', 'unicode' => '-', 'desc' => 'Hyphen', },
# 'PERIOD' => { 'out' => ',', 'unicode' => '.', 'desc' => 'Period', },
# 'FORWARD SLASH' => { 'out' => '/', 'unicode' => '/', 'desc' => 'Forward slash', },
# 'ZERO' => { 'out' => '0', 'unicode' => '0', 'desc' => 'Zero', },
# 'ONE' => { 'out' => '1', 'unicode' => '1', 'desc' => 'One', },
# 'TWO' => { 'out' => '2', 'unicode' => '2', 'desc' => 'Two', },
# 'THREE' => { 'out' => '3', 'unicode' => '3', 'desc' => 'Three', },
# 'FOUR' => { 'out' => '4', 'unicode' => '4', 'desc' => 'Four', },
# 'FIVE' => { 'out' => '5', 'unicode' => '5', 'desc' => 'Five', },
# 'SIX' => { 'out' => '6', 'unicode' => '6', 'desc' => 'Six', },
# 'SEVEN' => { 'out' => '7', 'unicode' => '7', 'desc' => 'Seven', },
# 'EIGHT' => { 'out' => '8', 'unicode' => '8', 'desc' => 'Eight', },
# 'NINE' => { 'out' => '9', 'unicode' => '9', 'desc' => 'Nine', },
# 'COLON' => { 'out' => ':', 'unicode' => ':', 'desc' => 'Colon', },
# 'SEMICOLON' => { 'out' => ';', 'unicode' => ';', 'desc' => 'Semicolon', },
# 'LESS THAN' => { 'out' => '<', 'unicode' => '<', 'desc' => 'Less than', },
# 'EQUAL' => { 'out' => '=', 'unicode' => '=', 'desc' => 'Equal sign', },
# 'GREATER THAN' => { 'out' => '>', 'unicode' => '>', 'desc' => 'Greater than', },
# 'QUESTION MARK' => { 'out' => '?', 'unicode' => '?', 'desc' => 'Question mark', },
# 'AT' => { 'out' => '@', 'unicode' => '@', 'desc' => 'At symbol', },
# 'CHAR A' => { 'out' => 'A', 'unicode' => 'A', 'desc' => 'A', },
# 'CHAR B' => { 'out' => 'B', 'unicode' => 'B', 'desc' => 'B', },
# 'CHAR C' => { 'out' => 'C', 'unicode' => 'C', 'desc' => 'C', },
# 'CHAR D' => { 'out' => 'D', 'unicode' => 'D', 'desc' => 'D', },
# 'CHAR E' => { 'out' => 'E', 'unicode' => 'E', 'desc' => 'E', },
# 'CHAR F' => { 'out' => 'F', 'unicode' => 'F', 'desc' => 'F', },
# 'CHAR G' => { 'out' => 'G', 'unicode' => 'G', 'desc' => 'G', },
# 'CHAR H' => { 'out' => 'H', 'unicode' => 'H', 'desc' => 'H', },
# 'CHAR I' => { 'out' => 'I', 'unicode' => 'I', 'desc' => 'I', },
# 'CHAR J' => { 'out' => 'J', 'unicode' => 'J', 'desc' => 'J', },
# 'CHAR K' => { 'out' => 'K', 'unicode' => 'K', 'desc' => 'K', },
# 'CHAR L' => { 'out' => 'L', 'unicode' => 'L', 'desc' => 'L', },
# 'CHAR M' => { 'out' => 'M', 'unicode' => 'M', 'desc' => 'M', },
# 'CHAR N' => { 'out' => 'N', 'unicode' => 'N', 'desc' => 'N', },
# 'CHAR O' => { 'out' => 'O', 'unicode' => 'O', 'desc' => 'O', },
# 'CHAR P' => { 'out' => 'P', 'unicode' => 'P', 'desc' => 'P', },
# 'CHAR Q' => { 'out' => 'Q', 'unicode' => 'Q', 'desc' => 'Q', },
# 'CHAR R' => { 'out' => 'R', 'unicode' => 'R', 'desc' => 'R', },
# 'CHAR S' => { 'out' => 'S', 'unicode' => 'S', 'desc' => 'S', },
# 'CHAR T' => { 'out' => 'T', 'unicode' => 'T', 'desc' => 'T', },
# 'CHAR U' => { 'out' => 'U', 'unicode' => 'U', 'desc' => 'U', },
# 'CHAR V' => { 'out' => 'V', 'unicode' => 'V', 'desc' => 'V', },
# 'CHAR W' => { 'out' => 'W', 'unicode' => 'W', 'desc' => 'W', },
# 'CHAR X' => { 'out' => 'X', 'unicode' => 'X', 'desc' => 'X', },
# 'CHAR Y' => { 'out' => 'Y', 'unicode' => 'Y', 'desc' => 'Y', },
# 'CHAR Z' => { 'out' => 'Z', 'unicode' => 'Z', 'desc' => 'Z', },
# 'SQUARE BRACKET LEFT' => { 'out' => chr(91), 'unicode' => '[', 'desc' => 'Square left bracket', },
'BRITISH POUND' => { 'out' => chr(92), 'unicode' => '£', 'desc' => 'British Pound', },
# 'SQUARE BRACKET RIGHT' => { 'out' => chr(93), 'unicode' => ']', 'desc' => 'Square right bracket', },
'UP ARROW' => { 'out' => chr(94), 'unicode' => 'â', 'desc' => 'Up Arrow', },
'LEFT ARROW' => { 'out' => chr(95), 'unicode' => 'â', 'desc' => 'Left Arrow', },
'HORIZONTAL BAR' => { 'out' => chr(96), 'unicode' => 'â', 'desc' => 'Horizontal Bar', },
'SPADE' => { 'out' => chr(97), 'unicode' => 'â ', 'desc' => 'Spade', },
'VERTICAL BAR CENTER' => { 'out' => chr(98), 'unicode' => 'â', 'desc' => 'Giant Vertical Bar', },
'HORIZONTAL BAR DUPLICATE' => { 'out' => chr(99), 'unicode' => 'â', 'desc' => 'Horizontal Bar', },
'HORIZONTAL BAR SMALL UPPER BIAS' => { 'out' => chr(100), 'unicode' => 'ð¸', 'desc' => 'Horizontal bar with a slight upper bias', },
'HORIZONTAL BAR LARGE UPPER BIAS' => { 'out' => chr(101), 'unicode' => 'ð¶', 'desc' => 'Horizontal bar with a strong upper bias', },
'HORIZONTAL BAR SMALL LOWER BIAS' => { 'out' => chr(102), 'unicode' => 'ðº', 'desc' => 'Horizontal bar with a slight lower bias', },
'VERTICAL BAR SMALL LEFT BIAS' => { 'out' => chr(103), 'unicode' => ' ', 'desc' => 'Vertical bar with a slight left bias', },
'VERTICAL BAR SMALL RIGHT BIAS' => { 'out' => chr(104), 'unicode' => ' ', 'desc' => 'Vertical bar with a slight right bias', },
'TOP RIGHT ROUNDED CORNER' => { 'out' => chr(105), 'unicode' => 'â®', 'desc' => 'Top Right Rounded Corner', },
'BOTTOM LEFT ROUNDED CORNER' => { 'out' => chr(106), 'unicode' => 'â°', 'desc' => 'Bottom Left Rounded Corner', },
'BOTTOM RIGHT ROUNDED CORNER' => { 'out' => chr(107), 'unicode' => 'â¯', 'desc' => 'Bottom Right Rounded Corner', },
'BOTTOM LEFT RIGHT ANGLE' => { 'out' => chr(108), 'unicode' => 'â¿', 'desc' => 'Bottom left right angle', },
'GIANT BACKSLASH' => { 'out' => chr(109), 'unicode' => 'â²', 'desc' => 'Giant Backslash', },
'GIANT FORWARD SLASH' => { 'out' => chr(110), 'unicode' => 'â±', 'desc' => 'Giant Forward Slash', },
'TOP LEFT RIGHT ANGLE' => { 'out' => chr(111), 'unicode' => 'â¾', 'desc' => 'Top left right angle', },
'TOP RIGHT RIGHT ANGLE' => { 'out' => chr(112), 'unicode' => ' ', 'desc' => 'Top right right angle', },
'CENTER DOT' => { 'out' => chr(113), 'unicode' => 'â¢', 'desc' => 'CENTER DOT', },
'HORIZONTAL BAR LARGE LOWER BIAS' => { 'out' => chr(114), 'unicode' => 'ð»', 'desc' => 'Horizontal bar with a strong lower bias', },
'HEART' => { 'out' => chr(115), 'unicode' => 'â¥', 'desc' => 'Heart', },
'VERTICAL BAR LARGE LEFT BIAS' => { 'out' => chr(116), 'unicode' => ' ', 'desc' => 'Vertical bar with a strong left bias', },
'TOP LEFT ROUNDED CORNER' => { 'out' => chr(117), 'unicode' => 'â', 'desc' => 'Top Left Rounded Corner', },
'GIANT X' => { 'out' => chr(118), 'unicode' => 'â³', 'desc' => 'Giant X', },
'THIN CIRCLE' => { 'out' => chr(119), 'unicode' => 'â', 'desc' => 'Thin Circle', },
'CLUB' => { 'out' => chr(120), 'unicode' => 'â£', 'desc' => 'Club', },
'VERTICAL BAR LARGE RIGHT BIAS' => { 'out' => chr(121), 'unicode' => ' ', 'desc' => 'Vertical bar with a strong right bias', },
'DIAMOND' => { 'out' => chr(122), 'unicode' => 'â¦', 'desc' => 'Diamond', },
'CROSS BAR' => { 'out' => chr(123), 'unicode' => 'â¼', 'desc' => 'Cross Bar', },
'SHADE LEFT' => { 'out' => chr(124), 'unicode' => 'ð®', 'desc' => 'Shade left', },
'VERTICAL BAR' => { 'out' => chr(125), 'unicode' => 'â', 'desc' => 'Vertical bar', },
'PI' => { 'out' => chr(126), 'unicode' => 'Ï', 'desc' => 'Pi symbol', },
'BOTTOM LEFT WEDGE' => { 'out' => chr(127), 'unicode' => 'â¥', 'desc' => 'Bottom Left Wedge', },
# 'NULL 128' => { 'out' => chr(128), 'unicode' => ' ', 'desc' => 'NOP 128', },
'ORANGE' => { 'out' => chr(129), 'unicode' => ' ', 'desc' => 'Orange' },
# 'NULL 130' => { 'out' => chr(130), 'unicode' => ' ', 'desc' => 'NOP 130', },
'RUN' => { 'out' => chr(131), 'unicode' => ' ', 'desc' => 'Run key', },
# 'NULL 132' => { 'out' => chr(132), 'unicode' => ' ', 'desc' => 'NOP 132', },
# 'F1' => { 'out' => chr(133), 'unicode' => ' ', 'desc' => 'F1', },
# 'F3' => { 'out' => chr(134), 'unicode' => ' ', 'desc' => 'F3', },
# 'F5' => { 'out' => chr(135), 'unicode' => ' ', 'desc' => 'F5', },
# 'F7' => { 'out' => chr(136), 'unicode' => ' ', 'desc' => 'F7', },
# 'F2' => { 'out' => chr(137), 'unicode' => ' ', 'desc' => 'F2', },
# 'F4' => { 'out' => chr(138), 'unicode' => ' ', 'desc' => 'F4', },
# 'F6' => { 'out' => chr(139), 'unicode' => ' ', 'desc' => 'F6', },
# 'F8' => { 'out' => chr(140), 'unicode' => ' ', 'desc' => 'F8', },
'SHIFT RETURN' => { 'out' => chr(141), 'unicode' => ' ', 'desc' => 'Shift-return', },
'UPPERCASE' => { 'out' => chr(142), 'unicode' => ' ', 'desc' => 'Uppercase', },
# 'NULL 143' => { 'out' => chr(143), 'unicode' => ' ', 'desc' => 'NOP 143', },
'BLACK' => { 'out' => chr(144), 'unicode' => ' ', 'desc' => 'Black', },
'UP' => { 'out' => chr(145), 'unicode' => ' ', 'desc' => 'Cursor up', },
'REVERSE OFF' => { 'out' => chr(146), 'unicode' => ' ', 'desc' => 'Reverse off', },
'CLEAR' => { 'out' => chr(147), 'unicode' => ' ', 'desc' => 'Clear', },
'INSERT' => { 'out' => chr(148), 'unicode' => ' ', 'desc' => 'Insert', },
'BROWN' => { 'out' => chr(149), 'unicode' => ' ', 'desc' => 'Brown', },
'LIGHT RED' => { 'out' => chr(150), 'unicode' => ' ', 'desc' => 'Light/bright red', },
'DARK GRAY' => { 'out' => chr(151), 'unicode' => ' ', 'desc' => 'Dark gray', },
'MEDIUM GRAY' => { 'out' => chr(152), 'unicode' => ' ', 'desc' => 'Medium gray', },
'LIGHT GREEN' => { 'out' => chr(153), 'unicode' => ' ', 'desc' => 'Light/bright green', },
'LIGHT BLUE' => { 'out' => chr(154), 'unicode' => ' ', 'desc' => 'Light/bright blue', },
'LIGHT GRAY' => { 'out' => chr(155), 'unicode' => ' ', 'desc' => 'Light gray', },
'PURPLE' => { 'out' => chr(156), 'unicode' => ' ', 'desc' => 'Purple', },
'LEFT' => { 'out' => chr(157), 'unicode' => ' ', 'desc' => 'Cursor left', },
'YELLOW' => { 'out' => chr(158), 'unicode' => ' ', 'desc' => 'Yellow', },
'CYAN' => { 'out' => chr(159), 'unicode' => ' ', 'desc' => 'Cyan', },
'REVERSE SPACE' => { 'out' => chr(160), 'unicode' => "$inv $ni", 'desc' => 'Dithered Box Full', },
'REVERSE LEFT HALF' => { 'out' => chr(161), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Left Half', },
'REVERSE BOTTOM BOX' => { 'out' => chr(162), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Box', },
'REVERSE TOP HORIZONTAL BAR' => { 'out' => chr(163), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Horizontal Bar', },
'REVERSE BOTTOM HORIZONTAL BAR' => { 'out' => chr(164), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Horizontal Bar', },
'REVERSE LEFT VERTICAL BAR' => { 'out' => chr(165), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Left Vertical Bar', },
'REVERSE DITHERED BOX' => { 'out' => chr(166), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Dithered Box', },
'REVERSE RIGHT VERTICAL BAR' => { 'out' => chr(167), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Right Vertical Bar', },
'REVERSE DITHERED BOTTOM' => { 'out' => chr(168), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Dithered Left', },
'REVERSE BOTTOM RIGHT WEDGE' => { 'out' => chr(169), 'unicode' => $inv . 'â¤' . $ni, 'desc' => 'Reversed Bottom Right Wedge', },
'REVERSE VERTICAL BAR RIGHT' => { 'out' => chr(170), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Vertical bar flushed right', },
'REVERSE VERTICAL BAR MIDDLE LEFT' => { 'out' => chr(171), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Vertical Bar Middle Left', },
'REVERSE BOTTOM RIGHT BOX' => { 'out' => chr(172), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Right Box', },
'REVERSE BOTTOM LEFT CORNER' => { 'out' => chr(173), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Left Corner', },
'REVERSE TOP RIGHT CORNER' => { 'out' => chr(174), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Right Corner', },
'REVERSE HORIZONTAL BAR BOTTOM' => { 'out' => chr(175), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Horizontal Bar Bottom', },
'REVERSE TOP LEFT CORNER' => { 'out' => chr(176), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Left Corner', },
'REVERSE HORIZONTAL BAR MIDDLE BOTTOM' => { 'out' => chr(177), 'unicode' => $inv . 'â´' . $ni, 'desc' => 'Reversed Horizontal Bar Middle Bottom', },
'REVERSE HORIZONTAL BAR MIDDLE TOP' => { 'out' => chr(178), 'unicode' => $inv . 'â¬' . $ni, 'desc' => 'Reversed Horizontal Bar Middle Top', },
'REVERSE VERTICAL BAR MIDDLE RIGHT' => { 'out' => chr(179), 'unicode' => $inv . 'â¤' . $ni, 'desc' => 'Reversed Vertical Bar Middle Right', },
'REVERSE VERTICAL BOX LEFT' => { 'out' => chr(180), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Vertical Box Left', },
'REVERSE LEFT HALF BOX' => { 'out' => chr(181), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Left Half Box', },
'REVERSE RIGHT HALF BOX' => { 'out' => chr(182), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Right half box', },
'REVERSE HORIZONTAL BAR TOP' => { 'out' => chr(183), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Horizontal bar top', },
'REVERSE HORIZONTAL BAR THICK TOP' => { 'out' => chr(184), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Horizontal bar thick top', },
'REVERSE HORIZONTAL BAR THICK BOTTOM' => { 'out' => chr(185), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Horizontal bar thick bottom', },
'REVERSE BOTTOM RIGHT RIGHT ANGLE' => { 'out' => chr(186), 'unicode' => $inv . 'ð¿' . $ni, 'desc' => 'Reversed Bottom right right angle', },
'REVERSE BOTTOM LEFT BOX' => { 'out' => chr(187), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Left Box', },
'REVERSE TOP RIGHT BOX' => { 'out' => chr(188), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Right Box', },
'REVERSE BOTTOM RIGHT CORNER' => { 'out' => chr(189), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Right Corner', },
'REVERSE TOP LEFT BOX' => { 'out' => chr(190), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Left Box', },
'REVERSE TOP LEFT BOTTOM RIGHT BOX' => { 'out' => chr(191), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Left Bottom Right Box', },
'REVERSE HORIZONTAL BAR' => { 'out' => chr(192), 'unicode' => $inv . 'ð¹' . $ni, 'desc' => 'Reversed Horizontal bar', },
# 'REVERSE SPADE DUPLICATE' => { 'out' => chr(193), 'unicode' => $inv . 'â ' . $ni, 'desc' => 'Reversed Spade duplicate', },
# 'REVERSE VERTICAL BAR CENTER DUPLICATE' => { 'out' => chr(194), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Giant Vertical Bar duplicate', },
'REVERSE HORIZONTAL BAR DUPLICATE' => { 'out' => chr(195), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Horizontal Bar duplicate', },
'REVERSE HORIZONTAL BAR SMALL UPPER BIAS' => { 'out' => chr(196), 'unicode' => $inv . 'ð¸' . $ni, 'desc' => 'Reversed Horizontal bar with a slight upper bias', },
'REVERSE HORIZONTAL BAR LARGE UPPER BIAS' => { 'out' => chr(197), 'unicode' => $inv . 'ð¶' . $ni, 'desc' => 'Reversed Horizontal bar with a strong upper bias', },
'REVERSE HORIZONTAL BAR SMALL LOWER BIAS' => { 'out' => chr(198), 'unicode' => $inv . 'ðº' . $ni, 'desc' => 'Reversed Horizontal bar with a slight lower bias', },
'REVERSE VERTICAL BAR SMALL LEFT BIAS' => { 'out' => chr(199), 'unicode' => $inv . ' ' . $ni, 'desc' => 'Reversed Vertical bar with a slight left bias', },
'REVERSE VERTICAL BAR SMALL RIGHT BIAS' => { 'out' => chr(200), 'unicode' => $inv . ' ' . $ni, 'desc' => 'Reversed Vertical bar with a slight right bias', },
'REVERSE TOP RIGHT ROUNDED CORNER' => { 'out' => chr(201), 'unicode' => $inv . 'â®' . $ni, 'desc' => 'Reversed Top Right Rounded Corner', },
'REVERSE BOTTOM LEFT ROUNDED CORNER' => { 'out' => chr(202), 'unicode' => $inv . 'â°' . $ni, 'desc' => 'Reversed Bottom Left Rounded Corner', },
'REVERSE BOTTOM RIGHT ROUNDED CORNER' => { 'out' => chr(203), 'unicode' => $inv . 'â¯' . $ni, 'desc' => 'Reversed Bottom Right Rounded Corner', },
'REVERSE BOTTOM LEFT RIGHT ANGLE' => { 'out' => chr(204), 'unicode' => $inv . 'â¿' . $ni, 'desc' => 'Reversed Bottom left right angle', },
'REVERSE GIANT BACKSLASH' => { 'out' => chr(205), 'unicode' => $inv . 'â²' . $ni, 'desc' => 'Reversed Giant Backslash', },
'REVERSE GIANT FORWARD SLASH' => { 'out' => chr(206), 'unicode' => $inv . 'â±' . $ni, 'desc' => 'Reversed Giant Forward Slash', },
'REVERSE TOP LEFT RIGHT ANGLE' => { 'out' => chr(207), 'unicode' => $inv . 'â¾' . $ni, 'desc' => 'Reversed Top left right angle', },
'REVERSE TOP RIGHT RIGHT ANGLE' => { 'out' => chr(208), 'unicode' => $inv . ' ' . $ni, 'desc' => 'Reversed Top right right angle', },
'REVERSE CENTER DOT' => { 'out' => chr(209), 'unicode' => $inv . 'â¢' . $ni, 'desc' => 'Reversed CENTER DOT', },
'REVERSE HORIZONTAL BAR LARGE LOWER BIAS' => { 'out' => chr(210), 'unicode' => $inv . 'ð»' . $ni, 'desc' => 'Reversed Horizontal bar with a strong lower bias', },
'REVERSE HEART' => { 'out' => chr(211), 'unicode' => $inv . 'â¥' . $ni, 'desc' => 'Reversed Heart', },
'REVERSE VERTICAL BAR LARGE LEFT BIAS' => { 'out' => chr(212), 'unicode' => $inv . ' ' . $ni, 'desc' => 'Reversed Vertical bar with a strong left bias', },
'REVERSE TOP LEFT ROUNDED CORNER' => { 'out' => chr(213), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Left Rounded Corner', },
'REVERSE GIANT X' => { 'out' => chr(214), 'unicode' => $inv . 'â³' . $ni, 'desc' => 'Reversed Giant X', },
'REVERSE THIN CIRCLE' => { 'out' => chr(215), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Thin Circle', },
'REVERSE CLUB' => { 'out' => chr(216), 'unicode' => $inv . 'â£' . $ni, 'desc' => 'Reversed Club', },
'REVERSE VERTICAL BAR LARGE RIGHT BIAS' => { 'out' => chr(217), 'unicode' => $inv . ' ' . $ni, 'desc' => 'Reversed Vertical bar with a strong right bias', },
'REVERSE DIAMOND' => { 'out' => chr(218), 'unicode' => $inv . 'â¦' . $ni, 'desc' => 'Reversed Diamond', },
'REVERSE CROSS BAR' => { 'out' => chr(219), 'unicode' => $inv . 'â¼' . $ni, 'desc' => 'Reversed Cross Bar', },
'REVERSE SHADE LEFT' => { 'out' => chr(220), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Shade left', },
'REVERSE VERTICAL BAR' => { 'out' => chr(221), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Vertical bar', },
'REVERSE PI' => { 'out' => chr(222), 'unicode' => $inv . 'Ï' . $ni, 'desc' => 'Reversed Pi symbol', },
'REVERSE BOTTOM LEFT WEDGE' => { 'out' => chr(223), 'unicode' => $inv . 'â¥' . $ni, 'desc' => 'Reversed Bottom Left Wedge', },
# 'REVERSE SPACE 2' => { 'out' => chr(224), 'unicode' => $inv . ' ' . $ni, 'desc' => 'Reversed Dithered Box Full duplicate', },
# 'REVERSE LEFT HALF 2' => { 'out' => chr(225), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Left Half duplicate', },
# 'REVERSE BOTTOM BOX 2' => { 'out' => chr(226), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Box duplicate', },
# 'REVERSE TOP HORIZONTAL BAR 2' => { 'out' => chr(227), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Horizontal Bar duplicate', },
# 'REVERSE BOTTOM HORIZONTAL BAR 2' => { 'out' => chr(228), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Horizontal Bar duplicate', },
# 'REVERSE LEFT VERTICAL BAR 2' => { 'out' => chr(229), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Left Vertical Bar duplicate', },
# 'REVERSE DITHERED BOX 2' => { 'out' => chr(230), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Dithered Box duplicate', },
# 'REVERSE RIGHT VERTICAL BAR 2' => { 'out' => chr(231), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Right Vertical Bar duplicate', },
# 'REVERSE DITHERED BOTTOM 2' => { 'out' => chr(232), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Dithered Left duplicate', },
# 'REVERSE BOTTOM RIGHT WEDGE 2' => { 'out' => chr(233), 'unicode' => $inv . 'â¤' . $ni, 'desc' => 'Reversed Bottom Right Wedge duplicate', },
# 'REVERSE VERTICAL BAR RIGHT 2' => { 'out' => chr(234), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Vertical bar flushed right duplicate', },
# 'REVERSE VERTICAL BAR MIDDLE LEFT 2' => { 'out' => chr(235), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Vertical Bar Middle Left duplicate', },
# 'REVERSE BOTTOM RIGHT BOX 2' => { 'out' => chr(236), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Right Box duplicate', },
# 'REVERSE BOTTOM LEFT CORNER 2' => { 'out' => chr(237), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Left Corner duplicate', },
# 'REVERSE TOP RIGHT CORNER 2' => { 'out' => chr(238), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Right Corner duplicate', },
# 'REVERSE HORIZONTAL BAR BOTTOM 2' => { 'out' => chr(239), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Horizontal Bar Bottom duplicate', },
# 'REVERSE TOP LEFT CORNER 2' => { 'out' => chr(240), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Left Corner duplicate', },
# 'REVERSE HORIZONTAL BAR MIDDLE BOTTOM 2' => { 'out' => chr(241), 'unicode' => $inv . 'â´' . $ni, 'desc' => 'Reversed Horizontal Bar Middle Bottom duplicate', },
# 'REVERSE HORIZONTAL BAR MIDDLE TOP 2' => { 'out' => chr(242), 'unicode' => $inv . 'â¬' . $ni, 'desc' => 'Reversed Horizontal Bar Middle Top duplicate', },
# 'REVERSE VERTICAL BAR MIDDLE RIGHT 2' => { 'out' => chr(243), 'unicode' => $inv . 'â¤' . $ni, 'desc' => 'Reversed Vertical Bar Middle Right duplicate', },
# 'REVERSE VERTICAL BOX LEFT 2' => { 'out' => chr(244), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Vertical Box Left duplicate', },
# 'REVERSE LEFT HALF BOX 2' => { 'out' => chr(245), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Left Half Box duplicate', },
# 'REVERSE RIGHT HALF BOX 2' => { 'out' => chr(246), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Right half box duplicate', },
# 'REVERSE HORIZONTAL BAR TOP 2' => { 'out' => chr(247), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Horizontal bar top duplicate', },
# 'REVERSE HORIZONTAL BAR THICK TOP 2' => { 'out' => chr(248), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Horizontal bar thick top duplicate', },
# 'REVERSE HORIZONTAL BAR THICK BOTTOM 2' => { 'out' => chr(249), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Horizontal bar thick bottom duplicate', },
# 'REVERSE BOTTOM RIGHT RIGHT ANGLE 2' => { 'out' => chr(250), 'unicode' => $inv . 'ð¿' . $ni, 'desc' => 'Reversed Bottom right right angle duplicate', },
# 'REVERSE BOTTOM LEFT BOX 2' => { 'out' => chr(251), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Left Box duplicate', },
# 'REVERSE TOP RIGHT BOX 2' => { 'out' => chr(252), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Right Box duplicate', },
# 'REVERSE BOTTOM RIGHT CORNER 2' => { 'out' => chr(253), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Right Corner duplicate', },
# 'REVERSE TOP LEFT BOX 2' => { 'out' => chr(254), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Left Box duplicate', },
# 'REVERSE PI 2' => { 'out' => chr(255), 'unicode' => $inv . 'Ï' . $ni, 'desc' => 'Reversed Pi symbol duplicate', },
};
$self->{'debug'}->DEBUG(['End PETSCII Initialize']);
return ($self);
} ## end sub petscii_initialize
sub petscii_output {
my $self = shift;
my $text = shift;
$self->{'debug'}->DEBUG(['Start PETSCII Output']);
lib/BBS/Universal.pm view on Meta::CPAN
$text .= "[% ORANGE %]â[% YELLOW %] ## ## ## [% BRIGHT BLUE %]âââââ âââ¦ââ âââââ âââââ âââââ âââ¦ââ âââ¦ââ [% YELLOW %] ## ## ## [% ORANGE %]â[% ...
$text .= "[% ORANGE %]â[% GREEN %] ## ## ## [% BRIGHT BLUE %]â â â â â â â â â â [% GREEN %] ## ## ## [% ORANGE %]â[% RESET %]\n";
$text .= "[% ORANGE %]â[% CYAN %] ## ## ## [% BRIGHT BLUE %]â âââ⣠â â âââ⣠âââââ â â â [% CYAN %] ## ## ## [% ORANGE %]â[% RESET %]\n";
$text .= "[% ORANGE %]â[% BLUE %] ### ## ### [% BRIGHT BLUE %]â â â â â â â â â â [% BLUE %] ### ## ### [% ORANGE %]â[% RESET %]\n";
$text .= "[% ORANGE %]â[% MAGENTA %] ### ## ### [% BRIGHT BLUE %]â â â â â âââââ âââââ âââ©ââ âââ©ââ [% MAGENTA %] ### ## ### [% ORANGE %]â[% RESET %]\n";
$text .= '[% ORANGE %]â âââââââ¦' . 'â' x 39 . 'â¦' . 'â' x 39 . 'â£[% RESET %]' . "\n";
$text .= "[% ORANGE %]â[% BRIGHT YELLOW %] CHAR [% ORANGE %]â[% BRIGHT YELLOW %] ATASCII TOKENS [% ORANGE %]â[% BRIGHT YELLOW %] DESCRIPTION [% ORANGE %]â[% RESET %]\n";
$text .= '[% ORANGE %]â âââââââ¬' . 'â' x 39 . 'â¬' . 'â' x 39 . 'â£[% RESET %]' . "\n";
foreach my $name (@atatkn) {
$text .= '[% ORANGE %]â[% RESET %] ' . $self->{'atascii_meta'}->{$name}->{'unicode'} . ' [% ORANGE %]â[% RESET %] ' . sprintf('%-37s %s %-37s %s', $name, '[% ORANGE %]â[% RESET %]', $self->{'atascii_meta'}->{$name}->{'desc'}, '[%...
}
$text .= '[% ORANGE %]â[% RESET %] ' . '[% HORIZONTAL BAR %]' x 4 . ' [% ORANGE %]â[% RESET %] ' . sprintf('%-37s %s %-37s %s', 'HORIZONTAL RULE', '[% ORANGE %]â[% RESET %]', 'Horizontal rule', '[% ORANGE %]â[% RESET %]') . "\n";
$text .= "[% ORANGE %]ââââââââ©ââââââââââââââââââââââââââââââââââââââââ©ââââââââââââââââââââââââââ...
} elsif ($mode && $mode eq 'PETSCII') {
# â â â â â â
â â â â â â â â â â â â â â â â â â â â â â â â â â â ⡠⢠⣠⤠⥠⦠⧠⨠⩠⪠⫠⬠â ⮠⯠ⰠⱠⲠⳠⴠⵠⶠⷠ⸠⹠⺠⻠...
# ð¬ ð¬ ð¬ ð¬ ð¬ ð¬
ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ 𬡠𬢠𬣠𬤠𬥠𬦠𬧠𬨠𬩠𬪠𬫠𬬠ð¬ 𬮠𬯠𬰠ð...
# ð° ð± ð² ð³ ð´ ðµ ð¶ ð· ð¸ ð¹ ðº ð» ð¼ ð½ ð¾ ð¿ ð® ð® ð® ð® ð® ð®
ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® 𮡠...
lib/BBS/Universal.pm view on Meta::CPAN
$text .= '[% ORANGE %]â[% RESET %] [% BLUE %]d8P Y8 [% RESET %][% BRIGHT WHITE %] 8 8 8 8 8 8 " 8 8 [% BLUE %]d8P Y8 [% RESET %]...
$text .= '[% ORANGE %]â[% RESET %] [% BLUE %]8P ð®
ð®
ð®
ð[% RESET %][% BRIGHT WHITE %] 8eeee8 8eeee 8e 8eeeee 8e 8e 8e [% BLUE %]8P ...
$text .= '[% ORANGE %]â[% RESET %] [% BLUE %]8b [% RED %][% REVERSE %]ð®ð®ð®[% RESET %][% RED %]ð¬¿[% RESET %][% BRIGHT WHITE %] 88 88 88 88 88 88 88 [% BLUE %]8b ...
$text .= '[% ORANGE %]â[% RESET %] [% BLUE %]Y8b d8 [% RESET %][% BRIGHT WHITE %] 88 88 88 e 88 88 e 88 88 [% BLUE %]Y8b d8 [% RESET %]...
$text .= '[% ORANGE %]â[% RESET %] [% BLUE %]' . " `Y88P'" . '[% RESET %][% BRIGHT WHITE %] 88 88eee 88 8eee88 88eee8 88 88 ' . "[% BLUE %] `Y88P'" . '[%...
$text .= '[% ORANGE %]â âââââââ¦' . 'â' x 50 . 'â¦' . 'â' x 50 . 'â£[% RESET %]' . "\n";
$text .= '[% ORANGE %]â[% BRIGHT YELLOW %] CHAR [% ORANGE %]â[% BRIGHT YELLOW %] PETSCII TOKENS [% ORANGE %]â[% BRIGHT YELLOW %] DESCRIPTION [% ORANGE %]â[% RESET ...
$text .= '[% ORANGE %]â âââââââ¬' . 'â' x 50 . 'â¬' . 'â' x 50 . 'â£[% RESET %]' . "\n";
foreach my $name (@pettkn) {
$text .= '[% ORANGE %]â[% RESET %] ' . $self->{'petscii_meta'}->{$name}->{'unicode'} . ' [% ORANGE %]â[% RESET %] ' . sprintf('%-48s %s %-48s %s', $name, '[% ORANGE %]â[% RESET %]', $self->{'petscii_meta'}->{$name}->{'desc'}, '[%...
}
$text .= '[% ORANGE %]â[% RESET %] ' . '[% HORIZONTAL BAR %]' x 4 . ' [% ORANGE %]â[% RESET %] ' . sprintf('%-48s %s %-48s %s', 'HORIZONTAL RULE color', '[% ORANGE %]â[% RESET %]', 'Horizontal rule in specified color', '[% ORANGE %]â[...
$text .= '[% ORANGE %]ââââââââ©' . 'â' x 50 . 'â©' . 'â' x 50 . 'â[% RESET %]' . "\n";
$text =~ s/â (WHITE)/â \[\% BRIGHT WHITE \%\]$1\[\% RESET \%\]/g;
$text =~ s/â (YELLOW)/â \[\% YELLOW \%\]$1\[\% RESET \%\]/g;
$text =~ s/â (CYAN)/â \[\% CYAN \%\]$1\[\% RESET \%\]/g;
$text =~ s/â (GREEN)/â \[\% GREEN \%\]$1\[\% RESET \%\]/g;
$text =~ s/â (PINK)/â \[\% PINK \%\]$1\[\% RESET \%\]/g;
lib/BBS/Universal/ASCII.pm view on Meta::CPAN
package BBS::Universal::ASCII;
BEGIN { our $VERSION = '0.003' };
sub ascii_initialize {
my $self = shift;
$self->{'debug'}->DEBUG(['Start ASCII Initialize']);
$self->{'ascii_meta'} = {
'RETURN' => { 'out' => chr(13), 'unicode' => ' ', 'desc' => 'Carriage Return' },
'LINEFEED' => { 'out' => chr(10), 'unicode' => ' ', 'desc' => 'Linefeed' },
'NEWLINE' => { 'out' => chr(13) . chr(10), 'unicode' => ' ', 'desc' => 'Newline' },
'BACKSPACE' => { 'out' => chr(8), 'unicode' => ' ', 'desc' => 'Backspace' },
'TAB' => { 'out' => chr(9), 'unicode' => ' ', 'desc' => 'Tab' },
'DELETE' => { 'out' => chr(127), 'unicode' => ' ', 'desc' => 'Delete' },
'CLS' => { 'out' => chr(12), 'unicode' => ' ', 'desc' => 'Clear Screen (Formfeed)' },
'CLEAR' => { 'out' => chr(12), 'unicode' => ' ', 'desc' => 'Clear Screen (Formfeed)' },
'RING BELL' => { 'out' => chr(7), 'unicode' => ' ', 'desc' => 'Console Bell' },
};
$self->{'debug'}->DEBUG(['End ACSII Initialize']);
return ($self);
} ## end sub ascii_initialize
sub ascii_output {
my $self = shift;
my $text = shift;
$self->{'debug'}->DEBUG(['Start ASCII Output']);
lib/BBS/Universal/ATASCII.pm view on Meta::CPAN
package BBS::Universal::ATASCII;
BEGIN { our $VERSION = '0.007'; }
sub atascii_initialize {
my $self = shift;
$self->{'debug'}->DEBUG(['Start ATASCII Initialize']);
$self->{'atascii_meta'} = {
# Control
'ESC' => { 'out' => chr(27), 'unicode' => 'â', 'desc' => 'Escape', },
'UP' => { 'out' => chr(28), 'unicode' => ' ', 'desc' => 'Move Cursor Up', },
'DOWN' => { 'out' => chr(29), 'unicode' => ' ', 'desc' => 'Move Cursor Down', },
'LEFT' => { 'out' => chr(30), 'unicode' => ' ', 'desc' => 'Move Cursor Left', },
'RIGHT' => { 'out' => chr(31), 'unicode' => ' ', 'desc' => 'Move Cursor Right', },
'CLEAR' => { 'out' => chr(125), 'unicode' => ' ', 'desc' => 'Clear Screen', },
'BACKSPACE' => { 'out' => chr(126), 'unicode' => ' ', 'desc' => 'Backspace', },
'TAB' => { 'out' => chr(127), 'unicode' => ' ', 'desc' => 'Tab', },
'RETURN' => { 'out' => chr(155), 'unicode' => ' ', 'desc' => 'Carriage Return', },
'DELETE LINE' => { 'out' => chr(156), 'unicode' => ' ', 'desc' => 'Delete Line', },
'INSERT LINE' => { 'out' => chr(157), 'unicode' => ' ', 'desc' => 'Insert Line', },
'CLEAR TAB STOP' => { 'out' => chr(158), 'unicode' => ' ', 'desc' => 'Clear Tab Stop', },
'SET TAB STOP' => { 'out' => chr(159), 'unicode' => ' ', 'desc' => 'Set Tab Stop', },
'BUZZER' => { 'out' => chr(253), 'unicode' => ' ', 'desc' => 'Console Bell', },
'RING BELL' => { 'out' => chr(253), 'unicode' => ' ', 'desc' => 'Console Bell', },
'DELETE' => { 'out' => chr(254), 'unicode' => ' ', 'desc' => 'Delete', },
'INSERT' => { 'out' => chr(255), 'unicode' => ' ', 'desc' => 'Insert', },
# Normal
'HEART' => { 'out' => chr(0), 'unicode' => 'â¥', 'desc' => 'Heart', },
'VERTICAL BAR MIDDLE LEFT' => { 'out' => chr(1), 'unicode' => 'â£', 'desc' => 'Vertical Bar Middle Left', },
'RIGHT VERTICAL BAR' => { 'out' => chr(2), 'unicode' => 'ð®', 'desc' => 'Right Vertical Bar', },
'BOTTOM RIGHT CORNER' => { 'out' => chr(3), 'unicode' => 'â', 'desc' => 'Bottom Right Corner', },
'VERTICAL BAR MIDDLE RIGHT' => { 'out' => chr(4), 'unicode' => 'â«', 'desc' => 'Vertical Bar Middle Right', },
'TOP RIGHT CORNER' => { 'out' => chr(5), 'unicode' => 'â', 'desc' => 'Top Right Corner', },
'LARGE FORWARD SLASH' => { 'out' => chr(6), 'unicode' => 'â±', 'desc' => 'Large Forward Slash', },
'LARGE BACKSLASH' => { 'out' => chr(7), 'unicode' => 'â²', 'desc' => 'Large Backslash', },
'TOP LEFT WEDGE' => { 'out' => chr(8), 'unicode' => 'â¢', 'desc' => 'Top Left Wedge', },
'BOTTOM RIGHT BOX' => { 'out' => chr(9), 'unicode' => 'â', 'desc' => 'Bottom Right Box', },
'TOP RIGHT WEDGE' => { 'out' => chr(10), 'unicode' => 'â£', 'desc' => 'Top Right Wedge', },
'TOP RIGHT BOX' => { 'out' => chr(11), 'unicode' => 'â', 'desc' => 'Top Right Box', },
'TOP LEFT BOX' => { 'out' => chr(12), 'unicode' => 'â', 'desc' => 'Top Left Box', },
'TOP HORIZONTAL BAR' => { 'out' => chr(13), 'unicode' => 'ð®', 'desc' => 'Top Horizontal Bar', },
'BOTTOM HORIZONTAL BAR' => { 'out' => chr(14), 'unicode' => 'â', 'desc' => 'Bottom Horizontal Bar', },
'BOTTOM LEFT BOX' => { 'out' => chr(15), 'unicode' => 'â', 'desc' => 'Bottom Left Box', },
'CLUB' => { 'out' => chr(16), 'unicode' => 'â£', 'desc' => 'Club', },
'TOP LEFT CORNER' => { 'out' => chr(17), 'unicode' => 'â', 'desc' => 'Top Left Corner', },
'HORIZONTAL BAR' => { 'out' => chr(18), 'unicode' => 'â', 'desc' => 'Horizontal Bar', },
'CROSS BAR' => { 'out' => chr(19), 'unicode' => 'â', 'desc' => 'Cross Bar', },
'CENTER DOT' => { 'out' => chr(20), 'unicode' => 'âº', 'desc' => 'Center Dot', },
'BOTTOM BOX' => { 'out' => chr(21), 'unicode' => 'â', 'desc' => 'Bottom Box', },
'LEFT VERTICAL BAR' => { 'out' => chr(22), 'unicode' => 'â', 'desc' => 'Left Vertical Bar', },
'HORIZONTAL BAR MIDDLE TOP' => { 'out' => chr(23), 'unicode' => 'â³', 'desc' => 'Horizontal Bar Middle Top', },
'HORIZONTAL BAR MIDDLE BOTTOM' => { 'out' => chr(24), 'unicode' => 'â»', 'desc' => 'Horizontal Bar Middle Bottom', },
'LEFT VERTICAL BAR' => { 'out' => chr(25), 'unicode' => 'â', 'desc' => 'Left Vertical Bar', },
'BOTTOM LEFT CORNER' => { 'out' => chr(26), 'unicode' => 'â', 'desc' => 'Botom Left Corner', },
'UP ARROW' => { 'out' => chr(28), 'unicode' => 'ð¡¹', 'desc' => 'Up Arrow', },
'DOWN ARROW' => { 'out' => chr(29), 'unicode' => 'ð¡»', 'desc' => 'Down Arrow', },
'LEFT ARROW' => { 'out' => chr(30), 'unicode' => 'ð¡¸', 'desc' => 'Left Arrow', },
'RIGHT ARROW' => { 'out' => chr(31), 'unicode' => 'ð¡º', 'desc' => 'Right Arrow', },
'DIAMOND' => { 'out' => chr(96), 'unicode' => 'â¦', 'desc' => 'Diamond', },
'SPADE' => { 'out' => chr(123), 'unicode' => 'â ', 'desc' => 'Spade', },
'MIDDLE VERTICAL BAR' => { 'out' => chr(124), 'unicode' => '|', 'desc' => 'Middle Vertical Bar', },
'BACK ARROW' => { 'out' => chr(125), 'unicode' => 'ð¢°', 'desc' => 'Back Arrow', },
'LEFT TRIANGLE' => { 'out' => chr(126), 'unicode' => 'â', 'desc' => 'Left Triangle', },
'RIGHT TRIANGLE' => { 'out' => chr(127), 'unicode' => 'â¶', 'desc' => 'Right Triangle', },
};
my $inv = "\e[7m";
my $ni = "\e[27m";
my @list = keys %{ $self->{'atascii_meta'} };
foreach my $name (@list) {
next if ($name =~ /^(ESC|UP|DOWN|LEFT|RIGHT|CLEAR|BACKSPACE|TAB|RETURN|NEWLINE|DELETE LINE|INSERT LINE|CLEAR TAB STOP|BUZZER|RING BELL|DELETE|INSERT)$/);
$self->{'atascii_meta'}->{"REVERSED $name"}->{'unicode'} = $inv . $self->{'atascii_meta'}->{$name}->{'unicode'} . $ni;
$self->{'atascii_meta'}->{"REVERSED $name"}->{'out'} = chr(128 + ord($self->{'atascii_meta'}->{$name}->{'out'}));
$self->{'atascii_meta'}->{"REVERSED $name"}->{'desc'} = 'Reversed ' . $self->{'atascii_meta'}->{$name}->{'desc'};
}
$self->{'atascii_table'} = [
# Normal
'â¥', 'â£', 'ð®', 'â', 'â«', 'â', 'â±', 'â²', 'â¢', 'â', 'â£', 'ð¬', 'ð¬', 'â', 'â', 'â', 'â£', 'â', 'â', 'â', 'âº', 'â', 'â', 'â³', 'â»', 'â', 'â', 'â', 'ð¡¹', 'ð¡»', 'ð¡¸', 'ð¡º',
' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?',
'@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', "\\", ']', '^', '_',
'â¦', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'â ', '|', 'ð¢°', 'â', 'â¶',
lib/BBS/Universal/PETSCII.pm view on Meta::CPAN
sub petscii_initialize {
my $self = shift;
$self->{'debug'}->DEBUG(['Start PETSCII Initialize']);
my $inv = "\e[7m";
my $ni = "\e[27m";
$self->{'petscii_meta'} = {
# 'NULL 0' => { 'out' => chr(0), 'unicode' => ' ', 'desc' => 'NOP 0', },
# 'NULL 1' => { 'out' => chr(1), 'unicode' => ' ', 'desc' => 'NOP 1', },
# 'NULL 2' => { 'out' => chr(2), 'unicode' => ' ', 'desc' => 'NOP 2', },
'STOP' => { 'out' => chr(3), 'unicode' => ' ', 'desc' => 'PETSCII STOP', },
# 'NULL 4' => { 'out' => chr(4), 'unicode' => ' ', 'desc' => 'NOP 4', },
'WHITE' => { 'out' => chr(5), 'unicode' => ' ', 'desc' => 'White text', },
'RESET' => { 'out' => chr(5), 'unicode' => ' ', 'desc' => 'Reset back to white text', },
# 'NULL 6' => { 'out' => chr(6), 'unicode' => ' ', 'desc' => 'NOP 6', },
# 'NULL 7' => { 'out' => chr(7), 'unicode' => ' ', 'desc' => 'NOP 7', },
'DISABLE SHIFT' => { 'out' => chr(8), 'unicode' => ' ', 'desc' => 'Disable shift', },
'ENABLE SHIFT' => { 'out' => chr(9), 'unicode' => ' ', 'desc' => 'Enable shift', },
# 'NULL 10' => { 'out' => chr(10), 'unicode' => ' ', 'desc' => 'NOP 10', },
# 'NULL 11' => { 'out' => chr(11), 'unicode' => ' ', 'desc' => 'NOP 11', },
# 'NULL 12' => { 'out' => chr(12), 'unicode' => ' ', 'desc' => 'NOP 12', },
'RETURN' => { 'out' => chr(13), 'unicode' => ' ', 'desc' => 'Carriage Return', },
'LOWERCASE' => { 'out' => chr(14), 'unicode' => ' ', 'desc' => 'Lowercase', },
# 'NULL 15' => { 'out' => chr(15), 'unicode' => ' ', 'desc' => 'NOP 15', },
# 'NULL 16' => { 'out' => chr(16), 'unicode' => ' ', 'desc' => 'NOP 16', },
'DOWN' => { 'out' => chr(17), 'unicode' => ' ', 'desc' => 'Cursor down', },
'REVERSE ON' => { 'out' => chr(18), 'unicode' => ' ', 'desc' => 'Reverse on', },
'HOME' => { 'out' => chr(19), 'unicode' => ' ', 'desc' => 'Home', },
'DELETE' => { 'out' => chr(20), 'unicode' => ' ', 'desc' => 'Delete', },
# 'NULL 21' => { 'out' => chr(21), 'unicode' => ' ', 'desc' => 'NOP 21', },
# 'NULL 22' => { 'out' => chr(22), 'unicode' => ' ', 'desc' => 'NOP 22', },
# 'NULL 23' => { 'out' => chr(23), 'unicode' => ' ', 'desc' => 'NOP 23', },
# 'NULL 24' => { 'out' => chr(24), 'unicode' => ' ', 'desc' => 'NOP 24', },
# 'NULL 25' => { 'out' => chr(25), 'unicode' => ' ', 'desc' => 'NOP 25', },
# 'NULL 26' => { 'out' => chr(26), 'unicode' => ' ', 'desc' => 'NOP 26', },
# 'NULL 27' => { 'out' => chr(27), 'unicode' => ' ', 'desc' => 'NOP 27', },
'RED' => { 'out' => chr(28), 'unicode' => ' ', 'desc' => 'Red', },
'RIGHT' => { 'out' => chr(29), 'unicode' => ' ', 'desc' => 'Cursor right', },
'GREEN' => { 'out' => chr(30), 'unicode' => ' ', 'desc' => 'Green', },
'BLUE' => { 'out' => chr(31), 'unicode' => ' ', 'desc' => 'Blue', },
# 'SPACE' => { 'out' => ' ', 'unicode' => ' ', 'desc' => 'Space', },
# 'EXCLAMATION MARK' => { 'out' => '!', 'unicode' => '!', 'desc' => 'Exclamation mark', },
# 'DOUBLE QUOTE' => { 'out' => '"', 'unicode' => '"', 'desc' => 'Double quotation mark', },
# 'HASH' => { 'out' => '#', 'unicode' => '#', 'desc' => 'Hash/pound', },
# 'DOLLAR' => { 'out' => '$', 'unicode' => '$', 'desc' => 'Dollar sign', },
# 'PERCENT' => { 'out' => '%', 'unicode' => '%', 'desc' => 'Percent sign', },
# 'AMPERSAND' => { 'out' => '&', 'unicode' => '&', 'desc' => 'Ampersand', },
# 'SINGLE QUOTE' => { 'out' => "'", 'unicode' => "'", 'desc' => 'Single quotation mark', },
# 'PARENTHESIS LEFT' => { 'out' => '(', 'unicode' => '(', 'desc' => 'Left parenthesis', },
# 'PARENTHESIS RIGHT' => { 'out' => ')', 'unicode' => ')', 'desc' => 'Right parenthesis', },
# 'ASTERISK' => { 'out' => '*', 'unicode' => '*', 'desc' => 'Asterisk', },
# 'PLUS' => { 'out' => '+', 'unicode' => '+', 'desc' => 'Plus sign', },
# 'COMMA' => { 'out' => ',', 'unicode' => ',', 'desc' => 'Comma', },
# 'HYPHEN' => { 'out' => '-', 'unicode' => '-', 'desc' => 'Hyphen', },
# 'PERIOD' => { 'out' => ',', 'unicode' => '.', 'desc' => 'Period', },
# 'FORWARD SLASH' => { 'out' => '/', 'unicode' => '/', 'desc' => 'Forward slash', },
# 'ZERO' => { 'out' => '0', 'unicode' => '0', 'desc' => 'Zero', },
# 'ONE' => { 'out' => '1', 'unicode' => '1', 'desc' => 'One', },
# 'TWO' => { 'out' => '2', 'unicode' => '2', 'desc' => 'Two', },
# 'THREE' => { 'out' => '3', 'unicode' => '3', 'desc' => 'Three', },
# 'FOUR' => { 'out' => '4', 'unicode' => '4', 'desc' => 'Four', },
# 'FIVE' => { 'out' => '5', 'unicode' => '5', 'desc' => 'Five', },
# 'SIX' => { 'out' => '6', 'unicode' => '6', 'desc' => 'Six', },
# 'SEVEN' => { 'out' => '7', 'unicode' => '7', 'desc' => 'Seven', },
# 'EIGHT' => { 'out' => '8', 'unicode' => '8', 'desc' => 'Eight', },
# 'NINE' => { 'out' => '9', 'unicode' => '9', 'desc' => 'Nine', },
# 'COLON' => { 'out' => ':', 'unicode' => ':', 'desc' => 'Colon', },
# 'SEMICOLON' => { 'out' => ';', 'unicode' => ';', 'desc' => 'Semicolon', },
# 'LESS THAN' => { 'out' => '<', 'unicode' => '<', 'desc' => 'Less than', },
# 'EQUAL' => { 'out' => '=', 'unicode' => '=', 'desc' => 'Equal sign', },
# 'GREATER THAN' => { 'out' => '>', 'unicode' => '>', 'desc' => 'Greater than', },
# 'QUESTION MARK' => { 'out' => '?', 'unicode' => '?', 'desc' => 'Question mark', },
# 'AT' => { 'out' => '@', 'unicode' => '@', 'desc' => 'At symbol', },
# 'CHAR A' => { 'out' => 'A', 'unicode' => 'A', 'desc' => 'A', },
# 'CHAR B' => { 'out' => 'B', 'unicode' => 'B', 'desc' => 'B', },
# 'CHAR C' => { 'out' => 'C', 'unicode' => 'C', 'desc' => 'C', },
# 'CHAR D' => { 'out' => 'D', 'unicode' => 'D', 'desc' => 'D', },
# 'CHAR E' => { 'out' => 'E', 'unicode' => 'E', 'desc' => 'E', },
# 'CHAR F' => { 'out' => 'F', 'unicode' => 'F', 'desc' => 'F', },
# 'CHAR G' => { 'out' => 'G', 'unicode' => 'G', 'desc' => 'G', },
# 'CHAR H' => { 'out' => 'H', 'unicode' => 'H', 'desc' => 'H', },
# 'CHAR I' => { 'out' => 'I', 'unicode' => 'I', 'desc' => 'I', },
# 'CHAR J' => { 'out' => 'J', 'unicode' => 'J', 'desc' => 'J', },
# 'CHAR K' => { 'out' => 'K', 'unicode' => 'K', 'desc' => 'K', },
# 'CHAR L' => { 'out' => 'L', 'unicode' => 'L', 'desc' => 'L', },
# 'CHAR M' => { 'out' => 'M', 'unicode' => 'M', 'desc' => 'M', },
# 'CHAR N' => { 'out' => 'N', 'unicode' => 'N', 'desc' => 'N', },
# 'CHAR O' => { 'out' => 'O', 'unicode' => 'O', 'desc' => 'O', },
# 'CHAR P' => { 'out' => 'P', 'unicode' => 'P', 'desc' => 'P', },
# 'CHAR Q' => { 'out' => 'Q', 'unicode' => 'Q', 'desc' => 'Q', },
# 'CHAR R' => { 'out' => 'R', 'unicode' => 'R', 'desc' => 'R', },
# 'CHAR S' => { 'out' => 'S', 'unicode' => 'S', 'desc' => 'S', },
# 'CHAR T' => { 'out' => 'T', 'unicode' => 'T', 'desc' => 'T', },
# 'CHAR U' => { 'out' => 'U', 'unicode' => 'U', 'desc' => 'U', },
# 'CHAR V' => { 'out' => 'V', 'unicode' => 'V', 'desc' => 'V', },
# 'CHAR W' => { 'out' => 'W', 'unicode' => 'W', 'desc' => 'W', },
# 'CHAR X' => { 'out' => 'X', 'unicode' => 'X', 'desc' => 'X', },
# 'CHAR Y' => { 'out' => 'Y', 'unicode' => 'Y', 'desc' => 'Y', },
# 'CHAR Z' => { 'out' => 'Z', 'unicode' => 'Z', 'desc' => 'Z', },
# 'SQUARE BRACKET LEFT' => { 'out' => chr(91), 'unicode' => '[', 'desc' => 'Square left bracket', },
'BRITISH POUND' => { 'out' => chr(92), 'unicode' => '£', 'desc' => 'British Pound', },
# 'SQUARE BRACKET RIGHT' => { 'out' => chr(93), 'unicode' => ']', 'desc' => 'Square right bracket', },
'UP ARROW' => { 'out' => chr(94), 'unicode' => 'â', 'desc' => 'Up Arrow', },
'LEFT ARROW' => { 'out' => chr(95), 'unicode' => 'â', 'desc' => 'Left Arrow', },
'HORIZONTAL BAR' => { 'out' => chr(96), 'unicode' => 'â', 'desc' => 'Horizontal Bar', },
'SPADE' => { 'out' => chr(97), 'unicode' => 'â ', 'desc' => 'Spade', },
'VERTICAL BAR CENTER' => { 'out' => chr(98), 'unicode' => 'â', 'desc' => 'Giant Vertical Bar', },
'HORIZONTAL BAR DUPLICATE' => { 'out' => chr(99), 'unicode' => 'â', 'desc' => 'Horizontal Bar', },
'HORIZONTAL BAR SMALL UPPER BIAS' => { 'out' => chr(100), 'unicode' => 'ð¸', 'desc' => 'Horizontal bar with a slight upper bias', },
'HORIZONTAL BAR LARGE UPPER BIAS' => { 'out' => chr(101), 'unicode' => 'ð¶', 'desc' => 'Horizontal bar with a strong upper bias', },
'HORIZONTAL BAR SMALL LOWER BIAS' => { 'out' => chr(102), 'unicode' => 'ðº', 'desc' => 'Horizontal bar with a slight lower bias', },
'VERTICAL BAR SMALL LEFT BIAS' => { 'out' => chr(103), 'unicode' => ' ', 'desc' => 'Vertical bar with a slight left bias', },
'VERTICAL BAR SMALL RIGHT BIAS' => { 'out' => chr(104), 'unicode' => ' ', 'desc' => 'Vertical bar with a slight right bias', },
'TOP RIGHT ROUNDED CORNER' => { 'out' => chr(105), 'unicode' => 'â®', 'desc' => 'Top Right Rounded Corner', },
'BOTTOM LEFT ROUNDED CORNER' => { 'out' => chr(106), 'unicode' => 'â°', 'desc' => 'Bottom Left Rounded Corner', },
'BOTTOM RIGHT ROUNDED CORNER' => { 'out' => chr(107), 'unicode' => 'â¯', 'desc' => 'Bottom Right Rounded Corner', },
'BOTTOM LEFT RIGHT ANGLE' => { 'out' => chr(108), 'unicode' => 'â¿', 'desc' => 'Bottom left right angle', },
'GIANT BACKSLASH' => { 'out' => chr(109), 'unicode' => 'â²', 'desc' => 'Giant Backslash', },
'GIANT FORWARD SLASH' => { 'out' => chr(110), 'unicode' => 'â±', 'desc' => 'Giant Forward Slash', },
'TOP LEFT RIGHT ANGLE' => { 'out' => chr(111), 'unicode' => 'â¾', 'desc' => 'Top left right angle', },
'TOP RIGHT RIGHT ANGLE' => { 'out' => chr(112), 'unicode' => ' ', 'desc' => 'Top right right angle', },
'CENTER DOT' => { 'out' => chr(113), 'unicode' => 'â¢', 'desc' => 'CENTER DOT', },
'HORIZONTAL BAR LARGE LOWER BIAS' => { 'out' => chr(114), 'unicode' => 'ð»', 'desc' => 'Horizontal bar with a strong lower bias', },
'HEART' => { 'out' => chr(115), 'unicode' => 'â¥', 'desc' => 'Heart', },
'VERTICAL BAR LARGE LEFT BIAS' => { 'out' => chr(116), 'unicode' => ' ', 'desc' => 'Vertical bar with a strong left bias', },
'TOP LEFT ROUNDED CORNER' => { 'out' => chr(117), 'unicode' => 'â', 'desc' => 'Top Left Rounded Corner', },
'GIANT X' => { 'out' => chr(118), 'unicode' => 'â³', 'desc' => 'Giant X', },
'THIN CIRCLE' => { 'out' => chr(119), 'unicode' => 'â', 'desc' => 'Thin Circle', },
'CLUB' => { 'out' => chr(120), 'unicode' => 'â£', 'desc' => 'Club', },
'VERTICAL BAR LARGE RIGHT BIAS' => { 'out' => chr(121), 'unicode' => ' ', 'desc' => 'Vertical bar with a strong right bias', },
'DIAMOND' => { 'out' => chr(122), 'unicode' => 'â¦', 'desc' => 'Diamond', },
'CROSS BAR' => { 'out' => chr(123), 'unicode' => 'â¼', 'desc' => 'Cross Bar', },
'SHADE LEFT' => { 'out' => chr(124), 'unicode' => 'ð®', 'desc' => 'Shade left', },
'VERTICAL BAR' => { 'out' => chr(125), 'unicode' => 'â', 'desc' => 'Vertical bar', },
'PI' => { 'out' => chr(126), 'unicode' => 'Ï', 'desc' => 'Pi symbol', },
'BOTTOM LEFT WEDGE' => { 'out' => chr(127), 'unicode' => 'â¥', 'desc' => 'Bottom Left Wedge', },
# 'NULL 128' => { 'out' => chr(128), 'unicode' => ' ', 'desc' => 'NOP 128', },
'ORANGE' => { 'out' => chr(129), 'unicode' => ' ', 'desc' => 'Orange' },
# 'NULL 130' => { 'out' => chr(130), 'unicode' => ' ', 'desc' => 'NOP 130', },
'RUN' => { 'out' => chr(131), 'unicode' => ' ', 'desc' => 'Run key', },
# 'NULL 132' => { 'out' => chr(132), 'unicode' => ' ', 'desc' => 'NOP 132', },
# 'F1' => { 'out' => chr(133), 'unicode' => ' ', 'desc' => 'F1', },
# 'F3' => { 'out' => chr(134), 'unicode' => ' ', 'desc' => 'F3', },
# 'F5' => { 'out' => chr(135), 'unicode' => ' ', 'desc' => 'F5', },
# 'F7' => { 'out' => chr(136), 'unicode' => ' ', 'desc' => 'F7', },
# 'F2' => { 'out' => chr(137), 'unicode' => ' ', 'desc' => 'F2', },
# 'F4' => { 'out' => chr(138), 'unicode' => ' ', 'desc' => 'F4', },
# 'F6' => { 'out' => chr(139), 'unicode' => ' ', 'desc' => 'F6', },
# 'F8' => { 'out' => chr(140), 'unicode' => ' ', 'desc' => 'F8', },
'SHIFT RETURN' => { 'out' => chr(141), 'unicode' => ' ', 'desc' => 'Shift-return', },
'UPPERCASE' => { 'out' => chr(142), 'unicode' => ' ', 'desc' => 'Uppercase', },
# 'NULL 143' => { 'out' => chr(143), 'unicode' => ' ', 'desc' => 'NOP 143', },
'BLACK' => { 'out' => chr(144), 'unicode' => ' ', 'desc' => 'Black', },
'UP' => { 'out' => chr(145), 'unicode' => ' ', 'desc' => 'Cursor up', },
'REVERSE OFF' => { 'out' => chr(146), 'unicode' => ' ', 'desc' => 'Reverse off', },
'CLEAR' => { 'out' => chr(147), 'unicode' => ' ', 'desc' => 'Clear', },
'INSERT' => { 'out' => chr(148), 'unicode' => ' ', 'desc' => 'Insert', },
'BROWN' => { 'out' => chr(149), 'unicode' => ' ', 'desc' => 'Brown', },
'LIGHT RED' => { 'out' => chr(150), 'unicode' => ' ', 'desc' => 'Light/bright red', },
'DARK GRAY' => { 'out' => chr(151), 'unicode' => ' ', 'desc' => 'Dark gray', },
'MEDIUM GRAY' => { 'out' => chr(152), 'unicode' => ' ', 'desc' => 'Medium gray', },
'LIGHT GREEN' => { 'out' => chr(153), 'unicode' => ' ', 'desc' => 'Light/bright green', },
'LIGHT BLUE' => { 'out' => chr(154), 'unicode' => ' ', 'desc' => 'Light/bright blue', },
'LIGHT GRAY' => { 'out' => chr(155), 'unicode' => ' ', 'desc' => 'Light gray', },
'PURPLE' => { 'out' => chr(156), 'unicode' => ' ', 'desc' => 'Purple', },
'LEFT' => { 'out' => chr(157), 'unicode' => ' ', 'desc' => 'Cursor left', },
'YELLOW' => { 'out' => chr(158), 'unicode' => ' ', 'desc' => 'Yellow', },
'CYAN' => { 'out' => chr(159), 'unicode' => ' ', 'desc' => 'Cyan', },
'REVERSE SPACE' => { 'out' => chr(160), 'unicode' => "$inv $ni", 'desc' => 'Dithered Box Full', },
'REVERSE LEFT HALF' => { 'out' => chr(161), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Left Half', },
'REVERSE BOTTOM BOX' => { 'out' => chr(162), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Box', },
'REVERSE TOP HORIZONTAL BAR' => { 'out' => chr(163), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Horizontal Bar', },
'REVERSE BOTTOM HORIZONTAL BAR' => { 'out' => chr(164), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Horizontal Bar', },
'REVERSE LEFT VERTICAL BAR' => { 'out' => chr(165), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Left Vertical Bar', },
'REVERSE DITHERED BOX' => { 'out' => chr(166), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Dithered Box', },
'REVERSE RIGHT VERTICAL BAR' => { 'out' => chr(167), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Right Vertical Bar', },
'REVERSE DITHERED BOTTOM' => { 'out' => chr(168), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Dithered Left', },
'REVERSE BOTTOM RIGHT WEDGE' => { 'out' => chr(169), 'unicode' => $inv . 'â¤' . $ni, 'desc' => 'Reversed Bottom Right Wedge', },
'REVERSE VERTICAL BAR RIGHT' => { 'out' => chr(170), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Vertical bar flushed right', },
'REVERSE VERTICAL BAR MIDDLE LEFT' => { 'out' => chr(171), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Vertical Bar Middle Left', },
'REVERSE BOTTOM RIGHT BOX' => { 'out' => chr(172), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Right Box', },
'REVERSE BOTTOM LEFT CORNER' => { 'out' => chr(173), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Left Corner', },
'REVERSE TOP RIGHT CORNER' => { 'out' => chr(174), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Right Corner', },
'REVERSE HORIZONTAL BAR BOTTOM' => { 'out' => chr(175), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Horizontal Bar Bottom', },
'REVERSE TOP LEFT CORNER' => { 'out' => chr(176), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Left Corner', },
'REVERSE HORIZONTAL BAR MIDDLE BOTTOM' => { 'out' => chr(177), 'unicode' => $inv . 'â´' . $ni, 'desc' => 'Reversed Horizontal Bar Middle Bottom', },
'REVERSE HORIZONTAL BAR MIDDLE TOP' => { 'out' => chr(178), 'unicode' => $inv . 'â¬' . $ni, 'desc' => 'Reversed Horizontal Bar Middle Top', },
'REVERSE VERTICAL BAR MIDDLE RIGHT' => { 'out' => chr(179), 'unicode' => $inv . 'â¤' . $ni, 'desc' => 'Reversed Vertical Bar Middle Right', },
'REVERSE VERTICAL BOX LEFT' => { 'out' => chr(180), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Vertical Box Left', },
'REVERSE LEFT HALF BOX' => { 'out' => chr(181), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Left Half Box', },
'REVERSE RIGHT HALF BOX' => { 'out' => chr(182), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Right half box', },
'REVERSE HORIZONTAL BAR TOP' => { 'out' => chr(183), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Horizontal bar top', },
'REVERSE HORIZONTAL BAR THICK TOP' => { 'out' => chr(184), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Horizontal bar thick top', },
'REVERSE HORIZONTAL BAR THICK BOTTOM' => { 'out' => chr(185), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Horizontal bar thick bottom', },
'REVERSE BOTTOM RIGHT RIGHT ANGLE' => { 'out' => chr(186), 'unicode' => $inv . 'ð¿' . $ni, 'desc' => 'Reversed Bottom right right angle', },
'REVERSE BOTTOM LEFT BOX' => { 'out' => chr(187), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Left Box', },
'REVERSE TOP RIGHT BOX' => { 'out' => chr(188), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Right Box', },
'REVERSE BOTTOM RIGHT CORNER' => { 'out' => chr(189), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Right Corner', },
'REVERSE TOP LEFT BOX' => { 'out' => chr(190), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Left Box', },
'REVERSE TOP LEFT BOTTOM RIGHT BOX' => { 'out' => chr(191), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Left Bottom Right Box', },
'REVERSE HORIZONTAL BAR' => { 'out' => chr(192), 'unicode' => $inv . 'ð¹' . $ni, 'desc' => 'Reversed Horizontal bar', },
# 'REVERSE SPADE DUPLICATE' => { 'out' => chr(193), 'unicode' => $inv . 'â ' . $ni, 'desc' => 'Reversed Spade duplicate', },
# 'REVERSE VERTICAL BAR CENTER DUPLICATE' => { 'out' => chr(194), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Giant Vertical Bar duplicate', },
'REVERSE HORIZONTAL BAR DUPLICATE' => { 'out' => chr(195), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Horizontal Bar duplicate', },
'REVERSE HORIZONTAL BAR SMALL UPPER BIAS' => { 'out' => chr(196), 'unicode' => $inv . 'ð¸' . $ni, 'desc' => 'Reversed Horizontal bar with a slight upper bias', },
'REVERSE HORIZONTAL BAR LARGE UPPER BIAS' => { 'out' => chr(197), 'unicode' => $inv . 'ð¶' . $ni, 'desc' => 'Reversed Horizontal bar with a strong upper bias', },
'REVERSE HORIZONTAL BAR SMALL LOWER BIAS' => { 'out' => chr(198), 'unicode' => $inv . 'ðº' . $ni, 'desc' => 'Reversed Horizontal bar with a slight lower bias', },
'REVERSE VERTICAL BAR SMALL LEFT BIAS' => { 'out' => chr(199), 'unicode' => $inv . ' ' . $ni, 'desc' => 'Reversed Vertical bar with a slight left bias', },
'REVERSE VERTICAL BAR SMALL RIGHT BIAS' => { 'out' => chr(200), 'unicode' => $inv . ' ' . $ni, 'desc' => 'Reversed Vertical bar with a slight right bias', },
'REVERSE TOP RIGHT ROUNDED CORNER' => { 'out' => chr(201), 'unicode' => $inv . 'â®' . $ni, 'desc' => 'Reversed Top Right Rounded Corner', },
'REVERSE BOTTOM LEFT ROUNDED CORNER' => { 'out' => chr(202), 'unicode' => $inv . 'â°' . $ni, 'desc' => 'Reversed Bottom Left Rounded Corner', },
'REVERSE BOTTOM RIGHT ROUNDED CORNER' => { 'out' => chr(203), 'unicode' => $inv . 'â¯' . $ni, 'desc' => 'Reversed Bottom Right Rounded Corner', },
'REVERSE BOTTOM LEFT RIGHT ANGLE' => { 'out' => chr(204), 'unicode' => $inv . 'â¿' . $ni, 'desc' => 'Reversed Bottom left right angle', },
'REVERSE GIANT BACKSLASH' => { 'out' => chr(205), 'unicode' => $inv . 'â²' . $ni, 'desc' => 'Reversed Giant Backslash', },
'REVERSE GIANT FORWARD SLASH' => { 'out' => chr(206), 'unicode' => $inv . 'â±' . $ni, 'desc' => 'Reversed Giant Forward Slash', },
'REVERSE TOP LEFT RIGHT ANGLE' => { 'out' => chr(207), 'unicode' => $inv . 'â¾' . $ni, 'desc' => 'Reversed Top left right angle', },
'REVERSE TOP RIGHT RIGHT ANGLE' => { 'out' => chr(208), 'unicode' => $inv . ' ' . $ni, 'desc' => 'Reversed Top right right angle', },
'REVERSE CENTER DOT' => { 'out' => chr(209), 'unicode' => $inv . 'â¢' . $ni, 'desc' => 'Reversed CENTER DOT', },
'REVERSE HORIZONTAL BAR LARGE LOWER BIAS' => { 'out' => chr(210), 'unicode' => $inv . 'ð»' . $ni, 'desc' => 'Reversed Horizontal bar with a strong lower bias', },
'REVERSE HEART' => { 'out' => chr(211), 'unicode' => $inv . 'â¥' . $ni, 'desc' => 'Reversed Heart', },
'REVERSE VERTICAL BAR LARGE LEFT BIAS' => { 'out' => chr(212), 'unicode' => $inv . ' ' . $ni, 'desc' => 'Reversed Vertical bar with a strong left bias', },
'REVERSE TOP LEFT ROUNDED CORNER' => { 'out' => chr(213), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Left Rounded Corner', },
'REVERSE GIANT X' => { 'out' => chr(214), 'unicode' => $inv . 'â³' . $ni, 'desc' => 'Reversed Giant X', },
'REVERSE THIN CIRCLE' => { 'out' => chr(215), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Thin Circle', },
'REVERSE CLUB' => { 'out' => chr(216), 'unicode' => $inv . 'â£' . $ni, 'desc' => 'Reversed Club', },
'REVERSE VERTICAL BAR LARGE RIGHT BIAS' => { 'out' => chr(217), 'unicode' => $inv . ' ' . $ni, 'desc' => 'Reversed Vertical bar with a strong right bias', },
'REVERSE DIAMOND' => { 'out' => chr(218), 'unicode' => $inv . 'â¦' . $ni, 'desc' => 'Reversed Diamond', },
'REVERSE CROSS BAR' => { 'out' => chr(219), 'unicode' => $inv . 'â¼' . $ni, 'desc' => 'Reversed Cross Bar', },
'REVERSE SHADE LEFT' => { 'out' => chr(220), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Shade left', },
'REVERSE VERTICAL BAR' => { 'out' => chr(221), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Vertical bar', },
'REVERSE PI' => { 'out' => chr(222), 'unicode' => $inv . 'Ï' . $ni, 'desc' => 'Reversed Pi symbol', },
'REVERSE BOTTOM LEFT WEDGE' => { 'out' => chr(223), 'unicode' => $inv . 'â¥' . $ni, 'desc' => 'Reversed Bottom Left Wedge', },
# 'REVERSE SPACE 2' => { 'out' => chr(224), 'unicode' => $inv . ' ' . $ni, 'desc' => 'Reversed Dithered Box Full duplicate', },
# 'REVERSE LEFT HALF 2' => { 'out' => chr(225), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Left Half duplicate', },
# 'REVERSE BOTTOM BOX 2' => { 'out' => chr(226), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Box duplicate', },
# 'REVERSE TOP HORIZONTAL BAR 2' => { 'out' => chr(227), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Horizontal Bar duplicate', },
# 'REVERSE BOTTOM HORIZONTAL BAR 2' => { 'out' => chr(228), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Horizontal Bar duplicate', },
# 'REVERSE LEFT VERTICAL BAR 2' => { 'out' => chr(229), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Left Vertical Bar duplicate', },
# 'REVERSE DITHERED BOX 2' => { 'out' => chr(230), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Dithered Box duplicate', },
# 'REVERSE RIGHT VERTICAL BAR 2' => { 'out' => chr(231), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Right Vertical Bar duplicate', },
# 'REVERSE DITHERED BOTTOM 2' => { 'out' => chr(232), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Dithered Left duplicate', },
# 'REVERSE BOTTOM RIGHT WEDGE 2' => { 'out' => chr(233), 'unicode' => $inv . 'â¤' . $ni, 'desc' => 'Reversed Bottom Right Wedge duplicate', },
# 'REVERSE VERTICAL BAR RIGHT 2' => { 'out' => chr(234), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Vertical bar flushed right duplicate', },
# 'REVERSE VERTICAL BAR MIDDLE LEFT 2' => { 'out' => chr(235), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Vertical Bar Middle Left duplicate', },
# 'REVERSE BOTTOM RIGHT BOX 2' => { 'out' => chr(236), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Right Box duplicate', },
# 'REVERSE BOTTOM LEFT CORNER 2' => { 'out' => chr(237), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Left Corner duplicate', },
# 'REVERSE TOP RIGHT CORNER 2' => { 'out' => chr(238), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Right Corner duplicate', },
# 'REVERSE HORIZONTAL BAR BOTTOM 2' => { 'out' => chr(239), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Horizontal Bar Bottom duplicate', },
# 'REVERSE TOP LEFT CORNER 2' => { 'out' => chr(240), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Left Corner duplicate', },
# 'REVERSE HORIZONTAL BAR MIDDLE BOTTOM 2' => { 'out' => chr(241), 'unicode' => $inv . 'â´' . $ni, 'desc' => 'Reversed Horizontal Bar Middle Bottom duplicate', },
# 'REVERSE HORIZONTAL BAR MIDDLE TOP 2' => { 'out' => chr(242), 'unicode' => $inv . 'â¬' . $ni, 'desc' => 'Reversed Horizontal Bar Middle Top duplicate', },
# 'REVERSE VERTICAL BAR MIDDLE RIGHT 2' => { 'out' => chr(243), 'unicode' => $inv . 'â¤' . $ni, 'desc' => 'Reversed Vertical Bar Middle Right duplicate', },
# 'REVERSE VERTICAL BOX LEFT 2' => { 'out' => chr(244), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Vertical Box Left duplicate', },
# 'REVERSE LEFT HALF BOX 2' => { 'out' => chr(245), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Left Half Box duplicate', },
# 'REVERSE RIGHT HALF BOX 2' => { 'out' => chr(246), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Right half box duplicate', },
# 'REVERSE HORIZONTAL BAR TOP 2' => { 'out' => chr(247), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Horizontal bar top duplicate', },
# 'REVERSE HORIZONTAL BAR THICK TOP 2' => { 'out' => chr(248), 'unicode' => $inv . 'ð®' . $ni, 'desc' => 'Reversed Horizontal bar thick top duplicate', },
# 'REVERSE HORIZONTAL BAR THICK BOTTOM 2' => { 'out' => chr(249), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Horizontal bar thick bottom duplicate', },
# 'REVERSE BOTTOM RIGHT RIGHT ANGLE 2' => { 'out' => chr(250), 'unicode' => $inv . 'ð¿' . $ni, 'desc' => 'Reversed Bottom right right angle duplicate', },
# 'REVERSE BOTTOM LEFT BOX 2' => { 'out' => chr(251), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Left Box duplicate', },
# 'REVERSE TOP RIGHT BOX 2' => { 'out' => chr(252), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Right Box duplicate', },
# 'REVERSE BOTTOM RIGHT CORNER 2' => { 'out' => chr(253), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Bottom Right Corner duplicate', },
# 'REVERSE TOP LEFT BOX 2' => { 'out' => chr(254), 'unicode' => $inv . 'â' . $ni, 'desc' => 'Reversed Top Left Box duplicate', },
# 'REVERSE PI 2' => { 'out' => chr(255), 'unicode' => $inv . 'Ï' . $ni, 'desc' => 'Reversed Pi symbol duplicate', },
};
$self->{'debug'}->DEBUG(['End PETSCII Initialize']);
return ($self);
} ## end sub petscii_initialize
sub petscii_output {
my $self = shift;
my $text = shift;
$self->{'debug'}->DEBUG(['Start PETSCII Output']);
lib/BBS/Universal/SysOp.pm view on Meta::CPAN
$text .= "[% ORANGE %]â[% YELLOW %] ## ## ## [% BRIGHT BLUE %]âââââ âââ¦ââ âââââ âââââ âââââ âââ¦ââ âââ¦ââ [% YELLOW %] ## ## ## [% ORANGE %]â[% ...
$text .= "[% ORANGE %]â[% GREEN %] ## ## ## [% BRIGHT BLUE %]â â â â â â â â â â [% GREEN %] ## ## ## [% ORANGE %]â[% RESET %]\n";
$text .= "[% ORANGE %]â[% CYAN %] ## ## ## [% BRIGHT BLUE %]â âââ⣠â â âââ⣠âââââ â â â [% CYAN %] ## ## ## [% ORANGE %]â[% RESET %]\n";
$text .= "[% ORANGE %]â[% BLUE %] ### ## ### [% BRIGHT BLUE %]â â â â â â â â â â [% BLUE %] ### ## ### [% ORANGE %]â[% RESET %]\n";
$text .= "[% ORANGE %]â[% MAGENTA %] ### ## ### [% BRIGHT BLUE %]â â â â â âââââ âââââ âââ©ââ âââ©ââ [% MAGENTA %] ### ## ### [% ORANGE %]â[% RESET %]\n";
$text .= '[% ORANGE %]â âââââââ¦' . 'â' x 39 . 'â¦' . 'â' x 39 . 'â£[% RESET %]' . "\n";
$text .= "[% ORANGE %]â[% BRIGHT YELLOW %] CHAR [% ORANGE %]â[% BRIGHT YELLOW %] ATASCII TOKENS [% ORANGE %]â[% BRIGHT YELLOW %] DESCRIPTION [% ORANGE %]â[% RESET %]\n";
$text .= '[% ORANGE %]â âââââââ¬' . 'â' x 39 . 'â¬' . 'â' x 39 . 'â£[% RESET %]' . "\n";
foreach my $name (@atatkn) {
$text .= '[% ORANGE %]â[% RESET %] ' . $self->{'atascii_meta'}->{$name}->{'unicode'} . ' [% ORANGE %]â[% RESET %] ' . sprintf('%-37s %s %-37s %s', $name, '[% ORANGE %]â[% RESET %]', $self->{'atascii_meta'}->{$name}->{'desc'}, '[%...
}
$text .= '[% ORANGE %]â[% RESET %] ' . '[% HORIZONTAL BAR %]' x 4 . ' [% ORANGE %]â[% RESET %] ' . sprintf('%-37s %s %-37s %s', 'HORIZONTAL RULE', '[% ORANGE %]â[% RESET %]', 'Horizontal rule', '[% ORANGE %]â[% RESET %]') . "\n";
$text .= "[% ORANGE %]ââââââââ©ââââââââââââââââââââââââââââââââââââââââ©ââââââââââââââââââââââââââ...
} elsif ($mode && $mode eq 'PETSCII') {
# â â â â â â
â â â â â â â â â â â â â â â â â â â â â â â â â â â ⡠⢠⣠⤠⥠⦠⧠⨠⩠⪠⫠⬠â ⮠⯠ⰠⱠⲠⳠⴠⵠⶠⷠ⸠⹠⺠⻠...
# ð¬ ð¬ ð¬ ð¬ ð¬ ð¬
ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ 𬡠𬢠𬣠𬤠𬥠𬦠𬧠𬨠𬩠𬪠𬫠𬬠ð¬ 𬮠𬯠𬰠ð...
# ð° ð± ð² ð³ ð´ ðµ ð¶ ð· ð¸ ð¹ ðº ð» ð¼ ð½ ð¾ ð¿ ð® ð® ð® ð® ð® ð®
ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® 𮡠...
lib/BBS/Universal/SysOp.pm view on Meta::CPAN
$text .= '[% ORANGE %]â[% RESET %] [% BLUE %]d8P Y8 [% RESET %][% BRIGHT WHITE %] 8 8 8 8 8 8 " 8 8 [% BLUE %]d8P Y8 [% RESET %]...
$text .= '[% ORANGE %]â[% RESET %] [% BLUE %]8P ð®
ð®
ð®
ð[% RESET %][% BRIGHT WHITE %] 8eeee8 8eeee 8e 8eeeee 8e 8e 8e [% BLUE %]8P ...
$text .= '[% ORANGE %]â[% RESET %] [% BLUE %]8b [% RED %][% REVERSE %]ð®ð®ð®[% RESET %][% RED %]ð¬¿[% RESET %][% BRIGHT WHITE %] 88 88 88 88 88 88 88 [% BLUE %]8b ...
$text .= '[% ORANGE %]â[% RESET %] [% BLUE %]Y8b d8 [% RESET %][% BRIGHT WHITE %] 88 88 88 e 88 88 e 88 88 [% BLUE %]Y8b d8 [% RESET %]...
$text .= '[% ORANGE %]â[% RESET %] [% BLUE %]' . " `Y88P'" . '[% RESET %][% BRIGHT WHITE %] 88 88eee 88 8eee88 88eee8 88 88 ' . "[% BLUE %] `Y88P'" . '[%...
$text .= '[% ORANGE %]â âââââââ¦' . 'â' x 50 . 'â¦' . 'â' x 50 . 'â£[% RESET %]' . "\n";
$text .= '[% ORANGE %]â[% BRIGHT YELLOW %] CHAR [% ORANGE %]â[% BRIGHT YELLOW %] PETSCII TOKENS [% ORANGE %]â[% BRIGHT YELLOW %] DESCRIPTION [% ORANGE %]â[% RESET ...
$text .= '[% ORANGE %]â âââââââ¬' . 'â' x 50 . 'â¬' . 'â' x 50 . 'â£[% RESET %]' . "\n";
foreach my $name (@pettkn) {
$text .= '[% ORANGE %]â[% RESET %] ' . $self->{'petscii_meta'}->{$name}->{'unicode'} . ' [% ORANGE %]â[% RESET %] ' . sprintf('%-48s %s %-48s %s', $name, '[% ORANGE %]â[% RESET %]', $self->{'petscii_meta'}->{$name}->{'desc'}, '[%...
}
$text .= '[% ORANGE %]â[% RESET %] ' . '[% HORIZONTAL BAR %]' x 4 . ' [% ORANGE %]â[% RESET %] ' . sprintf('%-48s %s %-48s %s', 'HORIZONTAL RULE color', '[% ORANGE %]â[% RESET %]', 'Horizontal rule in specified color', '[% ORANGE %]â[...
$text .= '[% ORANGE %]ââââââââ©' . 'â' x 50 . 'â©' . 'â' x 50 . 'â[% RESET %]' . "\n";
$text =~ s/â (WHITE)/â \[\% BRIGHT WHITE \%\]$1\[\% RESET \%\]/g;
$text =~ s/â (YELLOW)/â \[\% YELLOW \%\]$1\[\% RESET \%\]/g;
$text =~ s/â (CYAN)/â \[\% CYAN \%\]$1\[\% RESET \%\]/g;
$text =~ s/â (GREEN)/â \[\% GREEN \%\]$1\[\% RESET \%\]/g;
$text =~ s/â (PINK)/â \[\% PINK \%\]$1\[\% RESET \%\]/g;
( run in 2.198 seconds using v1.01-cache-2.11-cpan-cdf2f3d4e48 )