#
# Useful for convertion from or to the charset used to simulate
# braille patterns on screen in Word CX / CX for Word. The table is 6
# dot only. The character mapping is derived from the publication
# Håndbok i punktskrift, Offentlig utvalg for punktskrift, see
# http://liblouis.org/braille-specs/norwegian/#h%C3%A5ndbok-i-litter%C3%A6r-punktskrift
#
# Copyright (C) 2019 Lars Bjørndal <lars@lamasti.net>
#
#  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/>.

# display \x0020 0		# 032 space
display \x0021 5 		# 033 exclamation mark
display \x0022 4 		# 034 quotation mark
display \x0023 3456 		# 035 number sign
display \x0024 46 		# 036 dollar sign
display \x0025 123456 		# 037 percent sign
display \x0026 12346 		# 038 ampersand
display \x0027 6 		# 039 apostrophe
display \x0028 236 		# 040 left parenthesis
display \x0029 356 		# 041 right parenthesis
display \x002A 35 		# 042 asterisk
display \x002B 235 		# 043 plus sign
display \x002C 2 		# 044 comma
display \x002D 36 		# 045 hyphen-minus
display \x002E 3 		# 046 full stop
display \x002F 256 		# 047 solidus
display \x0030 346 		# 048 digit zero
display \x0031 16 		# 049 digit one
display \x0032 126 		# 050 digit two
display \x0033 146 		# 051 digit three
display \x0034 1456 		# 052 digit four
display \x0035 156 		# 053 digit five
display \x0036 1246 		# 054 digit six
display \x0037 12456 		# 055 digit seven
display \x0038 1256 		# 056 digit eight
display \x0039 246 		# 057 digit nine
display \x003A 25 		# 058 colon
display \x003B 23 		# 059 semicolon
display \x003C 56 		# 060 less-than sign
display \x003D 2356 		# 061 equals sign
display \x003E 45 		# 062 greater-than sign
display \x003F 26 		# 063 question mark
display \x0040 345 		# 064 commercial at


display \x005B 12356 		# 091 left square bracket
display \x005C 34 		# 092 reverse solidus
display \x005D 23456 		# 093 right square bracket
display \x005E 2346 		# 094 circumflex accent
display \x005F 456 		# 095 low line
display \x0061 1 		# 097 latin small letter a
display \x0062 12 		# 098 latin small letter b
display \x0063 14 		# 099 latin small letter c
display \x0064 145 		# 100 latin small letter d
display \x0065 15 		# 101 latin small letter e
display \x0066 124 		# 102 latin small letter f
display \x0067 1245 		# 103 latin small letter g
display \x0068 125 		# 104 latin small letter h
display \x0069 24 		# 105 latin small letter i
display \x006A 245 		# 106 latin small letter j
display \x006B 13 		# 107 latin small letter k
display \x006C 123 		# 108 latin small letter l
display \x006D 134 		# 109 latin small letter m
display \x006E 1345 		# 110 latin small letter n
display \x006F 135 		# 111 latin small letter o
display \x0070 1234 		# 112 latin small letter p
display \x0071 12345 		# 113 latin small letter q
display \x0072 1235 		# 114 latin small letter r
display \x0073 234 		# 115 latin small letter s
display \x0074 2345 		# 116 latin small letter t
display \x0075 136 		# 117 latin small letter u
display \x0076 1236 		# 118 latin small letter v
display \x0077 2456 		# 119 latin small letter w
display \x0078 1346 		# 120 latin small letter x
display \x0079 13456 		# 121 latin small letter y
display \x007A 1356 		# 122 latin small letter z
