#
# Copyright (C) 1995-2008 by The BRLTTY Developers.
#
#  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/>.

# BRLTTY Text Table - Gaelic
#
# Samuel Thibault <samuel.thibault@ens-lyon.org>
# 
# This table is based on the Unesco report on the progress of unification of
# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha
# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf
# The document is dated 1954, so this table may be quite outdated.

# generated by ttbtest
space \s 0		SPACE
punctuation ! 235		EXCLAMATION MARK
punctuation " 2356		QUOTATION MARK
punctuation ' 3		APOSTROPHE
punctuation ( 236		LEFT PARENTHESIS
punctuation ) 356		RIGHT PARENTHESIS
punctuation , 2		COMMA
punctuation - 36		HYPHEN-MINUS
punctuation . 256		FULL STOP
include digits8Dots.uti
punctuation : 25		COLON
punctuation ; 23		SEMICOLON
punctuation ? 236		QUESTION MARK
uppercase A 17		LATIN CAPITAL LETTER A
uppercase B 127		LATIN CAPITAL LETTER B
uppercase C 147		LATIN CAPITAL LETTER C
uppercase D 1457		LATIN CAPITAL LETTER D
uppercase E 157		LATIN CAPITAL LETTER E
uppercase F 1247		LATIN CAPITAL LETTER F
uppercase G 12457		LATIN CAPITAL LETTER G
uppercase H 1257		LATIN CAPITAL LETTER H
uppercase I 247		LATIN CAPITAL LETTER I
uppercase J 2457		LATIN CAPITAL LETTER J
uppercase K 137		LATIN CAPITAL LETTER K
uppercase L 1237		LATIN CAPITAL LETTER L
uppercase M 1347		LATIN CAPITAL LETTER M
uppercase N 13457		LATIN CAPITAL LETTER N
uppercase O 1357		LATIN CAPITAL LETTER O
uppercase P 12347		LATIN CAPITAL LETTER P
uppercase Q 123457		LATIN CAPITAL LETTER Q
uppercase R 12357		LATIN CAPITAL LETTER R
uppercase S 2347		LATIN CAPITAL LETTER S
uppercase T 23457		LATIN CAPITAL LETTER T
uppercase U 1367		LATIN CAPITAL LETTER U
uppercase V 12367		LATIN CAPITAL LETTER V
uppercase W 24567		LATIN CAPITAL LETTER W
uppercase X 13467		LATIN CAPITAL LETTER X
uppercase Y 134567		LATIN CAPITAL LETTER Y
uppercase Z 13567		LATIN CAPITAL LETTER Z
lowercase a 1		LATIN SMALL LETTER A
lowercase b 12		LATIN SMALL LETTER B
lowercase c 14		LATIN SMALL LETTER C
lowercase d 145		LATIN SMALL LETTER D
lowercase e 15		LATIN SMALL LETTER E
lowercase f 124		LATIN SMALL LETTER F
lowercase g 1245		LATIN SMALL LETTER G
lowercase h 125		LATIN SMALL LETTER H
lowercase i 24		LATIN SMALL LETTER I
lowercase j 245		LATIN SMALL LETTER J
lowercase k 13		LATIN SMALL LETTER K
lowercase l 123		LATIN SMALL LETTER L
lowercase m 134		LATIN SMALL LETTER M
lowercase n 1345		LATIN SMALL LETTER N
lowercase o 135		LATIN SMALL LETTER O
lowercase p 1234		LATIN SMALL LETTER P
lowercase q 12345		LATIN SMALL LETTER Q
lowercase r 1235		LATIN SMALL LETTER R
lowercase s 234		LATIN SMALL LETTER S
lowercase t 2345		LATIN SMALL LETTER T
lowercase u 136		LATIN SMALL LETTER U
lowercase v 1236		LATIN SMALL LETTER V
lowercase w 2456		LATIN SMALL LETTER W
lowercase x 1346		LATIN SMALL LETTER X
lowercase y 13456		LATIN SMALL LETTER Y
lowercase z 1356		LATIN SMALL LETTER Z
punctuation \x00a0 0		NO-BREAK SPACE
uppercase \x00c1 123467		LATIN CAPITAL LETTER A WITH ACUTE
uppercase \x00c9 1234567		LATIN CAPITAL LETTER E WITH ACUTE
uppercase \x00cd 123567		LATIN CAPITAL LETTER I WITH ACUTE
uppercase \x00d3 23467		LATIN CAPITAL LETTER O WITH ACUTE
uppercase \x00da 234567		LATIN CAPITAL LETTER U WITH ACUTE
lowercase \x00e1 12346		LATIN SMALL LETTER A WITH ACUTE
lowercase \x00e9 123456		LATIN SMALL LETTER E WITH ACUTE
lowercase \x00ed 12356		LATIN SMALL LETTER I WITH ACUTE
lowercase \x00f3 2346		LATIN SMALL LETTER O WITH ACUTE
lowercase \x00fa 23456		LATIN SMALL LETTER U WITH ACUTE
uppercase \x010a 1467		LATIN CAPITAL LETTER C WITH DOT ABOVE
lowercase \x010b 146		LATIN SMALL LETTER C WITH DOT ABOVE
uppercase \x0120 12467		LATIN CAPITAL LETTER G WITH DOT ABOVE
lowercase \x0121 1246		LATIN SMALL LETTER G WITH DOT ABOVE
uppercase \x1e02 1267		LATIN CAPITAL LETTER B WITH DOT ABOVE
lowercase \x1e03 126		LATIN SMALL LETTER B WITH DOT ABOVE
uppercase \x1e0a 14567		LATIN CAPITAL LETTER D WITH DOT ABOVE
lowercase \x1e0b 1456		LATIN SMALL LETTER D WITH DOT ABOVE
uppercase \x1e1e 1567		LATIN CAPITAL LETTER F WITH DOT ABOVE
lowercase \x1e1f 156		LATIN SMALL LETTER F WITH DOT ABOVE
uppercase \x1e40 124567		LATIN CAPITAL LETTER M WITH DOT ABOVE
lowercase \x1e41 12456		LATIN SMALL LETTER M WITH DOT ABOVE
uppercase \x1e56 12567		LATIN CAPITAL LETTER P WITH DOT ABOVE
lowercase \x1e57 1256		LATIN SMALL LETTER P WITH DOT ABOVE
uppercase \x1e60 2467		LATIN CAPITAL LETTER S WITH DOT ABOVE
lowercase \x1e61 246		LATIN SMALL LETTER S WITH DOT ABOVE
uppercase \x1e6a 24567		LATIN CAPITAL LETTER T WITH DOT ABOVE
lowercase \x1e6b 2456		LATIN SMALL LETTER T WITH DOT ABOVE
