# liblouis: U.K. English 8 dot Computer braille table
#
# -----------
#-index-name: English, U.K., computer
#-display-name: English computer braille as used in the U.K.
#
#+locale:en-GB
#+type:computer
#+dots:8
#+system:bauk
#
# TODO: Please correct the metadata above. It is not meant to be
# accurate nor complete. It hasn't been verified by the table
# author yet. It is merely an attempt by the liblouis maintainers
# to get some sensible initial values in place.
#
# TODO: Please add a reference to official documentation about
# the implemented braille code. Preferably submit the documents
# to https://github.com/liblouis/braille-specs.
# -----------
#
#  Copyright (C) 2013 David Reynolds <dkreynolds@ntlworld.com>
#
#  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/>.

space \t 9 tab
space \s 0 blank
space \x00a0 a unbreakable space
sign \x000a 24578 newline
space \x000d 13478 carriage return
include latinLetterDef8Dots.uti
punctuation , 2
punctuation ; 23
punctuation : 25
punctuation . 256
punctuation ! 3456
punctuation " 4
punctuation ' 3
punctuation ( 45
punctuation ) 345
punctuation - 36
sign _ 456
math < 236
math = 2356
math > 356
sign % 46
math + 236
math ~ 14567
sign ` 3457
sign £ 467
sign & 12346
sign $ 34567
punctuation ? 26
punctuation { 123567
punctuation [ 12356
punctuation } 234567
punctuation ] 23456
sign ^ 6
sign @ 2346
sign # 56
sign \\ 167
sign | 468
math / 34
sign * 35
digit 0 123456
include digits6DotsPlusDot6.uti
noback sign \x25CF 35	# 9679 black circle
