# LibLouis: North American Braille Computer Code
#
# -----------
#-index-name: English, U.S., computer, NABCC
#-display-name: North American Braille Computer Code
#
#+locale: en
#+type: computer
#+dots: 8
#+system: nabcc
# -----------
#
# Copyright (C) 2019 Dave Mielke: <dave@mielke.cc>, [http://mielke.cc/]
#
#  This file is part of liblouis.
#
#  liblouis is free software: you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as
#  published by the Free Software Foundation, either version 2.1 of the
#  License, or (at your option) any later version.
#
#  liblouis 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
#  Lesser General Public License for more details.
#
#  You should have received a copy of the GNU Lesser General Public
#  License along with liblouis. If not, see
#  <http://www.gnu.org/licenses/>.

sign \x0000 478      #   0 ^@   NULL
sign \x0001 178      #   1 ^A   START OF HEADING
sign \x0002 1278     #   2 ^B   START OF TEXT
sign \x0003 1478     #   3 ^C   END OF TEXT
sign \x0004 14578    #   4 ^D   END OF TRANSMISSION
sign \x0005 1578     #   5 ^E   ENQUIRY
sign \x0006 12478    #   6 ^F   ACKNOWLEDGE
sign \x0007 124578   #   7 ^G   BELL
sign \x0008 12578    #   8 ^H   BACKSPACE
sign \x0009 2478     #   9 ^I   HORIZONTAL TABULATION
sign \x000A 24578    #  10 ^J   LINE FEED
sign \x000B 1378     #  11 ^K   VERTICAL TABULATION
sign \x000C 12378    #  12 ^L   FORM FEED
sign \x000D 13478    #  13 ^M   CARRIAGE RETURN
sign \x000E 134578   #  14 ^N   SHIFT OUT
sign \x000F 13578    #  15 ^O   SHIFT IN

sign \x0010 123478   #  16 ^P   DATA LINK ESCAPE
sign \x0011 1234578  #  17 ^Q   DEVICE CONTROL ONE
sign \x0012 123578   #  18 ^R   DEVICE CONTROL TWO
sign \x0013 23478    #  19 ^S   DEVICE CONTROL THREE
sign \x0014 234578   #  20 ^T   DEVICE CONTROL FOUR
sign \x0015 13678    #  21 ^U   NEGATIVE ACKNOWLEDGE
sign \x0016 123678   #  22 ^V   SYNCHRONOUS IDLE
sign \x0017 245678   #  23 ^W   END OF TRANSMISSION BLOCK
sign \x0018 134678   #  24 ^X   CANCEL
sign \x0019 1345678  #  25 ^Y   END OF MEDIUM
sign \x001A 135678   #  26 ^Z   SUBSTITUTE
sign \x001B 24678    #  27 ^[   ESCAPE
sign \x001C 125678   #  28 ^\   FILE SEPARATOR
sign \x001D 1245678  #  29 ^]   GROUP SEPARATOR
sign \x001E 4578     #  30 ^^   RECORD SEPARATOR
sign \x001F 45678    #  31 ^_   UNIT SEPARATOR

sign \x0020 0        #  32      SPACE
sign \x0021 2346     #  33 !    EXCLAMATION MARK
sign \x0022 5        #  34 "    QUOTATION MARK
sign \x0023 3456     #  35 #    NUMBER SIGN
sign \x0024 1246     #  36 $    DOLLAR SIGN
sign \x0025 146      #  37 %    PERCENT SIGN
sign \x0026 12346    #  38 &    AMPERSAND
sign \x0027 3        #  39 '    APOSTROPHE
sign \x0028 12356    #  40 (    LEFT PARENTHESIS
sign \x0029 23456    #  41 )    RIGHT PARENTHESIS
sign \x002A 16       #  42 *    ASTERISK
sign \x002B 346      #  43 +    PLUS SIGN
sign \x002C 6        #  44 ,    COMMA
sign \x002D 36       #  45 -    HYPHEN-MINUS
sign \x002E 46       #  46 .    FULL STOP
sign \x002F 34       #  47 /    SOLIDUS

sign \x0030 356      #  48 0    DIGIT ZERO
sign \x0031 2        #  49 1    DIGIT ONE
sign \x0032 23       #  50 2    DIGIT TWO
sign \x0033 25       #  51 3    DIGIT THREE
sign \x0034 256      #  52 4    DIGIT FOUR
sign \x0035 26       #  53 5    DIGIT FIVE
sign \x0036 235      #  54 6    DIGIT SIX
sign \x0037 2356     #  55 7    DIGIT SEVEN
sign \x0038 236      #  56 8    DIGIT EIGHT
sign \x0039 35       #  57 9    DIGIT NINE
sign \x003A 156      #  58 :    COLON
sign \x003B 56       #  59 ;    SEMICOLON
sign \x003C 126      #  60 <    LESS-THAN SIGN
sign \x003D 123456   #  61 =    EQUALS SIGN
sign \x003E 345      #  62 >    GREATER-THAN SIGN
sign \x003F 1456     #  63 ?    QUESTION MARK

sign \x0040 47       #  64 @    COMMERCIAL AT
sign \x0041 17       #  65 A    LATIN CAPITAL LETTER A
sign \x0042 127      #  66 B    LATIN CAPITAL LETTER B
sign \x0043 147      #  67 C    LATIN CAPITAL LETTER C
sign \x0044 1457     #  68 D    LATIN CAPITAL LETTER D
sign \x0045 157      #  69 E    LATIN CAPITAL LETTER E
sign \x0046 1247     #  70 F    LATIN CAPITAL LETTER F
sign \x0047 12457    #  71 G    LATIN CAPITAL LETTER G
sign \x0048 1257     #  72 H    LATIN CAPITAL LETTER H
sign \x0049 247      #  73 I    LATIN CAPITAL LETTER I
sign \x004A 2457     #  74 J    LATIN CAPITAL LETTER J
sign \x004B 137      #  75 K    LATIN CAPITAL LETTER K
sign \x004C 1237     #  76 L    LATIN CAPITAL LETTER L
sign \x004D 1347     #  77 M    LATIN CAPITAL LETTER M
sign \x004E 13457    #  78 N    LATIN CAPITAL LETTER N
sign \x004F 1357     #  79 O    LATIN CAPITAL LETTER O

sign \x0050 12347    #  80 P    LATIN CAPITAL LETTER P
sign \x0051 123457   #  81 Q    LATIN CAPITAL LETTER Q
sign \x0052 12357    #  82 R    LATIN CAPITAL LETTER R
sign \x0053 2347     #  83 S    LATIN CAPITAL LETTER S
sign \x0054 23457    #  84 T    LATIN CAPITAL LETTER T
sign \x0055 1367     #  85 U    LATIN CAPITAL LETTER U
sign \x0056 12367    #  86 V    LATIN CAPITAL LETTER V
sign \x0057 24567    #  87 W    LATIN CAPITAL LETTER W
sign \x0058 13467    #  88 X    LATIN CAPITAL LETTER X
sign \x0059 134567   #  89 Y    LATIN CAPITAL LETTER Y
sign \x005A 13567    #  90 Z    LATIN CAPITAL LETTER Z
sign \x005B 2467     #  91 [    LEFT SQUARE BRACKET
sign \x005C 12567    #  92 \    REVERSE SOLIDUS
sign \x005D 124567   #  93 ]    RIGHT SQUARE BRACKET
sign \x005E 457      #  94 ^    CIRCUMFLEX ACCENT
sign \x005F 456      #  95 _    LOW LINE

sign \x0060 4        #  96 `    GRAVE ACCENT
sign \x0061 1        #  97 a    LATIN SMALL LETTER A
sign \x0062 12       #  98 b    LATIN SMALL LETTER B
sign \x0063 14       #  99 c    LATIN SMALL LETTER C
sign \x0064 145      # 100 d    LATIN SMALL LETTER D
sign \x0065 15       # 101 e    LATIN SMALL LETTER E
sign \x0066 124      # 102 f    LATIN SMALL LETTER F
sign \x0067 1245     # 103 g    LATIN SMALL LETTER G
sign \x0068 125      # 104 h    LATIN SMALL LETTER H
sign \x0069 24       # 105 i    LATIN SMALL LETTER I
sign \x006A 245      # 106 j    LATIN SMALL LETTER J
sign \x006B 13       # 107 k    LATIN SMALL LETTER K
sign \x006C 123      # 108 l    LATIN SMALL LETTER L
sign \x006D 134      # 109 m    LATIN SMALL LETTER M
sign \x006E 1345     # 110 n    LATIN SMALL LETTER N
sign \x006F 135      # 111 o    LATIN SMALL LETTER O

sign \x0070 1234     # 112 p    LATIN SMALL LETTER P
sign \x0071 12345    # 113 q    LATIN SMALL LETTER Q
sign \x0072 1235     # 114 r    LATIN SMALL LETTER R
sign \x0073 234      # 115 s    LATIN SMALL LETTER S
sign \x0074 2345     # 116 t    LATIN SMALL LETTER T
sign \x0075 136      # 117 u    LATIN SMALL LETTER U
sign \x0076 1236     # 118 v    LATIN SMALL LETTER V
sign \x0077 2456     # 119 w    LATIN SMALL LETTER W
sign \x0078 1346     # 120 x    LATIN SMALL LETTER X
sign \x0079 13456    # 121 y    LATIN SMALL LETTER Y
sign \x007A 1356     # 122 z    LATIN SMALL LETTER Z
sign \x007B 246      # 123 {    LEFT CURLY BRACKET
sign \x007C 1256     # 124 |    VERTICAL LINE
sign \x007D 12456    # 125 }    RIGHT CURLY BRACKET
sign \x007E 45       # 126 ~    TILDE
sign \x007F 4567     # 127 ^?   DELETE

