# LibLouis: Greek international braille - common symbols
#
# Copyright (C) 2019 Dave Mielke: <dave@mielke.cc>, [http://mielke.cc/]
# Copyright (C) 2019 Μαρια Γεωργακαράκου <mylarynx@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/>.

# uppercase letters
letter	\x0391	46-1	# Α Capital Alpha
letter	\x0392	46-12	# Β Capital Beta
letter	\x0393	46-1245	# Γ Capital Gamma
letter	\x0394	46-145	# Δ Capital Delta
letter	\x0395	46-15	# Ε Capital Epsilon
letter	\x0396	46-1356	# Ζ Capital Zeta
letter	\x0397	46-156	# Η Capital Eta
letter	\x0398	46-1456	# Θ Capital Theta
letter	\x0399	46-24	# Ι Capital Iota
letter	\x039A	46-13	# Κ Capital Kappa
letter	\x039B	46-123	# Λ Capital Lambda
letter	\x039C	46-134	# Μ Capital Mu
letter	\x039D	46-1345	# Ν Capital Nu
letter	\x039E	46-1346	# Ξ Capital Xi
letter	\x039F	46-135	# Ο Capital Omicron
letter	\x03A0	46-1234	# Π Capital Pi
letter	\x03A1	46-1235	# Ρ Capital Rho
letter	\x03A3	46-234	# Σ Capital Sigma
letter	\x03A4	46-2345	# Τ Capital Tau
letter	\x03A5	46-136	# Υ Capital Upsilon
letter	\x03A6	46-124	# Φ Capital Phi
letter	\x03A7	46-12346	# Χ Capital Chi
letter	\x03A8	46-13456	# Ψ Capital Psi
letter	\x03A9	46-2456	# Ω Capital Omega

# lowercase letters
letter	\x03B1	1	# α Small Alpha
letter	\x03B2	12	# β Small Beta
letter	\x03B3	1245	# γ Small Gamma
letter	\x03B4	145	# δ Small Delta
letter	\x03B5	15	# ε Small Epsilon
letter	\x03B6	1356	# ζ Small Zeta
letter	\x03B7	156	# η Small Eta
letter	\x03B8	1456	# θ Small Theta
letter	\x03B9	24	# ι Small Iota
letter	\x03BA	13	# κ Small Kappa
letter	\x03BB	123	# λ Small Lambda
letter	\x03BC	134	# μ Small Mu
letter	\x03BD	1345	# ν Small Nu
letter	\x03BE	1346	# ξ Small Xi
letter	\x03BF	135	# ο Small Omicron
letter	\x03C0	1234	# π Small Pi
letter	\x03C1	1235	# ρ Small Rho
letter	\x03C2	234	# ς Small Final Sigma
letter	\x03C3	234	# σ Small Sigma
letter	\x03C4	2345	# τ Small Tau
letter	\x03C5	136	# υ Small Upsilon
letter	\x03C6	124	# φ Small Phi
letter	\x03C7	12346	# χ Small Chi
letter	\x03C8	13456	# ψ Small Psi
letter	\x03C9	2456	# ω Small Omega

# letters no longer in use
letter	\x03DD	1236	# ϝ Small Digamma
letter	\x03DF	12345	# ϟ Small Koppa
letter	\x03E1	2346	# ϡ Small Sampi

# accents
sign	\x1FBF	356	# ᾿ Psili (smooth breathing)
sign	\x1FFE	125	# ῾ Dasia (rough breathing)
sign	\x0384	4	# ΄ Tonos (Acute)
sign	\x1FFD	4	# ´ Oxia (Acute)
sign	\x1FC0	5	# ῀ Perispomeni (Circumflex)
sign	\x1FEF	6	# ` Varia (Grave)
sign	\x037A	35	# ͺ Ypogegrammeni (subscript Iota)
sign	\x1FBE	35	# ι Prosgegrammeni (prescript Iota)
sign	\x00AF	456	# ¯ Macron

# symbols
sign	\x03D5	124	# ϕ Phi

# punctuation
punctuation	\x037E	26	# ; Question Mark
punctuation	\x0387	23	# · Ano Teleia (Semicolon)
punctuation	\x1FBD	3	# ᾽ Koronis (Apostrophe)

