# liblouis: Computer Spanish 8 dots Braille table
#
# -----------
#-index-name: Spanish, computer
#-display-name: Spanish computer braille
#
#+locale:es
#+type:computer
# -----------
#
#  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
# Also define ó (lowercase o acute) not to clash with the definition of 0 in original include.
digit 0 34678				cero
uplow \x00d3\x00f3 3467,346     o con acento
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 \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

noback sign \x25CF 256 black circle
