# liblouis: Slovak Braille Table
#
#  Copyright (C) 2007-2008 ViewPlus Technologies, Inc. www.viewplus.com
#  Copyright (C) 2013 Mesar Hameed <mesar.hameed@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 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/>.

# Created and maintained by Mike Sivill #<mike.sivill@viewplus.com>

#**** Display Codes
include text_nabcc.dis

#**** Spaces
space \x00a0 a
include spaces.uti

#**** Character Definitions
include eurodefs.cti

# Numbers
include litdigits6Dots.uti

include latinLetterDef6Dots.uti

uplow \x00C1\x00E1 16
uplow \x010C\x010D 146 c with caron
uplow \x010E\x010F 1456 D with caron
uplow \x00C9\x00E9 345 e with acute
uplow \x00C4\x00E4 4 a with daeresis
uplow \x00CD\x00ED 34 I with acute
uplow \x0139\x013A 46 l with acute
uplow \x013D\x013E 456 l with caron
uplow \x0147\x0148 1246 n with caron
uplow \x00D3\x00f3 246 O with acute
uplow \x00D4\x00F4 23456 o with circumflex
uplow \x0154\x0155 12356 r with acute
uplow \x0160\x0161 156 s with caron
uplow \x0164\x0165 1256 t with caron
uplow \x00DA\x00FA 346 U WITH ACUTE
uplow \x00DD\x00FD 12346 Y WITH ACUTE
uplow \x017d\x017E 2346 z with caron

#**** Braille Indicators
numsign 3456
capsletter 6
begcapsword 6-6

# Punctuation
punctuation ! 235
punctuation " 2356
punctuation ' 3
punctuation ( 236
punctuation ) 356
midnum * 35
math + 235
punctuation , 2
punctuation - 36
punctuation . 256
punctuation / 25
punctuation : 25
punctuation * 0-3
punctuation ; 23
math < 126
math > 345
math = 2356
punctuation ? 26
punctuation [ 6-236
punctuation  ] 6-356
always \\ 3456-1256
punctuation { 5-236
punctuation } 5-356
noback always _ 456
always | 3456-123
always ~ 56-26
always # 56-3456
always $ 3456-1246
always & 3456-12346
always @ 3456-12456
always % 3456-1234

