#
# 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 - Turkish
#
# 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 ? 26		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 357		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 \x00c2 3457		LATIN CAPITAL LETTER A WITH CIRCUMFLEX
uppercase \x00c7 167		LATIN CAPITAL LETTER C WITH CEDILLA
uppercase \x00ce 347		LATIN CAPITAL LETTER I WITH CIRCUMFLEX
uppercase \x00d6 2467		LATIN CAPITAL LETTER O WITH DIAERESIS
uppercase \x00db 1567		LATIN CAPITAL LETTER U WITH CIRCUMFLEX
uppercase \x00dc 12567		LATIN CAPITAL LETTER U WITH DIAERESIS
lowercase \x00e2 345		LATIN SMALL LETTER A WITH CIRCUMFLEX
lowercase \x00e7 16		LATIN SMALL LETTER C WITH CEDILLA
lowercase \x00ee 34		LATIN SMALL LETTER I WITH CIRCUMFLEX
lowercase \x00f6 246		LATIN SMALL LETTER O WITH DIAERESIS
lowercase \x00fb 156		LATIN SMALL LETTER U WITH CIRCUMFLEX
lowercase \x00fc 1256		LATIN SMALL LETTER U WITH DIAERESIS
uppercase \x011e 1267		LATIN CAPITAL LETTER G WITH BREVE
lowercase \x011f 126		LATIN SMALL LETTER G WITH BREVE
uppercase \x0130 247		LATIN CAPITAL LETTER I WITH DOT ABOVE
lowercase \x0131 35		LATIN SMALL LETTER DOTLESS I
uppercase \x015e 1467		LATIN CAPITAL LETTER S WITH CEDILLA
lowercase \x015f 146		LATIN SMALL LETTER S WITH CEDILLA
