# liblouis: Estonian braille table
# Based on the US.English chardef.
#
#  Based on the Linux screenreader BRLTTY
#
#  Copyright (C) 1999-2006 The BRLTTY Team
#  Copyright (C) 2012 Mesar Hameed <mesar.hameed@gmail.com>
#  Copyright (C) 2012 Jürgen Dengo <jyrgen.dengo@gmail.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 3 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/>.

# Computer braille single-cell characters
space \s 0 blank
space \t 9 tab
space \x000a 0 newline
space \x000c 0
space \x000d 0 carriage return
space \x001b 1b escape character for html back-translation
space \x00A0 a NO-BREAK SPACE <noBreak> 0020 NON-BREAKING SPACE 
include digits8Dots.uti

include latinLetterDef8Dots.uti

punctuation ( 236
punctuation } 267
punctuation ] 23456
punctuation ? 26
punctuation : 25
punctuation ) 356
punctuation ! 235
punctuation { 358
punctuation [ 12356
punctuation ' 5
punctuation - 36
punctuation . 3
punctuation " 56
punctuation ; 23
punctuation , 2
sign & 12346
sign $ 1246
sign \x20ac 123456-15
sign \x00A3 456
sign | 456
sign \\ 16
sign % 1456
sign * 35
sign # 3456
punctuation ` 4
sign _ 258
sign ^ 578
sign @ 47
math = 2356
math < 1358
math / 34
math > 2468
math + 235
math ~ 45

# Estonian specific characters
uppercase \x0160 1567 LATIN UPPERCASE S WITH CARAT
lowercase \x0161 156 LATIN LOWERCASE S WITH CARAT
uppercase \x017d 23467 LATIN UPPERCASE Z WITH CARAT
lowercase \x017e 2346 LATIN LOWERCASE Z WITH CARAT
uppercase \x00c4 3457 LATIN CAPITAL LETTER A  WITH DIAERESIS
lowercase \x00E4 345 LATIN SMALL LETTER A WITH DIAERESIS 0061 0308 LATIN 
uppercase \x00D6 2467 LATIN CAPITAL LETTER O WITH DIAERESIS 004F 0308 
lowercase \x00F6 246 LATIN SMALL LETTER O WITH DIAERESIS 006F 0308 
uppercase \x00d5 1267 LATIN CAPITAL LETTER O WITH TILDE
lowercase \x00F5 126 LATIN SMALL LETTER O WITH TILDE 006F 0303 LATIN 
uppercase \x00DC 12567 LATIN CAPITAL LETTER U WITH DIAERESIS 0055 0308 
lowercase \x00FC 1256 LATIN SMALL LETTER U WITH DIAERESIS 0075 0308 

# Accented letters marked in Estonian braille
lowercase \x00DF 2346 LATIN SMALL LETTER SHARP S German 
uppercase \x00C7 123467 LATIN CAPITAL LETTER C WITH CEDILLA 0043 0327 
lowercase \x00E7 12346 LATIN SMALL LETTER C WITH CEDILLA 0063 0327 LATIN 
uppercase \x00C0 123567 LATIN CAPITAL LETTER A WITH GRAVE 0041 0300 LATIN 
lowercase \x00E0 12356 LATIN SMALL LETTER A WITH GRAVE 0061 0300 LATIN 
uppercase \x00C8 23467 LATIN CAPITAL LETTER E WITH GRAVE 0045 0300 LATIN 
lowercase \x00E8 2346 LATIN SMALL LETTER E WITH GRAVE 0065 0300 LATIN 
uppercase \x00D9 234567 LATIN CAPITAL LETTER U WITH GRAVE 0055 0300 LATIN 
lowercase \x00F9 23456 LATIN SMALL LETTER U WITH GRAVE 0075 0300 LATIN 
uppercase \x00C2 167 LATIN CAPITAL LETTER A WITH CIRCUMFLEX 0041 0302 
lowercase \x00E2 16 LATIN SMALL LETTER A WITH CIRCUMFLEX 0061 0302 
uppercase \x00CA 1267 LATIN CAPITAL LETTER E WITH CIRCUMFLEX 0045 0302 
lowercase \x00EA 126 LATIN SMALL LETTER E WITH CIRCUMFLEX 0065 0302 
uppercase \x00CE 1467 LATIN CAPITAL LETTER I WITH CIRCUMFLEX 0049 0302 
lowercase \x00EE 146 LATIN SMALL LETTER I WITH CIRCUMFLEX 0069 0302 
uppercase \x00D4 14567 LATIN CAPITAL LETTER O WITH CIRCUMFLEX 004F 0302 
lowercase \x00F4 1456 LATIN SMALL LETTER O WITH CIRCUMFLEX 006F 0302 
uppercase \x00DB 1567 LATIN CAPITAL LETTER U WITH CIRCUMFLEX 0055 0302 
lowercase \x00FB 156 LATIN SMALL LETTER U WITH CIRCUMFLEX 0075 0302 
uppercase \x00C9 1234567 LATIN CAPITAL LETTER E WITH ACUTE 0045 0301 LATIN 
lowercase \x00E9 123456 LATIN SMALL LETTER E WITH ACUTE 0065 0301 LATIN 
uppercase \x00CB 12467 LATIN CAPITAL LETTER E WITH DIAERESIS 0045 0308 
lowercase \x00EB 1246 LATIN SMALL LETTER E WITH DIAERESIS 0065 0308 
uppercase \x00CF 124567 LATIN CAPITAL LETTER I WITH DIAERESIS 0049 0308 
lowercase \x00EF 12456 LATIN SMALL LETTER I WITH DIAERESIS 0069 0308 

# Other characters
uppercase \x00C1 123567 LATIN CAPITAL LETTER A WITH ACUTE 0041 0301 LATIN 
lowercase \x00E1 12356 LATIN SMALL LETTER A WITH ACUTE 0061 0301 LATIN 
uppercase \x00CD 347 LATIN CAPITAL LETTER I WITH ACUTE 0049 0301 LATIN 
lowercase \x00ED 34 LATIN SMALL LETTER I WITH ACUTE 0069 0301 LATIN 
uppercase \x00D3 3467 LATIN CAPITAL LETTER O WITH ACUTE 004F 0301 LATIN 
lowercase \x00F3 346 LATIN SMALL LETTER O WITH ACUTE 006F 0301 LATIN 
uppercase \x00DA 123567 LATIN CAPITAL LETTER U WITH ACUTE 0055 0301 LATIN 
lowercase \x00FA 23456 LATIN SMALL LETTER U WITH ACUTE 0075 0301 LATIN 

# Miscellaneous
noback sign \x25CF 35 BLACK CIRCLE
