###############################################################################
# BRLTTY - A background process providing access to the console screen (when in
#          text mode) for a blind person using a refreshable braille display.
#
# Copyright (C) 1995-2023 by The BRLTTY Developers.
#
# BRLTTY comes with ABSOLUTELY NO WARRANTY.
#
# This is free software, placed 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. Please see the file LICENSE-LGPL for details.
#
# Web Page: http://brltty.app/
#
# This software is maintained by Dave Mielke <dave@mielke.cc>.
###############################################################################

# This text subtable defines braille representations for the chess figures in
# terms of the letters that are used for them in the German language.

# See: http://en.wikipedia.org/wiki/Chess_symbols_in_Unicode

alias \u2654 K # ♔ [WHITE CHESS KING]
alias \u2655 D # ♕ [WHITE CHESS QUEEN]
alias \u2656 T # ♖ [WHITE CHESS ROOK]
alias \u2657 L # ♗ [WHITE CHESS BISHOP]
alias \u2658 S # ♘ [WHITE CHESS KNIGHT]
alias \u2659 B # ♙ [WHITE CHESS PAWN]
alias \u265A k # ♚ [BLACK CHESS KING]
alias \u265B d # ♛ [BLACK CHESS QUEEN]
alias \u265C t # ♜ [BLACK CHESS ROOK]
alias \u265D l # ♝ [BLACK CHESS BISHOP]
alias \u265E s # ♞ [BLACK CHESS KNIGHT]
alias \u265F b # ♟ [BLACK CHESS PAWN]
