# 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

#**** 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
always _ 456
always | 3456-123
always ~ 56-26
always # 56-3456
always $ 3456-1246
always & 3456-12346
always @ 3456-12456
always % 3456-1234

