#
#  Copyright (C) 2012 Bert Frees <bertfrees@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/>.

display \x0020 0
display a 1
display , 2
display b 12
display . 3
display k 13
display ; 23
display l 123
display " 4
display c 14
display i 24
display f 124
display | 34
display m 134
display s 234
display p 1234
display ! 5
display e 15
display : 25
display h 125
display * 35
display o 135
display + 235
display r 1235
display > 45
display d 145
display j 245
display g 1245
display ` 345
display n 1345
display t 2345
display q 12345
display ' 6
display 1 16
display ? 26
display 2 126
display - 36
display u 136
display ( 236
display v 1236
display $ 46
display 3 146
display 9 246
display 6 1246
display 0 346
display x 1346
display ~ 2346
display & 12346
display < 56
display 5 156
display / 256
display 8 1256
display ) 356
display z 1356
display = 2356
display { 12356
display _ 456
display 4 1456
display w 2456
display 7 12456
display # 3456
display y 13456
display } 23456
display % 123456


