# liblouis: Computer Spanish 8 dots Braille table
#
#  Copyright (C) 2012 by José Enrique Fernández del Campo and Juan Carlos Buño Suárez <quetzatl@eresmas.net>
#
#  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/>.
#
# -----------------------------------------------------------------------------

# Uncontracted Computer Spanish Table
# Autor José Enrique Fernández del Campo <jefdelcampo@gmail.com> and Juan Carlos Buño Suárez <quetzatl@eresmas.net>
# -----------------------------------------------------------------------------


space \s 0      			# blank 32
space \t 9              # tab 9
space \x001B 1b         # escape
space \x000A 0          # lf
space \x000D 0          # cr
space \X00A0 0          # Espacio de no separación

# all except 0 are the same, so define 0 here to take higher presidence
digit 0 34678				cero
include digits6DotsPlusDot6.uti

include latinLetterDef8Dots.uti

uplow \x00c7\x00e7 1234678,123468		c cedilla
uplow \x00c1\x00e1 123567,12356     a con acento
uplow \x00c9\x00e9 23467,2346		e con acento
uplow \x00cd\x00ed 347,34     i con acento
uplow \x00d3\x00f3 3467,346     o con acento
uplow \x00da\x00fa 234567,23456     u con acento
uplow \x00c0\x00e0 1235678,123568		a grave
uplow \x00c8\x00e8 234678,23468			e grave
uplow \x00cc\x00ec 345,348     i grave
uplow \x00d2\x00f2 2458,3468     o grave
uplow \x00d9\x00f9 2345678,234568		u grave
uplow \x00c2\x00e2 178,18				a con circunflejo
uplow \x00ca\x00ea 1578,158			e con circunflejo
uplow \x00ce\x00ee 2478,248			i con circunflejo
uplow \x00d4\x00f4 13578,1358			o con circunflejo
uplow \x00db\x00fb 13678,1368			u con circunflejo
uplow \x00c4\x00e4 34578,3458       a con diéresis
uplow \x00cb\x00eb 124678,12468			e con diéresis
uplow \x00cf\x00ef 1245678,258		i con diéresis
uplow \x00d6\x00f6 24678,2468         o con diéresis
uplow \x00dc\x00fc 125678,12568			u con diéresis
uplow \x00dd\x00fd 1567,2348     ye con acento agudo
uplow \x009F\x00FF 367,67     ye con diéresis

uplow \X00c6\X00e6 38,1348     ae
uplow \X0152\X0153 1468,1238     oe
uplow \x008C\x009C 1468,1238     oe
uplow \x00C3\x00E3 3567,168     a con tilde
uplow \x00D5\x00F5 12458,4567     o con tilde
uplow \x00D1\x00F1 124567,124568 letra eñe

punctuation , 2			coma
punctuation ; 23		punto y coma
punctuation : 25		dos puntos
punctuation - 36		guión
punctuation . 3		punto
punctuation ? 26		cerrar interrogación
punctuation ! 2357		cerrar admiración
punctuation \X0022 56 	comillas
punctuation \X201c 14568 	abrir comillas
punctuation \X201d 12348 	cerrar comillas
punctuation ( 1268		abre paréntesis
punctuation ) 3457		cierra paréntesis
punctuation ' 4			apóstrofo
punctuation \x00ab 238		comillas angulares izquierda
punctuation \x00bb 567		comillas angulares derecha
punctuation [ 2367		abre corchetes
punctuation ] 3568	 	cierra corchetes
punctuation { 46			abre llave
punctuation } 35			cierra llave

sign * 256						asterisco
sign \\ 123456						barra invertida
sign @ 5					arroba
sign % 456					por ciento
sign _ 6								subrayado
sign # 3456					signo de número
sign \x0060 58					acento grave
sign ^ 45					circunflejo
sign \X007E   57     #126 ~    tilde
sign \X007C 4568   # barra vertical
sign \X007F 7   # borrar
sign \x00a1 23578   # abrir admiración
sign \X00A6 478   # barra vertical cortada
sign \X00A7 167   # sección
sign \X00A8 268   # diéresis
sign \X00A9 23567   # copyright
sign \X00AC 257   # guión opcional
sign \X20AC 12358   # euros
sign \X00AD 2358   # soft hyphen
sign \X00AE 2368   # registrado
sign \X00AF 24568   # macron
sign \X00B1 12467   # más-menos
sign \X00B5 13468   # my
sign \X00B6 14567   # párrafo
sign \X00B7 14678   # punto centrado
sign \X00B9 237   # Super uno
sign \X00BA 5678   # ordinal masculino
sign \x00AA 23568  # ordinal femenino 
sign \X00BF 267   # abrir interrogación
sign \X00C5 12368   #*a mayúscula con círculo superescrito

sign \X00D0 13458   # letra eth mayúscula
sign \X00D7 1678   # multiplicado por
sign \X00D8 34567   # Alfa
sign \X00DE 123458   # Thorn
sign \X00DF 128   # Beta
sign \X00E5 15678   # a con círculo superescrito
sign \X00F0 235678   # letra eth
sign \X00F7 2578   # dividido por
sign \X00F8 457   # latin small letter o with stroke
sign \X00FE 1568   # thorn
sign \x00A8 268			diéresis

math + 235				más
math = 2356				igual
math \x00d7 1678					multiplicado por
math < 236				menor que
math > 356				mayor que
math / 3478						barra oblicua
math \x00F7 2578		dividido por

sign \x00a9 23567							copyright
sign \x00b0 8						grado
sign & 12346					ampersand
sign \x00a2 12678						centavo
sign \x00a4 2567						
sign \x00a3 2378						libra
sign \x00a7 167					sección
sign \x0024 123467						dólar
sign \x00a5 145678					yen
sign \x00b9 237						super 1
sign \x00b2 47					al cuadrado
sign \x00b3 568					al cubo
sign \x00bc 1467			un cuarto
sign \x00bd 468			un medio
sign \x00be 48		tres cuartos

sign \x0081 358		sin nombre
sign \x0082 37		por
sign \X201a 37		por
sign \X0083 1248		signo
sign \X0192 1248		signo
sign \X0084 78		signo
sign \X201e 78		signo
sign \X0085 1267		elipsis
sign \X2026 1267		elipsis
sign \X0086 28		sin nombre
sign \X2020 28		sin nombre
sign \X0087 23458		sin nombre
sign \X2021 23458		sin nombre
sign \X0088 458		sin nombre
sign \X02c6 23458		sin nombre
sign \X0089 45678		sin nombre
sign \X2030 45678		sin nombre
sign \X008a 1234568		sh mayúscula
sign \X0160 1234568		sh mayúscula
sign \X008b 1258		
sign \X2039 1258		
sign \X008d 357		sin nombre
sign \X008e 148		sin nombre
sign \X017d 148		sin nombre
sign \X008f 58		
sign \X0090 68		sin 	nombre
sign \X2018 4		apóstrofo
sign \X2019 4		apóstrofo
sign \X0095 1458		signo
sign \X2022 1458		signo
sign \X0096 368		guión
sign \X2013 368		guión
sign \X0097 3678		guión
sign \X2014 3678		guión
sign \X0098 134568		tilde
sign \X02dc 134568		tilde
sign \X0099 2467		marca registrada
sign \X2122 2467		marca registrada
sign \X009a 34568		signo
sign \X203a 34568		signo
sign \X0161 12567		sh
sign \X009d 25678		
sign \X009e 2568		
sign \X017e 2568		
sign \X009f 367		
sign \X0178 367		
sign \x00b4 467     acento agudo
sign \x00B8 135678     z con caron
