# liblouis: Czech 8-dot Computer Braille Table

#-index-name: Czech, computer
#-display-name: Czech computer braille
#
#+locale:cs
#+type:computer
#+grade:0
#+dots:8
#
#  Copyright (C) 2011, 2018 Jan Hegr <hegrjan@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/>.

# Based on the official Czech Braille Standard and Czech8.bwe (Window-Eyes Braille table)
# Implements basic math symbols described at:
# http://teiresias.muni.cz/czbraille8/?strana=norma

include digits8Dots.uti
include cs-letterDef8Dots.uti

sign \x0000 9
sign \x0001 178
sign \x0002 1278
sign \x0003 1478
sign \x0004 14578
sign \x0005 1578
sign \x0006 12478
sign \x0007 124578
sign \x0008 12578
space \t 9 # tab
sign \x000a 24578
sign \x000b 1378
sign \x000c 134568
space \n 13478
sign \x000e 134578
sign \x000f 13578
sign \x0010 123478
sign \x0011 1234578
sign \x0012 123578
sign \x0013 23478
sign \x0014 234578
sign \x0015 13678
sign \x0016 123678
sign \x0017 245678
sign \x0018 134678
sign \x0019 1345678
sign \x001a 135678
sign \x001b 24678
sign \x001c 125678
sign \x001d 1245678
sign \x001e 4578
sign \x001f 45678
space \s 0
punctuation ! 235
punctuation " 2356
sign # 34567
sign $ 2358
sign % 12348
sign & 23578
punctuation ' 4
punctuation ( 236
punctuation ) 356
sign * 35
math + 256
punctuation , 2
punctuation - 36
punctuation . 3
math / 12456
punctuation : 25
punctuation ; 23
math < 238
math = 235678
math > 567
punctuation ? 26
sign @ 124568
punctuation [ 2367
sign \\ 2368
punctuation ] 3568
sign ^ 457
sign _ 367
sign ` 478
punctuation { 23678
sign | 4568
punctuation } 35678
math ~ 57
sign \x007f 37
space \x00a0 a # Non-breaking space
sign \x00a4 24578
sign \x00a6 4568
sign \x00a7 3468
sign \x00a8 56
sign \x00a9 1478
sign \x00ab 348
math \x00ac 568 # not
sign \x00ad 368
sign \x00ae 145678
sign \x00b0 2348
math \x00b1 256-36 # plus-minus
sign \x00b4 3456
sign \x00b5 45-134
sign \x00b6 12345678
sign \x00b7 6
sign \x00b8 7
sign \x00bb 467
sign \x00c2 134678
sign \x00c4 34578
sign \x00c7 5678
sign \x00cb 14578
sign \x00ce 245678
uplow \x00d4\x00f4 12678,1268 # o with circumflex
sign \x00d6 24678
math \x00d7 3 # times
sign \x00dc 125678
sign \x00df 1278
sign \x00e2 135678
sign \x00e4 3458
sign \x00e7 568
sign \x00eb 15678
sign \x00ee 24568
sign \x00f6 2468
math \x00f7 25 # division
sign \x00fc 12568
sign \x0102 124578
sign \x0103 124568
sign \x0104 12478
sign \x0105 12578
sign \x0106 14678
sign \x0107 1468
sign \x0110 2357
sign \x0111 2378
sign \x0118 4567
sign \x0119 4578
uplow \x0139\x013a 4678,468 # l with acute
sign \x013a 468
uplow \x013d\x013e 1378,138 # l with caron
sign \x0141 2567
sign \x0142 2568
sign \x0143 134578
sign \x0144 13458
sign \x0150 13578
sign \x0151 13568
uplow \x0154\x0155 123578,12358 # r with acute
sign \x015a 124678
sign \x015b 123458
sign \x015e 23478
sign \x015f 23458
sign \x0162 234578
sign \x0163 234568
sign \x0170 13478
sign \x0171 13678
sign \x0179 3478
sign \x017a 3578
sign \x017b 123478
sign \x017c 123468
sign \x02c7 178
sign \x02d8 1578
sign \x02d9 5
sign \x02db 45678
sign \x02dd 23568
letter \x0391 45-17 # Alpha
letter \x0392 45-127 # Beta
letter \x0393 45-12457 # Gama
letter \x0394 45-1457 # Delta
letter \x0395 45-157 # Epsilon
letter \x0396 45-13567 # Zeta
letter \x0397 45-3457 # Eta
letter \x0398 45-1257 # Theta
letter \x0399 45-247 # Iota
letter \x039a 45-137 # Kappa
letter \x039b 45-1237 # Lambda
letter \x039c 45-1347 # Mu
letter \x039d 45-13457 # Nu
letter \x039e 45-13467 # Xi
letter \x039f 45-135 # Omicron
letter \x03a0 45-12347 # Pi
letter \x03a1 45-12357 # Rho
letter \x03a3 45-2347 # Sigma
letter \x03a4 45-23457 # Tau
letter \x03a5 45-134567 # Upsilon
letter \x03a6 45-1247 # Phi
letter \x03a7 45-147 # Chi
letter \x03a8 45-123467 # Psi
letter \x03a9 45-24567 # Omega
letter \x03b1 45-1 # alpha
letter \x03b2 45-12 # beta
letter \x03b3 45-1245 # gama
letter \x03b4 45-145 # delta
letter \x03b5 45-15 # epsilon
letter \x03b6 45-1356 # zeta
letter \x03b7 45-345 # eta
letter \x03b8 45-125 # theta
letter \x03b9 45-24 # iota
letter \x03ba 45-13 # kappa
letter \x03bb 45-123 # lambda
letter \x03bc 45-134 # mu
letter \x03bd 45-1345 # nu
letter \x03be 45-1346 # xi
letter \x03bf 45-135 # omicron
letter \x03c0 45-1234 # pi
letter \x03c1 45-1235 # rho
letter \x03c3 45-234 # sigma
letter \x03c4 45-2345 # tau
letter \x03c5 45-13456 # upsilon
letter \x03c6 45-124 # phi
letter \x03c7 45-14 # chi
letter \x03c8 45-12346 # psi
letter \x03c9 45-2456 # omega
sign \x2010 36 # hyphen
sign \x2011 36 # non-breaking hyphen
sign \x2012 36 # dash
sign \x2013 36 # dash
sign \x2014 36 # dash
sign \x2018 45
sign \x2019 46
sign \x201a 68
sign \x201c 2356
sign \x201d 2356
sign \x201e 378
sign \x2020 14568
sign \x2021 1234567
sign \x2022 58
sign \x2026 67
sign \x2030 12358 # per mille
sign \x2030 1345678
sign \x2039 278
sign \x203a 578
math \x2044 12456 # fraction slash
sign \x20ac 234568 # euro sign
sign \x20ae 358
sign \x2122 123456
sign \x2126 45-24567 # Ohm
sign \x2135 178 # alef symbol
sign \x2190 258 # left arrow
sign \x2191 67 # up arrow
sign \x2192 267 # right arrow
sign \x2193 38 # down arrow
sign \x2194 358-267 # left-right arrow
math \x2200 12368 # for all
math \x2201 56-147 # complement
math \x2203 1348 # there exists
math \x2204 48-1348 # there doesn't exist
math \x2205 13568 # empty set
sign \x2207 24568 # nabla
math \x2208 1578 # element of
math \x2209 48-1578 # not an element of
math \x2212 36 # minus sign
math \x2213 36-256 # minus or plus
math \x2215 12456 # division slash
math \x2216 56-36 # set minus
math \x2217 35 # asterisk operator
math \x221a 258 # square root
math \x221d 2345678 # proportional to
math \x221e 13458 # infinity
math \x2220 2468 # angle
math \x2223 4568 # divides
math \x2225 12345678 # parallel
math \x2226 48-12345678 # not parallel
math \x2227 678 # logical and
math \x2228 368 # logical or
math \x2229 56-256 # intersection
math \x222a 56-356 # union
math \x222b 3578 # integral
math \x2245 1235678 # approximately equal to
math \x224d 58-235678 # equivalent to
math \x2258 46-235678 # corresponds to
math \x2260 48-235678 # not equal to
math \x2264 238-235678 # less-than or equal to
math \x2265 567-235678 # greater-than or equal to
math \x226a 238-238 # much less-than
math \x226b 567-567 # much greater-than
math \x227a 46-238 # precedes
math \x227b 46-567 # succeeds
math \x2282 56-23578 # subset of
math \x2284 48-56-23578 # not a subset of
math \x2286 56-23578-235678 # subset of or equal to
math \x2288 48-56-23578-235678 # neither a subset of nor equal to
math \x22a8 23457 # true
math \x22ad 1247 # not true
math \x22bb 46-678 # xor
math \x22c5 3 # dot operator
math \x2312 46-2468 # arc
math \x2329 138 # left angle bracket
math \x232a 467 # right angle bracket
sign \x2554 4
sign \x2557 45
sign \x255a 6
sign \x255d 56
sign \x255f 23
sign \x2562 56
sign \x25cf 35 # black circle
math \x2715 578 # multiplication x
math \x27c2 34568 # perpendicular
math \x2a2f 578 # vector or cross product

undefined 26

include braille-patterns.cti
