diff --git a/Bindings/Caml/Makefile.in b/Bindings/Caml/Makefile.in index 4f0578722d7b6bc1b4bc2626533b7af7d6e39e7d..5355768dd5e4431ebfccd1a322df220c1e67fe35 100644 --- a/Bindings/Caml/Makefile.in +++ b/Bindings/Caml/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # @@ -39,7 +40,7 @@ OCAML_MISC = $(SRC_DIR)/META brlapi.mli brlapi.cmi OCAML_CLIBS = @OCAML_CLIBS@ -OCAML_DESTDIR = $(INSTALL_ROOT)$(exec_prefix)$(OCAMLLIB) +OCAML_DESTDIR = $(INSTALL_ROOT)$(OCAMLLIB) OCAML_PKGDIR = $(OCAML_DESTDIR)/$(OCAML_LIB) OCAML_STUBDIR = $(OCAML_DESTDIR)/stublibs OCAML_STUB = dll$(OCAML_LIB)_stubs.so diff --git a/Bindings/Caml/brlapi_stubs.c b/Bindings/Caml/brlapi_stubs.c index 4c94a28d1093a5c3f686cdbe52bcb4afb7e3b9cf..acb86dd486928dfa0a2b7fa9013111a20cd3ccb3 100644 --- a/Bindings/Caml/brlapi_stubs.c +++ b/Bindings/Caml/brlapi_stubs.c @@ -1,8 +1,8 @@ /* * libbrlapi - A library providing access to braille terminals for applications. * - * Copyright (C) 2005-2008 by - * Sébastien Hinderer + * Copyright (C) 2005-2009 by + * Sébastien Hinderer * Samuel Thibault * All rights reserved. * @@ -10,9 +10,8 @@ * * 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * @@ -419,7 +418,7 @@ CAMLprim value brlapiml_leaveRawMode(value handle, value unit) CAMLprim value brlapiml_sendRaw(value handle, value str) { CAMLparam2(handle, str); - ssize_t res; + int res; unsigned char packet[BRLAPI_MAXPACKETSIZE]; ssize_t i, size = MIN(sizeof(packet), caml_string_length(str)); for (i=0; i + * Copyright (C) 2002-2009 by + * Sébastien Hinderer * Samuel Thibault * All rights reserved. * @@ -10,9 +10,8 @@ * * 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * diff --git a/Bindings/Caml/main.mli b/Bindings/Caml/main.mli index c8b761bbd7554a0b06290308d68aa38cc03f128c..803718ddae3dbf31979d6078d12b70511941c2c6 100644 --- a/Bindings/Caml/main.mli +++ b/Bindings/Caml/main.mli @@ -1,8 +1,8 @@ (* * libbrlapi - A library providing access to braille terminals for applications. * - * Copyright (C) 2002-2008 by - * Sébastien Hinderer + * Copyright (C) 2002-2009 by + * Sébastien Hinderer * Samuel Thibault * All rights reserved. * @@ -10,9 +10,8 @@ * * 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * @@ -29,8 +28,8 @@ BRLAPI_RELEASE BRLAPI_MAJOR BRLAPI_MINOR BRLAPI_REVISION -Faire un fichier .in: @VAR@ est remplacé par la valeur de VAR -telle que définie dans configure.ac. +Faire un fichier .in: @VAR@ est remplacé par la valeur de VAR +telle que définie dans configure.ac. *) (* @@ -42,7 +41,7 @@ BRLAPI_SOCKETPATH BRLAPI_ETCDIR BRLAPI_AUTHKEYFILE BRLAPI_DEFAUTH -Idem que précédemmment +Idem que précédemmment C'est du ni * Sébastien Hinderer * @@ -9,9 +9,8 @@ * * 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * diff --git a/Bindings/Java/ConnectionSettings.java b/Bindings/Java/ConnectionSettings.java index a3a03d9afbff72551e39cac34e467f01dd1743d9..3271add5e4aaf440cc1b1335703fbc14a6bd01bf 100644 --- a/Bindings/Java/ConnectionSettings.java +++ b/Bindings/Java/ConnectionSettings.java @@ -1,7 +1,7 @@ /* * libbrlapi - A library providing access to braille terminals for applications. * - * Copyright (C) 2006-2008 by + * Copyright (C) 2006-2009 by * Samuel Thibault * Sébastien Hinderer * @@ -9,9 +9,8 @@ * * 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * diff --git a/Bindings/Java/DisplaySize.java b/Bindings/Java/DisplaySize.java index 622336651289699a8bafccf1d7c6f8c0af23fd54..b2005dd73049355990834033c18543634896f726 100644 --- a/Bindings/Java/DisplaySize.java +++ b/Bindings/Java/DisplaySize.java @@ -1,7 +1,7 @@ /* * libbrlapi - A library providing access to braille terminals for applications. * - * Copyright (C) 2006-2008 by + * Copyright (C) 2006-2009 by * Samuel Thibault * Sébastien Hinderer * @@ -9,9 +9,8 @@ * * 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * diff --git a/Bindings/Java/Error.java b/Bindings/Java/Error.java index eac3abab712aede0997c7a44d1521328b96b1303..d2eaa8f573d51505fb34c4d935787e4ddf6192c1 100644 --- a/Bindings/Java/Error.java +++ b/Bindings/Java/Error.java @@ -1,7 +1,7 @@ /* * libbrlapi - A library providing access to braille terminals for applications. * - * Copyright (C) 2006-2008 by + * Copyright (C) 2006-2009 by * Samuel Thibault * Sébastien Hinderer * @@ -9,9 +9,8 @@ * * 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * diff --git a/Bindings/Java/Exception.java b/Bindings/Java/Exception.java index e6f53e8a5559ee488f4e0dddf968a9b68cbdb02d..6eed1caf670da56d2cff5ff0866fd0d750621163 100644 --- a/Bindings/Java/Exception.java +++ b/Bindings/Java/Exception.java @@ -1,7 +1,7 @@ /* * libbrlapi - A library providing access to braille terminals for applications. * - * Copyright (C) 2006-2008 by + * Copyright (C) 2006-2009 by * Samuel Thibault * Sébastien Hinderer * @@ -9,9 +9,8 @@ * * 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * diff --git a/Bindings/Java/Key.java b/Bindings/Java/Key.java index 61df02713dfd40579cf65cf807bc1866a7d9c408..f005bf0597e2c2c9f6c56f23c8aed91eade787fb 100644 --- a/Bindings/Java/Key.java +++ b/Bindings/Java/Key.java @@ -1,7 +1,7 @@ /* * libbrlapi - A library providing access to braille terminals for applications. * - * Copyright (C) 2006-2008 by + * Copyright (C) 2006-2009 by * Samuel Thibault * Sébastien Hinderer * @@ -9,9 +9,8 @@ * * 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * diff --git a/Bindings/Java/Makefile.in b/Bindings/Java/Makefile.in index c7a4040ae844e18fa51d6192033fc9787f117130..77b5339864f52ededec5e6c57c367cdf779192c9 100644 --- a/Bindings/Java/Makefile.in +++ b/Bindings/Java/Makefile.in @@ -1,7 +1,7 @@ ############################################################################### # libbrlapi - A library providing access to braille terminals for applications. # -# Copyright (C) 2006-2008 by +# Copyright (C) 2006-2009 by # Samuel Thibault # Sébastien Hinderer # @@ -9,9 +9,8 @@ # # 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 COPYING-API for details. +# 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://mielke.cc/brltty/ # @@ -27,14 +26,14 @@ JAR = @JAR@ JAVA_JAR = @JAVA_JAR@ JAVA_JAR_DIR = @JAVA_JAR_DIR@ -JAVA_JAR_DESTDIR = $(INSTALL_ROOT)$(prefix) +JAVA_JAR_DESTDIR = $(INSTALL_ROOT) JAVA_JNI = @JAVA_JNI@ JAVA_JNI_DIR = @JAVA_JNI_DIR@ JAVA_JNI_HDR = @JAVA_JNI_HDR@ JAVA_JNI_INC = @JAVA_JNI_INC@ JAVA_JNI_FLAGS = @JAVA_JNI_FLAGS@ -JAVA_JNI_DESTDIR = $(INSTALL_ROOT)$(exec_prefix) +JAVA_JNI_DESTDIR = $(INSTALL_ROOT) all: jar jni doc diff --git a/Bindings/Java/Native.java b/Bindings/Java/Native.java index 96e0ff74fcb160221069dde86219f49fbfd4315f..2aebba82eb5f12515174957323cf188358d4749d 100644 --- a/Bindings/Java/Native.java +++ b/Bindings/Java/Native.java @@ -1,7 +1,7 @@ /* * libbrlapi - A library providing access to braille terminals for applications. * - * Copyright (C) 2006-2008 by + * Copyright (C) 2006-2009 by * Samuel Thibault * Sébastien Hinderer * @@ -9,9 +9,8 @@ * * 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * diff --git a/Bindings/Java/Test.java b/Bindings/Java/Test.java index 4f58a3246d4ee016eb97c55ce59e8a33eb69966f..64b9895e73b56ada712071feba298eee117d24e0 100644 --- a/Bindings/Java/Test.java +++ b/Bindings/Java/Test.java @@ -1,7 +1,7 @@ /* * libbrlapi - A library providing access to braille terminals for applications. * - * Copyright (C) 2006-2008 by + * Copyright (C) 2006-2009 by * Samuel Thibault * Sébastien Hinderer * @@ -9,9 +9,8 @@ * * 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * diff --git a/Bindings/Java/WriteArguments.java b/Bindings/Java/WriteArguments.java index 541823c657f06cc596b50019f9b9a336a04a29a5..9bf5aa4e3c4ef8168f3b396f3e687bbd8cb581c8 100644 --- a/Bindings/Java/WriteArguments.java +++ b/Bindings/Java/WriteArguments.java @@ -1,7 +1,7 @@ /* * libbrlapi - A library providing access to braille terminals for applications. * - * Copyright (C) 2006-2008 by + * Copyright (C) 2006-2009 by * Samuel Thibault * Sébastien Hinderer * @@ -9,9 +9,8 @@ * * 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * diff --git a/Bindings/Java/apitest b/Bindings/Java/apitest index e865b5156d6ede50c3f42fc57874eede55f3ca99..e5546d7ac0cc7985aabe7890bfcbffca2ccdd41b 100755 --- a/Bindings/Java/apitest +++ b/Bindings/Java/apitest @@ -2,7 +2,7 @@ ############################################################################### # libbrlapi - A library providing access to braille terminals for applications. # -# Copyright (C) 2006-2008 by +# Copyright (C) 2006-2009 by # Samuel Thibault # Sébastien Hinderer # @@ -10,9 +10,8 @@ # # 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 COPYING-API for details. +# 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://mielke.cc/brltty/ # diff --git a/Bindings/Java/bindings.c b/Bindings/Java/bindings.c index fe04df5396069deda22e75fc5d5d24ff2b132240..116dc06fa2ca94c728eaea415f0264d5334a6376 100644 --- a/Bindings/Java/bindings.c +++ b/Bindings/Java/bindings.c @@ -1,17 +1,16 @@ /* * libbrlapi - A library providing access to braille terminals for applications. * - * Copyright (C) 2006-2008 by + * Copyright (C) 2006-2009 by * Samuel Thibault - * Sébastien Hinderer + * Sébastien Hinderer * * libbrlapi 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * diff --git a/Bindings/Java/bindings.m4 b/Bindings/Java/bindings.m4 index ccece0a01daf44fb58283c0648ddd79e740e2606..64dd18c922b5120a8d01ea20894c667c7abd8d84 100644 --- a/Bindings/Java/bindings.m4 +++ b/Bindings/Java/bindings.m4 @@ -1,7 +1,7 @@ ############################################################################### # libbrlapi - A library providing access to braille terminals for applications. # -# Copyright (C) 2006-2008 by +# Copyright (C) 2006-2009 by # Samuel Thibault # Sébastien Hinderer # @@ -9,9 +9,8 @@ # # 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 COPYING-API for details. +# 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://mielke.cc/brltty/ # diff --git a/Bindings/Java/constants.awk b/Bindings/Java/constants.awk index 2d57e442ddd7919460bed469706f8cac4cc749a3..da686fe05a3e5cd2bd4abfee70ae8811e045767f 100644 --- a/Bindings/Java/constants.awk +++ b/Bindings/Java/constants.awk @@ -1,7 +1,7 @@ ############################################################################### # libbrlapi - A library providing access to braille terminals for applications. # -# Copyright (C) 2006-2008 by +# Copyright (C) 2006-2009 by # Samuel Thibault # Sébastien Hinderer # @@ -9,9 +9,8 @@ # # 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 COPYING-API for details. +# 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://mielke.cc/brltty/ # diff --git a/Bindings/Lisp/Makefile.in b/Bindings/Lisp/Makefile.in index 149b712e23b5b43f9dd39e93a91e522bbdf51fe0..543f5a3f325f20b9cd37fc65c6a4a0bae073eced 100644 --- a/Bindings/Lisp/Makefile.in +++ b/Bindings/Lisp/Makefile.in @@ -1,15 +1,14 @@ ############################################################################### # libbrlapi - A library providing access to braille terminals for applications. # -# Copyright (C) 2006-2008 by Mario Lang +# Copyright (C) 2006-2009 by Mario Lang # # libbrlapi 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 COPYING-API for details. +# 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://mielke.cc/brltty/ # diff --git a/Bindings/Lisp/brlapi.asd b/Bindings/Lisp/brlapi.asd index 131e320d63abdd4accf7aecafdd5b78d0b6ea955..6b8c4ef83c52a97101c8d5799af7534e37e53141 100644 --- a/Bindings/Lisp/brlapi.asd +++ b/Bindings/Lisp/brlapi.asd @@ -1,15 +1,14 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; libbrlapi - A library providing access to braille terminals for applications. ; -; Copyright (C) 2006-2008 by Mario Lang +; Copyright (C) 2006-2009 by Mario Lang ; ; libbrlapi 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 COPYING-API for details. +; 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://mielke.cc/brltty/ ; diff --git a/Bindings/Lisp/brlapi.lisp b/Bindings/Lisp/brlapi.lisp index 2662b49624cffc6de859ca5c21b565419ed8bed7..630257bb0f73c62a1d2810d04ffe1bb774429704 100644 --- a/Bindings/Lisp/brlapi.lisp +++ b/Bindings/Lisp/brlapi.lisp @@ -1,15 +1,14 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; libbrlapi - A library providing access to braille terminals for applications. ; -; Copyright (C) 2006-2008 by Mario Lang +; Copyright (C) 2006-2009 by Mario Lang ; ; libbrlapi 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 COPYING-API for details. +; 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://mielke.cc/brltty/ ; @@ -119,7 +118,7 @@ Return a DISPLAY object which can further be used to interact with BRLTTY." (defmethod driver-name ((obj display)) "Return the currently used driver name." - (with-foreign-pointer-as-string (str 64 str-size) + (with-foreign-pointer-as-string ((str str-size) 64) (foreign-funcall "brlapi__getDriverName" :pointer (display-handle obj) :string str :int str-size brlapi-code))) diff --git a/Bindings/Python/Makefile.in b/Bindings/Python/Makefile.in index d24e87856e255fecaafd488d039bf417e64b8073..2230cb1938b91a1e5bc2ffe33ea14c78c66c78a2 100644 --- a/Bindings/Python/Makefile.in +++ b/Bindings/Python/Makefile.in @@ -1,7 +1,7 @@ ############################################################################### # libbrlapi - A library providing access to braille terminals for applications. # -# Copyright (C) 2005-2008 by +# Copyright (C) 2005-2009 by # Alexis Robert # Samuel Thibault # @@ -9,9 +9,8 @@ # # 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 COPYING-API for details. +# 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://mielke.cc/brltty/ # @@ -31,7 +30,7 @@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYREXC = @PYREXC@ PYREXC_CFLAGS = @PYREXC_CFLAGS@ -PYTHON_DESTDIR = $(INSTALL_ROOT)$(exec_prefix) +PYTHON_DESTDIR = $(INSTALL_ROOT) PYTHON_MODULE = $(API_NAME) PYTHON_API = $(PYTHON_MODULE).$(LIB_EXT) @@ -42,6 +41,7 @@ $(PYTHON_API): brlapi.auto.c $(API_HDRS) brlapi set -- --quiet build --build-temp .; \ [ "@host_os@" != "mingw32" ] || set -- "$${@}" --compiler mingw32; \ $(PYTHON) ./setup.py "$${@}" + [ "@host_os@" != "mingw32" ] || $(PYTHON) ./setup.py --quiet bdist_wininst --skip-build brlapi.auto.c: $(SRC_DIR)/brlapi.pyx $(SRC_DIR)/c_brlapi.pxd constants.auto.pyx $(PYREXC) -I. -o $@ $(SRC_DIR)/brlapi.pyx diff --git a/Bindings/Python/bindings.c b/Bindings/Python/bindings.c index 71b47fd74911b4cd0b5e0c40ee813d2528aa5f41..caa31895d85fb7a4bed239d3e1d6fbec938387ca 100644 --- a/Bindings/Python/bindings.c +++ b/Bindings/Python/bindings.c @@ -1,7 +1,7 @@ /* * libbrlapi - A library providing access to braille terminals for applications. * - * Copyright (C) 2005-2008 by + * Copyright (C) 2005-2009 by * Alexis Robert * Samuel Thibault * @@ -9,9 +9,8 @@ * * 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * diff --git a/Bindings/Python/bindings.h b/Bindings/Python/bindings.h index b44d20e653d74435641cae48d02d6c2a3b7e2b0e..eeb10fdbf7622ec80e4d4a937ed3adada461cd29 100644 --- a/Bindings/Python/bindings.h +++ b/Bindings/Python/bindings.h @@ -1,7 +1,7 @@ /* * libbrlapi - A library providing access to braille terminals for applications. * - * Copyright (C) 2005-2008 by + * Copyright (C) 2005-2009 by * Alexis Robert * Samuel Thibault * @@ -9,9 +9,8 @@ * * 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * diff --git a/Bindings/Python/bindings.m4 b/Bindings/Python/bindings.m4 index 9568c4dc59d075ad74e93cee51c5377851c7361b..bf0136b128c6d0f954af921ae8cd1214448f8c4a 100644 --- a/Bindings/Python/bindings.m4 +++ b/Bindings/Python/bindings.m4 @@ -1,7 +1,7 @@ ############################################################################### # libbrlapi - A library providing access to braille terminals for applications. # -# Copyright (C) 2005-2008 by +# Copyright (C) 2005-2009 by # Alexis Robert # Samuel Thibault # @@ -9,9 +9,8 @@ # # 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 COPYING-API for details. +# 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://mielke.cc/brltty/ # diff --git a/Bindings/Python/brlapi.pyx b/Bindings/Python/brlapi.pyx index 8850fc8212f25070219c9586a8416161d08b7fe2..477a31b8671a4164100b183678338ef1166e5646 100644 --- a/Bindings/Python/brlapi.pyx +++ b/Bindings/Python/brlapi.pyx @@ -8,26 +8,37 @@ This documentation is only a python helper, you should also read C manual pages. Example : import brlapi import errno +import Xlib.keysymdef.miscellany try: b = brlapi.Connection() b.enterTtyMode() b.ignoreKeys(brlapi.rangeType_all,[0]) + + # Accept the home, window up and window down braille commands b.acceptKeys(brlapi.rangeType_command,[brlapi.KEY_TYPE_CMD|brlapi.KEY_CMD_HOME, brlapi.KEY_TYPE_CMD|brlapi.KEY_CMD_WINUP, brlapi.KEY_TYPE_CMD|brlapi.KEY_CMD_WINDN]) - b.writeText("Press home or winup/dn to continue ... ¤") + + # Accept the tab key + b.acceptKeys(brlapi.rangeType_key,[brlapi.KEY_TYPE_SYM|Xlib.keysymdef.miscellany.XK_Tab]) + + b.writeText("Press home, winup/dn or tab to continue ... ¤") key = b.readKey() + k = b.expandKeyCode(key) b.writeText("Key %ld (%x %x %x %x) !" % (key, k["type"], k["command"], k["argument"], k["flags"])) b.writeText(None,1) b.readKey() + underline = chr(brlapi.DOT7 + brlapi.DOT8) # Note: center() can take two arguments only starting from python 2.4 b.write( regionBegin = 1, regionSize = 40, - text = u"Press any key to exit ¤ ", + text = u"Press any key to exit ¤ ", orMask = "".center(21,underline) + "".center(19,chr(0))) + b.acceptKeys(brlapi.rangeType_all,[0]) b.readKey() + b.leaveTtyMode() except brlapi.ConnectionError, e: @@ -47,7 +58,7 @@ except brlapi.ConnectionError, e: ############################################################################### # libbrlapi - A library providing access to braille terminals for applications. # -# Copyright (C) 2005-2008 by +# Copyright (C) 2005-2009 by # Alexis Robert # Samuel Thibault # @@ -55,9 +66,8 @@ except brlapi.ConnectionError, e: # # 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 COPYING-API for details. +# 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://mielke.cc/brltty/ # @@ -67,63 +77,41 @@ except brlapi.ConnectionError, e: cimport c_brlapi include "constants.auto.pyx" -cdef class OperationError: +class OperationError(Exception): """Error while performing some operation""" - - cdef c_brlapi.brlapi_error_t error - def __init__(self): - self.error = c_brlapi.brlapi_error - - property brlerrno: - """Braille error""" - def __get__(self): - return self.error.brlerrno - - property libcerrno: - """C library error""" - def __get__(self): - return self.error.libcerrno - - property gaierrno: - """Getaddrinfo error""" - def __get__(self): - return self.error.gaierrno - - property errfun: - """Function in which error occurred""" - def __get__(self): - return self.error.errfun + self.brlerrno = c_brlapi.brlapi_error.brlerrno + self.libcerrno = c_brlapi.brlapi_error.libcerrno + self.gaierrno = c_brlapi.brlapi_error.gaierrno + self.errfun = c_brlapi.brlapi_error.errfun def __str__(self): - return c_brlapi.brlapi_strerror(&self.error) - -cdef class ConnectionError(OperationError): + cdef c_brlapi.brlapi_error_t error + error.brlerrno = self.brlerrno + error.libcerrno = self.libcerrno + error.gaierrno = self.gaierrno + str = self.errfun + error.errfun = str + return c_brlapi.brlapi_strerror(&error) + +class ConnectionError(OperationError): """Error while connecting to BrlTTY""" - cdef c_brlapi.brlapi_connectionSettings_t settings - def __init__(self, host, auth): OperationError.__init__(self) - self.settings.host = c_brlapi.strdup(host) - self.settings.auth = c_brlapi.strdup(auth) - - def __del__(self): - c_brlapi.free(self.settings.host) - c_brlapi.free(self.settings.auth) + self.host = host + self.auth = auth def __str__(self): - return "couldn't connect to %s with key %s: %s" % (self.settings.host,self.settings.auth,c_brlapi.brlapi_strerror(&self.error)) + return "couldn't connect to %s with key %s: %s" % (self.host,self.auth,OperationError.__str__(self)) - property host: + def host(self): """Host of BRLTTY server""" - def __get__(self): - return self.settings.host + return self.settings.host - property auth: + def auth(self): """Authentication method used""" - def __get__(self): - return self.settings.auth + return self.settings.auth cdef class WriteStruct: """Structure containing arguments to be given to Connection.write() @@ -474,6 +462,10 @@ cdef class Connection: cdef int retval cdef char *c_dots cdef unsigned char *c_udots + (x, y) = self.displaySize + dispSize = x * y + if (len(dots) < dispSize): + dots = dots + "".center(dispSize - len(dots), '\0') c_dots = dots c_udots = c_dots c_brlapi.Py_BEGIN_ALLOW_THREADS diff --git a/Bindings/Python/c_brlapi.pxd b/Bindings/Python/c_brlapi.pxd index ea0fbf0a3165bca2b46e27c690e32a2d79dcee96..50dec1b0ca1c6c9280a6bc459dded359d8a6e9f7 100644 --- a/Bindings/Python/c_brlapi.pxd +++ b/Bindings/Python/c_brlapi.pxd @@ -1,7 +1,7 @@ ############################################################################### # libbrlapi - A library providing access to braille terminals for applications. # -# Copyright (C) 2005-2008 by +# Copyright (C) 2005-2009 by # Alexis Robert # Samuel Thibault # @@ -9,9 +9,8 @@ # # 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 COPYING-API for details. +# 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://mielke.cc/brltty/ # diff --git a/Bindings/Python/constants.awk b/Bindings/Python/constants.awk index 088760d5c51129afee8bf723b44fd0b13ad2d54d..12acd917439e78d77f84a7c0f44b3aea0cb991f3 100644 --- a/Bindings/Python/constants.awk +++ b/Bindings/Python/constants.awk @@ -1,7 +1,7 @@ ############################################################################### # libbrlapi - A library providing access to braille terminals for applications. # -# Copyright (C) 2005-2008 by +# Copyright (C) 2005-2009 by # Alexis Robert # Samuel Thibault # @@ -9,9 +9,8 @@ # # 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 COPYING-API for details. +# 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://mielke.cc/brltty/ # diff --git a/Bindings/Python/mkdoc.py b/Bindings/Python/mkdoc.py index 22f69344d5f6379386b3063aaac0e62dc029020a..0f5de69b0eaf64b754db17d73d5fd35487bb9cd6 100644 --- a/Bindings/Python/mkdoc.py +++ b/Bindings/Python/mkdoc.py @@ -1,7 +1,7 @@ ############################################################################### # libbrlapi - A library providing access to braille terminals for applications. # -# Copyright (C) 2005-2008 by +# Copyright (C) 2005-2009 by # Alexis Robert # Samuel Thibault # @@ -9,9 +9,8 @@ # # 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 COPYING-API for details. +# 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://mielke.cc/brltty/ # diff --git a/Bindings/Python/setup.py.in b/Bindings/Python/setup.py.in index 301ab8b3a99d68b7c45d9e96e444c563475f86bf..a2051c572f871f34ad5688e4e9dc3d4fc1ed8b55 100644 --- a/Bindings/Python/setup.py.in +++ b/Bindings/Python/setup.py.in @@ -1,7 +1,7 @@ ############################################################################### # libbrlapi - A library providing access to braille terminals for applications. # -# Copyright (C) 2005-2008 by +# Copyright (C) 2005-2009 by # Alexis Robert # Samuel Thibault # @@ -9,9 +9,8 @@ # # 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 COPYING-API for details. +# 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://mielke.cc/brltty/ # diff --git a/Bindings/Tcl/Makefile.in b/Bindings/Tcl/Makefile.in index 23eb186a8fc8ea52626043dbffc9adf82954fd85..93dbc82f494b70b124bc0bfc87778ee9824d3991 100644 --- a/Bindings/Tcl/Makefile.in +++ b/Bindings/Tcl/Makefile.in @@ -1,15 +1,14 @@ ############################################################################### # libbrlapi - A library providing access to braille terminals for applications. # -# Copyright (C) 2006-2008 by Dave Mielke +# Copyright (C) 2006-2009 by Dave Mielke # # libbrlapi 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 COPYING-API for details. +# 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://mielke.cc/brltty/ # @@ -22,8 +21,10 @@ TCL_OK = @TCL_OK@ TCLSH = @TCLSH@ TCL_CPPFLAGS = @TCL_CPPFLAGS@ TCL_LIBS = @TCL_LIBS@ -TCL_DESTDIR = $(INSTALL_ROOT)$(exec_prefix) +TCL_DIR = @TCL_DIR@ +TCL_DESTDIR = $(INSTALL_ROOT) +TCL_PKG = $(TCL_DIR)/$(API_NAME)-$(API_RELEASE) TCL_API = $(LIB_PFX)$(API_NAME)_tcl.$(LIB_EXT) all: $(TCL_API) @@ -34,12 +35,19 @@ $(TCL_API): bindings.$O $(API_NAME) bindings.$O: $(CC) $(TCL_CPPFLAGS) $(LIBCFLAGS) -o $@ -c $(SRC_DIR)/bindings.c +mkindex: + echo >$@ 'pkg_mkIndex $(TCL_DESTDIR)$(TCL_PKG) $(TCL_API)' + clean:: - -rm -f $(TCL_API) + -rm -f $(TCL_API) mkindex -install: all - $(TCLSH) $(SRC_DIR)/pkgutil -root "$(TCL_DESTDIR)" install $(API_NAME) $(API_RELEASE) $(TCL_API) +install: all mkindex + $(INSTALL_DIRECTORY) $(TCL_DESTDIR)$(TCL_PKG) + $(INSTALL_PROGRAM) $(TCL_API) $(TCL_DESTDIR)$(TCL_PKG) + $(TCLSH) ./mkindex uninstall: - -$(TCLSH) $(SRC_DIR)/pkgutil -root "$(TCL_DESTDIR)" uninstall $(API_NAME) $(API_RELEASE) + -rm -f $(TCL_DESTDIR)$(TCL_PKG)/$(TCL_API) + -rm -f $(TCL_DESTDIR)$(TCL_PKG)/pkgIndex.tcl + -rmdir $(TCL_DESTDIR)$(TCL_PKG) diff --git a/Bindings/Tcl/apitest b/Bindings/Tcl/apitest index 5b7f1c2c79bf2aa525b3498fabcb77332f638130..6a1358b10f84d52ad7d9dee0562cc7aa65df10ba 100755 --- a/Bindings/Tcl/apitest +++ b/Bindings/Tcl/apitest @@ -2,15 +2,14 @@ ############################################################################### # libbrlapi - A library providing access to braille terminals for applications. # -# Copyright (C) 2006-2008 by Dave Mielke +# Copyright (C) 2006-2009 by Dave Mielke # # libbrlapi 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 COPYING-API for details. +# 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://mielke.cc/brltty/ # diff --git a/Bindings/Tcl/apitest.tcl b/Bindings/Tcl/apitest.tcl index 6b89a2fb1914d8c8a9ed38757be30f145a7672b2..387a0592a677821bb2d045cd58cade90b928b677 100755 --- a/Bindings/Tcl/apitest.tcl +++ b/Bindings/Tcl/apitest.tcl @@ -2,15 +2,14 @@ ############################################################################### # libbrlapi - A library providing access to braille terminals for applications. # -# Copyright (C) 2006-2008 by Dave Mielke +# Copyright (C) 2006-2009 by Dave Mielke # # libbrlapi 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 COPYING-API for details. +# 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://mielke.cc/brltty/ # diff --git a/Bindings/Tcl/bindings.c b/Bindings/Tcl/bindings.c index 73c88bedf0ec0a9a34d9948b5b09d50375403ba1..1d4a6495c9a2a3011511d0613470facb7c5400ff 100644 --- a/Bindings/Tcl/bindings.c +++ b/Bindings/Tcl/bindings.c @@ -1,15 +1,14 @@ /* * libbrlapi - A library providing access to braille terminals for applications. * - * Copyright (C) 2006-2008 by Dave Mielke + * Copyright (C) 2006-2009 by Dave Mielke * * libbrlapi 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * @@ -21,7 +20,7 @@ #include #include -#include "iso_11548-1.h" +#include "brldots.h" #define BRLAPI_NO_DEPRECATED #define BRLAPI_NO_SINGLE_SESSION diff --git a/Bindings/Tcl/bindings.m4 b/Bindings/Tcl/bindings.m4 index b8378e1054eb953fdb8497b676916d47b41d68e6..ee90f0f27f860678258c531f993d7b2ac37dfa37 100644 --- a/Bindings/Tcl/bindings.m4 +++ b/Bindings/Tcl/bindings.m4 @@ -1,15 +1,14 @@ ############################################################################### # libbrlapi - A library providing access to braille terminals for applications. # -# Copyright (C) 2006-2008 by Dave Mielke +# Copyright (C) 2006-2009 by Dave Mielke # # libbrlapi 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 COPYING-API for details. +# 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://mielke.cc/brltty/ # @@ -78,6 +77,23 @@ fi AC_PATH_PROGS([TCLSH], [tclsh${TCL_VERSION} tclsh], [TCLSH_NOT_FOUND_BY_CONFIGURE]) } +TCL_DIR="" +test -z "${TCL_PACKAGE_PATH}" || { + for directory in ${TCL_PACKAGE_PATH} + do + test `expr "${directory}" : '.*/lib'` -eq 0 || { + TCL_DIR="${directory}" + break + } + done +} + +test -n "${TCL_DIR}" || { + AC_MSG_WARN([Tcl packages directory not found]) + TCL_DIR="TCL_PACKAGES_DIRECTORY_NOT_FOUND_BY_CONFIGURE" +} +AC_SUBST([TCL_DIR]) + AC_SUBST([TCL_OK]) AC_SUBST([TCL_CPPFLAGS]) AC_SUBST([TCL_LIBS]) diff --git a/Bindings/Tcl/pkgutil b/Bindings/Tcl/pkgutil deleted file mode 100644 index d09cbc13569ce34909a758964d0eca713f91444c..0000000000000000000000000000000000000000 --- a/Bindings/Tcl/pkgutil +++ /dev/null @@ -1,124 +0,0 @@ -############################################################################### -# libbrlapi - A library providing access to braille terminals for applications. -# -# Copyright (C) 2006-2008 by Dave Mielke -# -# libbrlapi 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 COPYING-API for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -source [file join [file dirname $argv0] prologue.tcl] - -proc getPackageDirectory {} { - set rootEnd [expr {[set rootCount [llength [file split [set rootPath [file normalize /]]]]] - 1}] - - foreach pathVariable {tcl_pkgPath auto_path} { - global $pathVariable - if {[info exists $pathVariable]} { - foreach directory [set $pathVariable] { - set count [llength [set components [file split [file normalize $directory]]]] - if {($count <= $rootEnd) || ![string equal $rootPath [eval file join [lrange $components 0 $rootEnd]]]} { - continue - } - set directory [eval file join / [lrange $components $rootCount end]] - - if {[lsearch -regexp [file split $directory] {^lib(?:64)?$}] >= 0} { - global optionValues packageName packageVersion - return [file join "$optionValues(root)$directory" "$packageName-$packageVersion"] - } - } - } - } - - writeProgramMessage "platform-dependent packages directory not defined." - exit 3 -} - -proc makeIndex {} { - global optionValues packageDirectory packageName packageVersion packageFile - set index [open [file join $packageDirectory "pkgIndex.tcl"] {WRONLY CREAT TRUNC}] - - set template [open [info script] {RDONLY}] - set state 0 - while {[gets $template line] >= 0} { - if {[regexp {^#{2,} *$} $line]} { - incr state - } elseif {![regexp {^#} $line]} { - break - } - - if {$state > 0} { - puts $index $line - } - - if {$state > 1} { - break - } - } - puts $index "" - close $template; unset template - - if {[string equal [file extension $packageFile] [info sharedlibextension]]} { - set command "load" - } else { - set command "source" - } - puts $index "package ifneeded [string totitle $packageName] $packageVersion \[list $command \[file join \$dir $packageFile\]\]" - close $index; unset index -} - -processProgramOptions optionValues { - {root string: "the install root on the build system"} -} - -switch -exact -- [set function [nextArgument "function"]] { - install { - set packageName [nextArgument "package name"] - set packageVersion [nextArgument "package version"] - set packageFile [nextArgument "package file name"] - noMoreArguments - set packageDirectory [getPackageDirectory] - - if {[catch [list file mkdir $packageDirectory] response] != 0} { - writeProgramMessage $response - exit 4 - } - - if {[catch [list file copy -force -- $packageFile $packageDirectory] response] != 0} { - writeProgramMessage $response - exit 5 - } - - if {[catch [list makeIndex] response] != 0} { - writeProgramMessage $response - exit 6 - } - } - - uninstall { - set packageName [nextArgument "package name"] - set packageVersion [nextArgument "package version"] - noMoreArguments - set packageDirectory [getPackageDirectory] - - if {[catch [list file delete -force -- $packageDirectory] response] != 0} { - writeProgramMessage $response - exit 9 - } - } - - default { - syntaxError "unknown function: $function" - } -} - -exit 0 diff --git a/Bindings/Tcl/prologue.tcl b/Bindings/Tcl/prologue.tcl index 4d62975456234e95980e3aaac4d99094420daf12..ea949024fa0f2d71af8dadf782fadf616d17e940 100644 --- a/Bindings/Tcl/prologue.tcl +++ b/Bindings/Tcl/prologue.tcl @@ -1,15 +1,14 @@ ############################################################################### # libbrlapi - A library providing access to braille terminals for applications. # -# Copyright (C) 2006-2008 by Dave Mielke +# Copyright (C) 2006-2009 by Dave Mielke # # libbrlapi 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 COPYING-API for details. +# 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://mielke.cc/brltty/ # diff --git a/Bindings/Tcl/reldeps.mk b/Bindings/Tcl/reldeps.mk index 018db917cb162f70cfc7ef5ced276a12ddf0d89f..a9aec9a1d6cea9f1ada51a51e30a6131de70fdd9 100644 --- a/Bindings/Tcl/reldeps.mk +++ b/Bindings/Tcl/reldeps.mk @@ -1,6 +1,6 @@ # Dependencies for bindings.$O: bindings.$O: $(SRC_DIR)/bindings.c -bindings.$O: $(SRC_TOP)Programs/iso_11548-1.h +bindings.$O: $(SRC_TOP)Programs/brldots.h bindings.$O: $(BLD_TOP)Programs/brlapi.h bindings.$O: $(BLD_TOP)Programs/brlapi_constants.h bindings.$O: $(SRC_TOP)Programs/brlapi_keycodes.h diff --git a/Bootdisks/bp2cf b/Bootdisks/bp2cf index d2625d599e55b0d4b6a63a175b0a6e39b415e76e..c74a9118f0690191b36af6e56bfe91b52393a6be 100755 --- a/Bootdisks/bp2cf +++ b/Bootdisks/bp2cf @@ -3,13 +3,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/Bootdisks/rhmkiso b/Bootdisks/rhmkiso index adc7776c63ae704e8222bdd98a88b5dd8b378b82..c71d09dcb501fb272471c4952d8afbf25c77d417 100755 --- a/Bootdisks/rhmkiso +++ b/Bootdisks/rhmkiso @@ -3,13 +3,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # @@ -51,7 +52,7 @@ check_ext2() { dd bs="${initrdBlockSize}" count="${initrdPadBlocks}" if="/dev/zero" of="${initrdImage}" seek="${initrdImageBlocks}" e2fsck -y -f "${initrdImage}" && resize2fs "${initrdImage}" || { newImage="${temporaryDirectory}/new.${initrdType}" - cp -a -- "${initrdImage}" "${newImage}" + cp -RpPd -- "${initrdImage}" "${newImage}" mke2fs -q -b "${initrdBlockSize}" -F "${newImage}" newRoot="${temporaryDirectory}/new" @@ -62,7 +63,7 @@ check_ext2() { "mount_${initrdType}" "${initrdRoot}" "${initrdImage}" initrdMounted=true - cp -a -- "${initrdRoot}/." "${newRoot}" + cp -RpPd -- "${initrdRoot}/." "${newRoot}" initrdMounted=false "unmount_${initrdType}" "${initrdRoot}" "${initrdImage}" @@ -100,7 +101,7 @@ originalImage="boot.iso" modifiedImage="brltty.iso" brlttyPattern="brltty-*" brailleDrivers="all" -textTable="nabcc" +textTable="en-nabcc" invokeShell=false showUsage() { @@ -111,7 +112,7 @@ The following options are supported: -o file The modified (output) image (default: ${modifiedImage}). -a file The BRLTTY archive (default: ${brlttyPattern}). -b driver,... The braille driver(s) to include (default: ${brailleDrivers}). --t file The text translation table to build in (default: ${textTable}). +-t file The text table to build in (default: ${textTable}). -s Invoke an interactive shell to inspect the modified image. -h Display usage information and exit. EOF @@ -172,7 +173,7 @@ originalMounted=true modifiedRoot="${temporaryDirectory}/modified" mkdir "${modifiedRoot}" -cp -a -- "${originalRoot}/." "${modifiedRoot}" +cp -RpPd -- "${originalRoot}/." "${modifiedRoot}" loaderDirectory="" for directory in boot/isolinux isolinux @@ -295,12 +296,12 @@ brlttyInstallRoot="${temporaryDirectory}/install" --with-screen-driver="lx,-all" \ --with-braille-driver="-tt,-vr,${brailleDrivers}" \ --with-text-table="${textTable}" \ - --disable-speech-support --without-libbraille --without-curses --without-x \ + --disable-speech-support --without-libbraille --without-curses --disable-x \ --disable-pcm-support --disable-fm-support --disable-midi-support \ - --enable-standalone-programs --disable-api --disable-gpm + --enable-standalone-programs --disable-api --disable-gpm --disable-icu make -s -C Programs all strip Programs/brltty - make -s -C Programs install-programs install-help install-tables + make -s -C Programs install-programs install-data-files install-tables ) || exit "${?}" "check_${initrdType}" diff --git a/BrailleDrivers/Alva/braille.c b/BrailleDrivers/Alva/braille.c deleted file mode 100644 index 52bb7c025200de5ab9d116bf50aeaa315a84d5be..0000000000000000000000000000000000000000 --- a/BrailleDrivers/Alva/braille.c +++ /dev/null @@ -1,1399 +0,0 @@ -/* - * 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-2008 by The BRLTTY Developers. - * - * BRLTTY comes with ABSOLUTELY NO WARRANTY. - * - * This is free software, placed under the terms of the - * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. - * - * Web Page: http://mielke.cc/brltty/ - * - * This software is maintained by Dave Mielke . - */ - -/* Alva/brlmain.cc - Braille display library for Alva braille displays - * Copyright (C) 1995-2002 by Nicolas Pitre - * See the GNU Public license for details in the ../COPYING file - * - */ - -/* Changes: - * january 2004: - * - Added USB support. - * - Improved key bindings for Satellite models. - * - Moved autorepeat (typematic) support to the core. - * september 2002: - * - This pesky binary only parallel port library is just - * causing trouble (not compatible with new compilers, etc). - * It is also unclear if distribution of such closed source - * library is allowed within a GPL'ed program archive. - * Let's just nuke it until we can write an open source one. - * - Converted this file back to pure C source. - * may 21, 1999: - * - Added Alva Delphi 80 support. Thanks to ??? -* . - * mar 14, 1999: - * - Added LogPrint's (which is a good thing...) - * - Ugly ugly hack for parallel port support: seems there - * is a bug in the parallel port library so that the display - * completely hang after an arbitrary period of time. - * J. Lemmens didn't respond to my query yet... and since - * the F***ing library isn't Open Source, I can't fix it. - * feb 05, 1999: - * - Added Alva Delphi support (thanks to Terry Barnaby - * ). - * - Renamed Alva_ABT3 to Alva. - * - Some improvements to the autodetection stuff. - * dec 06, 1998: - * - added parallel port communication support using - * J. lemmens 's library. - * This required brl.o to be sourced with C++ for the parallel - * stuff to link. Now brl.o is a partial link of brlmain.o - * and the above library. - * jun 21, 1998: - * - replaced CMD_WINUP/DN with CMD_ATTRUP/DN wich seems - * to be a more useful binding. Modified help files - * acordingly. - * apr 23, 1998: - * - I finally had the chance to test with an ABT380... and - * corrected the ABT380 model ID for autodetection. - * - Added a refresh delay to force redrawing the whole display - * in order to minimize garbage due to noise on the - * serial line - * oct 02, 1996: - * - bound CMD_SAY_LINE and CMD_MUTE - * sep 22, 1996: - * - bound CMD_PRDIFLN and CMD_NXDIFLN. - * aug 15, 1996: - * - adeded automatic model detection for new firmware. - * - support for selectable help screen. - * feb 19, 1996: - * - added small hack for automatic rewrite of display when - * the terminal is turned off and back on, replugged, etc. - * feb 15, 1996: - * - Modified writebrl() for lower bandwith - * - Joined the forced ReWrite function to the CURSOR key - * jan 31, 1996: - * - moved user configurable parameters into brlconf.h - * - added identbrl() - * - added overide parameter for serial device - * - added keybindings for BRLTTY preferences menu - * jan 23, 1996: - * - modifications to be compatible with the BRLTTY braille - * mapping standard. - * dec 27, 1995: - * - Added conditions to support all ABT3xx series - * - changed directory Alva_ABT40 to Alva_ABT3 - * dec 02, 1995: - * - made changes to support latest Alva ABT3 firmware (new - * serial protocol). - * nov 05, 1995: - * - added typematic facility - * - added key bindings for Stephane Doyon's cut'n paste. - * - added cursor routing key block marking - * - fixed a bug in readbrl() about released keys - * sep 30' 1995: - * - initial Alva driver code, inspired from the - * (old) BrailleLite code. - */ - -#include "prologue.h" - -#include -#include -#include - -#include "misc.h" -#include "brltty.h" - -#define BRLSTAT ST_AlvaStyle -#define BRL_HAVE_STATUS_CELLS -#define BRL_HAVE_FIRMNESS -#define BRLCONST -#include "brl_driver.h" -#include "braille.h" - -static const int logInputBuffer = 0; -static const int logInputPackets = 0; -static const int logOutputPackets = 0; - -/* Braille display parameters */ -typedef struct { - const char *name; - unsigned char identifier; - unsigned char columns; - unsigned char statusCells; - unsigned char flags; - unsigned char helpPage; -} ModelEntry; -#define MOD_FLG__CONFIGURABLE 0X01 - -static const ModelEntry modelTable[] = { - { .identifier = 0X00, - .name = "ABT 320", - .columns = 20, - .statusCells = 3, - .flags = 0, - .helpPage = 0 - } - , - { .identifier = 0X01, - .name = "ABT 340", - .columns = 40, - .statusCells = 3, - .flags = 0, - .helpPage = 0 - } - , - { .identifier = 0X02, - .name = "ABT 340 Desktop", - .columns = 40, - .statusCells = 5, - .flags = 0, - .helpPage = 0 - } - , - { .identifier = 0X03, - .name = "ABT 380", - .columns = 80, - .statusCells = 5, - .flags = 0, - .helpPage = 0 - } - , - { .identifier = 0X04, - .name = "ABT 382 Twin Space", - .columns = 80, - .statusCells = 5, - .flags = 0, - .helpPage = 0 - } - , - { .identifier = 0X0A, - .name = "Delphi 420", - .columns = 20, - .statusCells = 3, - .flags = 0, - .helpPage = 0 - } - , - { .identifier = 0X0B, - .name = "Delphi 440", - .columns = 40, - .statusCells = 3, - .flags = 0, - .helpPage = 0 - } - , - { .identifier = 0X0C, - .name = "Delphi 440 Desktop", - .columns = 40, - .statusCells = 5, - .flags = 0, - .helpPage = 0 - } - , - { .identifier = 0X0D, - .name = "Delphi 480", - .columns = 80, - .statusCells = 5, - .flags = 0, - .helpPage = 0 - } - , - { .identifier = 0X0E, - .name = "Satellite 544", - .columns = 40, - .statusCells = 3, - .flags = MOD_FLG__CONFIGURABLE, - .helpPage = 1 - } - , - { .identifier = 0X0F, - .name = "Satellite 570 Pro", - .columns = 66, - .statusCells = 3, - .flags = MOD_FLG__CONFIGURABLE, - .helpPage = 1 - } - , - { .identifier = 0X10, - .name = "Satellite 584 Pro", - .columns = 80, - .statusCells = 3, - .flags = MOD_FLG__CONFIGURABLE, - .helpPage = 1 - } - , - { .identifier = 0X11, - .name = "Satellite 544 Traveller", - .columns = 40, - .statusCells = 3, - .flags = MOD_FLG__CONFIGURABLE, - .helpPage = 1 - } - , - { .identifier = 0X13, - .name = "Braille System 40", - .columns = 40, - .statusCells = 0, - .flags = MOD_FLG__CONFIGURABLE, - .helpPage = 1 - } - , - { .name = NULL } -}; - - -#define MAX_STCELLS 5 /* hiest number of status cells */ - - - -/* This is the brltty braille mapping standard to Alva's mapping table. - */ -static TranslationTable outputTable; - - - -/* Global variables */ - -static unsigned char *rawdata = NULL; /* translated data to send to Braille */ -static unsigned char *prevdata = NULL; /* previously sent raw data */ -static unsigned char StatusCells[MAX_STCELLS]; /* to hold status info */ -static unsigned char PrevStatus[MAX_STCELLS]; /* to hold previous status */ -static unsigned char NbStCells; /* number of status cells */ -static const ModelEntry *model; /* points to terminal model config struct */ -static int rewriteRequired = 0; /* 1 if display need to be rewritten */ -static int rewriteInterval; -static struct timeval rewriteTime; - - - -/* Communication codes */ - -static const unsigned char BRL_START[] = {'\r', 0X1B, 'B'}; /* escape code to display braille */ -#define BRL_START_LENGTH (sizeof(BRL_START)) - -static const unsigned char BRL_END[] = {'\r'}; /* to send after the braille sequence */ -#define BRL_END_LENGTH (sizeof(BRL_END)) - -static const unsigned char BRL_ID[] = {0X1B, 'I', 'D', '='}; -#define BRL_ID_LENGTH (sizeof(BRL_ID)) -#define BRL_ID_SIZE (BRL_ID_LENGTH + 1) - - -/* Key values */ - -/* NB: The first 7 key values are the same as those returned by the - * old firmware, so they can be used directly from the input stream as - * make and break sequence already combined... not to be changed. - */ -#define KEY_PROG 0x008 /* the PROG key */ -#define KEY_HOME 0x004 /* the HOME key */ -#define KEY_CURSOR 0x002 /* the CURSOR key */ -#define KEY_UP 0x001 /* the UP key */ -#define KEY_LEFT 0x010 /* the LEFT key */ -#define KEY_RIGHT 0x020 /* the RIGHT key */ -#define KEY_DOWN 0x040 /* the DOWN key */ -#define KEY_CURSOR2 0x080 /* the CURSOR2 key */ -#define KEY_HOME2 0x100 /* the HOME2 key */ -#define KEY_PROG2 0x200 /* the PROG2 key */ - -#define KEY_STATUS1_A 0x01000 /* first lower status key */ -#define KEY_STATUS1_B 0x02000 /* second lower status key */ -#define KEY_STATUS1_C 0x03000 /* third lower status key */ -#define KEY_STATUS1_D 0x04000 /* fourth lower status key */ -#define KEY_STATUS1_E 0x05000 /* fifth lower status key */ -#define KEY_STATUS1_F 0x06000 /* sixth lower status key */ -#define KEY_ROUTING1 0x08000 /* lower cursor routing key set */ - -#define KEY_STATUS2_A 0x10000 /* first upper status key */ -#define KEY_STATUS2_B 0x20000 /* second upper status key */ -#define KEY_STATUS2_C 0x30000 /* third upper status key */ -#define KEY_STATUS2_D 0x40000 /* fourth upper status key */ -#define KEY_STATUS2_E 0x50000 /* fifth upper status key */ -#define KEY_STATUS2_F 0x60000 /* sixth upper status key */ -#define KEY_ROUTING2 0x80000 /* upper cursor routing key set */ - -#define KEY_SPK_F1 0x0100000 -#define KEY_SPK_F2 0x0200000 -#define KEY_SPK_UP 0x1000000 -#define KEY_SPK_DOWN 0x2000000 -#define KEY_SPK_LEFT 0x3000000 -#define KEY_SPK_RIGHT 0x4000000 - -#define KEY_BRL_F1 0x0400000 -#define KEY_BRL_F2 0x0800000 -#define KEY_BRL_UP 0x5000000 -#define KEY_BRL_DOWN 0x6000000 -#define KEY_BRL_LEFT 0x7000000 -#define KEY_BRL_RIGHT 0x8000000 - -#define KEY_TUMBLER1A 0x10000000 /* left end of left tumbler key */ -#define KEY_TUMBLER1B 0x20000000 /* right end of left tumbler key */ -#define KEY_TUMBLER2A 0x30000000 /* left end of right tumbler key */ -#define KEY_TUMBLER2B 0x40000000 /* right end of right tumbler key */ - -/* first cursor routing offset on main display (old firmware only) */ -#define KEY_ROUTING_OFFSET 168 - -#if ! ABT3_OLD_FIRMWARE -/* Index for new firmware protocol */ -static int OperatingKeys[14] = { - KEY_PROG, KEY_HOME, KEY_CURSOR, - KEY_UP, KEY_LEFT, KEY_RIGHT, KEY_DOWN, - KEY_CURSOR2, KEY_HOME2, KEY_PROG2, - KEY_TUMBLER1A, KEY_TUMBLER1B, KEY_TUMBLER2A, KEY_TUMBLER2B -}; -#endif /* ! ABT3_OLD_FIRMWARE */ - -static int StatusKeys1[6] = { - KEY_STATUS1_A, KEY_STATUS1_B, KEY_STATUS1_C, - KEY_STATUS1_D, KEY_STATUS1_E, KEY_STATUS1_F -}; - -static int StatusKeys2[6] = { - KEY_STATUS2_A, KEY_STATUS2_B, KEY_STATUS2_C, - KEY_STATUS2_D, KEY_STATUS2_E, KEY_STATUS2_F -}; - -static int SpeechPad[6] = { - KEY_SPK_F1, KEY_SPK_UP, KEY_SPK_LEFT, - KEY_SPK_DOWN, KEY_SPK_RIGHT, KEY_SPK_F2 -}; - -static int BraillePad[6] = { - KEY_BRL_F1, KEY_BRL_UP, KEY_BRL_LEFT, - KEY_BRL_DOWN, KEY_BRL_RIGHT, KEY_BRL_F2 -}; - -typedef struct { - int (*openPort) (char **parameters, const char *device); - int (*resetPort) (void); - void (*closePort) (void); - int (*awaitInput) (int milliseconds); - int (*readPacket) (unsigned char *buffer, int length); - int (*writePacket) (const unsigned char *buffer, int length, unsigned int *delay); -} InputOutputOperations; -static const InputOutputOperations *io; - -#define PACKET_SIZE(count) (((count) * 2) + 4) -#define MAXIMUM_PACKET_SIZE PACKET_SIZE(0XFF) -static unsigned char inputBuffer[MAXIMUM_PACKET_SIZE]; -static int inputUsed; - -static int -verifyInputPacket (unsigned char *buffer, int *length) { - int size = 0; - if (logInputBuffer) LogBytes(LOG_DEBUG, "Input Buffer", inputBuffer, inputUsed); - -#if ! ABT3_OLD_FIRMWARE - while (inputUsed > 0) { - if (inputBuffer[0] == 0X7F) { - if (inputUsed < 3) break; - if (inputBuffer[2] != 0X7E) goto unrecognized; - if (inputUsed < 4) break; - - { - int count = PACKET_SIZE(inputBuffer[3]); - int complete = inputUsed >= count; - int index; - - if (!complete) count = inputUsed; - for (index=4; index= 2) size = 2; - break; - } - - { - int count = BRL_ID_LENGTH; - if (inputUsed < count) count = inputUsed; - if (memcmp(&inputBuffer[0], BRL_ID, count) != 0) goto unrecognized; - if (inputUsed >= BRL_ID_SIZE) size = BRL_ID_SIZE; - break; - } - - unrecognized: - LogBytes(LOG_WARNING, "Unrecognized Packet", inputBuffer, inputUsed); - memcpy(&inputBuffer[0], &inputBuffer[1], --inputUsed); - } -#else /* ABT3_OLD_FIRMWARE */ - if (inputUsed) size = 1; -#endif /* ! ABT3_OLD_FIRMWARE */ - - if (!size) return 0; - if (logInputPackets) LogBytes(LOG_DEBUG, "Input Packet", inputBuffer, size); - - if (*length < size) { - LogPrint(LOG_DEBUG, "truncated input packet: %d < %d", *length, size); - size = *length; - } else { - *length = size; - } - - memcpy(buffer, &inputBuffer[0], size); - memcpy(&inputBuffer[0], &inputBuffer[size], inputUsed-=size); - return 1; -} - -static int -writeFunction (BrailleDisplay *brl, unsigned char code) { - unsigned char bytes[] = {0X1B, 'F', 'U', 'N', code, '\r'}; - return io->writePacket(bytes, sizeof(bytes), &brl->writeDelay); -} - -static int -writeParameter (BrailleDisplay *brl, unsigned char parameter, unsigned char setting) { - unsigned char bytes[] = {0X1B, 'P', 'A', 3, 0, parameter, setting, '\r'}; - return io->writePacket(bytes, sizeof(bytes), &brl->writeDelay); -} - -#include "io_serial.h" -static SerialDevice *serialDevice = NULL; -static int serialCharactersPerSecond; - -static int -openSerialPort (char **parameters, const char *device) { - rewriteInterval = REWRITE_INTERVAL; - - if (!(serialDevice = serialOpenDevice(device))) return 0; - - return 1; -} - -static int -resetSerialPort (void) { - if (!serialRestartDevice(serialDevice, BAUDRATE)) return 0; - serialCharactersPerSecond = BAUDRATE / 10; - return 1; -} - -static void -closeSerialPort (void) { - if (serialDevice) { - serialCloseDevice(serialDevice); - serialDevice = NULL; - } -} - -static int -awaitSerialInput (int milliseconds) { - return serialAwaitInput(serialDevice, milliseconds); -} - -static int -readSerialPacket (unsigned char *buffer, int length) { - while (1) { - unsigned char byte; - int count = serialReadData(serialDevice, &byte, 1, 0, 0); - if (count < 1) { - if (count == -1) LogError("serial read"); - return count; - } - inputBuffer[inputUsed++] = byte; - if (verifyInputPacket(buffer, &length)) return length; - } -} - -static int -writeSerialPacket (const unsigned char *buffer, int length, unsigned int *delay) { - if (logOutputPackets) LogBytes(LOG_DEBUG, "Output Packet", buffer, length); - if (delay) *delay += (length * 1000 / serialCharactersPerSecond) + 1; - return serialWriteData(serialDevice, buffer, length); -} - -static const InputOutputOperations serialOperations = { - openSerialPort, resetSerialPort, closeSerialPort, - awaitSerialInput, readSerialPacket, writeSerialPacket -}; - -#ifdef ENABLE_USB_SUPPORT -#include "io_usb.h" - -static UsbChannel *usb = NULL; - -static int -openUsbPort (char **parameters, const char *device) { - static const UsbChannelDefinition definitions[] = { - { .vendor=0X06b0, .product=0X0001, - .configuration=1, .interface=0, .alternative=0, - .inputEndpoint=1, .outputEndpoint=2 - } - , - { .vendor=0 } - }; - - rewriteInterval = 0; - if ((usb = usbFindChannel(definitions, (void *)device))) { - usbBeginInput(usb->device, usb->definition.inputEndpoint, 8); - return 1; - } - return 0; -} - -static int -resetUsbPort (void) { - return 1; -} - -static void -closeUsbPort (void) { - if (usb) { - usbCloseChannel(usb); - usb = NULL; - } -} - -static int -awaitUsbInput (int milliseconds) { - return usbAwaitInput(usb->device, usb->definition.inputEndpoint, milliseconds); -} - -static int -readUsbPacket (unsigned char *buffer, int length) { - while (1) { - unsigned char bytes[2]; - int count = usbReapInput(usb->device, usb->definition.inputEndpoint, bytes, sizeof(bytes), 0, 0); - if (count == -1) { - if (errno == EAGAIN) return 0; - return count; - } - - if (bytes[0] || bytes[1]) { - memcpy(&inputBuffer[inputUsed], bytes, count); - inputUsed += count; - if (verifyInputPacket(buffer, &length)) return length; - } else if (inputUsed) { - LogBytes(LOG_WARNING, "Truncated Packet", inputBuffer, inputUsed); - inputUsed = 0; - } - } -} - -static int -writeUsbPacket (const unsigned char *buffer, int length, unsigned int *delay) { - if (logOutputPackets) LogBytes(LOG_DEBUG, "Output Packet", buffer, length); - return usbWriteEndpoint(usb->device, usb->definition.outputEndpoint, buffer, length, 1000); -} - -static const InputOutputOperations usbOperations = { - openUsbPort, resetUsbPort, closeUsbPort, - awaitUsbInput, readUsbPacket, writeUsbPacket -}; -#endif /* ENABLE_USB_SUPPORT */ - -int AL_writeData( unsigned char *data, int len ) -{ - if (io->writePacket(data, len, NULL) == len) return 1; - return 0; -} - -static int -reallocateBuffer (unsigned char **buffer, int size) { - void *address = realloc(*buffer, size); - if (!address) return 0; - *buffer = address; - return 1; -} - -static int -reallocateBuffers (BrailleDisplay *brl) { - if (reallocateBuffer(&rawdata, brl->x*brl->y)) - if (reallocateBuffer(&prevdata, brl->x*brl->y)) - return 1; - - LogPrint(LOG_ERR, "Cannot allocate braille buffers."); - return 0; -} - -static int -updateDisplayConfiguration (BrailleDisplay *brl, const unsigned char *packet, int autodetecting) { - int count = packet[3]; - - if (count >= 3) { - unsigned char cells = packet[9]; - if (cells != NbStCells) { - NbStCells = cells; - LogPrint(LOG_INFO, "Status cell count changed to %d.", NbStCells); - } - } - - if (count >= 4) { - unsigned char columns = packet[11]; - if (columns != brl->x) { - brl->x = columns; - if (!autodetecting) { - if (!reallocateBuffers(brl)) return 0; - brl->resizeRequired = 1; - } - } - } - - return 1; -} - -static int -identifyModel (BrailleDisplay *brl, unsigned char identifier) { - /* Find out which model we are connected to... */ - for ( - model = modelTable; - model->name && (model->identifier != identifier); - model++ - ); - - if (!model->name) { - /* Unknown model */ - LogPrint(LOG_ERR, "Detected unknown Alva model with ID %02X (hex).", identifier); - return 0; - } - LogPrint(LOG_INFO, "Detected Alva %s: %d columns, %d status cells", - model->name, model->columns, model->statusCells); - - /* Set model parameters... */ - brl->x = model->columns; - brl->y = 1; - brl->helpPage = model->helpPage; /* initialise size of display */ - NbStCells = model->statusCells; - - if (model->flags & MOD_FLG__CONFIGURABLE) { - BRLSYMBOL.firmness = brl_firmness; - - writeFunction(brl, 0X07); - while (io->awaitInput(200)) { - unsigned char packet[MAXIMUM_PACKET_SIZE]; - int count = io->readPacket(packet, sizeof(packet)); - if (count == -1) break; - if (count == 0) continue; - - if ((packet[0] == 0X7F) && (packet[1] == 0X07)) { - updateDisplayConfiguration(brl, packet, 1); - break; - } - } - - writeFunction(brl, 0X0B); - } else { - BRLSYMBOL.firmness = NULL; - } - - /* Allocate space for buffers */ - if (!reallocateBuffers(brl)) return 0; - rewriteRequired = 1; /* To write whole display at first time */ - gettimeofday(&rewriteTime, NULL); - - return 1; -} - -static int -brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { - unsigned char ModelID; - - { - static const DotsTable dots = {0X01, 0X02, 0X04, 0X08, 0X10, 0X20, 0X40, 0X80}; - makeOutputTable(dots, outputTable); - } - - if (isSerialDevice(&device)) { - io = &serialOperations; - } else - -#ifdef ENABLE_USB_SUPPORT - if (isUsbDevice(&device)) { - io = &usbOperations; - } else -#endif /* ENABLE_USB_SUPPORT */ - - { - unsupportedDevice(device); - return 0; - } - inputUsed = 0; - - /* Open the Braille display device */ - if (io->openPort(parameters, device)) { - if (io->resetPort()) { - int probes = 0; - while (writeFunction(brl, 0X06) != -1) { - while (io->awaitInput(200)) { - unsigned char packet[MAXIMUM_PACKET_SIZE]; - if (io->readPacket(packet, sizeof(packet)) > 0) { - if (memcmp(packet, BRL_ID, BRL_ID_LENGTH) == 0) { - ModelID = packet[BRL_ID_LENGTH]; - if (identifyModel(brl, ModelID)) { - return 1; - } - } - } - } - if (errno != EAGAIN) break; - if (++probes == 3) break; - } - } - - io->closePort(); - } - - return 0; -} - - -static void brl_destruct (BrailleDisplay *brl) -{ - if (rawdata) { - free(rawdata); - rawdata = NULL; - } - - if (prevdata) { - free(prevdata); - prevdata = NULL; - } - - io->closePort(); -} - - -static int WriteToBrlDisplay (BrailleDisplay *brl, int Start, int Len, unsigned char *Data) -{ - unsigned char outbuf[ BRL_START_LENGTH + 2 + Len + BRL_END_LENGTH ]; - int outsz = 0; - - memcpy( outbuf, BRL_START, BRL_START_LENGTH ); - outsz += BRL_START_LENGTH; - outbuf[outsz++] = (char)Start; - outbuf[outsz++] = (char)Len; - memcpy( outbuf+outsz, Data, Len ); - outsz += Len; - memcpy( outbuf+outsz, BRL_END, BRL_END_LENGTH ); - outsz += BRL_END_LENGTH; - return io->writePacket(outbuf, outsz, &brl->writeDelay); -} - -static int brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) -{ - int from, to; - - if (rewriteInterval) { - struct timeval now; - gettimeofday(&now, NULL); - if (millisecondsBetween(&rewriteTime, &now) > rewriteInterval) rewriteRequired = 1; - if (rewriteRequired) rewriteTime = now; - } - - if (rewriteRequired) { - /* We rewrite the whole display */ - from = 0; - to = brl->x; - rewriteRequired = 0; - } else { - /* We update only the display part that has been changed */ - from = 0; - while ((from < brl->x) && (brl->buffer[from] == prevdata[from])) from++; - - to = brl->x - 1; - while ((to > from) && (brl->buffer[to] == prevdata[to])) to--; - to++; - } - - if (from < to) /* there is something different */ { - int index; - for (index=from; indexbuffer[index])]; - WriteToBrlDisplay (brl, NbStCells+from, to-from, rawdata); - } - return 1; -} - - -static int -brl_writeStatus (BrailleDisplay *brl, const unsigned char *st) -{ - int i; - - /* Update status cells on braille display */ - if (memcmp (st, PrevStatus, NbStCells)) /* only if it changed */ - { - for (i=0; ireadPacket(packet, sizeof(packet)); - if (length < 1) return length; -#if ! ABT3_OLD_FIRMWARE - - switch (packet[0]) { - case 0X71: { /* operating keys and status keys */ - unsigned char key = packet[1]; - if (key <= 0X0D) { - *Keys |= OperatingKeys[key]; - } else if ((key >= 0X80) && (key <= 0X89)) { - *Keys &= ~OperatingKeys[key - 0X80]; - } else if ((key >= 0X20) && (key <= 0X25)) { - *Keys |= StatusKeys1[key - 0X20]; - } else if ((key >= 0XA0) && (key <= 0XA5)) { - *Keys &= ~StatusKeys1[key - 0XA0]; - } else if ((key >= 0X30) && (key <= 0X35)) { - *Keys |= StatusKeys2[key - 0X30]; - } else if ((key >= 0XB0) && (key <= 0XB5)) { - *Keys &= ~StatusKeys2[key - 0XB0]; - } else { - *Keys = 0; - } - return 1; - } - - case 0X72: { /* primary (lower) routing keys */ - unsigned char key = packet[1]; - if (key <= 0X5F) { /* make */ - *Pos = key; - *Keys |= KEY_ROUTING1; - } else { - *Keys &= ~KEY_ROUTING1; - } - return 1; - } - - case 0X75: { /* secondary (upper) routing keys */ - unsigned char key = packet[1]; - if (key <= 0X5F) { /* make */ - *Pos = key; - *Keys |= KEY_ROUTING2; - } else { - *Keys &= ~KEY_ROUTING2; - } - return 1; - } - - case 0X77: { /* windows keys and speech keys */ - unsigned char key = packet[1]; - if (key <= 0X05) { - *Keys |= SpeechPad[key]; - } else if ((key >= 0X80) && (key <= 0X85)) { - *Keys &= ~SpeechPad[key - 0X80]; - } else if ((key >= 0X20) && (key <= 0X25)) { - *Keys |= BraillePad[key - 0X20]; - } else if ((key >= 0XA0) && (key <= 0XA5)) { - *Keys &= ~BraillePad[key - 0XA0]; - } else { - *Keys = 0; - } - return 1; - } - - case 0X7F: - switch (packet[1]) { - case 0X07: /* text/status cells reconfigured */ - if (!updateDisplayConfiguration(brl, packet, 0)) return -1; - rewriteRequired = 1; - return 0; - - case 0X0B: { /* display parameters reconfigured */ - int count = packet[3]; - - if (count >= 8) { - unsigned char frontKeys = packet[19]; - const unsigned char progKey = 0X02; - if (frontKeys & progKey) { - unsigned char newSetting = frontKeys & ~progKey; - LogPrint(LOG_DEBUG, "Reconfiguring front keys: %02X -> %02X", - frontKeys, newSetting); - writeParameter(brl, 6, newSetting); - } - } - - return 0; - } - } - break; - - default: - if (length >= BRL_ID_SIZE) { - if (memcmp(packet, BRL_ID, BRL_ID_LENGTH) == 0) { - /* The terminal has been turned off and back on. */ - if (!identifyModel(brl, packet[BRL_ID_LENGTH])) return -1; - brl->resizeRequired = 1; - return 0; - } - } - - break; - } - -#else /* ABT3_OLD_FIRMWARE */ - - int key = packet[0]; - if (key < (KEY_ROUTING_OFFSET + brl->x + NbStCells)) { - if (key >= (KEY_ROUTING_OFFSET + brl->x)) { - /* status key */ - *Keys |= StatusKeys1[key - (KEY_ROUTING_OFFSET + brl->x)]; - return 1; - } - - if (key >= KEY_ROUTING_OFFSET) { - /* routing key */ - *Pos = key - KEY_ROUTING_OFFSET; - *Keys |= KEY_ROUTING1; - return 1; - } - - if (!(key & 0X80)) { - /* operating key */ - *Keys = key; /* check comments where KEY_xxxx are defined */ - return 1; - } - } - -#endif /* ! ABT3_OLD_FIRMWARE */ - LogBytes(LOG_WARNING, "Unexpected Packet", packet, length); - return 0; -} - - -static int -brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { - static unsigned int CurrentKeys = 0, LastKeys = 0, ReleasedKeys = 0; - static unsigned int RoutingPos = 0; - int res = EOF; - int ProcessKey = GetKey(brl, &CurrentKeys, &RoutingPos); - - if (ProcessKey < 0) { - /* An input error occurred (perhaps disconnect of USB device) */ - res = BRL_CMD_RESTARTBRL; - } else if (ProcessKey > 0) { - res = BRL_CMD_NOOP; - - if (CurrentKeys > LastKeys) { - /* These are the keys that should be processed when pressed */ - LastKeys = CurrentKeys; /* we keep it until it is released */ - ReleasedKeys = 0; - switch (brl->helpPage) { - case 0: /* ABT and Delphi models */ - switch (CurrentKeys) { - case KEY_HOME | KEY_UP: - res = BRL_CMD_TOP; - break; - case KEY_HOME | KEY_DOWN: - res = BRL_CMD_BOT; - break; - case KEY_UP: - res = BRL_CMD_LNUP; - break; - case KEY_CURSOR | KEY_UP: - res = BRL_CMD_ATTRUP; - break; - case KEY_DOWN: - res = BRL_CMD_LNDN; - break; - case KEY_CURSOR | KEY_DOWN: - res = BRL_CMD_ATTRDN; - break; - case KEY_LEFT: - res = BRL_CMD_FWINLT; - break; - case KEY_HOME | KEY_LEFT: - res = BRL_CMD_LNBEG; - break; - case KEY_CURSOR | KEY_LEFT: - res = BRL_CMD_HWINLT; - break; - case KEY_PROG | KEY_LEFT: - res = BRL_CMD_CHRLT; - break; - case KEY_RIGHT: - res = BRL_CMD_FWINRT; - break; - case KEY_HOME | KEY_RIGHT: - res = BRL_CMD_LNEND; - break; - case KEY_PROG | KEY_RIGHT: - res = BRL_CMD_CHRRT; - break; - case KEY_CURSOR | KEY_RIGHT: - res = BRL_CMD_HWINRT; - break; - case KEY_HOME | KEY_CURSOR | KEY_UP: - res = BRL_CMD_PRDIFLN; - break; - case KEY_HOME | KEY_CURSOR | KEY_DOWN: - res = BRL_CMD_NXDIFLN; - break; - case KEY_HOME | KEY_CURSOR | KEY_LEFT: - res = BRL_CMD_MUTE; - break; - case KEY_HOME | KEY_CURSOR | KEY_RIGHT: - res = BRL_CMD_SAY_LINE; - break; - case KEY_PROG | KEY_DOWN: - res = BRL_CMD_FREEZE; - break; - case KEY_PROG | KEY_UP: - res = BRL_CMD_INFO; - break; - case KEY_PROG | KEY_CURSOR | KEY_LEFT: - res = BRL_CMD_BACK; - break; - case KEY_STATUS1_A: - res = BRL_CMD_CAPBLINK; - break; - case KEY_STATUS1_B: - res = BRL_CMD_CSRVIS; - break; - case KEY_STATUS1_C: - res = BRL_CMD_CSRBLINK; - break; - case KEY_CURSOR | KEY_STATUS1_A: - res = BRL_CMD_SIXDOTS; - break; - case KEY_CURSOR | KEY_STATUS1_B: - res = BRL_CMD_CSRSIZE; - break; - case KEY_CURSOR | KEY_STATUS1_C: - res = BRL_CMD_SLIDEWIN; - break; - case KEY_PROG | KEY_HOME | KEY_UP: - res = BRL_CMD_PRPROMPT; - break; - case KEY_PROG | KEY_HOME | KEY_LEFT: - res = BRL_CMD_RESTARTSPEECH; - break; - case KEY_PROG | KEY_HOME | KEY_RIGHT: - res = BRL_CMD_SAY_BELOW; - break; - case KEY_ROUTING1: - /* normal Cursor routing keys */ - res = BRL_BLK_ROUTE + RoutingPos; - break; - case KEY_PROG | KEY_ROUTING1: - /* marking beginning of block */ - res = BRL_BLK_CUTBEGIN + RoutingPos; - break; - case KEY_HOME | KEY_ROUTING1: - /* marking end of block */ - res = BRL_BLK_CUTRECT + RoutingPos; - break; - case KEY_PROG | KEY_HOME | KEY_DOWN: - res = BRL_CMD_PASTE; - break; - - /* See released keys handling below for these. There appears - * to be a bug with at least some models when a routing key - * is pressed in conjunction with more than one front key. - */ - case KEY_PROG | KEY_HOME | KEY_ROUTING1: - case KEY_HOME | KEY_CURSOR | KEY_ROUTING1: - break; - } - break; - - case 1: /* Satellite models */ - switch (CurrentKeys) { - case KEY_UP: - res = BRL_CMD_LNUP; - break; - case KEY_DOWN: - res = BRL_CMD_LNDN; - break; - case KEY_HOME | KEY_UP: - res = BRL_CMD_TOP_LEFT; - break; - case KEY_HOME | KEY_DOWN: - res = BRL_CMD_BOT_LEFT; - break; - case KEY_CURSOR | KEY_UP: - res = BRL_CMD_TOP; - break; - case KEY_CURSOR | KEY_DOWN: - res = BRL_CMD_BOT; - break; - case KEY_BRL_F1 | KEY_UP: - res = BRL_CMD_PRDIFLN; - break; - case KEY_BRL_F1 | KEY_DOWN: - res = BRL_CMD_NXDIFLN; - break; - case KEY_BRL_F2 | KEY_UP: - res = BRL_CMD_ATTRUP; - break; - case KEY_BRL_F2 | KEY_DOWN: - res = BRL_CMD_ATTRDN; - break; - - case KEY_LEFT: - res = BRL_CMD_FWINLT; - break; - case KEY_RIGHT: - res = BRL_CMD_FWINRT; - break; - case KEY_TUMBLER2A: - case KEY_HOME | KEY_LEFT: - res = BRL_CMD_LNBEG; - break; - case KEY_TUMBLER2B: - case KEY_HOME | KEY_RIGHT: - res = BRL_CMD_LNEND; - break; - case KEY_CURSOR | KEY_LEFT: - res = BRL_CMD_FWINLTSKIP; - break; - case KEY_CURSOR | KEY_RIGHT: - res = BRL_CMD_FWINRTSKIP; - break; - case KEY_TUMBLER1A: - case KEY_BRL_F1 | KEY_LEFT: - res = BRL_CMD_CHRLT; - break; - case KEY_TUMBLER1B: - case KEY_BRL_F1 | KEY_RIGHT: - res = BRL_CMD_CHRRT; - break; - case KEY_BRL_F2 | KEY_LEFT: - res = BRL_CMD_HWINLT; - break; - case KEY_BRL_F2 | KEY_RIGHT: - res = BRL_CMD_HWINRT; - break; - - case KEY_ROUTING2: - res = BRL_BLK_DESCCHAR + RoutingPos; - break; - case KEY_ROUTING1: - res = BRL_BLK_ROUTE + RoutingPos; - break; - case KEY_BRL_F1 | KEY_ROUTING2: - res = BRL_BLK_CUTAPPEND + RoutingPos; - break; - case KEY_BRL_F1 | KEY_ROUTING1: - res = BRL_BLK_CUTBEGIN + RoutingPos; - break; - case KEY_BRL_F2 | KEY_ROUTING2: - res = BRL_BLK_CUTLINE + RoutingPos; - break; - case KEY_BRL_F2 | KEY_ROUTING1: - res = BRL_BLK_CUTRECT + RoutingPos; - break; - case KEY_HOME | KEY_ROUTING2: - res = BRL_BLK_SETMARK + RoutingPos; - break; - case KEY_HOME | KEY_ROUTING1: - res = BRL_BLK_GOTOMARK + RoutingPos; - break; - case KEY_CURSOR | KEY_ROUTING2: - res = BRL_BLK_PRINDENT + RoutingPos; - break; - case KEY_CURSOR | KEY_ROUTING1: - res = BRL_BLK_NXINDENT + RoutingPos; - break; - - case KEY_STATUS1_A: - res = BRL_CMD_CSRVIS; - break; - case KEY_STATUS2_A: - res = BRL_CMD_SKPIDLNS; - break; - case KEY_STATUS1_B: - res = BRL_CMD_ATTRVIS; - break; - case KEY_STATUS2_B: - res = BRL_CMD_DISPMD; - break; - case KEY_STATUS1_C: - res = BRL_CMD_CAPBLINK; - break; - case KEY_STATUS2_C: - res = BRL_CMD_SKPBLNKWINS; - break; - - case KEY_BRL_LEFT: - res = BRL_CMD_PREFMENU; - break; - case KEY_BRL_RIGHT: - res = BRL_CMD_INFO; - break; - - case KEY_BRL_F1 | KEY_BRL_LEFT: - res = BRL_CMD_FREEZE; - break; - case KEY_BRL_F1 | KEY_BRL_RIGHT: - res = BRL_CMD_SIXDOTS; - break; - - case KEY_BRL_F2 | KEY_BRL_LEFT: - res = BRL_CMD_PASTE; - break; - case KEY_BRL_F2 | KEY_BRL_RIGHT: - res = BRL_CMD_CSRJMP_VERT; - break; - - case KEY_BRL_UP: - res = BRL_CMD_PRPROMPT; - break; - case KEY_BRL_DOWN: - res = BRL_CMD_NXPROMPT; - break; - case KEY_BRL_F1 | KEY_BRL_UP: - res = BRL_CMD_PRPGRPH; - break; - case KEY_BRL_F1 | KEY_BRL_DOWN: - res = BRL_CMD_NXPGRPH; - break; - case KEY_BRL_F2 | KEY_BRL_UP: - res = BRL_CMD_PRSEARCH; - break; - case KEY_BRL_F2 | KEY_BRL_DOWN: - res = BRL_CMD_NXSEARCH; - break; - - case KEY_SPK_LEFT: - res = BRL_CMD_MUTE; - break; - case KEY_SPK_RIGHT: - res = BRL_CMD_SAY_LINE; - break; - case KEY_SPK_UP: - res = BRL_CMD_SAY_ABOVE; - break; - case KEY_SPK_DOWN: - res = BRL_CMD_SAY_BELOW; - break; - case KEY_SPK_F2 | KEY_SPK_LEFT: - res = BRL_CMD_SAY_SLOWER; - break; - case KEY_SPK_F2 | KEY_SPK_RIGHT: - res = BRL_CMD_SAY_FASTER; - break; - case KEY_SPK_F2 | KEY_SPK_DOWN: - res = BRL_CMD_SAY_SOFTER; - break; - case KEY_SPK_F2 | KEY_SPK_UP: - res = BRL_CMD_SAY_LOUDER; - break; - } - break; - - } - res |= BRL_FLG_REPEAT_INITIAL | BRL_FLG_REPEAT_DELAY; - } else { - /* These are the keys that should be processed when released */ - if (!ReleasedKeys) { - ReleasedKeys = LastKeys; - switch (brl->helpPage) { - case 0: /* ABT and Delphi models */ - switch (ReleasedKeys) { - case KEY_HOME: - res = BRL_CMD_TOP_LEFT; - break; - case KEY_CURSOR: - res = BRL_CMD_RETURN; - rewriteRequired = 1; /* force rewrite of whole display */ - break; - case KEY_PROG: - res = BRL_CMD_HELP; - break; - case KEY_PROG | KEY_HOME: - res = BRL_CMD_DISPMD; - break; - case KEY_HOME | KEY_CURSOR: - res = BRL_CMD_CSRTRK; - break; - case KEY_PROG | KEY_CURSOR: - res = BRL_CMD_PREFMENU; - break; - - /* The following bindings really belong in the "pressed keys" - * section, but it appears (at least on my ABT340) that a bogus - * routing key press event is sometimes generated when at least - * two front keys are already pressed. The correct routing key - * event follows eventually, so the best workaround is to let - * GetKey() overwrite RoutingPos until some key is released. - * The exact bug as I observe it is that for routing keys 25-29 - * an extra press packet for routing key 35-31 is sent before - * the correct one. In other words, if 25 <= x <= 29 then a key - * press event is prepended with x = 30 + (30-x). - */ - case KEY_PROG | KEY_HOME | KEY_ROUTING1: - /* attribute for pointed character */ - res = BRL_BLK_DESCCHAR + RoutingPos; - break; - case KEY_HOME | KEY_CURSOR | KEY_ROUTING1: - /* align window to pointed character */ - res = BRL_BLK_SETLEFT + RoutingPos; - break; - } - break; - - case 1: /* Satellite models */ - switch (ReleasedKeys) { - case KEY_HOME: - res = BRL_CMD_BACK; - break; - case KEY_CURSOR: - res = BRL_CMD_HOME; - break; - case KEY_HOME | KEY_CURSOR: - res = BRL_CMD_CSRTRK; - break; - - case KEY_BRL_F1: - res = BRL_CMD_HELP; - break; - case KEY_BRL_F2: - res = BRL_CMD_LEARN; - break; - case KEY_BRL_F1 | KEY_BRL_F2: - res = BRL_CMD_RESTARTBRL; - break; - - case KEY_SPK_F1: - res = BRL_CMD_SPKHOME; - break; - case KEY_SPK_F2: - res = BRL_CMD_AUTOSPEAK; - break; - case KEY_SPK_F1 | KEY_SPK_F2: - res = BRL_CMD_RESTARTSPEECH; - break; - } - break; - - } - } - LastKeys = CurrentKeys; - if (!CurrentKeys) - ReleasedKeys = 0; - } - } - - if (res == BRL_CMD_RESTARTBRL) { - CurrentKeys = LastKeys = ReleasedKeys = 0; - RoutingPos = 0; - } - - return res; -} - -static void -brl_firmness (BrailleDisplay *brl, BrailleFirmness setting) { - writeParameter(brl, 3, - setting * 4 / BRL_FIRMNESS_MAXIMUM); -} diff --git a/BrailleDrivers/BrailleSense/help0.txt b/BrailleDrivers/BrailleSense/help0.txt deleted file mode 100644 index 1b7106b0201427041445af959e90f4a75f95e047..0000000000000000000000000000000000000000 --- a/BrailleDrivers/BrailleSense/help0.txt +++ /dev/null @@ -1,73 +0,0 @@ -Braille Sense Help - -General Navigation: -F4: go to cursor -F4+F1: go back (undo unexpected cursor tracking motion) -LEFT/RIGHT: go left/right one window -LEFT+F1 / RIGHT+F4: go to beginning/end of line -F2/F3: go up/down one line -F2+F1 / F3+F4: go to top/bottom line -LEFT+F1+F2 / RIGHT+F4+F3: go to previous/next command prompt -LEFT+F2 / RIGHT+F3: go to previous/next paragraph - -Keyboard (spacebar and dot keys) Modes: -SP+24: switch to (i)nput mode -SP+1345: switch to (n)avigation mode - -Navigation Mode: -SP: go to cursor -1/4: go left/right one window -2/5: go left/right to nonblank window -12/45: go left/right one character -123/456: go to beginning/end of line -3/6: go up/down one line -7/8: go up/down to line with different content -37/68: go up/down to line with different highlighting -23/56: go to top/bottom line -237/568: go to top-left/bottom-left corner -13/46: go to previous/next command prompt -27/58: go to previous/next paragraph -17/48: search backward/forward for text from cut buffer - -Display Modes: -SP+125: switch to/from (h)elp page -SP+123: enter/leave (l)earn mode -SP+234: switch to/from (s)tatus line - -Preferences Menu: -SP+134: enter/leave preferences (m)enu -SP+1235: (r)estore preferences from disk -SP+2456: (w)rite preferences to disk - -SP+235: switch to (6)-dot mode -SP+236: switch to (8)-dot mode -SP+14: toggle (c)ursor visibility -SP+124: toggle screen (f)reeze -SP+2345: toggle cursor (t)racking -SP+136: toggle highlighted character (u)nderlining - -Special Key Entry: -SP+2: home key -SP+3: end key -SP+5: page up key -SP+6: page down key -SP+25: cursor up key -SP+36: cursor down key -SP+23: cursor left key -SP+56: cursor right key - -Cursor Routing: -Rn: bring cursor to character -F2+F3: bring cursor to line (no horizontal motion) - -Cut and Paste: -SP+F1, Rn: start new cut buffer at character -SP+F2, Rn: append to cut buffer from character -SP+F3, Rn: linear cut to character -SP+F4, Rn: rectangular cut to character -SP+1234: (p)aste cut buffer at cursor - -Other Routing Key Functions: -SP+LEFT, Rn: position left end of window at character -SP+RIGHT, Rn: describe character - diff --git a/BrailleDrivers/Libbraille/help.txt b/BrailleDrivers/Libbraille/help.txt deleted file mode 100644 index 23151646558bb2259e16c000d2f8b261896ea329..0000000000000000000000000000000000000000 --- a/BrailleDrivers/Libbraille/help.txt +++ /dev/null @@ -1,3 +0,0 @@ -BRLTTY Help Screen for Libbraille -one more line to check - diff --git a/BrailleDrivers/Virtual/help.txt b/BrailleDrivers/Virtual/help.txt deleted file mode 100644 index b7cc370f10120f327e811547596f77621fef9019..0000000000000000000000000000000000000000 --- a/BrailleDrivers/Virtual/help.txt +++ /dev/null @@ -1 +0,0 @@ -Help for the virtual braille display driver. diff --git a/BrailleDrivers/VisioBraille/README b/BrailleDrivers/VisioBraille/README deleted file mode 100644 index 02199fe25dcaf3c8ac3e854703436c3e159e394d..0000000000000000000000000000000000000000 --- a/BrailleDrivers/VisioBraille/README +++ /dev/null @@ -1,101 +0,0 @@ -Ceci est le fichier README relatif à la version 0.2 du pilote VisioBraille -pour BRLTTY. - -Ce pilote a été testé avec succès avec les terminaux équipés de PROMs 0.0g et -5.0q-fr. Il est vraisemblable que toutes les PROMs de version >=4 -soient supportées par le présent pilote. - -Auteur et mainteneur actuel: -Sébastien Hinderer - -Bien que ce pilote soit utilisé de manière intensive, il n'est pas impossible -que certaines erreurs subsistent. -Si vous en trouvez, ou si vous avez des commentaires/suggestions quant à -l'évolution de ce pilote, n'hésitez surtout pas à me contacter. - -Notes pour l'installation et Paramètres -======================================= - -Une table braille compatible avec celle fournie en standard dans le TVB -(basée sur la table SAGEM) est disponible, dans le fichier text.visiob.tbl du -répertoire ../../BrailleTables - -Paramètres acceptés par ce pilote : - -- displaysize : permet de spécifier la taille de la plage tactile. - -- promversion: permet de spécifier la version de PROM utilisée. -Ce paramètre n'est nécessaire que pour des PROMs de version inférieure ou -égale à 3. Le support de ces PROMs n'étant disponible que pour Linux, et -moyennant une modification du noyau, merci de contacter directement l'auteur -si vous souhaitez utiliser une telle PROM. - -- baud: permet de spécifier la vitesse de la communication série. -Ce parmètre n'est pas nécessaire pour les terminaux VisioBraille et -n'est fourni que pour permettre l'utilisation d'émulateurs de terminaux qui -ne pourraient pas communiquer à une vitesse suffisante. Par conséquent, -n'utilisez pas ce paramètre, à moins de savoir ce que vous faites. - -Pour des informations sur la manière de passer des paramètres au pilote, ou -pour toute autre précision concernant l'installation et l'utilisation de -brltty, merci de consulter la documentation du répertoire ../../Documents - -Notes pour l'utilisation. -========================= - - Voici la description des fonctions attachées aux touches des claviers -auxiliaires ainsi qu'aux commandes ploc-ploc. - -~~a Active l'aide de BRLTTY -~~b Active/désactive les bips -~~c Menu de configuration BRLTTY (~~c pour le quitter) -~~d page down -~~e end -~~h home -~~i Active/désactive le mode info (Cf le manuel BRLTTY pour en savoir plus) -~~r Réinitialise les paramètres de BRLTTY -~~s Sauvegarde la configuration des paramètres BRLTTY -~~u page up - -Clavier auxiliaire: -Sous Linux, les touches A1,A2,A3,A6,A7,A8 permettent d'activer les -6 premières consoles virtuelles (correspond à alt-f1 à alt-f6). -L'action de ces touches n'est pas définie sur les autres systèmes -d'exploitation. -B6 coin supérieur gauche de l'écran -D6 coin inférieur gauche de l'écran -A4 fenêtre non vide précédente -A5 fenêtre non vide suivante -B7 ligne précédente -D7 ligne suivante -C6 fenêtre précédente -C8 fenêtre suivante -C7 fenêtre contenant le curseur -C1 flèche gauche -C3 flèche droite -B2 flèche haut -D2 flèche bas -B3 curseur on/off -D1 delete - - En outre, les touches backspace, tab, ctrl, alt... sont siulées de la même -manière que sous DOS et Windows. - -Autres liens -============ - -Un programme permettant le transfert de visiobases entre PC et TVB est -disponible à l'adresse suivante : - -http://brl.thefreecat.org - -Ce qu'il reste à faire -====================== - - Pour les prochaines versions du driver, il serait peut-être souhaitable -d'inclure la possibilité de reprohrammer les touches, un peu comme cela se -fait sous DOS avec la commande ~~f. - - --- -Sébastien Hinderer diff --git a/BrailleDrivers/XWindow/help.txt b/BrailleDrivers/XWindow/help.txt deleted file mode 100644 index 9db6518ad96b8a048f3d1071625fc3c07ca3f97f..0000000000000000000000000000000000000000 --- a/BrailleDrivers/XWindow/help.txt +++ /dev/null @@ -1 +0,0 @@ -Help Screen for BRLTTY XWindow Driver: diff --git a/BrailleTables/README b/BrailleTables/README deleted file mode 100644 index 185c2d783c828b86b1672cbbe6a5ad23ff4661da..0000000000000000000000000000000000000000 --- a/BrailleTables/README +++ /dev/null @@ -1,124 +0,0 @@ -Translation Tables ------------------- - -Files within this directory with names of the form text.*.tbl are text -translation tables. They are used by BRLTTY to translate the characters on the -screen into their corresponding braille representations. - -Files within this directory with names of the form attr*.tbl are attributes -translation tables. They are used by BRLTTY to translate the VGA highlighting -attributes of the characters on the screen into corresponding combinations of -braille dots. - -A translation table consists of a sequence of directives, one per line, which -define how each possible byte value is to be represented in braille. -White-space (blanks, tabs) at the beginning of a line, as well as before and/or -after any operand of any directive, is ignored. Lines containing only -white-space are ignored. If the first non-white-space character of a line is -"#" then that line is a comment and is ignored. - -=============================================================================== - -The Byte Directive ------------------- - - byte # - -Use the "byte" directive to specify how a byte (character) is to be represented -in braille. See the text translation tables for examples of its use. Since this -is by far the most commonly used directive, the "byte" keyword itself is -optional. - -The operand specifies the byte being defined. It may be: -* Any single character other than a backslash or a white-space character. -* A backslash-prefixed special character. These are: - - \\ A literal backslash. - - \# A literal number sign. - - \x## The two-digit hexadecimal representation of any character. - - \X## ... (the case of the X and of the digits isn't significant) - -The operand specifies the braille representation of the byte. It is a -sequence of one to eight dot numbers. If the dot number sequence is enclosed -within parentheses then the dot numbers may be separated from one another by -white-space. A dot number is a digit within the range 1-8 as defined by the -standard braille dot numbering convention (see below). The special dot number 0 -is recognized when not enclosed within parentheses, and means no dots; it may -not be used in conjunction with any other dot number. - -Examples: - - byte a 1 - b 12 - c (14) - d ( 1 4 5 ) - \\ 12567 - \x20 0 - -=============================================================================== - -The Dot Directive ------------------ - - dot # - -Use the "dot" directive to specify how the undefined bytes are to be -represented in braille. See the attributes translation tables for examples of -its use. The default is that all dots are on. - -The operand specifies the dot being defined. It is a single digit within -the range 1-8 as defined by the standard braille dot numbering convention (see -below). - -The operand specifies when the dot is raised. It may be: -* on The dot is raised. -* off The dot isn't raised. -* =bit The dot is raised if the named bit is on (set to 1). -* ~bit The dot is raised if the named bit is off (set to 0). - -The names of the bits are: -* 0X01 fg-blue -* 0X02 fg-green -* 0X04 fg-red -* 0X08 fg-bright -* 0X10 bg-blue -* 0X20 bg-green -* 0X40 bg-red -* 0X80 blink - -Examples: - - dot 1 on - dot 2 off - dot 3 =fg-red - dot 4 ~bg-blue - -=============================================================================== - -Standard Braille Dot Numbering Convention ------------------------------------------ - -A standard braille cell consists of six dots arranged in three rows and two -columns. Each dot can be specifically identified by its number as follows: - - Dot Position Row Col - 1 top-left 1 1 - 2 middle-left 2 1 - 3 bottom-left 3 1 - 4 top-right 1 2 - 5 middle-right 2 2 - 6 bottom-right 3 2 - -Computer braille has introduced a fourth row at the bottom. - - Dot Position Row Col - 7 below-left 4 1 - 8 below-right 4 2 - -Perhaps a picture will make this numbering convention easier to understand. - - 1 o o 4 - 2 o o 5 - 3 o o 6 - 7 o o 8 - -=============================================================================== diff --git a/BrailleTables/text.brf.tbl b/BrailleTables/text.brf.tbl deleted file mode 100644 index d98322a775925e0cd05298033f19d9a774032a3d..0000000000000000000000000000000000000000 --- a/BrailleTables/text.brf.tbl +++ /dev/null @@ -1,130 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - braille definition for .brf files - -\X20 ( ) - -A (1 ) -B (12 ) -C (1 4 ) -D (1 45 ) -E (1 5 ) -F (12 4 ) -G (12 45 ) -H (12 5 ) -I ( 2 4 ) -J ( 2 45 ) - -K (1 3 ) -L (123 ) -M (1 34 ) -N (1 345 ) -O (1 3 5 ) -P (1234 ) -Q (12345 ) -R (123 5 ) -S ( 234 ) -T ( 2345 ) - -U (1 3 6) -V (123 6) -X (1 34 6) -Y (1 3456) -Z (1 3 56) -& (1234 6) -= (123456) -( (123 56) -! ( 234 6) -) ( 23456) - -* (1 6) -< (12 6) -% (1 4 6) -? (1 456) -: (1 56) -$ (12 4 6) -] (12 456) -\\ (12 56) -[ ( 2 4 6) -W ( 2 456) - -1 ( 2 ) -2 ( 23 ) -3 ( 2 5 ) -4 ( 2 56) -5 ( 2 6) -6 ( 23 5 ) -7 ( 23 56) -8 ( 23 6) -9 ( 3 5 ) -0 ( 3 56) - -/ ( 34 ) -+ ( 34 6) -\# ( 3456) -> ( 345 ) -' ( 3 ) -- ( 3 6) - -@ ( 4 ) -^ ( 45 ) -_ ( 456) -" ( 5 ) -. ( 4 6) -; ( 56) -, ( 6) - -# For convenience, lowercase alphabetic characters are also defined -# so as to have readable text when not viewing a .brf file -# (like BRLTTY's config menu for switching to another braille table). -a (1 ) -b (12 ) -c (1 4 ) -d (1 45 ) -e (1 5 ) -f (12 4 ) -g (12 45 ) -h (12 5 ) -i ( 2 4 ) -j ( 2 45 ) -k (1 3 ) -l (123 ) -m (1 34 ) -n (1 345 ) -o (1 3 5 ) -p (1234 ) -q (12345 ) -r (123 5 ) -s ( 234 ) -t ( 2345 ) -u (1 3 6) -v (123 6) -w ( 2 456) -x (1 34 6) -y (1 3456) -z (1 3 56) - -# The following additional characters need to be defined -# because some .brf files contain non-standard characters -# and because some braille translators output non-standard characters. -{ ( 2 4 6) -} (12 456) -| (12 56) -~ ( 45 ) -` ( 4 ) -\X7F ( 456) diff --git a/BrailleTables/text.cz.tbl b/BrailleTables/text.cz.tbl deleted file mode 100644 index bb0ec28b769032c57330852935c43f62481b6cdf..0000000000000000000000000000000000000000 --- a/BrailleTables/text.cz.tbl +++ /dev/null @@ -1,275 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - Czech (iso-8859-2) - -\X00 (12345678) # null -\X01 (1 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 (1 5 78) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 2 4 78) # horizontal tabulation -\X0A ( 2 45 78) # line feed -\X0B (1 3 78) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 78) # shift out -\X0F (1 3 5 78) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 (123 5678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (1 345678) # end of medium -\X1A (1 3 5678) # substitute -\X1B (12345678) # escape -\X1C (12345678) # file separator -\X1D (12345678) # group separator -\X1E (12345678) # record separator -\X1F (12345678) # unit separator -\X20 ( ) # space -\X21 ( 23 5 ) # exclamation mark -\X22 ( 23 56 ) # quotation mark -\X23 ( 34567 ) # number sign -\X24 ( 23 5 8) # dollar sign -\X25 (1234 8) # percent sign -\X26 ( 23 5 78) # ampersand -\X27 ( 4 ) # apostrophe -\X28 ( 23 6 ) # left parenthesis -\X29 ( 3 56 ) # right parenthesis -\X2A ( 3 5 ) # asterisk -\X2B ( 2 56 ) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 3 ) # full stop -\X2F (12 456 ) # solidus -\X30 ( 2 45 8) # digit zero -\X31 (1 8) # digit one -\X32 (12 8) # digit two -\X33 (1 4 8) # digit three -\X34 (1 45 8) # digit four -\X35 (1 5 8) # digit five -\X36 (12 4 8) # digit six -\X37 (12 45 8) # digit seven -\X38 (12 5 8) # digit eight -\X39 ( 2 4 8) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C ( 23 8) # less-than sign -\X3D ( 23 5678) # equals sign -\X3E ( 567 ) # greater-than sign -\X3F ( 2 6 ) # question mark -\X40 (12 456 8) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 (123 567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B ( 23 67 ) # left square bracket -\X5C ( 23 6 8) # reverse solidus -\X5D ( 3 567 ) # right square bracket -\X5E ( 45 7 ) # circumflex accent -\X5F ( 3 67 ) # low line -\X60 ( 4 7 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 (123 56 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B ( 23 678) # left curly bracket -\X7C ( 456 ) # vertical line -\X7D ( 3 5678) # right curly bracket -\X7E ( 5 7 ) # tilde -\X7F ( 234 678) # delete -\X80 (12345678) # -\X81 (12345678) # -\X82 (12345678) # break permitted here -\X83 (12345678) # no break here -\X84 (12345678) # -\X85 (12345678) # next line -\X86 (12345678) # start of selected area -\X87 (12345678) # end of selected area -\X88 (12345678) # character tabulation set -\X89 (12345678) # character tabulation with justification -\X8A (12345678) # line tabulation set -\X8B (12345678) # partial line down -\X8C (12345678) # partial line up -\X8D (12345678) # reverse line feed -\X8E (12345678) # single shift two -\X8F (12345678) # single shift three -\X90 (12345678) # device control string -\X91 (12345678) # private use one -\X92 (12345678) # private use two -\X93 (12345678) # set transmit state -\X94 (12345678) # cancel character -\X95 (12345678) # message waiting -\X96 (12345678) # start of guarded area -\X97 (12345678) # end of guarded area -\X98 (12345678) # start of string -\X99 (12345678) # -\X9A (12345678) # single character introducer -\X9B (12345678) # control sequence introducer -\X9C (12345678) # string terminator -\X9D (12345678) # operating system command -\X9E (12345678) # privacy message -\X9F (12345678) # application program command -\XA0 ( 78) # no-break space -\XA1 (12345678) # latin capital letter a with ogonek -\XA2 (12345678) # breve -\XA3 (12345678) # latin capital letter l with stroke -\XA4 (12345678) # currency sign -\XA5 (12345678) # latin capital letter l with caron -\XA6 (12345678) # latin capital letter s with acute -\XA7 (12345678) # section sign -\XA8 (12345678) # diaeresis -\XA9 (1 567 ) # latin capital letter s with caron -\XAA (12345678) # latin capital letter s with cedilla -\XAB (12 567 ) # latin capital letter t with caron -\XAC (12345678) # latin capital letter z with acute -\XAD (12345678) # soft hyphen -\XAE ( 234 67 ) # latin capital letter z with caron -\XAF (12345678) # latin capital letter z with dot above -\XB0 (12345678) # degree sign -\XB1 (12345678) # latin small letter a with ogonek -\XB2 (12345678) # ogonek -\XB3 (12345678) # latin small letter l with stroke -\XB4 (12345678) # acute accent -\XB5 (12345678) # latin small letter l with caron -\XB6 (12345678) # latin small letter s with acute -\XB7 (12345678) # caron -\XB8 (12345678) # cedilla -\XB9 (1 56 ) # latin small letter s with caron -\XBA (12345678) # latin small letter s with cedilla -\XBB (12 56 ) # latin small letter t with caron -\XBC (12345678) # latin small letter z with acute -\XBD (12345678) # double acute accent -\XBE ( 234 6 ) # latin small letter z with caron -\XBF (12345678) # latin small letter z with dot above -\XC0 (12345678) # latin capital letter r with acute -\XC1 (1 67 ) # latin capital letter a with acute -\XC2 (12345678) # latin capital letter a with circumflex -\XC3 (12345678) # latin capital letter a with breve -\XC4 ( 345 78) # latin capital letter a with diaeresis -\XC5 (12345678) # latin capital letter l with acute -\XC6 (12345678) # latin capital letter c with acute -\XC7 (12345678) # latin capital letter c with cedilla -\XC8 (1 4 67 ) # latin capital letter c with caron -\XC9 ( 345 7 ) # latin capital letter e with acute -\XCA (12345678) # latin capital letter e with ogonek -\XCB (12345678) # latin capital letter e with diaeresis -\XCC (12 67 ) # latin capital letter e with caron -\XCD ( 34 7 ) # latin capital letter i with acute -\XCE (12345678) # latin capital letter i with circumflex -\XCF (1 4567 ) # latin capital letter d with caron -\XD0 (12345678) # latin capital letter d with stroke -\XD1 (12345678) # latin capital letter n with acute -\XD2 (12 4 67 ) # latin capital letter n with caron -\XD3 ( 2 4 67 ) # latin capital letter o with acute -\XD4 (12345678) # latin capital letter o with circumflex -\XD5 (12345678) # latin capital letter o with double acute -\XD6 ( 2 4 678) # latin capital letter o with diaeresis -\XD7 (12345678) # multiplication sign -\XD8 ( 2 4567 ) # latin capital letter r with caron -\XD9 ( 234567 ) # latin capital letter u with ring above -\XDA ( 34 67 ) # latin capital letter u with acute -\XDB (12345678) # latin capital letter u with double acute -\XDC (12 5678) # latin capital letter u with diaeresis -\XDD (1234 67 ) # latin capital letter y with acute -\XDE (12345678) # latin capital letter t with cedilla -\XDF ( 234 6 8) # latin small letter sharp s -\XE0 (12345678) # latin small letter r with acute -\XE1 (1 6 ) # latin small letter a with acute -\XE2 (12345678) # latin small letter a with circumflex -\XE3 (12345678) # latin small letter a with breve -\XE4 ( 345 8) # latin small letter a with diaeresis -\XE5 (12345678) # latin small letter l with acute -\XE6 (12345678) # latin small letter c with acute -\XE7 (12345678) # latin small letter c with cedilla -\XE8 (1 4 6 ) # latin small letter c with caron -\XE9 ( 345 ) # latin small letter e with acute -\XEA (12345678) # latin small letter e with ogonek -\XEB (12345678) # latin small letter e with diaeresis -\XEC (12 6 ) # latin small letter e with caron -\XED ( 34 ) # latin small letter i with acute -\XEE (12345678) # latin small letter i with circumflex -\XEF (1 456 ) # latin small letter d with caron -\XF0 (12345678) # latin small letter d with stroke -\XF1 (12345678) # latin small letter n with acute -\XF2 (12 4 6 ) # latin small letter n with caron -\XF3 ( 2 4 6 ) # latin small letter o with acute -\XF4 (12345678) # latin small letter o with circumflex -\XF5 (12345678) # latin small letter o with double acute -\XF6 ( 2 4 6 8) # latin small letter o with diaeresis -\XF7 (12345678) # division sign -\XF8 ( 2 456 ) # latin small letter r with caron -\XF9 ( 23456 ) # latin small letter u with ring above -\XFA ( 34 6 ) # latin small letter u with acute -\XFB (12345678) # latin small letter u with double acute -\XFC (12 56 8) # latin small letter u with diaeresis -\XFD (1234 6 ) # latin small letter y with acute -\XFE (12345678) # latin small letter t with cedilla -\XFF (12345678) # dot above diff --git a/BrailleTables/text.da-1252.tbl b/BrailleTables/text.da-1252.tbl deleted file mode 100644 index a37edc187fa4a9c23451280a1e547b49f876c83f..0000000000000000000000000000000000000000 --- a/BrailleTables/text.da-1252.tbl +++ /dev/null @@ -1,281 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - Danish Svend Thougaard 2002-11-18 (iso-8859-1) - -# This is the standard table defined by Svend Thougaard [2002-11-18]. It is -# primarily defined for use with the Windows-1252 character table. It is only -# in the BRLTTY package for reference as most of the control characters have -# been mapped to unusual braille patterns. The left brace ({) and percent sign -# (%) don't have logical representations. - -\X00 ( 8) # null -\X01 (1 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 ( 2 456 8) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 2 4 78) # horizontal tabulation -\X0A ( 678) # line feed -\X0B (1 3 6 8) # vertical tabulation -\X0C (123 78) # form feed -\X0D ( 2 5 7 ) # carriage return -\X0E (1 345 78) # shift out -\X0F (123 5 8) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (1 3 56 8) # device control two -\X13 ( 45 78) # device control three -\X14 ( 2 6 8) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 ( 2 78) # synchronous idle -\X17 ( 3 5 78) # end of transmission block -\X18 ( 78) # cancel -\X19 ( 6 8) # end of medium -\X1A (1 3 5678) # substitute -\X1B ( 2 678) # escape -\X1C ( 45678) # file separator -\X1D (123 6 8) # group separator -\X1E (1234 678) # record separator -\X1F ( 23 5678) # unit separator -\X20 ( ) # space -\X21 ( 23 5 ) # exclamation mark -\X22 ( 23 56 ) # quotation mark -\X23 ( 3456 8) # number sign -\X24 ( 2 5678) # dollar sign -\X25 ( 2 45 78) # percent sign -\X26 (1234 6 8) # ampersand -\X27 ( 4 ) # apostrophe -\X28 ( 23 6 8) # left parenthesis -\X29 ( 3 56 8) # right parenthesis -\X2A ( 3 5 ) # asterisk -\X2B ( 23 5 8) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 8) # hyphen-minus -\X2E ( 3 ) # full stop -\X2F ( 34 8) # solidus -\X30 ( 2 45 8) # digit zero -\X31 (1 8) # digit one -\X32 (12 8) # digit two -\X33 (1 4 8) # digit three -\X34 (1 45 8) # digit four -\X35 (1 5 8) # digit five -\X36 (12 4 8) # digit six -\X37 (12 45 8) # digit seven -\X38 (12 5 8) # digit eight -\X39 ( 2 4 8) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C ( 3 5 8) # less-than sign -\X3D ( 23 56 8) # equals sign -\X3E ( 2 67 ) # greater-than sign -\X3F ( 2 6 ) # question mark -\X40 ( 4 78) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B ( 23 678) # left square bracket -\X5C ( 34 7 ) # reverse solidus -\X5D ( 3 5678) # right square bracket -\X5E (1234 8) # circumflex accent -\X5F ( 3 678) # low line -\X60 ( 5 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B (123 678) # left curly bracket -\X7C ( 456 8) # vertical line -\X7D ( 345678) # right curly bracket -\X7E ( 4 67 ) # tilde -\X7F (12345678) # delete -\X80 (1 5 78) # -\X81 ( 45 ) # -\X82 ( 45 7 ) # break permitted here -\X83 ( 5 8) # no break here -\X84 ( 23 78) # -\X85 ( 6 ) # next line -\X86 ( 23 5 7 ) # start of selected area -\X87 ( 23 5 78) # end of selected area -\X88 ( 5678) # character tabulation set -\X89 ( 2 45678) # character tabulation with justification -\X8A ( 234 78) # line tabulation set -\X8B ( 456 ) # partial line down -\X8C (1 3 5 78) # partial line up -\X8D ( 3 567 ) # reverse line feed -\X8E ( 34 67 ) # single shift two -\X8F ( 2 7 ) # single shift three -\X90 ( 3 5 7 ) # device control string -\X91 ( 4 7 ) # private use one -\X92 ( 4 8) # private use two -\X93 ( 23 7 ) # set transmit state -\X94 ( 56 8) # cancel character -\X95 ( 3 7 ) # message waiting -\X96 ( 3 6 ) # start of guarded area -\X97 ( 3 67 ) # end of guarded area -\X98 ( 4 6 ) # start of string -\X99 ( 2345 78) # -\X9A ( 234 8) # single character introducer -\X9B ( 4567 ) # control sequence introducer -\X9C (1 3 5 8) # string terminator -\X9D ( 2 567 ) # operating system command -\X9E ( 34 6 ) # privacy message -\X9F ( 2345678) # application program command -\XA0 ( 2 567 ) # no-break space -\XA1 ( 2 56 ) # inverted exclamation mark -\XA2 ( 2 5 78) # cent sign -\XA3 (123 8) # pound sign -\XA4 ( 23 67 ) # currency sign -\XA5 ( 67 ) # yen sign -\XA6 ( 34 78) # broken bar -\XA7 ( 5 78) # section sign -\XA8 ( 56 ) # diaeresis -\XA9 (1 34 678) # copyright sign -\XAA ( 234 678) # feminine ordinal indicator -\XAB ( 5 7 ) # left-pointing double angle quotation mark -\XAC ( 34567 ) # not sign -\XAD ( 3 78) # soft hyphen -\XAE (123 5 78) # registered sign -\XAF ( 23 567 ) # macron -\XB0 ( 3 56 ) # degree sign -\XB1 (12345 8) # plus-minus sign -\XB2 ( 23 8) # superscript two -\XB3 ( 2 5 8) # superscript three -\XB4 ( 4 6 8) # acute accent -\XB5 ( 23 6 ) # micro sign -\XB6 (123456 8) # pilcrow sign -\XB7 ( 3 8) # middle dot -\XB8 ( 4 678) # cedilla -\XB9 ( 2 8) # superscript one -\XBA ( 7 ) # masculine ordinal indicator -\XBB ( 567 ) # right-pointing double angle quotation mark -\XBC (1 345 8) # vulgar fraction one quarter -\XBD ( 45 8) # vulgar fraction one half -\XBE ( 3456 ) # vulgar fraction three quarters -\XBF ( 34 ) # inverted question mark -\XC0 (123 567 ) # latin capital letter a with grave -\XC1 (123 5678) # latin capital letter a with acute -\XC2 (1 678) # latin capital letter a with circumflex -\XC3 (1 4 678) # latin capital letter a with tilde -\XC4 ( 345 78) # latin capital letter a with diaeresis -\XC5 (1 67 ) # latin capital letter a with ring above -\XC6 ( 345 7 ) # latin capital letter ae -\XC7 (1234 67 ) # latin capital letter c with cedilla -\XC8 ( 234 67 ) # latin capital letter e with grave -\XC9 (1234567 ) # latin capital letter e with acute -\XCA (12 67 ) # latin capital letter e with circumflex -\XCB (12 4 67 ) # latin capital letter e with diaeresis -\XCC (1 5678) # latin capital letter i with grave -\XCD (12 678) # latin capital letter i with acute -\XCE (1 4 67 ) # latin capital letter i with circumflex -\XCF (12 4567 ) # latin capital letter i with diaeresis -\XD0 (1 345678) # latin capital letter eth -\XD1 (12 45678) # latin capital letter n with tilde -\XD2 (12 4 678) # latin capital letter o with grave -\XD3 ( 34 678) # latin capital letter o with acute -\XD4 (1 4567 ) # latin capital letter o with circumflex -\XD5 (1 45678) # latin capital letter o with tilde -\XD6 ( 2 4 678) # latin capital letter o with diaeresis -\XD7 (1 34 6 8) # multiplication sign -\XD8 ( 2 4 67 ) # latin capital letter o with stroke -\XD9 ( 234567 ) # latin capital letter u with grave -\XDA (12 5678) # latin capital letter u with acute -\XDB (1 567 ) # latin capital letter u with circumflex -\XDC (12 567 ) # latin capital letter u with diaeresis -\XDD (1 34 78) # latin capital letter y with acute -\XDE (1 3 78) # latin capital letter thorn -\XDF ( 234 6 8) # latin small letter sharp s -\XE0 (123 56 ) # latin small letter a with grave -\XE1 (123 56 8) # latin small letter a with acute -\XE2 (1 6 8) # latin small letter a with circumflex -\XE3 (1 4 6 8) # latin small letter a with tilde -\XE4 ( 345 8) # latin small letter a with diaeresis -\XE5 (1 6 ) # latin small letter a with ring above -\XE6 ( 345 ) # latin small letter ae -\XE7 (1234 6 ) # latin small letter c with cedilla -\XE8 ( 234 6 ) # latin small letter e with grave -\XE9 (123456 ) # latin small letter e with acute -\XEA (12 6 ) # latin small letter e with circumflex -\XEB (12 4 6 ) # latin small letter e with diaeresis -\XEC (1 56 8) # latin small letter i with grave -\XED (12 6 8) # latin small letter i with acute -\XEE (1 4 6 ) # latin small letter i with circumflex -\XEF (12 456 ) # latin small letter i with diaeresis -\XF0 (1 3456 8) # latin small letter eth -\XF1 (12 456 8) # latin small letter n with tilde -\XF2 (12 4 6 8) # latin small letter o with grave -\XF3 ( 34 6 8) # latin small letter o with acute -\XF4 (1 456 ) # latin small letter o with circumflex -\XF5 (1 456 8) # latin small letter o with tilde -\XF6 ( 2 4 6 8) # latin small letter o with diaeresis -\XF7 ( 2 56 8) # division sign -\XF8 ( 2 4 6 ) # latin small letter o with stroke -\XF9 ( 23456 ) # latin small letter u with grave -\XFA (12 56 8) # latin small letter u with acute -\XFB (1 56 ) # latin small letter u with circumflex -\XFC (12 56 ) # latin small letter u with diaeresis -\XFD (1 34 8) # latin small letter y with acute -\XFE (1 3 8) # latin small letter thorn -\XFF ( 23456 8) # latin small letter y with diaeresis diff --git a/BrailleTables/text.da-lt.tbl b/BrailleTables/text.da-lt.tbl deleted file mode 100644 index ae0a88a35b247c3d5aebc6f91322dd766cfaf7d3..0000000000000000000000000000000000000000 --- a/BrailleTables/text.da-lt.tbl +++ /dev/null @@ -1,279 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - Danish LogText (iso-8859-1) - -# Danish LogText users are accustomed to the percent sign (%) and the -# exclamation point (!) being mapped to patterns which differ from the new 1252 -# standard. LogText users will be more comfortable with this table. - -\X00 (12345678) # null -\X01 (1 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 (1 5 78) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 2 4 78) # horizontal tabulation -\X0A ( 2 45 78) # line feed -\X0B (1 3 78) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 78) # shift out -\X0F (1 3 5 78) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 ( 2 45678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (1 345678) # end of medium -\X1A (1 3 5678) # substitute -\X1B ( 345 78) # escape -\X1C ( 45678) # file separator -\X1D ( 2 78) # group separator -\X1E (1234 678) # record separator -\X1F ( 23 5678) # unit separator -\X20 ( ) # space -\X21 ( 56 ) # exclamation mark -\X22 ( 23 56 ) # quotation mark -\X23 ( 3456 8) # number sign -\X24 (1 56 8) # dollar sign -\X25 ( 3 56 8) # percent sign -\X26 (1234 6 8) # ampersand -\X27 ( 6 ) # apostrophe -\X28 (12 6 8) # left parenthesis -\X29 ( 345 8) # right parenthesis -\X2A (1 34 6 8) # asterisk -\X2B ( 23 5 8) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 8) # hyphen-minus -\X2E ( 3 ) # full stop -\X2F ( 2 5 8) # solidus -\X30 ( 2 45 8) # digit zero -\X31 (1 8) # digit one -\X32 (12 8) # digit two -\X33 (1 4 8) # digit three -\X34 (1 45 8) # digit four -\X35 (1 5 8) # digit five -\X36 (12 4 8) # digit six -\X37 (12 45 8) # digit seven -\X38 (12 5 8) # digit eight -\X39 ( 2 4 8) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C (1 34 8) # less-than sign -\X3D ( 23 56 8) # equals sign -\X3E ( 234 8) # greater-than sign -\X3F ( 2 6 ) # question mark -\X40 ( 4 78) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B (123 6 8) # left square bracket -\X5C (1 6 8) # reverse solidus -\X5D (1 456 8) # right square bracket -\X5E ( 67 ) # circumflex accent -\X5F ( 78) # low line -\X60 ( 23 567 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B ( 2 4 6 8) # left curly bracket -\X7C ( 456 8) # vertical line -\X7D (1 3 5 8) # right curly bracket -\X7E ( 6 8) # tilde -\X7F ( 8) # delete -\X80 ( 4 ) # -\X81 ( 45 ) # -\X82 ( 45 7 ) # break permitted here -\X83 ( 5 ) # no break here -\X84 ( 23 78) # -\X85 ( 23 5 ) # next line -\X86 ( 23 5 7 ) # start of selected area -\X87 ( 23 5 78) # end of selected area -\X88 ( 5678) # character tabulation set -\X89 ( 678) # character tabulation with justification -\X8A ( 23 6 8) # line tabulation set -\X8B ( 456 ) # partial line down -\X8C ( 34 7 ) # partial line up -\X8D ( 3 567 ) # reverse line feed -\X8E ( 34 67 ) # single shift two -\X8F ( 2 7 ) # single shift three -\X90 ( 3 5 7 ) # device control string -\X91 ( 4 7 ) # private use one -\X92 ( 4 8) # private use two -\X93 ( 23 7 ) # set transmit state -\X94 ( 56 8) # cancel character -\X95 ( 3 7 ) # message waiting -\X96 ( 3 6 ) # start of guarded area -\X97 ( 3 67 ) # end of guarded area -\X98 ( 4 6 ) # start of string -\X99 ( 2 5 7 ) # -\X9A ( 34 ) # single character introducer -\X9B ( 4567 ) # control sequence introducer -\X9C ( 4 67 ) # string terminator -\X9D ( 2345 8) # operating system command -\X9E ( 34 6 ) # privacy message -\X9F ( 2345678) # application program command -\XA0 ( 2 567 ) # no-break space -\XA1 ( 2 56 ) # inverted exclamation mark -\XA2 ( 2 5 78) # cent sign -\XA3 (123 8) # pound sign -\XA4 ( 23 67 ) # currency sign -\XA5 ( 2 5678) # yen sign -\XA6 ( 34 78) # broken bar -\XA7 ( 5 78) # section sign -\XA8 ( 23 678) # diaeresis -\XA9 ( 345678) # copyright sign -\XAA ( 234 678) # feminine ordinal indicator -\XAB ( 5 7 ) # left-pointing double angle quotation mark -\XAC ( 34567 ) # not sign -\XAD ( 3 78) # soft hyphen -\XAE ( 45 78) # registered sign -\XAF ( 2 67 ) # macron -\XB0 ( 3 56 ) # degree sign -\XB1 (12345 8) # plus-minus sign -\XB2 ( 23 8) # superscript two -\XB3 (1234 8) # superscript three -\XB4 ( 4 6 8) # acute accent -\XB5 ( 23 6 ) # micro sign -\XB6 (123456 8) # pilcrow sign -\XB7 ( 3 8) # middle dot -\XB8 ( 4 678) # cedilla -\XB9 ( 2 8) # superscript one -\XBA ( 7 ) # masculine ordinal indicator -\XBB ( 567 ) # right-pointing double angle quotation mark -\XBC (1 345 8) # vulgar fraction one quarter -\XBD ( 45 8) # vulgar fraction one half -\XBE ( 3456 ) # vulgar fraction three quarters -\XBF ( 34 8) # inverted question mark -\XC0 (123 567 ) # latin capital letter a with grave -\XC1 (123 5678) # latin capital letter a with acute -\XC2 (1 678) # latin capital letter a with circumflex -\XC3 (1 4 678) # latin capital letter a with tilde -\XC4 ( 3 5 8) # latin capital letter a with diaeresis -\XC5 (1 67 ) # latin capital letter a with ring above -\XC6 ( 345 7 ) # latin capital letter ae -\XC7 (1234 67 ) # latin capital letter c with cedilla -\XC8 ( 234 67 ) # latin capital letter e with grave -\XC9 (1234567 ) # latin capital letter e with acute -\XCA (12 67 ) # latin capital letter e with circumflex -\XCB (12 4 67 ) # latin capital letter e with diaeresis -\XCC (1 5678) # latin capital letter i with grave -\XCD (12 678) # latin capital letter i with acute -\XCE (1 4 67 ) # latin capital letter i with circumflex -\XCF (12 4567 ) # latin capital letter i with diaeresis -\XD0 ( 3 5678) # latin capital letter eth -\XD1 (12 45678) # latin capital letter n with tilde -\XD2 (12 4 678) # latin capital letter o with grave -\XD3 ( 34 678) # latin capital letter o with acute -\XD4 (1 4567 ) # latin capital letter o with circumflex -\XD5 (1 45678) # latin capital letter o with tilde -\XD6 ( 2 4 678) # latin capital letter o with diaeresis -\XD7 (1 3 56 8) # multiplication sign -\XD8 ( 2 4 67 ) # latin capital letter o with stroke -\XD9 ( 234567 ) # latin capital letter u with grave -\XDA (12 5678) # latin capital letter u with acute -\XDB (1 567 ) # latin capital letter u with circumflex -\XDC (12 567 ) # latin capital letter u with diaeresis -\XDD ( 3 5 78) # latin capital letter y with acute -\XDE ( 2 678) # latin capital letter thorn -\XDF ( 234 6 8) # latin small letter sharp s -\XE0 (123 56 ) # latin small letter a with grave -\XE1 (123 56 8) # latin small letter a with acute -\XE2 ( 2 6 8) # latin small letter a with circumflex -\XE3 (1 4 6 8) # latin small letter a with tilde -\XE4 ( 5 8) # latin small letter a with diaeresis -\XE5 (1 6 ) # latin small letter a with ring above -\XE6 ( 345 ) # latin small letter ae -\XE7 (1234 6 ) # latin small letter c with cedilla -\XE8 ( 234 6 ) # latin small letter e with grave -\XE9 (123456 ) # latin small letter e with acute -\XEA (12 6 ) # latin small letter e with circumflex -\XEB (12 4 6 ) # latin small letter e with diaeresis -\XEC ( 3 678) # latin small letter i with grave -\XED (1 3 6 8) # latin small letter i with acute -\XEE (1 4 6 ) # latin small letter i with circumflex -\XEF (12 456 ) # latin small letter i with diaeresis -\XF0 (1 3456 8) # latin small letter eth -\XF1 (12 456 8) # latin small letter n with tilde -\XF2 (12 4 6 8) # latin small letter o with grave -\XF3 ( 34 6 8) # latin small letter o with acute -\XF4 (1 456 ) # latin small letter o with circumflex -\XF5 (123 5 8) # latin small letter o with tilde -\XF6 ( 3 5 ) # latin small letter o with diaeresis -\XF7 ( 2 56 8) # division sign -\XF8 ( 2 4 6 ) # latin small letter o with stroke -\XF9 ( 23456 ) # latin small letter u with grave -\XFA (12 56 8) # latin small letter u with acute -\XFB (1 56 ) # latin small letter u with circumflex -\XFC (12 56 ) # latin small letter u with diaeresis -\XFD ( 2 456 8) # latin small letter y with acute -\XFE (1 3 8) # latin small letter thorn -\XFF ( 23456 8) # latin small letter y with diaeresis diff --git a/BrailleTables/text.da.tbl b/BrailleTables/text.da.tbl deleted file mode 100644 index 77537522d87c8eb22f87224872339aa8f1031d2b..0000000000000000000000000000000000000000 --- a/BrailleTables/text.da.tbl +++ /dev/null @@ -1,279 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - Danish (iso-8859-1) - -# This is the table which comes closest to the Danish standard 1252 table. All -# control characters are mapped as their corresponding capital letters with -# dot-8 added. Most Danish braille users should use this table. - -\X00 (12345678) # null -\X01 (1 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 (1 5 78) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 2 4 78) # horizontal tabulation -\X0A ( 2 45 78) # line feed -\X0B (1 3 78) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 78) # shift out -\X0F (1 3 5 78) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 ( 2 45678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (1 345678) # end of medium -\X1A (1 3 5678) # substitute -\X1B ( 2 678) # escape -\X1C ( 45678) # file separator -\X1D (123 6 8) # group separator -\X1E (1234 678) # record separator -\X1F ( 23 5678) # unit separator -\X20 ( ) # space -\X21 ( 23 5 ) # exclamation mark -\X22 ( 23 56 ) # quotation mark -\X23 ( 3456 8) # number sign -\X24 ( 2 5678) # dollar sign -\X25 ( 678) # percent sign -\X26 (1234 6 8) # ampersand -\X27 ( 4 ) # apostrophe -\X28 ( 23 6 8) # left parenthesis -\X29 ( 3 56 8) # right parenthesis -\X2A ( 3 5 ) # asterisk -\X2B ( 23 5 8) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 8) # hyphen-minus -\X2E ( 3 ) # full stop -\X2F ( 34 ) # solidus -\X30 ( 2 45 8) # digit zero -\X31 (1 8) # digit one -\X32 (12 8) # digit two -\X33 (1 4 8) # digit three -\X34 (1 45 8) # digit four -\X35 (1 5 8) # digit five -\X36 (12 4 8) # digit six -\X37 (12 45 8) # digit seven -\X38 (12 5 8) # digit eight -\X39 ( 2 4 8) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C ( 3 5 8) # less-than sign -\X3D ( 23 56 8) # equals sign -\X3E ( 2 67 ) # greater-than sign -\X3F ( 2 6 ) # question mark -\X40 ( 4 78) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B ( 23 678) # left square bracket -\X5C ( 34 7 ) # reverse solidus -\X5D ( 3 5678) # right square bracket -\X5E (1234 8) # circumflex accent -\X5F ( 3 678) # low line -\X60 ( 5 8) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B ( 2 78) # left curly bracket -\X7C ( 456 8) # vertical line -\X7D ( 345678) # right curly bracket -\X7E ( 4 67 ) # tilde -\X7F ( 8) # delete -\X80 ( 2 456 8) # -\X81 ( 45 ) # -\X82 ( 45 7 ) # break permitted here -\X83 ( 5 ) # no break here -\X84 ( 23 78) # -\X85 ( 6 ) # next line -\X86 ( 23 5 7 ) # start of selected area -\X87 ( 23 5 78) # end of selected area -\X88 ( 5678) # character tabulation set -\X89 ( 3 5 78) # character tabulation with justification -\X8A ( 45 78) # line tabulation set -\X8B ( 456 ) # partial line down -\X8C (123 5 8) # partial line up -\X8D ( 3 567 ) # reverse line feed -\X8E ( 34 67 ) # single shift two -\X8F ( 2 7 ) # single shift three -\X90 ( 3 5 7 ) # device control string -\X91 ( 4 7 ) # private use one -\X92 ( 4 8) # private use two -\X93 ( 23 7 ) # set transmit state -\X94 ( 56 8) # cancel character -\X95 ( 3 7 ) # message waiting -\X96 ( 3 6 ) # start of guarded area -\X97 ( 3 67 ) # end of guarded area -\X98 ( 4 6 ) # start of string -\X99 ( 2 6 8) # -\X9A ( 234 8) # single character introducer -\X9B ( 4567 ) # control sequence introducer -\X9C (1 3 5 8) # string terminator -\X9D ( 2345 8) # operating system command -\X9E ( 34 6 ) # privacy message -\X9F ( 2345678) # application program command -\XA0 ( 2 567 ) # no-break space -\XA1 ( 2 56 ) # inverted exclamation mark -\XA2 ( 2 5 78) # cent sign -\XA3 (123 8) # pound sign -\XA4 ( 23 67 ) # currency sign -\XA5 ( 67 ) # yen sign -\XA6 ( 34 78) # broken bar -\XA7 ( 5 78) # section sign -\XA8 ( 56 ) # diaeresis -\XA9 ( 78) # copyright sign -\XAA ( 234 678) # feminine ordinal indicator -\XAB ( 5 7 ) # left-pointing double angle quotation mark -\XAC ( 34567 ) # not sign -\XAD ( 3 78) # soft hyphen -\XAE (1 3 56 8) # registered sign -\XAF ( 23 567 ) # macron -\XB0 ( 3 56 ) # degree sign -\XB1 (12345 8) # plus-minus sign -\XB2 ( 23 8) # superscript two -\XB3 ( 2 5 8) # superscript three -\XB4 ( 4 6 8) # acute accent -\XB5 ( 23 6 ) # micro sign -\XB6 (123456 8) # pilcrow sign -\XB7 ( 3 8) # middle dot -\XB8 ( 4 678) # cedilla -\XB9 ( 2 8) # superscript one -\XBA ( 7 ) # masculine ordinal indicator -\XBB ( 567 ) # right-pointing double angle quotation mark -\XBC (1 345 8) # vulgar fraction one quarter -\XBD ( 45 8) # vulgar fraction one half -\XBE ( 3456 ) # vulgar fraction three quarters -\XBF ( 34 8) # inverted question mark -\XC0 (123 567 ) # latin capital letter a with grave -\XC1 (123 5678) # latin capital letter a with acute -\XC2 (1 678) # latin capital letter a with circumflex -\XC3 (1 4 678) # latin capital letter a with tilde -\XC4 ( 345 78) # latin capital letter a with diaeresis -\XC5 (1 67 ) # latin capital letter a with ring above -\XC6 ( 345 7 ) # latin capital letter ae -\XC7 (1234 67 ) # latin capital letter c with cedilla -\XC8 ( 234 67 ) # latin capital letter e with grave -\XC9 (1234567 ) # latin capital letter e with acute -\XCA (12 67 ) # latin capital letter e with circumflex -\XCB (12 4 67 ) # latin capital letter e with diaeresis -\XCC (1 5678) # latin capital letter i with grave -\XCD (12 678) # latin capital letter i with acute -\XCE (1 4 67 ) # latin capital letter i with circumflex -\XCF (12 4567 ) # latin capital letter i with diaeresis -\XD0 ( 6 8) # latin capital letter eth -\XD1 (12 45678) # latin capital letter n with tilde -\XD2 (12 4 678) # latin capital letter o with grave -\XD3 ( 34 678) # latin capital letter o with acute -\XD4 (1 4567 ) # latin capital letter o with circumflex -\XD5 (1 45678) # latin capital letter o with tilde -\XD6 ( 2 4 678) # latin capital letter o with diaeresis -\XD7 (1 34 6 8) # multiplication sign -\XD8 ( 2 4 67 ) # latin capital letter o with stroke -\XD9 ( 234567 ) # latin capital letter u with grave -\XDA (12 5678) # latin capital letter u with acute -\XDB (1 567 ) # latin capital letter u with circumflex -\XDC (12 567 ) # latin capital letter u with diaeresis -\XDD ( 2 5 7 ) # latin capital letter y with acute -\XDE (1 3 6 8) # latin capital letter thorn -\XDF ( 234 6 8) # latin small letter sharp s -\XE0 (123 56 ) # latin small letter a with grave -\XE1 (123 56 8) # latin small letter a with acute -\XE2 (1 6 8) # latin small letter a with circumflex -\XE3 (1 4 6 8) # latin small letter a with tilde -\XE4 ( 345 8) # latin small letter a with diaeresis -\XE5 (1 6 ) # latin small letter a with ring above -\XE6 ( 345 ) # latin small letter ae -\XE7 (1234 6 ) # latin small letter c with cedilla -\XE8 ( 234 6 ) # latin small letter e with grave -\XE9 (123456 ) # latin small letter e with acute -\XEA (12 6 ) # latin small letter e with circumflex -\XEB (12 4 6 ) # latin small letter e with diaeresis -\XEC (1 56 8) # latin small letter i with grave -\XED (12 6 8) # latin small letter i with acute -\XEE (1 4 6 ) # latin small letter i with circumflex -\XEF (12 456 ) # latin small letter i with diaeresis -\XF0 (1 3456 8) # latin small letter eth -\XF1 (12 456 8) # latin small letter n with tilde -\XF2 (12 4 6 8) # latin small letter o with grave -\XF3 ( 34 6 8) # latin small letter o with acute -\XF4 (1 456 ) # latin small letter o with circumflex -\XF5 (1 456 8) # latin small letter o with tilde -\XF6 ( 2 4 6 8) # latin small letter o with diaeresis -\XF7 ( 2 56 8) # division sign -\XF8 ( 2 4 6 ) # latin small letter o with stroke -\XF9 ( 23456 ) # latin small letter u with grave -\XFA (12 56 8) # latin small letter u with acute -\XFB (1 56 ) # latin small letter u with circumflex -\XFC (12 56 ) # latin small letter u with diaeresis -\XFD (1 34 8) # latin small letter y with acute -\XFE (1 3 8) # latin small letter thorn -\XFF ( 23456 8) # latin small letter y with diaeresis diff --git a/BrailleTables/text.de.tbl b/BrailleTables/text.de.tbl deleted file mode 100644 index 9f451a611c5fefe8528c29801778fea79139ded5..0000000000000000000000000000000000000000 --- a/BrailleTables/text.de.tbl +++ /dev/null @@ -1,275 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - German (iso-8859-1) - -\X00 ( 345 78) # null -\X01 (1 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 (1 5 78) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 2 4 78) # horizontal tabulation -\X0A ( 2 45 78) # line feed -\X0B (1 3 78) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 78) # shift out -\X0F (1 3 5 78) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 ( 2 45678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (1 345678) # end of medium -\X1A (1 3 5678) # substitute -\X1B (123 5678) # escape -\X1C ( 34 78) # file separator -\X1D ( 2345678) # group separator -\X1E ( 234 678) # record separator -\X1F ( 45678) # unit separator -\X20 ( ) # space -\X21 ( 5 ) # exclamation mark -\X22 ( 4 ) # quotation mark -\X23 ( 3456 ) # number sign -\X24 ( 4 6 ) # dollar sign -\X25 (123456 ) # percent sign -\X26 (1234 6 ) # ampersand -\X27 ( 6 ) # apostrophe -\X28 ( 23 6 ) # left parenthesis -\X29 ( 3 56 ) # right parenthesis -\X2A ( 3 5 ) # asterisk -\X2B ( 23 5 ) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 3 ) # full stop -\X2F ( 2 56 ) # solidus -\X30 ( 34 6 ) # digit zero -\X31 (1 6 ) # digit one -\X32 (12 6 ) # digit two -\X33 (1 4 6 ) # digit three -\X34 (1 456 ) # digit four -\X35 (1 56 ) # digit five -\X36 (12 4 6 ) # digit six -\X37 (12 456 ) # digit seven -\X38 (12 56 ) # digit eight -\X39 ( 2 4 6 ) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C ( 56 ) # less-than sign -\X3D ( 23 56 ) # equals sign -\X3E ( 45 ) # greater-than sign -\X3F ( 2 6 ) # question mark -\X40 ( 345 7 ) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B (123 567 ) # left square bracket -\X5C ( 34 7 ) # reverse solidus -\X5D ( 234567 ) # right square bracket -\X5E ( 234 67 ) # circumflex accent -\X5F ( 4567 ) # low line -\X60 ( 345 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B (123 56 ) # left curly bracket -\X7C ( 34 ) # vertical line -\X7D ( 23456 ) # right curly bracket -\X7E ( 234 6 ) # tilde -\X7F ( 456 ) # delete -\X80 ( 2 67 ) # -\X81 (1 34 6 8) # -\X82 ( 2 56 8) # break permitted here -\X83 ( 2 5 8) # no break here -\X84 ( 3 5 7 ) # -\X85 (1 8) # next line -\X86 ( 234 8) # start of selected area -\X87 ( 2345 8) # end of selected area -\X88 ( 3 56 8) # character tabulation set -\X89 (1 45 8) # character tabulation with justification -\X8A ( 23 5 8) # line tabulation set -\X8B ( 5 78) # partial line down -\X8C (1 5 8) # partial line up -\X8D ( 2 4 67 ) # reverse line feed -\X8E ( 67 ) # single shift two -\X8F (12 4 67 ) # single shift three -\X90 ( 23 567 ) # device control string -\X91 ( 2 6 8) # private use one -\X92 ( 6 8) # private use two -\X93 (12 67 ) # set transmit state -\X94 ( 3 5 78) # cancel character -\X95 ( 45 8) # message waiting -\X96 (1 4 67 ) # start of guarded area -\X97 ( 4 8) # end of guarded area -\X98 (12 4567 ) # start of string -\X99 (1 3 5 8) # -\X9A (12 567 ) # single character introducer -\X9B ( 56 8) # control sequence introducer -\X9C ( 3 6 8) # string terminator -\X9D ( 34 67 ) # operating system command -\X9E ( 23 5 7 ) # privacy message -\X9F (12 4 678) # application program command -\XA0 ( 7 ) # no-break space -\XA1 ( 3 67 ) # inverted exclamation mark -\XA2 ( 5 8) # cent sign -\XA3 ( 4 67 ) # pound sign -\XA4 ( 3 678) # currency sign -\XA5 ( 4 6 8) # yen sign -\XA6 ( 2 678) # broken bar -\XA7 (12345678) # section sign -\XA8 ( 2 78) # diaeresis -\XA9 (1 4567 ) # copyright sign -\XAA (12 5 8) # feminine ordinal indicator -\XAB ( 5678) # left-pointing double angle quotation mark -\XAC ( 2 5678) # not sign -\XAD (12 4 8) # soft hyphen -\XAE ( 4 678) # registered sign -\XAF (12 45 8) # macron -\XB0 ( 456 8) # degree sign -\XB1 ( 23 5 78) # plus-minus sign -\XB2 (12 8) # superscript two -\XB3 ( 23 7 ) # superscript three -\XB4 (1 3 56 8) # acute accent -\XB5 (1 34 8) # micro sign -\XB6 (12345678) # pilcrow sign -\XB7 ( 3 7 ) # middle dot -\XB8 (1 4 8) # cedilla -\XB9 ( 45 7 ) # superscript one -\XBA ( 2 45 8) # masculine ordinal indicator -\XBB ( 45 78) # right-pointing double angle quotation mark -\XBC (1 3 6 8) # vulgar fraction one quarter -\XBD (123 6 8) # vulgar fraction one half -\XBE ( 34 678) # vulgar fraction three quarters -\XBF ( 3 8) # inverted question mark -\XC0 ( 3 78) # latin capital letter a with grave -\XC1 ( 2 7 ) # latin capital letter a with acute -\XC2 (1 3 8) # latin capital letter a with circumflex -\XC3 ( 23 67 ) # latin capital letter a with tilde -\XC4 ( 567 ) # latin capital letter a with diaeresis -\XC5 ( 34567 ) # latin capital letter a with ring above -\XC6 ( 4 7 ) # latin capital letter ae -\XC7 (1234 67 ) # latin capital letter c with cedilla -\XC8 ( 23 78) # latin capital letter e with grave -\XC9 ( 23 8) # latin capital letter e with acute -\XCA ( 8) # latin capital letter e with circumflex -\XCB (12345 8) # latin capital letter e with diaeresis -\XCC (123 8) # latin capital letter i with grave -\XCD ( 2 5 78) # latin capital letter i with acute -\XCE (12 45678) # latin capital letter i with circumflex -\XCF (1 67 ) # latin capital letter i with diaeresis -\XD0 ( 5 7 ) # latin capital letter eth -\XD1 ( 2 567 ) # latin capital letter n with tilde -\XD2 ( 2 8) # latin capital letter o with grave -\XD3 ( 2 4 678) # latin capital letter o with acute -\XD4 ( 2 4 8) # latin capital letter o with circumflex -\XD5 (1234 6 8) # latin capital letter o with tilde -\XD6 ( 3 5 8) # latin capital letter o with diaeresis -\XD7 (123 5 8) # multiplication sign -\XD8 ( 3 567 ) # latin capital letter o with stroke -\XD9 ( 678) # latin capital letter u with grave -\XDA ( 2 5 7 ) # latin capital letter u with acute -\XDB (12345678) # latin capital letter u with circumflex -\XDC ( 23 6 8) # latin capital letter u with diaeresis -\XDD ( 23 678) # latin capital letter y with acute -\XDE ( 3 5678) # latin capital letter thorn -\XDF ( 3456 8) # latin small letter sharp s -\XE0 (123 56 8) # latin small letter a with grave -\XE1 (1 6 8) # latin small letter a with acute -\XE2 (1 678) # latin small letter a with circumflex -\XE3 (1234 8) # latin small letter a with tilde -\XE4 ( 345 8) # latin small letter a with diaeresis -\XE5 ( 345678) # latin small letter a with ring above -\XE6 ( 4 78) # latin small letter ae -\XE7 (1234 678) # latin small letter c with cedilla -\XE8 ( 234 6 8) # latin small letter e with grave -\XE9 (12 6 8) # latin small letter e with acute -\XEA (12 678) # latin small letter e with circumflex -\XEB (12 4 6 8) # latin small letter e with diaeresis -\XEC ( 34 8) # latin small letter i with grave -\XED (1 4 6 8) # latin small letter i with acute -\XEE (1 4 678) # latin small letter i with circumflex -\XEF (12 456 8) # latin small letter i with diaeresis -\XF0 ( 23 56 8) # latin small letter eth -\XF1 (1 345 8) # latin small letter n with tilde -\XF2 ( 34 6 8) # latin small letter o with grave -\XF3 (1 456 8) # latin small letter o with acute -\XF4 (1 45678) # latin small letter o with circumflex -\XF5 (1 567 ) # latin small letter o with tilde -\XF6 ( 2 4 6 8) # latin small letter o with diaeresis -\XF7 (12 5678) # division sign -\XF8 ( 78) # latin small letter o with stroke -\XF9 ( 23456 8) # latin small letter u with grave -\XFA (1 56 8) # latin small letter u with acute -\XFB (1 5678) # latin small letter u with circumflex -\XFC (12 56 8) # latin small letter u with diaeresis -\XFD ( 23 5678) # latin small letter y with acute -\XFE (1234567 ) # latin small letter thorn -\XFF (123456 8) # latin small letter y with diaeresis diff --git a/BrailleTables/text.en_UK.tbl b/BrailleTables/text.en_UK.tbl deleted file mode 100644 index 1a6ad0547a02028b487167077e426921ddd59c5d..0000000000000000000000000000000000000000 --- a/BrailleTables/text.en_UK.tbl +++ /dev/null @@ -1,275 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - English (United Kingdom) - -\X00 ( 234 678) # null -\X01 (1 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 (1 5 78) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 2 4 78) # horizontal tabulation -\X0A ( 2 45 78) # line feed -\X0B (1 3 78) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 78) # shift out -\X0F (1 3 5 78) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 ( 2 45678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (1 345678) # end of medium -\X1A (1 3 5678) # substitute -\X1B (123 5678) # escape -\X1C ( 34 678) # file separator -\X1D ( 2345678) # group separator -\X1E ( 678) # record separator -\X1F ( 5 78) # unit separator -\X20 ( ) # space -\X21 ( 3456 ) # exclamation mark -\X22 ( 4 ) # quotation mark -\X23 ( 56 ) # number sign -\X24 ( 456 ) # dollar sign -\X25 ( 4 6 ) # percent sign -\X26 (1234 6 ) # ampersand -\X27 ( 3 ) # apostrophe -\X28 ( 45 ) # left parenthesis -\X29 ( 345 ) # right parenthesis -\X2A ( 3 5 ) # asterisk -\X2B ( 23 5 ) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 2 56 ) # full stop -\X2F ( 34 ) # solidus -\X30 (123456 ) # digit zero -\X31 (1 6 ) # digit one -\X32 (12 6 ) # digit two -\X33 (1 4 6 ) # digit three -\X34 (1 456 ) # digit four -\X35 (1 56 ) # digit five -\X36 (12 4 6 ) # digit six -\X37 (12 456 ) # digit seven -\X38 (12 56 ) # digit eight -\X39 ( 2 4 6 ) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C ( 23 6 ) # less-than sign -\X3D ( 23 56 ) # equals sign -\X3E ( 3 56 ) # greater-than sign -\X3F ( 2 6 ) # question mark -\X40 ( 234 67 ) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B (123 567 ) # left square bracket -\X5C ( 34 67 ) # reverse solidus -\X5D ( 234567 ) # right square bracket -\X5E ( 67 ) # circumflex accent -\X5F ( 5 ) # low line -\X60 ( 234 6 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B (123 56 ) # left curly bracket -\X7C ( 34 6 ) # vertical line -\X7D ( 23456 ) # right curly bracket -\X7E ( 6 ) # tilde -\X7F ( 5 7 ) # delete -\X80 ( 2 67 ) # -\X81 (1 34 6 8) # -\X82 ( 2 56 8) # break permitted here -\X83 ( 2 5 8) # no break here -\X84 ( 3 5 7 ) # -\X85 (1 8) # next line -\X86 ( 234 8) # start of selected area -\X87 ( 2345 8) # end of selected area -\X88 ( 3 56 8) # character tabulation set -\X89 (1 45 8) # character tabulation with justification -\X8A ( 23 5 8) # line tabulation set -\X8B ( 345 78) # partial line down -\X8C (1 5 8) # partial line up -\X8D ( 2 4 67 ) # reverse line feed -\X8E ( 4567 ) # single shift two -\X8F (12 4 67 ) # single shift three -\X90 ( 23 567 ) # device control string -\X91 ( 2 6 8) # private use one -\X92 ( 6 8) # private use two -\X93 (12 67 ) # set transmit state -\X94 ( 3 5 78) # cancel character -\X95 ( 45 8) # message waiting -\X96 (1 4 67 ) # start of guarded area -\X97 ( 4 8) # end of guarded area -\X98 (12 4567 ) # start of string -\X99 (1 3 5 8) # -\X9A (12 567 ) # single character introducer -\X9B ( 56 8) # control sequence introducer -\X9C ( 3 6 8) # string terminator -\X9D ( 34 7 ) # operating system command -\X9E ( 23 5 7 ) # privacy message -\X9F (12 4 678) # application program command -\XA0 ( 7 ) # no-break space -\XA1 ( 3 67 ) # inverted exclamation mark -\XA2 ( 5 8) # cent sign -\XA3 ( 4 67 ) # pound sign -\XA4 ( 3 678) # currency sign -\XA5 ( 4 6 8) # yen sign -\XA6 ( 2 678) # broken bar -\XA7 (12345678) # section sign -\XA8 ( 2 78) # diaeresis -\XA9 (1 4567 ) # copyright sign -\XAA (12 5 8) # feminine ordinal indicator -\XAB ( 5678) # left-pointing double angle quotation mark -\XAC ( 2 5678) # not sign -\XAD (12 4 8) # soft hyphen -\XAE ( 4 678) # registered sign -\XAF (12 45 8) # macron -\XB0 ( 456 8) # degree sign -\XB1 ( 23 5 78) # plus-minus sign -\XB2 (12 8) # superscript two -\XB3 ( 23 7 ) # superscript three -\XB4 (1 3 56 8) # acute accent -\XB5 (1 34 8) # micro sign -\XB6 (12345678) # pilcrow sign -\XB7 ( 3 7 ) # middle dot -\XB8 (1 4 8) # cedilla -\XB9 ( 45 7 ) # superscript one -\XBA ( 2 45 8) # masculine ordinal indicator -\XBB ( 45 78) # right-pointing double angle quotation mark -\XBC (1 3 6 8) # vulgar fraction one quarter -\XBD (123 6 8) # vulgar fraction one half -\XBE ( 34 78) # vulgar fraction three quarters -\XBF ( 3 8) # inverted question mark -\XC0 ( 3 78) # latin capital letter a with grave -\XC1 ( 2 7 ) # latin capital letter a with acute -\XC2 (1 3 8) # latin capital letter a with circumflex -\XC3 ( 23 67 ) # latin capital letter a with tilde -\XC4 ( 567 ) # latin capital letter a with diaeresis -\XC5 ( 34567 ) # latin capital letter a with ring above -\XC6 ( 4 7 ) # latin capital letter ae -\XC7 (1234 67 ) # latin capital letter c with cedilla -\XC8 ( 23 78) # latin capital letter e with grave -\XC9 ( 23 8) # latin capital letter e with acute -\XCA ( 8) # latin capital letter e with circumflex -\XCB (12345 8) # latin capital letter e with diaeresis -\XCC (123 8) # latin capital letter i with grave -\XCD ( 2 5 78) # latin capital letter i with acute -\XCE (12 45678) # latin capital letter i with circumflex -\XCF (1 67 ) # latin capital letter i with diaeresis -\XD0 ( 345 7 ) # latin capital letter eth -\XD1 ( 2 567 ) # latin capital letter n with tilde -\XD2 ( 2 8) # latin capital letter o with grave -\XD3 ( 2 4 678) # latin capital letter o with acute -\XD4 ( 2 4 8) # latin capital letter o with circumflex -\XD5 (1234 6 8) # latin capital letter o with tilde -\XD6 ( 3 5 8) # latin capital letter o with diaeresis -\XD7 (123 5 8) # multiplication sign -\XD8 ( 3 567 ) # latin capital letter o with stroke -\XD9 ( 45678) # latin capital letter u with grave -\XDA ( 2 5 7 ) # latin capital letter u with acute -\XDB (12345678) # latin capital letter u with circumflex -\XDC ( 23 6 8) # latin capital letter u with diaeresis -\XDD ( 23 678) # latin capital letter y with acute -\XDE ( 3 5678) # latin capital letter thorn -\XDF ( 3456 8) # latin small letter sharp s -\XE0 (123 56 8) # latin small letter a with grave -\XE1 (1 6 8) # latin small letter a with acute -\XE2 (1 678) # latin small letter a with circumflex -\XE3 (1234 8) # latin small letter a with tilde -\XE4 ( 345 8) # latin small letter a with diaeresis -\XE5 ( 345678) # latin small letter a with ring above -\XE6 ( 4 78) # latin small letter ae -\XE7 (1234 678) # latin small letter c with cedilla -\XE8 ( 234 6 8) # latin small letter e with grave -\XE9 (12 6 8) # latin small letter e with acute -\XEA (12 678) # latin small letter e with circumflex -\XEB (12 4 6 8) # latin small letter e with diaeresis -\XEC ( 34 8) # latin small letter i with grave -\XED (1 4 6 8) # latin small letter i with acute -\XEE (1 4 678) # latin small letter i with circumflex -\XEF (12 456 8) # latin small letter i with diaeresis -\XF0 ( 23 56 8) # latin small letter eth -\XF1 (1 345 8) # latin small letter n with tilde -\XF2 ( 34 6 8) # latin small letter o with grave -\XF3 (1 456 8) # latin small letter o with acute -\XF4 (1 45678) # latin small letter o with circumflex -\XF5 (1 567 ) # latin small letter o with tilde -\XF6 ( 2 4 6 8) # latin small letter o with diaeresis -\XF7 (12 5678) # division sign -\XF8 ( 78) # latin small letter o with stroke -\XF9 ( 23456 8) # latin small letter u with grave -\XFA (1 56 8) # latin small letter u with acute -\XFB (1 5678) # latin small letter u with circumflex -\XFC (12 56 8) # latin small letter u with diaeresis -\XFD ( 23 5678) # latin small letter y with acute -\XFE (1234567 ) # latin small letter thorn -\XFF (123456 8) # latin small letter y with diaeresis diff --git a/BrailleTables/text.en_US.tbl b/BrailleTables/text.en_US.tbl deleted file mode 100644 index 57790ebe1b0a00fd1ec1e6da908a84631276cc1c..0000000000000000000000000000000000000000 --- a/BrailleTables/text.en_US.tbl +++ /dev/null @@ -1,275 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - English (United States) - -\X00 ( 4 78) # null -\X01 (1 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 (1 5 78) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 2 4 78) # horizontal tabulation -\X0A ( 2 45 78) # line feed -\X0B (1 3 78) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 78) # shift out -\X0F (1 3 5 78) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 ( 2 45678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (1 345678) # end of medium -\X1A (1 3 5678) # substitute -\X1B ( 2 4 678) # escape -\X1C (12 5678) # file separator -\X1D (12 45678) # group separator -\X1E ( 45 78) # record separator -\X1F ( 45678) # unit separator -\X20 ( ) # space -\X21 ( 234 6 ) # exclamation mark -\X22 ( 5 ) # quotation mark -\X23 ( 3456 ) # number sign -\X24 (12 4 6 ) # dollar sign -\X25 (1 4 6 ) # percent sign -\X26 (1234 6 ) # ampersand -\X27 ( 3 ) # apostrophe -\X28 (123 56 ) # left parenthesis -\X29 ( 23456 ) # right parenthesis -\X2A (1 6 ) # asterisk -\X2B ( 34 6 ) # plus sign -\X2C ( 6 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 4 6 ) # full stop -\X2F ( 34 ) # solidus -\X30 ( 3 56 ) # digit zero -\X31 ( 2 ) # digit one -\X32 ( 23 ) # digit two -\X33 ( 2 5 ) # digit three -\X34 ( 2 56 ) # digit four -\X35 ( 2 6 ) # digit five -\X36 ( 23 5 ) # digit six -\X37 ( 23 56 ) # digit seven -\X38 ( 23 6 ) # digit eight -\X39 ( 3 5 ) # digit nine -\X3A (1 56 ) # colon -\X3B ( 56 ) # semicolon -\X3C (12 6 ) # less-than sign -\X3D (123456 ) # equals sign -\X3E ( 345 ) # greater-than sign -\X3F (1 456 ) # question mark -\X40 ( 4 7 ) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B ( 2 4 67 ) # left square bracket -\X5C (12 567 ) # reverse solidus -\X5D (12 4567 ) # right square bracket -\X5E ( 45 7 ) # circumflex accent -\X5F ( 456 ) # low line -\X60 ( 4 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B ( 2 4 6 ) # left curly bracket -\X7C (12 56 ) # vertical line -\X7D (12 456 ) # right curly bracket -\X7E ( 45 ) # tilde -\X7F ( 4567 ) # delete -\X80 ( 2 67 ) # -\X81 (1 34 6 8) # -\X82 ( 2 56 8) # break permitted here -\X83 ( 2 5 8) # no break here -\X84 ( 3 5 7 ) # -\X85 (1 8) # next line -\X86 ( 234 8) # start of selected area -\X87 ( 2345 8) # end of selected area -\X88 ( 3 56 8) # character tabulation set -\X89 (1 45 8) # character tabulation with justification -\X8A ( 23 5 8) # line tabulation set -\X8B ( 5 78) # partial line down -\X8C (1 5 8) # partial line up -\X8D ( 234 678) # reverse line feed -\X8E ( 67 ) # single shift two -\X8F (12 4 67 ) # single shift three -\X90 ( 23 567 ) # device control string -\X91 ( 2 6 8) # private use one -\X92 ( 6 8) # private use two -\X93 ( 34 7 ) # set transmit state -\X94 ( 3 5 78) # cancel character -\X95 ( 45 8) # message waiting -\X96 (1 4 67 ) # start of guarded area -\X97 ( 4 8) # end of guarded area -\X98 ( 234567 ) # start of string -\X99 (1 3 5 8) # -\X9A (12 67 ) # single character introducer -\X9B ( 56 8) # control sequence introducer -\X9C ( 3 6 8) # string terminator -\X9D ( 34 67 ) # operating system command -\X9E ( 23 5 7 ) # privacy message -\X9F (12 4 678) # application program command -\XA0 ( 7 ) # no-break space -\XA1 ( 3 67 ) # inverted exclamation mark -\XA2 ( 5 8) # cent sign -\XA3 ( 4 67 ) # pound sign -\XA4 ( 3 678) # currency sign -\XA5 ( 4 6 8) # yen sign -\XA6 ( 2 678) # broken bar -\XA7 (12345678) # section sign -\XA8 ( 2 78) # diaeresis -\XA9 (1 4567 ) # copyright sign -\XAA (12 5 8) # feminine ordinal indicator -\XAB (123 5678) # left-pointing double angle quotation mark -\XAC ( 2 5678) # not sign -\XAD ( 234 67 ) # soft hyphen -\XAE ( 4 678) # registered sign -\XAF (12 45 8) # macron -\XB0 ( 456 8) # degree sign -\XB1 ( 23 5 78) # plus-minus sign -\XB2 (12 8) # superscript two -\XB3 ( 23 7 ) # superscript three -\XB4 (1 3 56 8) # acute accent -\XB5 (1 34 8) # micro sign -\XB6 (12345678) # pilcrow sign -\XB7 ( 3 7 ) # middle dot -\XB8 (1 4 8) # cedilla -\XB9 (123 567 ) # superscript one -\XBA ( 2 45 8) # masculine ordinal indicator -\XBB ( 2345678) # right-pointing double angle quotation mark -\XBC (1 3 6 8) # vulgar fraction one quarter -\XBD (123 6 8) # vulgar fraction one half -\XBE ( 34 678) # vulgar fraction three quarters -\XBF ( 3 8) # inverted question mark -\XC0 ( 3 78) # latin capital letter a with grave -\XC1 ( 2 7 ) # latin capital letter a with acute -\XC2 (1 3 8) # latin capital letter a with circumflex -\XC3 ( 23 67 ) # latin capital letter a with tilde -\XC4 ( 567 ) # latin capital letter a with diaeresis -\XC5 ( 34567 ) # latin capital letter a with ring above -\XC6 ( 345 7 ) # latin capital letter ae -\XC7 (1234 67 ) # latin capital letter c with cedilla -\XC8 ( 23 78) # latin capital letter e with grave -\XC9 ( 23 8) # latin capital letter e with acute -\XCA ( 8) # latin capital letter e with circumflex -\XCB (12345 8) # latin capital letter e with diaeresis -\XCC (12 4 8) # latin capital letter i with grave -\XCD ( 2 5 78) # latin capital letter i with acute -\XCE ( 5678) # latin capital letter i with circumflex -\XCF (1 67 ) # latin capital letter i with diaeresis -\XD0 ( 5 7 ) # latin capital letter eth -\XD1 ( 2 567 ) # latin capital letter n with tilde -\XD2 ( 2 8) # latin capital letter o with grave -\XD3 (123 8) # latin capital letter o with acute -\XD4 ( 2 4 8) # latin capital letter o with circumflex -\XD5 (1234 6 8) # latin capital letter o with tilde -\XD6 ( 3 5 8) # latin capital letter o with diaeresis -\XD7 (123 5 8) # multiplication sign -\XD8 ( 3 567 ) # latin capital letter o with stroke -\XD9 ( 678) # latin capital letter u with grave -\XDA ( 2 5 7 ) # latin capital letter u with acute -\XDB (12345678) # latin capital letter u with circumflex -\XDC ( 23 6 8) # latin capital letter u with diaeresis -\XDD ( 23 678) # latin capital letter y with acute -\XDE ( 3 5678) # latin capital letter thorn -\XDF ( 3456 8) # latin small letter sharp s -\XE0 (123 56 8) # latin small letter a with grave -\XE1 (1 6 8) # latin small letter a with acute -\XE2 (1 678) # latin small letter a with circumflex -\XE3 (1234 8) # latin small letter a with tilde -\XE4 ( 345 8) # latin small letter a with diaeresis -\XE5 ( 345678) # latin small letter a with ring above -\XE6 ( 345 78) # latin small letter ae -\XE7 (1234 678) # latin small letter c with cedilla -\XE8 ( 234 6 8) # latin small letter e with grave -\XE9 (12 6 8) # latin small letter e with acute -\XEA (12 678) # latin small letter e with circumflex -\XEB (12 4 6 8) # latin small letter e with diaeresis -\XEC ( 34 8) # latin small letter i with grave -\XED (1 4 6 8) # latin small letter i with acute -\XEE (1 4 678) # latin small letter i with circumflex -\XEF (12 456 8) # latin small letter i with diaeresis -\XF0 ( 23 56 8) # latin small letter eth -\XF1 (1 345 8) # latin small letter n with tilde -\XF2 ( 34 6 8) # latin small letter o with grave -\XF3 (1 456 8) # latin small letter o with acute -\XF4 (1 45678) # latin small letter o with circumflex -\XF5 (1 567 ) # latin small letter o with tilde -\XF6 ( 2 4 6 8) # latin small letter o with diaeresis -\XF7 ( 34 78) # division sign -\XF8 ( 78) # latin small letter o with stroke -\XF9 ( 23456 8) # latin small letter u with grave -\XFA (1 56 8) # latin small letter u with acute -\XFB (1 5678) # latin small letter u with circumflex -\XFC (12 56 8) # latin small letter u with diaeresis -\XFD ( 23 5678) # latin small letter y with acute -\XFE (1234567 ) # latin small letter thorn -\XFF (123456 8) # latin small letter y with diaeresis diff --git a/BrailleTables/text.es.tbl b/BrailleTables/text.es.tbl deleted file mode 100644 index 5cc0ea5136eb5348b1e929d5067881620f0bbf1b..0000000000000000000000000000000000000000 --- a/BrailleTables/text.es.tbl +++ /dev/null @@ -1,275 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - Spanish (iso-8859-1) - -\X00 ( 5 78) # null -\X01 ( 2 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 (2 678) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 3 5 78) # horizontal tabulation -\X0A ( 2 45 78) # line feed -\X0B (1 3 78) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 78) # shift out -\X0F ( 23 678) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 ( 3 5678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 ( 2 45678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (1 345678) # end of medium -\X1A (1 3 5678) # substitute -\X1B ( 345678) # escape -\X1C (12345678) # file separator -\X1D ( 4 678) # group separator -\X1E ( 45 78) # record separator -\X1F ( 678) # unit separator -\X20 ( ) # space -\X21 ( 23 5 7 ) # exclamation mark -\X22 ( 56 ) # quotation mark -\X23 ( 3456 ) # number sign -\X24 (1234 67 ) # dollar sign -\X25 ( 456 ) # percent sign -\X26 (1234 6 ) # ampersand -\X27 ( 4 ) # apostrophe -\X28 (12 6 8) # left parenthesis -\X29 ( 345 7 ) # right parenthesis -\X2A ( 2 56 ) # asterisk -\X2B ( 23 5 ) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 3 ) # full stop -\X2F ( 34 78) # solidus -\X30 ( 34 678) # digit zero -\X31 (1 6 ) # digit one -\X32 (12 6 ) # digit two -\X33 (1 4 6 ) # digit three -\X34 (1 456 ) # digit four -\X35 (1 56 ) # digit five -\X36 (12 4 6 ) # digit six -\X37 (12 456 ) # digit seven -\X38 (12 56 ) # digit eight -\X39 ( 2 4 6 ) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C ( 23 6 ) # less-than sign -\X3D ( 23 56 ) # equals sign -\X3E ( 3 56 ) # greater-than sign -\X3F ( 2 6 ) # question mark -\X40 ( 5 ) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B ( 23 67 ) # left square bracket -\X5C (123456 ) # reverse solidus -\X5D ( 3 56 8) # right square bracket -\X5E ( 45 ) # circumflex accent -\X5F ( 6 ) # low line -\X60 ( 5 8) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B ( 4 6 ) # left curly bracket -\X7C ( 456 8) # vertical line -\X7D ( 3 5 ) # right curly bracket -\X7E ( 5 7 ) # tilde -\X7F ( 7 ) # delete -\X80 (123 5 8) # -\X81 ( 3 5 8) # -\X82 ( 3 7 ) # break permitted here -\X83 (12 4 8) # no break here -\X84 ( 78) # -\X85 (12 67 ) # next line -\X86 ( 2 8) # start of selected area -\X87 ( 2345 8) # end of selected area -\X88 ( 45 8) # character tabulation set -\X89 ( 45678) # character tabulation with justification -\X8A (123456 8) # line tabulation set -\X8B (12 5 8) # partial line down -\X8C (1 4 6 8) # partial line up -\X8D ( 3 5 7 ) # reverse line feed -\X8E (1 4 8) # single shift two -\X8F ( 2 7 ) # single shift three -\X90 ( 6 8) # device control string -\X91 (1 3 8) # private use one -\X92 ( 3 78) # private use two -\X93 (1 456 8) # set transmit state -\X94 (1234 8) # cancel character -\X95 (1 45 8) # message waiting -\X96 ( 3 6 8) # start of guarded area -\X97 ( 3 678) # end of guarded area -\X98 (1 3456 8) # start of string -\X99 ( 2 4 67 ) # -\X9A (12 567 ) # single character introducer -\X9B ( 3456 8) # control sequence introducer -\X9C (123 8) # string terminator -\X9D ( 2 5678) # operating system command -\X9E ( 2 56 8) # privacy message -\X9F ( 3 67 ) # application program command -\XA0 (1 3 56 8) # no-break space -\XA1 ( 23 5 78) # inverted exclamation mark -\XA2 (12 678) # cent sign -\XA3 ( 23 78) # pound sign -\XA4 ( 2 567 ) # currency sign -\XA5 (1 45678) # yen sign -\XA6 ( 4 78) # broken bar -\XA7 (1 67 ) # section sign -\XA8 ( 2 6 8) # diaeresis -\XA9 ( 23 567 ) # copyright sign -\XAA ( 23 56 8) # feminine ordinal indicator -\XAB ( 23 8) # left-pointing double angle quotation mark -\XAC ( 2 5 7 ) # not sign -\XAD ( 23 5 8) # soft hyphen -\XAE ( 23 6 8) # registered sign -\XAF ( 2 456 8) # macron -\XB0 ( 8) # degree sign -\XB1 (12 4 67 ) # plus-minus sign -\XB2 ( 4 7 ) # superscript two -\XB3 ( 56 8) # superscript three -\XB4 ( 4 67 ) # acute accent -\XB5 (1 34 6 8) # micro sign -\XB6 (1 4567 ) # pilcrow sign -\XB7 (1 4 678) # middle dot -\XB8 (1234567 ) # cedilla -\XB9 ( 23 7 ) # superscript one -\XBA ( 5678) # masculine ordinal indicator -\XBB ( 567 ) # right-pointing double angle quotation mark -\XBC (1 4 67 ) # vulgar fraction one quarter -\XBD ( 46 8) # vulgar fraction one half -\XBE ( 4 8) # vulgar fraction three quarters -\XBF ( 2 67 ) # inverted question mark -\XC0 (123 5678) # latin capital letter a with grave -\XC1 (123 567) # latin capital letter a with acute -\XC2 (1 78) # latin capital letter a with circumflex -\XC3 ( 3 567 ) # latin capital letter a with tilde -\XC4 ( 345 78) # latin capital letter a with diaeresis -\XC5 (123 6 8) # latin capital letter a with ring above -\XC6 ( 3 8) # latin capital letter ae -\XC7 (1234 678) # latin capital letter c with cedilla -\XC8 ( 234 678) # latin capital letter e with grave -\XC9 ( 234 67 ) # latin capital letter e with acute -\XCA (1 5 78) # latin capital letter e with circumflex -\XCB (12 4 678) # latin capital letter e with diaeresis -\XCC ( 345 ) # latin capital letter i with grave -\XCD ( 34 7 ) # latin capital letter i with acute -\XCE ( 2 4 78) # latin capital letter i with circumflex -\XCF (12 45678) # latin capital letter i with diaeresis -\XD0 (1 345 8) # latin capital letter eth -\XD1 (12 4567 ) # latin capital letter n with tilde -\XD2 ( 2 45 8) # latin capital letter o with grave -\XD3 ( 34 67 ) # latin capital letter o with acute -\XD4 (1 3 5 78) # latin capital letter o with circumflex -\XD5 (12 45 8) # latin capital letter o with tilde -\XD6 ( 2 4 678) # latin capital letter o with diaeresis -\XD7 (1 678) # multiplication sign -\XD8 ( 34567 ) # latin capital letter o with stroke -\XD9 ( 2345678) # latin capital letter u with grave -\XDA ( 234567 ) # latin capital letter u with acute -\XDB (13 678) # latin capital letter u with circumflex -\XDC (12 5678) # latin capital letter u with diaeresis -\XDD (1 567 ) # latin capital letter y with acute -\XDE (12345 8) # latin capital letter thorn -\XDF (12 8) # latin small letter sharp s -\XE0 (123 56 8) # latin small letter a with grave -\XE1 (123 56 ) # latin small letter a with acute -\XE2 (1 8) # latin small letter a with circumflex -\XE3 (1 6 8) # latin small letter a with tilde -\XE4 ( 345 8) # latin small letter a with diaeresis -\XE5 (1 5678) # latin small letter a with ring above -\XE6 (1 34 8) # latin small letter ae -\XE7 (1234 6 8) # latin small letter c with cedilla -\XE8 ( 234 6 8) # latin small letter e with grave -\XE9 ( 234 6 ) # latin small letter e with acute -\XEA (1 5 8) # latin small letter e with circumflex -\XEB (12 4 6 8) # latin small letter e with diaeresis -\XEC ( 34 8) # latin small letter i with grave -\XED ( 34 ) # latin small letter i with acute -\XEE ( 2 4 8) # latin small letter i with circumflex -\XEF ( 2 5 8) # latin small letter i with diaeresis -\XF0 ( 23 5678) # latin small letter eth -\XF1 (12 456 8) # latin small letter n with tilde -\XF2 ( 34 6 8) # latin small letter o with grave -\XF3 ( 34 6 ) # latin small letter o with acute -\XF4 (1 3 5 8) # latin small letter o with circumflex -\XF5 ( 4567 ) # latin small letter o with tilde -\XF6 ( 2 4 6 8) # latin small letter o with diaeresis -\XF7 ( 2 5 78) # division sign -\XF8 ( 45 7 ) # latin small letter o with stroke -\XF9 ( 23456 8) # latin small letter u with grave -\XFA ( 23456 ) # latin small letter u with acute -\XFB (1 3 6 8) # latin small letter u with circumflex -\XFC (12 56 8) # latin small letter u with diaeresis -\XFD ( 234 8) # latin small letter y with acute -\XFE (1 56 8) # latin small letter thorn -\XFF ( 67 ) # latin small letter y with diaeresis diff --git a/BrailleTables/text.fi1.tbl b/BrailleTables/text.fi1.tbl deleted file mode 100644 index d3d81e607172fa2ea0ac4c37934b392031a72901..0000000000000000000000000000000000000000 --- a/BrailleTables/text.fi1.tbl +++ /dev/null @@ -1,277 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - Finnish (iso-8859-1) - -# This table is very close to the official Finnish six dotbraille character set. - -\X00 ( 4 78) # null -\X01 (1 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 (1 5 78) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 2 4 78) # horizontal tabulation -\X0A ( 2 45 78) # line feed -\X0B (1 3 78) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 78) # shift out -\X0F (1 3 5 78) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 ( 2 45678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (1 345678) # end of medium -\X1A (1 3 5678) # substitute -\X1B (12 678) # escape -\X1C (12 5678) # file separator -\X1D ( 3 5 78) # group separator -\X1E ( 2 78) # record separator -\X1F ( 5 78) # unit separator -\X20 ( ) # space -\X21 ( 2 56 ) # exclamation mark -\X22 ( 56 ) # quotation mark -\X23 ( 3456 ) # number sign -\X24 ( 234 6 ) # dollar sign -\X25 (1 456 ) # percent sign -\X26 (1234 6 ) # ampersand -\X27 ( 5 ) # apostrophe -\X28 ( 23 6 ) # left parenthesis -\X29 ( 3 56 ) # right parenthesis -\X2A ( 3 5 ) # asterisk -\X2B ( 23 5 ) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 3 ) # full stop -\X2F ( 34 ) # solidus -\X30 ( 2 45 8) # digit zero -\X31 (1 8) # digit one -\X32 (12 8) # digit two -\X33 (1 4 8) # digit three -\X34 (1 45 8) # digit four -\X35 (1 5 8) # digit five -\X36 (12 4 8) # digit six -\X37 (12 45 8) # digit seven -\X38 (12 5 8) # digit eight -\X39 ( 2 4 8) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C (12 6 ) # less-than sign -\X3D ( 23 56 ) # equals sign -\X3E (1 56 ) # greater-than sign -\X3F ( 2 6 ) # question mark -\X40 ( 4 ) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B (123 56 ) # left square bracket -\X5C (1 4 6 ) # reverse solidus -\X5D ( 23456 ) # right square bracket -\X5E ( 45 7 ) # circumflex accent -\X5F ( 34 6 ) # low line -\X60 ( 4 7 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B (12 4 6 ) # left curly bracket -\X7C ( 456 ) # vertical line -\X7D (12 456 ) # right curly bracket -\X7E ( 45 ) # tilde -\X7F (1234 8) # delete -\X80 ( 23 67 ) # -\X81 (12 56 ) # -\X82 (123456 ) # break permitted here -\X83 ( 23 678) # no break here -\X84 ( 345 ) # -\X85 ( 2345 8) # next line -\X86 (1 6 ) # start of selected area -\X87 (1234567 ) # end of selected area -\X88 (12345678) # character tabulation set -\X89 ( 678) # character tabulation with justification -\X8A (12345 8) # line tabulation set -\X8B ( 3 56 8) # partial line down -\X8C ( 45 8) # partial line up -\X8D ( 4567 ) # reverse line feed -\X8E ( 345 7 ) # single shift two -\X8F (1 67 ) # single shift three -\X90 (1234567 ) # device control string -\X91 (1 34 8) # private use one -\X92 (12 56 8) # private use two -\X93 ( 3 567 ) # set transmit state -\X94 ( 2 4 6 ) # cancel character -\X95 ( 67 ) # message waiting -\X96 (123456 8) # start of guarded area -\X97 ( 3 6 8) # end of guarded area -\X98 ( 2 456 8) # start of string -\X99 ( 2 4 67 ) # -\X9A (12 567 ) # single character introducer -\X9B ( 4 7 ) # control sequence introducer -\X9C ( 7 ) # string terminator -\X9D ( 45 7 ) # operating system command -\X9E (1 34 6 8) # privacy message -\X9F (1 345 8) # application program command -\XA0 ( 2 678) # no-break space -\XA1 ( 23 5 8) # inverted exclamation mark -\XA2 (1 3 56 8) # cent sign -\XA3 (123 8) # pound sign -\XA4 (1 5 78) # currency sign -\XA5 (1 3 6 8) # yen sign -\XA6 ( 4 6 8) # broken bar -\XA7 ( 4 678) # section sign -\XA8 ( 2 5 8) # diaeresis -\XA9 (1 3 8) # copyright sign -\XAA ( 4 78) # feminine ordinal indicator -\XAB ( 23 78) # left-pointing double angle quotation mark -\XAC ( 3 5 7 ) # not sign -\XAD ( 8) # soft hyphen -\XAE (123 5 8) # registered sign -\XAF ( 23 56 8) # macron -\XB0 ( 56 8) # degree sign -\XB1 ( 3 8) # plus-minus sign -\XB2 ( 23 7 ) # superscript two -\XB3 ( 2 5 7 ) # superscript three -\XB4 ( 4 8) # acute accent -\XB5 ( 23 6 8) # micro sign -\XB6 ( 4 67 ) # pilcrow sign -\XB7 ( 3 78) # middle dot -\XB8 ( 3 5678) # cedilla -\XB9 ( 2 7 ) # superscript one -\XBA (1 3 5 8) # masculine ordinal indicator -\XBB ( 5678) # right-pointing double angle quotation mark -\XBC ( 3456 8) # vulgar fraction one quarter -\XBD ( 34567 ) # vulgar fraction one half -\XBE ( 345678) # vulgar fraction three quarters -\XBF ( 2 6 8) # inverted question mark -\XC0 (123 5678) # latin capital letter a with grave -\XC1 (123 567 ) # latin capital letter a with acute -\XC2 (1 678) # latin capital letter a with circumflex -\XC3 (1 4 678) # latin capital letter a with tilde -\XC4 ( 345 7 ) # latin capital letter a with diaeresis -\XC5 (1 67 ) # latin capital letter a with ring above -\XC6 ( 345 78) # latin capital letter ae -\XC7 (1234 67 ) # latin capital letter c with cedilla -\XC8 ( 234 678) # latin capital letter e with grave -\XC9 ( 234 67 ) # latin capital letter e with acute -\XCA (12 67 ) # latin capital letter e with circumflex -\XCB (12 4 67 ) # latin capital letter e with diaeresis -\XCC ( 34 78) # latin capital letter i with grave -\XCD ( 34 7 ) # latin capital letter i with acute -\XCE (1 4 67 ) # latin capital letter i with circumflex -\XCF (12 4567 ) # latin capital letter i with diaeresis -\XD0 (1 5678) # latin capital letter eth -\XD1 (12 45678) # latin capital letter n with tilde -\XD2 ( 34 678) # latin capital letter o with grave -\XD3 ( 34 67 ) # latin capital letter o with acute -\XD4 (1 4567 ) # latin capital letter o with circumflex -\XD5 (1 45678) # latin capital letter o with tilde -\XD6 ( 2 4 67 ) # latin capital letter o with diaeresis -\XD7 ( 3 7 ) # multiplication sign -\XD8 ( 2 4 678) # latin capital letter o with stroke -\XD9 ( 2345678) # latin capital letter u with grave -\XDA ( 234567 ) # latin capital letter u with acute -\XDB (1 567 ) # latin capital letter u with circumflex -\XDC (12 567 ) # latin capital letter u with diaeresis -\XDD (1234 678) # latin capital letter y with acute -\XDE (12 4 6 8) # latin capital letter thorn -\XDF ( 234 8) # latin small letter sharp s -\XE0 (123 56 8) # latin small letter a with grave -\XE1 (123 56 ) # latin small letter a with acute -\XE2 (1 6 ) # latin small letter a with circumflex -\XE3 (1 4 6 8) # latin small letter a with tilde -\XE4 ( 345 ) # latin small letter a with diaeresis -\XE5 (1 6 ) # latin small letter a with ring above -\XE6 ( 345 8) # latin small letter ae -\XE7 (1234 6 ) # latin small letter c with cedilla -\XE8 ( 234 6 8) # latin small letter e with grave -\XE9 ( 234 6 ) # latin small letter e with acute -\XEA (12 6 ) # latin small letter e with circumflex -\XEB (12 4 6 ) # latin small letter e with diaeresis -\XEC ( 34 8) # latin small letter i with grave -\XED ( 34 ) # latin small letter i with acute -\XEE (1 4 6 ) # latin small letter i with circumflex -\XEF (12 456 ) # latin small letter i with diaeresis -\XF0 (1 56 8) # latin small letter eth -\XF1 (12 456 8) # latin small letter n with tilde -\XF2 ( 34 6 8) # latin small letter o with grave -\XF3 ( 34 6 ) # latin small letter o with acute -\XF4 (1 456 ) # latin small letter o with circumflex -\XF5 (1 456 8) # latin small letter o with tilde -\XF6 ( 2 4 6 ) # latin small letter o with diaeresis -\XF7 ( 2 567 ) # division sign -\XF8 ( 2 4 6 8) # latin small letter o with stroke -\XF9 ( 23456 8) # latin small letter u with grave -\XFA ( 23456 ) # latin small letter u with acute -\XFB (1 56 ) # latin small letter u with circumflex -\XFC (12 56 ) # latin small letter u with diaeresis -\XFD (1234 6 8) # latin small letter y with acute -\XFE (12 4 678) # latin small letter thorn -\XFF (1 3456 8) # latin small letter y with diaeresis diff --git a/BrailleTables/text.fi2.tbl b/BrailleTables/text.fi2.tbl deleted file mode 100644 index d1e7929b0783f855bcec22bfa6cb46fec8ecd939..0000000000000000000000000000000000000000 --- a/BrailleTables/text.fi2.tbl +++ /dev/null @@ -1,278 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - Finnish (iso-8859-1) - -# This is a modification of the Finnesh table which makes better use of the -# 8-dot system. - -\X00 ( 4 78) # null -\X01 (1 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 (1 5 78) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 2 4 78) # horizontal tabulation -\X0A ( 2 45 78) # line feed -\X0B (1 3 78) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 78) # shift out -\X0F (1 3 5 78) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 ( 2 45678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (1 345678) # end of medium -\X1A (1 3 5678) # substitute -\X1B (12 678) # escape -\X1C (12 5678) # file separator -\X1D ( 3 5 78) # group separator -\X1E ( 2 78) # record separator -\X1F ( 5 78) # unit separator -\X20 ( ) # space -\X21 ( 23 5 ) # exclamation mark -\X22 ( 56 ) # quotation mark -\X23 ( 3456 ) # number sign -\X24 (12 4 6 ) # dollar sign -\X25 (1 4 6 ) # percent sign -\X26 (1234 6 ) # ampersand -\X27 ( 5 ) # apostrophe -\X28 ( 23 6 ) # left parenthesis -\X29 ( 3 56 ) # right parenthesis -\X2A ( 3 5 ) # asterisk -\X2B ( 23 5 7 ) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 3 ) # full stop -\X2F ( 34 ) # solidus -\X30 ( 2 45 8) # digit zero -\X31 (1 8) # digit one -\X32 (12 8) # digit two -\X33 (1 4 8) # digit three -\X34 (1 45 8) # digit four -\X35 (1 5 8) # digit five -\X36 (12 4 8) # digit six -\X37 (12 45 8) # digit seven -\X38 (12 5 8) # digit eight -\X39 ( 2 4 8) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C (123 8) # less-than sign -\X3D ( 23 56 ) # equals sign -\X3E ( 4567 ) # greater-than sign -\X3F ( 2 6 ) # question mark -\X40 ( 4 7 ) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B (123 56 ) # left square bracket -\X5C (12 6 8) # reverse solidus -\X5D ( 23456 ) # right square bracket -\X5E ( 45 7 ) # circumflex accent -\X5F ( 78) # low line -\X60 ( 4 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B (123 567 ) # left curly bracket -\X7C ( 456 8) # vertical line -\X7D ( 23456 8) # right curly bracket -\X7E ( 45 ) # tilde -\X7F (1234 8) # delete -\X80 ( 23 67 ) # -\X81 (12 56 ) # -\X82 (123456 ) # break permitted here -\X83 ( 23 678) # no break here -\X84 ( 345 ) # -\X85 ( 2345 8) # next line -\X86 (1 6 ) # start of selected area -\X87 (1234567 ) # end of selected area -\X88 (12345678) # character tabulation set -\X89 ( 678) # character tabulation with justification -\X8A (12345 8) # line tabulation set -\X8B ( 3 56 8) # partial line down -\X8C ( 45 8) # partial line up -\X8D ( 4567 ) # reverse line feed -\X8E ( 345 7 ) # single shift two -\X8F (1 67 ) # single shift three -\X90 (1234567 ) # device control string -\X91 (1 34 8) # private use one -\X92 (12 56 8) # private use two -\X93 ( 3 567 ) # set transmit state -\X94 ( 2 4 6 ) # cancel character -\X95 ( 67 ) # message waiting -\X96 (123456 8) # start of guarded area -\X97 ( 3 6 8) # end of guarded area -\X98 ( 2 456 8) # start of string -\X99 ( 2 4 67 ) # -\X9A (12 567 ) # single character introducer -\X9B ( 4 7 ) # control sequence introducer -\X9C ( 7 ) # string terminator -\X9D ( 45 7 ) # operating system command -\X9E (1 34 6 8) # privacy message -\X9F (1 345 8) # application program command -\XA0 ( 2 678) # no-break space -\XA1 ( 23 5 8) # inverted exclamation mark -\XA2 (1 3 56 8) # cent sign -\XA3 (123 8) # pound sign -\XA4 (1 5 78) # currency sign -\XA5 (1 3 6 8) # yen sign -\XA6 ( 4 6 8) # broken bar -\XA7 ( 4 678) # section sign -\XA8 ( 2 5 8) # diaeresis -\XA9 (1 3 8) # copyright sign -\XAA ( 4 78) # feminine ordinal indicator -\XAB ( 23 78) # left-pointing double angle quotation mark -\XAC ( 3 5 7 ) # not sign -\XAD ( 8) # soft hyphen -\XAE (123 5 8) # registered sign -\XAF ( 23 56 8) # macron -\XB0 ( 56 8) # degree sign -\XB1 ( 3 8) # plus-minus sign -\XB2 ( 23 7 ) # superscript two -\XB3 ( 2 5 7 ) # superscript three -\XB4 ( 4 8) # acute accent -\XB5 ( 23 6 8) # micro sign -\XB6 ( 4 67 ) # pilcrow sign -\XB7 ( 3 78) # middle dot -\XB8 ( 3 5678) # cedilla -\XB9 ( 2 7 ) # superscript one -\XBA (1 3 5 8) # masculine ordinal indicator -\XBB ( 5678) # right-pointing double angle quotation mark -\XBC ( 3456 8) # vulgar fraction one quarter -\XBD ( 34567 ) # vulgar fraction one half -\XBE ( 345678) # vulgar fraction three quarters -\XBF ( 2 6 8) # inverted question mark -\XC0 (123 5678) # latin capital letter a with grave -\XC1 (123 567 ) # latin capital letter a with acute -\XC2 (1 678) # latin capital letter a with circumflex -\XC3 (1 4 678) # latin capital letter a with tilde -\XC4 ( 345 7 ) # latin capital letter a with diaeresis -\XC5 (1 67 ) # latin capital letter a with ring above -\XC6 ( 345 78) # latin capital letter ae -\XC7 (1234 67 ) # latin capital letter c with cedilla -\XC8 ( 234 678) # latin capital letter e with grave -\XC9 ( 234 67 ) # latin capital letter e with acute -\XCA (12 67 ) # latin capital letter e with circumflex -\XCB (12 4 67 ) # latin capital letter e with diaeresis -\XCC ( 34 78) # latin capital letter i with grave -\XCD ( 34 7 ) # latin capital letter i with acute -\XCE (1 4 67 ) # latin capital letter i with circumflex -\XCF (12 4567 ) # latin capital letter i with diaeresis -\XD0 (1 5678) # latin capital letter eth -\XD1 (12 45678) # latin capital letter n with tilde -\XD2 ( 34 678) # latin capital letter o with grave -\XD3 ( 34 67 ) # latin capital letter o with acute -\XD4 (1 4567 ) # latin capital letter o with circumflex -\XD5 (1 45678) # latin capital letter o with tilde -\XD6 ( 2 4 67 ) # latin capital letter o with diaeresis -\XD7 ( 3 7 ) # multiplication sign -\XD8 ( 2 4 678) # latin capital letter o with stroke -\XD9 ( 2345678) # latin capital letter u with grave -\XDA ( 234567 ) # latin capital letter u with acute -\XDB (1 567 ) # latin capital letter u with circumflex -\XDC (12 567 ) # latin capital letter u with diaeresis -\XDD (1234 678) # latin capital letter y with acute -\XDE (12 4 6 8) # latin capital letter thorn -\XDF ( 234 8) # latin small letter sharp s -\XE0 (123 56 8) # latin small letter a with grave -\XE1 (123 56 ) # latin small letter a with acute -\XE2 (1 6 ) # latin small letter a with circumflex -\XE3 (1 4 6 8) # latin small letter a with tilde -\XE4 ( 345 ) # latin small letter a with diaeresis -\XE5 (1 6 ) # latin small letter a with ring above -\XE6 ( 345 8) # latin small letter ae -\XE7 (1234 6 ) # latin small letter c with cedilla -\XE8 ( 234 6 8) # latin small letter e with grave -\XE9 ( 234 6 ) # latin small letter e with acute -\XEA (12 6 ) # latin small letter e with circumflex -\XEB (12 4 6 ) # latin small letter e with diaeresis -\XEC ( 34 8) # latin small letter i with grave -\XED ( 34 ) # latin small letter i with acute -\XEE (1 4 6 ) # latin small letter i with circumflex -\XEF (12 456 ) # latin small letter i with diaeresis -\XF0 (1 56 8) # latin small letter eth -\XF1 (12 456 8) # latin small letter n with tilde -\XF2 ( 34 6 8) # latin small letter o with grave -\XF3 ( 34 6 ) # latin small letter o with acute -\XF4 (1 456 ) # latin small letter o with circumflex -\XF5 (1 456 8) # latin small letter o with tilde -\XF6 ( 2 4 6 ) # latin small letter o with diaeresis -\XF7 ( 2 567 ) # division sign -\XF8 ( 2 4 6 8) # latin small letter o with stroke -\XF9 ( 23456 8) # latin small letter u with grave -\XFA ( 23456 ) # latin small letter u with acute -\XFB (1 56 ) # latin small letter u with circumflex -\XFC (12 56 ) # latin small letter u with diaeresis -\XFD (1234 6 8) # latin small letter y with acute -\XFE (12 4 678) # latin small letter thorn -\XFF (1 3456 8) # latin small letter y with diaeresis diff --git a/BrailleTables/text.fr-2007.tbl b/BrailleTables/text.fr-2007.tbl deleted file mode 100644 index c7d57bdeebaff466ed793fe9b089a041f3bebcd8..0000000000000000000000000000000000000000 --- a/BrailleTables/text.fr-2007.tbl +++ /dev/null @@ -1,303 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - Unified French - 2007 - -# This is the 2007 unification of french computer braille tables, originally -# using cp1252 character set -# -# http://www.avh.asso.fr/index.php?module=14&nameRub=table_braille_informatique -# -# and here adapted to latin9. -# -# Some cp1252 characters are missing from latin9, so are not represented in this -# table: -# 164 ( 45 ) currency sign -# 166 ( 45 8) broken bar -# 168 ( 4 6 ) diaeresis -# 180 ( 5 ) acute accent -# 184 ( 456 ) cedilla -# 188 (1 3 6 8) vulgar fraction one quarter -# 189 ( 4 6 8) vulgar fraction one half -# 190 (1 34 6 8) vulgar fraction three quarters -# -# Some cp1252 characters are present in latin9, but in a different place, so -# these character positions are not represented. -# -# The only characters which are present in latin9 but not in cp1252 (and hence -# not covered by the official table) are \X80-\X9F, which are control -# characters. For this range, we just use the cp1252 coding "as is": the -# comment provides the cp1252 meaning in square brackets and the latin9 meaning -# in parentheses. Some cp1252 characters would conflict with latin9 equivalents -# so these have been set to 12345678 instead. - -\X00 (12345 8) # null -\X01 (1234 678) # start of heading -\X02 (12 5 8) # start of text -\X03 (1234 6 8) # end of text -\X04 (1 45 78) # end of transmission -\X05 (1 5 8) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 8) # bell -\X08 (12 5 78) # backspace -\X09 (12 4 678) # horizontal tabulation -\X0A ( 2 456 8) # line feed -\X0B (1 3 8) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 8) # shift out -\X0F ( 23 6 8) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 ( 2 45678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (123 6 8) # end of medium -\X1A (1 5678) # substitute -\X1B (12 5678) # escape -\X1C (1 4 678) # file separator -\X1D (12 678) # group separator -\X1E ( 23 5 7 ) # record separator -\X1F ( 23 67 ) # unit separator -\X20 ( ) # space -\X21 ( 23 5 ) # exclamation mark -\X22 ( 23 56 ) # quotation mark -\X23 ( 3456 8) # number sign -\X24 ( 3 5 7 ) # dollar sign -\X25 ( 34 6 8) # percent sign -\X26 (123456 8) # ampersand -\X27 ( 3 ) # apostrophe -\X28 ( 23 6 ) # left parenthesis -\X29 ( 3 56 ) # right parenthesis -\X2A ( 3 5 ) # asterisk -\X2B ( 23 5 78) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 2 56 ) # full stop -\X2F ( 34 ) # solidus -\X30 ( 3456 ) # digit zero -\X31 (1 6 ) # digit one -\X32 (12 6 ) # digit two -\X33 (1 4 6 ) # digit three -\X34 (1 456 ) # digit four -\X35 (1 56 ) # digit five -\X36 (12 4 6 ) # digit six -\X37 (12 456 ) # digit seven -\X38 (12 56 ) # digit eight -\X39 ( 2 4 6 ) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C ( 23 8) # less-than sign -\X3D ( 23 5678) # equals sign -\X3E ( 567 ) # greater-than sign -\X3F ( 2 6 ) # question mark -\X40 ( 345 ) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B ( 23 678) # left square bracket -\X5C ( 34 8) # reverse solidus -\X5D ( 3 5678) # right square bracket -\X5E ( 4 ) # circumflex accent -\X5F ( 5 78) # low line -\X60 ( 6 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B ( 23 78) # left curly bracket -\X7C ( 456 8) # vertical line -\X7D ( 5678) # right curly bracket -\X7E ( 3 8) # tilde -\X7F (123 8) # delete -\X80 (12345678) # [euro sign] (), is \XA4 in latin9, thus unused -\X81 (12345678) # [unused] () -\X82 ( 67 ) # [single low-9 quotation mark (break permitted here) -\X83 (12 4 8) # [latin small letter f with hook (no break here) -\X84 ( 56 ) # [double low-9 quotation mark () -\X85 ( 3 6 8) # [horizontal ellipsis (next line) -\X86 ( 3 56 8) # [dagger (start of selected area) -\X87 ( 3 567 ) # [double dagger (end of selected area) -\X88 ( 4 8) # [modifier letter circumflex accent (character tabulation set) -\X89 ( 34 678) # [per mille sign (character tabulation with justification) -\X8A (12345678) # [latin capital letter s with caron] (line tabulation set), is \XA6 in latin9, thus unused -\X8B ( 5 7 ) # [single left-pointing angle quotation mark] (partial line down) -\X8C (12345678) # [latin capital ligature oe] (partial line up), is \XBC in latin9, thus unused -\X8D (12345678) # [unused] (reverse line feed) -\X8E (12345678) # [latin capital letter z with caron] (single shift two), is \XB4 in latin9, thus unused -\X8F (12345678) # [unused] (single shift three) -\X90 (12345678) # [unused] (device control string) -\X91 ( 6 8) # [left signle quotation mark] (private use one) -\X92 ( 3 7 ) # [right single quotation mark] (private use two) -\X93 ( 3 78) # [left double quotation mark] (set transmit state) -\X94 ( 678) # [right double quotation mark] (cancel character) -\X95 (12 45 78) # [bullet] (message waiting) -\X96 ( 4 78) # [en dash] (start of guarded area) -\X97 ( 45 78) # [em dash] (end of guarded area) -\X98 ( 4 67 ) # [small tilde] (start of string) -\X99 ( 2345 8) # [trade mark sign] () -\X9A (12345678) # [latin small letter s with caron] (single character introducer), is \XA8 in latin9, thus unused -\X9B ( 5 8) # [single right-pointing angle quotation mark] (control sequence introducer) -\X9C (12345678) # [latin small ligature oe] (string terminator), is \XBD in latin9, thus unused -\X9D (12345678) # [unused] (operating system command) -\X9E (12345678) # [unused] (privacy message) -\X9F (12345678) # [latin capital letter y with diaeresis] (application program command), is \XBE in latin9, thus unused -\XA0 ( 7 ) # no-break space -\XA1 ( 23 5 8) # inverted exclamation mark -\XA2 (1 4 78) # cent sign -\XA3 ( 23 7 ) # pound sign -\XA4 (1 5 78) # euro sign -\XA5 ( 2 5678) # yen sign -\XA6 ( 234 678) # latin capital letter s with caron -\XA7 (1234 8) # section sign -\XA8 ( 234 6 8) # latin small letter s with caron -\XA9 (1 4 8) # copyright sign -\XAA (1 678) # feminine ordinal indicator -\XAB ( 23 56 8) # left-pointing double angle quotation mark -\XAC ( 2 567 ) # not sign -\XAD ( 78) # soft hyphen -\XAE (123 5 8) # registered sign -\XAF (1 34 8) # macron -\XB0 ( 2 67 ) # degree sign -\XB1 ( 3 678) # plus-minus sign -\XB2 ( 45 7 ) # superscript two -\XB3 ( 4567 ) # superscript three -\XB4 (1 3 5678) # latin capital letter z with caron -\XB5 ( 2 5 7 ) # micro sign -\XB6 ( 45678) # pilcrow sign -\XB7 ( 8) # middle dot -\XB8 (1 3 56 8) # latin small letter z with caron -\XB9 ( 4 7 ) # superscript one -\XBA ( 2 678) # masculine ordinal indicator -\XBB ( 23 567 ) # right-pointing double angle quotation mark -\XBC ( 2 4 67 ) # latin capital ligature oe -\XBD ( 2 4 6 8) # latin small ligature oe -\XBE (1 45678) # latin capital letter y with diaeresis -\XBF ( 2 6 8) #*inverted question mark -\XC0 (123 567 ) # latin capital letter a with grave -\XC1 (123 5678) # latin capital letter a with acute -\XC2 (1 67 ) # latin capital letter a with circumflex -\XC3 (1 78) # latin capital letter a with tilde -\XC4 ( 34567 ) #*latin capital letter a with diaeresis -\XC5 ( 2 7 ) #*latin capital letter a with ring above -\XC6 ( 345 7 ) #*latin capital letter ae -\XC7 (1234 67 ) #*latin capital letter c with cedilla -\XC8 ( 234 67 ) # latin capital letter e with grave -\XC9 (1234567 ) #*latin capital letter e with acute -\XCA (12 67 ) # latin capital letter e with circumflex -\XCB (12 4 67 ) # latin capital letter e with diaeresis -\XCC ( 2 4 78) # latin capital letter i with grave -\XCD ( 34 7 ) # latin capital letter i with acute -\XCE (1 4 67 ) # latin capital letter i with circumflex -\XCF (12 4567 ) # latin capital letter i with diaeresis -\XD0 (12 78) # latin capital letter eth -\XD1 (1 345 78) #*latin capital letter n with tilde -\XD2 (1 3 5 78) # latin capital letter o with grave -\XD3 ( 34 67 ) # latin capital letter o with acute -\XD4 (1 4567 ) # latin capital letter o with circumflex -\XD5 (1 3 78) # latin capital letter o with tilde -\XD6 ( 2 4 678) #*latin capital letter o with diaeresis -\XD7 ( 3 5 78) # multiplication sign -\XD8 ( 345678) # latin capital letter o with stroke -\XD9 ( 234567 ) # latin capital letter u with grave -\XDA ( 2345678) # latin capital letter u with acute -\XDB (1 567 ) # latin capital letter u with circumflex -\XDC (12 567 ) #*latin capital letter u with diaeresis -\XDD (1 345678) # latin capital letter y with acute -\XDE ( 2 45 78) # latin capital letter thorn -\XDF ( 234 8) # latin small letter sharp s -\XE0 (123 56 ) #*latin small letter a with grave -\XE1 (123 56 8) #*latin small letter a with acute -\XE2 (1 6 8) #*latin small letter a with circumflex -\XE3 (1 8) # latin small letter a with tilde -\XE4 ( 345 78) #*latin small letter a with diaeresis -\XE5 ( 2 8) #*latin small letter a with ring above -\XE6 ( 345 8) #*latin small letter ae -\XE7 (1234 6 ) #*latin small letter c with cedilla -\XE8 ( 234 6 ) #*latin small letter e with grave -\XE9 (123456 ) #*latin small letter e with acute -\XEA (12 6 8) #*latin small letter e with circumflex -\XEB (12 4 6 8) #*latin small letter e with diaeresis -\XEC ( 2 4 8) #*latin small letter i with grave -\XED ( 34 78) #*latin small letter i with acute -\XEE (1 4 6 8) #*latin small letter i with circumflex -\XEF (12 456 8) #*latin small letter i with diaeresis -\XF0 (12 8) # latin small letter eth -\XF1 (12 45678) #*latin small letter n with tilde -\XF2 (1 3 5 8) #*latin small letter o with grave -\XF3 ( 34 6 ) #*latin small letter o with acute -\XF4 (1 456 8) #*latin small letter o with circumflex -\XF5 ( 4 678) # latin small letter o with tilde -\XF6 ( 3 5 8) #*latin small letter o with diaeresis -\XF7 ( 2 5 78) # division sign -\XF8 ( 56 8) # latin small letter o with stroke -\XF9 ( 23456 ) #*latin small letter u with grave -\XFA ( 23456 8) #*latin small letter u with acute -\XFB (1 56 8) #*latin small letter u with circumflex -\XFC (12 56 8) #*latin small letter u with diaeresis -\XFD (1 3456 8) # latin small letter y with acute -\XFE ( 2 45 8) # latin small letter thorn -\XFF ( 2 56 8) #*latin small letter y with diaeresis diff --git a/BrailleTables/text.fr-cbifs.tbl b/BrailleTables/text.fr-cbifs.tbl deleted file mode 100644 index 4255c0d33cc29cb4ae42847b3eafcfa6eb3fa0cb..0000000000000000000000000000000000000000 --- a/BrailleTables/text.fr-cbifs.tbl +++ /dev/null @@ -1,275 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - Code Braille Informatique Français Standard (iso-8859-1) - -\X00 ( 345 78) # null -\X01 (1 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 (1 5 78) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 2 4 78) # horizontal tabulation -\X0A ( 2 45 78) # line feed -\X0B (1 3 78) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 78) # shift out -\X0F (1 3 5 78) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 ( 2 45678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (1 345678) # end of medium -\X1A (1 3 5678) # substitute -\X1B ( 2 4 678) # escape -\X1C (12 5678) # file separator -\X1D (12 45678) # group separator -\X1E ( 45 78) # record separator -\X1F ( 45678) # unit separator -\X20 ( ) # space -\X21 ( 23 5 ) # exclamation mark -\X22 ( 23 56 ) # quotation mark -\X23 ( 34 6 ) # number sign -\X24 ( 456 ) # dollar sign -\X25 (1234 6 ) # percent sign -\X26 (123456 ) # ampersand -\X27 ( 6 ) # apostrophe -\X28 ( 23 6 ) # left parenthesis -\X29 ( 3 56 ) # right parenthesis -\X2A ( 3 5 ) # asterisk -\X2B ( 23 5 78) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 3 ) # full stop -\X2F ( 2 56 ) # solidus -\X30 ( 3456 ) # digit zero -\X31 (1 6 ) # digit one -\X32 (12 6 ) # digit two -\X33 (1 4 6 ) # digit three -\X34 (1 456 ) # digit four -\X35 (1 56 ) # digit five -\X36 (12 4 6 ) # digit six -\X37 (12 456 ) # digit seven -\X38 (12 56 ) # digit eight -\X39 ( 2 4 6 ) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C ( 56 ) # less-than sign -\X3D ( 23 5678) # equals sign -\X3E ( 45 ) # greater-than sign -\X3F ( 2 6 ) # question mark -\X40 ( 345 ) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B (123 56 ) # left square bracket -\X5C ( 234 6 ) # reverse solidus -\X5D ( 23456 ) # right square bracket -\X5E ( 34 ) # circumflex accent -\X5F ( 4567 ) # low line -\X60 ( 345 7 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B (123 567 ) # left curly bracket -\X7C ( 234 67 ) # vertical line -\X7D ( 234567 ) # right curly bracket -\X7E ( 34 7 ) # tilde -\X7F ( 456 8) # delete -\X80 (1234 67 ) # -\X81 (12 56 8) # -\X82 (123456 8) # break permitted here -\X83 (1 678) # no break here -\X84 ( 4 8) # -\X85 (123 56 8) # next line -\X86 (1 4 6 8) # start of selected area -\X87 (1234 6 8) # end of selected area -\X88 (12 678) # character tabulation set -\X89 (12 4 6 8) # character tabulation with justification -\X8A ( 234 6 8) # line tabulation set -\X8B (12 456 8) # partial line down -\X8C (1 4 678) # partial line up -\X8D (1 4 6 8) # reverse line feed -\X8E (12 4 678) # single shift two -\X8F (1 4 678) # single shift three -\X90 ( 2345678) # device control string -\X91 ( 2 67 ) # private use one -\X92 (1234 678) # private use two -\X93 (1 45678) # set transmit state -\X94 ( 23 56 8) # cancel character -\X95 (1 4 6 8) # message waiting -\X96 (1 5678) # start of guarded area -\X97 ( 23456 8) # end of guarded area -\X98 (1 45678) # start of string -\X99 ( 23 5 78) # -\X9A (12 678) # single character introducer -\X9B ( 2 5 8) # control sequence introducer -\X9C ( 23 567 ) # string terminator -\X9D ( 2 78) # operating system command -\X9E ( 45 8) # privacy message -\X9F ( 456 8) # application program command -\XA0 (1 456 8) # no-break space -\XA1 ( 3 67 ) # inverted exclamation mark -\XA2 ( 2 4 6 8) # cent sign -\XA3 (12 56 8) # pound sign -\XA4 ( 2 7 ) # currency sign -\XA5 (12 456 8) # yen sign -\XA6 (12 67 ) # broken bar -\XA7 (12345678) # section sign -\XA8 (1 4567 ) # diaeresis -\XA9 ( 234567 ) # copyright sign -\XAA (1234 67 ) # feminine ordinal indicator -\XAB ( 4 67 ) # left-pointing double angle quotation mark -\XAC (1 67 ) # not sign -\XAD ( 3 6 8) # soft hyphen -\XAE (1234567 ) # registered sign -\XAF ( 567 ) # macron -\XB0 ( 23 6 8) # degree sign -\XB1 ( 2 8) # plus-minus sign -\XB2 (123456 8) # superscript two -\XB3 ( 2 5 7 ) # superscript three -\XB4 ( 2 567 ) # acute accent -\XB5 (1234 6 8) # micro sign -\XB6 (12345678) # pilcrow sign -\XB7 (1 56 8) # middle dot -\XB8 ( 23 67 ) # cedilla -\XB9 ( 3 5 7 ) # superscript one -\XBA ( 3 7 ) # masculine ordinal indicator -\XBB ( 34 7 ) # right-pointing double angle quotation mark -\XBC ( 67 ) # vulgar fraction one quarter -\XBD ( 34 67 ) # vulgar fraction one half -\XBE ( 345 7 ) # vulgar fraction three quarters -\XBF (123 567 ) # inverted question mark -\XC0 ( 78) # latin capital letter a with grave -\XC1 ( 234 678) # latin capital letter a with acute -\XC2 ( 5 78) # latin capital letter a with circumflex -\XC3 ( 345678) # latin capital letter a with tilde -\XC4 (1 345 8) # latin capital letter a with diaeresis -\XC5 (1 3 5 8) # latin capital letter a with ring above -\XC6 (123 5 8) # latin capital letter ae -\XC7 ( 4 8) # latin capital letter c with cedilla -\XC8 (123 5678) # latin capital letter e with grave -\XC9 (1234 8) # latin capital letter e with acute -\XCA (1 678) # latin capital letter e with circumflex -\XCB ( 34 678) # latin capital letter e with diaeresis -\XCC ( 678) # latin capital letter i with grave -\XCD ( 3 678) # latin capital letter i with acute -\XCE ( 4 678) # latin capital letter i with circumflex -\XCF ( 34 78) # latin capital letter i with diaeresis -\XD0 ( 3 5678) # latin capital letter eth -\XD1 (1 4 67 ) # latin capital letter n with tilde -\XD2 ( 23 78) # latin capital letter o with grave -\XD3 ( 2 5 78) # latin capital letter o with acute -\XD4 ( 2 5678) # latin capital letter o with circumflex -\XD5 ( 2 678) # latin capital letter o with tilde -\XD6 (1 3456 8) # latin capital letter o with diaeresis -\XD7 ( 23 5678) # multiplication sign -\XD8 ( 23 678) # latin capital letter o with stroke -\XD9 ( 3 5 78) # latin capital letter u with grave -\XDA (1 5678) # latin capital letter u with acute -\XDB ( 5678) # latin capital letter u with circumflex -\XDC (1 3 56 8) # latin capital letter u with diaeresis -\XDD (12345678) # latin capital letter y with acute -\XDE ( 345 78) # latin capital letter thorn -\XDF ( 234 6 8) # latin small letter sharp s -\XE0 (123 56 ) # latin small letter a with grave -\XE1 ( 7 ) # latin small letter a with acute -\XE2 (1 6 ) # latin small letter a with circumflex -\XE3 ( 3456 8) # latin small letter a with tilde -\XE4 (1 45 8) # latin small letter a with diaeresis -\XE5 (12 4 8) # latin small letter a with ring above -\XE6 (12345 8) # latin small letter ae -\XE7 (1234 6 ) # latin small letter c with cedilla -\XE8 ( 234 6 ) # latin small letter e with grave -\XE9 (123456 ) # latin small letter e with acute -\XEA (12 6 ) # latin small letter e with circumflex -\XEB (12 4 6 ) # latin small letter e with diaeresis -\XEC (1 34 8) # latin small letter i with grave -\XED ( 234 67 ) # latin small letter i with acute -\XEE (1 4 6 ) # latin small letter i with circumflex -\XEF (12 456 ) # latin small letter i with diaeresis -\XF0 ( 3 56 8) # latin small letter eth -\XF1 (12 4 67 ) # latin small letter n with tilde -\XF2 (1 3 6 8) # latin small letter o with grave -\XF3 ( 5 7 ) # latin small letter o with acute -\XF4 (1 456 ) # latin small letter o with circumflex -\XF5 ( 2 6 8) # latin small letter o with tilde -\XF6 ( 2345 8) # latin small letter o with diaeresis -\XF7 ( 23 5 8) # division sign -\XF8 (1 3 5 7 ) # latin small letter o with stroke -\XF9 ( 23456 ) # latin small letter u with grave -\XFA ( 34567 ) # latin small letter u with acute -\XFB (1 56 ) # latin small letter u with circumflex -\XFC (12 56 ) # latin small letter u with diaeresis -\XFD ( 23 7 ) # latin small letter y with acute -\XFE ( 345 8) # latin small letter thorn -\XFF (1 567 ) # latin small letter y with diaeresis diff --git a/BrailleTables/text.fr_CA.tbl b/BrailleTables/text.fr_CA.tbl deleted file mode 100644 index c2dd2d8f8f90b3662f21128be27d917a9f80ddad..0000000000000000000000000000000000000000 --- a/BrailleTables/text.fr_CA.tbl +++ /dev/null @@ -1,275 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - French (Canada) - -\X00 ( 4 78) # null -\X01 (1 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 (1 5 78) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 2 4 78) # horizontal tabulation -\X0A ( 2 45 78) # line feed -\X0B (1 3 78) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 78) # shift out -\X0F (1 3 5 78) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 ( 2 45678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (1 345678) # end of medium -\X1A (1 3 5678) # substitute -\X1B ( 2 4 678) # escape -\X1C (12 5678) # file separator -\X1D (12 45678) # group separator -\X1E ( 45 78) # record separator -\X1F ( 45678) # unit separator -\X20 ( ) # space -\X21 ( 23 5 ) # exclamation mark -\X22 (1 4 8) # quotation mark -\X23 ( 3456 ) # number sign -\X24 (12 4 6 ) # dollar sign -\X25 (1 4 6 8) # percent sign -\X26 (1234 6 8) # ampersand -\X27 ( 3 ) # apostrophe -\X28 (123 567 ) # left parenthesis -\X29 ( 234567 ) # right parenthesis -\X2A ( 3 5 ) # asterisk -\X2B ( 23 5 7 ) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 2 56 ) # full stop -\X2F ( 34 7 ) # solidus -\X30 ( 3 56 8) # digit zero -\X31 ( 2 8) # digit one -\X32 ( 23 8) # digit two -\X33 ( 2 5 8) # digit three -\X34 ( 2 56 8) # digit four -\X35 ( 2 6 8) # digit five -\X36 ( 23 5 8) # digit six -\X37 ( 23 56 8) # digit seven -\X38 ( 23 6 8) # digit eight -\X39 ( 3 5 8) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C ( 23 6 ) # less-than sign -\X3D (1234567 ) # equals sign -\X3E ( 3 56 ) # greater-than sign -\X3F (1 456 ) # question mark -\X40 ( 4 7 ) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B ( 2 4 67 ) # left square bracket -\X5C (1 67 ) # reverse solidus -\X5D (12 4567 ) # right square bracket -\X5E ( 45 7 ) # circumflex accent -\X5F ( 456 ) # low line -\X60 ( 4 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B ( 2 4 6 ) # left curly bracket -\X7C (12 56 ) # vertical line -\X7D (12 456 ) # right curly bracket -\X7E ( 45 ) # tilde -\X7F ( 4567 ) # delete -\X80 ( 3 78) # -\X81 (12 6 8) # -\X82 ( 23456 8) # break permitted here -\X83 ( 5 8) # no break here -\X84 (12 4 6 8) # -\X85 ( 8) # next line -\X86 (1 4 6 8) # start of selected area -\X87 ( 3 8) # end of selected area -\X88 (1 6 8) # character tabulation set -\X89 ( 34 6 8) # character tabulation with justification -\X8A (123 56 8) # line tabulation set -\X8B ( 34 8) # partial line down -\X8C ( 4 6 8) # partial line up -\X8D ( 6 8) # reverse line feed -\X8E (12 4 678) # single shift two -\X8F (1 4 678) # single shift three -\X90 ( 2345678) # device control string -\X91 ( 2 67 ) # private use one -\X92 (1234 678) # private use two -\X93 ( 2 56 8) # set transmit state -\X94 ( 23 56 8) # cancel character -\X95 ( 23 8) # message waiting -\X96 ( 56 8) # start of guarded area -\X97 ( 3 5 8) # end of guarded area -\X98 (1 45678) # start of string -\X99 ( 23 5 78) # -\X9A (12 678) # single character introducer -\X9B ( 2 5 8) # control sequence introducer -\X9C ( 23 567 ) # string terminator -\X9D ( 2 78) # operating system command -\X9E ( 45 8) # privacy message -\X9F ( 456 8) # application program command -\XA0 (1 456 8) # no-break space -\XA1 ( 3 67 ) # inverted exclamation mark -\XA2 ( 2 4 6 8) # cent sign -\XA3 (12 56 8) # pound sign -\XA4 ( 2 7 ) # currency sign -\XA5 (12 456 8) # yen sign -\XA6 (12 67 ) # broken bar -\XA7 (12345678) # section sign -\XA8 (1 4567 ) # diaeresis -\XA9 ( 234567 ) # copyright sign -\XAA (1234 67 ) # feminine ordinal indicator -\XAB ( 4 67 ) # left-pointing double angle quotation mark -\XAC (1 67 ) # not sign -\XAD ( 3 6 8) # soft hyphen -\XAE (1234567 ) # registered sign -\XAF ( 567 ) # macron -\XB0 ( 23 6 8) # degree sign -\XB1 ( 2 8) # plus-minus sign -\XB2 (123456 8) # superscript two -\XB3 ( 2 5 7 ) # superscript three -\XB4 ( 2 567 ) # acute accent -\XB5 (1234 6 8) # micro sign -\XB6 (12345678) # pilcrow sign -\XB7 (1 56 8) # middle dot -\XB8 ( 23 67 ) # cedilla -\XB9 ( 3 5 7 ) # superscript one -\XBA ( 3 7 ) # masculine ordinal indicator -\XBB ( 34 7 ) # right-pointing double angle quotation mark -\XBC ( 67 ) # vulgar fraction one quarter -\XBD ( 34 67 ) # vulgar fraction one half -\XBE ( 345 7 ) # vulgar fraction three quarters -\XBF (123 567 ) # inverted question mark -\XC0 ( 78) # latin capital letter a with grave -\XC1 ( 234 678) # latin capital letter a with acute -\XC2 ( 5 78) # latin capital letter a with circumflex -\XC3 ( 345678) # latin capital letter a with tilde -\XC4 (1 345 8) # latin capital letter a with diaeresis -\XC5 (1 3 5 8) # latin capital letter a with ring above -\XC6 (123 5 8) # latin capital letter ae -\XC7 ( 4 8) # latin capital letter c with cedilla -\XC8 (123 5678) # latin capital letter e with grave -\XC9 (1234 8) # latin capital letter e with acute -\XCA (1 678) # latin capital letter e with circumflex -\XCB ( 34 678) # latin capital letter e with diaeresis -\XCC ( 678) # latin capital letter i with grave -\XCD ( 3 678) # latin capital letter i with acute -\XCE ( 4 678) # latin capital letter i with circumflex -\XCF ( 34 78) # latin capital letter i with diaeresis -\XD0 ( 3 5678) # latin capital letter eth -\XD1 (1 4 67 ) # latin capital letter n with tilde -\XD2 ( 23 78) # latin capital letter o with grave -\XD3 ( 2 5 78) # latin capital letter o with acute -\XD4 ( 2 5678) # latin capital letter o with circumflex -\XD5 ( 2 678) # latin capital letter o with tilde -\XD6 (1 3456 8) # latin capital letter o with diaeresis -\XD7 ( 23 5678) # multiplication sign -\XD8 ( 23 678) # latin capital letter o with stroke -\XD9 ( 3 5 78) # latin capital letter u with grave -\XDA (1 5678) # latin capital letter u with acute -\XDB ( 5678) # latin capital letter u with circumflex -\XDC (1 3 56 8) # latin capital letter u with diaeresis -\XDD (12345678) # latin capital letter y with acute -\XDE ( 345 78) # latin capital letter thorn -\XDF ( 234 6 8) # latin small letter sharp s -\XE0 (123 56 ) # latin small letter a with grave -\XE1 ( 7 ) # latin small letter a with acute -\XE2 (1 6 ) # latin small letter a with circumflex -\XE3 ( 3456 8) # latin small letter a with tilde -\XE4 (1 45 8) # latin small letter a with diaeresis -\XE5 (12 4 8) # latin small letter a with ring above -\XE6 (12345 8) # latin small letter ae -\XE7 (1234 6 ) # latin small letter c with cedilla -\XE8 ( 234 6 ) # latin small letter e with grave -\XE9 (123456 ) # latin small letter e with acute -\XEA (12 6 ) # latin small letter e with circumflex -\XEB (12 4 6 ) # latin small letter e with diaeresis -\XEC (1 34 8) # latin small letter i with grave -\XED ( 234 67 ) # latin small letter i with acute -\XEE (1 4 6 ) # latin small letter i with circumflex -\XEF (12 456 ) # latin small letter i with diaeresis -\XF0 ( 3 56 8) # latin small letter eth -\XF1 (12 4 67 ) # latin small letter n with tilde -\XF2 (1 3 6 8) # latin small letter o with grave -\XF3 ( 5 7 ) # latin small letter o with acute -\XF4 (1 456 ) # latin small letter o with circumflex -\XF5 ( 2 6 8) # latin small letter o with tilde -\XF6 ( 2345 8) # latin small letter o with diaeresis -\XF7 ( 23 5 8) # division sign -\XF8 ( 3 567 ) # latin small letter o with stroke -\XF9 ( 23456 ) # latin small letter u with grave -\XFA ( 34567 ) # latin small letter u with acute -\XFB (1 56 ) # latin small letter u with circumflex -\XFC (12 56 ) # latin small letter u with diaeresis -\XFD ( 23 7 ) # latin small letter y with acute -\XFE ( 345 8) # latin small letter thorn -\XFF (1 567 ) # latin small letter y with diaeresis diff --git a/BrailleTables/text.fr_FR.tbl b/BrailleTables/text.fr_FR.tbl deleted file mode 100644 index c3deaa264a186b9d904f010836763d3266d44e78..0000000000000000000000000000000000000000 --- a/BrailleTables/text.fr_FR.tbl +++ /dev/null @@ -1,278 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - French (France) - -# This is the reimplementation of the fr-cbifs table using the -# ISO-8859-1 (Latin 1) character set. - -\X00 ( 345 78) # null -\X01 (1 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 (1 5 78) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 2 4 78) # horizontal tabulation -\X0A ( 2 45 78) # line feed -\X0B (1 3 78) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 78) # shift out -\X0F (1 3 5 78) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 ( 2 45678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (1 345678) # end of medium -\X1A (1 3 5678) # substitute -\X1B ( 4 678) # escape -\X1C ( 5 78) # file separator -\X1D ( 5678) # group separator -\X1E ( 678) # record separator -\X1F ( 45678) # unit separator -\X20 ( ) # space -\X21 ( 23 5 ) # exclamation mark -\X22 ( 23 56 ) # quotation mark -\X23 ( 34 6 ) # number sign -\X24 ( 456 ) # dollar sign -\X25 (1234 6 ) # percent sign -\X26 (123456 ) # ampersand -\X27 ( 6 ) # apostrophe -\X28 ( 23 6 ) # left parenthesis -\X29 ( 3 56 ) # right parenthesis -\X2A ( 3 5 ) # asterisk -\X2B ( 23 5 78) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 3 ) # full stop -\X2F ( 2 56 ) # solidus -\X30 ( 3456 ) # digit zero -\X31 (1 6 ) # digit one -\X32 (12 6 ) # digit two -\X33 (1 4 6 ) # digit three -\X34 (1 456 ) # digit four -\X35 (1 56 ) # digit five -\X36 (12 4 6 ) # digit six -\X37 (12 456 ) # digit seven -\X38 (12 56 ) # digit eight -\X39 ( 2 4 6 ) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C ( 56 ) # less-than sign -\X3D ( 23 5678) # equals sign -\X3E ( 45 ) # greater-than sign -\X3F ( 2 6 ) # question mark -\X40 ( 345 ) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B (123 56 ) # left square bracket -\X5C ( 234 6 ) # reverse solidus -\X5D ( 23456 ) # right square bracket -\X5E ( 34 ) # circumflex accent -\X5F ( 4567 ) # low line -\X60 ( 345 7 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B (123 567 ) # left curly bracket -\X7C ( 234 67 ) # vertical line -\X7D ( 234567 ) # right curly bracket -\X7E ( 34 7 ) # tilde -\X7F ( 4 67 ) # delete -\X80 ( 345 8) # -\X81 (1 8) # -\X82 (12 8) # break permitted here -\X83 ( 23 567 ) # no break here -\X84 ( 3 8) # -\X85 ( 3 5 8) # next line -\X86 ( 23 6 8) # start of selected area -\X87 (12 45 8) # end of selected area -\X88 (12 5 8) # character tabulation set -\X89 ( 2 4 8) # character tabulation with justification -\X8A ( 2 45 8) # line tabulation set -\X8B (1 3 8) # partial line down -\X8C ( 3 7 ) # partial line up -\X8D ( 3 567 ) # reverse line feed -\X8E ( 23 67 ) # single shift two -\X8F ( 3 56 8) # single shift three -\X90 ( 567 ) # device control string -\X91 ( 7 ) # private use one -\X92 ( 8) # private use two -\X93 ( 3 5 7 ) # set transmit state -\X94 ( 67 ) # cancel character -\X95 ( 23 5 7 ) # message waiting -\X96 (123 6 8) # start of guarded area -\X97 ( 2 456 8) # end of guarded area -\X98 (1234 678) # start of string -\X99 ( 3 6 8) # -\X9A (1 3 56 8) # single character introducer -\X9B ( 4 6 8) # control sequence introducer -\X9C ( 5 8) # string terminator -\X9D ( 56 8) # operating system command -\X9E ( 6 8) # privacy message -\X9F ( 456 8) # application program command -\XA0 ( 78) # no-break space -\XA1 ( 3 67 ) # inverted exclamation mark -\XA2 (1 4 8) # cent sign -\XA3 (123 8) # pound sign -\XA4 (1 5 8) # currency sign -\XA5 (1 3456 8) # yen sign -\XA6 ( 3 5 78) # broken bar -\XA7 ( 234 8) # section sign -\XA8 ( 5 ) # diaeresis -\XA9 (12345 8) # copyright sign -\XAA (12 4 8) # feminine ordinal indicator -\XAB ( 23 678) # left-pointing double angle quotation mark -\XAC (1 345 8) # not sign -\XAD ( 3 678) # soft hyphen -\XAE (123 5 8) # registered sign -\XAF (12345678) # macron -\XB0 (1 3 5 8) # degree sign -\XB1 (1 34 6 8) # plus-minus sign -\XB2 ( 45 78) # superscript two -\XB3 ( 3 78) # superscript three -\XB4 ( 4 ) # acute accent -\XB5 (1 3 6 8) # micro sign -\XB6 (1234 8) # pilcrow sign -\XB7 ( 5 7 ) # middle dot -\XB8 ( 4 6 ) # cedilla -\XB9 ( 4 78) # superscript one -\XBA (1 34 8) # masculine ordinal indicator -\XBB ( 3 5678) # right-pointing double angle quotation mark -\XBC ( 34 78) # vulgar fraction one quarter -\XBD ( 34 678) # vulgar fraction one half -\XBE ( 345678) # vulgar fraction three quarters -\XBF ( 34 8) #*inverted question mark -\XC0 (123 5678) # latin capital letter a with grave -\XC1 ( 2 7 ) # latin capital letter a with acute -\XC2 ( 2 78) # latin capital letter a with circumflex -\XC3 ( 2 8) # latin capital letter a with tilde -\XC4 ( 4 7 ) #*latin capital letter a with diaeresis -\XC5 ( 34567 ) #*latin capital letter a with ring above -\XC6 ( 45 7 ) #*latin capital letter ae -\XC7 (1234 67 ) #*latin capital letter c with cedilla -\XC8 ( 234 678) # latin capital letter e with grave -\XC9 (1234567 ) #*latin capital letter e with acute -\XCA ( 23 78) # latin capital letter e with circumflex -\XCB ( 23 5 8) # latin capital letter e with diaeresis -\XCC ( 2 5 8) # latin capital letter i with grave -\XCD ( 2 5 7 ) # latin capital letter i with acute -\XCE ( 2 5 78) # latin capital letter i with circumflex -\XCF ( 23 56 8) # latin capital letter i with diaeresis -\XD0 ( 23 8) # latin capital letter eth -\XD1 (12 4567 ) #*latin capital letter n with tilde -\XD2 ( 2 56 8) # latin capital letter o with grave -\XD3 ( 2 567 ) # latin capital letter o with acute -\XD4 ( 2 5678) # latin capital letter o with circumflex -\XD5 (12 4 67 ) # latin capital letter o with tilde -\XD6 ( 2 4 67 ) #*latin capital letter o with diaeresis -\XD7 ( 2345 8) # multiplication sign -\XD8 ( 2 6 8) # latin capital letter o with stroke -\XD9 ( 2345678) # latin capital letter u with grave -\XDA ( 2 67 ) # latin capital letter u with acute -\XDB ( 2 678) # latin capital letter u with circumflex -\XDC (12 567 ) #*latin capital letter u with diaeresis -\XDD ( 23 7 ) # latin capital letter y with acute -\XDE ( 34 67 ) # latin capital letter thorn -\XDF ( 2 4 678) # latin small letter sharp s -\XE0 (123 56 8) #*latin small letter a with grave -\XE1 (1 67 ) #*latin small letter a with acute -\XE2 (1 678) #*latin small letter a with circumflex -\XE3 (1 6 8) # latin small letter a with tilde -\XE4 ( 4 8) #*latin small letter a with diaeresis -\XE5 ( 3456 8) #*latin small letter a with ring above -\XE6 ( 45 8) #*latin small letter ae -\XE7 (1234 6 8) #*latin small letter c with cedilla -\XE8 ( 234 6 8) #*latin small letter e with grave -\XE9 (123456 8) #*latin small letter e with acute -\XEA (12 678) #*latin small letter e with circumflex -\XEB (12 4 6 8) #*latin small letter e with diaeresis -\XEC (1 4 6 8) #*latin small letter i with grave -\XED (1 4 67 ) #*latin small letter i with acute -\XEE (1 4 678) #*latin small letter i with circumflex -\XEF (12 456 8) #*latin small letter i with diaeresis -\XF0 (12 6 8) # latin small letter eth -\XF1 (12 45678) #*latin small letter n with tilde -\XF2 (1 456 8) #*latin small letter o with grave -\XF3 (1 4567 ) #*latin small letter o with acute -\XF4 (1 45678) #*latin small letter o with circumflex -\XF5 (12 4 678) # latin small letter o with tilde -\XF6 ( 2 4 6 8) #*latin small letter o with diaeresis -\XF7 (1 45 8) # division sign -\XF8 (1 56 8) # latin small letter o with stroke -\XF9 ( 23456 8) #*latin small letter u with grave -\XFA (1 567 ) #*latin small letter u with acute -\XFB (1 5678) #*latin small letter u with circumflex -\XFC (12 56 8) #*latin small letter u with diaeresis -\XFD (12 67 ) # latin small letter y with acute -\XFE ( 34 6 8) # latin small letter thorn -\XFF (12 5678) #*latin small letter y with diaeresis diff --git a/BrailleTables/text.it.tbl b/BrailleTables/text.it.tbl deleted file mode 100644 index f2171687ae305b99b2ff5dd7fd92d9409cc03007..0000000000000000000000000000000000000000 --- a/BrailleTables/text.it.tbl +++ /dev/null @@ -1,275 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - Italian (iso-8859-1) - -\X00 ( 345 78) # null -\X01 (1 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 (1 5 78) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 2 4 78) # horizontal tabulation -\X0A ( 2 45 78) # line feed -\X0B (1 3 78) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 78) # shift out -\X0F (1 3 5 78) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 ( 2 45678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (1 345678) # end of medium -\X1A (1 3 5678) # substitute -\X1B (123 5678) # escape -\X1C ( 34 78) # file separator -\X1D ( 2345678) # group separator -\X1E ( 234 678) # record separator -\X1F ( 45678) # unit separator -\X20 ( ) # space -\X21 ( 5 ) # exclamation mark -\X22 ( 4 ) # quotation mark -\X23 ( 3456 ) # number sign -\X24 ( 4 6 ) # dollar sign -\X25 (123456 ) # percent sign -\X26 (1234 6 ) # ampersand -\X27 ( 6 ) # apostrophe -\X28 ( 23 6 ) # left parenthesis -\X29 ( 3 56 ) # right parenthesis -\X2A ( 3 5 ) # asterisk -\X2B ( 23 5 ) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 3 ) # full stop -\X2F ( 2 56 ) # solidus -\X30 ( 34 6 ) # digit zero -\X31 (1 6 ) # digit one -\X32 (12 6 ) # digit two -\X33 (1 4 6 ) # digit three -\X34 (1 456 ) # digit four -\X35 (1 56 ) # digit five -\X36 (12 4 6 ) # digit six -\X37 (12 456 ) # digit seven -\X38 (12 56 ) # digit eight -\X39 ( 2 4 6 ) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C ( 56 ) # less-than sign -\X3D ( 23 56 ) # equals sign -\X3E ( 45 ) # greater-than sign -\X3F ( 2 6 ) # question mark -\X40 ( 34 67 ) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B ( 23 67 ) # left square bracket -\X5C ( 2 567 ) # reverse solidus -\X5D ( 3 567 ) # right square bracket -\X5E ( 234 67 ) # circumflex accent -\X5F ( 456 ) # low line -\X60 ( 345 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B ( 23 6 8) # left curly bracket -\X7C ( 2 56 8) # vertical line -\X7D ( 3 56 8) # right curly bracket -\X7E ( 234 6 8) # tilde -\X7F ( 78) # delete -\X80 ( 456 8) # -\X81 (1 4 8) # -\X82 ( 34 6 8) # break permitted here -\X83 (1 4567 ) # no break here -\X84 ( 2 7 ) # -\X85 (1 45 8) # next line -\X86 ( 2 67 ) # start of selected area -\X87 (123 56 8) # end of selected area -\X88 (1 567 ) # character tabulation set -\X89 ( 2 6 8) # character tabulation with justification -\X8A ( 5 7 ) # line tabulation set -\X8B ( 3 5 8) # partial line down -\X8C ( 5 8) # partial line up -\X8D ( 3 7 ) # reverse line feed -\X8E ( 3 6 ) # single shift two -\X8F ( 456 8) # single shift three -\X90 ( 23 56 ) # device control string -\X91 ( 456 8) # private use one -\X92 ( 456 8) # private use two -\X93 ( 2 4 7 ) # set transmit state -\X94 ( 234 8) # cancel character -\X95 ( 45 8) # message waiting -\X96 ( 2 456 8) # start of guarded area -\X97 ( 4 8) # end of guarded area -\X98 ( 3 678) # start of string -\X99 ( 3 6 ) # -\X9A ( 3 678) # single character introducer -\X9B ( 56 8) # control sequence introducer -\X9C ( 3 6 ) # string terminator -\X9D ( 23 56 ) # operating system command -\X9E ( 23 5 7 ) # privacy message -\X9F (12 4 678) # application program command -\XA0 (12345678) # no-break space -\XA1 ( 3 67 ) # inverted exclamation mark -\XA2 (1 4 6 8) # cent sign -\XA3 ( 4 67 ) # pound sign -\XA4 (12345678) # currency sign -\XA5 ( 4 6 8) # yen sign -\XA6 ( 23 56 ) # broken bar -\XA7 (12345678) # section sign -\XA8 ( 3 6 ) # diaeresis -\XA9 ( 3 6 ) # copyright sign -\XAA (12 5 8) # feminine ordinal indicator -\XAB ( 5678) # left-pointing double angle quotation mark -\XAC ( 3 6 ) # not sign -\XAD ( 5 78) # soft hyphen -\XAE ( 3 6 ) # registered sign -\XAF ( 23 56 ) # macron -\XB0 ( 34 8) # degree sign -\XB1 ( 23 5 78) # plus-minus sign -\XB2 (12 8) # superscript two -\XB3 ( 456 8) # superscript three -\XB4 ( 456 8) # acute accent -\XB5 (1 34 6 8) # micro sign -\XB6 (12345678) # pilcrow sign -\XB7 ( 7 ) # middle dot -\XB8 ( 23 56 ) # cedilla -\XB9 ( 456 8) # superscript one -\XBA ( 2 45 8) # masculine ordinal indicator -\XBB ( 45 78) # right-pointing double angle quotation mark -\XBC (123 6 8) # vulgar fraction one quarter -\XBD ( 3 7 ) # vulgar fraction one half -\XBE ( 23 56 ) # vulgar fraction three quarters -\XBF ( 6 8) # inverted question mark -\XC0 ( 3 6 ) # latin capital letter a with grave -\XC1 ( 3 6 ) # latin capital letter a with acute -\XC2 ( 3 6 ) # latin capital letter a with circumflex -\XC3 ( 456 8) # latin capital letter a with tilde -\XC4 (123 567 ) # latin capital letter a with diaeresis -\XC5 ( 345678) # latin capital letter a with ring above -\XC6 ( 4 78) # latin capital letter ae -\XC7 (1234 67 ) # latin capital letter c with cedilla -\XC8 ( 23 56 ) # latin capital letter e with grave -\XC9 ( 2 678) # latin capital letter e with acute -\XCA ( 23 56 ) # latin capital letter e with circumflex -\XCB ( 23 56 ) # latin capital letter e with diaeresis -\XCC ( 456 8) # latin capital letter i with grave -\XCD ( 23 56 ) # latin capital letter i with acute -\XCE ( 456 8) # latin capital letter i with circumflex -\XCF ( 23 56 ) # latin capital letter i with diaeresis -\XD0 ( 3 6 ) # latin capital letter eth -\XD1 (1 34 8) # latin capital letter n with tilde -\XD2 ( 3 6 ) # latin capital letter o with grave -\XD3 ( 3 6 ) # latin capital letter o with acute -\XD4 ( 23 56 ) # latin capital letter o with circumflex -\XD5 ( 23 56 ) # latin capital letter o with tilde -\XD6 ( 34 7 ) # latin capital letter o with diaeresis -\XD7 ( 456 8) # multiplication sign -\XD8 ( 456 8) # latin capital letter o with stroke -\XD9 ( 3 6 ) # latin capital letter u with grave -\XDA ( 3 6 ) # latin capital letter u with acute -\XDB (12345678) # latin capital letter u with circumflex -\XDC ( 234567 ) # latin capital letter u with diaeresis -\XDD ( 456 8) # latin capital letter y with acute -\XDE ( 456 8) # latin capital letter thorn -\XDF ( 234 6 ) # latin small letter sharp s -\XE0 (1 8) # latin small letter a with grave -\XE1 (1 6 8) # latin small letter a with acute -\XE2 (1 678) # latin small letter a with circumflex -\XE3 (1234 8) # latin small letter a with tilde -\XE4 (123 56 ) # latin small letter a with diaeresis -\XE5 ( 34567 ) # latin small letter a with ring above -\XE6 ( 4 7 ) # latin small letter ae -\XE7 (1234 678) # latin small letter c with cedilla -\XE8 (1 5 8) # latin small letter e with grave -\XE9 (1 56 8) # latin small letter e with acute -\XEA (12 678) # latin small letter e with circumflex -\XEB (12 4 6 8) # latin small letter e with diaeresis -\XEC ( 2 4 8) # latin small letter i with grave -\XED ( 3 5 7 ) # latin small letter i with acute -\XEE (1 4 67 ) # latin small letter i with circumflex -\XEF (12 456 8) # latin small letter i with diaeresis -\XF0 ( 3 6 8) # latin small letter eth -\XF1 (1 345 8) # latin small letter n with tilde -\XF2 (1 3 5 8) # latin small letter o with grave -\XF3 ( 2 4 6 8) # latin small letter o with acute -\XF4 (1 45678) # latin small letter o with circumflex -\XF5 ( 345 8) # latin small letter o with tilde -\XF6 ( 34 ) # latin small letter o with diaeresis -\XF7 (12 5678) # division sign -\XF8 (12345678) # latin small letter o with stroke -\XF9 (1 3 6 8) # latin small letter u with grave -\XFA (1 3 678) # latin small letter u with acute -\XFB (1 5678) # latin small letter u with circumflex -\XFC ( 23456 ) # latin small letter u with diaeresis -\XFD (12345678) # latin small letter y with acute -\XFE ( 3 678) # latin small letter thorn -\XFF ( 456 8) # latin small letter y with diaeresis diff --git a/BrailleTables/text.nabcc.tbl b/BrailleTables/text.nabcc.tbl deleted file mode 100644 index df99e5b2c5eb06abcb310c1825e50ed2ed86491b..0000000000000000000000000000000000000000 --- a/BrailleTables/text.nabcc.tbl +++ /dev/null @@ -1,419 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -######################################################################## -# BRLTTY Text Translation Table - North American Braille Computer Code # -######################################################################## - -# This is a description of the default text translation table used by BRLTTY. -# It's based on the North American Braille Computer Code, but defines the full -# Latin1 (ISO-8859-1) character set. - -# The 95 printable characters of the standard 7-bit US-ASCII character set -# (32-126) are identical to their representations within the North American -# Braille Computer Code (these are the only characters which the NABCC actually -# defines). Characters from literary braille, symbols from The Nemeth Braille -# Code for Mathematics and Science Notation, and a bit of human imagination -# have all been combined to create an easy-to-remember, one-to-one mapping -# between each character and its braille counterpart. All possible combinations -# involving only the original 6 braille dots are used, but that only allows for -# 64 out of the required 95 character representations. The presence or absence -# of dot 7 is used to differentiate between pairs of characters which either -# are very closely related in meaning or, in a few cases where a more intuitive -# reason couldn't be found, have a very close logical relationship within the -# US-ASCII code. Dot 8 isn't used at all. - -# The space and the 26 lowercase letters (a-z) are the same as in literary -# braille: - - #Hex Dots Dec Char Description - \X20 ( ) # 32 space - \X61 (1 ) # 97 a latin small letter a - \X62 (12 ) # 98 b latin small letter b - \X63 (1 4 ) # 99 c latin small letter c - \X64 (1 45 ) # 100 d latin small letter d - \X65 (1 5 ) # 101 e latin small letter e - \X66 (12 4 ) # 102 f latin small letter f - \X67 (12 45 ) # 103 g latin small letter g - \X68 (12 5 ) # 104 h latin small letter h - \X69 ( 2 4 ) # 105 i latin small letter i - \X6A ( 2 45 ) # 106 j latin small letter j - \X6B (1 3 ) # 107 k latin small letter k - \X6C (123 ) # 108 l latin small letter l - \X6D (1 34 ) # 109 m latin small letter m - \X6E (1 345 ) # 110 n latin small letter n - \X6F (1 3 5 ) # 111 o latin small letter o - \X70 (1234 ) # 112 p latin small letter p - \X71 (12345 ) # 113 q latin small letter q - \X72 (123 5 ) # 114 r latin small letter r - \X73 ( 234 ) # 115 s latin small letter s - \X74 ( 2345 ) # 116 t latin small letter t - \X75 (1 3 6 ) # 117 u latin small letter u - \X76 (123 6 ) # 118 v latin small letter v - \X77 ( 2 456 ) # 119 w latin small letter w - \X78 (1 34 6 ) # 120 x latin small letter x - \X79 (1 3456 ) # 121 y latin small letter y - \X7A (1 3 56 ) # 122 z latin small letter z - -# The 26 uppercase letters (A-Z) are the same as their lowercase counterparts -# except that dot 7 is added: - - #Hex Dots Dec Char Description - \X41 (1 7 ) # 65 A latin capital letter a - \X42 (12 7 ) # 66 B latin capital letter b - \X43 (1 4 7 ) # 67 C latin capital letter c - \X44 (1 45 7 ) # 68 D latin capital letter d - \X45 (1 5 7 ) # 69 E latin capital letter e - \X46 (12 4 7 ) # 70 F latin capital letter f - \X47 (12 45 7 ) # 71 G latin capital letter g - \X48 (12 5 7 ) # 72 H latin capital letter h - \X49 ( 2 4 7 ) # 73 I latin capital letter i - \X4A ( 2 45 7 ) # 74 J latin capital letter j - \X4B (1 3 7 ) # 75 K latin capital letter k - \X4C (123 7 ) # 76 L latin capital letter l - \X4D (1 34 7 ) # 77 M latin capital letter m - \X4E (1 345 7 ) # 78 N latin capital letter n - \X4F (1 3 5 7 ) # 79 O latin capital letter o - \X50 (1234 7 ) # 80 P latin capital letter p - \X51 (12345 7 ) # 81 Q latin capital letter q - \X52 (123 5 7 ) # 82 R latin capital letter r - \X53 ( 234 7 ) # 83 S latin capital letter s - \X54 ( 2345 7 ) # 84 T latin capital letter t - \X55 (1 3 67 ) # 85 U latin capital letter u - \X56 (123 67 ) # 86 V latin capital letter v - \X57 ( 2 4567 ) # 87 W latin capital letter w - \X58 (1 34 67 ) # 88 X latin capital letter x - \X59 (1 34567 ) # 89 Y latin capital letter y - \X5A (1 3 567 ) # 90 Z latin capital letter z - -# The 10 decimal digits (0-9) are the same as in the Nemeth Code: - - #Hex Dots Dec Char Description - \X30 ( 3 56 ) # 48 0 digit zero - \X31 ( 2 ) # 49 1 digit one - \X32 ( 23 ) # 50 2 digit two - \X33 ( 2 5 ) # 51 3 digit three - \X34 ( 2 56 ) # 52 4 digit four - \X35 ( 2 6 ) # 53 5 digit five - \X36 ( 23 5 ) # 54 6 digit six - \X37 ( 23 56 ) # 55 7 digit seven - \X38 ( 23 6 ) # 56 8 digit eight - \X39 ( 3 5 ) # 57 9 digit nine - -# Common symbols used within mathematical expressions by popular computer -# programming languages are the same as in the Nemeth Code: - - #Hex Dots Dec Char Description - \X2E ( 4 6 ) # 46 . full stop - \X2B ( 34 6 ) # 43 + plus sign - \X2D ( 3 6 ) # 45 - hyphen-minus - \X2A (1 6 ) # 42 * asterisk - \X2F ( 34 ) # 47 / solidus - \X28 (123 56 ) # 40 ( left parenthesis - \X29 ( 23456 ) # 41 ) right parenthesis - -# With all of these major considerations having been taken into account, -# convenient representations were still available, and are used, for some of -# the remaining characters: - - #Hex Dots Dec Char Description - \X26 (1234 6 ) # 38 & ampersand - \X23 ( 3456 ) # 35 # number sign - -# The remaining characters are what they are. Dot 7 isn't used either within -# the number block (32-63) or, with the exception of the DEL control character -# (127), within the lowercase block (96-127). With the exception of the -# underscore (95), dot 7 is used for every character within the uppercase block -# (64-95). Adding dot 7 to any character within the lowercase block (96-127) -# yields its corresponding character within the uppercase block (64-95) except -# that removing dot 7 from the DEL control character yields the underscore. - - #Hex Dots Dec Char Description - \X2C ( 6 ) # 44 , comma - \X3B ( 56 ) # 59 ; semicolon - \X3A (1 56 ) # 58 : colon - \X21 ( 234 6 ) # 33 ! exclamation mark - \X3F (1 456 ) # 63 ? question mark - \X22 ( 5 ) # 34 " quotation mark - \X27 ( 3 ) # 39 ' apostrophe - \X60 ( 4 ) # 96 ` grave accent - \X5E ( 45 7 ) # 94 ^ circumflex accent - \X7E ( 45 ) # 126 ~ tilde - \X5B ( 2 4 67 ) # 91 [ left square bracket - \X5D (12 4567 ) # 93 ] right square bracket - \X7B ( 2 4 6 ) # 123 { left curly bracket - \X7D (12 456 ) # 125 } right curly bracket - \X3D (123456 ) # 61 = equals sign - \X3C (12 6 ) # 60 < less-than sign - \X3E ( 345 ) # 62 > greater-than sign - \X24 (12 4 6 ) # 36 $ dollar sign - \X25 (1 4 6 ) # 37 % percent sign - \X40 ( 4 7 ) # 64 @ commercial at - \X7C (12 56 ) # 124 | vertical line - \X5C (12 567 ) # 92 \ reverse solidus - \X5F ( 456 ) # 95 _ low line - -# Each of the characters within the basic control character block (0-31) is the -# same as its corresponding character within both the uppercase block (64-95) -# and the lowercase block (96-127) except that dots 7 and 8 are both used. - - #Hex Dots Dec Char Description - \X00 ( 4 78) # 0 ^@ null - \X01 (1 78) # 1 ^A start of heading - \X02 (12 78) # 2 ^B start of text - \X03 (1 4 78) # 3 ^C end of text - \X04 (1 45 78) # 4 ^D end of transmission - \X05 (1 5 78) # 5 ^E enquiry - \X06 (12 4 78) # 6 ^F acknowledge - \X07 (12 45 78) # 7 ^G bell - \X08 (12 5 78) # 8 ^H backspace - \X09 ( 2 4 78) # 9 ^I horizontal tabulation - \X0A ( 2 45 78) # 10 ^J line feed - \X0B (1 3 78) # 11 ^K vertical tabulation - \X0C (123 78) # 12 ^L form feed - \X0D (1 34 78) # 13 ^M carriage return - \X0E (1 345 78) # 14 ^N shift out - \X0F (1 3 5 78) # 15 ^O shift in - \X10 (1234 78) # 16 ^P data link escape - \X11 (12345 78) # 17 ^Q device control one - \X12 (123 5 78) # 18 ^R device control two - \X13 ( 234 78) # 19 ^S device control three - \X14 ( 2345 78) # 20 ^T device control four - \X15 (1 3 678) # 21 ^U negative acknowledge - \X16 (123 678) # 22 ^V synchronous idle - \X17 ( 2 45678) # 23 ^W end of transmission block - \X18 (1 34 678) # 24 ^X cancel - \X19 (1 345678) # 25 ^Y end of medium - \X1A (1 3 5678) # 26 ^Z substitute - \X1B ( 2 4 678) # 27 ^[ escape - \X1C (12 5678) # 28 ^\ file separator - \X1D (12 45678) # 29 ^] group separator - \X1E ( 45 78) # 30 ^^ record separator - \X1F ( 45678) # 31 ^_ unit separator - -# Each of the characters within the extended control character block (128-159) -# is the same as its corresponding character within the basic control character -# block (0-31) except that only dot 8 is used. - - #Hex Dots Dec Char Description - \X80 ( 4 8) # 128 ~@ - \X81 (1 8) # 129 ~A - \X82 (12 8) # 130 ~B break permitted here - \X83 (1 4 8) # 131 ~C no break here - \X84 (1 45 8) # 132 ~D - \X85 (1 5 8) # 133 ~E next line - \X86 (12 4 8) # 134 ~F start of selected area - \X87 (12 45 8) # 135 ~G end of selected area - \X88 (12 5 8) # 136 ~H character tabulation set - \X89 ( 2 4 8) # 137 ~I character tabulation with justification - \X8A ( 2 45 8) # 138 ~J line tabulation set - \X8B (1 3 8) # 139 ~K partial line down - \X8C (123 8) # 140 ~L partial line up - \X8D (1 34 8) # 141 ~M reverse line feed - \X8E (1 345 8) # 142 ~N single shift two - \X8F (1 3 5 8) # 143 ~O single shift three - \X90 (1234 8) # 144 ~P device control string - \X91 (12345 8) # 145 ~Q private use one - \X92 (123 5 8) # 146 ~R private use two - \X93 ( 234 8) # 147 ~S set transmit state - \X94 ( 2345 8) # 148 ~T cancel character - \X95 (1 3 6 8) # 149 ~U message waiting - \X96 (123 6 8) # 150 ~V start of guarded area - \X97 ( 2 456 8) # 151 ~W end of guarded area - \X98 (1 34 6 8) # 152 ~X start of string - \X99 (1 3456 8) # 153 ~Y - \X9A (1 3 56 8) # 154 ~Z single character introducer - \X9B ( 2 4 6 8) # 155 ~[ control sequence introducer - \X9C (12 56 8) # 156 ~\ string terminator - \X9D (12 456 8) # 157 ~] operating system command - \X9E ( 45 8) # 158 ~^ privacy message - \X9F ( 456 8) # 159 ~_ application program command - -# Representations for the uppercase accented letters are drawn from the -# remaining combinations which use both dots 7 and 8. The representation for a -# lowercase accented letter is the same as its uppercase counterpart except -# that dot 7 isn't used. This scheme retains the use of dot 7 as the modifier -# for a capitalized letter. The only exception to these rules is that, due to -# the nature of the Latin1 character set, the German lowercase double-s is -# treated as though it were an uppercase y-dieresis (neither has an uppercase -# definition). These representations have been gathered, as much as possible, -# into logical groupings. - -# The 5 letters with a circumflex accent (^) use the [1-5] dot combinations: - - #Hex Dots Dec Char Description - \XC2 ( 2 78) # 194  latin capital letter a with circumflex - \XCA ( 23 78) # 202 Ê latin capital letter e with circumflex - \XCE ( 2 5 78) # 206 Î latin capital letter i with circumflex - \XD4 ( 2 5678) # 212 Ô latin capital letter o with circumflex - \XDB ( 2 678) # 219 Û latin capital letter u with circumflex - \XE2 ( 2 8) # 226 â latin small letter a with circumflex - \XEA ( 23 8) # 234 ê latin small letter e with circumflex - \XEE ( 2 5 8) # 238 î latin small letter i with circumflex - \XF4 ( 2 56 8) # 244 ô latin small letter o with circumflex - \XFB ( 2 6 8) # 251 û latin small letter u with circumflex - -# The 5 letters with a grave accent (`) use the [6-0] dot combinations: - - #Hex Dots Dec Char Description - \XC0 ( 23 5 78) # 192 À latin capital letter a with grave - \XC8 ( 23 5678) # 200 È latin capital letter e with grave - \XCC ( 23 678) # 204 Ì latin capital letter i with grave - \XD2 ( 3 5 78) # 210 Ò latin capital letter o with grave - \XD9 ( 3 5678) # 217 Ù latin capital letter u with grave - \XE0 ( 23 5 8) # 224 à latin small letter a with grave - \XE8 ( 23 56 8) # 232 è latin small letter e with grave - \XEC ( 23 6 8) # 236 ì latin small letter i with grave - \XF2 ( 3 5 8) # 242 ò latin small letter o with grave - \XF9 ( 3 56 8) # 249 ù latin small letter u with grave - -# The 6 letters with an acute accent (') use the [a-f] dot combinations with -# dots 3 and 6 added: - - #Hex Dots Dec Char Description - \XC1 (1 678) # 193 Á latin capital letter a with acute - \XC9 (12 678) # 201 É latin capital letter e with acute - \XCD (1 4 678) # 205 Í latin capital letter i with acute - \XD3 (1 45678) # 211 Ó latin capital letter o with acute - \XDA (1 5678) # 218 Ú latin capital letter u with acute - \XDD (12 4 678) # 221 Ý latin capital letter y with acute - \XE1 (1 6 8) # 225 á latin small letter a with acute - \XE9 (12 6 8) # 233 é latin small letter e with acute - \XED (1 4 6 8) # 237 í latin small letter i with acute - \XF3 (1 456 8) # 243 ó latin small letter o with acute - \XFA (1 56 8) # 250 ú latin small letter u with acute - \XFD (12 4 6 8) # 253 ý latin small letter y with acute - -# The 6 letters with a dieresis accent (") use the [f-j] dot combinations with -# dots 3 and 6 added, and the number sign (because it fits the sequence -# reasonably well): - - #Hex Dots Dec Char Description - \XC4 (1234 678) # 196 Ä latin capital letter a with diaeresis - \XCB (12345678) # 203 Ë latin capital letter e with diaeresis - \XCF (123 5678) # 207 Ï latin capital letter i with diaeresis - \XD6 ( 234 678) # 214 Ö latin capital letter o with diaeresis - \XDC ( 2345678) # 220 Ü latin capital letter u with diaeresis - \XE4 (1234 6 8) # 228 ä latin small letter a with diaeresis - \XEB (123456 8) # 235 ë latin small letter e with diaeresis - \XEF (123 56 8) # 239 ï latin small letter i with diaeresis - \XF6 ( 234 6 8) # 246 ö latin small letter o with diaeresis - \XFC ( 23456 8) # 252 ü latin small letter u with diaeresis - \XFF ( 3456 8) # 255 ÿ latin small letter y with diaeresis - -# There is no uppercase y-dieresis in the Latin1 character set. The German -# lowercase double-s, which also doesn't have an uppercase counterpart in the -# Latin1 character set, uses its representation: - - #Hex Dots Dec Char Description - \XDF ( 345678) # 223 ß latin small letter sharp s - -# The remaining accented letters are: - - #Hex Dots Dec Char Description - \XC3 ( 5 78) # 195 à latin capital letter a with tilde - \XD1 ( 4 678) # 209 Ñ latin capital letter n with tilde - \XD5 ( 5678) # 213 Õ latin capital letter o with tilde - \XC5 ( 345 78) # 197 Å latin capital letter a with ring above - \XC7 ( 34 678) # 199 Ç latin capital letter c with cedilla - \XD8 ( 34 78) # 216 Ø latin capital letter o with stroke - \XC6 ( 3 78) # 198 Æ latin capital letter ae - \XD0 ( 678) # 208 Ð latin capital letter eth - \XDE ( 3 678) # 222 Þ latin capital letter thorn - \XE3 ( 5 8) # 227 ã latin small letter a with tilde - \XF1 ( 4 6 8) # 241 ñ latin small letter n with tilde - \XF5 ( 56 8) # 245 õ latin small letter o with tilde - \XE5 ( 345 8) # 229 å latin small letter a with ring above - \XE7 ( 34 6 8) # 231 ç latin small letter c with cedilla - \XF8 ( 34 8) # 248 ø latin small letter o with stroke - \XE6 ( 3 8) # 230 æ latin small letter ae - \XF0 ( 6 8) # 240 ð latin small letter eth - \XFE ( 3 6 8) # 254 þ latin small letter thorn - -# Some characters are the same as other characters which they resemble but with -# dot 7 added: - - #Hex Dots Dec Char Description - \XAD ( 3 67 ) # 173 ­ soft hyphen - \XAB (12 67 ) # 171 « left-pointing double angle quotation mark - \XBB ( 345 7 ) # 187 » right-pointing double angle quotation mark - \XA6 (1 567 ) # 166 ¦ broken bar - \XB9 ( 2 7 ) # 185 ¹ superscript one - \XB2 ( 23 7 ) # 178 ² superscript two - \XB3 ( 2 5 7 ) # 179 ³ superscript three - \XB1 ( 34 67 ) # 177 ± plus-minus sign - \XD7 (1 67 ) # 215 × multiplication sign - \XF7 ( 34 7 ) # 247 ÷ division sign - \XB7 ( 4 67 ) # 183 · middle dot - \XA1 ( 234 67 ) # 161 ¡ inverted exclamation mark - \XBF (1 4567 ) # 191 ¿ inverted question mark - \XA2 (12 4 67 ) # 162 ¢ cent sign - \XA3 ( 34567 ) # 163 £ pound sign - -# A few more characters follow this same convention but their relationships -# to their base characters is a bit obscure: - - #Hex Dots Dec Char Description - \XA4 (1 4 67 ) # 164 ¤ currency sign - \XA5 (1234 67 ) # 165 ¥ yen sign - -# Some characters are represented by the first letters of their names lowered -# by one row of dots: - - #Hex Dots Dec Char Description - \XAC ( 2 567 ) # 172 ¬ not sign - \XB6 ( 23 5 7 ) # 182 ¶ pilcrow sign - \XA9 ( 23 567 ) # 169 © copyright sign - \XAE ( 23 67 ) # 174 ® registered sign - \XA7 ( 3 5 7 ) # 167 § section sign - \XB0 ( 3 567 ) # 176 ° degree sign - -# The three fraction characters use combinations of dots 1 and 4 (which -# progress from left to right as the value of the fraction increases) together -# with dots 2,3,5,6,7: - - #Hex Dots Dec Char Description - \XBC (123 567 ) # 188 ¼ vulgar fraction one quarter - \XBD (1234567 ) # 189 ½ vulgar fraction one half - \XBE ( 234567 ) # 190 ¾ vulgar fraction three quarters - -# Each of the three extended accent characters is the same as its conventional -# compose character but with dot 7 added: - - #Hex Dots Dec Char Description - \XB4 ( 3 7 ) # 180 ´ acute accent - \XB8 ( 67 ) # 184 ¸ cedilla - \XA8 ( 5 7 ) # 168 ¨ diaeresis - -# The two gender symbols are: - - #Hex Dots Dec Char Description - \XBA ( 7 ) # 186 º masculine ordinal indicator - \XAA ( 8) # 170 ª feminine ordinal indicator - -# The three remaining characters are: - - #Hex Dots Dec Char Description - \XAF ( 2 67 ) # 175 ¯ macron - \XB5 ( 567 ) # 181 µ micro sign - \XA0 ( 78) # 160 ~ no-break space - -# The nonbreaking space is dots 7 and 8 because this presents a sequence of -# nonbreaking spaces as a smooth low line segment. - - #Hex Dots Dec Char Description - \X7F ( 4567 ) # 127 ^? delete diff --git a/BrailleTables/text.no-generic.tbl b/BrailleTables/text.no-generic.tbl deleted file mode 100644 index caa554c5a15831f3c364048a6701fd9c5df011f0..0000000000000000000000000000000000000000 --- a/BrailleTables/text.no-generic.tbl +++ /dev/null @@ -1,277 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - Generic Norwegian (iso-8859-1), with some -# unofficial character representations to accommodate multilingual usage. -# For example, numbers are represented with dot 6 rather than with dot 8. - -\X00 ( 45 78) # null -\X01 (1 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 (1 5 78) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 2 4 78) # horizontal tabulation -\X0A ( 2 45 78) # line feed -\X0B (1 3 78) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 78) # shift out -\X0F (1 3 5 78) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 ( 2 45678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (1 345678) # end of medium -\X1A (1 3 5678) # substitute -\X1B (123 5678) # escape -\X1C ( 34 78) # file separator -\X1D ( 2345678) # group separator -\X1E ( 234 678) # record separator -\X1F ( 45678) # unit separator -\X20 ( ) # space -\X21 ( 5 ) # exclamation mark -\X22 ( 4 ) # quotation mark -\X23 ( 3456 ) # number sign -\X24 ( 4 6 ) # dollar sign -\X25 (123456 ) # percent sign -\X26 (1234 6 ) # ampersand -\X27 ( 6 ) # apostrophe -\X28 ( 23 6 ) # left parenthesis -\X29 ( 3 56 ) # right parenthesis -\X2A ( 3 5 ) # asterisk -\X2B ( 23 5 ) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 3 ) # full stop -\X2F ( 2 56 ) # solidus -\X30 ( 34 6 ) # digit zero -\X31 (1 6 ) # digit one -\X32 (12 6 ) # digit two -\X33 (1 4 6 ) # digit three -\X34 (1 456 ) # digit four -\X35 (1 56 ) # digit five -\X36 (12 4 6 ) # digit six -\X37 (12 456 ) # digit seven -\X38 (12 56 ) # digit eight -\X39 ( 2 4 6 ) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C ( 56 ) # less-than sign -\X3D ( 23 56 ) # equals sign -\X3E ( 45 ) # greater-than sign -\X3F ( 2 6 ) # question mark -\X40 ( 345 7 ) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B (123 567 ) # left square bracket -\X5C ( 34 7 ) # reverse solidus -\X5D ( 234567 ) # right square bracket -\X5E ( 234 67 ) # circumflex accent -\X5F ( 456 ) # low line -\X60 ( 345 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B (123 56 ) # left curly bracket -\X7C ( 34 ) # vertical line -\X7D ( 23456 ) # right curly bracket -\X7E ( 234 6 ) # tilde -\X7F ( 456 8) # delete -\X80 ( 23 67 ) # -\X81 ( 56 8) # -\X82 ( 3 67 ) # break permitted here -\X83 ( 23 678) # no break here -\X84 ( 23 5678) # -\X85 (12 45 8) # next line -\X86 (123 8) # start of selected area -\X87 (1234567 ) # end of selected area -\X88 (12345678) # character tabulation set -\X89 ( 678) # character tabulation with justification -\X8A (1234 678) # line tabulation set -\X8B ( 3 56 8) # partial line down -\X8C (1 5678) # partial line up -\X8D ( 34 678) # reverse line feed -\X8E ( 78) # single shift two -\X8F ( 2 5 78) # single shift three -\X90 ( 23 567 ) # device control string -\X91 (1 34 8) # private use one -\X92 ( 2 456 8) # private use two -\X93 ( 234 6 8) # set transmit state -\X94 ( 23 5 78) # cancel character -\X95 ( 4567 ) # message waiting -\X96 (123456 8) # start of guarded area -\X97 ( 3 6 8) # end of guarded area -\X98 (1 3 56 8) # start of string -\X99 ( 3 678) # -\X9A ( 345678) # single character introducer -\X9B ( 5 78) # control sequence introducer -\X9C ( 8) # string terminator -\X9D ( 4 678) # operating system command -\X9E (1 34 6 8) # privacy message -\X9F (12 4 8) # application program command -\XA0 ( 4 78) # no-break space -\XA1 ( 5 8) # inverted exclamation mark -\XA2 ( 2 5 8) # cent sign -\XA3 ( 3456 8) # pound sign -\XA4 ( 34567 ) # currency sign -\XA5 (1 45678) # yen sign -\XA6 ( 34 8) # broken bar -\XA7 (123 6 8) # section sign -\XA8 ( 7 ) # diaeresis -\XA9 (1 4 8) # copyright sign -\XAA ( 3 7 ) # feminine ordinal indicator -\XAB ( 4 7 ) # left-pointing double angle quotation mark -\XAC ( 67 ) # not sign -\XAD ( 3 8) # soft hyphen -\XAE (123 5 8) # registered sign -\XAF ( 23 56 8) # macron -\XB0 (12 45678) # degree sign -\XB1 (1234 8) # plus-minus sign -\XB2 ( 3 5 78) # superscript two -\XB3 (1 4 678) # superscript three -\XB4 (12 4 678) # acute accent -\XB5 (12 678) # micro sign -\XB6 (12345 8) # pilcrow sign -\XB7 ( 3 78) # middle dot -\XB8 ( 3 5678) # cedilla -\XB9 ( 5678) # superscript one -\XBA ( 6 8) # masculine ordinal indicator -\XBB ( 4 8) # right-pointing double angle quotation mark -\XBC ( 2 5 7 ) # vulgar fraction one quarter -\XBD (1 45 8) # vulgar fraction one half -\XBE (1 345 8) # vulgar fraction three quarters -\XBF ( 2 6 8) # inverted question mark -\XC0 ( 5 7 ) # latin capital letter a with grave -\XC1 ( 2 7 ) # latin capital letter a with acute -\XC2 (1 67 ) # latin capital letter a with circumflex -\XC3 (1 4 67 ) # latin capital letter a with tilde -\XC4 ( 567 ) # latin capital letter a with diaeresis -\XC5 (1 678) # latin capital letter a with ring above -\XC6 ( 345 78) # latin capital letter ae -\XC7 (1234 67 ) # latin capital letter c with cedilla -\XC8 ( 4 67 ) # latin capital letter e with grave -\XC9 ( 2 678) # latin capital letter e with acute -\XCA (1 567 ) # latin capital letter e with circumflex -\XCB (12 4 67 ) # latin capital letter e with diaeresis -\XCC ( 23 7 ) # latin capital letter i with grave -\XCD ( 23 78) # latin capital letter i with acute -\XCE ( 45 7 ) # latin capital letter i with circumflex -\XCF ( 3 5 7 ) # latin capital letter i with diaeresis -\XD0 ( 2 567 ) # latin capital letter eth -\XD1 (12 4567 ) # latin capital letter n with tilde -\XD2 ( 2 67 ) # latin capital letter o with grave -\XD3 (12 67 ) # latin capital letter o with acute -\XD4 (1 4567 ) # latin capital letter o with circumflex -\XD5 ( 23 5 7 ) # latin capital letter o with tilde -\XD6 ( 2 4 67 ) # latin capital letter o with diaeresis -\XD7 (12 5 8) # multiplication sign -\XD8 ( 2 4 678) # latin capital letter o with stroke -\XD9 (12 5678) # latin capital letter u with grave -\XDA ( 2 78) # latin capital letter u with acute -\XDB ( 34 67 ) # latin capital letter u with circumflex -\XDC (12 567 ) # latin capital letter u with diaeresis -\XDD ( 2 5678) # latin capital letter y with acute -\XDE ( 2345 8) # latin capital letter thorn -\XDF ( 234 8) # latin small letter sharp s -\XE0 (123 56 8) # latin small letter a with grave -\XE1 ( 2 8) # latin small letter a with acute -\XE2 (1 3 8) # latin small letter a with circumflex -\XE3 (1 4 6 8) # latin small letter a with tilde -\XE4 (1 8) # latin small letter a with diaeresis -\XE5 (1 6 8) # latin small letter a with ring above -\XE6 ( 345 8) # latin small letter ae -\XE7 (1234 6 8) # latin small letter c with cedilla -\XE8 ( 4 6 8) # latin small letter e with grave -\XE9 (1 5 8) # latin small letter e with acute -\XEA (1 56 8) # latin small letter e with circumflex -\XEB (12 4 6 8) # latin small letter e with diaeresis -\XEC ( 23 8) # latin small letter i with grave -\XED (12 8) # latin small letter i with acute -\XEE ( 45 8) # latin small letter i with circumflex -\XEF ( 2 4 8) # latin small letter i with diaeresis -\XF0 ( 2 56 8) # latin small letter eth -\XF1 (12 456 8) # latin small letter n with tilde -\XF2 (1 3 5 8) # latin small letter o with grave -\XF3 (12 6 8) # latin small letter o with acute -\XF4 (1 456 8) # latin small letter o with circumflex -\XF5 ( 23 5 8) # latin small letter o with tilde -\XF6 ( 3 5 8) # latin small letter o with diaeresis -\XF7 ( 2 45 8) # division sign -\XF8 ( 2 4 6 8) # latin small letter o with stroke -\XF9 ( 23 6 8) # latin small letter u with grave -\XFA (1 3 6 8) # latin small letter u with acute -\XFB ( 34 6 8) # latin small letter u with circumflex -\XFC (12 56 8) # latin small letter u with diaeresis -\XFD (1 3456 8) # latin small letter y with acute -\XFE ( 3 567 ) # latin small letter thorn -\XFF ( 23456 8) # latin small letter y with diaeresis diff --git a/BrailleTables/text.no-oub.tbl b/BrailleTables/text.no-oub.tbl deleted file mode 100644 index 419f449563af8f762de8d3371b80e9695a0a0725..0000000000000000000000000000000000000000 --- a/BrailleTables/text.no-oub.tbl +++ /dev/null @@ -1,278 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - Norwegian (iso-8859-1), based on the -# Offentlig Utvalg for Blindeskrift (Public Commission for Braille) -# translation table for Windows 1252. -# Updated January 2008. - -\X00 ( 45 78) # null -\X01 (1 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 (1 5 78) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 2 4 78) # horizontal tabulation -\X0A ( 2 45 78) # line feed -\X0B (1 3 78) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 78) # shift out -\X0F (1 3 5 78) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 ( 2 45678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (1 345678) # end of medium -\X1A (1 3 5678) # substitute -\X1B (1234 8) # escape -\X1C (12345 8) # file separator -\X1D (1 3 6 8) # group separator -\X1E ( 2 456 8) # record separator -\X1F (1 3 56 8) # unit separator -\X20 ( ) # space -\X21 ( 23 5 ) # exclamation mark -\X22 ( 2 56 ) # quotation mark -\X23 ( 3456 ) # number sign -\X24 ( 2 5678) # dollar sign -\X25 ( 4 6 ) # percent sign -\X26 ( 5 78) # ampersand -\X27 ( 5 ) # apostrophe -\X28 ( 23 6 ) # left parenthesis -\X29 ( 3 56 ) # right parenthesis -\X2A ( 3 5 ) # asterisk -\X2B ( 23 5 7 ) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 3 ) # full stop -\X2F ( 5 7 ) # solidus -\X30 ( 2 45 8) # digit zero -\X31 (1 8) # digit one -\X32 (12 8) # digit two -\X33 (1 4 8) # digit three -\X34 (1 45 8) # digit four -\X35 (1 5 8) # digit five -\X36 (12 4 8) # digit six -\X37 (12 45 8) # digit seven -\X38 (12 5 8) # digit eight -\X39 ( 2 4 8) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C ( 3 5 8) # less-than sign -\X3D ( 23 56 ) # equals sign -\X3E ( 2 67 ) # greater-than sign -\X3F ( 2 6 ) # question mark -\X40 ( 4 ) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B ( 23 678) # left square bracket -\X5C ( 2 8) # reverse solidus -\X5D ( 3 5678) # right square bracket -\X5E ( 5 8) # circumflex accent -\X5F ( 456 ) # low line -\X60 ( 45 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B ( 23 8) # left curly bracket -\X7C ( 56 ) # vertical line -\X7D ( 567 ) # right curly bracket -\X7E ( 3 8) # tilde -\X7F ( 3 5 78) # delete -\X80 ( 2 678) # -\X81 (1 345 8) # -\X82 ( 67 ) # break permitted here -\X83 ( 45678) # no break here -\X84 ( 3 567 ) # -\X85 ( 3 7 ) # next line -\X86 ( 4 7 ) # start of selected area -\X87 ( 45 7 ) # end of selected area -\X88 ( 4 6 8) # character tabulation set -\X89 ( 456 8) # character tabulation with justification -\X8A (1 5678) # line tabulation set -\X8B ( 3 78) # partial line down -\X8C (12345678) # partial line up -\X8D ( 4 78) # reverse line feed -\X8E ( 234 678) # single shift two -\X8F ( 23 67 ) # single shift three -\X90 ( 23 6 8) # device control string -\X91 ( 3 67 ) # private use one -\X92 ( 3 6 8) # private use two -\X93 ( 23 567 ) # set transmit state -\X94 ( 23 56 8) # cancel character -\X95 ( 3 678) # message waiting -\X96 ( 6 8) # start of guarded area -\X97 ( 56 8) # end of guarded area -\X98 ( 2 56 8) # start of string -\X99 ( 2345 8) # -\X9A (1 56 8) # single character introducer -\X9B ( 678) # control sequence introducer -\X9C (123456 8) # string terminator -\X9D ( 23 5678) # operating system command -\X9E ( 234 6 8) # privacy message -\X9F (12 5678) # application program command -\XA0 ( 8) # no-break space -\XA1 ( 23 5 8) # inverted exclamation mark -\XA2 ( 2 5 78) # cent sign -\XA3 (123 8) # pound sign -\XA4 (123 6 8) # currency sign -\XA5 (1 3456 8) # yen sign -\XA6 ( 4567 ) # broken bar -\XA7 ( 4 678) # section sign -\XA8 ( 2 5 8) # diaeresis -\XA9 (1 3 8) # copyright sign -\XAA ( 2 78) # feminine ordinal indicator -\XAB ( 23 78) # left-pointing double angle quotation mark -\XAC ( 3 5 7 ) # not sign -\XAD ( 78) # soft hyphen -\XAE (123 5 8) # registered sign -\XAF ( 45 8) # macron -\XB0 ( 3 56 8) # degree sign -\XB1 ( 23 5 78) # plus-minus sign -\XB2 ( 23 7 ) # superscript two -\XB3 ( 2 5 7 ) # superscript three -\XB4 ( 6 ) # acute accent -\XB5 (1 34 8) # micro sign -\XB6 ( 4 67 ) # pilcrow sign -\XB7 ( 7 ) # middle dot -\XB8 ( 4 8) # cedilla -\XB9 ( 2 7 ) # superscript one -\XBA (1 3 5 8) # masculine ordinal indicator -\XBB ( 5678) # right-pointing double angle quotation mark -\XBC ( 3456 8) # vulgar fraction one quarter -\XBD ( 34567 ) # vulgar fraction one half -\XBE ( 345678) # vulgar fraction three quarters -\XBF ( 2 6 8) # inverted question mark -\XC0 (123 5678) # latin capital letter a with grave -\XC1 (123 567 ) # latin capital letter a with acute -\XC2 (1 678) # latin capital letter a with circumflex -\XC3 (12 678) # latin capital letter a with tilde -\XC4 ( 345 78) # latin capital letter a with diaeresis -\XC5 (1 67 ) # latin capital letter a with ring above -\XC6 ( 345 7 ) # latin capital letter ae -\XC7 (1234 678) # latin capital letter c with cedilla -\XC8 ( 234 67 ) # latin capital letter e with grave -\XC9 (1234567 ) # latin capital letter e with acute -\XCA (12 67 ) # latin capital letter e with circumflex -\XCB (12 4 67 ) # latin capital letter e with diaeresis -\XCC ( 34 78) # latin capital letter i with grave -\XCD ( 34 7 ) # latin capital letter i with acute -\XCE (1 4 67 ) # latin capital letter i with circumflex -\XCF (12 4567 ) # latin capital letter i with diaeresis -\XD0 (1 45678) # latin capital letter eth -\XD1 (12 45678) # latin capital letter n with tilde -\XD2 ( 34 678) # latin capital letter o with grave -\XD3 ( 34 67 ) # latin capital letter o with acute -\XD4 (1 4567 ) # latin capital letter o with circumflex -\XD5 (1 4 678) # latin capital letter o with tilde -\XD6 ( 2 4 678) # latin capital letter o with diaeresis -\XD7 (1 34 6 8) # multiplication sign -\XD8 ( 2 4 67 ) # latin capital letter o with stroke -\XD9 ( 2345678) # latin capital letter u with grave -\XDA ( 234567 ) # latin capital letter u with acute -\XDB (1 567 ) # latin capital letter u with circumflex -\XDC (12 567 ) # latin capital letter u with diaeresis -\XDD (1234 67 ) # latin capital letter y with acute -\XDE (12 4 678) # latin capital letter thorn -\XDF ( 234 8) # latin small letter sharp s -\XE0 (123 56 8) # latin small letter a with grave -\XE1 (123 56 ) # latin small letter a with acute -\XE2 (1 6 8) # latin small letter a with circumflex -\XE3 (12 6 8) # latin small letter a with tilde -\XE4 ( 345 8) # latin small letter a with diaeresis -\XE5 (1 6 ) # latin small letter a with ring above -\XE6 ( 345 ) # latin small letter ae -\XE7 (1234 6 8) # latin small letter c with cedilla -\XE8 ( 234 6 ) # latin small letter e with grave -\XE9 (123456 ) # latin small letter e with acute -\XEA (12 6 ) # latin small letter e with circumflex -\XEB (12 4 6 ) # latin small letter e with diaeresis -\XEC ( 34 8) # latin small letter i with grave -\XED ( 34 ) # latin small letter i with acute -\XEE (1 4 6 ) # latin small letter i with circumflex -\XEF (12 456 ) # latin small letter i with diaeresis -\XF0 (1 456 8) # latin small letter eth -\XF1 (12 456 8) # latin small letter n with tilde -\XF2 ( 34 6 8) # latin small letter o with grave -\XF3 ( 34 6 ) # latin small letter o with acute -\XF4 (1 456 ) # latin small letter o with circumflex -\XF5 (1 4 6 8) # latin small letter o with tilde -\XF6 ( 2 4 6 8) # latin small letter o with diaeresis -\XF7 ( 2 567 ) # division sign -\XF8 ( 2 4 6 ) # latin small letter o with stroke -\XF9 ( 23456 8) # latin small letter u with grave -\XFA ( 23456 ) # latin small letter u with acute -\XFB (1 56 ) # latin small letter u with circumflex -\XFC (12 56 ) # latin small letter u with diaeresis -\XFD (1234 6 ) # latin small letter y with acute -\XFE (12 4 6 8) # latin small letter thorn -\XFF (12 56 8) # latin small letter y with diaeresis diff --git a/BrailleTables/text.pl.tbl b/BrailleTables/text.pl.tbl deleted file mode 100644 index b0a5b520f63f71f9dcad79473825804ee637014c..0000000000000000000000000000000000000000 --- a/BrailleTables/text.pl.tbl +++ /dev/null @@ -1,275 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - Polish (iso-8859-2) - -\X00 ( 4 78) # null -\X01 (1 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 (1 5 78) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 2 4 78) # horizontal tabulation -\X0A ( 2 45 78) # line feed -\X0B (1 3 78) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 78) # shift out -\X0F (1 3 5 78) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 ( 2 45678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (1 345678) # end of medium -\X1A (1 3 5678) # substitute -\X1B ( 2 4 678) # escape -\X1C (12 5678) # file separator -\X1D (12 45678) # group separator -\X1E ( 45 78) # record separator -\X1F ( 45678) # unit separator -\X20 ( ) # space -\X21 ( 23 5 ) # exclamation mark -\X22 ( 5 ) # quotation mark -\X23 ( 3456 ) # number sign -\X24 (12 4 6 ) # dollar sign -\X25 (1 4 6 8) # percent sign -\X26 (1234 6 8) # ampersand -\X27 ( 3 ) # apostrophe -\X28 (123 56 ) # left parenthesis -\X29 ( 23456 ) # right parenthesis -\X2A ( 3 5 ) # asterisk -\X2B ( 23 5 ) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 3 ) # full stop -\X2F ( 34 ) # solidus -\X30 ( 2 45 8) # digit zero -\X31 (1 8) # digit one -\X32 (12 8) # digit two -\X33 (1 4 8) # digit three -\X34 (1 45 8) # digit four -\X35 (1 5 8) # digit five -\X36 (12 4 8) # digit six -\X37 (12 45 8) # digit seven -\X38 (12 5 8) # digit eight -\X39 ( 2 4 8) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C (12 6 8) # less-than sign -\X3D ( 23 56 ) # equals sign -\X3E ( 345 8) # greater-than sign -\X3F ( 23 6 ) # question mark -\X40 ( 4 7 ) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B ( 2 4 6 8) # left square bracket -\X5C (12 567 ) # reverse solidus -\X5D (12 4567 ) # right square bracket -\X5E ( 45 7 ) # circumflex accent -\X5F ( 456 ) # low line -\X60 ( 4 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B ( 23 567 ) # left curly bracket -\X7C (12 56 ) # vertical line -\X7D ( 23 56 8) # right curly bracket -\X7E ( 45 ) # tilde -\X7F ( 4567 ) # delete -\X80 ( 2 67 ) # -\X81 (1 34 6 8) # -\X82 ( 2 56 8) # break permitted here -\X83 ( 2 5 8) # no break here -\X84 ( 3 5 7 ) # -\X85 (1 8) # next line -\X86 ( 234 8) # start of selected area -\X87 ( 2345 8) # end of selected area -\X88 ( 3 56 8) # character tabulation set -\X89 (1 45 8) # character tabulation with justification -\X8A ( 23 5 8) # line tabulation set -\X8B ( 5 78) # partial line down -\X8C (1 5 8) # partial line up -\X8D ( 234 678) # reverse line feed -\X8E ( 67 ) # single shift two -\X8F (12 4 67 ) # single shift three -\X90 ( 23 567 ) # device control string -\X91 ( 2 6 8) # private use one -\X92 ( 6 8) # private use two -\X93 ( 34 7 ) # set transmit state -\X94 ( 3 5 78) # cancel character -\X95 ( 45 8) # message waiting -\X96 (1 4 67 ) # start of guarded area -\X97 ( 4 8) # end of guarded area -\X98 ( 234567 ) # start of string -\X99 (1 3 5 8) # -\X9A (12 67 ) # single character introducer -\X9B ( 56 8) # control sequence introducer -\X9C ( 3 6 8) # string terminator -\X9D ( 34 67 ) # operating system command -\X9E ( 23 5 7 ) # privacy message -\X9F (12 4 678) # application program command -\XA0 ( 7 ) # no-break space -\XA1 (1 67 ) # latin capital letter a with ogonek -\XA2 ( 5 8) # breve -\XA3 (12 67 ) # latin capital letter l with stroke -\XA4 ( 3 678) # currency sign -\XA5 ( 4 6 8) # latin capital letter l with caron -\XA6 ( 2 4 67 ) # latin capital letter s with acute -\XA7 (12345678) # section sign -\XA8 ( 2 78) # diaeresis -\XA9 (1 4567 ) # latin capital letter s with caron -\XAA (12 5 8) # latin capital letter s with cedilla -\XAB (123 5678) # latin capital letter t with caron -\XAC ( 234 67 ) # latin capital letter z with acute -\XAD ( 3 6 ) # soft hyphen -\XAE ( 4 678) # latin capital letter z with caron -\XAF (1234 6 8) # latin capital letter z with dot above -\XB0 ( 3 56 ) # degree sign -\XB1 (1 6 ) # latin small letter a with ogonek -\XB2 ( 8) # ogonek -\XB3 (12 6 ) # latin small letter l with stroke -\XB4 ( 4 ) # acute accent -\XB5 (1 34 8) # latin small letter l with caron -\XB6 ( 2 4 6 ) # latin small letter s with acute -\XB7 ( 3 7 ) # caron -\XB8 ( 8) # cedilla -\XB9 (123 567 ) # latin small letter s with caron -\XBA ( 2 45 8) # latin small letter s with cedilla -\XBB ( 2345678) # latin small letter t with caron -\XBC ( 234 6 ) # latin small letter z with acute -\XBD ( 45 ) # double acute accent -\XBE ( 34 678) # latin small letter z with caron -\XBF (1234 6 ) # latin small letter z with dot above -\XC0 ( 3 78) # latin capital letter r with acute -\XC1 ( 2 7 ) # latin capital letter a with acute -\XC2 (1 3 8) # latin capital letter a with circumflex -\XC3 ( 23 67 ) # latin capital letter a with breve -\XC4 ( 567 ) # latin capital letter a with diaeresis -\XC5 ( 34567 ) # latin capital letter l with acute -\XC6 (1 4 67 ) # latin capital letter c with acute -\XC7 (1234 67 ) # latin capital letter c with cedilla -\XC8 ( 23 78) # latin capital letter c with caron -\XC9 ( 23 8) # latin capital letter e with acute -\XCA (1 567 ) # latin capital letter e with ogonek -\XCB (12345 8) # latin capital letter e with diaeresis -\XCC (12 4 8) # latin capital letter e with caron -\XCD ( 2 5 78) # latin capital letter i with acute -\XCE ( 5678) # latin capital letter i with circumflex -\XCF (1 67 ) # latin capital letter d with caron -\XD0 ( 5 7 ) # latin capital letter d with stroke -\XD1 (1 4567 ) # latin capital letter n with acute -\XD2 ( 2 8) # latin capital letter n with caron -\XD3 ( 34 67 ) # latin capital letter o with acute -\XD4 ( 2 4 8) # latin capital letter o with circumflex -\XD5 (1234 6 8) # latin capital letter o with double acute -\XD6 ( 3 5 8) # latin capital letter o with diaeresis -\XD7 ( 23 6 ) # multiplication sign -\XD8 ( 3 567 ) # latin capital letter r with caron -\XD9 ( 678) # latin capital letter u with ring above -\XDA ( 2 5 7 ) # latin capital letter u with acute -\XDB (12345678) # latin capital letter u with double acute -\XDC ( 23 6 8) # latin capital letter u with diaeresis -\XDD ( 23 678) # latin capital letter y with acute -\XDE ( 3 5678) # latin capital letter t with cedilla -\XDF ( 3456 8) # latin small letter sharp s -\XE0 (123 56 8) # latin small letter r with acute -\XE1 (1 6 8) # latin small letter a with acute -\XE2 (1 678) # latin small letter a with circumflex -\XE3 (1234 8) # latin small letter a with breve -\XE4 ( 345 8) # latin small letter a with diaeresis -\XE5 ( 345678) # latin small letter l with acute -\XE6 (1 4 6 ) # latin small letter c with acute -\XE7 (1234 678) # latin small letter c with cedilla -\XE8 ( 234 6 8) # latin small letter c with caron -\XE9 (12 6 8) # latin small letter e with acute -\XEA (1 56 ) # latin small letter e with ogonek -\XEB (12 4 6 8) # latin small letter e with diaeresis -\XEC ( 34 8) # latin small letter e with caron -\XED (1 4 6 8) # latin small letter i with acute -\XEE (1 4 678) # latin small letter i with circumflex -\XEF (12 456 8) # latin small letter d with caron -\XF0 ( 23 56 8) # latin small letter d with stroke -\XF1 (1 456 ) # latin small letter n with acute -\XF2 ( 34 6 8) # latin small letter n with caron -\XF3 ( 34 6 ) # latin small letter o with acute -\XF4 (1 45678) # latin small letter o with circumflex -\XF5 (1 567 ) # latin small letter o with double acute -\XF6 ( 2 4 6 8) # latin small letter o with diaeresis -\XF7 (12 5678) # division sign -\XF8 ( 78) # latin small letter r with caron -\XF9 ( 23456 8) # latin small letter u with ring above -\XFA (1 56 8) # latin small letter u with acute -\XFB (1 5678) # latin small letter u with double acute -\XFC (12 56 8) # latin small letter u with diaeresis -\XFD ( 23 5678) # latin small letter y with acute -\XFE (1234567 ) # latin small letter t with cedilla -\XFF ( 8) # dot above diff --git a/BrailleTables/text.pt.tbl b/BrailleTables/text.pt.tbl deleted file mode 100644 index 35245f4dfd2d7e09ef70332d13050e52520772b8..0000000000000000000000000000000000000000 --- a/BrailleTables/text.pt.tbl +++ /dev/null @@ -1,277 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - Portugal Portuguese (iso-8859-1) - -\X00 ( 234 678) # null -\X01 (1 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 (1 5 78) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 2 4 78) # horizontal tabulation -\X0A ( 2 45 78) # line feed -\X0B (1 3 78) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 78) # shift out -\X0F (1 3 5 78) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 ( 2 45678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (1 345678) # end of medium -\X1A (1 3 5678) # substitute -\X1B (123 5678) # escape -\X1C ( 34 678) # file separator -\X1D ( 2345678) # group separator -\X1E ( 678) # record separator -\X1F ( 5 78) # unit separator -\X20 ( ) # space -\X21 ( 2358 ) # exclamation mark -\X22 ( 236 ) # quotation mark -\X23 ( 3456 ) # number sign -\X24 ( 56 ) # dollar sign -\X25 ( 3 5678) # percent sign -\X26 (1234 6 8) # ampersand -\X27 ( 37 ) # apostrophe -\X28 ( 1268 ) # left parenthesis -\X29 ( 3458 ) # right parenthesis -\X2A ( 3 5 ) # asterisk -\X2B ( 23 5 ) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 3 ) # full stop -\X2F ( 67 ) # solidus -\X30 ( 2458 ) # digit zero -\X31 (1 8 ) # digit one -\X32 (12 8 ) # digit two -\X33 (1 48 ) # digit three -\X34 (1 458 ) # digit four -\X35 (1 58 ) # digit five -\X36 (12 4 8 ) # digit six -\X37 (12 458 ) # digit seven -\X38 (12 58 ) # digit eight -\X39 ( 2 4 8 ) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C ( 24 68 ) # less-than sign -\X3D ( 23 56 ) # equals sign -\X3E ( 1 358 ) # greater-than sign -\X3F ( 2 6 ) # question mark -\X40 ( 1568 ) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B (123 568 ) # left square bracket -\X5C ( 3 8) # reverse solidus -\X5D ( 234568 ) # right square bracket -\X5E ( 4 ) # circumflex accent -\X5F ( 358 ) # low line -\X60 ( 268 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B (123 8 ) # left curly bracket -\X7C ( 456 ) # vertical line -\X7D ( 4567 ) # right curly bracket -\X7E ( 5 ) # tilde -\X7F ( 5 7 ) # delete -\X80 ( 2 67 ) # -\X81 (1 34 6 8) # -\X82 ( 2 56 8) # break permitted here -\X83 ( 2 5 8) # no break here -\X84 ( 3 5 7 ) # -\X85 (1 8) # next line -\X86 ( 234 8) # start of selected area -\X87 ( 2345 8) # end of selected area -\X88 ( 3 56 8) # character tabulation set -\X89 (1 45 8) # character tabulation with justification -\X8A ( 23 5 8) # line tabulation set -\X8B ( 345 78) # partial line down -\X8C (1 5 8) # partial line up -\X8D ( 2 4 67 ) # reverse line feed -\X8E ( 4567 ) # single shift two -\X8F (12 4 67 ) # single shift three -\X90 ( 23 567 ) # device control string -\X91 ( 2 6 8) # private use one -\X92 ( 6 8) # private use two -\X93 (12 67 ) # set transmit state -\X94 ( 3 5 78) # cancel character -\X95 ( 45 8) # message waiting -\X96 (1 4 67 ) # start of guarded area -\X97 ( 4 8) # end of guarded area -\X98 (12 4567 ) # start of string -\X99 (1 3 5 8) # -\X9A (12 567 ) # single character introducer -\X9B ( 56 8) # control sequence introducer -\X9C ( 3 6 8) # string terminator -\X9D ( 34 7 ) # operating system command -\X9E ( 23 5 7 ) # privacy message -\X9F (12 4 678) # application program command -\XA0 ( 7 ) # no-break space -\XA1 ( 3 67 ) # inverted exclamation mark -\XA2 ( 56 8) # cent sign -\XA3 ( 4 6 ) # pound sign -\XA4 ( 3 678) # currency sign -\XA5 ( 4 6 8) # yen sign -\XA6 ( 2 678) # broken bar -\XA7 (12345678) # section sign -\XA8 ( 2 78) # diaeresis -\XA9 (1 47 ) # copyright sign -\XAA (4 7 ) # feminine ordinal indicator -\XAB ( 2367 ) # left-pointing double angle quotation mark -\XAC ( 2 5678) # not sign -\XAD (12 4 8) # soft hyphen -\XAE ( 12358 ) # registered sign -\XAF ( 5 8) # macron -\XB0 ( 356 7) # degree sign -\XB1 ( 23 5 78) # plus-minus sign -\XB2 (23 8) # superscript two -\XB3 ( 258 ) # superscript three -\XB4 (35 7) # acute accent -\XB5 (1 34 8) # micro sign -\XB6 (12345678) # pilcrow sign -\XB7 ( 3 7 ) # middle dot -\XB8 (1 4 8) # cedilla -\XB9 ( 45 7 ) # superscript one -\XBA ( 3 46 8) # masculine ordinal indicator -\XBB ( 23 68) # right-pointing double angle quotation mark -\XBC (1 3 6 8) # vulgar fraction one quarter -\XBD (123 6 8) # vulgar fraction one half -\XBE ( 34 78) # vulgar fraction three quarters -\XBF ( 3 8) # inverted question mark -\XC0 ( 12 46 7) # latin capital letter a with grave -\XC1 ( 123567 ) # latin capital letter a with acute -\XC2 (1 6 7) # latin capital letter a with circumflex -\XC3 ( 3 567 ) # latin capital letter a with tilde -\XC4 ( 567 ) # latin capital letter a with diaeresis -\XC5 ( 34567 ) # latin capital letter a with ring above -\XC6 ( 4 7 ) # latin capital letter ae -\XC7 (1234 67 ) # latin capital letter c with cedilla -\XC8 ( 23 46 7) # latin capital letter e with grave -\XC9 (123 4567) # latin capital letter e with acute -\XCA (12 6 7) # latin capital letter e with circumflex -\XCB (126 78) # latin capital letter e with diaeresis -\XCC (146 7) # latin capital letter i with grave -\XCD ( 3 4 7) # latin capital letter i with acute -\XCE ( 1 4678) # latin capital letter i with circumflex -\XCF (12 4567 ) # latin capital letter i with diaeresis -\XD0 ( 345 7 ) # latin capital letter eth -\XD1 ( 1245678) # latin capital letter n with tilde -\XD2 ( 2 456 8) # latin capital letter o with grave -\XD3 ( 3 46 7 ) # latin capital letter o with acute -\XD4 ( 1 456 7) # latin capital letter o with circumflex -\XD5 (2 46 7) # latin capital letter o with tilde -\XD6 ( 1456 78) # latin capital letter o with diaeresis -\XD7 (23 6 78) # multiplication sign -\XD8 ( 3 567 ) # latin capital letter o with stroke -\XD9 ( 1567 ) # latin capital letter u with grave -\XDA ( 23 4567) # latin capital letter u with acute -\XDB (1 5678) # latin capital letter u with circumflex -\XDC ( 12 567) # latin capital letter u with diaeresis -\XDD (12 56 78) # latin capital letter y with acute -\XDE ( 3 5678) # latin capital letter thorn -\XDF ( 3456 8) # latin small letter sharp s -\XE0 (12 46 ) # latin small letter a with grave -\XE1 (123 56 ) # latin small letter a with acute -\XE2 (1 6) # latin small letter a with circumflex -\XE3 (3 45 ) # latin small letter a with tilde -\XE4 ( 345 78) # latin small letter a with diaeresis -\XE5 ( 345678) # latin small letter a with ring above -\XE6 ( 4 78) # latin small letter ae -\XE7 (123 46) # latin small letter c with cedilla -\XE8 ( 234 6 ) # latin small letter e with grave -\XE9 (123 456 ) # latin small letter e with acute -\XEA (12 6 ) # latin small letter e with circumflex -\XEB (12 4 6 8) # latin small letter e with diaeresis -\XEC ( 14 6) # latin small letter i with grave -\XED (3 4 ) # latin small letter i with acute -\XEE (1 4 678) # latin small letter i with circumflex -\XEF (12 456 ) # latin small letter i with diaeresis -\XF0 ( 23 56 8) # latin small letter eth -\XF1 (1 345 8) # latin small letter n with tilde -\XF2 ( 24568 ) # latin small letter o with grave -\XF3 (3 46 ) # latin small letter o with acute -\XF4 (1 456 ) # latin small letter o with circumflex -\XF5 (2 46 ) # latin small letter o with tilde -\XF6 ( 2 4678 ) # latin small letter o with diaeresis -\XF7 ( 2 56 ) # division sign -\XF8 ( 468 ) # latin small letter o with stroke -\XF9 ( 1 56 ) # latin small letter u with grave -\XFA (23 456) # latin small letter u with acute -\XFB (1 568 ) # latin small letter u with circumflex -\XFC (12 56 ) # latin small letter u with diaeresis -\XFD ( 12 568) # latin small letter y with acute -\XFE ( 3 8 ) # latin small letter thorn -\XFF (13 456 8) # latin small letter y with diaeresis - - diff --git a/BrailleTables/text.ru.tbl b/BrailleTables/text.ru.tbl deleted file mode 100644 index 098901ab7ec87a6421305ac4e1a9140b0a90144c..0000000000000000000000000000000000000000 --- a/BrailleTables/text.ru.tbl +++ /dev/null @@ -1,310 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - Russian (koi8-r) -# by Hans Schou and Dave Mielke - -# This is the Russian braille table. It is based on the KOI8-R character set -# which to our knowledge is the most used in Russia. - -# As the Russian cyrillic definition conflicts with the latin definition, some -# decisions had to be taken. Russians need to type both latin for the command -# prompt and cyrillic while reading and writing documents and mail. - -# In the following, latin letters are quoted with apostrophes like in 'a', and -# cyrillic letters are enclosed within brackets like in [a]. - -# Dot 1 in the cyrillic definition is the cyrillic letter which looks and -# sounds like 'a'. The problem is that in the KOI8-R character set, there is -# both a latin 'a' and a cyrillic [a]. In decimal, their character numbers are -# 97 and 193 respectively. To handle conflicts like these, we have prioritized -# which characters are most important to match the standard. - -# RULES: -# 1. All cyrillic characters must follow the Russian standard. KOI8-R character -# 193 [a] must be dot-1, and so on. -# 2. Capital cyrillic letters have dot 7 on. -# 3. The latin alphabet is implemented to follow the international standard -# except it has dot 8 on. -# 4. Capital latin letters have dots 7 and 8 on. -# 5. Numbers are defined as in the American standard. This means dot-2 for -# number '1', and so on. This will conflict with the cyrillic comma which is -# also dot-2. -# 4. Special characters like !"#¤%&/()=? follow the American standard if -# possible. -# 2. Control characters are often used on Linux. These are not very well -# implemented. More work should be done. - -# Comments from Russians are very welcome as neither Hans Schou nor Dave Mielke -# understand a single word in Russian. - -\X00 (12345678) # null -\X01 (1 678) # start of heading -\X02 (12 4 678) # start of text -\X03 (1 4 678) # end of text -\X04 (1 4 67 ) # end of transmission -\X05 (1 5678) # enquiry -\X06 ( 23 5 8) # acknowledge -\X07 ( 23 5678) # bell -\X08 ( 3 78) # backspace -\X09 ( 2 4 6 8) # horizontal tabulation -\X0A ( 678) # line feed -\X0B ( 345678) # vertical tabulation -\X0C (123 67 ) # form feed -\X0D ( 45 8) # carriage return -\X0E (1 34567 ) # shift out -\X0F (123 5678) # shift in -\X10 ( 3456 8) # data link escape -\X11 (12 456 8) # device control one -\X12 ( 234 6 8) # device control two -\X13 ( 45 78) # device control three -\X14 ( 345 8) # device control four -\X15 ( 23 5 78) # negative acknowledge -\X16 (123 6 ) # synchronous idle -\X17 ( 2 5678) # end of transmission block -\X18 ( 34 78) # cancel -\X19 (1 3456 ) # end of medium -\X1A ( 4 678) # substitute -\X1B ( 2 4 678) # escape -\X1C (12 5678) # file separator -\X1D (12 45678) # group separator -\X1E (1234 678) # record separator -\X1F ( 45678) # unit separator -\X20 ( ) # space -\X21 ( 23 5 7 ) # exclamation mark -\X22 ( 5 ) # quotation mark -\X23 ( 3456 ) # number sign -\X24 ( 5 7 ) # dollar sign -\X25 (1 4 6 ) # percent sign -\X26 ( 2 5 78) # ampersand -\X27 ( 3 ) # apostrophe -\X28 ( 4 78) # left parenthesis -\X29 ( 5 78) # right parenthesis -\X2A (12 678) # asterisk -\X2B ( 34 6 ) # plus sign -\X2C ( 6 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 4 6 ) # full stop -\X2F ( 34 ) # solidus -\X30 ( 3 56 ) # digit zero -\X31 ( 2 ) # digit one -\X32 ( 23 ) # digit two -\X33 ( 2 5 ) # digit three -\X34 ( 2 56 ) # digit four -\X35 ( 2 6 ) # digit five -\X36 ( 23 5 ) # digit six -\X37 ( 23 56 ) # digit seven -\X38 ( 23 6 ) # digit eight -\X39 ( 3 5 ) # digit nine -\X3A ( 23 7 ) # colon -\X3B ( 56 ) # semicolon -\X3C (12 6 ) # less-than sign -\X3D (123456 ) # equals sign -\X3E ( 345 ) # greater-than sign -\X3F (1 456 ) # question mark -\X40 ( 4 7 ) # commercial at -\X41 (1 78) # latin capital letter a -\X42 (12 78) # latin capital letter b -\X43 (1 4 78) # latin capital letter c -\X44 (1 45 78) # latin capital letter d -\X45 (1 5 78) # latin capital letter e -\X46 (12 4 78) # latin capital letter f -\X47 (12 45 78) # latin capital letter g -\X48 (12 5 78) # latin capital letter h -\X49 ( 2 4 78) # latin capital letter i -\X4A ( 2 45 78) # latin capital letter j -\X4B (1 3 78) # latin capital letter k -\X4C (123 78) # latin capital letter l -\X4D (1 34 78) # latin capital letter m -\X4E (1 345 78) # latin capital letter n -\X4F (1 3 5 78) # latin capital letter o -\X50 (1234 78) # latin capital letter p -\X51 (12345 78) # latin capital letter q -\X52 (123 5 78) # latin capital letter r -\X53 ( 234 78) # latin capital letter s -\X54 ( 2345 78) # latin capital letter t -\X55 (1 3 678) # latin capital letter u -\X56 (123 678) # latin capital letter v -\X57 ( 2 45678) # latin capital letter w -\X58 (1 34 678) # latin capital letter x -\X59 (1 345678) # latin capital letter y -\X5A (1 3 5678) # latin capital letter z -\X5B ( 234 678) # left square bracket -\X5C ( 3 567 ) # reverse solidus -\X5D (12 4567 ) # right square bracket -\X5E ( 45 7 ) # circumflex accent -\X5F ( 456 ) # low line -\X60 ( 4 ) # grave accent -\X61 (1 8) # latin small letter a -\X62 (12 8) # latin small letter b -\X63 (1 4 8) # latin small letter c -\X64 (1 45 8) # latin small letter d -\X65 (1 5 8) # latin small letter e -\X66 (12 4 8) # latin small letter f -\X67 (12 45 8) # latin small letter g -\X68 (12 5 8) # latin small letter h -\X69 ( 2 4 8) # latin small letter i -\X6A ( 2 45 8) # latin small letter j -\X6B (1 3 8) # latin small letter k -\X6C (123 8) # latin small letter l -\X6D (1 34 8) # latin small letter m -\X6E (1 345 8) # latin small letter n -\X6F (1 3 5 8) # latin small letter o -\X70 (1234 8) # latin small letter p -\X71 (12345 8) # latin small letter q -\X72 (123 5 8) # latin small letter r -\X73 ( 234 8) # latin small letter s -\X74 ( 2345 8) # latin small letter t -\X75 (1 3 6 8) # latin small letter u -\X76 (123 6 8) # latin small letter v -\X77 ( 2 456 8) # latin small letter w -\X78 (1 34 6 8) # latin small letter x -\X79 (1 3456 8) # latin small letter y -\X7A (1 3 56 8) # latin small letter z -\X7B ( 23 678) # left curly bracket -\X7C ( 34567 ) # vertical line -\X7D (12 456 ) # right curly bracket -\X7E ( 45 ) # tilde -\X7F ( 4567 ) # delete -\X80 ( 2345678) # box drawings light horizontal -\X81 (12 6 8) # box drawings light vertical -\X82 ( 23456 8) # box drawings light down and right -\X83 ( 5 8) # box drawings light down and left -\X84 (12 4 6 8) # box drawings light up and right -\X85 ( 8) # box drawings light up and left -\X86 (1 4 6 8) # box drawings light vertical and right -\X87 ( 3 8) # box drawings light vertical and left -\X88 (1 6 8) # box drawings light down and horizontal -\X89 ( 34 6 8) # box drawings light up and horizontal -\X8A (123 56 8) # box drawings light vertical and horizontal -\X8B ( 34 8) # upper half block -\X8C ( 4 6 8) # lower half block -\X8D ( 6 8) # full block -\X8E ( 2 78) # left half block -\X8F ( 23 78) # right half block -\X90 ( 3 5 78) # light shade -\X91 ( 2 67 ) # medium shade -\X92 ( 3 56 8) # dark shade -\X93 ( 2 56 8) # top half integral -\X94 ( 23 56 8) # black square -\X95 ( 23 8) # bullet operator -\X96 ( 56 8) # square root -\X97 ( 3 5 8) # almost equal to -\X98 ( 456 8) # less-than or equal to -\X99 ( 3 5678) # greater-than or equal to -\X9A (12 56 8) # no-break space -\X9B ( 2 5 8) # bottom half integral -\X9C ( 23 567 ) # degree sign -\X9D ( 2 6 8) # superscript two -\X9E ( 345 78) # middle dot -\X9F (1 45678) # division sign -\XA0 (1 456 8) # box drawings double horizontal -\XA1 ( 3 67 ) # box drawings double vertical -\XA2 ( 5678) # box drawings down single and right double -\XA3 (1 6 ) # cyrillic small letter io -\XA4 ( 2 7 ) # box drawings down double and right single -\XA5 ( 4 8) # box drawings double down and right -\XA6 (12 67 ) # box drawings down single and left double -\XA7 ( 7 ) # box drawings down double and left single -\XA8 (1 4567 ) # box drawings double down and left -\XA9 ( 78) # box drawings up single and right double -\XAA ( 2 678) # box drawings up double and right single -\XAB ( 4 67 ) # box drawings double up and right -\XAC ( 2 5 7 ) # box drawings up single and left double -\XAD ( 3 6 8) # box drawings up double and left single -\XAE (1234567 ) # box drawings double up and left -\XAF ( 567 ) # box drawings vertical single and right double -\XB0 ( 23 6 8) # box drawings vertical double and right single -\XB1 ( 2 8) # box drawings double vertical and right -\XB2 (123456 8) # box drawings vertical single and left double -\XB3 (1 67 ) # cyrillic capital letter io -\XB4 ( 2 567 ) # box drawings vertical double and left single -\XB5 (1234 6 8) # box drawings double vertical and left -\XB6 ( 3 678) # box drawings down single and horizontal double -\XB7 (1 56 8) # box drawings down double and horizontal single -\XB8 ( 23 67 ) # box drawings double down and horizontal -\XB9 ( 3 5 7 ) # box drawings up single and horizontal double -\XBA ( 3 7 ) # box drawings up double and horizontal single -\XBB ( 34 7 ) # box drawings double up and horizontal -\XBC ( 67 ) # box drawings vertical single and horizontal double -\XBD ( 34 67 ) # box drawings vertical double and horizontal single -\XBE ( 345 7 ) # box drawings double vertical and horizontal -\XBF ( 34 678) # copyright sign -\XC0 (12 56 ) # cyrillic small letter yu -\XC1 (1 ) # cyrillic small letter a -\XC2 (12 ) # cyrillic small letter be -\XC3 (1 4 ) # cyrillic small letter tse -\XC4 (1 45 ) # cyrillic small letter de -\XC5 (1 5 ) # cyrillic small letter ie -\XC6 (12 4 ) # cyrillic small letter ef -\XC7 (12 45 ) # cyrillic small letter ghe -\XC8 (12 5 ) # cyrillic small letter ha -\XC9 ( 2 4 ) # cyrillic small letter i -\XCA (1234 6 ) # cyrillic small letter short i -\XCB (1 3 ) # cyrillic small letter ka -\XCC (123 ) # cyrillic small letter el -\XCD (1 34 ) # cyrillic small letter em -\XCE (1 345 ) # cyrillic small letter en -\XCF (1 3 5 ) # cyrillic small letter o -\XD0 (1234 ) # cyrillic small letter pe -\XD1 (12 4 6 ) # cyrillic small letter ya -\XD2 (123 5 ) # cyrillic small letter er -\XD3 ( 234 ) # cyrillic small letter es -\XD4 ( 2345 ) # cyrillic small letter te -\XD5 (1 3 6 ) # cyrillic small letter u -\XD6 ( 2 45 ) # cyrillic small letter zhe -\XD7 ( 2 456 ) # cyrillic small letter ve -\XD8 ( 23456 ) # cyrillic small letter soft sign -\XD9 ( 234 6 ) # cyrillic small letter yeru -\XDA (1 3 56 ) # cyrillic small letter ze -\XDB (1 56 ) # cyrillic small letter sha -\XDC ( 2 4 6 ) # cyrillic small letter e -\XDD (1 34 6 ) # cyrillic small letter shcha -\XDE (12345 ) # cyrillic small letter che -\XDF (123 56 ) # cyrillic small letter hard sign -\XE0 (12 567 ) # cyrillic capital letter yu -\XE1 (1 7 ) # cyrillic capital letter a -\XE2 (12 7 ) # cyrillic capital letter be -\XE3 (1 4 7 ) # cyrillic capital letter tse -\XE4 (1 45 7 ) # cyrillic capital letter de -\XE5 (1 5 7 ) # cyrillic capital letter ie -\XE6 (12 4 7 ) # cyrillic capital letter ef -\XE7 (12 45 7 ) # cyrillic capital letter ghe -\XE8 (12 5 7 ) # cyrillic capital letter ha -\XE9 ( 2 4 7 ) # cyrillic capital letter i -\XEA (1234 67 ) # cyrillic capital letter short i -\XEB (1 3 7 ) # cyrillic capital letter ka -\XEC (123 7 ) # cyrillic capital letter el -\XED (1 34 7 ) # cyrillic capital letter em -\XEE (1 345 7 ) # cyrillic capital letter en -\XEF (1 3 5 7 ) # cyrillic capital letter o -\XF0 (1234 7 ) # cyrillic capital letter pe -\XF1 (12 4 67 ) # cyrillic capital letter ya -\XF2 (123 5 7 ) # cyrillic capital letter er -\XF3 ( 234 7 ) # cyrillic capital letter es -\XF4 ( 2345 7 ) # cyrillic capital letter te -\XF5 (1 3 67 ) # cyrillic capital letter u -\XF6 ( 2 45 7 ) # cyrillic capital letter zhe -\XF7 ( 2 4567 ) # cyrillic capital letter ve -\XF8 ( 234567 ) # cyrillic capital letter soft sign -\XF9 ( 234 67 ) # cyrillic capital letter yeru -\XFA (1 3 567 ) # cyrillic capital letter ze -\XFB (1 567 ) # cyrillic capital letter sha -\XFC ( 2 4 67 ) # cyrillic capital letter e -\XFD (1 34 67 ) # cyrillic capital letter shcha -\XFE (12345 7 ) # cyrillic capital letter che -\XFF (123 567 ) # cyrillic capital letter hard sign diff --git a/BrailleTables/text.se-old.tbl b/BrailleTables/text.se-old.tbl deleted file mode 100644 index b5b111059cdd7626b47116180c5d7ee374e45fdb..0000000000000000000000000000000000000000 --- a/BrailleTables/text.se-old.tbl +++ /dev/null @@ -1,275 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - Swedish (1989 standard) - -\X00 ( ) # null -\X01 (1 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 (1 5 78) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 2 4 78) # horizontal tabulation -\X0A ( 2 45 78) # line feed -\X0B (1 3 78) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 78) # shift out -\X0F (1 3 5 78) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 ( 2 45678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (1 345678) # end of medium -\X1A (1 3 5678) # substitute -\X1B ( 345 78) # escape -\X1C ( 2 4 678) # file separator -\X1D (1 678) # group separator -\X1E ( 45 78) # record separator -\X1F ( 3 678) # unit separator -\X20 ( ) # space -\X21 ( 23 5 ) # exclamation mark -\X22 ( 56 ) # quotation mark -\X23 ( 3456 ) # number sign -\X24 ( 2 56 ) # dollar sign -\X25 ( 4 678) # percent sign -\X26 ( 34 6 ) # ampersand -\X27 ( 5 ) # apostrophe -\X28 ( 23 678) # left parenthesis -\X29 ( 3 5678) # right parenthesis -\X2A ( 3 5 ) # asterisk -\X2B ( 23 5 7 ) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 3 ) # full stop -\X2F ( 34 ) # solidus -\X30 ( 2 45 8) # digit zero -\X31 (1 8) # digit one -\X32 (12 8) # digit two -\X33 (1 4 8) # digit three -\X34 (1 45 8) # digit four -\X35 (1 5 8) # digit five -\X36 (12 4 8) # digit six -\X37 (12 45 8) # digit seven -\X38 (12 5 8) # digit eight -\X39 ( 2 4 8) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C ( 2 6 8) # less-than sign -\X3D ( 23 56 ) # equals sign -\X3E ( 3 5 7 ) # greater-than sign -\X3F ( 2 6 ) # question mark -\X40 ( 4 67 ) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B ( 23 5 78) # left square bracket -\X5C ( 4567 ) # reverse solidus -\X5D ( 2 5678) # right square bracket -\X5E ( 45 7 ) # circumflex accent -\X5F ( 78) # low line -\X60 ( 4 6 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B ( 3 78) # left curly bracket -\X7C ( 8) # vertical line -\X7D ( 678) # right curly bracket -\X7E ( 45 ) # tilde -\X7F ( 456 8) # delete -\X80 ( 8) # -\X81 ( 8) # -\X82 ( 8) # break permitted here -\X83 ( 8) # no break here -\X84 ( 8) # -\X85 ( 8) # next line -\X86 ( 8) # start of selected area -\X87 ( 8) # end of selected area -\X88 ( 8) # character tabulation set -\X89 ( 8) # character tabulation with justification -\X8A ( 8) # line tabulation set -\X8B ( 8) # partial line down -\X8C ( 8) # partial line up -\X8D ( 8) # reverse line feed -\X8E ( 8) # single shift two -\X8F ( 8) # single shift three -\X90 ( 8) # device control string -\X91 ( 8) # private use one -\X92 ( 8) # private use two -\X93 ( 8) # set transmit state -\X94 ( 8) # cancel character -\X95 ( 8) # message waiting -\X96 ( 8) # start of guarded area -\X97 ( 8) # end of guarded area -\X98 ( 8) # start of string -\X99 ( 8) # -\X9A ( 8) # single character introducer -\X9B ( 8) # control sequence introducer -\X9C ( 8) # string terminator -\X9D ( 8) # operating system command -\X9E ( 8) # privacy message -\X9F ( 8) # application program command -\XA0 ( 8) # no-break space -\XA1 ( 8) # inverted exclamation mark -\XA2 ( 8) # cent sign -\XA3 ( 8) # pound sign -\XA4 ( 8) # currency sign -\XA5 ( 8) # yen sign -\XA6 ( 8) # broken bar -\XA7 ( 8) # section sign -\XA8 ( 8) # diaeresis -\XA9 ( 8) # copyright sign -\XAA ( 8) # feminine ordinal indicator -\XAB ( 8) # left-pointing double angle quotation mark -\XAC ( 8) # not sign -\XAD ( 8) # soft hyphen -\XAE ( 8) # registered sign -\XAF ( 8) # macron -\XB0 ( 8) # degree sign -\XB1 ( 8) # plus-minus sign -\XB2 ( 8) # superscript two -\XB3 ( 8) # superscript three -\XB4 ( 8) # acute accent -\XB5 ( 8) # micro sign -\XB6 ( 8) # pilcrow sign -\XB7 ( 8) # middle dot -\XB8 ( 8) # cedilla -\XB9 ( 8) # superscript one -\XBA ( 8) # masculine ordinal indicator -\XBB ( 8) # right-pointing double angle quotation mark -\XBC ( 8) # vulgar fraction one quarter -\XBD ( 8) # vulgar fraction one half -\XBE ( 8) # vulgar fraction three quarters -\XBF ( 2 6 ) # inverted question mark -\XC0 ( 8) # latin capital letter a with grave -\XC1 ( 8) # latin capital letter a with acute -\XC2 ( 8) # latin capital letter a with circumflex -\XC3 ( 8) # latin capital letter a with tilde -\XC4 ( 345 7 ) # latin capital letter a with diaeresis -\XC5 (1 67 ) # latin capital letter a with ring above -\XC6 ( 345 8) # latin capital letter ae -\XC7 ( 2 67 ) # latin capital letter c with cedilla -\XC8 ( 8) # latin capital letter e with grave -\XC9 (1234567 ) # latin capital letter e with acute -\XCA ( 8) # latin capital letter e with circumflex -\XCB ( 8) # latin capital letter e with diaeresis -\XCC ( 8) # latin capital letter i with grave -\XCD ( 8) # latin capital letter i with acute -\XCE ( 8) # latin capital letter i with circumflex -\XCF ( 8) # latin capital letter i with diaeresis -\XD0 ( 8) # latin capital letter eth -\XD1 (12 45678) # latin capital letter n with tilde -\XD2 ( 8) # latin capital letter o with grave -\XD3 (1 4567 ) # latin capital letter o with acute -\XD4 ( 8) # latin capital letter o with circumflex -\XD5 ( 8) # latin capital letter o with tilde -\XD6 ( 2 4 67 ) # latin capital letter o with diaeresis -\XD7 ( 8) # multiplication sign -\XD8 ( 2 4 6 8) # latin capital letter o with stroke -\XD9 ( 8) # latin capital letter u with grave -\XDA (12 4567 ) # latin capital letter u with acute -\XDB ( 8) # latin capital letter u with circumflex -\XDC (12 567 ) # latin capital letter u with diaeresis -\XDD (1234 67 ) # latin capital letter y with acute -\XDE (12 4 6 ) # latin capital letter thorn -\XDF ( 8) # latin small letter sharp s -\XE0 (123 56 ) # latin small letter a with grave -\XE1 (123 56 ) # latin small letter a with acute -\XE2 (1 6 ) # latin small letter a with circumflex -\XE3 ( 8) # latin small letter a with tilde -\XE4 ( 345 ) # latin small letter a with diaeresis -\XE5 (1 6 ) # latin small letter a with ring above -\XE6 ( 567 ) # latin small letter ae -\XE7 (1234 6 ) # latin small letter c with cedilla -\XE8 ( 234 6 ) # latin small letter e with grave -\XE9 (123456 ) # latin small letter e with acute -\XEA (12 6 ) # latin small letter e with circumflex -\XEB (12 4 6 ) # latin small letter e with diaeresis -\XEC ( 34 ) # latin small letter i with grave -\XED ( 34 ) # latin small letter i with acute -\XEE (1 4 6 ) # latin small letter i with circumflex -\XEF (12 456 ) # latin small letter i with diaeresis -\XF0 ( 8) # latin small letter eth -\XF1 (12 456 ) # latin small letter n with tilde -\XF2 ( 34 6 ) # latin small letter o with grave -\XF3 ( 34 6 ) # latin small letter o with acute -\XF4 (1 456 ) # latin small letter o with circumflex -\XF5 ( 8) # latin small letter o with tilde -\XF6 ( 2 4 6 ) # latin small letter o with diaeresis -\XF7 ( 8) # division sign -\XF8 ( 3 5 8) # latin small letter o with stroke -\XF9 ( 23456 ) # latin small letter u with grave -\XFA ( 23456 ) # latin small letter u with acute -\XFB (1 56 ) # latin small letter u with circumflex -\XFC (12 56 ) # latin small letter u with diaeresis -\XFD (1234 6 ) # latin small letter y with acute -\XFE (12 4 67 ) # latin small letter thorn -\XFF ( 8) # latin small letter y with diaeresis diff --git a/BrailleTables/text.se.tbl b/BrailleTables/text.se.tbl deleted file mode 100644 index e028adc8ba0fcf5cb8d5ca8c1a74511ed04f4823..0000000000000000000000000000000000000000 --- a/BrailleTables/text.se.tbl +++ /dev/null @@ -1,215 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - Swedish (1996 standard) - -# This file contains the ISO-8859-1 compatible version of the Swedish 8-dot -# braille standard as it was defined by the Swedish Braille Authority -# (www.punktskriftsnamnden.se) on October 8, 1996. As of December 2005, this -# is the most current braille standard in Sweden. - -\X20 ( ) # blanktecken, mellanslag -\X21 ( 23 5 ) # utropstecken -\X22 ( 56 ) # rakt citattecken -\X23 ( 3456 ) # nummertecken, "fyrkant" (#) -\X24 ( 23 5 8) # dollartecken ($) -\X25 ( 4 678) # procenttecken -\X26 ( 34 6 8) # et-tecken, och-tecken (&) -\X27 ( 5 ) # rak apostrof -\X28 ( 23 6 ) # vänsterparentes -\X29 ( 3 56 ) # högerparentes -\X2A ( 3 5 ) # asterisk, stjärna -\X2B ( 2 56 ) # plustecken -\X2C ( 2 ) # kommatecken -\X2D ( 3 6 ) # bindestreck, minustecken -\X2E ( 3 ) # punkt -\X2F ( 34 ) # snedstreck, slash -\X30 ( 2 45 8) # siffran 0 (noll) -\X31 (1 8) # siffran 1 (ett) -\X32 (12 8) # siffran 2 (två) -\X33 (1 4 8) # siffran 3 (tre) -\X34 (1 45 8) # siffran 4 (fyra) -\X35 (1 5 8) # siffran 5 (fem) -\X36 (12 4 8) # siffran 6 (sex) -\X37 (12 45 8) # siffran 7 (sju) -\X38 (12 5 8) # siffran 8 (åtta) -\X39 ( 2 4 8) # siffran 9 (nio) -\X3A ( 2 5 ) # kolon -\X3B ( 23 ) # semikolon -\X3C ( 3 5 8) # mindre än-tecken, vänster hake (<) -\X3D ( 23 56 ) # lika med-tecken -\X3E ( 2 67 ) # större än-tecken, höger hake (>) -\X3F ( 2 6 ) # frågetecken -\X40 ( 4 8) # snabel-a, at sign (@) -\X41 (1 7 ) # versalt a -\X42 (12 7 ) # versalt b -\X43 (1 4 7 ) # versalt c -\X44 (1 45 7 ) # versalt d -\X45 (1 5 7 ) # versalt e -\X46 (12 4 7 ) # versalt f -\X47 (12 45 7 ) # versalt g -\X48 (12 5 7 ) # versalt h -\X49 ( 2 4 7 ) # versalt i -\X4A ( 2 45 7 ) # versalt j -\X4B (1 3 7 ) # versalt k -\X4C (123 7 ) # versalt l -\X4D (1 34 7 ) # versalt m -\X4E (1 345 7 ) # versalt n -\X4F (1 3 5 7 ) # versalt o -\X50 (1234 7 ) # versalt p -\X51 (12345 7 ) # versalt q -\X52 (123 5 7 ) # versalt r -\X53 ( 234 7 ) # versalt s -\X54 ( 2345 7 ) # versalt t -\X55 (1 3 67 ) # versalt u -\X56 (123 67 ) # versalt v -\X57 ( 2 4567 ) # versalt w -\X58 (1 34 67 ) # versalt x -\X59 (1 34567 ) # versalt y -\X5A (1 3 567 ) # versalt z -\X5B (123 56 8) # vänster hakparentes ([) -\X5C (1 6 8) # backstreck, backslash, omvänt snedstreck (\) -\X5D ( 23456 8) # höger hakparentes (]) -\X5E ( 5 78) # fristående cirkumflex (^) -\X5F ( 6 ) # fristående understreck, understrykning (_) -\X60 ( 4 6 ) # fristående grav accent (`) -\X61 (1 ) # gement a -\X62 (12 ) # gement b -\X63 (1 4 ) # gement c -\X64 (1 45 ) # gement d -\X65 (1 5 ) # gement e -\X66 (12 4 ) # gement f -\X67 (12 45 ) # gement g -\X68 (12 5 ) # gement h -\X69 ( 2 4 ) # gement i -\X6A ( 2 45 ) # gement j -\X6B (1 3 ) # gement k -\X6C (123 ) # gement l -\X6D (1 34 ) # gement m -\X6E (1 345 ) # gement n -\X6F (1 3 5 ) # gement o -\X70 (1234 ) # gement p -\X71 (12345 ) # gement q -\X72 (123 5 ) # gement r -\X73 ( 234 ) # gement s -\X74 ( 2345 ) # gement t -\X75 (1 3 6 ) # gement u -\X76 (123 6 ) # gement v -\X77 ( 2 456 ) # gement w -\X78 (1 34 6 ) # gement x -\X79 (1 3456 ) # gement y -\X7A (1 3 56 ) # gement z -\X7B ( 23 678) # vänsterklammer ({) -\X7C ( 456 8) # lodstreck, rörtecken (|) -\X7D ( 3 5678) # högerklammer (}) -\X7E ( 2 6 8) # fristående tilde (~) -\XA0 (12345678) # hårt blanktecken ( ) -\XA1 ( 3 67 ) # omvänt utropstecken (¡) -\XA2 ( 234 6 8) # cent (¢) -\XA3 (123 8) # pund (£) -\XA4 ( 2 4 78) # valutatecken (¤) -\XA5 ( 2 4 678) # yen (¥) -\XA6 (12 678) # delat lodstreck (¦) -\XA7 ( 34 6 ) # paragraftecken (§) -\XA8 ( 3 678) # fristående trema (¨) -\XA9 (1 456 8) # copyright (©) -\XAA ( 2345678) # upphöjt gement a (ª) -\XAB ( 23 78) # vänster citattecken, vänster gåsöga («) -\XAC (1 345 8) # icke-tecken, inverterare (¬) -\XAD ( 23 56 8) # mjukt bindestreck (­) -\XAE (12 4 6 8) # registreringstecken (®) -\XAF (1 5 78) # fristående makron (¯) -\XB0 (1 5678) # grad-tecken (°) -\XB1 (1234 6 8) # plus/minus (±) -\XB2 ( 3 7 ) # upphöjd tvåa (²) -\XB3 ( 2 567 ) # upphöjd trea (³) -\XB4 ( 2 5 8) # fristående akut accent (´) -\XB5 (1 34 78) # mikrotecken, my (µ) -\XB6 (12 67 ) # stycketecken (¶) -\XB7 ( 8) # mittställd punkt (·) -\XB8 (12 56 8) # fristående cedilj (¸) -\XB9 (1 4 6 8) # upphöjd etta (¹) -\XBA (1 3 5 8) # upphöjt gement o (º) -\XBB ( 5678) # höger citattecken, höger gåsöga (») -\XBC (123 5 8) # kvartstecken, en fjärdedel (¼) -\XBD (1 3 6 8) # halvtecken, en halv (½) -\XBE ( 3 5 78) # trekvartstecken, tre fjärdedelar (¾) -\XBF ( 3 8) # omvänt frågetecken (¿) -\XC0 (1 4 67 ) # versalt a med grav accent (À) -\XC1 (1 3 5678) # versalt a med akut accent (Á) -\XC2 ( 2 45 78) # versalt a med cirkumflex (Â) -\XC3 (1 3 5 78) # versalt a med tilde (Ã) -\XC4 ( 345 7 ) # versalt ä -\XC5 (1 67 ) # versalt å -\XC6 ( 345 78) # versalt danskt ä (Æ) -\XC7 (1234 67 ) # versalt c med cedilj (Ç) -\XC8 (123 78) # versalt e med grav accent (È) -\XC9 (1234567 ) # versalt e med akut accent (É) -\XCA ( 6 8) # versalt e med cirkumflex (Ê) -\XCB ( 2 7 ) # versalt e med trema (Ë) -\XCC ( 45 7 ) # versalt i med grav accent (Ì) -\XCD (1 34 8) # versalt i med akut accent (Í) -\XCE ( 45 8) # versalt i med cirkumflex (Î) -\XCF ( 67 ) # versalt i med trema (Ï) -\XD0 ( 234 67 ) # versalt stunget d (Ð) -\XD1 (12 4567 ) # versalt muljerat n (Ñ) -\XD2 (1234 78) # versalt o med grav accent (Ò) -\XD3 (1 78) # versalt o med akut accent (Ó) -\XD4 (12 45 78) # versalt o med cirkumflex (Ô) -\XD5 ( 234 78) # versalt o med tilde (Õ) -\XD6 ( 2 4 67 ) # versalt ö -\XD7 (1 34 6 8) # kryss (×) -\XD8 (1 567 ) # versalt danskt ö (Ø) -\XD9 (1 45 78) # versalt u med grav accent (Ù) -\XDA (12 5 78) # versalt u med akut accent (Ú) -\XDB ( 2 45678) # versalt u med cirkumflex (Û) -\XDC (12 567 ) # versalt u med trema, tyskt u (Ü) -\XDD (12 4 78) # versalt y med akut accent (Ý) -\XDE (1234 678) # versalt thorn (Þ) -\XDF (12 78) # gement tyskt dubbel-s (ß) -\XE0 (123 56 ) # gement a med grav accent (à) -\XE1 (123 5678) # gement a med akut accent (á) -\XE2 (1 678) # gement a med cirkumflex (â) -\XE3 (1 3 678) # gement a med tilde (ã) -\XE4 ( 345 ) # gement ä -\XE5 (1 6 ) # gement å -\XE6 ( 345 8) # gement danskt ä (æ) -\XE7 (1234 6 ) # gement c med cedilj (ç) -\XE8 ( 234 6 ) # gement e med grav accent (è) -\XE9 (123456 ) # gement e med akut accent (é) -\XEA (12 6 ) # gement e med cirkumflex (ê) -\XEB (12 4 6 ) # gement e med trema (ë) -\XEC ( 34 78) # gement i med grav accent (ì) -\XED ( 34 8) # gement i med akut accent (í) -\XEE (1 4 6 ) # gement i med cirkumflex (î) -\XEF (12 456 ) # gement i med trema (ï) -\XF0 ( 56 8) # gement stunget d (ð) -\XF1 (12 456 8) # gement muljerat n (ñ) -\XF2 ( 34 678) # gement o med grav accent (ò) -\XF3 ( 34 67 ) # gement o med akut accent (ó) -\XF4 (1 456 ) # gement o med cirkumflex (ô) -\XF5 ( 234 8) # gement o med tilde (ö) -\XF6 ( 2 4 6 ) # gement ö -\XF7 ( 2 56 8) # delbar med, avgår (÷) -\XF8 ( 45 78) # gement danskt ö (ø) -\XF9 ( 23456 ) # gement u med grav accent (ù) -\XFA ( 2 5678) # gement u med akut accent (ú) -\XFB (1 56 ) # gement u med cirkumflex (û) -\XFC (12 56 ) # gement u med trema, tyskt u (ü) -\XFD ( 3456 8) # gement y med akut accent (ý) -\XFE ( 2345 78) # gement thorn (þ) -\XFF (12 6 8) # gement y med trema (ÿ) diff --git a/BrailleTables/text.simple.tbl b/BrailleTables/text.simple.tbl deleted file mode 100644 index 66a36ce3dc76e313c9ee774d4a23723e498af0bc..0000000000000000000000000000000000000000 --- a/BrailleTables/text.simple.tbl +++ /dev/null @@ -1,275 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - (iso-8859-1) - -\X00 ( 4 78) # null -\X01 (1 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 (1 5 78) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 2 4 78) # horizontal tabulation -\X0A ( 2 45 78) # line feed -\X0B (1 3 78) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 78) # shift out -\X0F (1 3 5 78) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 ( 2 45678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (1 345678) # end of medium -\X1A (1 3 5678) # substitute -\X1B ( 2 4 678) # escape -\X1C (12 5678) # file separator -\X1D (12 45678) # group separator -\X1E ( 45 78) # record separator -\X1F ( 45678) # unit separator -\X20 ( ) # space -\X21 ( 234 6 ) # exclamation mark -\X22 ( 5 ) # quotation mark -\X23 ( 3456 ) # number sign -\X24 (12 4 6 ) # dollar sign -\X25 (1 4 6 ) # percent sign -\X26 (1234 6 ) # ampersand -\X27 ( 3 ) # apostrophe -\X28 (123 56 ) # left parenthesis -\X29 ( 23456 ) # right parenthesis -\X2A (1 6 ) # asterisk -\X2B ( 34 6 ) # plus sign -\X2C ( 6 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 4 6 ) # full stop -\X2F ( 34 ) # solidus -\X30 ( 3 56 ) # digit zero -\X31 ( 2 ) # digit one -\X32 ( 23 ) # digit two -\X33 ( 2 5 ) # digit three -\X34 ( 2 56 ) # digit four -\X35 ( 2 6 ) # digit five -\X36 ( 23 5 ) # digit six -\X37 ( 23 56 ) # digit seven -\X38 ( 23 6 ) # digit eight -\X39 ( 3 5 ) # digit nine -\X3A (1 56 ) # colon -\X3B ( 56 ) # semicolon -\X3C (12 6 ) # less-than sign -\X3D (123456 ) # equals sign -\X3E ( 345 ) # greater-than sign -\X3F (1 456 ) # question mark -\X40 ( 4 7 ) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B ( 2 4 67 ) # left square bracket -\X5C (12 567 ) # reverse solidus -\X5D (12 4567 ) # right square bracket -\X5E ( 45 7 ) # circumflex accent -\X5F ( 456 ) # low line -\X60 ( 4 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B ( 2 4 6 ) # left curly bracket -\X7C (12 56 ) # vertical line -\X7D (12 456 ) # right curly bracket -\X7E ( 45 ) # tilde -\X7F ( 4567 ) # delete -\X80 (12 45 8) # -\X81 (12 6 8) # -\X82 ( 23456 8) # break permitted here -\X83 ( 5 8) # no break here -\X84 (12 4 6 8) # -\X85 ( 8) # next line -\X86 (1 4 6 8) # start of selected area -\X87 ( 3 8) # end of selected area -\X88 (1 6 8) # character tabulation set -\X89 ( 34 6 8) # character tabulation with justification -\X8A (123 56 8) # line tabulation set -\X8B ( 34 8) # partial line down -\X8C ( 4 6 8) # partial line up -\X8D ( 6 8) # reverse line feed -\X8E (1 45 8) # single shift two -\X8F (1 5 8) # single shift three -\X90 ( 2 4 8) # device control string -\X91 ( 2 67 ) # private use one -\X92 (12 4 8) # private use two -\X93 ( 2 56 8) # set transmit state -\X94 ( 23 56 8) # cancel character -\X95 ( 23 8) # message waiting -\X96 ( 56 8) # start of guarded area -\X97 ( 3 5 8) # end of guarded area -\X98 ( 456 8) # start of string -\X99 (123 6 8) # -\X9A (12 56 8) # single character introducer -\X9B ( 2 5 8) # control sequence introducer -\X9C ( 23 567 ) # string terminator -\X9D (12345 8) # operating system command -\X9E ( 345 78) # privacy message -\X9F (1 45678) # application program command -\XA0 (1 456 8) # no-break space -\XA1 ( 3 67 ) # inverted exclamation mark -\XA2 ( 5678) # cent sign -\XA3 (12 678) # pound sign -\XA4 ( 2 7 ) # currency sign -\XA5 (12345678) # yen sign -\XA6 (12 67 ) # broken bar -\XA7 (12345678) # section sign -\XA8 (1 4567 ) # diaeresis -\XA9 ( 234567 ) # copyright sign -\XAA (1234 67 ) # feminine ordinal indicator -\XAB ( 4 67 ) # left-pointing double angle quotation mark -\XAC (1 67 ) # not sign -\XAD ( 3 6 8) # soft hyphen -\XAE (1234567 ) # registered sign -\XAF ( 567 ) # macron -\XB0 ( 23 6 8) # degree sign -\XB1 ( 2 8) # plus-minus sign -\XB2 (123456 8) # superscript two -\XB3 ( 2 5 7 ) # superscript three -\XB4 ( 2 567 ) # acute accent -\XB5 (1234 6 8) # micro sign -\XB6 (12345678) # pilcrow sign -\XB7 (1 56 8) # middle dot -\XB8 ( 23 67 ) # cedilla -\XB9 ( 3 5 7 ) # superscript one -\XBA ( 3 7 ) # masculine ordinal indicator -\XBB ( 34 7 ) # right-pointing double angle quotation mark -\XBC ( 67 ) # vulgar fraction one quarter -\XBD ( 34 67 ) # vulgar fraction one half -\XBE ( 345 7 ) # vulgar fraction three quarters -\XBF (123 567 ) # inverted question mark -\XC0 ( 4 8) # latin capital letter a with grave -\XC1 (1 8) # latin capital letter a with acute -\XC2 (12 8) # latin capital letter a with circumflex -\XC3 (1 4 8) # latin capital letter a with tilde -\XC4 ( 4 678) # latin capital letter a with diaeresis -\XC5 ( 34 78) # latin capital letter a with ring above -\XC6 ( 23 78) # latin capital letter ae -\XC7 ( 78) # latin capital letter c with cedilla -\XC8 (12 5 8) # latin capital letter e with grave -\XC9 ( 3 5678) # latin capital letter e with acute -\XCA ( 2 45 8) # latin capital letter e with circumflex -\XCB (1 3 8) # latin capital letter e with diaeresis -\XCC (123 8) # latin capital letter i with grave -\XCD (1 34 8) # latin capital letter i with acute -\XCE (1 345 8) # latin capital letter i with circumflex -\XCF (1 3 5 8) # latin capital letter i with diaeresis -\XD0 (1234 8) # latin capital letter eth -\XD1 (1 4 67 ) # latin capital letter n with tilde -\XD2 (123 5 8) # latin capital letter o with grave -\XD3 ( 234 8) # latin capital letter o with acute -\XD4 ( 2345 8) # latin capital letter o with circumflex -\XD5 (1 3 6 8) # latin capital letter o with tilde -\XD6 ( 3 5 78) # latin capital letter o with diaeresis -\XD7 ( 2 456 8) # multiplication sign -\XD8 (1 34 6 8) # latin capital letter o with stroke -\XD9 (1 3456 8) # latin capital letter u with grave -\XDA (1 3 56 8) # latin capital letter u with acute -\XDB ( 2 4 6 8) # latin capital letter u with circumflex -\XDC (1 5678) # latin capital letter u with diaeresis -\XDD (12 456 8) # latin capital letter y with acute -\XDE ( 45 8) # latin capital letter thorn -\XDF ( 234 6 8) # latin small letter sharp s -\XE0 (1 4 678) # latin small letter a with grave -\XE1 ( 7 ) # latin small letter a with acute -\XE2 ( 345678) # latin small letter a with circumflex -\XE3 ( 3456 8) # latin small letter a with tilde -\XE4 (12 4 678) # latin small letter a with diaeresis -\XE5 (1234 678) # latin small letter a with ring above -\XE6 ( 2 78) # latin small letter ae -\XE7 ( 3 78) # latin small letter c with cedilla -\XE8 (1 678) # latin small letter e with grave -\XE9 ( 5 78) # latin small letter e with acute -\XEA (123 5678) # latin small letter e with circumflex -\XEB ( 2345678) # latin small letter e with diaeresis -\XEC ( 3 678) # latin small letter i with grave -\XED ( 234 67 ) # latin small letter i with acute -\XEE ( 678) # latin small letter i with circumflex -\XEF ( 34 678) # latin small letter i with diaeresis -\XF0 ( 3 56 8) # latin small letter eth -\XF1 (12 4 67 ) # latin small letter n with tilde -\XF2 ( 2 678) # latin small letter o with grave -\XF3 ( 5 7 ) # latin small letter o with acute -\XF4 ( 2 5 78) # latin small letter o with circumflex -\XF5 ( 2 6 8) # latin small letter o with tilde -\XF6 ( 2 5678) # latin small letter o with diaeresis -\XF7 ( 23 5 8) # division sign -\XF8 ( 3 567 ) # latin small letter o with stroke -\XF9 ( 23 5678) # latin small letter u with grave -\XFA ( 34567 ) # latin small letter u with acute -\XFB ( 23 5 78) # latin small letter u with circumflex -\XFC ( 234 678) # latin small letter u with diaeresis -\XFD ( 23 7 ) # latin small letter y with acute -\XFE ( 345 8) # latin small letter thorn -\XFF (1 567 ) # latin small letter y with diaeresis diff --git a/BrailleTables/text.visiob.tbl b/BrailleTables/text.visiob.tbl deleted file mode 100644 index 0433bafd8de3ea6019865b2c05f419002e341f4e..0000000000000000000000000000000000000000 --- a/BrailleTables/text.visiob.tbl +++ /dev/null @@ -1,281 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - VisioBraille (iso-8859-1) - -# This table is the default one for VisioBraille braille terminals. -# It was first used by Sagem printers, before being adopted by Handialog as -# the default braille table. -# Although it is a bit old, VisioBraille users may find this table more -# comfortable than standard French braille tables. - -\X00 ( 345 78) # null -\X01 (1 8) # start of heading -\X02 (12 8) # start of text -\X03 (1 4 8) # end of text -\X04 (1 45 8) # end of transmission -\X05 (1 5 8) # enquiry -\X06 (12 4 8) # acknowledge -\X07 (12 45 8) # bell -\X08 (12 5 8) # backspace -\X09 ( 2 4 8) # horizontal tabulation -\X0A ( 2 45 8) # line feed -\X0B (1 3 8) # vertical tabulation -\X0C (123 8) # form feed -\X0D (1 34 8) # carriage return -\X0E (1 345 8) # shift out -\X0F (1 3 5 8) # shift in -\X10 (1234 8) # data link escape -\X11 (12345 8) # device control one -\X12 (123 5 8) # device control two -\X13 ( 234 8) # device control three -\X14 ( 2345 8) # device control four -\X15 (1 3 6 8) # negative acknowledge -\X16 (123 6 8) # synchronous idle -\X17 ( 2 456 8) # end of transmission block -\X18 (1 34 6 8) # cancel -\X19 (1 3456 8) # end of medium -\X1A (1 3 56 8) # substitute -\X1B ( 345678) # escape -\X1C (1 6 8) # file separator -\X1D (12 6 8) # group separator -\X1E (1 4 6 8) # record separator -\X1F (1 456 8) # unit separator -\X20 ( ) # space -\X21 ( 23 5 ) # exclamation mark -\X22 ( 4 ) # quotation mark -\X23 ( 4 6 ) # number sign -\X24 ( 456 ) # dollar sign -\X25 ( 45 ) # percent sign -\X26 ( 345 ) # ampersand -\X27 ( 3 ) # apostrophe -\X28 ( 6 ) # left parenthesis -\X29 ( 3 5 ) # right parenthesis -\X2A ( 34 ) # asterisk -\X2B ( 56 ) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 2 56 ) # full stop -\X2F (123456 ) # solidus -\X30 ( 3456 ) # digit zero -\X31 (1 6 ) # digit one -\X32 (12 6 ) # digit two -\X33 (1 4 6 ) # digit three -\X34 (1 456 ) # digit four -\X35 (1 56 ) # digit five -\X36 (12 4 6 ) # digit six -\X37 (12 456 ) # digit seven -\X38 (12 56 ) # digit eight -\X39 ( 2 4 6 ) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C ( 23 6 ) # less-than sign -\X3D ( 23 56 ) # equals sign -\X3E ( 3 56 ) # greater-than sign -\X3F ( 2 6 ) # question mark -\X40 (1234 6 ) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 45 7 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B (123 56 ) # left square bracket -\X5C ( 234 6 ) # reverse solidus -\X5D ( 23456 ) # right square bracket -\X5E ( 34 6 ) # circumflex accent -\X5F ( 3 8) # low line -\X60 ( 3 7 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 45 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B ( 67 ) # left curly bracket -\X7C ( 23 5 8) # vertical line -\X7D ( 3 5 8) # right curly bracket -\X7E ( 5 78) # tilde -\X7F ( ) # delete -\X80 (1234 678) # -\X81 (12 56 8) # -\X82 ( ) # break permitted here -\X83 (1 6 8) # no break here -\X84 ( 345 8) # -\X85 (123 56 8) # next line -\X86 ( ) # start of selected area -\X87 (1234 6 8) # end of selected area -\X88 (12 6 8) # character tabulation set -\X89 (12 4 6 8) # character tabulation with justification -\X8A ( 234 6 8) # line tabulation set -\X8B (12 456 8) # partial line down -\X8C (1 4 6 8) # partial line up -\X8D ( ) # reverse line feed -\X8E ( 345 78) # single shift two -\X8F ( ) # single shift three -\X90 (12345678) # device control string -\X91 ( ) # private use one -\X92 ( ) # private use two -\X93 (1 456 8) # set transmit state -\X94 ( 2 4 6 8) # cancel character -\X95 ( ) # message waiting -\X96 (1 56 8) # start of guarded area -\X97 ( 23456 8) # end of guarded area -\X98 (12 456 8) # start of string -\X99 ( 2 4 678) # -\X9A (12 5678) # single character introducer -\X9B ( ) # control sequence introducer -\X9C ( ) # string terminator -\X9D ( ) # operating system command -\X9E ( ) # privacy message -\X9F ( ) # application program command -\XA0 ( ) # no-break space -\XA1 ( ) # inverted exclamation mark -\XA2 ( ) # cent sign -\XA3 ( ) # pound sign -\XA4 ( ) # currency sign -\XA5 ( ) # yen sign -\XA6 ( ) # broken bar -\XA7 ( ) # section sign -\XA8 ( ) # diaeresis -\XA9 ( ) # copyright sign -\XAA ( ) # feminine ordinal indicator -\XAB ( ) # left-pointing double angle quotation mark -\XAC ( ) # not sign -\XAD ( ) # soft hyphen -\XAE ( ) # registered sign -\XAF ( ) # macron -\XB0 ( ) # degree sign -\XB1 ( ) # plus-minus sign -\XB2 ( ) # superscript two -\XB3 ( ) # superscript three -\XB4 ( ) # acute accent -\XB5 ( ) # micro sign -\XB6 ( ) # pilcrow sign -\XB7 ( ) # middle dot -\XB8 ( ) # cedilla -\XB9 ( ) # superscript one -\XBA ( ) # masculine ordinal indicator -\XBB ( ) # right-pointing double angle quotation mark -\XBC ( ) # vulgar fraction one quarter -\XBD ( ) # vulgar fraction one half -\XBE ( ) # vulgar fraction three quarters -\XBF ( ) # inverted question mark -\XC0 (123 5678) # latin capital letter a with grave -\XC1 ( ) # latin capital letter a with acute -\XC2 (1 78) # latin capital letter a with circumflex -\XC3 ( ) # latin capital letter a with tilde -\XC4 ( 3 5 78) # latin capital letter a with diaeresis -\XC5 ( ) # latin capital letter a with ring above -\XC6 ( ) # latin capital letter ae -\XC7 (1234 678) # latin capital letter c with cedilla -\XC8 ( ) # latin capital letter e with grave -\XC9 (12345678) # latin capital letter e with acute -\XCA (12 678) # latin capital letter e with circumflex -\XCB (12 4 678) # latin capital letter e with diaeresis -\XCC ( ) # latin capital letter i with grave -\XCD ( ) # latin capital letter i with acute -\XCE (1 4 678) # latin capital letter i with circumflex -\XCF (12 45678) # latin capital letter i with diaeresis -\XD0 ( ) # latin capital letter eth -\XD1 ( ) # latin capital letter n with tilde -\XD2 ( ) # latin capital letter o with grave -\XD3 ( ) # latin capital letter o with acute -\XD4 (1 3 5678) # latin capital letter o with circumflex -\XD5 ( ) # latin capital letter o with tilde -\XD6 ( 2 4 678) # latin capital letter o with diaeresis -\XD7 ( ) # multiplication sign -\XD8 ( ) # latin capital letter o with stroke -\XD9 ( 2345678) # latin capital letter u with grave -\XDA ( ) # latin capital letter u with acute -\XDB (1 5678) # latin capital letter u with circumflex -\XDC (12 5678) # latin capital letter u with diaeresis -\XDD ( ) # latin capital letter y with acute -\XDE ( ) # latin capital letter thorn -\XDF ( ) # latin small letter sharp s -\XE0 (123 56 8) # latin small letter a with grave -\XE1 ( ) # latin small letter a with acute -\XE2 (1 6 8) # latin small letter a with circumflex -\XE3 ( ) # latin small letter a with tilde -\XE4 ( 345 8) # latin small letter a with diaeresis -\XE5 ( ) # latin small letter a with ring above -\XE6 ( ) # latin small letter ae -\XE7 (1234 6 8) # latin small letter c with cedilla -\XE8 ( 234 6 8) # latin small letter e with grave -\XE9 (123456 8) # latin small letter e with acute -\XEA (12 6 8) # latin small letter e with circumflex -\XEB (12 4 6 8) # latin small letter e with diaeresis -\XEC ( ) # latin small letter i with grave -\XED ( ) # latin small letter i with acute -\XEE (1 4 6 8) # latin small letter i with circumflex -\XEF (12 456 8) # latin small letter i with diaeresis -\XF0 ( ) # latin small letter eth -\XF1 ( ) # latin small letter n with tilde -\XF2 ( ) # latin small letter o with grave -\XF3 ( ) # latin small letter o with acute -\XF4 (1 456 8) # latin small letter o with circumflex -\XF5 ( ) # latin small letter o with tilde -\XF6 ( 2 4 6 8) # latin small letter o with diaeresis -\XF7 ( ) # division sign -\XF8 ( ) # latin small letter o with stroke -\XF9 ( 23456 8) # latin small letter u with grave -\XFA ( ) # latin small letter u with acute -\XFB (1 56 8) # latin small letter u with circumflex -\XFC (12 56 8) # latin small letter u with diaeresis -\XFD ( ) # latin small letter y with acute -\XFE ( ) # latin small letter thorn -\XFF ( ) # latin small letter y with diaeresis diff --git a/BrailleTables/text.vni.tbl b/BrailleTables/text.vni.tbl deleted file mode 100644 index 28a92c2e40f65347136377987099194965232fc8..0000000000000000000000000000000000000000 --- a/BrailleTables/text.vni.tbl +++ /dev/null @@ -1,275 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# BRLTTY Text Translation Table - Vietnamese (iso-8859-1) - -\X00 ( 4 78) # null -\X01 (1 78) # start of heading -\X02 (12 78) # start of text -\X03 (1 4 78) # end of text -\X04 (1 45 78) # end of transmission -\X05 (1 5 78) # enquiry -\X06 (12 4 78) # acknowledge -\X07 (12 45 78) # bell -\X08 (12 5 78) # backspace -\X09 ( 2 4 78) # horizontal tabulation -\X0A ( 2 45 78) # line feed -\X0B (1 3 78) # vertical tabulation -\X0C (123 78) # form feed -\X0D (1 34 78) # carriage return -\X0E (1 345 78) # shift out -\X0F (1 3 5 78) # shift in -\X10 (1234 78) # data link escape -\X11 (12345 78) # device control one -\X12 (123 5 78) # device control two -\X13 ( 234 78) # device control three -\X14 ( 2345 78) # device control four -\X15 (1 3 678) # negative acknowledge -\X16 (123 678) # synchronous idle -\X17 ( 2 45678) # end of transmission block -\X18 (1 34 678) # cancel -\X19 (1 345678) # end of medium -\X1A (1 3 5678) # substitute -\X1B ( 2 4 678) # escape -\X1C (12 5678) # file separator -\X1D (12 45678) # group separator -\X1E ( 45 78) # record separator -\X1F ( 45678) # unit separator -\X20 ( ) # space -\X21 ( 23 5 ) # exclamation mark -\X22 ( 678) # quotation mark -\X23 ( 3456 ) # number sign -\X24 ( 345 ) # dollar sign -\X25 ( 2 4 6 ) # percent sign -\X26 ( 34 6 8) # ampersand -\X27 ( 3 ) # apostrophe -\X28 (123 567 ) # left parenthesis -\X29 ( 234567 ) # right parenthesis -\X2A ( 3 5 ) # asterisk -\X2B ( 34 6 ) # plus sign -\X2C ( 2 ) # comma -\X2D ( 3 6 ) # hyphen-minus -\X2E ( 2 56 ) # full stop -\X2F ( 34 ) # solidus -\X30 ( 3 56 8) # digit zero -\X31 ( 2 8) # digit one -\X32 ( 23 8) # digit two -\X33 ( 2 5 8) # digit three -\X34 ( 2 56 8) # digit four -\X35 ( 2 6 8) # digit five -\X36 ( 23 5 8) # digit six -\X37 ( 23 56 8) # digit seven -\X38 ( 23 6 8) # digit eight -\X39 ( 3 5 8) # digit nine -\X3A ( 2 5 ) # colon -\X3B ( 23 ) # semicolon -\X3C ( 23 6 ) # less-than sign -\X3D ( 23 56 ) # equals sign -\X3E ( 3 56 ) # greater-than sign -\X3F ( 2 6 ) # question mark -\X40 ( 4 7 ) # commercial at -\X41 (1 7 ) # latin capital letter a -\X42 (12 7 ) # latin capital letter b -\X43 (1 4 7 ) # latin capital letter c -\X44 (1 3 567 ) # latin capital letter d -\X45 (1 5 7 ) # latin capital letter e -\X46 (12 4 7 ) # latin capital letter f -\X47 (12 45 7 ) # latin capital letter g -\X48 (12 5 7 ) # latin capital letter h -\X49 ( 2 4 7 ) # latin capital letter i -\X4A ( 2 45 7 ) # latin capital letter j -\X4B (1 3 7 ) # latin capital letter k -\X4C (123 7 ) # latin capital letter l -\X4D (1 34 7 ) # latin capital letter m -\X4E (1 345 7 ) # latin capital letter n -\X4F (1 3 5 7 ) # latin capital letter o -\X50 (1234 7 ) # latin capital letter p -\X51 (12345 7 ) # latin capital letter q -\X52 (123 5 7 ) # latin capital letter r -\X53 ( 234 7 ) # latin capital letter s -\X54 ( 2345 7 ) # latin capital letter t -\X55 (1 3 67 ) # latin capital letter u -\X56 (123 67 ) # latin capital letter v -\X57 ( 2 4567 ) # latin capital letter w -\X58 (1 34 67 ) # latin capital letter x -\X59 (1 34567 ) # latin capital letter y -\X5A (1 3 567 ) # latin capital letter z -\X5B (123 56 8) # left square bracket -\X5C (1 6 8) # reverse solidus -\X5D ( 23456 8) # right square bracket -\X5E ( 45 7 ) # circumflex accent -\X5F ( 4567 ) # low line -\X60 ( 4 ) # grave accent -\X61 (1 ) # latin small letter a -\X62 (12 ) # latin small letter b -\X63 (1 4 ) # latin small letter c -\X64 (1 3 56 ) # latin small letter d -\X65 (1 5 ) # latin small letter e -\X66 (12 4 ) # latin small letter f -\X67 (12 45 ) # latin small letter g -\X68 (12 5 ) # latin small letter h -\X69 ( 2 4 ) # latin small letter i -\X6A ( 2 45 ) # latin small letter j -\X6B (1 3 ) # latin small letter k -\X6C (123 ) # latin small letter l -\X6D (1 34 ) # latin small letter m -\X6E (1 345 ) # latin small letter n -\X6F (1 3 5 ) # latin small letter o -\X70 (1234 ) # latin small letter p -\X71 (12345 ) # latin small letter q -\X72 (123 5 ) # latin small letter r -\X73 ( 234 ) # latin small letter s -\X74 ( 2345 ) # latin small letter t -\X75 (1 3 6 ) # latin small letter u -\X76 (123 6 ) # latin small letter v -\X77 ( 2 456 ) # latin small letter w -\X78 (1 34 6 ) # latin small letter x -\X79 (1 3456 ) # latin small letter y -\X7A (1 3 56 ) # latin small letter z -\X7B (123 5678) # left curly bracket -\X7C ( 456 8) # vertical line -\X7D ( 2345678) # right curly bracket -\X7E ( 45 ) # tilde -\X7F ( 456 ) # delete -\X80 ( 4 8) # -\X81 (1 8) # -\X82 (12 8) # break permitted here -\X83 (1 4 8) # no break here -\X84 (1 45 8) # -\X85 (1 5 8) # next line -\X86 (12 4 8) # start of selected area -\X87 (12 45 8) # end of selected area -\X88 (12 5 8) # character tabulation set -\X89 ( 2 4 8) # character tabulation with justification -\X8A ( 2 45 8) # line tabulation set -\X8B (1 3 8) # partial line down -\X8C (123 8) # partial line up -\X8D (1 34 8) # reverse line feed -\X8E (1 345 8) # single shift two -\X8F (1 3 5 8) # single shift three -\X90 (1234 8) # device control string -\X91 (12345 8) # private use one -\X92 (123 5 8) # private use two -\X93 ( 234 8) # set transmit state -\X94 ( 2345 8) # cancel character -\X95 (1 3 6 8) # message waiting -\X96 (123 6 8) # start of guarded area -\X97 ( 2 456 8) # end of guarded area -\X98 (1 34 6 8) # start of string -\X99 (1 3456 8) # -\X9A (1 3 56 8) # single character introducer -\X9B ( 2 4 6 8) # control sequence introducer -\X9C (12 56 8) # string terminator -\X9D (12 456 8) # operating system command -\X9E ( 45 8) # privacy message -\X9F ( 456 8) # application program command -\XA0 ( ) # no-break space -\XA1 (12345678) # inverted exclamation mark -\XA2 (12345678) # cent sign -\XA3 (12345678) # pound sign -\XA4 (12345678) # currency sign -\XA5 (12345678) # yen sign -\XA6 (12345678) # broken bar -\XA7 (12345678) # section sign -\XA8 (12345678) # diaeresis -\XA9 (1 4 7 ) # copyright sign -\XAA (12345678) # feminine ordinal indicator -\XAB ( 23 67 ) # left-pointing double angle quotation mark -\XAC (12345678) # not sign -\XAD (12345678) # soft hyphen -\XAE (1234 7 ) # registered sign -\XAF (12345678) # macron -\XB0 (12345678) # degree sign -\XB1 (12345678) # plus-minus sign -\XB2 (12345678) # superscript two -\XB3 (12345678) # superscript three -\XB4 (12345678) # acute accent -\XB5 (12345678) # micro sign -\XB6 (12345678) # pilcrow sign -\XB7 ( 3 5 ) # middle dot -\XB8 (12345678) # cedilla -\XB9 (12345678) # superscript one -\XBA (12345678) # masculine ordinal indicator -\XBB ( 3 567 ) # right-pointing double angle quotation mark -\XBC (12345678) # vulgar fraction one quarter -\XBD (12345678) # vulgar fraction one half -\XBE (12345678) # vulgar fraction three quarters -\XBF (12345678) # inverted question mark -\XC0 ( 567 ) # latin capital letter a with grave -\XC1 ( 3 5 7 ) # latin capital letter a with acute -\XC2 ( 7 ) # latin capital letter a with circumflex -\XC3 ( 3 67 ) # latin capital letter a with tilde -\XC4 ( 67 ) # latin capital letter a with diaeresis -\XC5 ( 2 67 ) # latin capital letter a with ring above -\XC6 ( 2 67 ) # latin capital letter ae -\XC7 (1234 67 ) # latin capital letter c with cedilla -\XC8 ( 56 8) # latin capital letter e with grave -\XC9 ( 3 5 8) # latin capital letter e with acute -\XCA ( 8) # latin capital letter e with circumflex -\XCB ( 6 8) # latin capital letter e with diaeresis -\XCC ( 567 ) # latin capital letter i with grave -\XCD ( 3 5 7 ) # latin capital letter i with acute -\XCE (1234567 ) # latin capital letter i with circumflex -\XCF ( 6 ) # latin capital letter i with diaeresis -\XD0 (12345678) # latin capital letter eth -\XD1 (1 45 7 ) # latin capital letter n with tilde -\XD2 ( 67 ) # latin capital letter o with grave -\XD3 ( 3 67 ) # latin capital letter o with acute -\XD4 ( 2 4 67 ) # latin capital letter o with circumflex -\XD5 ( 3 6 ) # latin capital letter o with tilde -\XD6 (12 567 ) # latin capital letter o with diaeresis -\XD7 ( 3 5 ) # multiplication sign -\XD8 ( 56 ) # latin capital letter o with stroke -\XD9 ( 3 5 ) # latin capital letter u with grave -\XDA ( 2 6 8) # latin capital letter u with acute -\XDB ( 2 6 ) # latin capital letter u with circumflex -\XDC ( 3 6 8) # latin capital letter u with diaeresis -\XDD (1 34567 ) # latin capital letter y with acute -\XDE (12345678) # latin capital letter thorn -\XDF ( 234 ) # latin small letter sharp s -\XE0 ( 567 ) # latin small letter a with grave -\XE1 ( 3 5 7 ) # latin small letter a with acute -\XE2 ( 7 ) # latin small letter a with circumflex -\XE3 ( 3 67 ) # latin small letter a with tilde -\XE4 ( 67 ) # latin small letter a with diaeresis -\XE5 ( 2 67 ) # latin small letter a with ring above -\XE6 ( 2 6 ) # latin small letter ae -\XE7 (1234 6 ) # latin small letter c with cedilla -\XE8 ( 56 8) # latin small letter e with grave -\XE9 ( 3 5 8) # latin small letter e with acute -\XEA ( 8) # latin small letter e with circumflex -\XEB ( 6 8) # latin small letter e with diaeresis -\XEC ( 56 ) # latin small letter i with grave -\XED ( 3 5 ) # latin small letter i with acute -\XEE (123456 ) # latin small letter i with circumflex -\XEF ( 6 ) # latin small letter i with diaeresis -\XF0 (12345678) # latin small letter eth -\XF1 (1 45 ) # latin small letter n with tilde -\XF2 ( 6 ) # latin small letter o with grave -\XF3 ( 3 6 ) # latin small letter o with acute -\XF4 ( 2 4 6 ) # latin small letter o with circumflex -\XF5 ( 3 6 ) # latin small letter o with tilde -\XF6 (12 56 ) # latin small letter o with diaeresis -\XF7 ( 34 ) # division sign -\XF8 ( 56 ) # latin small letter o with stroke -\XF9 ( 3 5 ) # latin small letter u with grave -\XFA ( 2 6 8) # latin small letter u with acute -\XFB ( 2 6 ) # latin small letter u with circumflex -\XFC ( 3 6 8) # latin small letter u with diaeresis -\XFD (1 3456 ) # latin small letter y with acute -\XFE (12345678) # latin small letter thorn -\XFF (1 3456 ) # latin small letter y with diaeresis diff --git a/ContractionTables/README b/ContractionTables/README deleted file mode 100644 index 100ec83cadcba20b3cc4da7c04f18819174f1ceb..0000000000000000000000000000000000000000 --- a/ContractionTables/README +++ /dev/null @@ -1,31 +0,0 @@ -Contraction Tables -================== - -Each line of a contraction table consists of UTF8-encoded characters and may be -empty, a comment, or a table entry. An empty line contains only whitespace (any -number of blanks and/or tabs). A line is a comment if the first non-whitespace -character is '#'. The format of a table entry is: - - opcode operand ... [comment] - -Each opcode has a specific number of operands (most have two). The opcode, each -of its operands, and the optional comment are separated from one another by -whitespace. Leading whitespace is ignored. - -The order of the entries in the table may be anything that is convenient. You -may wish to bear in mind, however, that the compiler rearranges entries so that -the longest of several entries beginning with the same two characters is tested -first. If entries have the same first operand, they are arranged in the order -in which they are found in the table. Thus, the same string may have different -translations under different circumstances. This method of arrangement is also -followed for entries whose first operand is just one character. - -In specifying the first operand, you may simply type it, if all the characters -are on the keyboard. For those characters which are not, use a backslash -followed by two hexadecimal digits. If you wish, you can follow the C -convention and place "0x" between the backslash and the hexadecimal digits. To -enter a backslash, use two in sequence, "\\". - -In most entries, the first operand is the string to be translated, and the -second operand is the dot patterns of the Braille cells in the translation. The -standard dot numbering is used. Cells are separated by hyphens ('-'). diff --git a/ContractionTables/compress.ctb b/ContractionTables/compress.ctb deleted file mode 100644 index 0e6bbfc17d170ac50a6a127f5ce84a5900a31462..0000000000000000000000000000000000000000 --- a/ContractionTables/compress.ctb +++ /dev/null @@ -1,28 +0,0 @@ -############################################################################### -# 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-2008 by The BRLTTY Developers. -# -# BRLTTY comes with ABSOLUTELY NO WARRANTY. -# -# This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. -# -# Web Page: http://mielke.cc/brltty/ -# -# This software is maintained by Dave Mielke . -############################################################################### - -# Multiple Blank, Tab, etc. Suppression Table - -# Sequences which should be represented by no dots. -repeatable \s 0 -repeatable \t 0 - -# cut down lines of hyphens, underscores, etc. -repeatable --- = -repeatable ___ = -repeatable === = - diff --git a/Documents/BrlAPIref.doxy.in b/Documents/BrlAPIref.doxy.in index 5331430e84738d3b82659f00809c105233f8fe81..0ebdc3d387133f298da529245d8f2580a65a6138 100644 --- a/Documents/BrlAPIref.doxy.in +++ b/Documents/BrlAPIref.doxy.in @@ -53,16 +53,6 @@ CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English -# This tag can be used to specify the encoding used in the generated output. -# The encoding is not always determined by the language that is chosen, -# but also whether or not the output is meant for Windows or non-Windows users. -# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES -# forces the Windows encoding (this is the default for the Windows binary), -# whereas setting the tag to NO uses a Unix-style encoding (the default for -# all platforms other than Windows). - -USE_WINDOWS_ENCODING = NO - # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). @@ -1115,22 +1105,6 @@ DOT_PATH = DOTFILE_DIRS = -# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_WIDTH = 1024 - -# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_HEIGHT = 1024 - # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes that diff --git a/BrailleDrivers/BrailleLite/brl_drivers.lst b/Documents/BrlAPIref.made similarity index 100% rename from BrailleDrivers/BrailleLite/brl_drivers.lst rename to Documents/BrlAPIref.made diff --git a/Documents/BrlAPIref/html/annotated.html b/Documents/BrlAPIref/html/annotated.html new file mode 100644 index 0000000000000000000000000000000000000000..c27cfa8488279d26d9296f02efd7017f310c41bf --- /dev/null +++ b/Documents/BrlAPIref/html/annotated.html @@ -0,0 +1,42 @@ + + +BrlAPI: Data Structures + + + + + + +

BrlAPI Data Structures

Here are the data structures with brief descriptions: + + + + + + + + + + + + + + + +
brlapi_authClientPacket_t
brlapi_authServerPacket_t
brlapi_connectionSettings_tSettings structure for BrlAPI connection
brlapi_describedKeyCode_t
brlapi_error_t
brlapi_errorPacket_t
brlapi_expandedKeyCode_t
brlapi_getDriverSpecificModePacket_t
brlapi_header_t
brlapi_packet_t
brlapi_range_t
brlapi_versionPacket_t
brlapi_writeArguments_t
brlapi_writeArgumentsPacket_t
brlapi_writeStruct
+
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/brlapi_8h-source.html b/Documents/BrlAPIref/html/brlapi_8h-source.html new file mode 100644 index 0000000000000000000000000000000000000000..8f82771052929415e572cb2710b819419e595963 --- /dev/null +++ b/Documents/BrlAPIref/html/brlapi_8h-source.html @@ -0,0 +1,522 @@ + + +BrlAPI: brlapi.h Source File + + + + + + + +

brlapi.h

Go to the documentation of this file.
00001 /* Programs/brlapi.h.  Generated by configure.  */
+00002 /*
+00003  * libbrlapi - A library providing access to braille terminals for applications.
+00004  *
+00005  * Copyright (C) 2002-2009 by
+00006  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
+00007  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
+00008  *
+00009  * libbrlapi comes with ABSOLUTELY NO WARRANTY.
+00010  *
+00011  * This is free software, placed under the terms of the
+00012  * GNU Lesser General Public License, as published by the Free Software
+00013  * Foundation; either version 2.1 of the License, or (at your option) any
+00014  * later version. Please see the file LICENSE-LGPL for details.
+00015  *
+00016  * Web Page: http://mielke.cc/brltty/
+00017  *
+00018  * This software is maintained by Dave Mielke <dave@mielke.cc>.
+00019  */
+00020 
+00025 #ifndef BRLAPI_INCLUDED
+00026 #define BRLAPI_INCLUDED
+00027 
+00028 #ifdef __cplusplus
+00029 extern "C" {
+00030 #endif /* __cplusplus */
+00031 
+00032 /* #undef BRLAPI_WIN32 */
+00033 
+00038 #define BRLAPI_RELEASE "0.5.3"
+00039 
+00041 #define BRLAPI_MAJOR 0
+00042 
+00044 #define BRLAPI_MINOR 5
+00045 
+00047 #define BRLAPI_REVISION 3
+00048 
+00051 /* Types are defined there */
+00052 #include <sys/types.h>
+00053 
+00054 #ifdef BRLAPI_WIN32
+00055 #include <windows.h>
+00056 #define BRLAPI_STDCALL __stdcall
+00057 #else /* BRLAPI_WIN32 */
+00058 #define BRLAPI_STDCALL
+00059 #endif /* BRLAPI_WIN32 */
+00060 
+00061 #ifdef _MSC_VER
+00062 typedef __int64 uint64_t;
+00063 typedef __int32 uint32_t;
+00064 #define UINT64_C(x) (x ## Ui64)
+00065 #define PRIx64 "I64x"
+00066 typedef signed int ssize_t;
+00067 #else /* _MSC_VER */
+00068 
+00069 /* this is for uint*_t */
+00070 #include <stdint.h>
+00071 
+00072 /* NULL is defined there */
+00073 #include <unistd.h>
+00074 
+00075 #include <inttypes.h> /* For PRIx64 */
+00076 #endif /* _MSC_VER */
+00077 
+00100 typedef struct brlapi_handle_t brlapi_handle_t;
+00101 
+00103 size_t BRLAPI_STDCALL brlapi_getHandleSize(void);
+00104 
+00118 #define BRLAPI_SOCKETPORTNUM 4101
+00119 #define BRLAPI_SOCKETPORT "4101"
+00120 
+00122 #define BRLAPI_SOCKETPATH "/var/lib/BrlAPI"
+00123 
+00128 #define BRLAPI_ETCDIR "/etc"
+00129 
+00133 #define BRLAPI_AUTHKEYFILE "brlapi.key"
+00134 
+00136 #define BRLAPI_DEFAUTH BRLAPI_ETCDIR "/" BRLAPI_AUTHKEYFILE
+00137 
+00138 #ifdef __MINGW32__
+00139 typedef HANDLE brlapi_fileDescriptor;
+00140 #else /* __MINGW32__ */
+00141 typedef int brlapi_fileDescriptor;
+00142 #endif /* __MINGW32__ */
+00143 
+00174 typedef struct {
+00182   char *auth;
+00183 
+00192   char *host;
+00193 } brlapi_connectionSettings_t;
+00194 
+00195 /* BRLAPI_SETTINGS_INITIALIZER */
+00198 #define BRLAPI_SETTINGS_INITIALIZER { NULL, NULL }
+00199 
+00200 /* brlapi_openConnection */
+00245 #ifndef BRLAPI_NO_SINGLE_SESSION
+00246 brlapi_fileDescriptor BRLAPI_STDCALL brlapi_openConnection(const brlapi_connectionSettings_t *desiredSettings, brlapi_connectionSettings_t *actualSettings);
+00247 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00248 brlapi_fileDescriptor BRLAPI_STDCALL brlapi__openConnection(brlapi_handle_t *handle, const brlapi_connectionSettings_t *desiredSettings, brlapi_connectionSettings_t *actualSettings);
+00249 
+00250 /* brlapi_closeConnection */
+00257 #ifndef BRLAPI_NO_SINGLE_SESSION
+00258 void BRLAPI_STDCALL brlapi_closeConnection(void);
+00259 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00260 void BRLAPI_STDCALL brlapi__closeConnection(brlapi_handle_t *handle);
+00261 
+00277 #define BRLAPI_MAXNAMELENGTH 31
+00278 
+00279 /* brlapi_getDriverName */
+00291 #ifndef BRLAPI_NO_SINGLE_SESSION
+00292 int BRLAPI_STDCALL brlapi_getDriverName(char *buffer, size_t size);
+00293 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00294 int BRLAPI_STDCALL brlapi__getDriverName(brlapi_handle_t *handle, char *buffer, size_t size);
+00295 
+00296 /* brlapi_getDisplaySize */
+00298 #ifndef BRLAPI_NO_SINGLE_SESSION
+00299 int BRLAPI_STDCALL brlapi_getDisplaySize(unsigned int *x, unsigned int *y);
+00300 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00301 int BRLAPI_STDCALL brlapi__getDisplaySize(brlapi_handle_t *handle, unsigned int *x, unsigned int *y);
+00302 
+00326 /* brlapi_enterTtyMode */
+00346 #ifndef BRLAPI_NO_SINGLE_SESSION
+00347 int BRLAPI_STDCALL brlapi_enterTtyMode(int tty, const char *driver);
+00348 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00349 int BRLAPI_STDCALL brlapi__enterTtyMode(brlapi_handle_t *handle, int tty, const char *driver);
+00350 
+00360 #define BRLAPI_TTY_DEFAULT -1
+00361 
+00362 /* brlapi_enterTtyModeWithPath */
+00374 #ifndef BRLAPI_NO_SINGLE_SESSION
+00375 int BRLAPI_STDCALL brlapi_enterTtyModeWithPath(int *ttys, int count, const char *driver);
+00376 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00377 int BRLAPI_STDCALL brlapi__enterTtyModeWithPath(brlapi_handle_t *handle, int *ttys, int count, const char *driver);
+00378 
+00379 /* brlapi_leaveTtyMode */
+00386 #ifndef BRLAPI_NO_SINGLE_SESSION
+00387 int BRLAPI_STDCALL brlapi_leaveTtyMode(void);
+00388 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00389 int BRLAPI_STDCALL brlapi__leaveTtyMode(brlapi_handle_t *handle);
+00390 
+00391 /* brlapi_setFocus */
+00402 #ifndef BRLAPI_NO_SINGLE_SESSION
+00403 int BRLAPI_STDCALL brlapi_setFocus(int tty);
+00404 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00405 int BRLAPI_STDCALL brlapi__setFocus(brlapi_handle_t *handle, int tty);
+00406 
+00436 /* brlapi_writeText */
+00451 #ifndef BRLAPI_NO_SINGLE_SESSION
+00452 int BRLAPI_STDCALL brlapi_writeText(int cursor, const char *text);
+00453 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00454 int BRLAPI_STDCALL brlapi__writeText(brlapi_handle_t *handle, int cursor, const char *text);
+00455 
+00456 /* brlapi_writeDots */
+00464 #ifndef BRLAPI_NO_SINGLE_SESSION
+00465 int BRLAPI_STDCALL brlapi_writeDots(const unsigned char *dots);
+00466 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00467 int BRLAPI_STDCALL brlapi__writeDots(brlapi_handle_t *handle, const unsigned char *dots);
+00468 
+00469 /* brlapi_writeArguments_t */
+00471 typedef struct {
+00472   int displayNumber ;
+00473   unsigned int regionBegin ;
+00474   unsigned int regionSize ;
+00475   char *text ;
+00476   int textSize ;
+00477   unsigned char *andMask ;
+00478   unsigned char *orMask ;
+00479   int cursor ;
+00480   char *charset ;
+00481 } brlapi_writeArguments_t;
+00482 
+00487 #define BRLAPI_DISPLAY_DEFAULT -1
+00488 
+00493 #define BRLAPI_CURSOR_LEAVE -1
+00494 
+00499 #define BRLAPI_CURSOR_OFF 0
+00500 
+00501 /* BRLAPI_WRITEARGUMENTS_INITIALIZER */
+00511 #define BRLAPI_WRITEARGUMENTS_INITIALIZER { BRLAPI_DISPLAY_DEFAULT, 0, 0, NULL, -1, NULL, NULL, BRLAPI_CURSOR_LEAVE, NULL }
+00512 
+00513 /* brlapi_write */
+00549 #ifndef BRLAPI_NO_SINGLE_SESSION
+00550 int BRLAPI_STDCALL brlapi_write(const brlapi_writeArguments_t *arguments);
+00551 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00552 int BRLAPI_STDCALL brlapi__write(brlapi_handle_t *handle, const brlapi_writeArguments_t *arguments);
+00553 
+00556 #include "brlapi_keycodes.h"
+00557 
+00571 /* brlapi_expandedKeyCode_t */
+00573 typedef struct {
+00574   unsigned int type ;
+00575   unsigned int command ;
+00576   unsigned int argument ;
+00577   unsigned int flags ;
+00578 } brlapi_expandedKeyCode_t;
+00579 
+00580 /* brlapi_expandKeyCode */
+00588 int BRLAPI_STDCALL brlapi_expandKeyCode (brlapi_keyCode_t code, brlapi_expandedKeyCode_t *expansion);
+00589 
+00590 /* brlapi_describedKeyCode_t */
+00592 typedef struct {
+00593   const char *type ;
+00594   const char *command ;
+00595   unsigned int argument ;
+00596   unsigned int flags ;
+00597   const char *flag[64 - BRLAPI_KEY_FLAGS_SHIFT] ;
+00598   brlapi_expandedKeyCode_t values ;
+00599 } brlapi_describedKeyCode_t;
+00600 
+00601 /* brlapi_describeKeyCode */
+00609 int BRLAPI_STDCALL brlapi_describeKeyCode (brlapi_keyCode_t code, brlapi_describedKeyCode_t *description);
+00610 
+00612 #define BRLAPI_UC_ROW   0x2800UL
+00613 
+00617 #define BRLAPI_MAXKEYSETSIZE (BRLAPI_MAXPACKETSIZE / sizeof(brlapi_keyCode_t))
+00618 
+00619 /* brlapi_readKey */
+00686 #ifndef BRLAPI_NO_SINGLE_SESSION
+00687 int BRLAPI_STDCALL brlapi_readKey(int wait, brlapi_keyCode_t *code);
+00688 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00689 int BRLAPI_STDCALL brlapi__readKey(brlapi_handle_t *handle, int wait, brlapi_keyCode_t *code);
+00690 
+00692 typedef enum {
+00693   brlapi_rangeType_all, 
+00694   brlapi_rangeType_type,        
+00695   brlapi_rangeType_command,     
+00696   brlapi_rangeType_key, 
+00697   brlapi_rangeType_code,        
+00698 } brlapi_rangeType_t;
+00699 
+00700 /* brlapi_ignoreKeys */
+00713 #ifndef BRLAPI_NO_SINGLE_SESSION
+00714 int BRLAPI_STDCALL brlapi_ignoreKeys(brlapi_rangeType_t type, const brlapi_keyCode_t keys[], unsigned int count);
+00715 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00716 int BRLAPI_STDCALL brlapi__ignoreKeys(brlapi_handle_t *handle, brlapi_rangeType_t type, const brlapi_keyCode_t keys[], unsigned int count);
+00717 
+00718 /* brlapi_acceptKeys */
+00731 #ifndef BRLAPI_NO_SINGLE_SESSION
+00732 int BRLAPI_STDCALL brlapi_acceptKeys(brlapi_rangeType_t type, const brlapi_keyCode_t keys[], unsigned int count);
+00733 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00734 int BRLAPI_STDCALL brlapi__acceptKeys(brlapi_handle_t *handle, brlapi_rangeType_t type, const brlapi_keyCode_t keys[], unsigned int count);
+00735 
+00736 /* brlapi_ignoreAllKeys */
+00742 #ifndef BRLAPI_NO_SINGLE_SESSION
+00743 int BRLAPI_STDCALL brlapi_ignoreAllKeys(void);
+00744 #define brlapi_ignoreAllKeys() brlapi_ignoreKeys(brlapi_rangeType_all, NULL, 0)
+00745 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00746 int BRLAPI_STDCALL brlapi__ignoreAllKeys(brlapi_handle_t *handle);
+00747 #define brlapi__ignoreAllKeys(handle) brlapi__ignoreKeys(handle, brlapi_rangeType_all, NULL, 0)
+00748 
+00749 /* brlapi_acceptAllKeys */
+00758 #ifndef BRLAPI_NO_SINGLE_SESSION
+00759 int BRLAPI_STDCALL brlapi_acceptAllKeys(void);
+00760 #define brlapi_acceptAllKeys() brlapi_acceptKeys(brlapi_rangeType_all, NULL, 0)
+00761 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00762 int BRLAPI_STDCALL brlapi__acceptAllKeys(brlapi_handle_t *handle);
+00763 #define brlapi__acceptAllKeys(handle) brlapi__acceptKeys(handle, brlapi_rangeType_all, NULL, 0)
+00764 
+00769 typedef struct {
+00770         brlapi_keyCode_t first; 
+00771         brlapi_keyCode_t last;  
+00772 } brlapi_range_t;
+00773 
+00774 /* brlapi_ignoreKeyRanges */
+00785 #ifndef BRLAPI_NO_SINGLE_SESSION
+00786 int BRLAPI_STDCALL brlapi_ignoreKeyRanges(brlapi_range_t ranges[], unsigned int count);
+00787 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00788 int BRLAPI_STDCALL brlapi__ignoreKeyRanges(brlapi_handle_t *handle, brlapi_range_t ranges[], unsigned int count);
+00789 
+00790 /* brlapi_acceptKeyRanges */
+00801 #ifndef BRLAPI_NO_SINGLE_SESSION
+00802 int BRLAPI_STDCALL brlapi_acceptKeyRanges(brlapi_range_t ranges[], unsigned int count);
+00803 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00804 int BRLAPI_STDCALL brlapi__acceptKeyRanges(brlapi_handle_t *handle, brlapi_range_t ranges[], unsigned int count);
+00830 /* brlapi_enterRawMode */
+00835 #ifndef BRLAPI_NO_SINGLE_SESSION
+00836 int BRLAPI_STDCALL brlapi_enterRawMode(const char *driver);
+00837 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00838 int BRLAPI_STDCALL brlapi__enterRawMode(brlapi_handle_t *handle, const char *driver);
+00839 
+00840 /* brlapi_leaveRawMode */
+00843 #ifndef BRLAPI_NO_SINGLE_SESSION
+00844 int BRLAPI_STDCALL brlapi_leaveRawMode(void);
+00845 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00846 int BRLAPI_STDCALL brlapi__leaveRawMode(brlapi_handle_t *handle);
+00847 
+00848 /* brlapi_sendRaw */
+00854 #ifndef BRLAPI_NO_SINGLE_SESSION
+00855 ssize_t BRLAPI_STDCALL brlapi_sendRaw(const void *buffer, size_t size);
+00856 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00857 ssize_t BRLAPI_STDCALL brlapi__sendRaw(brlapi_handle_t *handle, const void *buffer, size_t size);
+00858 
+00859 /* brlapi_recvRaw */
+00866 #ifndef BRLAPI_NO_SINGLE_SESSION
+00867 ssize_t BRLAPI_STDCALL brlapi_recvRaw(void *buffer, size_t size);
+00868 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00869 ssize_t BRLAPI_STDCALL brlapi__recvRaw(brlapi_handle_t *handle, void *buffer, size_t size);
+00870 
+00871 /* brlapi_suspendDriver */
+00876 #ifndef BRLAPI_NO_SINGLE_SESSION
+00877 int BRLAPI_STDCALL brlapi_suspendDriver(const char *driver);
+00878 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00879 int BRLAPI_STDCALL brlapi__suspendDriver(brlapi_handle_t *handle, const char *driver);
+00880 
+00881 /* brlapi_resumeDriver */
+00885 #ifndef BRLAPI_NO_SINGLE_SESSION
+00886 int BRLAPI_STDCALL brlapi_resumeDriver(void);
+00887 #endif /* BRLAPI_NO_SINGLE_SESSION */
+00888 int BRLAPI_STDCALL brlapi__resumeDriver(brlapi_handle_t *handle);
+00912 /* Error codes */
+00913 #define BRLAPI_ERROR_SUCCESS               0  
+00914 #define BRLAPI_ERROR_NOMEM                 1  
+00915 #define BRLAPI_ERROR_TTYBUSY               2  
+00916 #define BRLAPI_ERROR_DEVICEBUSY            3  
+00917 #define BRLAPI_ERROR_UNKNOWN_INSTRUCTION   4  
+00918 #define BRLAPI_ERROR_ILLEGAL_INSTRUCTION   5  
+00919 #define BRLAPI_ERROR_INVALID_PARAMETER     6  
+00920 #define BRLAPI_ERROR_INVALID_PACKET        7  
+00921 #define BRLAPI_ERROR_CONNREFUSED           8  
+00922 #define BRLAPI_ERROR_OPNOTSUPP             9  
+00923 #define BRLAPI_ERROR_GAIERR               10  
+00924 #define BRLAPI_ERROR_LIBCERR              11  
+00925 #define BRLAPI_ERROR_UNKNOWNTTY           12  
+00926 #define BRLAPI_ERROR_PROTOCOL_VERSION     13  
+00927 #define BRLAPI_ERROR_EOF                  14  
+00928 #define BRLAPI_ERROR_EMPTYKEY             15  
+00929 #define BRLAPI_ERROR_DRIVERERROR          16  
+00930 #define BRLAPI_ERROR_AUTHENTICATION       17  
+00932 /* brlapi_errlist */
+00933 
+00937 extern const char *brlapi_errlist[];
+00938 
+00939 /* brlapi_nerr */
+00941 extern const int brlapi_nerr;
+00942 
+00943 /* brlapi_perror */
+00948 void BRLAPI_STDCALL brlapi_perror(const char *s);
+00949 
+00950 /* brlapi_error_t */
+00952 typedef struct {
+00953   int brlerrno;
+00954   int libcerrno;
+00955   int gaierrno;
+00956   const char *errfun;
+00957 } brlapi_error_t;
+00958 
+00967 brlapi_error_t * BRLAPI_STDCALL brlapi_error_location(void);
+00968 
+00977 extern brlapi_error_t brlapi_error;
+00978 
+00980 extern int brlapi_errno;
+00982 extern int brlapi_libcerrno;
+00984 extern int brlapi_gaierrno;
+00986 extern const char *brlapi_errfun;
+00987 
+00989 #define brlapi_error (*brlapi_error_location())
+00990 
+00991 #define brlapi_errno (brlapi_error.brlerrno)
+00992 
+00993 #define brlapi_libcerrno (brlapi_error.libcerrno)
+00994 
+00995 #define brlapi_gaierrno (brlapi_error.gaierrno)
+00996 
+00997 #define brlapi_errfun (brlapi_error.errfun)
+00998 
+00999 /* brlapi_strerror */
+01005 const char * BRLAPI_STDCALL brlapi_strerror(const brlapi_error_t *error);
+01006 
+01008 typedef uint32_t brlapi_packetType_t;
+01009 
+01010 /* brlapi_getPacketTypeName */
+01016 const char * BRLAPI_STDCALL brlapi_getPacketTypeName(brlapi_packetType_t type);
+01017 
+01018 /* brlapi_exceptionHandler_t */
+01030 #ifndef BRLAPI_NO_SINGLE_SESSION
+01031 typedef void (BRLAPI_STDCALL *brlapi_exceptionHandler_t)(int error, brlapi_packetType_t type, const void *packet, size_t size);
+01032 #endif /* BRLAPI_NO_SINGLE_SESSION */
+01033 typedef void (BRLAPI_STDCALL *brlapi__exceptionHandler_t)(brlapi_handle_t *handle, int error, brlapi_packetType_t type, const void *packet, size_t size);
+01034 
+01035 /* brlapi_strexception */
+01045 #ifndef BRLAPI_NO_SINGLE_SESSION
+01046 int BRLAPI_STDCALL brlapi_strexception(char *buffer, size_t bufferSize, int error, brlapi_packetType_t type, const void *packet, size_t packetSize);
+01047 #endif /* BRLAPI_NO_SINGLE_SESSION */
+01048 int BRLAPI_STDCALL brlapi__strexception(brlapi_handle_t *handle, char *buffer, size_t bufferSize, int error, brlapi_packetType_t type, const void *packet, size_t packetSize);
+01049 
+01050 /* brlapi_setExceptionHandler */
+01059 #ifndef BRLAPI_NO_SINGLE_SESSION
+01060 brlapi_exceptionHandler_t BRLAPI_STDCALL brlapi_setExceptionHandler(brlapi_exceptionHandler_t handler);
+01061 #endif /* BRLAPI_NO_SINGLE_SESSION */
+01062 brlapi__exceptionHandler_t BRLAPI_STDCALL brlapi__setExceptionHandler(brlapi_handle_t *handle, brlapi__exceptionHandler_t handler);
+01063 
+01064 #ifndef BRLAPI_NO_SINGLE_SESSION
+01065 void BRLAPI_STDCALL brlapi_defaultExceptionHandler(int error, brlapi_packetType_t type, const void *packet, size_t size);
+01066 #endif /* BRLAPI_NO_SINGLE_SESSION */
+01067 void BRLAPI_STDCALL brlapi__defaultExceptionHandler(brlapi_handle_t *handle, int error, brlapi_packetType_t type, const void *packet, size_t size);
+01068 
+01071 /* Windows-specific tricks - don't look at this */
+01072 #ifdef BRLAPI_WIN32
+01073 #ifndef BRLAPI_NO_SINGLE_SESSION
+01074 int BRLAPI_STDCALL brlapi_writeTextWin(int cursor, const void *str, int wide);
+01075 #endif /* BRLAPI_NO_SINGLE_SESSION */
+01076 int BRLAPI_STDCALL brlapi__writeTextWin(brlapi_handle_t *handle, int cursor, const void *str, int wide);
+01077 
+01078 #ifndef BRLAPI_NO_SINGLE_SESSION
+01079 int BRLAPI_STDCALL brlapi_writeWin(const brlapi_writeArguments_t *s, int wide);
+01080 #endif /* BRLAPI_NO_SINGLE_SESSION */
+01081 int BRLAPI_STDCALL brlapi__writeWin(brlapi_handle_t *handle, const brlapi_writeArguments_t *s, int wide);
+01082 
+01083 #ifdef UNICODE
+01084 #ifndef BRLAPI_NO_SINGLE_SESSION
+01085 #define brlapi_writeText(cursor, str) brlapi_writeTextWin(cursor, str, 1)
+01086 #endif /* BRLAPI_NO_SINGLE_SESSION */
+01087 #define brlapi__writeText(handle, cursor, str) brlapi__writeTextWin(handle, cursor, str, 1)
+01088 
+01089 #ifndef BRLAPI_NO_SINGLE_SESSION
+01090 #define brlapi_write(s) brlapi_writeWin(s, 1)
+01091 #endif /* BRLAPI_NO_SINGLE_SESSION */
+01092 #define brlapi__write(handle, s) brlapi__writeWin(handle, s, 1)
+01093 
+01094 #else /* UNICODE */
+01095 
+01096 #ifndef BRLAPI_NO_SINGLE_SESSION
+01097 #define brlapi_writeText(cursor, str) brlapi_writeTextWin(cursor, str, 0)
+01098 #endif /* BRLAPI_NO_SINGLE_SESSION */
+01099 #define brlapi__writeText(handle, cursor, str) brlapi__writeTextWin(handle, cursor, str, 0)
+01100 
+01101 #ifndef BRLAPI_NO_SINGLE_SESSION
+01102 #define brlapi_write(s) brlapi_writeWin(s, 0)
+01103 #endif /* BRLAPI_NO_SINGLE_SESSION */
+01104 #define brlapi__write(handle, s) brlapi__writeWin(handle, s, 0)
+01105 
+01106 #endif /* UNICODE */
+01107 #endif /* BRLAPI_WIN32 */
+01108 
+01109 #ifndef BRLAPI_NO_DEPRECATED
+01110 
+01122 #define brlapi_settings_t brlapi_connectionSettings_t
+01123 
+01125 typedef struct {
+01126   int displayNumber;
+01127   unsigned int regionBegin;
+01128   unsigned int regionSize;
+01129   char *text;
+01130   int textSize;
+01131   unsigned char *attrAnd;
+01132   unsigned char *attrOr;
+01133   int cursor;
+01134   char *charset;
+01135 } brlapi_writeStruct;
+01136 #define BRLAPI_WRITESTRUCT_INITIALIZER BRLAPI_WRITEARGUMENTS_INITIALIZER
+01137 
+01138 #define brl_keycode_t brlapi_keyCode_t
+01139 #define brl_type_t brlapi_packetType_t
+01140 
+01141 #define BRLCOMMANDS NULL
+01142 #define BRL_KEYCODE_MAX BRLAPI_KEY_MAX
+01143 
+01144 #ifndef BRLAPI_NO_SINGLE_SESSION
+01145 #define brlapi_initializeConnection brlapi_openConnection
+01146 #define brlapi_getTty brlapi_enterTtyMode
+01147 #define brlapi_getTtyPath brlapi_enterTtyModeWithPath
+01148 #define brlapi_leaveTty brlapi_leaveTtyMode
+01149 #define brlapi_unignoreKeyRange brlapi_acceptKeyRange
+01150 #define brlapi_unignoreKeySet brlapi_acceptKeySet
+01151 #define brlapi_getRaw brlapi_enterRawMode
+01152 #define brlapi_leaveRaw brlapi_leaveRawMode
+01153 #define brlapi_suspend brlapi_suspendDriver
+01154 #define brlapi_resume brlapi_resumeDriver
+01155 #endif /* BRLAPI_NO_SINGLE_SESSION */
+01156 
+01157 #define BRLERR_SUCCESS                 BRLAPI_ERROR_SUCCESS
+01158 #define BRLERR_NOMEM                   BRLAPI_ERROR_NOMEM
+01159 #define BRLERR_TTYBUSY                 BRLAPI_ERROR_TTYBUSY
+01160 #define BRLERR_DEVICEBUSY              BRLAPI_ERROR_DEVICEBUSY
+01161 #define BRLERR_UNKNOWN_INSTRUCTION     BRLAPI_ERROR_UNKNOWN_INSTRUCTION
+01162 #define BRLERR_ILLEGAL_INSTRUCTION     BRLAPI_ERROR_ILLEGAL_INSTRUCTION
+01163 #define BRLERR_INVALID_PARAMETER       BRLAPI_ERROR_INVALID_PARAMETER
+01164 #define BRLERR_INVALID_PACKET          BRLAPI_ERROR_INVALID_PACKET
+01165 #define BRLERR_CONNREFUSED             BRLAPI_ERROR_CONNREFUSED
+01166 #define BRLERR_OPNOTSUPP               BRLAPI_ERROR_OPNOTSUPP
+01167 #define BRLERR_GAIERR                  BRLAPI_ERROR_GAIERR
+01168 #define BRLERR_LIBCERR                 BRLAPI_ERROR_LIBCERR
+01169 #define BRLERR_UNKNOWNTTY              BRLAPI_ERROR_UNKNOWNTTY
+01170 #define BRLERR_PROTOCOL_VERSION        BRLAPI_ERROR_PROTOCOL_VERSION
+01171 #define BRLERR_EOF                     BRLAPI_ERROR_EOF
+01172 #define BRLERR_EMPTYKEY                BRLAPI_ERROR_EMPTYKEY
+01173 #define BRLERR_DRIVERERROR             BRLAPI_ERROR_DRIVERERROR
+01174 
+01176 #endif /* BRLAPI_NO_DEPRECATED */
+01177 
+01178 #ifdef __cplusplus
+01179 }
+01180 #endif /* __cplusplus */
+01181 
+01182 #endif /* BRLAPI_INCLUDED */
+

Generated on Fri May 15 00:09:17 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/brlapi_8h.html b/Documents/BrlAPIref/html/brlapi_8h.html new file mode 100644 index 0000000000000000000000000000000000000000..00e25fdbe23a74c383f87cb21d4ed50db5daa31e --- /dev/null +++ b/Documents/BrlAPIref/html/brlapi_8h.html @@ -0,0 +1,391 @@ + + +BrlAPI: brlapi.h File Reference + + + + + + + +

brlapi.h File Reference

Types, defines and functions prototypes for BrlAPI's library. More... +

+#include <sys/types.h>
+#include <stdint.h>
+#include <unistd.h>
+#include <inttypes.h>
+#include "brlapi_keycodes.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  brlapi_connectionSettings_t
 Settings structure for BrlAPI connection. More...
struct  brlapi_writeArguments_t
struct  brlapi_expandedKeyCode_t
struct  brlapi_describedKeyCode_t
struct  brlapi_range_t
struct  brlapi_error_t
struct  brlapi_writeStruct

Defines

#define BRLAPI_RELEASE   "0.5.3"
#define BRLAPI_MAJOR   0
#define BRLAPI_MINOR   5
#define BRLAPI_REVISION   3
#define BRLAPI_STDCALL
#define BRLAPI_SOCKETPORTNUM   4101
#define BRLAPI_SOCKETPORT   "4101"
#define BRLAPI_SOCKETPATH   "/var/lib/BrlAPI"
#define BRLAPI_ETCDIR   "/etc"
#define BRLAPI_AUTHKEYFILE   "brlapi.key"
#define BRLAPI_DEFAUTH   BRLAPI_ETCDIR "/" BRLAPI_AUTHKEYFILE
#define BRLAPI_SETTINGS_INITIALIZER   { NULL, NULL }
#define BRLAPI_MAXNAMELENGTH   31
#define BRLAPI_TTY_DEFAULT   -1
#define BRLAPI_DISPLAY_DEFAULT   -1
#define BRLAPI_CURSOR_LEAVE   -1
#define BRLAPI_CURSOR_OFF   0
#define BRLAPI_WRITEARGUMENTS_INITIALIZER   { BRLAPI_DISPLAY_DEFAULT, 0, 0, NULL, -1, NULL, NULL, BRLAPI_CURSOR_LEAVE, NULL }
#define BRLAPI_UC_ROW   0x2800UL
#define BRLAPI_MAXKEYSETSIZE   (BRLAPI_MAXPACKETSIZE / sizeof(brlapi_keyCode_t))
#define brlapi_ignoreAllKeys()   brlapi_ignoreKeys(brlapi_rangeType_all, NULL, 0)
#define brlapi__ignoreAllKeys(handle)   brlapi__ignoreKeys(handle, brlapi_rangeType_all, NULL, 0)
#define brlapi_acceptAllKeys()   brlapi_acceptKeys(brlapi_rangeType_all, NULL, 0)
#define brlapi__acceptAllKeys(handle)   brlapi__acceptKeys(handle, brlapi_rangeType_all, NULL, 0)
#define BRLAPI_ERROR_SUCCESS   0
#define BRLAPI_ERROR_NOMEM   1
#define BRLAPI_ERROR_TTYBUSY   2
#define BRLAPI_ERROR_DEVICEBUSY   3
#define BRLAPI_ERROR_UNKNOWN_INSTRUCTION   4
#define BRLAPI_ERROR_ILLEGAL_INSTRUCTION   5
#define BRLAPI_ERROR_INVALID_PARAMETER   6
#define BRLAPI_ERROR_INVALID_PACKET   7
#define BRLAPI_ERROR_CONNREFUSED   8
#define BRLAPI_ERROR_OPNOTSUPP   9
#define BRLAPI_ERROR_GAIERR   10
#define BRLAPI_ERROR_LIBCERR   11
#define BRLAPI_ERROR_UNKNOWNTTY   12
#define BRLAPI_ERROR_PROTOCOL_VERSION   13
#define BRLAPI_ERROR_EOF   14
#define BRLAPI_ERROR_EMPTYKEY   15
#define BRLAPI_ERROR_DRIVERERROR   16
#define BRLAPI_ERROR_AUTHENTICATION   17
#define brlapi_error   (*brlapi_error_location())
#define brlapi_errno   (brlapi_error.brlerrno)
#define brlapi_libcerrno   (brlapi_error.libcerrno)
#define brlapi_gaierrno   (brlapi_error.gaierrno)
#define brlapi_errfun   (brlapi_error.errfun)
#define brlapi_settings_t   brlapi_connectionSettings_t
#define BRLAPI_WRITESTRUCT_INITIALIZER   BRLAPI_WRITEARGUMENTS_INITIALIZER
#define brl_keycode_t   brlapi_keyCode_t
#define brl_type_t   brlapi_packetType_t
#define BRLCOMMANDS   NULL
#define BRL_KEYCODE_MAX   BRLAPI_KEY_MAX
#define brlapi_initializeConnection   brlapi_openConnection
#define brlapi_getTty   brlapi_enterTtyMode
#define brlapi_getTtyPath   brlapi_enterTtyModeWithPath
#define brlapi_leaveTty   brlapi_leaveTtyMode
#define brlapi_unignoreKeyRange   brlapi_acceptKeyRange
#define brlapi_unignoreKeySet   brlapi_acceptKeySet
#define brlapi_getRaw   brlapi_enterRawMode
#define brlapi_leaveRaw   brlapi_leaveRawMode
#define brlapi_suspend   brlapi_suspendDriver
#define brlapi_resume   brlapi_resumeDriver
#define BRLERR_SUCCESS   BRLAPI_ERROR_SUCCESS
#define BRLERR_NOMEM   BRLAPI_ERROR_NOMEM
#define BRLERR_TTYBUSY   BRLAPI_ERROR_TTYBUSY
#define BRLERR_DEVICEBUSY   BRLAPI_ERROR_DEVICEBUSY
#define BRLERR_UNKNOWN_INSTRUCTION   BRLAPI_ERROR_UNKNOWN_INSTRUCTION
#define BRLERR_ILLEGAL_INSTRUCTION   BRLAPI_ERROR_ILLEGAL_INSTRUCTION
#define BRLERR_INVALID_PARAMETER   BRLAPI_ERROR_INVALID_PARAMETER
#define BRLERR_INVALID_PACKET   BRLAPI_ERROR_INVALID_PACKET
#define BRLERR_CONNREFUSED   BRLAPI_ERROR_CONNREFUSED
#define BRLERR_OPNOTSUPP   BRLAPI_ERROR_OPNOTSUPP
#define BRLERR_GAIERR   BRLAPI_ERROR_GAIERR
#define BRLERR_LIBCERR   BRLAPI_ERROR_LIBCERR
#define BRLERR_UNKNOWNTTY   BRLAPI_ERROR_UNKNOWNTTY
#define BRLERR_PROTOCOL_VERSION   BRLAPI_ERROR_PROTOCOL_VERSION
#define BRLERR_EOF   BRLAPI_ERROR_EOF
#define BRLERR_EMPTYKEY   BRLAPI_ERROR_EMPTYKEY
#define BRLERR_DRIVERERROR   BRLAPI_ERROR_DRIVERERROR

Typedefs

typedef brlapi_handle_t brlapi_handle_t
typedef int brlapi_fileDescriptor
typedef uint32_t brlapi_packetType_t
typedef void(BRLAPI_STDCALL *) brlapi_exceptionHandler_t (int error, brlapi_packetType_t type, const void *packet, size_t size)
typedef void(BRLAPI_STDCALL *) brlapi__exceptionHandler_t (brlapi_handle_t *handle, int error, brlapi_packetType_t type, const void *packet, size_t size)

Enumerations

enum  brlapi_rangeType_t {
+  brlapi_rangeType_all, +brlapi_rangeType_type, +brlapi_rangeType_command, +brlapi_rangeType_key, +
+  brlapi_rangeType_code +
+ }

Functions

size_t BRLAPI_STDCALL brlapi_getHandleSize (void)
brlapi_fileDescriptor BRLAPI_STDCALL brlapi_openConnection (const brlapi_connectionSettings_t *desiredSettings, brlapi_connectionSettings_t *actualSettings)
brlapi_fileDescriptor BRLAPI_STDCALL brlapi__openConnection (brlapi_handle_t *handle, const brlapi_connectionSettings_t *desiredSettings, brlapi_connectionSettings_t *actualSettings)
void BRLAPI_STDCALL brlapi_closeConnection (void)
void BRLAPI_STDCALL brlapi__closeConnection (brlapi_handle_t *handle)
int BRLAPI_STDCALL brlapi_getDriverName (char *buffer, size_t size)
int BRLAPI_STDCALL brlapi__getDriverName (brlapi_handle_t *handle, char *buffer, size_t size)
int BRLAPI_STDCALL brlapi_getDisplaySize (unsigned int *x, unsigned int *y)
int BRLAPI_STDCALL brlapi__getDisplaySize (brlapi_handle_t *handle, unsigned int *x, unsigned int *y)
int BRLAPI_STDCALL brlapi_enterTtyMode (int tty, const char *driver)
int BRLAPI_STDCALL brlapi__enterTtyMode (brlapi_handle_t *handle, int tty, const char *driver)
int BRLAPI_STDCALL brlapi_enterTtyModeWithPath (int *ttys, int count, const char *driver)
int BRLAPI_STDCALL brlapi__enterTtyModeWithPath (brlapi_handle_t *handle, int *ttys, int count, const char *driver)
int BRLAPI_STDCALL brlapi_leaveTtyMode (void)
int BRLAPI_STDCALL brlapi__leaveTtyMode (brlapi_handle_t *handle)
int BRLAPI_STDCALL brlapi_setFocus (int tty)
int BRLAPI_STDCALL brlapi__setFocus (brlapi_handle_t *handle, int tty)
int BRLAPI_STDCALL brlapi_writeText (int cursor, const char *text)
int BRLAPI_STDCALL brlapi__writeText (brlapi_handle_t *handle, int cursor, const char *text)
int BRLAPI_STDCALL brlapi_writeDots (const unsigned char *dots)
int BRLAPI_STDCALL brlapi__writeDots (brlapi_handle_t *handle, const unsigned char *dots)
int BRLAPI_STDCALL brlapi_write (const brlapi_writeArguments_t *arguments)
int BRLAPI_STDCALL brlapi__write (brlapi_handle_t *handle, const brlapi_writeArguments_t *arguments)
int BRLAPI_STDCALL brlapi_expandKeyCode (brlapi_keyCode_t code, brlapi_expandedKeyCode_t *expansion)
int BRLAPI_STDCALL brlapi_describeKeyCode (brlapi_keyCode_t code, brlapi_describedKeyCode_t *description)
int BRLAPI_STDCALL brlapi_readKey (int wait, brlapi_keyCode_t *code)
int BRLAPI_STDCALL brlapi__readKey (brlapi_handle_t *handle, int wait, brlapi_keyCode_t *code)
int BRLAPI_STDCALL brlapi_ignoreKeys (brlapi_rangeType_t type, const brlapi_keyCode_t keys[], unsigned int count)
int BRLAPI_STDCALL brlapi__ignoreKeys (brlapi_handle_t *handle, brlapi_rangeType_t type, const brlapi_keyCode_t keys[], unsigned int count)
int BRLAPI_STDCALL brlapi_acceptKeys (brlapi_rangeType_t type, const brlapi_keyCode_t keys[], unsigned int count)
int BRLAPI_STDCALL brlapi__acceptKeys (brlapi_handle_t *handle, brlapi_rangeType_t type, const brlapi_keyCode_t keys[], unsigned int count)
int BRLAPI_STDCALL brlapi__ignoreAllKeys (brlapi_handle_t *handle)
int BRLAPI_STDCALL brlapi__acceptAllKeys (brlapi_handle_t *handle)
int BRLAPI_STDCALL brlapi_ignoreKeyRanges (brlapi_range_t ranges[], unsigned int count)
int BRLAPI_STDCALL brlapi__ignoreKeyRanges (brlapi_handle_t *handle, brlapi_range_t ranges[], unsigned int count)
int BRLAPI_STDCALL brlapi_acceptKeyRanges (brlapi_range_t ranges[], unsigned int count)
int BRLAPI_STDCALL brlapi__acceptKeyRanges (brlapi_handle_t *handle, brlapi_range_t ranges[], unsigned int count)
int BRLAPI_STDCALL brlapi_enterRawMode (const char *driver)
int BRLAPI_STDCALL brlapi__enterRawMode (brlapi_handle_t *handle, const char *driver)
int BRLAPI_STDCALL brlapi_leaveRawMode (void)
int BRLAPI_STDCALL brlapi__leaveRawMode (brlapi_handle_t *handle)
ssize_t BRLAPI_STDCALL brlapi_sendRaw (const void *buffer, size_t size)
ssize_t BRLAPI_STDCALL brlapi__sendRaw (brlapi_handle_t *handle, const void *buffer, size_t size)
ssize_t BRLAPI_STDCALL brlapi_recvRaw (void *buffer, size_t size)
ssize_t BRLAPI_STDCALL brlapi__recvRaw (brlapi_handle_t *handle, void *buffer, size_t size)
int BRLAPI_STDCALL brlapi_suspendDriver (const char *driver)
int BRLAPI_STDCALL brlapi__suspendDriver (brlapi_handle_t *handle, const char *driver)
int BRLAPI_STDCALL brlapi_resumeDriver (void)
int BRLAPI_STDCALL brlapi__resumeDriver (brlapi_handle_t *handle)
void BRLAPI_STDCALL brlapi_perror (const char *s)
brlapi_error_t *BRLAPI_STDCALL brlapi_error_location (void)
const char *BRLAPI_STDCALL brlapi_strerror (const brlapi_error_t *error)
const char *BRLAPI_STDCALL brlapi_getPacketTypeName (brlapi_packetType_t type)
int BRLAPI_STDCALL brlapi_strexception (char *buffer, size_t bufferSize, int error, brlapi_packetType_t type, const void *packet, size_t packetSize)
int BRLAPI_STDCALL brlapi__strexception (brlapi_handle_t *handle, char *buffer, size_t bufferSize, int error, brlapi_packetType_t type, const void *packet, size_t packetSize)
brlapi_exceptionHandler_t
+BRLAPI_STDCALL 
brlapi_setExceptionHandler (brlapi_exceptionHandler_t handler)
brlapi__exceptionHandler_t
+BRLAPI_STDCALL 
brlapi__setExceptionHandler (brlapi_handle_t *handle, brlapi__exceptionHandler_t handler)
void BRLAPI_STDCALL brlapi_defaultExceptionHandler (int error, brlapi_packetType_t type, const void *packet, size_t size)
void BRLAPI_STDCALL brlapi__defaultExceptionHandler (brlapi_handle_t *handle, int error, brlapi_packetType_t type, const void *packet, size_t size)

Variables

const char * brlapi_errlist []
const int brlapi_nerr
brlapi_error_t brlapi_error
int brlapi_errno
int brlapi_libcerrno
int brlapi_gaierrno
const char * brlapi_errfun
+


Detailed Description

+

Define Documentation

+ +
+
+ + + + +
#define BRLAPI_STDCALL
+
+
+ +

+ +

+

+


Generated on Fri May 15 00:09:17 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/brlapi__constants_8h-source.html b/Documents/BrlAPIref/html/brlapi__constants_8h-source.html new file mode 100644 index 0000000000000000000000000000000000000000..1cbbb2d482fb043ec2903e023a771ccd564df16c --- /dev/null +++ b/Documents/BrlAPIref/html/brlapi__constants_8h-source.html @@ -0,0 +1,313 @@ + + +BrlAPI: brlapi_constants.h Source File + + + + + + + +

brlapi_constants.h

Go to the documentation of this file.
00001 /*
+00002  * libbrlapi - A library providing access to braille terminals for applications.
+00003  *
+00004  * Copyright (C) 2002-2009 by
+00005  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
+00006  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
+00007  *
+00008  * libbrlapi comes with ABSOLUTELY NO WARRANTY.
+00009  *
+00010  * This is free software, placed under the terms of the
+00011  * GNU Lesser General Public License, as published by the Free Software
+00012  * Foundation; either version 2.1 of the License, or (at your option) any
+00013  * later version. Please see the file LICENSE-LGPL for details.
+00014  *
+00015  * Web Page: http://mielke.cc/brltty/
+00016  *
+00017  * This software is maintained by Dave Mielke <dave@mielke.cc>.
+00018  */
+00019 
+00020 #ifndef BRLAPI_INCLUDED_CONSTANTS
+00021 #define BRLAPI_INCLUDED_CONSTANTS
+00022 
+00023 #ifdef __cplusplus
+00024 extern "C" {
+00025 #endif /* __cplusplus */
+00026 
+00034 #define BRLAPI_KEY_CMD_NOOP (BRLAPI_KEY_CMD(0) + 0)
+00035 
+00036 #define BRLAPI_KEY_CMD_LNUP (BRLAPI_KEY_CMD(0) + 1)
+00037 
+00038 #define BRLAPI_KEY_CMD_LNDN (BRLAPI_KEY_CMD(0) + 2)
+00039 
+00040 #define BRLAPI_KEY_CMD_WINUP (BRLAPI_KEY_CMD(0) + 3)
+00041 
+00042 #define BRLAPI_KEY_CMD_WINDN (BRLAPI_KEY_CMD(0) + 4)
+00043 
+00044 #define BRLAPI_KEY_CMD_PRDIFLN (BRLAPI_KEY_CMD(0) + 5)
+00045 
+00046 #define BRLAPI_KEY_CMD_NXDIFLN (BRLAPI_KEY_CMD(0) + 6)
+00047 
+00048 #define BRLAPI_KEY_CMD_ATTRUP (BRLAPI_KEY_CMD(0) + 7)
+00049 
+00050 #define BRLAPI_KEY_CMD_ATTRDN (BRLAPI_KEY_CMD(0) + 8)
+00051 
+00052 #define BRLAPI_KEY_CMD_TOP (BRLAPI_KEY_CMD(0) + 9)
+00053 
+00054 #define BRLAPI_KEY_CMD_BOT (BRLAPI_KEY_CMD(0) + 10)
+00055 
+00056 #define BRLAPI_KEY_CMD_TOP_LEFT (BRLAPI_KEY_CMD(0) + 11)
+00057 
+00058 #define BRLAPI_KEY_CMD_BOT_LEFT (BRLAPI_KEY_CMD(0) + 12)
+00059 
+00060 #define BRLAPI_KEY_CMD_PRPGRPH (BRLAPI_KEY_CMD(0) + 13)
+00061 
+00062 #define BRLAPI_KEY_CMD_NXPGRPH (BRLAPI_KEY_CMD(0) + 14)
+00063 
+00064 #define BRLAPI_KEY_CMD_PRPROMPT (BRLAPI_KEY_CMD(0) + 15)
+00065 
+00066 #define BRLAPI_KEY_CMD_NXPROMPT (BRLAPI_KEY_CMD(0) + 16)
+00067 
+00068 #define BRLAPI_KEY_CMD_PRSEARCH (BRLAPI_KEY_CMD(0) + 17)
+00069 
+00070 #define BRLAPI_KEY_CMD_NXSEARCH (BRLAPI_KEY_CMD(0) + 18)
+00071 
+00072 #define BRLAPI_KEY_CMD_CHRLT (BRLAPI_KEY_CMD(0) + 19)
+00073 
+00074 #define BRLAPI_KEY_CMD_CHRRT (BRLAPI_KEY_CMD(0) + 20)
+00075 
+00076 #define BRLAPI_KEY_CMD_HWINLT (BRLAPI_KEY_CMD(0) + 21)
+00077 
+00078 #define BRLAPI_KEY_CMD_HWINRT (BRLAPI_KEY_CMD(0) + 22)
+00079 
+00080 #define BRLAPI_KEY_CMD_FWINLT (BRLAPI_KEY_CMD(0) + 23)
+00081 
+00082 #define BRLAPI_KEY_CMD_FWINRT (BRLAPI_KEY_CMD(0) + 24)
+00083 
+00084 #define BRLAPI_KEY_CMD_FWINLTSKIP (BRLAPI_KEY_CMD(0) + 25)
+00085 
+00086 #define BRLAPI_KEY_CMD_FWINRTSKIP (BRLAPI_KEY_CMD(0) + 26)
+00087 
+00088 #define BRLAPI_KEY_CMD_LNBEG (BRLAPI_KEY_CMD(0) + 27)
+00089 
+00090 #define BRLAPI_KEY_CMD_LNEND (BRLAPI_KEY_CMD(0) + 28)
+00091 
+00092 #define BRLAPI_KEY_CMD_HOME (BRLAPI_KEY_CMD(0) + 29)
+00093 
+00094 #define BRLAPI_KEY_CMD_BACK (BRLAPI_KEY_CMD(0) + 30)
+00095 
+00096 #define BRLAPI_KEY_CMD_RETURN (BRLAPI_KEY_CMD(0) + 31)
+00097 
+00098 #define BRLAPI_KEY_CMD_FREEZE (BRLAPI_KEY_CMD(0) + 32)
+00099 
+00100 #define BRLAPI_KEY_CMD_DISPMD (BRLAPI_KEY_CMD(0) + 33)
+00101 
+00102 #define BRLAPI_KEY_CMD_SIXDOTS (BRLAPI_KEY_CMD(0) + 34)
+00103 
+00104 #define BRLAPI_KEY_CMD_SLIDEWIN (BRLAPI_KEY_CMD(0) + 35)
+00105 
+00106 #define BRLAPI_KEY_CMD_SKPIDLNS (BRLAPI_KEY_CMD(0) + 36)
+00107 
+00108 #define BRLAPI_KEY_CMD_SKPBLNKWINS (BRLAPI_KEY_CMD(0) + 37)
+00109 
+00110 #define BRLAPI_KEY_CMD_CSRVIS (BRLAPI_KEY_CMD(0) + 38)
+00111 
+00112 #define BRLAPI_KEY_CMD_CSRHIDE (BRLAPI_KEY_CMD(0) + 39)
+00113 
+00114 #define BRLAPI_KEY_CMD_CSRTRK (BRLAPI_KEY_CMD(0) + 40)
+00115 
+00116 #define BRLAPI_KEY_CMD_CSRSIZE (BRLAPI_KEY_CMD(0) + 41)
+00117 
+00118 #define BRLAPI_KEY_CMD_CSRBLINK (BRLAPI_KEY_CMD(0) + 42)
+00119 
+00120 #define BRLAPI_KEY_CMD_ATTRVIS (BRLAPI_KEY_CMD(0) + 43)
+00121 
+00122 #define BRLAPI_KEY_CMD_ATTRBLINK (BRLAPI_KEY_CMD(0) + 44)
+00123 
+00124 #define BRLAPI_KEY_CMD_CAPBLINK (BRLAPI_KEY_CMD(0) + 45)
+00125 
+00126 #define BRLAPI_KEY_CMD_TUNES (BRLAPI_KEY_CMD(0) + 46)
+00127 
+00128 #define BRLAPI_KEY_CMD_AUTOREPEAT (BRLAPI_KEY_CMD(0) + 47)
+00129 
+00130 #define BRLAPI_KEY_CMD_AUTOSPEAK (BRLAPI_KEY_CMD(0) + 48)
+00131 
+00132 #define BRLAPI_KEY_CMD_HELP (BRLAPI_KEY_CMD(0) + 49)
+00133 
+00134 #define BRLAPI_KEY_CMD_INFO (BRLAPI_KEY_CMD(0) + 50)
+00135 
+00136 #define BRLAPI_KEY_CMD_LEARN (BRLAPI_KEY_CMD(0) + 51)
+00137 
+00138 #define BRLAPI_KEY_CMD_PREFMENU (BRLAPI_KEY_CMD(0) + 52)
+00139 
+00140 #define BRLAPI_KEY_CMD_PREFSAVE (BRLAPI_KEY_CMD(0) + 53)
+00141 
+00142 #define BRLAPI_KEY_CMD_PREFLOAD (BRLAPI_KEY_CMD(0) + 54)
+00143 
+00144 #define BRLAPI_KEY_CMD_MENU_FIRST_ITEM (BRLAPI_KEY_CMD(0) + 55)
+00145 
+00146 #define BRLAPI_KEY_CMD_MENU_LAST_ITEM (BRLAPI_KEY_CMD(0) + 56)
+00147 
+00148 #define BRLAPI_KEY_CMD_MENU_PREV_ITEM (BRLAPI_KEY_CMD(0) + 57)
+00149 
+00150 #define BRLAPI_KEY_CMD_MENU_NEXT_ITEM (BRLAPI_KEY_CMD(0) + 58)
+00151 
+00152 #define BRLAPI_KEY_CMD_MENU_PREV_SETTING (BRLAPI_KEY_CMD(0) + 59)
+00153 
+00154 #define BRLAPI_KEY_CMD_MENU_NEXT_SETTING (BRLAPI_KEY_CMD(0) + 60)
+00155 
+00156 #define BRLAPI_KEY_CMD_MUTE (BRLAPI_KEY_CMD(0) + 61)
+00157 
+00158 #define BRLAPI_KEY_CMD_SPKHOME (BRLAPI_KEY_CMD(0) + 62)
+00159 
+00160 #define BRLAPI_KEY_CMD_SAY_LINE (BRLAPI_KEY_CMD(0) + 63)
+00161 
+00162 #define BRLAPI_KEY_CMD_SAY_ABOVE (BRLAPI_KEY_CMD(0) + 64)
+00163 
+00164 #define BRLAPI_KEY_CMD_SAY_BELOW (BRLAPI_KEY_CMD(0) + 65)
+00165 
+00166 #define BRLAPI_KEY_CMD_SAY_SLOWER (BRLAPI_KEY_CMD(0) + 66)
+00167 
+00168 #define BRLAPI_KEY_CMD_SAY_FASTER (BRLAPI_KEY_CMD(0) + 67)
+00169 
+00170 #define BRLAPI_KEY_CMD_SAY_SOFTER (BRLAPI_KEY_CMD(0) + 68)
+00171 
+00172 #define BRLAPI_KEY_CMD_SAY_LOUDER (BRLAPI_KEY_CMD(0) + 69)
+00173 
+00174 #define BRLAPI_KEY_CMD_SWITCHVT_PREV (BRLAPI_KEY_CMD(0) + 70)
+00175 
+00176 #define BRLAPI_KEY_CMD_SWITCHVT_NEXT (BRLAPI_KEY_CMD(0) + 71)
+00177 
+00178 #define BRLAPI_KEY_CMD_CSRJMP_VERT (BRLAPI_KEY_CMD(0) + 72)
+00179 
+00180 #define BRLAPI_KEY_CMD_PASTE (BRLAPI_KEY_CMD(0) + 73)
+00181 
+00182 #define BRLAPI_KEY_CMD_RESTARTBRL (BRLAPI_KEY_CMD(0) + 74)
+00183 
+00184 #define BRLAPI_KEY_CMD_RESTARTSPEECH (BRLAPI_KEY_CMD(0) + 75)
+00185 
+00186 #define BRLAPI_KEY_CMD_OFFLINE (BRLAPI_KEY_CMD(0) + 76)
+00187 
+00188 #define BRLAPI_KEY_FLG_TOGGLE_ON BRLAPI_KEY_FLG(0X0100)
+00189 
+00190 #define BRLAPI_KEY_FLG_TOGGLE_OFF BRLAPI_KEY_FLG(0X0200)
+00191 
+00192 #define BRLAPI_KEY_FLG_TOGGLE_MASK (BRLAPI_KEY_FLG_TOGGLE_ON | BRLAPI_KEY_FLG_TOGGLE_OFF)
+00193 
+00194 #define BRLAPI_KEY_FLG_ROUTE BRLAPI_KEY_FLG(0X0400)
+00195 
+00196 #define BRLAPI_KEY_FLG_REPEAT_INITIAL BRLAPI_KEY_FLG(0X8000)
+00197 
+00198 #define BRLAPI_KEY_FLG_REPEAT_DELAY BRLAPI_KEY_FLG(0X4000)
+00199 
+00200 #define BRLAPI_KEY_FLG_REPEAT_MASK (BRLAPI_KEY_FLG_REPEAT_INITIAL | BRLAPI_KEY_FLG_REPEAT_DELAY)
+00201 
+00202 #define BRLAPI_KEY_CMD_ROUTE BRLAPI_KEY_CMD(0X01)
+00203 
+00204 #define BRLAPI_KEY_CMD_CUTBEGIN BRLAPI_KEY_CMD(0X02)
+00205 
+00206 #define BRLAPI_KEY_CMD_CUTAPPEND BRLAPI_KEY_CMD(0X03)
+00207 
+00208 #define BRLAPI_KEY_CMD_CUTRECT BRLAPI_KEY_CMD(0X04)
+00209 
+00210 #define BRLAPI_KEY_CMD_CUTLINE BRLAPI_KEY_CMD(0X05)
+00211 
+00212 #define BRLAPI_KEY_CMD_SWITCHVT BRLAPI_KEY_CMD(0X06)
+00213 
+00214 #define BRLAPI_KEY_CMD_PRINDENT BRLAPI_KEY_CMD(0X07)
+00215 
+00216 #define BRLAPI_KEY_CMD_NXINDENT BRLAPI_KEY_CMD(0X08)
+00217 
+00218 #define BRLAPI_KEY_CMD_DESCCHAR BRLAPI_KEY_CMD(0X09)
+00219 
+00220 #define BRLAPI_KEY_CMD_SETLEFT BRLAPI_KEY_CMD(0X0A)
+00221 
+00222 #define BRLAPI_KEY_CMD_SETMARK BRLAPI_KEY_CMD(0X0B)
+00223 
+00224 #define BRLAPI_KEY_CMD_GOTOMARK BRLAPI_KEY_CMD(0X0C)
+00225 
+00226 #define BRLAPI_KEY_CMD_GOTOLINE BRLAPI_KEY_CMD(0X0D)
+00227 
+00228 #define BRLAPI_KEY_FLG_LINE_SCALED BRLAPI_KEY_FLG(0X0100)
+00229 
+00230 #define BRLAPI_KEY_FLG_LINE_TOLEFT BRLAPI_KEY_FLG(0X0200)
+00231 
+00232 #define BRLAPI_KEY_CMD_PRDIFCHAR BRLAPI_KEY_CMD(0X0E)
+00233 
+00234 #define BRLAPI_KEY_CMD_NXDIFCHAR BRLAPI_KEY_CMD(0X0F)
+00235 
+00236 #define BRLAPI_KEY_CMD_PASSDOTS BRLAPI_KEY_CMD(0X22)
+00237 
+00238 #define BRLAPI_KEY_FLG_SHIFT BRLAPI_KEY_FLG(0X01)
+00239 
+00240 #define BRLAPI_KEY_FLG_UPPER BRLAPI_KEY_FLG(0X02)
+00241 
+00242 #define BRLAPI_KEY_FLG_CONTROL BRLAPI_KEY_FLG(0X04)
+00243 
+00244 #define BRLAPI_KEY_FLG_META BRLAPI_KEY_FLG(0X08)
+00245 
+00246 #define BRLAPI_DOT1 0001
+00247 
+00248 #define BRLAPI_DOT2 0002
+00249 
+00250 #define BRLAPI_DOT3 0004
+00251 
+00252 #define BRLAPI_DOT4 0010
+00253 
+00254 #define BRLAPI_DOT5 0020
+00255 
+00256 #define BRLAPI_DOT6 0040
+00257 
+00258 #define BRLAPI_DOT7 0100
+00259 
+00260 #define BRLAPI_DOT8 0200
+00261 
+00262 #define BRLAPI_DOTC 0400
+00263 
+00264 #define BRLAPI_KEY_CMD_PASSAT BRLAPI_KEY_CMD(0X23)
+00265 
+00266 #define BRLAPI_KEY_CMD_PASSXT BRLAPI_KEY_CMD(0X24)
+00267 
+00268 #define BRLAPI_KEY_CMD_PASSPS2 BRLAPI_KEY_CMD(0X25)
+00269 
+00270 #define BRLAPI_KEY_FLG_KBD_RELEASE BRLAPI_KEY_FLG(0X0100)
+00271 
+00272 #define BRLAPI_KEY_FLG_KBD_EMUL0 BRLAPI_KEY_FLG(0X0200)
+00273 
+00274 #define BRLAPI_KEY_FLG_KBD_EMUL1 BRLAPI_KEY_FLG(0X0400)
+00275 
+00277 #define BRLAPI_DOTS(dot1, dot2, dot3, dot4, dot5, dot6, dot7, dot8) (\
+00278   ((dot1)? BRLAPI_DOT1: 0) | \
+00279   ((dot2)? BRLAPI_DOT2: 0) | \
+00280   ((dot3)? BRLAPI_DOT3: 0) | \
+00281   ((dot4)? BRLAPI_DOT4: 0) | \
+00282   ((dot5)? BRLAPI_DOT5: 0) | \
+00283   ((dot6)? BRLAPI_DOT6: 0) | \
+00284   ((dot7)? BRLAPI_DOT7: 0) | \
+00285   ((dot8)? BRLAPI_DOT8: 0) \
+00286 )
+00287 
+00289 #define BRLAPI_DOT_CHORD 256
+00290 
+00293 #ifdef __cplusplus
+00294 }
+00295 #endif /* __cplusplus */
+00296 
+00297 #endif /* BRLAPI_INCLUDED_CONSTANTS */
+

Generated on Fri May 15 00:09:17 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/brlapi__constants_8h.html b/Documents/BrlAPIref/html/brlapi__constants_8h.html new file mode 100644 index 0000000000000000000000000000000000000000..f0a695d27ac16665d8d6282677dc0f25eb3911ea --- /dev/null +++ b/Documents/BrlAPIref/html/brlapi__constants_8h.html @@ -0,0 +1,281 @@ + + +BrlAPI: brlapi_constants.h File Reference + + + + + + + +

brlapi_constants.h File Reference

+

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define BRLAPI_KEY_CMD_NOOP   (BRLAPI_KEY_CMD(0) + 0)
#define BRLAPI_KEY_CMD_LNUP   (BRLAPI_KEY_CMD(0) + 1)
#define BRLAPI_KEY_CMD_LNDN   (BRLAPI_KEY_CMD(0) + 2)
#define BRLAPI_KEY_CMD_WINUP   (BRLAPI_KEY_CMD(0) + 3)
#define BRLAPI_KEY_CMD_WINDN   (BRLAPI_KEY_CMD(0) + 4)
#define BRLAPI_KEY_CMD_PRDIFLN   (BRLAPI_KEY_CMD(0) + 5)
#define BRLAPI_KEY_CMD_NXDIFLN   (BRLAPI_KEY_CMD(0) + 6)
#define BRLAPI_KEY_CMD_ATTRUP   (BRLAPI_KEY_CMD(0) + 7)
#define BRLAPI_KEY_CMD_ATTRDN   (BRLAPI_KEY_CMD(0) + 8)
#define BRLAPI_KEY_CMD_TOP   (BRLAPI_KEY_CMD(0) + 9)
#define BRLAPI_KEY_CMD_BOT   (BRLAPI_KEY_CMD(0) + 10)
#define BRLAPI_KEY_CMD_TOP_LEFT   (BRLAPI_KEY_CMD(0) + 11)
#define BRLAPI_KEY_CMD_BOT_LEFT   (BRLAPI_KEY_CMD(0) + 12)
#define BRLAPI_KEY_CMD_PRPGRPH   (BRLAPI_KEY_CMD(0) + 13)
#define BRLAPI_KEY_CMD_NXPGRPH   (BRLAPI_KEY_CMD(0) + 14)
#define BRLAPI_KEY_CMD_PRPROMPT   (BRLAPI_KEY_CMD(0) + 15)
#define BRLAPI_KEY_CMD_NXPROMPT   (BRLAPI_KEY_CMD(0) + 16)
#define BRLAPI_KEY_CMD_PRSEARCH   (BRLAPI_KEY_CMD(0) + 17)
#define BRLAPI_KEY_CMD_NXSEARCH   (BRLAPI_KEY_CMD(0) + 18)
#define BRLAPI_KEY_CMD_CHRLT   (BRLAPI_KEY_CMD(0) + 19)
#define BRLAPI_KEY_CMD_CHRRT   (BRLAPI_KEY_CMD(0) + 20)
#define BRLAPI_KEY_CMD_HWINLT   (BRLAPI_KEY_CMD(0) + 21)
#define BRLAPI_KEY_CMD_HWINRT   (BRLAPI_KEY_CMD(0) + 22)
#define BRLAPI_KEY_CMD_FWINLT   (BRLAPI_KEY_CMD(0) + 23)
#define BRLAPI_KEY_CMD_FWINRT   (BRLAPI_KEY_CMD(0) + 24)
#define BRLAPI_KEY_CMD_FWINLTSKIP   (BRLAPI_KEY_CMD(0) + 25)
#define BRLAPI_KEY_CMD_FWINRTSKIP   (BRLAPI_KEY_CMD(0) + 26)
#define BRLAPI_KEY_CMD_LNBEG   (BRLAPI_KEY_CMD(0) + 27)
#define BRLAPI_KEY_CMD_LNEND   (BRLAPI_KEY_CMD(0) + 28)
#define BRLAPI_KEY_CMD_HOME   (BRLAPI_KEY_CMD(0) + 29)
#define BRLAPI_KEY_CMD_BACK   (BRLAPI_KEY_CMD(0) + 30)
#define BRLAPI_KEY_CMD_RETURN   (BRLAPI_KEY_CMD(0) + 31)
#define BRLAPI_KEY_CMD_FREEZE   (BRLAPI_KEY_CMD(0) + 32)
#define BRLAPI_KEY_CMD_DISPMD   (BRLAPI_KEY_CMD(0) + 33)
#define BRLAPI_KEY_CMD_SIXDOTS   (BRLAPI_KEY_CMD(0) + 34)
#define BRLAPI_KEY_CMD_SLIDEWIN   (BRLAPI_KEY_CMD(0) + 35)
#define BRLAPI_KEY_CMD_SKPIDLNS   (BRLAPI_KEY_CMD(0) + 36)
#define BRLAPI_KEY_CMD_SKPBLNKWINS   (BRLAPI_KEY_CMD(0) + 37)
#define BRLAPI_KEY_CMD_CSRVIS   (BRLAPI_KEY_CMD(0) + 38)
#define BRLAPI_KEY_CMD_CSRHIDE   (BRLAPI_KEY_CMD(0) + 39)
#define BRLAPI_KEY_CMD_CSRTRK   (BRLAPI_KEY_CMD(0) + 40)
#define BRLAPI_KEY_CMD_CSRSIZE   (BRLAPI_KEY_CMD(0) + 41)
#define BRLAPI_KEY_CMD_CSRBLINK   (BRLAPI_KEY_CMD(0) + 42)
#define BRLAPI_KEY_CMD_ATTRVIS   (BRLAPI_KEY_CMD(0) + 43)
#define BRLAPI_KEY_CMD_ATTRBLINK   (BRLAPI_KEY_CMD(0) + 44)
#define BRLAPI_KEY_CMD_CAPBLINK   (BRLAPI_KEY_CMD(0) + 45)
#define BRLAPI_KEY_CMD_TUNES   (BRLAPI_KEY_CMD(0) + 46)
#define BRLAPI_KEY_CMD_AUTOREPEAT   (BRLAPI_KEY_CMD(0) + 47)
#define BRLAPI_KEY_CMD_AUTOSPEAK   (BRLAPI_KEY_CMD(0) + 48)
#define BRLAPI_KEY_CMD_HELP   (BRLAPI_KEY_CMD(0) + 49)
#define BRLAPI_KEY_CMD_INFO   (BRLAPI_KEY_CMD(0) + 50)
#define BRLAPI_KEY_CMD_LEARN   (BRLAPI_KEY_CMD(0) + 51)
#define BRLAPI_KEY_CMD_PREFMENU   (BRLAPI_KEY_CMD(0) + 52)
#define BRLAPI_KEY_CMD_PREFSAVE   (BRLAPI_KEY_CMD(0) + 53)
#define BRLAPI_KEY_CMD_PREFLOAD   (BRLAPI_KEY_CMD(0) + 54)
#define BRLAPI_KEY_CMD_MENU_FIRST_ITEM   (BRLAPI_KEY_CMD(0) + 55)
#define BRLAPI_KEY_CMD_MENU_LAST_ITEM   (BRLAPI_KEY_CMD(0) + 56)
#define BRLAPI_KEY_CMD_MENU_PREV_ITEM   (BRLAPI_KEY_CMD(0) + 57)
#define BRLAPI_KEY_CMD_MENU_NEXT_ITEM   (BRLAPI_KEY_CMD(0) + 58)
#define BRLAPI_KEY_CMD_MENU_PREV_SETTING   (BRLAPI_KEY_CMD(0) + 59)
#define BRLAPI_KEY_CMD_MENU_NEXT_SETTING   (BRLAPI_KEY_CMD(0) + 60)
#define BRLAPI_KEY_CMD_MUTE   (BRLAPI_KEY_CMD(0) + 61)
#define BRLAPI_KEY_CMD_SPKHOME   (BRLAPI_KEY_CMD(0) + 62)
#define BRLAPI_KEY_CMD_SAY_LINE   (BRLAPI_KEY_CMD(0) + 63)
#define BRLAPI_KEY_CMD_SAY_ABOVE   (BRLAPI_KEY_CMD(0) + 64)
#define BRLAPI_KEY_CMD_SAY_BELOW   (BRLAPI_KEY_CMD(0) + 65)
#define BRLAPI_KEY_CMD_SAY_SLOWER   (BRLAPI_KEY_CMD(0) + 66)
#define BRLAPI_KEY_CMD_SAY_FASTER   (BRLAPI_KEY_CMD(0) + 67)
#define BRLAPI_KEY_CMD_SAY_SOFTER   (BRLAPI_KEY_CMD(0) + 68)
#define BRLAPI_KEY_CMD_SAY_LOUDER   (BRLAPI_KEY_CMD(0) + 69)
#define BRLAPI_KEY_CMD_SWITCHVT_PREV   (BRLAPI_KEY_CMD(0) + 70)
#define BRLAPI_KEY_CMD_SWITCHVT_NEXT   (BRLAPI_KEY_CMD(0) + 71)
#define BRLAPI_KEY_CMD_CSRJMP_VERT   (BRLAPI_KEY_CMD(0) + 72)
#define BRLAPI_KEY_CMD_PASTE   (BRLAPI_KEY_CMD(0) + 73)
#define BRLAPI_KEY_CMD_RESTARTBRL   (BRLAPI_KEY_CMD(0) + 74)
#define BRLAPI_KEY_CMD_RESTARTSPEECH   (BRLAPI_KEY_CMD(0) + 75)
#define BRLAPI_KEY_CMD_OFFLINE   (BRLAPI_KEY_CMD(0) + 76)
#define BRLAPI_KEY_FLG_TOGGLE_ON   BRLAPI_KEY_FLG(0X0100)
#define BRLAPI_KEY_FLG_TOGGLE_OFF   BRLAPI_KEY_FLG(0X0200)
#define BRLAPI_KEY_FLG_TOGGLE_MASK   (BRLAPI_KEY_FLG_TOGGLE_ON | BRLAPI_KEY_FLG_TOGGLE_OFF)
#define BRLAPI_KEY_FLG_ROUTE   BRLAPI_KEY_FLG(0X0400)
#define BRLAPI_KEY_FLG_REPEAT_INITIAL   BRLAPI_KEY_FLG(0X8000)
#define BRLAPI_KEY_FLG_REPEAT_DELAY   BRLAPI_KEY_FLG(0X4000)
#define BRLAPI_KEY_FLG_REPEAT_MASK   (BRLAPI_KEY_FLG_REPEAT_INITIAL | BRLAPI_KEY_FLG_REPEAT_DELAY)
#define BRLAPI_KEY_CMD_ROUTE   BRLAPI_KEY_CMD(0X01)
#define BRLAPI_KEY_CMD_CUTBEGIN   BRLAPI_KEY_CMD(0X02)
#define BRLAPI_KEY_CMD_CUTAPPEND   BRLAPI_KEY_CMD(0X03)
#define BRLAPI_KEY_CMD_CUTRECT   BRLAPI_KEY_CMD(0X04)
#define BRLAPI_KEY_CMD_CUTLINE   BRLAPI_KEY_CMD(0X05)
#define BRLAPI_KEY_CMD_SWITCHVT   BRLAPI_KEY_CMD(0X06)
#define BRLAPI_KEY_CMD_PRINDENT   BRLAPI_KEY_CMD(0X07)
#define BRLAPI_KEY_CMD_NXINDENT   BRLAPI_KEY_CMD(0X08)
#define BRLAPI_KEY_CMD_DESCCHAR   BRLAPI_KEY_CMD(0X09)
#define BRLAPI_KEY_CMD_SETLEFT   BRLAPI_KEY_CMD(0X0A)
#define BRLAPI_KEY_CMD_SETMARK   BRLAPI_KEY_CMD(0X0B)
#define BRLAPI_KEY_CMD_GOTOMARK   BRLAPI_KEY_CMD(0X0C)
#define BRLAPI_KEY_CMD_GOTOLINE   BRLAPI_KEY_CMD(0X0D)
#define BRLAPI_KEY_FLG_LINE_SCALED   BRLAPI_KEY_FLG(0X0100)
#define BRLAPI_KEY_FLG_LINE_TOLEFT   BRLAPI_KEY_FLG(0X0200)
#define BRLAPI_KEY_CMD_PRDIFCHAR   BRLAPI_KEY_CMD(0X0E)
#define BRLAPI_KEY_CMD_NXDIFCHAR   BRLAPI_KEY_CMD(0X0F)
#define BRLAPI_KEY_CMD_PASSDOTS   BRLAPI_KEY_CMD(0X22)
#define BRLAPI_KEY_FLG_SHIFT   BRLAPI_KEY_FLG(0X01)
#define BRLAPI_KEY_FLG_UPPER   BRLAPI_KEY_FLG(0X02)
#define BRLAPI_KEY_FLG_CONTROL   BRLAPI_KEY_FLG(0X04)
#define BRLAPI_KEY_FLG_META   BRLAPI_KEY_FLG(0X08)
#define BRLAPI_DOT1   0001
#define BRLAPI_DOT2   0002
#define BRLAPI_DOT3   0004
#define BRLAPI_DOT4   0010
#define BRLAPI_DOT5   0020
#define BRLAPI_DOT6   0040
#define BRLAPI_DOT7   0100
#define BRLAPI_DOT8   0200
#define BRLAPI_DOTC   0400
#define BRLAPI_KEY_CMD_PASSAT   BRLAPI_KEY_CMD(0X23)
#define BRLAPI_KEY_CMD_PASSXT   BRLAPI_KEY_CMD(0X24)
#define BRLAPI_KEY_CMD_PASSPS2   BRLAPI_KEY_CMD(0X25)
#define BRLAPI_KEY_FLG_KBD_RELEASE   BRLAPI_KEY_FLG(0X0100)
#define BRLAPI_KEY_FLG_KBD_EMUL0   BRLAPI_KEY_FLG(0X0200)
#define BRLAPI_KEY_FLG_KBD_EMUL1   BRLAPI_KEY_FLG(0X0400)
#define BRLAPI_DOTS(dot1, dot2, dot3, dot4, dot5, dot6, dot7, dot8)
#define BRLAPI_DOT_CHORD   256
+


Detailed Description

+
Generated on Fri May 15 00:09:17 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/brlapi__keycodes_8h-source.html b/Documents/BrlAPIref/html/brlapi__keycodes_8h-source.html new file mode 100644 index 0000000000000000000000000000000000000000..4e0b6ab190a342d6c1b911d178e0348d84c1d24e --- /dev/null +++ b/Documents/BrlAPIref/html/brlapi__keycodes_8h-source.html @@ -0,0 +1,123 @@ + + +BrlAPI: brlapi_keycodes.h Source File + + + + + + + +

brlapi_keycodes.h

Go to the documentation of this file.
00001 /*
+00002  * libbrlapi - A library providing access to braille terminals for applications.
+00003  *
+00004  * Copyright (C) 2002-2009 by
+00005  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
+00006  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
+00007  *
+00008  * libbrlapi comes with ABSOLUTELY NO WARRANTY.
+00009  *
+00010  * This is free software, placed under the terms of the
+00011  * GNU Lesser General Public License, as published by the Free Software
+00012  * Foundation; either version 2.1 of the License, or (at your option) any
+00013  * later version. Please see the file LICENSE-LGPL for details.
+00014  *
+00015  * Web Page: http://mielke.cc/brltty/
+00016  *
+00017  * This software is maintained by Dave Mielke <dave@mielke.cc>.
+00018  */
+00019 
+00023 #ifndef BRLAPI_INCLUDED_KEYCODES
+00024 #define BRLAPI_INCLUDED_KEYCODES
+00025 
+00026 #ifdef __cplusplus
+00027 extern "C" {
+00028 #endif /* __cplusplus */
+00029 
+00090 typedef uint64_t brlapi_keyCode_t;
+00091 
+00093 #define BRLAPI_PRIxKEYCODE PRIx64
+00094 
+00095 #define BRLAPI_PRIuKEYCODE PRIu64
+00096 
+00100 #define BRLAPI_KEY_MAX UINT64_C(0XFFFFFFFFFFFFFFFF)
+00101 
+00105 #define BRLAPI_KEY_FLAGS_MASK           UINT64_C(0XFFFFFFFF00000000)
+00106 
+00107 #define BRLAPI_KEY_FLAGS_SHIFT          32
+00108 
+00109 #define BRLAPI_KEY_FLG(v)               ((brlapi_keyCode_t)(v) << BRLAPI_KEY_FLAGS_SHIFT)
+00110 
+00112 #define BRLAPI_KEY_FLG_MOD1             BRLAPI_KEY_FLG(0x00000008)
+00113 
+00114 #define BRLAPI_KEY_FLG_MOD2             BRLAPI_KEY_FLG(0x00000010)
+00115 
+00116 #define BRLAPI_KEY_FLG_MOD3             BRLAPI_KEY_FLG(0x00000020)
+00117 
+00118 #define BRLAPI_KEY_FLG_MOD4             BRLAPI_KEY_FLG(0x00000040)
+00119 
+00120 #define BRLAPI_KEY_FLG_MOD5             BRLAPI_KEY_FLG(0x00000080)
+00121 
+00122 
+00126 #define BRLAPI_KEY_TYPE_MASK            UINT64_C(0X00000000E0000000)
+00127 
+00128 #define BRLAPI_KEY_TYPE_SHIFT           29
+00129 
+00130 #define BRLAPI_KEY_TYPE_CMD             UINT64_C(0X0000000020000000)
+00131 
+00132 #define BRLAPI_KEY_TYPE_SYM             UINT64_C(0X0000000000000000)
+00133 
+00137 #define BRLAPI_KEY_CODE_MASK            UINT64_C(0X000000001FFFFFFF)
+00138 
+00139 #define BRLAPI_KEY_CODE_SHIFT           0
+00140 
+00142 #define BRLAPI_KEY_CMD_BLK_MASK         UINT64_C(0X1FFF0000)
+00143 
+00144 #define BRLAPI_KEY_CMD_BLK_SHIFT        16
+00145 
+00146 #define BRLAPI_KEY_CMD_ARG_MASK         UINT64_C(0X0000FFFF)
+00147 
+00148 #define BRLAPI_KEY_CMD_ARG_SHIFT        0
+00149 #define BRLAPI_KEY_CMD(v)               ((v) << BRLAPI_KEY_CMD_BLK_SHIFT)
+00150 
+00152 #define BRLAPI_KEY_SYM_BACKSPACE        UINT64_C(0X0000FF08)
+00153 #define BRLAPI_KEY_SYM_TAB              UINT64_C(0X0000FF09)
+00154 #define BRLAPI_KEY_SYM_LINEFEED         UINT64_C(0X0000FF0D)
+00155 #define BRLAPI_KEY_SYM_ESCAPE           UINT64_C(0X0000FF1B)
+00156 #define BRLAPI_KEY_SYM_HOME             UINT64_C(0X0000FF50)
+00157 #define BRLAPI_KEY_SYM_LEFT             UINT64_C(0X0000FF51)
+00158 #define BRLAPI_KEY_SYM_UP               UINT64_C(0X0000FF52)
+00159 #define BRLAPI_KEY_SYM_RIGHT            UINT64_C(0X0000FF53)
+00160 #define BRLAPI_KEY_SYM_DOWN             UINT64_C(0X0000FF54)
+00161 #define BRLAPI_KEY_SYM_PAGE_UP          UINT64_C(0X0000FF55)
+00162 #define BRLAPI_KEY_SYM_PAGE_DOWN        UINT64_C(0X0000FF56)
+00163 #define BRLAPI_KEY_SYM_END              UINT64_C(0X0000FF57)
+00164 #define BRLAPI_KEY_SYM_INSERT           UINT64_C(0X0000FF63)
+00165 #define BRLAPI_KEY_SYM_FUNCTION         UINT64_C(0X0000FFBE)
+00166 #define BRLAPI_KEY_SYM_DELETE           UINT64_C(0X0000FFFF)
+00167 #define BRLAPI_KEY_SYM_UNICODE          UINT64_C(0X01000000)
+00168 
+00171 #include "brlapi_constants.h"
+00172 
+00173 #ifdef __cplusplus
+00174 }
+00175 #endif /* __cplusplus */
+00176 
+00177 #endif /* BRLAPI_INCLUDED_KEYCODES */
+

Generated on Fri May 15 00:09:17 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/brlapi__keycodes_8h.html b/Documents/BrlAPIref/html/brlapi__keycodes_8h.html new file mode 100644 index 0000000000000000000000000000000000000000..9e1cb61c6ccbc662e62274d33d64206af119d701 --- /dev/null +++ b/Documents/BrlAPIref/html/brlapi__keycodes_8h.html @@ -0,0 +1,114 @@ + + +BrlAPI: brlapi_keycodes.h File Reference + + + + + + + +

brlapi_keycodes.h File Reference

#include "brlapi_constants.h"
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define BRLAPI_PRIxKEYCODE   PRIx64
#define BRLAPI_PRIuKEYCODE   PRIu64
#define BRLAPI_KEY_MAX   UINT64_C(0XFFFFFFFFFFFFFFFF)
#define BRLAPI_KEY_FLAGS_MASK   UINT64_C(0XFFFFFFFF00000000)
#define BRLAPI_KEY_FLAGS_SHIFT   32
#define BRLAPI_KEY_FLG(v)   ((brlapi_keyCode_t)(v) << BRLAPI_KEY_FLAGS_SHIFT)
#define BRLAPI_KEY_FLG_MOD1   BRLAPI_KEY_FLG(0x00000008)
#define BRLAPI_KEY_FLG_MOD2   BRLAPI_KEY_FLG(0x00000010)
#define BRLAPI_KEY_FLG_MOD3   BRLAPI_KEY_FLG(0x00000020)
#define BRLAPI_KEY_FLG_MOD4   BRLAPI_KEY_FLG(0x00000040)
#define BRLAPI_KEY_FLG_MOD5   BRLAPI_KEY_FLG(0x00000080)
#define BRLAPI_KEY_TYPE_MASK   UINT64_C(0X00000000E0000000)
#define BRLAPI_KEY_TYPE_SHIFT   29
#define BRLAPI_KEY_TYPE_CMD   UINT64_C(0X0000000020000000)
#define BRLAPI_KEY_TYPE_SYM   UINT64_C(0X0000000000000000)
#define BRLAPI_KEY_CODE_MASK   UINT64_C(0X000000001FFFFFFF)
#define BRLAPI_KEY_CODE_SHIFT   0
#define BRLAPI_KEY_CMD_BLK_MASK   UINT64_C(0X1FFF0000)
#define BRLAPI_KEY_CMD_BLK_SHIFT   16
#define BRLAPI_KEY_CMD_ARG_MASK   UINT64_C(0X0000FFFF)
#define BRLAPI_KEY_CMD_ARG_SHIFT   0
#define BRLAPI_KEY_CMD(v)   ((v) << BRLAPI_KEY_CMD_BLK_SHIFT)
#define BRLAPI_KEY_SYM_BACKSPACE   UINT64_C(0X0000FF08)
#define BRLAPI_KEY_SYM_TAB   UINT64_C(0X0000FF09)
#define BRLAPI_KEY_SYM_LINEFEED   UINT64_C(0X0000FF0D)
#define BRLAPI_KEY_SYM_ESCAPE   UINT64_C(0X0000FF1B)
#define BRLAPI_KEY_SYM_HOME   UINT64_C(0X0000FF50)
#define BRLAPI_KEY_SYM_LEFT   UINT64_C(0X0000FF51)
#define BRLAPI_KEY_SYM_UP   UINT64_C(0X0000FF52)
#define BRLAPI_KEY_SYM_RIGHT   UINT64_C(0X0000FF53)
#define BRLAPI_KEY_SYM_DOWN   UINT64_C(0X0000FF54)
#define BRLAPI_KEY_SYM_PAGE_UP   UINT64_C(0X0000FF55)
#define BRLAPI_KEY_SYM_PAGE_DOWN   UINT64_C(0X0000FF56)
#define BRLAPI_KEY_SYM_END   UINT64_C(0X0000FF57)
#define BRLAPI_KEY_SYM_INSERT   UINT64_C(0X0000FF63)
#define BRLAPI_KEY_SYM_FUNCTION   UINT64_C(0X0000FFBE)
#define BRLAPI_KEY_SYM_DELETE   UINT64_C(0X0000FFFF)
#define BRLAPI_KEY_SYM_UNICODE   UINT64_C(0X01000000)

Typedefs

typedef uint64_t brlapi_keyCode_t
+


Detailed Description

+
Generated on Fri May 15 00:09:17 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/brlapi__protocol_8h-source.html b/Documents/BrlAPIref/html/brlapi__protocol_8h-source.html new file mode 100644 index 0000000000000000000000000000000000000000..55a4d0ac8223256b7caebe13061dd0db6a9bf8c3 --- /dev/null +++ b/Documents/BrlAPIref/html/brlapi__protocol_8h-source.html @@ -0,0 +1,174 @@ + + +BrlAPI: brlapi_protocol.h Source File + + + + + + + +

brlapi_protocol.h

Go to the documentation of this file.
00001 /*
+00002  * libbrlapi - A library providing access to braille terminals for applications.
+00003  *
+00004  * Copyright (C) 2002-2009 by
+00005  *   Samuel Thibault <Samuel.Thibault@ens-lyon.org>
+00006  *   Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
+00007  *
+00008  * libbrlapi comes with ABSOLUTELY NO WARRANTY.
+00009  *
+00010  * This is free software, placed under the terms of the
+00011  * GNU Lesser General Public License, as published by the Free Software
+00012  * Foundation; either version 2.1 of the License, or (at your option) any
+00013  * later version. Please see the file LICENSE-LGPL for details.
+00014  *
+00015  * Web Page: http://mielke.cc/brltty/
+00016  *
+00017  * This software is maintained by Dave Mielke <dave@mielke.cc>.
+00018  */
+00019 
+00024 #ifndef BRLAPI_INCLUDED_PROTOCOL
+00025 #define BRLAPI_INCLUDED_PROTOCOL
+00026 
+00027 #ifdef __cplusplus
+00028 extern "C" {
+00029 #endif /* __cplusplus */
+00030 
+00031 #include "brlapi.h"
+00032 
+00033 /* this is for UINT32_MAX */
+00034 #include <inttypes.h>
+00035 #ifndef UINT32_MAX
+00036 #define UINT32_MAX (4294967295U)
+00037 #endif /* UINT32_MAX */
+00038 
+00039 /* The type size_t is defined there! */
+00040 #include <unistd.h>
+00041 
+00052 #define BRLAPI_PROTOCOL_VERSION ((uint32_t) 8) 
+00056 #define BRLAPI_MAXPACKETSIZE 512
+00057 
+00058 #define BRLAPI_PACKET_VERSION         'v'   
+00059 #define BRLAPI_PACKET_AUTH            'a'   
+00060 #define BRLAPI_PACKET_GETDRIVERNAME   'n'   
+00061 #define BRLAPI_PACKET_GETDISPLAYSIZE  's'   
+00062 #define BRLAPI_PACKET_ENTERTTYMODE    't'   
+00063 #define BRLAPI_PACKET_SETFOCUS        'F'   
+00064 #define BRLAPI_PACKET_LEAVETTYMODE    'L'   
+00065 #define BRLAPI_PACKET_KEY             'k'   
+00066 #define BRLAPI_PACKET_IGNOREKEYRANGES 'm'   
+00067 #define BRLAPI_PACKET_ACCEPTKEYRANGES 'u'   
+00068 #define BRLAPI_PACKET_WRITE           'w'   
+00069 #define BRLAPI_PACKET_ENTERRAWMODE    '*'   
+00070 #define BRLAPI_PACKET_LEAVERAWMODE    '#'   
+00071 #define BRLAPI_PACKET_PACKET          'p'   
+00072 #define BRLAPI_PACKET_ACK             'A'   
+00073 #define BRLAPI_PACKET_ERROR           'e'   
+00074 #define BRLAPI_PACKET_EXCEPTION       'E'   
+00075 #define BRLAPI_PACKET_SUSPENDDRIVER   'S'   
+00076 #define BRLAPI_PACKET_RESUMEDRIVER    'R'   
+00079 #define BRLAPI_DEVICE_MAGIC (0xdeadbeefL)
+00080 
+00082 typedef struct {
+00083   uint32_t size;
+00084   brlapi_packetType_t type;
+00085 } brlapi_header_t;
+00086 
+00088 #define BRLAPI_HEADERSIZE sizeof(brlapi_header_t)
+00089 
+00091 typedef struct {
+00092   uint32_t protocolVersion;
+00093 } brlapi_versionPacket_t;
+00094 
+00096 typedef struct {
+00097   uint32_t type;
+00098   unsigned char key;
+00099 } brlapi_authClientPacket_t;
+00100 
+00101 typedef struct {
+00102   uint32_t type[1];
+00103 } brlapi_authServerPacket_t;
+00104 
+00105 #define BRLAPI_AUTH_NONE 'N' 
+00106 #define BRLAPI_AUTH_KEY  'K' 
+00107 #define BRLAPI_AUTH_CRED 'C' 
+00110 typedef struct {
+00111   uint32_t code;
+00112   brlapi_packetType_t type;
+00113   unsigned char packet;
+00114 } brlapi_errorPacket_t;
+00115 
+00117 typedef struct {
+00118   uint32_t magic;
+00119   unsigned char nameLength;
+00120   char name;
+00121 } brlapi_getDriverSpecificModePacket_t;
+00122 
+00124 #define BRLAPI_WF_DISPLAYNUMBER 0X01    
+00125 #define BRLAPI_WF_REGION        0X02    
+00126 #define BRLAPI_WF_TEXT          0X04    
+00127 #define BRLAPI_WF_ATTR_AND      0X08    
+00128 #define BRLAPI_WF_ATTR_OR       0X10    
+00129 #define BRLAPI_WF_CURSOR        0X20    
+00130 #define BRLAPI_WF_CHARSET       0X40    
+00133 typedef struct {
+00134   uint32_t flags; 
+00135   unsigned char data; 
+00136 } brlapi_writeArgumentsPacket_t;
+00137 
+00140 typedef union {
+00141         unsigned char data[BRLAPI_MAXPACKETSIZE];
+00142         brlapi_versionPacket_t version;
+00143         brlapi_authClientPacket_t authClient;
+00144         brlapi_authServerPacket_t authServer;
+00145         brlapi_errorPacket_t error;
+00146         brlapi_getDriverSpecificModePacket_t getDriverSpecificMode;
+00147         brlapi_writeArgumentsPacket_t writeArguments;
+00148         uint32_t uint32;
+00149 } brlapi_packet_t;
+00150 
+00151 /* brlapi_writePacket */
+00167 ssize_t brlapi_writePacket(brlapi_fileDescriptor fd, brlapi_packetType_t type, const void *buf, size_t size);
+00168 
+00169 /* brlapi_readPacketHeader */
+00186 ssize_t brlapi_readPacketHeader(brlapi_fileDescriptor fd, brlapi_packetType_t *packetType);
+00187 
+00188 /* brlapi_readPacketContent */
+00209 ssize_t brlapi_readPacketContent(brlapi_fileDescriptor fd, size_t packetSize, void *buf, size_t bufSize);
+00210 
+00211 /* brlapi_readPacket */
+00233 ssize_t brlapi_readPacket(brlapi_fileDescriptor fd, brlapi_packetType_t *type, void *buf, size_t size);
+00234 
+00235 /* brlapi_fd_mutex */
+00262 #ifdef __MINGW32__
+00263 #include <windows.h>
+00264 extern HANDLE brlapi_fd_mutex;
+00265 #else /* __MINGW32__ */
+00266 #include <pthread.h>
+00267 extern pthread_mutex_t brlapi_fd_mutex;
+00268 #endif /* __MINGW32__ */
+00269 
+00270 /* @} */
+00271 
+00272 #ifdef __cplusplus
+00273 }
+00274 #endif /* __cplusplus */
+00275 
+00276 #endif /* BRLAPI_INCLUDED_PROTOCOL */
+

Generated on Fri May 15 00:09:17 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/brlapi__protocol_8h.html b/Documents/BrlAPIref/html/brlapi__protocol_8h.html new file mode 100644 index 0000000000000000000000000000000000000000..862d5923bf66f4484beafe4397fcd60d34fe2c27 --- /dev/null +++ b/Documents/BrlAPIref/html/brlapi__protocol_8h.html @@ -0,0 +1,153 @@ + + +BrlAPI: brlapi_protocol.h File Reference + + + + + + + +

brlapi_protocol.h File Reference

types and constants for BrlAPI's protocol More... +

+#include "brlapi.h"
+#include <inttypes.h>
+#include <unistd.h>
+#include <pthread.h>
+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  brlapi_header_t
struct  brlapi_versionPacket_t
struct  brlapi_authClientPacket_t
struct  brlapi_authServerPacket_t
struct  brlapi_errorPacket_t
struct  brlapi_getDriverSpecificModePacket_t
struct  brlapi_writeArgumentsPacket_t
union  brlapi_packet_t

Defines

#define UINT32_MAX   (4294967295U)
#define BRLAPI_PROTOCOL_VERSION   ((uint32_t) 8)
#define BRLAPI_MAXPACKETSIZE   512
#define BRLAPI_PACKET_VERSION   'v'
#define BRLAPI_PACKET_AUTH   'a'
#define BRLAPI_PACKET_GETDRIVERNAME   'n'
#define BRLAPI_PACKET_GETDISPLAYSIZE   's'
#define BRLAPI_PACKET_ENTERTTYMODE   't'
#define BRLAPI_PACKET_SETFOCUS   'F'
#define BRLAPI_PACKET_LEAVETTYMODE   'L'
#define BRLAPI_PACKET_KEY   'k'
#define BRLAPI_PACKET_IGNOREKEYRANGES   'm'
#define BRLAPI_PACKET_ACCEPTKEYRANGES   'u'
#define BRLAPI_PACKET_WRITE   'w'
#define BRLAPI_PACKET_ENTERRAWMODE   '*'
#define BRLAPI_PACKET_LEAVERAWMODE   '#'
#define BRLAPI_PACKET_PACKET   'p'
#define BRLAPI_PACKET_ACK   'A'
#define BRLAPI_PACKET_ERROR   'e'
#define BRLAPI_PACKET_EXCEPTION   'E'
#define BRLAPI_PACKET_SUSPENDDRIVER   'S'
#define BRLAPI_PACKET_RESUMEDRIVER   'R'
#define BRLAPI_DEVICE_MAGIC   (0xdeadbeefL)
#define BRLAPI_HEADERSIZE   sizeof(brlapi_header_t)
#define BRLAPI_AUTH_NONE   'N'
#define BRLAPI_AUTH_KEY   'K'
#define BRLAPI_AUTH_CRED   'C'
#define BRLAPI_WF_DISPLAYNUMBER   0X01
#define BRLAPI_WF_REGION   0X02
#define BRLAPI_WF_TEXT   0X04
#define BRLAPI_WF_ATTR_AND   0X08
#define BRLAPI_WF_ATTR_OR   0X10
#define BRLAPI_WF_CURSOR   0X20
#define BRLAPI_WF_CHARSET   0X40

Functions

ssize_t brlapi_writePacket (brlapi_fileDescriptor fd, brlapi_packetType_t type, const void *buf, size_t size)
ssize_t brlapi_readPacketHeader (brlapi_fileDescriptor fd, brlapi_packetType_t *packetType)
ssize_t brlapi_readPacketContent (brlapi_fileDescriptor fd, size_t packetSize, void *buf, size_t bufSize)
ssize_t brlapi_readPacket (brlapi_fileDescriptor fd, brlapi_packetType_t *type, void *buf, size_t size)

Variables

pthread_mutex_t brlapi_fd_mutex
+


Detailed Description

+

Define Documentation

+ +
+
+ + + + +
#define UINT32_MAX   (4294967295U)
+
+
+ +

+ +

+

+


Generated on Fri May 15 00:09:17 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/dir_5c6a88e0adaa69574712fef8121d4050.html b/Documents/BrlAPIref/html/dir_5c6a88e0adaa69574712fef8121d4050.html new file mode 100644 index 0000000000000000000000000000000000000000..63efed118385bc33246e36bd32652d0487fbb967 --- /dev/null +++ b/Documents/BrlAPIref/html/dir_5c6a88e0adaa69574712fef8121d4050.html @@ -0,0 +1,40 @@ + + +BrlAPI: /tmp/mktar.z26723/brltty-4.0/Programs/ Directory Reference + + + + + + +

Programs Directory Reference

+ + + + + + +

+

+ + + + + + + +

+


Files

file  brlapi.h [code]
 Types, defines and functions prototypes for BrlAPI's library.
file  brlapi_constants.h [code]
file  brlapi_keycodes.h [code]
file  brlapi_protocol.h [code]
 types and constants for BrlAPI's protocol
+
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/dirs.html b/Documents/BrlAPIref/html/dirs.html new file mode 100644 index 0000000000000000000000000000000000000000..409c4b9a1f28a7a5b398f4e3f410560790f06470 --- /dev/null +++ b/Documents/BrlAPIref/html/dirs.html @@ -0,0 +1,23 @@ + + +BrlAPI: Directory Hierarchy + + + + + +

BrlAPI Directories

This directory hierarchy is sorted roughly, but not completely, alphabetically: +
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/doxygen.css b/Documents/BrlAPIref/html/doxygen.css new file mode 100644 index 0000000000000000000000000000000000000000..c7db1a8a04edf1f89932d1059eb1d1873b8ee583 --- /dev/null +++ b/Documents/BrlAPIref/html/doxygen.css @@ -0,0 +1,358 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: monospace, fixed; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } + +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + +/* Style for detailed member documentation */ +.memtemplate { + font-size: 80%; + color: #606060; + font-weight: normal; +} +.memnav { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +.memitem { + padding: 4px; + background-color: #eef3f5; + border-width: 1px; + border-style: solid; + border-color: #dedeee; + -moz-border-radius: 8px 8px 8px 8px; +} +.memname { + white-space: nowrap; + font-weight: bold; +} +.memdoc{ + padding-left: 10px; +} +.memproto { + background-color: #d5e1e8; + width: 100%; + border-width: 1px; + border-style: solid; + border-color: #84b0c7; + font-weight: bold; + -moz-border-radius: 8px 8px 8px 8px; +} +.paramkey { + text-align: right; +} +.paramtype { + white-space: nowrap; +} +.paramname { + color: #602020; + font-style: italic; + white-space: nowrap; +} +/* End Styling for detailed member documentation */ + +/* for the tree view */ +.ftvtree { + font-family: sans-serif; + margin:0.5em; +} +.directory { font-size: 9pt; font-weight: bold; } +.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; } +.directory > h3 { margin-top: 0; } +.directory p { margin: 0px; white-space: nowrap; } +.directory div { display: none; margin: 0px; } +.directory img { vertical-align: -30%; } diff --git a/Documents/BrlAPIref/html/doxygen.png b/Documents/BrlAPIref/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..f0a274bbaffdd67f6d784c894d9cf28729db0e14 Binary files /dev/null and b/Documents/BrlAPIref/html/doxygen.png differ diff --git a/Documents/BrlAPIref/html/files.html b/Documents/BrlAPIref/html/files.html new file mode 100644 index 0000000000000000000000000000000000000000..709077647ecafdbc799af4d088f7acad53d8d7ec --- /dev/null +++ b/Documents/BrlAPIref/html/files.html @@ -0,0 +1,31 @@ + + +BrlAPI: File Index + + + + + + +

BrlAPI File List

Here is a list of all files with brief descriptions: + + + + +
brlapi.h [code]Types, defines and functions prototypes for BrlAPI's library
brlapi_constants.h [code]
brlapi_keycodes.h [code]
brlapi_protocol.h [code]Types and constants for BrlAPI's protocol
+
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/functions.html b/Documents/BrlAPIref/html/functions.html new file mode 100644 index 0000000000000000000000000000000000000000..690be41cd220ca1de8cd90a3ebfe0be9d59f21ec --- /dev/null +++ b/Documents/BrlAPIref/html/functions.html @@ -0,0 +1,198 @@ + + +BrlAPI: Data Fields + + + + + + +
+ +
+
+ +
+ +

+Here is a list of all struct and union fields with links to the structures/unions they belong to: +

+

- a -

+

- b -

+

- c -

+

- d -

+

- e -

+

- f -

+

- g -

+

- h -

+

- k -

+

- l -

+

- m -

+

- n -

+

- o -

+

- p -

+

- r -

+

- s -

+

- t -

+

- u -

+

- v -

+

- w -

+
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/functions_vars.html b/Documents/BrlAPIref/html/functions_vars.html new file mode 100644 index 0000000000000000000000000000000000000000..9d87b717b979270c188b3baf8c50e449f573c415 --- /dev/null +++ b/Documents/BrlAPIref/html/functions_vars.html @@ -0,0 +1,198 @@ + + +BrlAPI: Data Fields - Variables + + + + + + +
+ +
+
+ +
+ +

+  +

+

- a -

+

- b -

+

- c -

+

- d -

+

- e -

+

- f -

+

- g -

+

- h -

+

- k -

+

- l -

+

- m -

+

- n -

+

- o -

+

- p -

+

- r -

+

- s -

+

- t -

+

- u -

+

- v -

+

- w -

+
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/globals.html b/Documents/BrlAPIref/html/globals.html new file mode 100644 index 0000000000000000000000000000000000000000..4eafd1bae57a6c06fbd361c312c23a9427d0b74c --- /dev/null +++ b/Documents/BrlAPIref/html/globals.html @@ -0,0 +1,748 @@ + + +BrlAPI: Data Fields + + + + + + + +
+
    +
  • b
  • +
  • u
  • +
+
+ +

+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: +

+

- b -

+
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/globals_0x75.html b/Documents/BrlAPIref/html/globals_0x75.html new file mode 100644 index 0000000000000000000000000000000000000000..de7f94df77fff45ec0aa5fc64a446847eb0f5c52 --- /dev/null +++ b/Documents/BrlAPIref/html/globals_0x75.html @@ -0,0 +1,50 @@ + + +BrlAPI: Data Fields + + + + + + + +
+
    +
  • b
  • +
  • u
  • +
+
+ +

+Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to: +

+

- u -

+
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/globals_defs.html b/Documents/BrlAPIref/html/globals_defs.html new file mode 100644 index 0000000000000000000000000000000000000000..9e2b32b80f149e6144b85799beb4a75e72350e6a --- /dev/null +++ b/Documents/BrlAPIref/html/globals_defs.html @@ -0,0 +1,596 @@ + + +BrlAPI: Data Fields + + + + + + + +
+
    +
  • b
  • +
  • u
  • +
+
+ +

+  +

+

- b -

+
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/globals_defs_0x75.html b/Documents/BrlAPIref/html/globals_defs_0x75.html new file mode 100644 index 0000000000000000000000000000000000000000..828bb8d7c50a486143ee5420e440b5fffc545ae5 --- /dev/null +++ b/Documents/BrlAPIref/html/globals_defs_0x75.html @@ -0,0 +1,50 @@ + + +BrlAPI: Data Fields + + + + + + + +
+
    +
  • b
  • +
  • u
  • +
+
+ +

+  +

+

- u -

+
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/globals_enum.html b/Documents/BrlAPIref/html/globals_enum.html new file mode 100644 index 0000000000000000000000000000000000000000..d0127091f3368f91a5da22094785157f9625a263 --- /dev/null +++ b/Documents/BrlAPIref/html/globals_enum.html @@ -0,0 +1,42 @@ + + +BrlAPI: Data Fields + + + + + + + +  +

+

+
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/globals_eval.html b/Documents/BrlAPIref/html/globals_eval.html new file mode 100644 index 0000000000000000000000000000000000000000..430d31b41005b6e0bce6d204e1af63d19d2d1097 --- /dev/null +++ b/Documents/BrlAPIref/html/globals_eval.html @@ -0,0 +1,50 @@ + + +BrlAPI: Data Fields + + + + + + + +  +

+

+
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/globals_func.html b/Documents/BrlAPIref/html/globals_func.html new file mode 100644 index 0000000000000000000000000000000000000000..c2e7f271ca180e8c8b46d6569ddd76c092c49282 --- /dev/null +++ b/Documents/BrlAPIref/html/globals_func.html @@ -0,0 +1,173 @@ + + +BrlAPI: Data Fields + + + + + + + +
+
    +
  • b
  • +
+
+ +

+  +

+

- b -

+
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/globals_type.html b/Documents/BrlAPIref/html/globals_type.html new file mode 100644 index 0000000000000000000000000000000000000000..dbceafa7ee71ea5cd6455321d8f1572fa3c5bfb5 --- /dev/null +++ b/Documents/BrlAPIref/html/globals_type.html @@ -0,0 +1,52 @@ + + +BrlAPI: Data Fields + + + + + + + +  +

+

+
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/globals_vars.html b/Documents/BrlAPIref/html/globals_vars.html new file mode 100644 index 0000000000000000000000000000000000000000..ab656c62c389eae6ad9ad332f08eb68bb0f94c05 --- /dev/null +++ b/Documents/BrlAPIref/html/globals_vars.html @@ -0,0 +1,56 @@ + + +BrlAPI: Data Fields + + + + + + + +  +

+

+
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/group__brlapi__connection.html b/Documents/BrlAPIref/html/group__brlapi__connection.html new file mode 100644 index 0000000000000000000000000000000000000000..daae23ad322773b3b3001039f1e6315e52c0321a --- /dev/null +++ b/Documents/BrlAPIref/html/group__brlapi__connection.html @@ -0,0 +1,303 @@ + + +BrlAPI: Connecting to BrlAPI + + + + + +

Connecting to BrlAPI

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  brlapi_connectionSettings_t
 Settings structure for BrlAPI connection. More...

Defines

#define BRLAPI_SOCKETPORTNUM   4101
#define BRLAPI_SOCKETPORT   "4101"
#define BRLAPI_SOCKETPATH   "/var/lib/BrlAPI"
#define BRLAPI_ETCDIR   "/etc"
#define BRLAPI_AUTHKEYFILE   "brlapi.key"
#define BRLAPI_DEFAUTH   BRLAPI_ETCDIR "/" BRLAPI_AUTHKEYFILE
#define BRLAPI_SETTINGS_INITIALIZER   { NULL, NULL }

Typedefs

typedef int brlapi_fileDescriptor

Functions

brlapi_fileDescriptor BRLAPI_STDCALL brlapi_openConnection (const brlapi_connectionSettings_t *desiredSettings, brlapi_connectionSettings_t *actualSettings)
brlapi_fileDescriptor BRLAPI_STDCALL brlapi__openConnection (brlapi_handle_t *handle, const brlapi_connectionSettings_t *desiredSettings, brlapi_connectionSettings_t *actualSettings)
void BRLAPI_STDCALL brlapi_closeConnection (void)
void BRLAPI_STDCALL brlapi__closeConnection (brlapi_handle_t *handle)
+

Detailed Description

+Before calling any other function of the library, calling brlapi_openConnection() is needed to establish a connection to BrlAPI 's server. When the connection is not needed any more, brlapi_closeConnection() must be called to close the connection.

Define Documentation

+ +
+
+ + + + +
#define BRLAPI_AUTHKEYFILE   "brlapi.key"
+
+
+ +

+Default name of the file containing BrlAPI 's authorization key

+This name is relative to BRLAPI_ETCDIR +

+

+ +

+
+ + + + +
#define BRLAPI_DEFAUTH   BRLAPI_ETCDIR "/" BRLAPI_AUTHKEYFILE
+
+
+ +

+Default authorization setting +

+

+ +

+
+ + + + +
#define BRLAPI_ETCDIR   "/etc"
+
+
+ +

+brltty 's settings directory

+This is where authorization key and driver-dependent key names are found for instance. +

+

+ +

+
+ + + + +
#define BRLAPI_SETTINGS_INITIALIZER   { NULL, NULL }
+
+
+ +

+Allows to initialize a structure of type brlapi_connectionSettings_t * with default values. +

+

+ +

+
+ + + + +
#define BRLAPI_SOCKETPATH   "/var/lib/BrlAPI"
+
+
+ +

+Default unix path on which connections to BrlAPI can be established +

+

+ +

+
+ + + + +
#define BRLAPI_SOCKETPORT   "4101"
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLAPI_SOCKETPORTNUM   4101
+
+
+ +

+Default port number on which connections to BrlAPI can be established +

+

+


Typedef Documentation

+ +
+
+ + + + +
typedef int brlapi_fileDescriptor
+
+
+ +

+ +

+

+


Function Documentation

+ +
+
+ + + + + + + + + +
void BRLAPI_STDCALL brlapi__closeConnection (brlapi_handle_t handle  ) 
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
brlapi_fileDescriptor BRLAPI_STDCALL brlapi__openConnection (brlapi_handle_t handle,
const brlapi_connectionSettings_t desiredSettings,
brlapi_connectionSettings_t actualSettings 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + +
void BRLAPI_STDCALL brlapi_closeConnection (void   ) 
+
+
+ +

+Cleanly close the socket

+This function locks until a closing acknowledgement is received from the server. The socket is then freed, so the file descriptor brlapi_openConnection() gave has no meaning any more +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
brlapi_fileDescriptor BRLAPI_STDCALL brlapi_openConnection (const brlapi_connectionSettings_t desiredSettings,
brlapi_connectionSettings_t actualSettings 
)
+
+
+ +

+Open a socket and connect it to BrlAPI 's server

+This function first loads an authorization key as specified in settings. It then creates a TCP socket and connects it to the specified machine, on the specified port. It writes the authorization key on the socket and waits for acknowledgement.

+

Returns:
the file descriptor, or -1 on error
+
Note:
The file descriptor is returned in case the client wants to communicate with the server without using libbrlapi functions. If it uses them however, it won't have to pass the file descriptor later, since the library keeps a copy of it. But that also means that brlapi_openConnection() may be called several times, but libbrlapi functions will always work with the last call's descriptor
+
Example:
 if (brlapi_openConnection(&settings,&settings)<0) {
+  fprintf(stderr,"couldn't connect to BrlAPI at %s: %s\n",
+   settings.host, brlapi_strerror(&brlapi_error));
+  exit(1);
+ }
+
+
Errors:
BrlAPI might not be on this TCP port, the host name might not be resolvable, the authorization may fail,...
+
Parameters:
+ + + +
desiredSettings this gives the desired connection parameters, as described in brlapi_connectionSettings_t. If NULL, defaults values are used, so that it is generally a good idea to give NULL as default, and only fill a brlapi_connectionSettings_t structure when the user gave parameters to the program for instance;
actualSettings if not NULL, parameters which were actually used are stored here, if the application ever needs them.
+
+
See also:
brlapi_connectionSettings_t brlapi_writePacket() brlapi_readPacketHeader() brlapi_readPacketContent() brlapi_readPacket()
+ +
+

+


Generated on Fri May 15 00:09:17 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/group__brlapi__deprecated.html b/Documents/BrlAPIref/html/group__brlapi__deprecated.html new file mode 100644 index 0000000000000000000000000000000000000000..e624c269a51cc893e718e92735c737a904f601ea --- /dev/null +++ b/Documents/BrlAPIref/html/group__brlapi__deprecated.html @@ -0,0 +1,591 @@ + + +BrlAPI: Deprecated names + + + + + +

Deprecated names

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  brlapi_writeStruct

Defines

#define brlapi_settings_t   brlapi_connectionSettings_t
#define BRLAPI_WRITESTRUCT_INITIALIZER   BRLAPI_WRITEARGUMENTS_INITIALIZER
#define brl_keycode_t   brlapi_keyCode_t
#define brl_type_t   brlapi_packetType_t
#define BRLCOMMANDS   NULL
#define BRL_KEYCODE_MAX   BRLAPI_KEY_MAX
#define brlapi_initializeConnection   brlapi_openConnection
#define brlapi_getTty   brlapi_enterTtyMode
#define brlapi_getTtyPath   brlapi_enterTtyModeWithPath
#define brlapi_leaveTty   brlapi_leaveTtyMode
#define brlapi_unignoreKeyRange   brlapi_acceptKeyRange
#define brlapi_unignoreKeySet   brlapi_acceptKeySet
#define brlapi_getRaw   brlapi_enterRawMode
#define brlapi_leaveRaw   brlapi_leaveRawMode
#define brlapi_suspend   brlapi_suspendDriver
#define brlapi_resume   brlapi_resumeDriver
#define BRLERR_SUCCESS   BRLAPI_ERROR_SUCCESS
#define BRLERR_NOMEM   BRLAPI_ERROR_NOMEM
#define BRLERR_TTYBUSY   BRLAPI_ERROR_TTYBUSY
#define BRLERR_DEVICEBUSY   BRLAPI_ERROR_DEVICEBUSY
#define BRLERR_UNKNOWN_INSTRUCTION   BRLAPI_ERROR_UNKNOWN_INSTRUCTION
#define BRLERR_ILLEGAL_INSTRUCTION   BRLAPI_ERROR_ILLEGAL_INSTRUCTION
#define BRLERR_INVALID_PARAMETER   BRLAPI_ERROR_INVALID_PARAMETER
#define BRLERR_INVALID_PACKET   BRLAPI_ERROR_INVALID_PACKET
#define BRLERR_CONNREFUSED   BRLAPI_ERROR_CONNREFUSED
#define BRLERR_OPNOTSUPP   BRLAPI_ERROR_OPNOTSUPP
#define BRLERR_GAIERR   BRLAPI_ERROR_GAIERR
#define BRLERR_LIBCERR   BRLAPI_ERROR_LIBCERR
#define BRLERR_UNKNOWNTTY   BRLAPI_ERROR_UNKNOWNTTY
#define BRLERR_PROTOCOL_VERSION   BRLAPI_ERROR_PROTOCOL_VERSION
#define BRLERR_EOF   BRLAPI_ERROR_EOF
#define BRLERR_EMPTYKEY   BRLAPI_ERROR_EMPTYKEY
#define BRLERR_DRIVERERROR   BRLAPI_ERROR_DRIVERERROR
+

Detailed Description

+With version 0.5.0, BrlAPI is now provided through including <brlapi.h> and got a big renaming pass. Old names are still available through macros, but they are deprecated since they will get dropped in the next release. This documentation is for you to know the new names.

+For checking that you have completely switched to new names, just define BRLAPI_NO_DEPRECATED: that will disable compatibility macros.


Define Documentation

+ +
+
+ + + + +
#define BRL_KEYCODE_MAX   BRLAPI_KEY_MAX
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define brl_keycode_t   brlapi_keyCode_t
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define brl_type_t   brlapi_packetType_t
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define brlapi_getRaw   brlapi_enterRawMode
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define brlapi_getTty   brlapi_enterTtyMode
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define brlapi_getTtyPath   brlapi_enterTtyModeWithPath
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define brlapi_initializeConnection   brlapi_openConnection
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define brlapi_leaveRaw   brlapi_leaveRawMode
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define brlapi_leaveTty   brlapi_leaveTtyMode
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define brlapi_resume   brlapi_resumeDriver
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define brlapi_settings_t   brlapi_connectionSettings_t
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define brlapi_suspend   brlapi_suspendDriver
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define brlapi_unignoreKeyRange   brlapi_acceptKeyRange
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define brlapi_unignoreKeySet   brlapi_acceptKeySet
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLAPI_WRITESTRUCT_INITIALIZER   BRLAPI_WRITEARGUMENTS_INITIALIZER
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLCOMMANDS   NULL
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLERR_CONNREFUSED   BRLAPI_ERROR_CONNREFUSED
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLERR_DEVICEBUSY   BRLAPI_ERROR_DEVICEBUSY
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLERR_DRIVERERROR   BRLAPI_ERROR_DRIVERERROR
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLERR_EMPTYKEY   BRLAPI_ERROR_EMPTYKEY
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLERR_EOF   BRLAPI_ERROR_EOF
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLERR_GAIERR   BRLAPI_ERROR_GAIERR
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLERR_ILLEGAL_INSTRUCTION   BRLAPI_ERROR_ILLEGAL_INSTRUCTION
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLERR_INVALID_PACKET   BRLAPI_ERROR_INVALID_PACKET
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLERR_INVALID_PARAMETER   BRLAPI_ERROR_INVALID_PARAMETER
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLERR_LIBCERR   BRLAPI_ERROR_LIBCERR
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLERR_NOMEM   BRLAPI_ERROR_NOMEM
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLERR_OPNOTSUPP   BRLAPI_ERROR_OPNOTSUPP
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLERR_PROTOCOL_VERSION   BRLAPI_ERROR_PROTOCOL_VERSION
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLERR_SUCCESS   BRLAPI_ERROR_SUCCESS
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLERR_TTYBUSY   BRLAPI_ERROR_TTYBUSY
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLERR_UNKNOWN_INSTRUCTION   BRLAPI_ERROR_UNKNOWN_INSTRUCTION
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLERR_UNKNOWNTTY   BRLAPI_ERROR_UNKNOWNTTY
+
+
+ +

+ +

+

+


Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/group__brlapi__driverspecific.html b/Documents/BrlAPIref/html/group__brlapi__driverspecific.html new file mode 100644 index 0000000000000000000000000000000000000000..38333301dfb703d0a232e99e8892cb9b9b3e7c0a --- /dev/null +++ b/Documents/BrlAPIref/html/group__brlapi__driverspecific.html @@ -0,0 +1,390 @@ + + +BrlAPI: Driver-Specific modes + + + + + +

Driver-Specific modes

Raw and Suspend Modes mechanism. +More... + + + + + + + + + + + + + + + + + + + + + + + + + + +

Functions

int BRLAPI_STDCALL brlapi_enterRawMode (const char *driver)
int BRLAPI_STDCALL brlapi__enterRawMode (brlapi_handle_t *handle, const char *driver)
int BRLAPI_STDCALL brlapi_leaveRawMode (void)
int BRLAPI_STDCALL brlapi__leaveRawMode (brlapi_handle_t *handle)
ssize_t BRLAPI_STDCALL brlapi_sendRaw (const void *buffer, size_t size)
ssize_t BRLAPI_STDCALL brlapi__sendRaw (brlapi_handle_t *handle, const void *buffer, size_t size)
ssize_t BRLAPI_STDCALL brlapi_recvRaw (void *buffer, size_t size)
ssize_t BRLAPI_STDCALL brlapi__recvRaw (brlapi_handle_t *handle, void *buffer, size_t size)
int BRLAPI_STDCALL brlapi_suspendDriver (const char *driver)
int BRLAPI_STDCALL brlapi__suspendDriver (brlapi_handle_t *handle, const char *driver)
int BRLAPI_STDCALL brlapi_resumeDriver (void)
int BRLAPI_STDCALL brlapi__resumeDriver (brlapi_handle_t *handle)
+

Detailed Description

+If the application wants to directly talk to the braille terminal, it should use Raw Mode. In this special mode, the driver gives the whole control of the terminal to it: brltty doesn't work any more.

+For this, it simply has to call brlapi_enterRawMode(), then brlapi_sendRaw() and brlapi_recvRaw(), and finally give control back thanks to brlapi_leaveRawMode().

+Special care of the terminal should be taken, since one might completely trash the terminal's data, or even lock it! The application should always check for terminal's type thanks to brlapi_getDriverName().

+The client can also make brltty close the driver by using brlapi_suspendDriver(), and resume it again with brlapi_resumeDriver(). This should not be used if possible: raw mode should be sufficient for any use. If not, please ask for features :)


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi__enterRawMode (brlapi_handle_t handle,
const char *  driver 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + +
int BRLAPI_STDCALL brlapi__leaveRawMode (brlapi_handle_t handle  ) 
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ssize_t BRLAPI_STDCALL brlapi__recvRaw (brlapi_handle_t handle,
void *  buffer,
size_t  size 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + +
int BRLAPI_STDCALL brlapi__resumeDriver (brlapi_handle_t handle  ) 
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ssize_t BRLAPI_STDCALL brlapi__sendRaw (brlapi_handle_t handle,
const void *  buffer,
size_t  size 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi__suspendDriver (brlapi_handle_t handle,
const char *  driver 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + +
int BRLAPI_STDCALL brlapi_enterRawMode (const char *  driver  ) 
+
+
+ +

+Switch to Raw mode

Parameters:
+ + +
driver Specifies the name of the driver for which the raw communication will be established.
+
+
Returns:
0 on success, -1 on error
+ +
+

+ +

+
+ + + + + + + + + +
int BRLAPI_STDCALL brlapi_leaveRawMode (void   ) 
+
+
+ +

+Leave Raw mode

Returns:
0 on success, -1 on error
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ssize_t BRLAPI_STDCALL brlapi_recvRaw (void *  buffer,
size_t  size 
)
+
+
+ +

+Get Raw data

+

Parameters:
+ + + +
buffer points on a buffer where the function will store the received data;
size holds the buffer size.
+
+
Returns:
its size, -1 on error or signal interruption
+ +
+

+ +

+
+ + + + + + + + + +
int BRLAPI_STDCALL brlapi_resumeDriver (void   ) 
+
+
+ +

+Resume braille driver

Returns:
-1 on error
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ssize_t BRLAPI_STDCALL brlapi_sendRaw (const void *  buffer,
size_t  size 
)
+
+
+ +

+Send Raw data

+

Parameters:
+ + + +
buffer points on the data;
size holds the packet size.
+
+
Returns:
size on success, -1 on error
+ +
+

+ +

+
+ + + + + + + + + +
int BRLAPI_STDCALL brlapi_suspendDriver (const char *  driver  ) 
+
+
+ +

+Suspend braille driver

Parameters:
+ + +
driver Specifies the name of the driver which will be suspended.
+
+
Returns:
-1 on error
+ +
+

+


Generated on Fri May 15 00:09:17 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/group__brlapi__error.html b/Documents/BrlAPIref/html/group__brlapi__error.html new file mode 100644 index 0000000000000000000000000000000000000000..48471af4063234d2126535f2d6a282a375076256 --- /dev/null +++ b/Documents/BrlAPIref/html/group__brlapi__error.html @@ -0,0 +1,975 @@ + + +BrlAPI: Error handling + + + + + +

Error handling

How to handle errors. +More... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  brlapi_error_t

Defines

#define BRLAPI_ERROR_SUCCESS   0
#define BRLAPI_ERROR_NOMEM   1
#define BRLAPI_ERROR_TTYBUSY   2
#define BRLAPI_ERROR_DEVICEBUSY   3
#define BRLAPI_ERROR_UNKNOWN_INSTRUCTION   4
#define BRLAPI_ERROR_ILLEGAL_INSTRUCTION   5
#define BRLAPI_ERROR_INVALID_PARAMETER   6
#define BRLAPI_ERROR_INVALID_PACKET   7
#define BRLAPI_ERROR_CONNREFUSED   8
#define BRLAPI_ERROR_OPNOTSUPP   9
#define BRLAPI_ERROR_GAIERR   10
#define BRLAPI_ERROR_LIBCERR   11
#define BRLAPI_ERROR_UNKNOWNTTY   12
#define BRLAPI_ERROR_PROTOCOL_VERSION   13
#define BRLAPI_ERROR_EOF   14
#define BRLAPI_ERROR_EMPTYKEY   15
#define BRLAPI_ERROR_DRIVERERROR   16
#define BRLAPI_ERROR_AUTHENTICATION   17
#define brlapi_error   (*brlapi_error_location())
#define brlapi_errno   (brlapi_error.brlerrno)
#define brlapi_libcerrno   (brlapi_error.libcerrno)
#define brlapi_gaierrno   (brlapi_error.gaierrno)
#define brlapi_errfun   (brlapi_error.errfun)

Typedefs

typedef uint32_t brlapi_packetType_t
typedef void(BRLAPI_STDCALL *) brlapi_exceptionHandler_t (int error, brlapi_packetType_t type, const void *packet, size_t size)
typedef void(BRLAPI_STDCALL *) brlapi__exceptionHandler_t (brlapi_handle_t *handle, int error, brlapi_packetType_t type, const void *packet, size_t size)

Functions

void BRLAPI_STDCALL brlapi_perror (const char *s)
brlapi_error_t *BRLAPI_STDCALL brlapi_error_location (void)
const char *BRLAPI_STDCALL brlapi_strerror (const brlapi_error_t *error)
const char *BRLAPI_STDCALL brlapi_getPacketTypeName (brlapi_packetType_t type)
int BRLAPI_STDCALL brlapi_strexception (char *buffer, size_t bufferSize, int error, brlapi_packetType_t type, const void *packet, size_t packetSize)
int BRLAPI_STDCALL brlapi__strexception (brlapi_handle_t *handle, char *buffer, size_t bufferSize, int error, brlapi_packetType_t type, const void *packet, size_t packetSize)
brlapi_exceptionHandler_t
+BRLAPI_STDCALL 
brlapi_setExceptionHandler (brlapi_exceptionHandler_t handler)
brlapi__exceptionHandler_t
+BRLAPI_STDCALL 
brlapi__setExceptionHandler (brlapi_handle_t *handle, brlapi__exceptionHandler_t handler)
void BRLAPI_STDCALL brlapi_defaultExceptionHandler (int error, brlapi_packetType_t type, const void *packet, size_t size)
void BRLAPI_STDCALL brlapi__defaultExceptionHandler (brlapi_handle_t *handle, int error, brlapi_packetType_t type, const void *packet, size_t size)

Variables

const char * brlapi_errlist []
const int brlapi_nerr
brlapi_error_t brlapi_error
int brlapi_errno
int brlapi_libcerrno
int brlapi_gaierrno
const char * brlapi_errfun
+

Detailed Description

+When a function fails, brlapi_errno will hold an error code to explain why it failed. It should always be reported somehow.

+Although most errors are reported that way, some (called exceptions) are reported asynchronously for efficiency reasons, because they always just report a programming error. The affected functions are: brlapi_setFocus, brlapi_write* and brlapi_sendRaw. When they happen, the next call to brlapi_something will close the connection and call the exception handler. If the exception handler returns, the brlapi_something function will return an end-of-file error.

+The default exception handler (brlapi_defaultExceptionHandler()) dumps the guilty packet before abort()ing. It can be replaced by calling brlapi_setExceptionHandler(). For instance, the Java and Python bindings use this for raising a Java or Python exception that may be caught.


Define Documentation

+ +
+
+ + + + +
#define brlapi_errfun   (brlapi_error.errfun)
+
+
+ +

+Cheat about the brlapi_errfun C token +

+

+ +

+
+ + + + +
#define brlapi_errno   (brlapi_error.brlerrno)
+
+
+ +

+Cheat about the brlapi_errno C token +

+

+ +

+
+ + + + +
#define brlapi_error   (*brlapi_error_location())
+
+
+ +

+Cheat about the brlapi_error C token +

+

+ +

+
+ + + + +
#define BRLAPI_ERROR_AUTHENTICATION   17
+
+
+ +

+Authentication failed +

+

+ +

+
+ + + + +
#define BRLAPI_ERROR_CONNREFUSED   8
+
+
+ +

+Connection refused +

+

+ +

+
+ + + + +
#define BRLAPI_ERROR_DEVICEBUSY   3
+
+
+ +

+A connection is already using RAW or suspend mode +

+

+ +

+
+ + + + +
#define BRLAPI_ERROR_DRIVERERROR   16
+
+
+ +

+Packet returned by driver too large +

+

+ +

+
+ + + + +
#define BRLAPI_ERROR_EMPTYKEY   15
+
+
+ +

+Key file empty +

+

+ +

+
+ + + + +
#define BRLAPI_ERROR_EOF   14
+
+
+ +

+Unexpected end of file +

+

+ +

+
+ + + + +
#define BRLAPI_ERROR_GAIERR   10
+
+
+ +

+Getaddrinfo error +

+

+ +

+
+ + + + +
#define BRLAPI_ERROR_ILLEGAL_INSTRUCTION   5
+
+
+ +

+Forbiden in current mode +

+

+ +

+
+ + + + +
#define BRLAPI_ERROR_INVALID_PACKET   7
+
+
+ +

+Invalid size +

+

+ +

+
+ + + + +
#define BRLAPI_ERROR_INVALID_PARAMETER   6
+
+
+ +

+Out of range or have no sense +

+

+ +

+
+ + + + +
#define BRLAPI_ERROR_LIBCERR   11
+
+
+ +

+Libc error +

+

+ +

+
+ + + + +
#define BRLAPI_ERROR_NOMEM   1
+
+
+ +

+Not enough memory +

+

+ +

+
+ + + + +
#define BRLAPI_ERROR_OPNOTSUPP   9
+
+
+ +

+Operation not supported +

+

+ +

+
+ + + + +
#define BRLAPI_ERROR_PROTOCOL_VERSION   13
+
+
+ +

+Bad protocol version +

+

+ +

+
+ + + + +
#define BRLAPI_ERROR_SUCCESS   0
+
+
+ +

+Success +

+

+ +

+
+ + + + +
#define BRLAPI_ERROR_TTYBUSY   2
+
+
+ +

+A connection is already running in this tty +

+

+ +

+
+ + + + +
#define BRLAPI_ERROR_UNKNOWN_INSTRUCTION   4
+
+
+ +

+Not implemented in protocol +

+

+ +

+
+ + + + +
#define BRLAPI_ERROR_UNKNOWNTTY   12
+
+
+ +

+Couldn't find out the tty number +

+

+ +

+
+ + + + +
#define brlapi_gaierrno   (brlapi_error.gaierrno)
+
+
+ +

+Cheat about the brlapi_gaierrno C token +

+

+ +

+
+ + + + +
#define brlapi_libcerrno   (brlapi_error.libcerrno)
+
+
+ +

+Cheat about the brlapi_libcerrno C token +

+

+


Typedef Documentation

+ +
+
+ + + + +
typedef void(BRLAPI_STDCALL *) brlapi__exceptionHandler_t(brlapi_handle_t *handle, int error, brlapi_packetType_t type, const void *packet, size_t size)
+
+
+ +

+ +

+

+ +

+
+ + + + +
typedef void(BRLAPI_STDCALL *) brlapi_exceptionHandler_t(int error, brlapi_packetType_t type, const void *packet, size_t size)
+
+
+ +

+Types for exception handlers

+Types of exception handlers which are to be given to brlapi_setExceptionHandler() and brlapi__setExceptionHandler().

+

Parameters:
+ + + + + + +
handle is the handle corresponding to the guilty connection;
error is a BRLAPI_ERROR_ error code;
type is the type of the guilty packet;
packet points to the content of the guilty packet (might be a little bit truncated);
size gives the guilty packet's size.
+
+ +
+

+ +

+
+ + + + +
typedef uint32_t brlapi_packetType_t
+
+
+ +

+Type for packet type. Only unsigned can cross networks, 32bits +

+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BRLAPI_STDCALL brlapi__defaultExceptionHandler (brlapi_handle_t handle,
int  error,
brlapi_packetType_t  type,
const void *  packet,
size_t  size 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
brlapi__exceptionHandler_t BRLAPI_STDCALL brlapi__setExceptionHandler (brlapi_handle_t handle,
brlapi__exceptionHandler_t  handler 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi__strexception (brlapi_handle_t handle,
char *  buffer,
size_t  bufferSize,
int  error,
brlapi_packetType_t  type,
const void *  packet,
size_t  packetSize 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BRLAPI_STDCALL brlapi_defaultExceptionHandler (int  error,
brlapi_packetType_t  type,
const void *  packet,
size_t  size 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + +
brlapi_error_t* BRLAPI_STDCALL brlapi_error_location (void   ) 
+
+
+ +

+Get per-thread error location

+In multithreaded software, brlapi_error is thread-specific, so api.h cheats about the brlapi_error token and actually calls brlapi_error_location().

+This gets the thread specific location of global variable brlapi_error +

+

+ +

+
+ + + + + + + + + +
const char* BRLAPI_STDCALL brlapi_getPacketTypeName (brlapi_packetType_t  type  ) 
+
+
+ +

+Get plain packet type

+brlapi_getPacketTypeName() returns the plain packet type name corresponding to its argument. +

+

+ +

+
+ + + + + + + + + +
void BRLAPI_STDCALL brlapi_perror (const char *  s  ) 
+
+
+ +

+Print a BrlAPI error message

+brlapi_perror() reads brlapi_error, and acts just like perror(). +

+

+ +

+
+ + + + + + + + + +
brlapi_exceptionHandler_t BRLAPI_STDCALL brlapi_setExceptionHandler (brlapi_exceptionHandler_t  handler  ) 
+
+
+ +

+Set a new exception handler

+brlapi_setExceptionHandler() replaces the previous exception handler with the handler parameter. The previous exception handler is returned to make chaining error handlers possible.

+The default handler just prints the exception and abort()s. +

+

+ +

+
+ + + + + + + + + +
const char* BRLAPI_STDCALL brlapi_strerror (const brlapi_error_t error  ) 
+
+
+ +

+Get plain error message

+brlapi_strerror() returns the plain error message corresponding to its argument. +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi_strexception (char *  buffer,
size_t  bufferSize,
int  error,
brlapi_packetType_t  type,
const void *  packet,
size_t  packetSize 
)
+
+
+ +

+Describes an exception

+brlapi_strexception() puts a text describing the given exception in buffer.

+The beginning of the guilty packet is dumped as a sequence of hex bytes.

+

Returns:
the size of the text describing the exception, following snprintf()'s semantics.
+ +
+

+


Variable Documentation

+ +
+
+ + + + +
const char* brlapi_errfun
+
+
+ +

+Shorthand for brlapi_error.errfun +

+

+ +

+
+ + + + +
const char* brlapi_errlist[]
+
+
+ +

+Error message list

+These are the string constants used by brlapi_perror(). +

+

+ +

+
+ + + + +
int brlapi_errno
+
+
+ +

+Shorthand for brlapi_error.errno +

+

+ +

+ +
+ +

+Global variable brlapi_error

+brlapi_error is a global left-value containing the last error information. Its errno field is not reset to BRLAPI_ERROR_SUCCESS on success.

+This information may be copied in brlapi_error_t variables for later use with the brlapi_strerror function. +

+

+ +

+
+ + + + +
int brlapi_gaierrno
+
+
+ +

+Shorthand for brlapi_error.gaierrno +

+

+ +

+
+ + + + +
int brlapi_libcerrno
+
+
+ +

+Shorthand for brlapi_error.libcerrno +

+

+ +

+
+ + + + +
const int brlapi_nerr
+
+
+ +

+Number of error messages +

+

+


Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/group__brlapi__handles.html b/Documents/BrlAPIref/html/group__brlapi__handles.html new file mode 100644 index 0000000000000000000000000000000000000000..357a8deb651bee9ce58c0b808fbe14b7d277b5c8 --- /dev/null +++ b/Documents/BrlAPIref/html/group__brlapi__handles.html @@ -0,0 +1,71 @@ + + +BrlAPI: BrlAPI handles + + + + + +

BrlAPI handles

+ + + + + + + +

Typedefs

typedef brlapi_handle_t brlapi_handle_t

Functions

size_t BRLAPI_STDCALL brlapi_getHandleSize (void)
+

Detailed Description

+Each function provided by BrlAPI comes in two versions.

+1. A version whose name is prefixed by brlapi_ for clients opening only one simultaneous connection with BrlAPI (most frequen case)

+2. A version whose name is prefixed by brlapi__ for use by clients wishing to open more than one connection to BrlAPI.

+A function called brlapi__foo is used in exactly the same way as its brlapi_foo counterpart, except that it takes an additional argument (the first one), which is a handle letting the client refer to a given connection in a similar manner to what file descriptors do.

+In case you want to check that your code is not erroneously using brlapi_foo functions, define BRLAPI_NO_SINGLE_SESSION before including <brlapi.h>: that will disable the declaration of all single session functions.


Typedef Documentation

+ +
+
+ + + + +
typedef struct brlapi_handle_t brlapi_handle_t
+
+
+ +

+Type for BrlAPI hanles +

+

+


Function Documentation

+ +
+
+ + + + + + + + + +
size_t BRLAPI_STDCALL brlapi_getHandleSize (void   ) 
+
+
+ +

+Returns the size of an object of type brlapi_handle_t in bytes +

+

+


Generated on Fri May 15 00:09:17 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/group__brlapi__info.html b/Documents/BrlAPIref/html/group__brlapi__info.html new file mode 100644 index 0000000000000000000000000000000000000000..6b400a36e9c28dd2f860a89745890775b476cffa --- /dev/null +++ b/Documents/BrlAPIref/html/group__brlapi__info.html @@ -0,0 +1,192 @@ + + +BrlAPI: Getting Terminal information + + + + + +

Getting Terminal information

How to get information about the connected Terminal. +More... + + + + + + + + + + + + + +

Defines

#define BRLAPI_MAXNAMELENGTH   31

Functions

int BRLAPI_STDCALL brlapi_getDriverName (char *buffer, size_t size)
int BRLAPI_STDCALL brlapi__getDriverName (brlapi_handle_t *handle, char *buffer, size_t size)
int BRLAPI_STDCALL brlapi_getDisplaySize (unsigned int *x, unsigned int *y)
int BRLAPI_STDCALL brlapi__getDisplaySize (brlapi_handle_t *handle, unsigned int *x, unsigned int *y)
+

Detailed Description

+Before using Raw mode or key codes, the application should always check the type of the connected terminal, to be sure it is really the one it expects.

+One should also check for display size, so as to adjust further displaying on it.


Define Documentation

+ +
+
+ + + + +
#define BRLAPI_MAXNAMELENGTH   31
+
+
+ +

+Maximum name length for names embeded in BrlAPI packets, not counting any termination \0 character +

+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi__getDisplaySize (brlapi_handle_t handle,
unsigned int *  x,
unsigned int *  y 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi__getDriverName (brlapi_handle_t handle,
char *  buffer,
size_t  size 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi_getDisplaySize (unsigned int *  x,
unsigned int *  y 
)
+
+
+ +

+Return the size of the braille display +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi_getDriverName (char *  buffer,
size_t  size 
)
+
+
+ +

+Return the complete name of the driver used by brltty

+This function fills its argument with the whole name of the braille terminal if available, terminated with a '\0'.

+

Parameters:
+ + + +
buffer is the buffer given by the application;
size is the maximum size for the name buffer.
+
+
Returns:
-1 on error, or a positive value giving the size of the needed buffer, if the supplied one is to small (same as snprintf()).
+ +
+

+


Generated on Fri May 15 00:09:17 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/group__brlapi__keycodes.html b/Documents/BrlAPIref/html/group__brlapi__keycodes.html new file mode 100644 index 0000000000000000000000000000000000000000..297243950e9c44e5f09f1eceec60b97174403955 --- /dev/null +++ b/Documents/BrlAPIref/html/group__brlapi__keycodes.html @@ -0,0 +1,2845 @@ + + +BrlAPI: Types and Defines fore BrlAPI Key Codes + + + + + +

Types and Defines fore BrlAPI Key Codes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define BRLAPI_KEY_CMD_NOOP   (BRLAPI_KEY_CMD(0) + 0)
#define BRLAPI_KEY_CMD_LNUP   (BRLAPI_KEY_CMD(0) + 1)
#define BRLAPI_KEY_CMD_LNDN   (BRLAPI_KEY_CMD(0) + 2)
#define BRLAPI_KEY_CMD_WINUP   (BRLAPI_KEY_CMD(0) + 3)
#define BRLAPI_KEY_CMD_WINDN   (BRLAPI_KEY_CMD(0) + 4)
#define BRLAPI_KEY_CMD_PRDIFLN   (BRLAPI_KEY_CMD(0) + 5)
#define BRLAPI_KEY_CMD_NXDIFLN   (BRLAPI_KEY_CMD(0) + 6)
#define BRLAPI_KEY_CMD_ATTRUP   (BRLAPI_KEY_CMD(0) + 7)
#define BRLAPI_KEY_CMD_ATTRDN   (BRLAPI_KEY_CMD(0) + 8)
#define BRLAPI_KEY_CMD_TOP   (BRLAPI_KEY_CMD(0) + 9)
#define BRLAPI_KEY_CMD_BOT   (BRLAPI_KEY_CMD(0) + 10)
#define BRLAPI_KEY_CMD_TOP_LEFT   (BRLAPI_KEY_CMD(0) + 11)
#define BRLAPI_KEY_CMD_BOT_LEFT   (BRLAPI_KEY_CMD(0) + 12)
#define BRLAPI_KEY_CMD_PRPGRPH   (BRLAPI_KEY_CMD(0) + 13)
#define BRLAPI_KEY_CMD_NXPGRPH   (BRLAPI_KEY_CMD(0) + 14)
#define BRLAPI_KEY_CMD_PRPROMPT   (BRLAPI_KEY_CMD(0) + 15)
#define BRLAPI_KEY_CMD_NXPROMPT   (BRLAPI_KEY_CMD(0) + 16)
#define BRLAPI_KEY_CMD_PRSEARCH   (BRLAPI_KEY_CMD(0) + 17)
#define BRLAPI_KEY_CMD_NXSEARCH   (BRLAPI_KEY_CMD(0) + 18)
#define BRLAPI_KEY_CMD_CHRLT   (BRLAPI_KEY_CMD(0) + 19)
#define BRLAPI_KEY_CMD_CHRRT   (BRLAPI_KEY_CMD(0) + 20)
#define BRLAPI_KEY_CMD_HWINLT   (BRLAPI_KEY_CMD(0) + 21)
#define BRLAPI_KEY_CMD_HWINRT   (BRLAPI_KEY_CMD(0) + 22)
#define BRLAPI_KEY_CMD_FWINLT   (BRLAPI_KEY_CMD(0) + 23)
#define BRLAPI_KEY_CMD_FWINRT   (BRLAPI_KEY_CMD(0) + 24)
#define BRLAPI_KEY_CMD_FWINLTSKIP   (BRLAPI_KEY_CMD(0) + 25)
#define BRLAPI_KEY_CMD_FWINRTSKIP   (BRLAPI_KEY_CMD(0) + 26)
#define BRLAPI_KEY_CMD_LNBEG   (BRLAPI_KEY_CMD(0) + 27)
#define BRLAPI_KEY_CMD_LNEND   (BRLAPI_KEY_CMD(0) + 28)
#define BRLAPI_KEY_CMD_HOME   (BRLAPI_KEY_CMD(0) + 29)
#define BRLAPI_KEY_CMD_BACK   (BRLAPI_KEY_CMD(0) + 30)
#define BRLAPI_KEY_CMD_RETURN   (BRLAPI_KEY_CMD(0) + 31)
#define BRLAPI_KEY_CMD_FREEZE   (BRLAPI_KEY_CMD(0) + 32)
#define BRLAPI_KEY_CMD_DISPMD   (BRLAPI_KEY_CMD(0) + 33)
#define BRLAPI_KEY_CMD_SIXDOTS   (BRLAPI_KEY_CMD(0) + 34)
#define BRLAPI_KEY_CMD_SLIDEWIN   (BRLAPI_KEY_CMD(0) + 35)
#define BRLAPI_KEY_CMD_SKPIDLNS   (BRLAPI_KEY_CMD(0) + 36)
#define BRLAPI_KEY_CMD_SKPBLNKWINS   (BRLAPI_KEY_CMD(0) + 37)
#define BRLAPI_KEY_CMD_CSRVIS   (BRLAPI_KEY_CMD(0) + 38)
#define BRLAPI_KEY_CMD_CSRHIDE   (BRLAPI_KEY_CMD(0) + 39)
#define BRLAPI_KEY_CMD_CSRTRK   (BRLAPI_KEY_CMD(0) + 40)
#define BRLAPI_KEY_CMD_CSRSIZE   (BRLAPI_KEY_CMD(0) + 41)
#define BRLAPI_KEY_CMD_CSRBLINK   (BRLAPI_KEY_CMD(0) + 42)
#define BRLAPI_KEY_CMD_ATTRVIS   (BRLAPI_KEY_CMD(0) + 43)
#define BRLAPI_KEY_CMD_ATTRBLINK   (BRLAPI_KEY_CMD(0) + 44)
#define BRLAPI_KEY_CMD_CAPBLINK   (BRLAPI_KEY_CMD(0) + 45)
#define BRLAPI_KEY_CMD_TUNES   (BRLAPI_KEY_CMD(0) + 46)
#define BRLAPI_KEY_CMD_AUTOREPEAT   (BRLAPI_KEY_CMD(0) + 47)
#define BRLAPI_KEY_CMD_AUTOSPEAK   (BRLAPI_KEY_CMD(0) + 48)
#define BRLAPI_KEY_CMD_HELP   (BRLAPI_KEY_CMD(0) + 49)
#define BRLAPI_KEY_CMD_INFO   (BRLAPI_KEY_CMD(0) + 50)
#define BRLAPI_KEY_CMD_LEARN   (BRLAPI_KEY_CMD(0) + 51)
#define BRLAPI_KEY_CMD_PREFMENU   (BRLAPI_KEY_CMD(0) + 52)
#define BRLAPI_KEY_CMD_PREFSAVE   (BRLAPI_KEY_CMD(0) + 53)
#define BRLAPI_KEY_CMD_PREFLOAD   (BRLAPI_KEY_CMD(0) + 54)
#define BRLAPI_KEY_CMD_MENU_FIRST_ITEM   (BRLAPI_KEY_CMD(0) + 55)
#define BRLAPI_KEY_CMD_MENU_LAST_ITEM   (BRLAPI_KEY_CMD(0) + 56)
#define BRLAPI_KEY_CMD_MENU_PREV_ITEM   (BRLAPI_KEY_CMD(0) + 57)
#define BRLAPI_KEY_CMD_MENU_NEXT_ITEM   (BRLAPI_KEY_CMD(0) + 58)
#define BRLAPI_KEY_CMD_MENU_PREV_SETTING   (BRLAPI_KEY_CMD(0) + 59)
#define BRLAPI_KEY_CMD_MENU_NEXT_SETTING   (BRLAPI_KEY_CMD(0) + 60)
#define BRLAPI_KEY_CMD_MUTE   (BRLAPI_KEY_CMD(0) + 61)
#define BRLAPI_KEY_CMD_SPKHOME   (BRLAPI_KEY_CMD(0) + 62)
#define BRLAPI_KEY_CMD_SAY_LINE   (BRLAPI_KEY_CMD(0) + 63)
#define BRLAPI_KEY_CMD_SAY_ABOVE   (BRLAPI_KEY_CMD(0) + 64)
#define BRLAPI_KEY_CMD_SAY_BELOW   (BRLAPI_KEY_CMD(0) + 65)
#define BRLAPI_KEY_CMD_SAY_SLOWER   (BRLAPI_KEY_CMD(0) + 66)
#define BRLAPI_KEY_CMD_SAY_FASTER   (BRLAPI_KEY_CMD(0) + 67)
#define BRLAPI_KEY_CMD_SAY_SOFTER   (BRLAPI_KEY_CMD(0) + 68)
#define BRLAPI_KEY_CMD_SAY_LOUDER   (BRLAPI_KEY_CMD(0) + 69)
#define BRLAPI_KEY_CMD_SWITCHVT_PREV   (BRLAPI_KEY_CMD(0) + 70)
#define BRLAPI_KEY_CMD_SWITCHVT_NEXT   (BRLAPI_KEY_CMD(0) + 71)
#define BRLAPI_KEY_CMD_CSRJMP_VERT   (BRLAPI_KEY_CMD(0) + 72)
#define BRLAPI_KEY_CMD_PASTE   (BRLAPI_KEY_CMD(0) + 73)
#define BRLAPI_KEY_CMD_RESTARTBRL   (BRLAPI_KEY_CMD(0) + 74)
#define BRLAPI_KEY_CMD_RESTARTSPEECH   (BRLAPI_KEY_CMD(0) + 75)
#define BRLAPI_KEY_CMD_OFFLINE   (BRLAPI_KEY_CMD(0) + 76)
#define BRLAPI_KEY_FLG_TOGGLE_ON   BRLAPI_KEY_FLG(0X0100)
#define BRLAPI_KEY_FLG_TOGGLE_OFF   BRLAPI_KEY_FLG(0X0200)
#define BRLAPI_KEY_FLG_TOGGLE_MASK   (BRLAPI_KEY_FLG_TOGGLE_ON | BRLAPI_KEY_FLG_TOGGLE_OFF)
#define BRLAPI_KEY_FLG_ROUTE   BRLAPI_KEY_FLG(0X0400)
#define BRLAPI_KEY_FLG_REPEAT_INITIAL   BRLAPI_KEY_FLG(0X8000)
#define BRLAPI_KEY_FLG_REPEAT_DELAY   BRLAPI_KEY_FLG(0X4000)
#define BRLAPI_KEY_FLG_REPEAT_MASK   (BRLAPI_KEY_FLG_REPEAT_INITIAL | BRLAPI_KEY_FLG_REPEAT_DELAY)
#define BRLAPI_KEY_CMD_ROUTE   BRLAPI_KEY_CMD(0X01)
#define BRLAPI_KEY_CMD_CUTBEGIN   BRLAPI_KEY_CMD(0X02)
#define BRLAPI_KEY_CMD_CUTAPPEND   BRLAPI_KEY_CMD(0X03)
#define BRLAPI_KEY_CMD_CUTRECT   BRLAPI_KEY_CMD(0X04)
#define BRLAPI_KEY_CMD_CUTLINE   BRLAPI_KEY_CMD(0X05)
#define BRLAPI_KEY_CMD_SWITCHVT   BRLAPI_KEY_CMD(0X06)
#define BRLAPI_KEY_CMD_PRINDENT   BRLAPI_KEY_CMD(0X07)
#define BRLAPI_KEY_CMD_NXINDENT   BRLAPI_KEY_CMD(0X08)
#define BRLAPI_KEY_CMD_DESCCHAR   BRLAPI_KEY_CMD(0X09)
#define BRLAPI_KEY_CMD_SETLEFT   BRLAPI_KEY_CMD(0X0A)
#define BRLAPI_KEY_CMD_SETMARK   BRLAPI_KEY_CMD(0X0B)
#define BRLAPI_KEY_CMD_GOTOMARK   BRLAPI_KEY_CMD(0X0C)
#define BRLAPI_KEY_CMD_GOTOLINE   BRLAPI_KEY_CMD(0X0D)
#define BRLAPI_KEY_FLG_LINE_SCALED   BRLAPI_KEY_FLG(0X0100)
#define BRLAPI_KEY_FLG_LINE_TOLEFT   BRLAPI_KEY_FLG(0X0200)
#define BRLAPI_KEY_CMD_PRDIFCHAR   BRLAPI_KEY_CMD(0X0E)
#define BRLAPI_KEY_CMD_NXDIFCHAR   BRLAPI_KEY_CMD(0X0F)
#define BRLAPI_KEY_CMD_PASSDOTS   BRLAPI_KEY_CMD(0X22)
#define BRLAPI_KEY_FLG_SHIFT   BRLAPI_KEY_FLG(0X01)
#define BRLAPI_KEY_FLG_UPPER   BRLAPI_KEY_FLG(0X02)
#define BRLAPI_KEY_FLG_CONTROL   BRLAPI_KEY_FLG(0X04)
#define BRLAPI_KEY_FLG_META   BRLAPI_KEY_FLG(0X08)
#define BRLAPI_DOT1   0001
#define BRLAPI_DOT2   0002
#define BRLAPI_DOT3   0004
#define BRLAPI_DOT4   0010
#define BRLAPI_DOT5   0020
#define BRLAPI_DOT6   0040
#define BRLAPI_DOT7   0100
#define BRLAPI_DOT8   0200
#define BRLAPI_DOTC   0400
#define BRLAPI_KEY_CMD_PASSAT   BRLAPI_KEY_CMD(0X23)
#define BRLAPI_KEY_CMD_PASSXT   BRLAPI_KEY_CMD(0X24)
#define BRLAPI_KEY_CMD_PASSPS2   BRLAPI_KEY_CMD(0X25)
#define BRLAPI_KEY_FLG_KBD_RELEASE   BRLAPI_KEY_FLG(0X0100)
#define BRLAPI_KEY_FLG_KBD_EMUL0   BRLAPI_KEY_FLG(0X0200)
#define BRLAPI_KEY_FLG_KBD_EMUL1   BRLAPI_KEY_FLG(0X0400)
#define BRLAPI_DOTS(dot1, dot2, dot3, dot4, dot5, dot6, dot7, dot8)
#define BRLAPI_DOT_CHORD   256

Defines

#define BRLAPI_PRIxKEYCODE   PRIx64
#define BRLAPI_PRIuKEYCODE   PRIu64
#define BRLAPI_KEY_MAX   UINT64_C(0XFFFFFFFFFFFFFFFF)
#define BRLAPI_KEY_FLAGS_MASK   UINT64_C(0XFFFFFFFF00000000)
#define BRLAPI_KEY_FLAGS_SHIFT   32
#define BRLAPI_KEY_FLG(v)   ((brlapi_keyCode_t)(v) << BRLAPI_KEY_FLAGS_SHIFT)
#define BRLAPI_KEY_FLG_MOD1   BRLAPI_KEY_FLG(0x00000008)
#define BRLAPI_KEY_FLG_MOD2   BRLAPI_KEY_FLG(0x00000010)
#define BRLAPI_KEY_FLG_MOD3   BRLAPI_KEY_FLG(0x00000020)
#define BRLAPI_KEY_FLG_MOD4   BRLAPI_KEY_FLG(0x00000040)
#define BRLAPI_KEY_FLG_MOD5   BRLAPI_KEY_FLG(0x00000080)
#define BRLAPI_KEY_TYPE_MASK   UINT64_C(0X00000000E0000000)
#define BRLAPI_KEY_TYPE_SHIFT   29
#define BRLAPI_KEY_TYPE_CMD   UINT64_C(0X0000000020000000)
#define BRLAPI_KEY_TYPE_SYM   UINT64_C(0X0000000000000000)
#define BRLAPI_KEY_CODE_MASK   UINT64_C(0X000000001FFFFFFF)
#define BRLAPI_KEY_CODE_SHIFT   0
#define BRLAPI_KEY_CMD_BLK_MASK   UINT64_C(0X1FFF0000)
#define BRLAPI_KEY_CMD_BLK_SHIFT   16
#define BRLAPI_KEY_CMD_ARG_MASK   UINT64_C(0X0000FFFF)
#define BRLAPI_KEY_CMD_ARG_SHIFT   0
#define BRLAPI_KEY_CMD(v)   ((v) << BRLAPI_KEY_CMD_BLK_SHIFT)
#define BRLAPI_KEY_SYM_BACKSPACE   UINT64_C(0X0000FF08)
#define BRLAPI_KEY_SYM_TAB   UINT64_C(0X0000FF09)
#define BRLAPI_KEY_SYM_LINEFEED   UINT64_C(0X0000FF0D)
#define BRLAPI_KEY_SYM_ESCAPE   UINT64_C(0X0000FF1B)
#define BRLAPI_KEY_SYM_HOME   UINT64_C(0X0000FF50)
#define BRLAPI_KEY_SYM_LEFT   UINT64_C(0X0000FF51)
#define BRLAPI_KEY_SYM_UP   UINT64_C(0X0000FF52)
#define BRLAPI_KEY_SYM_RIGHT   UINT64_C(0X0000FF53)
#define BRLAPI_KEY_SYM_DOWN   UINT64_C(0X0000FF54)
#define BRLAPI_KEY_SYM_PAGE_UP   UINT64_C(0X0000FF55)
#define BRLAPI_KEY_SYM_PAGE_DOWN   UINT64_C(0X0000FF56)
#define BRLAPI_KEY_SYM_END   UINT64_C(0X0000FF57)
#define BRLAPI_KEY_SYM_INSERT   UINT64_C(0X0000FF63)
#define BRLAPI_KEY_SYM_FUNCTION   UINT64_C(0X0000FFBE)
#define BRLAPI_KEY_SYM_DELETE   UINT64_C(0X0000FFFF)
#define BRLAPI_KEY_SYM_UNICODE   UINT64_C(0X01000000)

Typedefs

typedef uint64_t brlapi_keyCode_t
+

Detailed Description

+Key codes are unsigned 64 bit integers. This 64-bit space is split into 3 parts:

+

    +
  • bits 63-32 (BRLAPI_KEY_FLAGS_MASK), flags: bits 39-32 are standard X modifiers (shift, control, meta, ...). Other flags are used for some commands, see documentation of BRLAPI_KEY_FLG_* for their respective uses.
  • bits 31-29 (BRLAPI_KEY_TYPE_MASK), key type: either BRLAPI_KEY_TYPE_CMD for braille commands, or BRLAPI_KEY_TYPE_SYM for standard X keysyms.
  • bits 28-0 (BRLAPI_KEY_CODE_MASK), key code: for braille commands, see BRLAPI_KEY_CMD_* ; for standard X keysyms, this is the keysym value, see X11 documentation, a complete list is probably available on your system in /usr/include/X11/keysymdef.h
+

+The third part is itself split into two parts: a command number and a command value. The relative sizes of these parts vary according to the key type.

+For a braille command, bits 28-16 (BRLAPI_KEY_CMD_BLK_MASK) hold the braille command number, while bits 15-0 (BRLAPI_KEY_CMD_ARG_MASK) hold the command value.

+For a X keysym, if it is a unicode keysym (0x1uvwxyz), then the command number part is 0x1000000 and the value part is 0xuvwxyz. Else, the command part is held by bits 28-8 and the value part is held by bits 7-0. This permits to easily handle usual cases like 0x00xy (latin1), 0x01xy (latin2), XK_Backspace (0xff08, backspace), XK_Tab (0xff09, tab), ...

+For instance, if key == 0x0000000020010008,

    +
  • (key & BRLAPI_KEY_TYPE_MASK) == BRLAPI_KEY_TYPE_CMD, so it's a braille command
  • (key & BRLAPI_KEY_CMD_BLK_MASK) == BRLAPI_KEY_CMD_ROUTE, so it's the braille route command.
  • (key & BRLAPI_KEY_CMD_ARG_MASK) == 8, so the highlighted cell is the 9th one (cells are numbered from 0)
  • (key & BRLAPI_KEY_FLAGS_MASK) == 0, so no modifier key was pressed during the command, and no particular flag applies to the command.
+

+if key == 0x000000010000FF09,

    +
  • (key & BRLAPI_KEY_TYPE_MASK) == BRLAPI_KEY_TYPE_SYM, so it's a keysym
  • (key & BRLAPI_KEY_CODE_MASK) == XK_Tab, so it's the tab key. BRLAPI_KEY_SYM_TAB can also be used here, as well as a few other BRLAPI_KEY_SYM_* constants which are provided to avoid having to include X11/keysymdef.h
  • (key & BRLAPI_KEY_FLAGS_MASK) == BRLAPI_KEY_FLG_SHIFT, so the shift modifier was pressed during the command.
+

+in the X11 standard some keysyms are directly unicode, for instance if key == 0x0000000001001EA0,

    +
  • (key & BRLAPI_KEY_TYPE_MASK) == BRLAPI_KEY_TYPE_SYM, so it's a keysym
  • (key & BRLAPI_KEY_SYM_UNICODE) != 0 so it's a unicode keysym, whose value is key & (BRLAPI_KEY_SYM_UNICODE-1). Of course, one can also consider (key & BRLAPI_KEY_CODE_MASK) == XK_Abelowdot
  • (key & BRLAPI_KEY_FLAGS_MASK) == 0, so no modifier key was pressed during the command, and no particular flag applies to the command.
+

+The brlapi_expandKeyCode() function may be used for splitting key codes into these parts.


Define Documentation

+ +
+
+ + + + +
#define BRLAPI_DOT1   0001
+
+
+ +

+upper-left dot of standard braille cell +

+

+ +

+
+ + + + +
#define BRLAPI_DOT2   0002
+
+
+ +

+middle-left dot of standard braille cell +

+

+ +

+
+ + + + +
#define BRLAPI_DOT3   0004
+
+
+ +

+lower-left dot of standard braille cell +

+

+ +

+
+ + + + +
#define BRLAPI_DOT4   0010
+
+
+ +

+upper-right dot of standard braille cell +

+

+ +

+
+ + + + +
#define BRLAPI_DOT5   0020
+
+
+ +

+middle-right dot of standard braille cell +

+

+ +

+
+ + + + +
#define BRLAPI_DOT6   0040
+
+
+ +

+lower-right dot of standard braille cell +

+

+ +

+
+ + + + +
#define BRLAPI_DOT7   0100
+
+
+ +

+lower-left dot of computer braille cell +

+

+ +

+
+ + + + +
#define BRLAPI_DOT8   0200
+
+
+ +

+lower-right dot of computer braille cell +

+

+ +

+
+ + + + +
#define BRLAPI_DOT_CHORD   256
+
+
+ +

+space key +

+

+ +

+
+ + + + +
#define BRLAPI_DOTC   0400
+
+
+ +

+space key pressed +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define BRLAPI_DOTS (dot1,
dot2,
dot3,
dot4,
dot5,
dot6,
dot7,
dot8   ) 
+
+
+ +

+Value:

(\
+  ((dot1)? BRLAPI_DOT1: 0) | \
+  ((dot2)? BRLAPI_DOT2: 0) | \
+  ((dot3)? BRLAPI_DOT3: 0) | \
+  ((dot4)? BRLAPI_DOT4: 0) | \
+  ((dot5)? BRLAPI_DOT5: 0) | \
+  ((dot6)? BRLAPI_DOT6: 0) | \
+  ((dot7)? BRLAPI_DOT7: 0) | \
+  ((dot8)? BRLAPI_DOT8: 0) \
+)
+
Helper macro to easily produce braille patterns +
+

+ +

+
+ + + + + + + + + +
#define BRLAPI_KEY_CMD (  )    ((v) << BRLAPI_KEY_CMD_BLK_SHIFT)
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_ARG_MASK   UINT64_C(0X0000FFFF)
+
+
+ +

+Mask for braille command value +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_ARG_SHIFT   0
+
+
+ +

+Shift for braille command value +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_ATTRBLINK   (BRLAPI_KEY_CMD(0) + 44)
+
+
+ +

+toggle attribute blinking on/off +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_ATTRDN   (BRLAPI_KEY_CMD(0) + 8)
+
+
+ +

+go down to nearest line with different highlighting +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_ATTRUP   (BRLAPI_KEY_CMD(0) + 7)
+
+
+ +

+go up to nearest line with different highlighting +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_ATTRVIS   (BRLAPI_KEY_CMD(0) + 43)
+
+
+ +

+toggle attribute underlining on/off +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_AUTOREPEAT   (BRLAPI_KEY_CMD(0) + 47)
+
+
+ +

+toggle autorepeat on/off +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_AUTOSPEAK   (BRLAPI_KEY_CMD(0) + 48)
+
+
+ +

+toggle autospeak on/off +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_BACK   (BRLAPI_KEY_CMD(0) + 30)
+
+
+ +

+go back (undo unexpected cursor tracking motion) +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_BLK_MASK   UINT64_C(0X1FFF0000)
+
+
+ +

+Mask for braille command type +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_BLK_SHIFT   16
+
+
+ +

+Shift for braille command type +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_BOT   (BRLAPI_KEY_CMD(0) + 10)
+
+
+ +

+go to bottom line +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_BOT_LEFT   (BRLAPI_KEY_CMD(0) + 12)
+
+
+ +

+go to beginning of bottom line +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_CAPBLINK   (BRLAPI_KEY_CMD(0) + 45)
+
+
+ +

+toggle capital letter blinking on/off +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_CHRLT   (BRLAPI_KEY_CMD(0) + 19)
+
+
+ +

+go left one character +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_CHRRT   (BRLAPI_KEY_CMD(0) + 20)
+
+
+ +

+go right one character +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_CSRBLINK   (BRLAPI_KEY_CMD(0) + 42)
+
+
+ +

+toggle cursor blinking on/off +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_CSRHIDE   (BRLAPI_KEY_CMD(0) + 39)
+
+
+ +

+toggle hidden cursor on/off +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_CSRJMP_VERT   (BRLAPI_KEY_CMD(0) + 72)
+
+
+ +

+bring cursor to line (no horizontal motion) +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_CSRSIZE   (BRLAPI_KEY_CMD(0) + 41)
+
+
+ +

+toggle cursor style block/underline +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_CSRTRK   (BRLAPI_KEY_CMD(0) + 40)
+
+
+ +

+toggle cursor tracking on/off +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_CSRVIS   (BRLAPI_KEY_CMD(0) + 38)
+
+
+ +

+toggle cursor visibility on/off +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_CUTAPPEND   BRLAPI_KEY_CMD(0X03)
+
+
+ +

+append to existing cut buffer from character +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_CUTBEGIN   BRLAPI_KEY_CMD(0X02)
+
+
+ +

+start new cut buffer at character +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_CUTLINE   BRLAPI_KEY_CMD(0X05)
+
+
+ +

+linear cut to character +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_CUTRECT   BRLAPI_KEY_CMD(0X04)
+
+
+ +

+rectangular cut to character +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_DESCCHAR   BRLAPI_KEY_CMD(0X09)
+
+
+ +

+describe character +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_DISPMD   (BRLAPI_KEY_CMD(0) + 33)
+
+
+ +

+toggle display mode attributes/text +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_FREEZE   (BRLAPI_KEY_CMD(0) + 32)
+
+
+ +

+toggle screen mode frozen/live +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_FWINLT   (BRLAPI_KEY_CMD(0) + 23)
+
+
+ +

+go left one window +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_FWINLTSKIP   (BRLAPI_KEY_CMD(0) + 25)
+
+
+ +

+go left to nearest non-blank window +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_FWINRT   (BRLAPI_KEY_CMD(0) + 24)
+
+
+ +

+go right one window +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_FWINRTSKIP   (BRLAPI_KEY_CMD(0) + 26)
+
+
+ +

+go right to nearest non-blank window +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_GOTOLINE   BRLAPI_KEY_CMD(0X0D)
+
+
+ +

+go to line +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_GOTOMARK   BRLAPI_KEY_CMD(0X0C)
+
+
+ +

+go to remembered window position +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_HELP   (BRLAPI_KEY_CMD(0) + 49)
+
+
+ +

+enter/leave help display +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_HOME   (BRLAPI_KEY_CMD(0) + 29)
+
+
+ +

+go to cursor +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_HWINLT   (BRLAPI_KEY_CMD(0) + 21)
+
+
+ +

+go left half a window +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_HWINRT   (BRLAPI_KEY_CMD(0) + 22)
+
+
+ +

+go right half a window +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_INFO   (BRLAPI_KEY_CMD(0) + 50)
+
+
+ +

+enter/leave status display +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_LEARN   (BRLAPI_KEY_CMD(0) + 51)
+
+
+ +

+enter/leave command learn mode +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_LNBEG   (BRLAPI_KEY_CMD(0) + 27)
+
+
+ +

+go to beginning of line +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_LNDN   (BRLAPI_KEY_CMD(0) + 2)
+
+
+ +

+go down one line +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_LNEND   (BRLAPI_KEY_CMD(0) + 28)
+
+
+ +

+go to end of line +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_LNUP   (BRLAPI_KEY_CMD(0) + 1)
+
+
+ +

+go up one line +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_MENU_FIRST_ITEM   (BRLAPI_KEY_CMD(0) + 55)
+
+
+ +

+go to first item in menu +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_MENU_LAST_ITEM   (BRLAPI_KEY_CMD(0) + 56)
+
+
+ +

+go to last item in menu +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_MENU_NEXT_ITEM   (BRLAPI_KEY_CMD(0) + 58)
+
+
+ +

+go to next item in menu +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_MENU_NEXT_SETTING   (BRLAPI_KEY_CMD(0) + 60)
+
+
+ +

+change current item in menu to next choice +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_MENU_PREV_ITEM   (BRLAPI_KEY_CMD(0) + 57)
+
+
+ +

+go to previous item in menu +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_MENU_PREV_SETTING   (BRLAPI_KEY_CMD(0) + 59)
+
+
+ +

+change current item in menu to previous choice +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_MUTE   (BRLAPI_KEY_CMD(0) + 61)
+
+
+ +

+stop speaking immediately +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_NOOP   (BRLAPI_KEY_CMD(0) + 0)
+
+
+ +

+do nothing +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_NXDIFCHAR   BRLAPI_KEY_CMD(0X0F)
+
+
+ +

+go down to nearest line with different character +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_NXDIFLN   (BRLAPI_KEY_CMD(0) + 6)
+
+
+ +

+go down to nearest line with different content +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_NXINDENT   BRLAPI_KEY_CMD(0X08)
+
+
+ +

+go down to nearest line without greater indent +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_NXPGRPH   (BRLAPI_KEY_CMD(0) + 14)
+
+
+ +

+go down to first line of next paragraph +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_NXPROMPT   (BRLAPI_KEY_CMD(0) + 16)
+
+
+ +

+go down to next command prompt +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_NXSEARCH   (BRLAPI_KEY_CMD(0) + 18)
+
+
+ +

+search forward for content of cut buffer +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_OFFLINE   (BRLAPI_KEY_CMD(0) + 76)
+
+
+ +

+braille display temporarily unavailable +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_PASSAT   BRLAPI_KEY_CMD(0X23)
+
+
+ +

+input AT (aka set 2) keyboard scan code +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_PASSDOTS   BRLAPI_KEY_CMD(0X22)
+
+
+ +

+input character as braille dots +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_PASSPS2   BRLAPI_KEY_CMD(0X25)
+
+
+ +

+input PS/2 (aka set 3) keyboard scan code +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_PASSXT   BRLAPI_KEY_CMD(0X24)
+
+
+ +

+input XT (aka set 1) keyboard scan code +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_PASTE   (BRLAPI_KEY_CMD(0) + 73)
+
+
+ +

+insert cut buffer at cursor +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_PRDIFCHAR   BRLAPI_KEY_CMD(0X0E)
+
+
+ +

+go up to nearest line with different character +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_PRDIFLN   (BRLAPI_KEY_CMD(0) + 5)
+
+
+ +

+go up to nearest line with different content +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_PREFLOAD   (BRLAPI_KEY_CMD(0) + 54)
+
+
+ +

+restore saved preferences +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_PREFMENU   (BRLAPI_KEY_CMD(0) + 52)
+
+
+ +

+enter/leave preferences menu +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_PREFSAVE   (BRLAPI_KEY_CMD(0) + 53)
+
+
+ +

+save current preferences +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_PRINDENT   BRLAPI_KEY_CMD(0X07)
+
+
+ +

+go up to nearest line without greater indent +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_PRPGRPH   (BRLAPI_KEY_CMD(0) + 13)
+
+
+ +

+go up to last line of previous paragraph +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_PRPROMPT   (BRLAPI_KEY_CMD(0) + 15)
+
+
+ +

+go up to previous command prompt +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_PRSEARCH   (BRLAPI_KEY_CMD(0) + 17)
+
+
+ +

+search backward for content of cut buffer +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_RESTARTBRL   (BRLAPI_KEY_CMD(0) + 74)
+
+
+ +

+reinitialize braille driver +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_RESTARTSPEECH   (BRLAPI_KEY_CMD(0) + 75)
+
+
+ +

+reinitialize speech driver +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_RETURN   (BRLAPI_KEY_CMD(0) + 31)
+
+
+ +

+go back (after cursor tracking) or to cursor (cursor not in window) +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_ROUTE   BRLAPI_KEY_CMD(0X01)
+
+
+ +

+bring cursor to character +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_SAY_ABOVE   (BRLAPI_KEY_CMD(0) + 64)
+
+
+ +

+speak from top of screen through current line +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_SAY_BELOW   (BRLAPI_KEY_CMD(0) + 65)
+
+
+ +

+speak from current line through bottom of screen +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_SAY_FASTER   (BRLAPI_KEY_CMD(0) + 67)
+
+
+ +

+increase speech rate +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_SAY_LINE   (BRLAPI_KEY_CMD(0) + 63)
+
+
+ +

+speak current line +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_SAY_LOUDER   (BRLAPI_KEY_CMD(0) + 69)
+
+
+ +

+increase speech volume +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_SAY_SLOWER   (BRLAPI_KEY_CMD(0) + 66)
+
+
+ +

+decrease speech rate +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_SAY_SOFTER   (BRLAPI_KEY_CMD(0) + 68)
+
+
+ +

+decrease speech volume +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_SETLEFT   BRLAPI_KEY_CMD(0X0A)
+
+
+ +

+position left end of window at character +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_SETMARK   BRLAPI_KEY_CMD(0X0B)
+
+
+ +

+remember current window position +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_SIXDOTS   (BRLAPI_KEY_CMD(0) + 34)
+
+
+ +

+toggle text style 6-dot/8-dot +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_SKPBLNKWINS   (BRLAPI_KEY_CMD(0) + 37)
+
+
+ +

+toggle skipping of blank windows on/off +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_SKPIDLNS   (BRLAPI_KEY_CMD(0) + 36)
+
+
+ +

+toggle skipping of lines with identical content on/off +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_SLIDEWIN   (BRLAPI_KEY_CMD(0) + 35)
+
+
+ +

+toggle sliding window on/off +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_SPKHOME   (BRLAPI_KEY_CMD(0) + 62)
+
+
+ +

+go to current (most recent) speech position +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_SWITCHVT   BRLAPI_KEY_CMD(0X06)
+
+
+ +

+switch to virtual terminal +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_SWITCHVT_NEXT   (BRLAPI_KEY_CMD(0) + 71)
+
+
+ +

+switch to next virtual terminal +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_SWITCHVT_PREV   (BRLAPI_KEY_CMD(0) + 70)
+
+
+ +

+switch to previous virtual terminal +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_TOP   (BRLAPI_KEY_CMD(0) + 9)
+
+
+ +

+go to top line +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_TOP_LEFT   (BRLAPI_KEY_CMD(0) + 11)
+
+
+ +

+go to beginning of top line +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_TUNES   (BRLAPI_KEY_CMD(0) + 46)
+
+
+ +

+toggle alert tunes on/off +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_WINDN   (BRLAPI_KEY_CMD(0) + 4)
+
+
+ +

+go down several lines +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CMD_WINUP   (BRLAPI_KEY_CMD(0) + 3)
+
+
+ +

+go up several lines +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CODE_MASK   UINT64_C(0X000000001FFFFFFF)
+
+
+ +

+Mask for code of brlapi_keyCode_t +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_CODE_SHIFT   0
+
+
+ +

+Shift for code of brlapi_keyCode_t +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLAGS_MASK   UINT64_C(0XFFFFFFFF00000000)
+
+
+ +

+Mask for flags of brlapi_keyCode_t +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLAGS_SHIFT   32
+
+
+ +

+Shift for flags of brlapi_keyCode_t +

+

+ +

+
+ + + + + + + + + +
#define BRLAPI_KEY_FLG (  )    ((brlapi_keyCode_t)(v) << BRLAPI_KEY_FLAGS_SHIFT)
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_CONTROL   BRLAPI_KEY_FLG(0X04)
+
+
+ +

+control key pressed +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_KBD_EMUL0   BRLAPI_KEY_FLG(0X0200)
+
+
+ +

+it is an emulation 0 scan code +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_KBD_EMUL1   BRLAPI_KEY_FLG(0X0400)
+
+
+ +

+it is an emulation 1 scan code +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_KBD_RELEASE   BRLAPI_KEY_FLG(0X0100)
+
+
+ +

+it is a release scan code +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_LINE_SCALED   BRLAPI_KEY_FLG(0X0100)
+
+
+ +

+scale arg=0X00-0XFF to screen height +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_LINE_TOLEFT   BRLAPI_KEY_FLG(0X0200)
+
+
+ +

+go to beginning of line +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_META   BRLAPI_KEY_FLG(0X08)
+
+
+ +

+meta key pressed +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_MOD1   BRLAPI_KEY_FLG(0x00000008)
+
+
+ +

+Mod1 modifier (AKA meta) +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_MOD2   BRLAPI_KEY_FLG(0x00000010)
+
+
+ +

+Mod2 modifier (usually numlock) +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_MOD3   BRLAPI_KEY_FLG(0x00000020)
+
+
+ +

+Mod3 modifier +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_MOD4   BRLAPI_KEY_FLG(0x00000040)
+
+
+ +

+Mod4 modifier +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_MOD5   BRLAPI_KEY_FLG(0x00000080)
+
+
+ +

+Mod5 modifier (usually Alt-Gr) +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_REPEAT_DELAY   BRLAPI_KEY_FLG(0X4000)
+
+
+ +

+wait before repeating +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_REPEAT_INITIAL   BRLAPI_KEY_FLG(0X8000)
+
+
+ +

+execute command on key press +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_REPEAT_MASK   (BRLAPI_KEY_FLG_REPEAT_INITIAL | BRLAPI_KEY_FLG_REPEAT_DELAY)
+
+
+ +

+mask for all repeat flags +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_ROUTE   BRLAPI_KEY_FLG(0X0400)
+
+
+ +

+bring cursor into window after function +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_SHIFT   BRLAPI_KEY_FLG(0X01)
+
+
+ +

+shift key pressed +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_TOGGLE_MASK   (BRLAPI_KEY_FLG_TOGGLE_ON | BRLAPI_KEY_FLG_TOGGLE_OFF)
+
+
+ +

+mask for all toggle flags +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_TOGGLE_OFF   BRLAPI_KEY_FLG(0X0200)
+
+
+ +

+disable feature +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_TOGGLE_ON   BRLAPI_KEY_FLG(0X0100)
+
+
+ +

+enable feature +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_FLG_UPPER   BRLAPI_KEY_FLG(0X02)
+
+
+ +

+convert to uppercase +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_MAX   UINT64_C(0XFFFFFFFFFFFFFFFF)
+
+
+ +

+Brlapi_keyCode_t's biggest value

+As defined in <stdint.h> +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_SYM_BACKSPACE   UINT64_C(0X0000FF08)
+
+
+ +

+Standard X keysyms +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_SYM_DELETE   UINT64_C(0X0000FFFF)
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_SYM_DOWN   UINT64_C(0X0000FF54)
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_SYM_END   UINT64_C(0X0000FF57)
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_SYM_ESCAPE   UINT64_C(0X0000FF1B)
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_SYM_FUNCTION   UINT64_C(0X0000FFBE)
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_SYM_HOME   UINT64_C(0X0000FF50)
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_SYM_INSERT   UINT64_C(0X0000FF63)
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_SYM_LEFT   UINT64_C(0X0000FF51)
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_SYM_LINEFEED   UINT64_C(0X0000FF0D)
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_SYM_PAGE_DOWN   UINT64_C(0X0000FF56)
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_SYM_PAGE_UP   UINT64_C(0X0000FF55)
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_SYM_RIGHT   UINT64_C(0X0000FF53)
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_SYM_TAB   UINT64_C(0X0000FF09)
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_SYM_UNICODE   UINT64_C(0X01000000)
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_SYM_UP   UINT64_C(0X0000FF52)
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_TYPE_CMD   UINT64_C(0X0000000020000000)
+
+
+ +

+Braille command brlapi_keyCode_t +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_TYPE_MASK   UINT64_C(0X00000000E0000000)
+
+
+ +

+Mask for type of brlapi_keyCode_t +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_TYPE_SHIFT   29
+
+
+ +

+Shift for type of brlapi_keyCode_t +

+

+ +

+
+ + + + +
#define BRLAPI_KEY_TYPE_SYM   UINT64_C(0X0000000000000000)
+
+
+ +

+X Keysym brlapi_keyCode_t +

+

+ +

+
+ + + + +
#define BRLAPI_PRIuKEYCODE   PRIu64
+
+
+ +

+Unsigned print format for brlapi_keyCode_t +

+

+ +

+
+ + + + +
#define BRLAPI_PRIxKEYCODE   PRIx64
+
+
+ +

+Hex print format for brlapi_keyCode_t +

+

+


Typedef Documentation

+ +
+
+ + + + +
typedef uint64_t brlapi_keyCode_t
+
+
+ +

+ +

+

+


Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/group__brlapi__keys.html b/Documents/BrlAPIref/html/group__brlapi__keys.html new file mode 100644 index 0000000000000000000000000000000000000000..0b6c9c8420b7006bbea5d29dfa61bbfa3f2c78f0 --- /dev/null +++ b/Documents/BrlAPIref/html/group__brlapi__keys.html @@ -0,0 +1,750 @@ + + +BrlAPI: Reading key presses + + + + + +

Reading key presses

How to read key presses from the braille terminal. +More... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  brlapi_expandedKeyCode_t
struct  brlapi_describedKeyCode_t
struct  brlapi_range_t

Defines

#define brlapi_ignoreAllKeys()   brlapi_ignoreKeys(brlapi_rangeType_all, NULL, 0)
#define brlapi_acceptAllKeys()   brlapi_acceptKeys(brlapi_rangeType_all, NULL, 0)
#define BRLAPI_UC_ROW   0x2800UL
#define BRLAPI_MAXKEYSETSIZE   (BRLAPI_MAXPACKETSIZE / sizeof(brlapi_keyCode_t))
#define brlapi__ignoreAllKeys(handle)   brlapi__ignoreKeys(handle, brlapi_rangeType_all, NULL, 0)
#define brlapi__acceptAllKeys(handle)   brlapi__acceptKeys(handle, brlapi_rangeType_all, NULL, 0)

Enumerations

enum  brlapi_rangeType_t {
+  brlapi_rangeType_all, +brlapi_rangeType_type, +brlapi_rangeType_command, +brlapi_rangeType_key, +
+  brlapi_rangeType_code +
+ }

Functions

int BRLAPI_STDCALL brlapi_expandKeyCode (brlapi_keyCode_t code, brlapi_expandedKeyCode_t *expansion)
int BRLAPI_STDCALL brlapi_describeKeyCode (brlapi_keyCode_t code, brlapi_describedKeyCode_t *description)
int BRLAPI_STDCALL brlapi_readKey (int wait, brlapi_keyCode_t *code)
int BRLAPI_STDCALL brlapi__readKey (brlapi_handle_t *handle, int wait, brlapi_keyCode_t *code)
int BRLAPI_STDCALL brlapi_ignoreKeys (brlapi_rangeType_t type, const brlapi_keyCode_t keys[], unsigned int count)
int BRLAPI_STDCALL brlapi__ignoreKeys (brlapi_handle_t *handle, brlapi_rangeType_t type, const brlapi_keyCode_t keys[], unsigned int count)
int BRLAPI_STDCALL brlapi_acceptKeys (brlapi_rangeType_t type, const brlapi_keyCode_t keys[], unsigned int count)
int BRLAPI_STDCALL brlapi__acceptKeys (brlapi_handle_t *handle, brlapi_rangeType_t type, const brlapi_keyCode_t keys[], unsigned int count)
int BRLAPI_STDCALL brlapi__ignoreAllKeys (brlapi_handle_t *handle)
int BRLAPI_STDCALL brlapi__acceptAllKeys (brlapi_handle_t *handle)
int BRLAPI_STDCALL brlapi_ignoreKeyRanges (brlapi_range_t ranges[], unsigned int count)
int BRLAPI_STDCALL brlapi__ignoreKeyRanges (brlapi_handle_t *handle, brlapi_range_t ranges[], unsigned int count)
int BRLAPI_STDCALL brlapi_acceptKeyRanges (brlapi_range_t ranges[], unsigned int count)
int BRLAPI_STDCALL brlapi__acceptKeyRanges (brlapi_handle_t *handle, brlapi_range_t ranges[], unsigned int count)
+

Detailed Description

+Once brlapi_enterTtyMode() has been called, the application can call brlapi_readKey() to read key presses. Either key codes (see Types and Defines fore BrlAPI Key Codes) or commands will be returned, depending on parameters given to brlapi_enterTtyMode().

+Key presses are buffered, so that calling brlapi_readKey() in non-blocking mode from time to time should suffice.


Define Documentation

+ +
+
+ + + + + + + + + +
#define brlapi__acceptAllKeys (handle   )    brlapi__acceptKeys(handle, brlapi_rangeType_all, NULL, 0)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + +
#define brlapi__ignoreAllKeys (handle   )    brlapi__ignoreKeys(handle, brlapi_rangeType_all, NULL, 0)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + +
int BRLAPI_STDCALL brlapi_acceptAllKeys (void   )    brlapi_acceptKeys(brlapi_rangeType_all, NULL, 0)
+
+
+ +

+Accept all key presses from the braille keyboard

+This function asks the server to give all keys to the application, and not give them to brltty.

+Warning: after calling this function, make sure to call brlapi_ignoreKeys() for ignoring important keys like BRL_CMD_SWITCHVT_PREV/NEXT and such. +

+

+ +

+
+ + + + + + + + + +
int BRLAPI_STDCALL brlapi_ignoreAllKeys (void   )    brlapi_ignoreKeys(brlapi_rangeType_all, NULL, 0)
+
+
+ +

+Ignore all key presses from the braille keyboard

+This function asks the server to give all keys to brltty, rather than returning them to the application via brlapi_readKey(). +

+

+ +

+
+ + + + +
#define BRLAPI_MAXKEYSETSIZE   (BRLAPI_MAXPACKETSIZE / sizeof(brlapi_keyCode_t))
+
+
+ +

+Maximum keyset size, i.e. maximum number of keys allowed in a key set +

+

+ +

+
+ + + + +
#define BRLAPI_UC_ROW   0x2800UL
+
+
+ +

+Unicode braille row +

+

+


Enumeration Type Documentation

+ +
+
+ + + + +
enum brlapi_rangeType_t
+
+
+ +

+types of key ranges

Enumerator:
+ + + + + + +
brlapi_rangeType_all  +all keys, code must be 0
brlapi_rangeType_type  +all keys of a given type
brlapi_rangeType_command  +all keys of a given command block, i.e. matching the key type and command parts
brlapi_rangeType_key  +a given key with any flags
brlapi_rangeType_code  +a given key code
+
+ +
+

+


Function Documentation

+ +
+
+ + + + + + + + + +
int BRLAPI_STDCALL brlapi__acceptAllKeys (brlapi_handle_t handle  ) 
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi__acceptKeyRanges (brlapi_handle_t handle,
brlapi_range_t  ranges[],
unsigned int  count 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi__acceptKeys (brlapi_handle_t handle,
brlapi_rangeType_t  type,
const brlapi_keyCode_t  keys[],
unsigned int  count 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + +
int BRLAPI_STDCALL brlapi__ignoreAllKeys (brlapi_handle_t handle  ) 
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi__ignoreKeyRanges (brlapi_handle_t handle,
brlapi_range_t  ranges[],
unsigned int  count 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi__ignoreKeys (brlapi_handle_t handle,
brlapi_rangeType_t  type,
const brlapi_keyCode_t  keys[],
unsigned int  count 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi__readKey (brlapi_handle_t handle,
int  wait,
brlapi_keyCode_t code 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi_acceptKeyRanges (brlapi_range_t  ranges[],
unsigned int  count 
)
+
+
+ +

+Accept some key presses from the braille keyboard

+This function asks the server to return the provided key ranges (inclusive) to the application, and not give them to brltty.

+

Parameters:
+ + + +
ranges key ranges, which are inclusive
count number of ranges
+
+
Note:
The given codes should be raw keycodes (i.e. some driver name was given to brlapi_enterTtyMode())
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi_acceptKeys (brlapi_rangeType_t  type,
const brlapi_keyCode_t  keys[],
unsigned int  count 
)
+
+
+ +

+Accept some key presses from the braille keyboard

+This function asks the server to give the provided keys to the application, and not give them to brltty.

+

Parameters:
+ + + + +
type type of keys to be ignored
keys array of keys to be ignored
count number of keys
+
+
Note:
The given codes should be brltty commands (NULL or "" was given to brlapi_enterTtyMode())
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi_describeKeyCode (brlapi_keyCode_t  code,
brlapi_describedKeyCode_t description 
)
+
+
+ +

+Describe the components of a key code.

+

Parameters:
+ + + +
code the keycode to be described
description pointer to the structure that receives the description
+
+
Returns:
0 on success, -1 on error
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi_expandKeyCode (brlapi_keyCode_t  code,
brlapi_expandedKeyCode_t expansion 
)
+
+
+ +

+Expand the components of a key code

+

Parameters:
+ + + +
code the key code to be expanded
expansion pointer to the structure that receives the components
+
+
Returns:
0 on success, -1 on error
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi_ignoreKeyRanges (brlapi_range_t  ranges[],
unsigned int  count 
)
+
+
+ +

+Ignore some key presses from the braille keyboard

+This function asks the server to give the provided key ranges to brltty, rather than returning them to the application via brlapi_readKey().

+

Parameters:
+ + + +
ranges key ranges, which are inclusive
count number of ranges
+
+
Note:
The given codes should be raw keycodes (i.e. some driver name was given to brlapi_enterTtyMode())
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi_ignoreKeys (brlapi_rangeType_t  type,
const brlapi_keyCode_t  keys[],
unsigned int  count 
)
+
+
+ +

+Ignore some key presses from the braille keyboard

+This function asks the server to give the provided keys to brltty, rather than returning them to the application via brlapi_readKey().

+

Parameters:
+ + + + +
type type of keys to be ignored
keys array of keys to be ignored
count number of keys
+
+
Note:
The given codes should be brltty commands (NULL or "" was given to brlapi_enterTtyMode())
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi_readKey (int  wait,
brlapi_keyCode_t code 
)
+
+
+ +

+Read a key from the braille keyboard

+This function returns one key press's code.

+If NULL or "" was given to brlapi_enterTtyMode(), a brltty command is returned, as described in <brltty/brldefs.h> . It is hence pretty driver-independent, and should be used by default when no other option is possible.

+By default, all commands but those which restart drivers and switch virtual terminals are returned to the application and not to brltty. If the application doesn't want to see some command events, it should call brlapi_ignoreKeys()

+If some driver name was given to brlapi_enterTtyMode(), a raw keycode is returned, as specified by the terminal driver, usually in <brltty/brldefs-xy> where xy is the driver's code. It generally corresponds to the very code that the terminal tells to the driver. This should only be used by applications which are dedicated to a particular braille terminal. Hence, checking the terminal type thanks to a call to brlapi_getDriverName() before getting tty control is a pretty good idea.

+By default, all the keypresses will be passed to the client, none will go through brltty, so the application will have to handle console switching itself for instance.

+

Parameters:
+ + + +
wait tells whether the call should block until a key is pressed (1) or should only probe key presses (0);
code holds the key code if a key press is indeed read.
+
+
Returns:
-1 on error or signal interrupt and *code is then undefined, 0 if block was 0 and no key was pressed so far, or 1 and *code holds the key code.
+Programming hints:

+If your application is only driven by braille command keypresses, you can just call brlapi_readKey(1, &code) so that it keeps blocking, waiting for keypresses.

+Else, you'll probably want to use the file descriptor returned by brlapi_openConnection() in your "big polling loop". For instance:

+

    +
  • in a select() loop, just add it to the readfds and exceptfds file descriptor sets;
  • in a gtk or atspi application, use g_io_add_watch(fileDescriptor, G_IO_IN|G_IO_ERR|G_IO_HUP, f, data) for adding a callback called f;
  • in an Xt/Xaw/motif-based application, use XtAppAddInput(app_context, fileDescriptor, XtInputReadMask|XtInputExceptMask, f, data)
  • etc.
+

+and then, when you detect inbound trafic on the file descriptor, do something like this:

+while (brlapi_readKey(0, &code) { // process keycode code // ... }

+The while loop is needed for processing all pending key presses, else some of them may be left in libbrlapi's internal key buffer and you wouldn't get them immediately.

+

Note:
If the read is interrupted by a signal, brlapi_readKey() will return -1, brlapi_errno will be BRLAPI_ERROR_LIBCERR and errno will be EINTR.
+ +
+

+


Generated on Fri May 15 00:09:17 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/group__brlapi__protocol.html b/Documents/BrlAPIref/html/group__brlapi__protocol.html new file mode 100644 index 0000000000000000000000000000000000000000..74e8222644790e369a3e91c214f77548529536fe --- /dev/null +++ b/Documents/BrlAPIref/html/group__brlapi__protocol.html @@ -0,0 +1,816 @@ + + +BrlAPI: BrlAPI's protocol + + + + + +

BrlAPI's protocol

Instructions and constants for BrlAPI 's protocol. +More... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  brlapi_header_t
struct  brlapi_versionPacket_t
struct  brlapi_authClientPacket_t
struct  brlapi_authServerPacket_t
struct  brlapi_errorPacket_t
struct  brlapi_getDriverSpecificModePacket_t
struct  brlapi_writeArgumentsPacket_t
union  brlapi_packet_t

Defines

#define BRLAPI_PROTOCOL_VERSION   ((uint32_t) 8)
#define BRLAPI_MAXPACKETSIZE   512
#define BRLAPI_PACKET_VERSION   'v'
#define BRLAPI_PACKET_AUTH   'a'
#define BRLAPI_PACKET_GETDRIVERNAME   'n'
#define BRLAPI_PACKET_GETDISPLAYSIZE   's'
#define BRLAPI_PACKET_ENTERTTYMODE   't'
#define BRLAPI_PACKET_SETFOCUS   'F'
#define BRLAPI_PACKET_LEAVETTYMODE   'L'
#define BRLAPI_PACKET_KEY   'k'
#define BRLAPI_PACKET_IGNOREKEYRANGES   'm'
#define BRLAPI_PACKET_ACCEPTKEYRANGES   'u'
#define BRLAPI_PACKET_WRITE   'w'
#define BRLAPI_PACKET_ENTERRAWMODE   '*'
#define BRLAPI_PACKET_LEAVERAWMODE   '#'
#define BRLAPI_PACKET_PACKET   'p'
#define BRLAPI_PACKET_ACK   'A'
#define BRLAPI_PACKET_ERROR   'e'
#define BRLAPI_PACKET_EXCEPTION   'E'
#define BRLAPI_PACKET_SUSPENDDRIVER   'S'
#define BRLAPI_PACKET_RESUMEDRIVER   'R'
#define BRLAPI_DEVICE_MAGIC   (0xdeadbeefL)
#define BRLAPI_HEADERSIZE   sizeof(brlapi_header_t)
#define BRLAPI_AUTH_NONE   'N'
#define BRLAPI_AUTH_KEY   'K'
#define BRLAPI_AUTH_CRED   'C'
#define BRLAPI_WF_DISPLAYNUMBER   0X01
#define BRLAPI_WF_REGION   0X02
#define BRLAPI_WF_TEXT   0X04
#define BRLAPI_WF_ATTR_AND   0X08
#define BRLAPI_WF_ATTR_OR   0X10
#define BRLAPI_WF_CURSOR   0X20
#define BRLAPI_WF_CHARSET   0X40

Functions

ssize_t brlapi_writePacket (brlapi_fileDescriptor fd, brlapi_packetType_t type, const void *buf, size_t size)
ssize_t brlapi_readPacketHeader (brlapi_fileDescriptor fd, brlapi_packetType_t *packetType)
ssize_t brlapi_readPacketContent (brlapi_fileDescriptor fd, size_t packetSize, void *buf, size_t bufSize)
ssize_t brlapi_readPacket (brlapi_fileDescriptor fd, brlapi_packetType_t *type, void *buf, size_t size)

Variables

pthread_mutex_t brlapi_fd_mutex
+

Detailed Description

+These are defines for the protocol between BrlAPI 's server and clients. Understanding is not needed to use the BrlAPI library, so reading this is not needed unless really wanting to connect to BrlAPI without BrlAPI 's library.

Define Documentation

+ +
+
+ + + + +
#define BRLAPI_AUTH_CRED   'C'
+
+
+ +

+Explicit socket credentials authorization +

+

+ +

+
+ + + + +
#define BRLAPI_AUTH_KEY   'K'
+
+
+ +

+Key authorization +

+

+ +

+
+ + + + +
#define BRLAPI_AUTH_NONE   'N'
+
+
+ +

+No or implicit authorization +

+

+ +

+
+ + + + +
#define BRLAPI_DEVICE_MAGIC   (0xdeadbeefL)
+
+
+ +

+Magic number to give when sending a BRLPACKET_ENTERRAWMODE or BRLPACKET_SUSPEND packet +

+

+ +

+
+ + + + +
#define BRLAPI_HEADERSIZE   sizeof(brlapi_header_t)
+
+
+ +

+Size of packet headers +

+

+ +

+
+ + + + +
#define BRLAPI_MAXPACKETSIZE   512
+
+
+ +

+Maximum packet size for packets exchanged on sockets and with braille terminal +

+

+ +

+
+ + + + +
#define BRLAPI_PACKET_ACCEPTKEYRANGES   'u'
+
+
+ +

+Unmask key ranges +

+

+ +

+
+ + + + +
#define BRLAPI_PACKET_ACK   'A'
+
+
+ +

+Acknowledgement +

+

+ +

+
+ + + + +
#define BRLAPI_PACKET_AUTH   'a'
+
+
+ +

+Authorization +

+

+ +

+
+ + + + +
#define BRLAPI_PACKET_ENTERRAWMODE   '*'
+
+
+ +

+Enter in raw mode +

+

+ +

+
+ + + + +
#define BRLAPI_PACKET_ENTERTTYMODE   't'
+
+
+ +

+Asks for a specified tty +

+

+ +

+
+ + + + +
#define BRLAPI_PACKET_ERROR   'e'
+
+
+ +

+non-fatal error +

+

+ +

+
+ + + + +
#define BRLAPI_PACKET_EXCEPTION   'E'
+
+
+ +

+Exception +

+

+ +

+
+ + + + +
#define BRLAPI_PACKET_GETDISPLAYSIZE   's'
+
+
+ +

+Dimensions of brl display +

+

+ +

+
+ + + + +
#define BRLAPI_PACKET_GETDRIVERNAME   'n'
+
+
+ +

+Ask which driver is used +

+

+ +

+
+ + + + +
#define BRLAPI_PACKET_IGNOREKEYRANGES   'm'
+
+
+ +

+Mask key ranges +

+

+ +

+
+ + + + +
#define BRLAPI_PACKET_KEY   'k'
+
+
+ +

+Braille key +

+

+ +

+
+ + + + +
#define BRLAPI_PACKET_LEAVERAWMODE   '#'
+
+
+ +

+Leave raw mode +

+

+ +

+
+ + + + +
#define BRLAPI_PACKET_LEAVETTYMODE   'L'
+
+
+ +

+Release the tty +

+

+ +

+
+ + + + +
#define BRLAPI_PACKET_PACKET   'p'
+
+
+ +

+Raw packets +

+

+ +

+
+ + + + +
#define BRLAPI_PACKET_RESUMEDRIVER   'R'
+
+
+ +

+Resume driver +

+

+ +

+
+ + + + +
#define BRLAPI_PACKET_SETFOCUS   'F'
+
+
+ +

+Set current tty focus +

+

+ +

+
+ + + + +
#define BRLAPI_PACKET_SUSPENDDRIVER   'S'
+
+
+ +

+Suspend driver +

+

+ +

+
+ + + + +
#define BRLAPI_PACKET_VERSION   'v'
+
+
+ +

+Version +

+

+ +

+
+ + + + +
#define BRLAPI_PACKET_WRITE   'w'
+
+
+ +

+Write +

+

+ +

+
+ + + + +
#define BRLAPI_PROTOCOL_VERSION   ((uint32_t) 8)
+
+
+ +

+ +

+

+ +

+
+ + + + +
#define BRLAPI_WF_ATTR_AND   0X08
+
+
+ +

+And attributes +

+

+ +

+
+ + + + +
#define BRLAPI_WF_ATTR_OR   0X10
+
+
+ +

+Or attributes +

+

+ +

+
+ + + + +
#define BRLAPI_WF_CHARSET   0X40
+
+
+ +

+Charset +

+

+ +

+
+ + + + +
#define BRLAPI_WF_CURSOR   0X20
+
+
+ +

+Cursor position +

+

+ +

+
+ + + + +
#define BRLAPI_WF_DISPLAYNUMBER   0X01
+
+
+ +

+Flags for writing Display number +

+

+ +

+
+ + + + +
#define BRLAPI_WF_REGION   0X02
+
+
+ +

+Region parameter +

+

+ +

+
+ + + + +
#define BRLAPI_WF_TEXT   0X04
+
+
+ +

+Contains some text +

+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ssize_t brlapi_readPacket (brlapi_fileDescriptor  fd,
brlapi_packetType_t type,
void *  buf,
size_t  size 
)
+
+
+ +

+Read a packet from BrlAPI server

+This function is for internal use, but one might use it if one really knows what one is doing...

+type is where the function will store the packet type; it should always be one of the above defined BRLPACKET_* (or else something very nasty must have happened :/).

+The syntax is the same as read()'s.

+

Returns:
packet's size, -2 if EOF occurred, -1 on error or signal interruption.
+If the packet is larger than the supplied buffer, the buffer will be filled with the beginning of the packet, the rest of the packet being discarded. This follows the semantics of the recv system call when the MSG_TRUNC option is given.

+

See also:
brlapi_writePacket()
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ssize_t brlapi_readPacketContent (brlapi_fileDescriptor  fd,
size_t  packetSize,
void *  buf,
size_t  bufSize 
)
+
+
+ +

+Read the content of a packet from BrlAPI server

+This function is for internal use, but one might use it if one really knows what one is doing...

+packetSize is the size announced by brlapi_readPacketHeader()

+bufSize is the size of buf

+

Returns:
packetSize, -2 if EOF occurred, -1 on error.
+If the packet is larger than the supplied buffer, the buffer will be filled with the beginning of the packet, the rest of the packet being discarded. This follows the semantics of the recv system call when the MSG_TRUNC option is given.

+

See also:
brlapi_writePacket() brlapi_readPacketHeader() brlapi_readPacket()
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
ssize_t brlapi_readPacketHeader (brlapi_fileDescriptor  fd,
brlapi_packetType_t packetType 
)
+
+
+ +

+Read the header (type+size) of a packet from BrlAPI server

+This function is for internal use, but one might use it if one really knows what one is doing...

+type is where the function will store the packet type; it should always be one of the above defined BRLPACKET_* (or else something very nasty must have happened :/).

+

Returns:
packet's size, -2 if EOF occurred, -1 on error or signal interruption.
+
See also:
brlapi_writePacket() brlapi_readPacketContent brlapi_readPacket
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ssize_t brlapi_writePacket (brlapi_fileDescriptor  fd,
brlapi_packetType_t  type,
const void *  buf,
size_t  size 
)
+
+
+ +

+Send a packet to BrlAPI server

+This function is for internal use, but one might use it if one really knows what one is doing...

+type should only be one of the above defined BRLPACKET_*.

+The syntax is the same as write()'s.

+

Returns:
0 on success, -1 on failure.
+
See also:
brlapi_readPacketHeader() brlapi_readPacketContent() brlapi_readPacket()
+ +
+

+


Variable Documentation

+ +
+
+ + + + +
pthread_mutex_t brlapi_fd_mutex
+
+
+ +

+Mutex for protecting concurrent fd access

+In order to regulate concurrent access to the library's file descriptor and requests to / answers from BrlAPI server, every function of the library locks this mutex, namely

+

+

+If both these functions and brlapi_writePacket() or brlapi_readPacket() are used in a multithreaded application, this mutex must be locked before calling brlapi_writePacket() or brlapi_readPacket(), and unlocked afterwards. +

+

+


Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/group__brlapi__tty.html b/Documents/BrlAPIref/html/group__brlapi__tty.html new file mode 100644 index 0000000000000000000000000000000000000000..6b3a9e5f07178f95fa5fbf35222de8ae97758ddc --- /dev/null +++ b/Documents/BrlAPIref/html/group__brlapi__tty.html @@ -0,0 +1,330 @@ + + +BrlAPI: Entering & leaving tty mode + + + + + +

Entering & leaving tty mode

How to take control of ttys for direct braille display / read. +More... + + + + + + + + + + + + + + + + + + + + + +

Defines

#define BRLAPI_TTY_DEFAULT   -1

Functions

int BRLAPI_STDCALL brlapi_enterTtyMode (int tty, const char *driver)
int BRLAPI_STDCALL brlapi__enterTtyMode (brlapi_handle_t *handle, int tty, const char *driver)
int BRLAPI_STDCALL brlapi_enterTtyModeWithPath (int *ttys, int count, const char *driver)
int BRLAPI_STDCALL brlapi__enterTtyModeWithPath (brlapi_handle_t *handle, int *ttys, int count, const char *driver)
int BRLAPI_STDCALL brlapi_leaveTtyMode (void)
int BRLAPI_STDCALL brlapi__leaveTtyMode (brlapi_handle_t *handle)
int BRLAPI_STDCALL brlapi_setFocus (int tty)
int BRLAPI_STDCALL brlapi__setFocus (brlapi_handle_t *handle, int tty)
+

Detailed Description

+Before being able to write on the braille display, the application must tell the server which tty it will handle.

+The application must also specify how braille keys will be delivered to it. Two ways are possible: key codes and commands:

+

    +
  • key codes are specific to each braille driver, since the raw key code, as defined in the driver will be given for each key press. Using them leads to building highly driver-dependent applications, which can yet sometimes be useful to mimic existing proprietary applications for instance.
  • commands means that applications will get exactly the same values as brltty. This allows driver-independent clients, which will hopefully be nice to use with a lot of different terminals.
    See also:
    brlapi_readKey()
    +
+

Define Documentation

+ +
+
+ + + + +
#define BRLAPI_TTY_DEFAULT   -1
+
+
+ +

+Select the default tty.

+The library takes the following steps:

    +
  1. Try to get the tty number from the WINDOWID environment variable (for the xterm case).
  2. Try to get the tty number from the CONTROLVT environment variable.
  3. Read /proc/self/stat (on Linux).
+

+

See also:
brlapi_enterTtyMode()
+ +
+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi__enterTtyMode (brlapi_handle_t handle,
int  tty,
const char *  driver 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi__enterTtyModeWithPath (brlapi_handle_t handle,
int *  ttys,
int  count,
const char *  driver 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + +
int BRLAPI_STDCALL brlapi__leaveTtyMode (brlapi_handle_t handle  ) 
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi__setFocus (brlapi_handle_t handle,
int  tty 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi_enterTtyMode (int  tty,
const char *  driver 
)
+
+
+ +

+Ask for some tty, with some key mechanism

+

Parameters:
+ + + +
tty 
    +
  • If tty>=0 then take control of the specified tty.
  • If tty==BRLAPI_TTY_DEFAULT then take control of the default tty.
+
driver tells how the application wants brlapi_readKey() to return key presses. NULL or "" means BRLTTY commands are required, whereas a driver name means that raw key codes returned by this driver are expected.
+
+WINDOWPATH and WINDOWID should be propagated when running remote applications via ssh, for instance, along with BRLAPI_HOST and the authorization key (see SendEnv in ssh_config(5) and AcceptEnv in sshd_config(5))

+

Returns:
the used tty number on success, -1 on error
+
See also:
brlapi_leaveTtyMode() brlapi_readKey()
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi_enterTtyModeWithPath (int *  ttys,
int  count,
const char *  driver 
)
+
+
+ +

+Ask for some tty specified by its path in the tty tree, with some key mechanism

+

Parameters:
+ + + + +
ttys points on the array of ttys representing the tty path to be got. Can be NULL if nttys is 0.
count gives the number of elements in ttys.
driver has the same meaning as in brlapi_enterTtyMode()
+
+Providing nttys == 0 means to get the root.

+

See also:
brlapi_enterTtyMode()
+ +
+

+ +

+
+ + + + + + + + + +
int BRLAPI_STDCALL brlapi_leaveTtyMode (void   ) 
+
+
+ +

+Stop controlling the tty

+

Returns:
0 on success, -1 on error.
+
See also:
brlapi_enterTtyMode()
+ +
+

+ +

+
+ + + + + + + + + +
int BRLAPI_STDCALL brlapi_setFocus (int  tty  ) 
+
+
+ +

+Tell the current tty to brltty

+This is intended for focus tellers, such as brltty, xbrlapi, screen, ... brlapi_enterTtyMode() must have been called beforehand to tell where this focus applies in the tty tree.

+

Returns:
0 on success, -1 on error.
+
See also:
brlapi_enterTtyMode() brlapi_leaveTtyMode()
+ +
+

+


Generated on Fri May 15 00:09:17 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/group__brlapi__version.html b/Documents/BrlAPIref/html/group__brlapi__version.html new file mode 100644 index 0000000000000000000000000000000000000000..328ed5311dc4c0ac2ed3b8924c5759b9662d8763 --- /dev/null +++ b/Documents/BrlAPIref/html/group__brlapi__version.html @@ -0,0 +1,93 @@ + + +BrlAPI: Version of the BrlAPI library + + + + + +

Version of the BrlAPI library

+ + + + + + + + + + +

Defines

#define BRLAPI_RELEASE   "0.5.3"
#define BRLAPI_MAJOR   0
#define BRLAPI_MINOR   5
#define BRLAPI_REVISION   3
+

Define Documentation

+ +
+
+ + + + +
#define BRLAPI_MAJOR   0
+
+
+ +

+Library major version. +

+

+ +

+
+ + + + +
#define BRLAPI_MINOR   5
+
+
+ +

+Library minor version. +

+

+ +

+
+ + + + +
#define BRLAPI_RELEASE   "0.5.3"
+
+
+ +

+Library version. +

+

+ +

+
+ + + + +
#define BRLAPI_REVISION   3
+
+
+ +

+Library revision. +

+

+


Generated on Fri May 15 00:09:17 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/group__brlapi__write.html b/Documents/BrlAPIref/html/group__brlapi__write.html new file mode 100644 index 0000000000000000000000000000000000000000..6bf5ab22130126a15041f48aef2232d7c7fb18d9 --- /dev/null +++ b/Documents/BrlAPIref/html/group__brlapi__write.html @@ -0,0 +1,313 @@ + + +BrlAPI: Writing on the braille display + + + + + +

Writing on the braille display

Write text to the braille display. +More... + + + + + + + + + + + + + + + + + + + + + + + + + + +

Data Structures

struct  brlapi_writeArguments_t

Defines

#define BRLAPI_DISPLAY_DEFAULT   -1
#define BRLAPI_CURSOR_LEAVE   -1
#define BRLAPI_CURSOR_OFF   0
#define BRLAPI_WRITEARGUMENTS_INITIALIZER   { BRLAPI_DISPLAY_DEFAULT, 0, 0, NULL, -1, NULL, NULL, BRLAPI_CURSOR_LEAVE, NULL }

Functions

int BRLAPI_STDCALL brlapi_writeText (int cursor, const char *text)
int BRLAPI_STDCALL brlapi__writeText (brlapi_handle_t *handle, int cursor, const char *text)
int BRLAPI_STDCALL brlapi_writeDots (const unsigned char *dots)
int BRLAPI_STDCALL brlapi__writeDots (brlapi_handle_t *handle, const unsigned char *dots)
int BRLAPI_STDCALL brlapi_write (const brlapi_writeArguments_t *arguments)
int BRLAPI_STDCALL brlapi__write (brlapi_handle_t *handle, const brlapi_writeArguments_t *arguments)
+

Detailed Description

+After brlapi_enterTtyMode() has been called, the application can call one of these functions to write things on the braille display.

+

Note:
Be sure to call brlapi_enterTtyMode() before calling brlapi_write(), or else you'll get an error. This is particularly not always trivial when writing multithreaded applications.

+Dots are coded as described in ISO/TR 11548-1: a dot pattern is coded by a byte in which bit 0 is set iff dot 1 is up, bit 1 is set iff dot 2 is up, ... bit 7 is set iff dot 8 is up. This also corresponds to the low-order byte of the coding of unicode's braille row U+2800.

+Text is translated by the server one to one, by just using a simple wchar_t to pattern table, i.e. no contraction/expansion is performed, because the client would then have no way to know how wide the output would be and thus the quantity of text to feed. If contraction/expansion is desired, the client should perform it itself (e.g. thanks to liblouis or gnome-braille) and send the resulting dot patterns. This is actually exactly the same problem as font rendering on a graphical display: for better control, nowadays all font rasterization is performed on the client side, and mere pixmaps are sent to the X server.

+

Define Documentation

+ +
+
+ + + + +
#define BRLAPI_CURSOR_LEAVE   -1
+
+
+ +

+Do not change the cursor's state or position.

+

See also:
brlapi_writeText() brlapi_write() brlapi_writeArguments_t
+ +
+

+ +

+
+ + + + +
#define BRLAPI_CURSOR_OFF   0
+
+
+ +

+Do not display the cursor.

+

See also:
brlapi_writeText() brlapi_write() brlapi_writeArguments_t
+ +
+

+ +

+
+ + + + +
#define BRLAPI_DISPLAY_DEFAULT   -1
+
+
+ +

+Write to the default display on the braille device.

+

See also:
brlapi_write() brlapi_writeArguments_t
+ +
+

+ +

+
+ + + + +
#define BRLAPI_WRITEARGUMENTS_INITIALIZER   { BRLAPI_DISPLAY_DEFAULT, 0, 0, NULL, -1, NULL, NULL, BRLAPI_CURSOR_LEAVE, NULL }
+
+
+ +

+Allows to initialize a structure of type brlapi_writeArguments_t * with default values: displayNumber = BRLAPI_DISPLAY_DEFAULT; (unspecified) regionBegin = regionSize = 0; (update the whole display, DEPRECATED and will be forbidden in next release. You must always express the region you wish to update) text = andMask = orMask = NULL; (no text, no attribute) cursor = BRLAPI_CURSOR_LEAVE; (don't touch cursor) +

+

+


Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi__write (brlapi_handle_t handle,
const brlapi_writeArguments_t arguments 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi__writeDots (brlapi_handle_t handle,
const unsigned char *  dots 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi__writeText (brlapi_handle_t handle,
int  cursor,
const char *  text 
)
+
+
+ +

+ +

+

+ +

+
+ + + + + + + + + +
int BRLAPI_STDCALL brlapi_write (const brlapi_writeArguments_t arguments  ) 
+
+
+ +

+Update a specific region of the braille display and apply and/or masks

+

Parameters:
+ + +
arguments gives information necessary for the update
+
+regionBegin and regionSize must be filled for specifying which part of the display will be updated, as well as the size (in characters, not bytes) of the text, andMask and orMask members.

+If given, the "text" field holds the text that will be displayed in the region. The char string must hold exactly as many characters as the region fields express. For multibyte text, this is the number of multibyte caracters. Notably, combining and double-width caracters count for 1.

+The actual length of the text in bytes may be specified thanks to textSize. If -1 is given, it will be computed thanks to strlen(), so "text" must then be a NUL-terminated string.

+The "andMask" and "orMask" masks, if present, are then applied on top of the text, one byte per character. This hence permits the superimposing of attributes over the text. For instance, setting an andMask mask full of BRLAPI_DOTS(1,1,1,1,1,1,0,0) will only keep (logical AND) dots 1-6, hence dropping dots 7 and 8. On the contrary, setting an orMask full of BRLAPI_DOT7|BRLAPI_DOT8 will add (logical OR) dots 7 and 8.

+The "charset" field, if present, specifies the charset of the "text" field. If it is "", the current locale's charset (if any) is assumed. Else, the 8-bit charset of the server is assumed.

+A special invocation is with an unmodified initialized structure: this clears the client's whole display, letting the display of other applications on the same tty or of applications "under" the tty appear. See Concurrency management section of the BrlAPI documentation for more details.

+

Returns:
0 on success, -1 on error.
+ +
+

+ +

+
+ + + + + + + + + +
int BRLAPI_STDCALL brlapi_writeDots (const unsigned char *  dots  ) 
+
+
+ +

+Write the given dots array to the display

+

Parameters:
+ + +
dots points on an array of dot information, one per character. Its size must hence be the same as what brlapi_getDisplaySize() returns.
+
+
Returns:
0 on success, -1 on error.
+ +
+

+ +

+
+ + + + + + + + + + + + + + + + + + +
int BRLAPI_STDCALL brlapi_writeText (int  cursor,
const char *  text 
)
+
+
+ +

+Write the given \0-terminated string to the braille display

+If the string is too long, it is cut. If it's too short, spaces are appended. The current LC_CTYPE locale is considered, unless it is left as default "C", in which case the charset is assumed to be 8bits, and the same as the server's.

+

Parameters:
+ + + +
cursor gives the cursor position; if equal to BRLAPI_CURSOR_OFF, no cursor is shown at all; if cursor==BRLAPI_CURSOR_LEAVE, the cursor is left where it is
text points to the string to be displayed.
+
+
Returns:
0 on success, -1 on error.
+ +
+

+


Generated on Fri May 15 00:09:17 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/index.html b/Documents/BrlAPIref/html/index.html new file mode 100644 index 0000000000000000000000000000000000000000..0925650b64f477ddd7b832798f882119dbbafc96 --- /dev/null +++ b/Documents/BrlAPIref/html/index.html @@ -0,0 +1,22 @@ + + +BrlAPI: Main Page + + + + + +

BrlAPI Documentation

+

+

1.0


Generated on Fri May 15 00:09:17 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/modules.html b/Documents/BrlAPIref/html/modules.html new file mode 100644 index 0000000000000000000000000000000000000000..b0989fa5fbbe6caee3a84e67f8be0af9183e3bd8 --- /dev/null +++ b/Documents/BrlAPIref/html/modules.html @@ -0,0 +1,34 @@ + + +BrlAPI: Module Index + + + + + +

BrlAPI Modules

Here is a list of all modules: +
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/structbrlapi__authClientPacket__t.html b/Documents/BrlAPIref/html/structbrlapi__authClientPacket__t.html new file mode 100644 index 0000000000000000000000000000000000000000..0a78cdb0d6d5705138c31626226748cf66b7b010 --- /dev/null +++ b/Documents/BrlAPIref/html/structbrlapi__authClientPacket__t.html @@ -0,0 +1,74 @@ + + +BrlAPI: brlapi_authClientPacket_t Struct Reference + + + + + + +

brlapi_authClientPacket_t Struct Reference
+ +[BrlAPI's protocol] +

#include <brlapi_protocol.h> +

+ + + + + + + +

Data Fields

uint32_t type
unsigned char key
+


Detailed Description

+Packeture of authorization packets +

+


Field Documentation

+ +
+
+ + + + +
uint32_t brlapi_authClientPacket_t::type
+
+
+ +

+ +

+

+ +

+
+ + + + +
unsigned char brlapi_authClientPacket_t::key
+
+
+ +

+ +

+

+


The documentation for this struct was generated from the following file: +
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/structbrlapi__authServerPacket__t.html b/Documents/BrlAPIref/html/structbrlapi__authServerPacket__t.html new file mode 100644 index 0000000000000000000000000000000000000000..7f3a07ec93d70a6749b4d331a454f4721ddec484 --- /dev/null +++ b/Documents/BrlAPIref/html/structbrlapi__authServerPacket__t.html @@ -0,0 +1,54 @@ + + +BrlAPI: brlapi_authServerPacket_t Struct Reference + + + + + + +

brlapi_authServerPacket_t Struct Reference
+ +[BrlAPI's protocol] +

#include <brlapi_protocol.h> +

+ + + + + +

Data Fields

uint32_t type [1]
+


Field Documentation

+ +
+
+ + + + +
uint32_t brlapi_authServerPacket_t::type[1]
+
+
+ +

+ +

+

+


The documentation for this struct was generated from the following file: +
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/structbrlapi__connectionSettings__t.html b/Documents/BrlAPIref/html/structbrlapi__connectionSettings__t.html new file mode 100644 index 0000000000000000000000000000000000000000..10cd2e32d02d649db3811164c87576d0e87e0c0e --- /dev/null +++ b/Documents/BrlAPIref/html/structbrlapi__connectionSettings__t.html @@ -0,0 +1,93 @@ + + +BrlAPI: brlapi_connectionSettings_t Struct Reference + + + + + + +

brlapi_connectionSettings_t Struct Reference
+ +[Connecting to BrlAPI] +

Settings structure for BrlAPI connection. +More... +

+#include <brlapi.h> +

+ + + + + + + +

Data Fields

char * auth
char * host
+


Detailed Description

+This structure holds every parameter needed to connect to BrlAPI: which file the authorization key can be found in and which computer to connect to.

+

Examples:
 brlapi_connectionSettings_t settings;
+
+ settings.auth="/etc/brlapi.key";
+ settings.host="foo";
+
+libbrlapi will read authorization key from file /etc/brlapi.key and connect to the machine called "foo", on the default TCP port.

+

 settings.host="10.1.0.2";
+

+lets directly enter an IP address instead of a machine name.

+

 settings.host=":1";
+

+lets libbrlapi connect to the local computer, on port BRLAPI_SOCKETPORTNUM+1

+

See also:
brlapi_openConnection()
+ +

+


Field Documentation

+ +
+ +
+ +

+For security reasons, libbrlapi has to get authorized to connect to the BrlAPI server. This can be done via a secret key, for instance. This is the path to the file which holds it; it will hence have to be readable by the application.

+Setting NULL defaults it to local installation setup or to the content of the BRLAPI_AUTH environment variable, if it exists. +

+

+ +

+ +
+ +

+This tells where the BrlAPI server resides: it might be listening on another computer, on any TCP port. It should look like "foo:1", which means TCP port number BRLAPI_SOCKETPORTNUM+1 on computer called "foo".

Note:
Please check that resolving this name works before complaining
+Settings NULL defaults it to localhost, using the local installation's default TCP port, or to the content of the BRLAPI_HOST environment variable, if it exists. +
+

+


The documentation for this struct was generated from the following file: +
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/structbrlapi__describedKeyCode__t.html b/Documents/BrlAPIref/html/structbrlapi__describedKeyCode__t.html new file mode 100644 index 0000000000000000000000000000000000000000..fd929173c1a10570629fe452317faab4280f075c --- /dev/null +++ b/Documents/BrlAPIref/html/structbrlapi__describedKeyCode__t.html @@ -0,0 +1,142 @@ + + +BrlAPI: brlapi_describedKeyCode_t Struct Reference + + + + + + +

brlapi_describedKeyCode_t Struct Reference
+ +[Reading key presses] +

#include <brlapi.h> +

+ + + + + + + + + + + + + + + +

Data Fields

const char * type
const char * command
unsigned int argument
unsigned int flags
const char * flag [64-BRLAPI_KEY_FLAGS_SHIFT]
brlapi_expandedKeyCode_t values
+


Detailed Description

+Structure holding the components of a key code as returned by brlapi_describeKeyCode() +

+


Field Documentation

+ +
+
+ + + + +
const char* brlapi_describedKeyCode_t::type
+
+
+ +

+the type name +

+

+ +

+
+ + + + +
const char* brlapi_describedKeyCode_t::command
+
+
+ +

+the command name +

+

+ +

+
+ + + + +
unsigned int brlapi_describedKeyCode_t::argument
+
+
+ +

+the argument value +

+

+ +

+
+ + + + +
unsigned int brlapi_describedKeyCode_t::flags
+
+
+ +

+the flag count +

+

+ +

+
+ + + + +
const char* brlapi_describedKeyCode_t::flag[64-BRLAPI_KEY_FLAGS_SHIFT]
+
+
+ +

+the flag names +

+

+ +

+ +
+ +

+the actual values of the components +

+

+


The documentation for this struct was generated from the following file: +
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/structbrlapi__errorPacket__t.html b/Documents/BrlAPIref/html/structbrlapi__errorPacket__t.html new file mode 100644 index 0000000000000000000000000000000000000000..00ac3b7c175d79234795514347fd96484cd8a717 --- /dev/null +++ b/Documents/BrlAPIref/html/structbrlapi__errorPacket__t.html @@ -0,0 +1,91 @@ + + +BrlAPI: brlapi_errorPacket_t Struct Reference + + + + + + +

brlapi_errorPacket_t Struct Reference
+ +[BrlAPI's protocol] +

#include <brlapi_protocol.h> +

+ + + + + + + + + +

Data Fields

uint32_t code
brlapi_packetType_t type
unsigned char packet
+


Detailed Description

+Structure of error packets +

+


Field Documentation

+ +
+
+ + + + +
uint32_t brlapi_errorPacket_t::code
+
+
+ +

+ +

+

+ +

+ +

+
+ + + + +
unsigned char brlapi_errorPacket_t::packet
+
+
+ +

+ +

+

+


The documentation for this struct was generated from the following file: +
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/structbrlapi__error__t.html b/Documents/BrlAPIref/html/structbrlapi__error__t.html new file mode 100644 index 0000000000000000000000000000000000000000..221b3e3a6322bee7606e3c6a7a0d39b7ce09c644 --- /dev/null +++ b/Documents/BrlAPIref/html/structbrlapi__error__t.html @@ -0,0 +1,108 @@ + + +BrlAPI: brlapi_error_t Struct Reference + + + + + + +

brlapi_error_t Struct Reference
+ +[Error handling] +

#include <brlapi.h> +

+ + + + + + + + + + + +

Data Fields

int brlerrno
int libcerrno
int gaierrno
const char * errfun
+


Detailed Description

+All information that is needed to describe brlapi errors +

+


Field Documentation

+ +
+
+ + + + +
int brlapi_error_t::brlerrno
+
+
+ +

+ +

+

+ +

+
+ + + + +
int brlapi_error_t::libcerrno
+
+
+ +

+ +

+

+ +

+
+ + + + +
int brlapi_error_t::gaierrno
+
+
+ +

+ +

+

+ +

+
+ + + + +
const char* brlapi_error_t::errfun
+
+
+ +

+ +

+

+


The documentation for this struct was generated from the following file: +
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/structbrlapi__expandedKeyCode__t.html b/Documents/BrlAPIref/html/structbrlapi__expandedKeyCode__t.html new file mode 100644 index 0000000000000000000000000000000000000000..27dae460edfd610698ec687bf3998f312998f8a9 --- /dev/null +++ b/Documents/BrlAPIref/html/structbrlapi__expandedKeyCode__t.html @@ -0,0 +1,108 @@ + + +BrlAPI: brlapi_expandedKeyCode_t Struct Reference + + + + + + +

brlapi_expandedKeyCode_t Struct Reference
+ +[Reading key presses] +

#include <brlapi.h> +

+ + + + + + + + + + + +

Data Fields

unsigned int type
unsigned int command
unsigned int argument
unsigned int flags
+


Detailed Description

+Structure holding the components of a key code as returned by brlapi_expandKeyCode() +

+


Field Documentation

+ +
+
+ + + + +
unsigned int brlapi_expandedKeyCode_t::type
+
+
+ +

+the type value +

+

+ +

+
+ + + + +
unsigned int brlapi_expandedKeyCode_t::command
+
+
+ +

+the command value +

+

+ +

+
+ + + + +
unsigned int brlapi_expandedKeyCode_t::argument
+
+
+ +

+the argument value +

+

+ +

+
+ + + + +
unsigned int brlapi_expandedKeyCode_t::flags
+
+
+ +

+the flags value +

+

+


The documentation for this struct was generated from the following file: +
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/structbrlapi__getDriverSpecificModePacket__t.html b/Documents/BrlAPIref/html/structbrlapi__getDriverSpecificModePacket__t.html new file mode 100644 index 0000000000000000000000000000000000000000..3545d473e273a74a9eff12d0ab40861975e62fbb --- /dev/null +++ b/Documents/BrlAPIref/html/structbrlapi__getDriverSpecificModePacket__t.html @@ -0,0 +1,91 @@ + + +BrlAPI: brlapi_getDriverSpecificModePacket_t Struct Reference + + + + + + +

brlapi_getDriverSpecificModePacket_t Struct Reference
+ +[BrlAPI's protocol] +

#include <brlapi_protocol.h> +

+ + + + + + + + + +

Data Fields

uint32_t magic
unsigned char nameLength
char name
+


Detailed Description

+Structure of enterRawMode / suspend packets +

+


Field Documentation

+ +
+ +
+ +

+ +

+

+ +

+ +
+ +

+ +

+

+ +

+ +
+ +

+ +

+

+


The documentation for this struct was generated from the following file: +
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/structbrlapi__header__t.html b/Documents/BrlAPIref/html/structbrlapi__header__t.html new file mode 100644 index 0000000000000000000000000000000000000000..56f452ca8114c644cfdeaa71f4849cb1ad69cc30 --- /dev/null +++ b/Documents/BrlAPIref/html/structbrlapi__header__t.html @@ -0,0 +1,74 @@ + + +BrlAPI: brlapi_header_t Struct Reference + + + + + + +

brlapi_header_t Struct Reference
+ +[BrlAPI's protocol] +

#include <brlapi_protocol.h> +

+ + + + + + + +

Data Fields

uint32_t size
brlapi_packetType_t type
+


Detailed Description

+Structure of packets headers +

+


Field Documentation

+ +
+
+ + + + +
uint32_t brlapi_header_t::size
+
+
+ +

+ +

+

+ +

+ +
+ +

+ +

+

+


The documentation for this struct was generated from the following file: +
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/structbrlapi__range__t.html b/Documents/BrlAPIref/html/structbrlapi__range__t.html new file mode 100644 index 0000000000000000000000000000000000000000..4cc7839baf3703b93fce804332e10e0a3d5d8071 --- /dev/null +++ b/Documents/BrlAPIref/html/structbrlapi__range__t.html @@ -0,0 +1,75 @@ + + +BrlAPI: brlapi_range_t Struct Reference + + + + + + +

brlapi_range_t Struct Reference
+ +[Reading key presses] +

#include <brlapi.h> +

+ + + + + + + +

Data Fields

brlapi_keyCode_t first
brlapi_keyCode_t last
+


Detailed Description

+Type for raw keycode ranges

+Denotes the set of keycodes between first and last (inclusive) +

+


Field Documentation

+ +
+ +
+ +

+first key of the range +

+

+ +

+ +
+ +

+last key of the range +

+

+


The documentation for this struct was generated from the following file: +
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/structbrlapi__versionPacket__t.html b/Documents/BrlAPIref/html/structbrlapi__versionPacket__t.html new file mode 100644 index 0000000000000000000000000000000000000000..f9a79c863d83e11d1e519cdf795bf0e6e3a93904 --- /dev/null +++ b/Documents/BrlAPIref/html/structbrlapi__versionPacket__t.html @@ -0,0 +1,57 @@ + + +BrlAPI: brlapi_versionPacket_t Struct Reference + + + + + + +

brlapi_versionPacket_t Struct Reference
+ +[BrlAPI's protocol] +

#include <brlapi_protocol.h> +

+ + + + + +

Data Fields

uint32_t protocolVersion
+


Detailed Description

+Structure of version packets +

+


Field Documentation

+ +
+ +
+ +

+ +

+

+


The documentation for this struct was generated from the following file: +
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/structbrlapi__writeArgumentsPacket__t.html b/Documents/BrlAPIref/html/structbrlapi__writeArgumentsPacket__t.html new file mode 100644 index 0000000000000000000000000000000000000000..4b6614791a398cf4d46992217c337c25e9d06ad8 --- /dev/null +++ b/Documents/BrlAPIref/html/structbrlapi__writeArgumentsPacket__t.html @@ -0,0 +1,74 @@ + + +BrlAPI: brlapi_writeArgumentsPacket_t Struct Reference + + + + + + +

brlapi_writeArgumentsPacket_t Struct Reference
+ +[BrlAPI's protocol] +

#include <brlapi_protocol.h> +

+ + + + + + + +

Data Fields

uint32_t flags
unsigned char data
+


Detailed Description

+Structure of extended write packets +

+


Field Documentation

+ +
+ +
+ +

+ +

+

+ +

+
+ + + + +
unsigned char brlapi_writeArgumentsPacket_t::data
+
+
+ +

+Flags to tell which fields are present +

+

+


The documentation for this struct was generated from the following file: +
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/structbrlapi__writeArguments__t.html b/Documents/BrlAPIref/html/structbrlapi__writeArguments__t.html new file mode 100644 index 0000000000000000000000000000000000000000..35a63b4d390d9895dd0de34954a5478692c7fbc9 --- /dev/null +++ b/Documents/BrlAPIref/html/structbrlapi__writeArguments__t.html @@ -0,0 +1,193 @@ + + +BrlAPI: brlapi_writeArguments_t Struct Reference + + + + + + +

brlapi_writeArguments_t Struct Reference
+ +[Writing on the braille display] +

#include <brlapi.h> +

+ + + + + + + + + + + + + + + + + + + + + +

Data Fields

int displayNumber
unsigned int regionBegin
unsigned int regionSize
char * text
int textSize
unsigned char * andMask
unsigned char * orMask
int cursor
char * charset
+


Detailed Description

+Structure containing arguments to be given to brlapi_write() +

+


Field Documentation

+ +
+ +
+ +

+Display number BRLAPI_DISPLAY_DEFAULT == unspecified +

+

+ +

+
+ + + + +
unsigned int brlapi_writeArguments_t::regionBegin
+
+
+ +

+Region of display to update, 1st character of display is 1 +

+

+ +

+
+ + + + +
unsigned int brlapi_writeArguments_t::regionSize
+
+
+ +

+Number of characters held in text, andMask and orMask. +

+

+ +

+ +
+ +

+Text to display, must hold as many characters as the region fields expresses. +

+

+ +

+ +
+ +

+Size of text in bytes. If -1, strlen() is used for computing it. +

+

+ +

+
+ + + + +
unsigned char* brlapi_writeArguments_t::andMask
+
+
+ +

+And attributes; applied first +

+

+ +

+
+ + + + +
unsigned char* brlapi_writeArguments_t::orMask
+
+
+ +

+Or attributes; applied after ANDing +

+

+ +

+ +
+ +

+BRLAPI_CURSOR_LEAVE == don't touch, BRLAPI_CURSOR_OFF == turn off, 1 = 1st char of display, ... +

+

+ +

+ +
+ +

+Text charset. NULL means it is assumed to be 8bits, and the same as the server's. "" means current locale's charset. If no locale was selected, defaults to NULL's meaning. +

+

+


The documentation for this struct was generated from the following file: +
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/structbrlapi__writeStruct.html b/Documents/BrlAPIref/html/structbrlapi__writeStruct.html new file mode 100644 index 0000000000000000000000000000000000000000..9185ef0997a1d46004e4a526530bf5faffd640e1 --- /dev/null +++ b/Documents/BrlAPIref/html/structbrlapi__writeStruct.html @@ -0,0 +1,193 @@ + + +BrlAPI: brlapi_writeStruct Struct Reference + + + + + + +

brlapi_writeStruct Struct Reference
+ +[Deprecated names] +

#include <brlapi.h> +

+ + + + + + + + + + + + + + + + + + + + + +

Data Fields

int displayNumber
unsigned int regionBegin
unsigned int regionSize
char * text
int textSize
unsigned char * attrAnd
unsigned char * attrOr
int cursor
char * charset
+


Detailed Description

+brlapi_writeStruct, replaced by brlapi_writeArguments_t +

+


Field Documentation

+ +
+ +
+ +

+ +

+

+ +

+
+ + + + +
unsigned int brlapi_writeStruct::regionBegin
+
+
+ +

+ +

+

+ +

+
+ + + + +
unsigned int brlapi_writeStruct::regionSize
+
+
+ +

+ +

+

+ +

+
+ + + + +
char* brlapi_writeStruct::text
+
+
+ +

+ +

+

+ +

+ +
+ +

+ +

+

+ +

+
+ + + + +
unsigned char* brlapi_writeStruct::attrAnd
+
+
+ +

+ +

+

+ +

+
+ + + + +
unsigned char* brlapi_writeStruct::attrOr
+
+
+ +

+ +

+

+ +

+ +
+ +

+ +

+

+ +

+
+ + + + +
char* brlapi_writeStruct::charset
+
+
+ +

+ +

+

+


The documentation for this struct was generated from the following file: +
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/html/tab_b.gif b/Documents/BrlAPIref/html/tab_b.gif new file mode 100644 index 0000000000000000000000000000000000000000..0d623483ffdf5f9f96900108042a7ab0643fe2a3 Binary files /dev/null and b/Documents/BrlAPIref/html/tab_b.gif differ diff --git a/Documents/BrlAPIref/html/tab_l.gif b/Documents/BrlAPIref/html/tab_l.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b1e6337c9299a700401a2a78a2c6ffced475216 Binary files /dev/null and b/Documents/BrlAPIref/html/tab_l.gif differ diff --git a/Documents/BrlAPIref/html/tab_r.gif b/Documents/BrlAPIref/html/tab_r.gif new file mode 100644 index 0000000000000000000000000000000000000000..ce9dd9f533cb5486d6941844f442b59d4a9e9175 Binary files /dev/null and b/Documents/BrlAPIref/html/tab_r.gif differ diff --git a/Documents/BrlAPIref/html/tabs.css b/Documents/BrlAPIref/html/tabs.css new file mode 100644 index 0000000000000000000000000000000000000000..a61552a67ad217c0d67da13e4d3f24c9d2c87119 --- /dev/null +++ b/Documents/BrlAPIref/html/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI#current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI#current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/Documents/BrlAPIref/html/unionbrlapi__packet__t.html b/Documents/BrlAPIref/html/unionbrlapi__packet__t.html new file mode 100644 index 0000000000000000000000000000000000000000..0dea00e5466965af6c4524a9f8e9c6382c546f9d --- /dev/null +++ b/Documents/BrlAPIref/html/unionbrlapi__packet__t.html @@ -0,0 +1,176 @@ + + +BrlAPI: brlapi_packet_t Union Reference + + + + + + +

brlapi_packet_t Union Reference
+ +[BrlAPI's protocol] +

#include <brlapi_protocol.h> +

+ + + + + + + + + + + + + + + + + + + +

Data Fields

unsigned char data [BRLAPI_MAXPACKETSIZE]
brlapi_versionPacket_t version
brlapi_authClientPacket_t authClient
brlapi_authServerPacket_t authServer
brlapi_errorPacket_t error
brlapi_getDriverSpecificModePacket_t getDriverSpecificMode
brlapi_writeArgumentsPacket_t writeArguments
uint32_t uint32
+


Detailed Description

+Type for packets. Should be used instead of a mere char[], since it has correct alignment requirements. +

+


Field Documentation

+ +
+
+ + + + +
unsigned char brlapi_packet_t::data[BRLAPI_MAXPACKETSIZE]
+
+
+ +

+ +

+

+ +

+ +

+ +

+ +

+ +
+ +

+ +

+

+ +

+ +

+ +

+
+ + + + +
uint32_t brlapi_packet_t::uint32
+
+
+ +

+ +

+

+


The documentation for this union was generated from the following file: +
Generated on Fri May 15 00:09:18 2009 for BrlAPI by  + +doxygen 1.5.1
+ + diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_AUTHKEYFILE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_AUTHKEYFILE.3 new file mode 100644 index 0000000000000000000000000000000000000000..246c55313f72699bc6fdccdfe90257e8c5514855 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_AUTHKEYFILE.3 @@ -0,0 +1 @@ +.so man3/brlapi_connection.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_AUTH_CRED.3 b/Documents/BrlAPIref/man/man3/BRLAPI_AUTH_CRED.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_AUTH_CRED.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_AUTH_KEY.3 b/Documents/BrlAPIref/man/man3/BRLAPI_AUTH_KEY.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_AUTH_KEY.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_AUTH_NONE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_AUTH_NONE.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_AUTH_NONE.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_CURSOR_LEAVE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_CURSOR_LEAVE.3 new file mode 100644 index 0000000000000000000000000000000000000000..492f429a9f41bc20a1f1ce2b1ec6b9e861439ba1 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_CURSOR_LEAVE.3 @@ -0,0 +1 @@ +.so man3/brlapi_write.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_CURSOR_OFF.3 b/Documents/BrlAPIref/man/man3/BRLAPI_CURSOR_OFF.3 new file mode 100644 index 0000000000000000000000000000000000000000..492f429a9f41bc20a1f1ce2b1ec6b9e861439ba1 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_CURSOR_OFF.3 @@ -0,0 +1 @@ +.so man3/brlapi_write.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_DEFAUTH.3 b/Documents/BrlAPIref/man/man3/BRLAPI_DEFAUTH.3 new file mode 100644 index 0000000000000000000000000000000000000000..246c55313f72699bc6fdccdfe90257e8c5514855 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_DEFAUTH.3 @@ -0,0 +1 @@ +.so man3/brlapi_connection.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_DEVICE_MAGIC.3 b/Documents/BrlAPIref/man/man3/BRLAPI_DEVICE_MAGIC.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_DEVICE_MAGIC.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_DISPLAY_DEFAULT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_DISPLAY_DEFAULT.3 new file mode 100644 index 0000000000000000000000000000000000000000..492f429a9f41bc20a1f1ce2b1ec6b9e861439ba1 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_DISPLAY_DEFAULT.3 @@ -0,0 +1 @@ +.so man3/brlapi_write.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_DOT1.3 b/Documents/BrlAPIref/man/man3/BRLAPI_DOT1.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_DOT1.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_DOT2.3 b/Documents/BrlAPIref/man/man3/BRLAPI_DOT2.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_DOT2.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_DOT3.3 b/Documents/BrlAPIref/man/man3/BRLAPI_DOT3.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_DOT3.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_DOT4.3 b/Documents/BrlAPIref/man/man3/BRLAPI_DOT4.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_DOT4.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_DOT5.3 b/Documents/BrlAPIref/man/man3/BRLAPI_DOT5.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_DOT5.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_DOT6.3 b/Documents/BrlAPIref/man/man3/BRLAPI_DOT6.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_DOT6.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_DOT7.3 b/Documents/BrlAPIref/man/man3/BRLAPI_DOT7.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_DOT7.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_DOT8.3 b/Documents/BrlAPIref/man/man3/BRLAPI_DOT8.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_DOT8.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_DOTC.3 b/Documents/BrlAPIref/man/man3/BRLAPI_DOTC.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_DOTC.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_DOTS.3 b/Documents/BrlAPIref/man/man3/BRLAPI_DOTS.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_DOTS.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_DOT_CHORD.3 b/Documents/BrlAPIref/man/man3/BRLAPI_DOT_CHORD.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_DOT_CHORD.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_AUTHENTICATION.3 b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_AUTHENTICATION.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_AUTHENTICATION.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_CONNREFUSED.3 b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_CONNREFUSED.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_CONNREFUSED.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_DEVICEBUSY.3 b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_DEVICEBUSY.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_DEVICEBUSY.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_DRIVERERROR.3 b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_DRIVERERROR.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_DRIVERERROR.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_EMPTYKEY.3 b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_EMPTYKEY.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_EMPTYKEY.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_EOF.3 b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_EOF.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_EOF.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_GAIERR.3 b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_GAIERR.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_GAIERR.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_ILLEGAL_INSTRUCTION.3 b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_ILLEGAL_INSTRUCTION.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_ILLEGAL_INSTRUCTION.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_INVALID_PACKET.3 b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_INVALID_PACKET.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_INVALID_PACKET.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_INVALID_PARAMETER.3 b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_INVALID_PARAMETER.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_INVALID_PARAMETER.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_LIBCERR.3 b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_LIBCERR.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_LIBCERR.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_NOMEM.3 b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_NOMEM.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_NOMEM.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_OPNOTSUPP.3 b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_OPNOTSUPP.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_OPNOTSUPP.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_PROTOCOL_VERSION.3 b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_PROTOCOL_VERSION.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_PROTOCOL_VERSION.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_SUCCESS.3 b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_SUCCESS.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_SUCCESS.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_TTYBUSY.3 b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_TTYBUSY.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_TTYBUSY.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_UNKNOWNTTY.3 b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_UNKNOWNTTY.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_UNKNOWNTTY.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_UNKNOWN_INSTRUCTION.3 b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_UNKNOWN_INSTRUCTION.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_ERROR_UNKNOWN_INSTRUCTION.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_ETCDIR.3 b/Documents/BrlAPIref/man/man3/BRLAPI_ETCDIR.3 new file mode 100644 index 0000000000000000000000000000000000000000..246c55313f72699bc6fdccdfe90257e8c5514855 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_ETCDIR.3 @@ -0,0 +1 @@ +.so man3/brlapi_connection.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_HEADERSIZE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_HEADERSIZE.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_HEADERSIZE.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ARG_MASK.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ARG_MASK.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ARG_MASK.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ARG_SHIFT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ARG_SHIFT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ARG_SHIFT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ATTRBLINK.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ATTRBLINK.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ATTRBLINK.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ATTRDN.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ATTRDN.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ATTRDN.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ATTRUP.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ATTRUP.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ATTRUP.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ATTRVIS.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ATTRVIS.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ATTRVIS.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_AUTOREPEAT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_AUTOREPEAT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_AUTOREPEAT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_AUTOSPEAK.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_AUTOSPEAK.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_AUTOSPEAK.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_BACK.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_BACK.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_BACK.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_BLK_MASK.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_BLK_MASK.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_BLK_MASK.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_BLK_SHIFT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_BLK_SHIFT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_BLK_SHIFT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_BOT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_BOT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_BOT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_BOT_LEFT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_BOT_LEFT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_BOT_LEFT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CAPBLINK.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CAPBLINK.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CAPBLINK.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CHRLT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CHRLT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CHRLT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CHRRT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CHRRT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CHRRT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CSRBLINK.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CSRBLINK.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CSRBLINK.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CSRHIDE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CSRHIDE.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CSRHIDE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CSRJMP_VERT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CSRJMP_VERT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CSRJMP_VERT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CSRSIZE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CSRSIZE.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CSRSIZE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CSRTRK.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CSRTRK.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CSRTRK.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CSRVIS.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CSRVIS.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CSRVIS.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CUTAPPEND.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CUTAPPEND.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CUTAPPEND.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CUTBEGIN.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CUTBEGIN.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CUTBEGIN.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CUTLINE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CUTLINE.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CUTLINE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CUTRECT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CUTRECT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_CUTRECT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_DESCCHAR.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_DESCCHAR.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_DESCCHAR.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_DISPMD.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_DISPMD.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_DISPMD.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_FREEZE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_FREEZE.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_FREEZE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_FWINLT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_FWINLT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_FWINLT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_FWINLTSKIP.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_FWINLTSKIP.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_FWINLTSKIP.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_FWINRT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_FWINRT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_FWINRT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_FWINRTSKIP.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_FWINRTSKIP.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_FWINRTSKIP.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_GOTOLINE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_GOTOLINE.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_GOTOLINE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_GOTOMARK.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_GOTOMARK.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_GOTOMARK.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_HELP.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_HELP.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_HELP.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_HOME.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_HOME.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_HOME.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_HWINLT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_HWINLT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_HWINLT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_HWINRT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_HWINRT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_HWINRT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_INFO.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_INFO.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_INFO.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_LEARN.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_LEARN.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_LEARN.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_LNBEG.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_LNBEG.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_LNBEG.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_LNDN.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_LNDN.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_LNDN.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_LNEND.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_LNEND.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_LNEND.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_LNUP.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_LNUP.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_LNUP.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MENU_FIRST_ITEM.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MENU_FIRST_ITEM.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MENU_FIRST_ITEM.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MENU_LAST_ITEM.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MENU_LAST_ITEM.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MENU_LAST_ITEM.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MENU_NEXT_ITEM.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MENU_NEXT_ITEM.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MENU_NEXT_ITEM.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MENU_NEXT_SETTING.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MENU_NEXT_SETTING.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MENU_NEXT_SETTING.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MENU_PREV_ITEM.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MENU_PREV_ITEM.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MENU_PREV_ITEM.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MENU_PREV_SETTING.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MENU_PREV_SETTING.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MENU_PREV_SETTING.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MUTE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MUTE.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_MUTE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NOOP.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NOOP.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NOOP.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NXDIFCHAR.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NXDIFCHAR.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NXDIFCHAR.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NXDIFLN.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NXDIFLN.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NXDIFLN.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NXINDENT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NXINDENT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NXINDENT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NXPGRPH.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NXPGRPH.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NXPGRPH.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NXPROMPT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NXPROMPT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NXPROMPT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NXSEARCH.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NXSEARCH.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_NXSEARCH.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_OFFLINE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_OFFLINE.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_OFFLINE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PASSAT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PASSAT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PASSAT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PASSDOTS.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PASSDOTS.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PASSDOTS.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PASSPS2.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PASSPS2.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PASSPS2.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PASSXT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PASSXT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PASSXT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PASTE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PASTE.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PASTE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PRDIFCHAR.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PRDIFCHAR.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PRDIFCHAR.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PRDIFLN.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PRDIFLN.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PRDIFLN.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PREFLOAD.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PREFLOAD.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PREFLOAD.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PREFMENU.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PREFMENU.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PREFMENU.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PREFSAVE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PREFSAVE.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PREFSAVE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PRINDENT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PRINDENT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PRINDENT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PRPGRPH.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PRPGRPH.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PRPGRPH.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PRPROMPT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PRPROMPT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PRPROMPT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PRSEARCH.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PRSEARCH.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_PRSEARCH.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_RESTARTBRL.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_RESTARTBRL.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_RESTARTBRL.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_RESTARTSPEECH.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_RESTARTSPEECH.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_RESTARTSPEECH.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_RETURN.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_RETURN.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_RETURN.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ROUTE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ROUTE.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_ROUTE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_ABOVE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_ABOVE.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_ABOVE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_BELOW.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_BELOW.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_BELOW.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_FASTER.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_FASTER.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_FASTER.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_LINE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_LINE.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_LINE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_LOUDER.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_LOUDER.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_LOUDER.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_SLOWER.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_SLOWER.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_SLOWER.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_SOFTER.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_SOFTER.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SAY_SOFTER.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SETLEFT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SETLEFT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SETLEFT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SETMARK.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SETMARK.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SETMARK.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SIXDOTS.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SIXDOTS.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SIXDOTS.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SKPBLNKWINS.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SKPBLNKWINS.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SKPBLNKWINS.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SKPIDLNS.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SKPIDLNS.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SKPIDLNS.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SLIDEWIN.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SLIDEWIN.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SLIDEWIN.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SPKHOME.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SPKHOME.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SPKHOME.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SWITCHVT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SWITCHVT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SWITCHVT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SWITCHVT_NEXT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SWITCHVT_NEXT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SWITCHVT_NEXT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SWITCHVT_PREV.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SWITCHVT_PREV.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_SWITCHVT_PREV.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_TOP.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_TOP.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_TOP.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_TOP_LEFT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_TOP_LEFT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_TOP_LEFT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_TUNES.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_TUNES.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_TUNES.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_WINDN.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_WINDN.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_WINDN.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_WINUP.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_WINUP.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CMD_WINUP.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CODE_MASK.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CODE_MASK.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CODE_MASK.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CODE_SHIFT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CODE_SHIFT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_CODE_SHIFT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLAGS_MASK.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLAGS_MASK.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLAGS_MASK.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLAGS_SHIFT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLAGS_SHIFT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLAGS_SHIFT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_CONTROL.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_CONTROL.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_CONTROL.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_KBD_EMUL0.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_KBD_EMUL0.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_KBD_EMUL0.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_KBD_EMUL1.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_KBD_EMUL1.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_KBD_EMUL1.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_KBD_RELEASE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_KBD_RELEASE.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_KBD_RELEASE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_LINE_SCALED.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_LINE_SCALED.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_LINE_SCALED.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_LINE_TOLEFT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_LINE_TOLEFT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_LINE_TOLEFT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_META.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_META.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_META.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_MOD1.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_MOD1.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_MOD1.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_MOD2.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_MOD2.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_MOD2.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_MOD3.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_MOD3.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_MOD3.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_MOD4.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_MOD4.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_MOD4.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_MOD5.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_MOD5.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_MOD5.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_REPEAT_DELAY.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_REPEAT_DELAY.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_REPEAT_DELAY.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_REPEAT_INITIAL.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_REPEAT_INITIAL.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_REPEAT_INITIAL.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_REPEAT_MASK.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_REPEAT_MASK.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_REPEAT_MASK.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_ROUTE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_ROUTE.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_ROUTE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_SHIFT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_SHIFT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_SHIFT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_TOGGLE_MASK.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_TOGGLE_MASK.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_TOGGLE_MASK.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_TOGGLE_OFF.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_TOGGLE_OFF.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_TOGGLE_OFF.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_TOGGLE_ON.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_TOGGLE_ON.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_TOGGLE_ON.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_UPPER.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_UPPER.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_FLG_UPPER.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_MAX.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_MAX.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_MAX.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_BACKSPACE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_BACKSPACE.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_BACKSPACE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_DELETE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_DELETE.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_DELETE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_DOWN.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_DOWN.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_DOWN.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_END.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_END.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_END.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_ESCAPE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_ESCAPE.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_ESCAPE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_FUNCTION.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_FUNCTION.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_FUNCTION.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_HOME.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_HOME.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_HOME.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_INSERT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_INSERT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_INSERT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_LEFT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_LEFT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_LEFT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_LINEFEED.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_LINEFEED.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_LINEFEED.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_PAGE_DOWN.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_PAGE_DOWN.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_PAGE_DOWN.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_PAGE_UP.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_PAGE_UP.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_PAGE_UP.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_RIGHT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_RIGHT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_RIGHT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_TAB.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_TAB.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_TAB.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_UNICODE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_UNICODE.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_UNICODE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_UP.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_UP.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_SYM_UP.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_TYPE_CMD.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_TYPE_CMD.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_TYPE_CMD.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_TYPE_MASK.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_TYPE_MASK.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_TYPE_MASK.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_TYPE_SHIFT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_TYPE_SHIFT.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_TYPE_SHIFT.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_KEY_TYPE_SYM.3 b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_TYPE_SYM.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_KEY_TYPE_SYM.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_MAJOR.3 b/Documents/BrlAPIref/man/man3/BRLAPI_MAJOR.3 new file mode 100644 index 0000000000000000000000000000000000000000..56fc6ffb8c9e8863191bd9058c81008284b06f42 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_MAJOR.3 @@ -0,0 +1 @@ +.so man3/brlapi_version.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_MAXKEYSETSIZE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_MAXKEYSETSIZE.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_MAXKEYSETSIZE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_MAXNAMELENGTH.3 b/Documents/BrlAPIref/man/man3/BRLAPI_MAXNAMELENGTH.3 new file mode 100644 index 0000000000000000000000000000000000000000..5dcc662448ca1b1d77c31a117c3ce09f52762b95 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_MAXNAMELENGTH.3 @@ -0,0 +1 @@ +.so man3/brlapi_info.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_MAXPACKETSIZE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_MAXPACKETSIZE.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_MAXPACKETSIZE.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_MINOR.3 b/Documents/BrlAPIref/man/man3/BRLAPI_MINOR.3 new file mode 100644 index 0000000000000000000000000000000000000000..56fc6ffb8c9e8863191bd9058c81008284b06f42 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_MINOR.3 @@ -0,0 +1 @@ +.so man3/brlapi_version.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_ACCEPTKEYRANGES.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_ACCEPTKEYRANGES.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_ACCEPTKEYRANGES.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_ACK.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_ACK.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_ACK.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_AUTH.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_AUTH.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_AUTH.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_ENTERRAWMODE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_ENTERRAWMODE.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_ENTERRAWMODE.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_ENTERTTYMODE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_ENTERTTYMODE.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_ENTERTTYMODE.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_ERROR.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_ERROR.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_ERROR.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_EXCEPTION.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_EXCEPTION.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_EXCEPTION.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_GETDISPLAYSIZE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_GETDISPLAYSIZE.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_GETDISPLAYSIZE.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_GETDRIVERNAME.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_GETDRIVERNAME.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_GETDRIVERNAME.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_IGNOREKEYRANGES.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_IGNOREKEYRANGES.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_IGNOREKEYRANGES.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_KEY.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_KEY.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_KEY.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_LEAVERAWMODE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_LEAVERAWMODE.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_LEAVERAWMODE.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_LEAVETTYMODE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_LEAVETTYMODE.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_LEAVETTYMODE.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_PACKET.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_PACKET.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_PACKET.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_RESUMEDRIVER.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_RESUMEDRIVER.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_RESUMEDRIVER.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_SETFOCUS.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_SETFOCUS.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_SETFOCUS.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_SUSPENDDRIVER.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_SUSPENDDRIVER.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_SUSPENDDRIVER.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_VERSION.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_VERSION.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_VERSION.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_WRITE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_WRITE.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PACKET_WRITE.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PRIuKEYCODE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PRIuKEYCODE.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PRIuKEYCODE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PRIxKEYCODE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PRIxKEYCODE.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PRIxKEYCODE.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_PROTOCOL_VERSION.3 b/Documents/BrlAPIref/man/man3/BRLAPI_PROTOCOL_VERSION.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_PROTOCOL_VERSION.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_RELEASE.3 b/Documents/BrlAPIref/man/man3/BRLAPI_RELEASE.3 new file mode 100644 index 0000000000000000000000000000000000000000..56fc6ffb8c9e8863191bd9058c81008284b06f42 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_RELEASE.3 @@ -0,0 +1 @@ +.so man3/brlapi_version.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_REVISION.3 b/Documents/BrlAPIref/man/man3/BRLAPI_REVISION.3 new file mode 100644 index 0000000000000000000000000000000000000000..56fc6ffb8c9e8863191bd9058c81008284b06f42 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_REVISION.3 @@ -0,0 +1 @@ +.so man3/brlapi_version.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_SETTINGS_INITIALIZER.3 b/Documents/BrlAPIref/man/man3/BRLAPI_SETTINGS_INITIALIZER.3 new file mode 100644 index 0000000000000000000000000000000000000000..246c55313f72699bc6fdccdfe90257e8c5514855 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_SETTINGS_INITIALIZER.3 @@ -0,0 +1 @@ +.so man3/brlapi_connection.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_SOCKETPATH.3 b/Documents/BrlAPIref/man/man3/BRLAPI_SOCKETPATH.3 new file mode 100644 index 0000000000000000000000000000000000000000..246c55313f72699bc6fdccdfe90257e8c5514855 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_SOCKETPATH.3 @@ -0,0 +1 @@ +.so man3/brlapi_connection.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_SOCKETPORT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_SOCKETPORT.3 new file mode 100644 index 0000000000000000000000000000000000000000..246c55313f72699bc6fdccdfe90257e8c5514855 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_SOCKETPORT.3 @@ -0,0 +1 @@ +.so man3/brlapi_connection.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_SOCKETPORTNUM.3 b/Documents/BrlAPIref/man/man3/BRLAPI_SOCKETPORTNUM.3 new file mode 100644 index 0000000000000000000000000000000000000000..246c55313f72699bc6fdccdfe90257e8c5514855 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_SOCKETPORTNUM.3 @@ -0,0 +1 @@ +.so man3/brlapi_connection.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_STDCALL.3 b/Documents/BrlAPIref/man/man3/BRLAPI_STDCALL.3 new file mode 100644 index 0000000000000000000000000000000000000000..99abd1139dd7859444d323c3b3ac6affe7660bed --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_STDCALL.3 @@ -0,0 +1 @@ +.so man3/brlapi.h.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_TTY_DEFAULT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_TTY_DEFAULT.3 new file mode 100644 index 0000000000000000000000000000000000000000..7d13bb94d99f00d4cea7cd6ca07091d975f71a50 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_TTY_DEFAULT.3 @@ -0,0 +1 @@ +.so man3/brlapi_tty.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_UC_ROW.3 b/Documents/BrlAPIref/man/man3/BRLAPI_UC_ROW.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_UC_ROW.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_WF_ATTR_AND.3 b/Documents/BrlAPIref/man/man3/BRLAPI_WF_ATTR_AND.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_WF_ATTR_AND.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_WF_ATTR_OR.3 b/Documents/BrlAPIref/man/man3/BRLAPI_WF_ATTR_OR.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_WF_ATTR_OR.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_WF_CHARSET.3 b/Documents/BrlAPIref/man/man3/BRLAPI_WF_CHARSET.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_WF_CHARSET.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_WF_CURSOR.3 b/Documents/BrlAPIref/man/man3/BRLAPI_WF_CURSOR.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_WF_CURSOR.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_WF_DISPLAYNUMBER.3 b/Documents/BrlAPIref/man/man3/BRLAPI_WF_DISPLAYNUMBER.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_WF_DISPLAYNUMBER.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_WF_REGION.3 b/Documents/BrlAPIref/man/man3/BRLAPI_WF_REGION.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_WF_REGION.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_WF_TEXT.3 b/Documents/BrlAPIref/man/man3/BRLAPI_WF_TEXT.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_WF_TEXT.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_WRITEARGUMENTS_INITIALIZER.3 b/Documents/BrlAPIref/man/man3/BRLAPI_WRITEARGUMENTS_INITIALIZER.3 new file mode 100644 index 0000000000000000000000000000000000000000..492f429a9f41bc20a1f1ce2b1ec6b9e861439ba1 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_WRITEARGUMENTS_INITIALIZER.3 @@ -0,0 +1 @@ +.so man3/brlapi_write.3 diff --git a/Documents/BrlAPIref/man/man3/BRLAPI_WRITESTRUCT_INITIALIZER.3 b/Documents/BrlAPIref/man/man3/BRLAPI_WRITESTRUCT_INITIALIZER.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLAPI_WRITESTRUCT_INITIALIZER.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/BRLCOMMANDS.3 b/Documents/BrlAPIref/man/man3/BRLCOMMANDS.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLCOMMANDS.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/BRLERR_CONNREFUSED.3 b/Documents/BrlAPIref/man/man3/BRLERR_CONNREFUSED.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLERR_CONNREFUSED.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/BRLERR_DEVICEBUSY.3 b/Documents/BrlAPIref/man/man3/BRLERR_DEVICEBUSY.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLERR_DEVICEBUSY.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/BRLERR_DRIVERERROR.3 b/Documents/BrlAPIref/man/man3/BRLERR_DRIVERERROR.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLERR_DRIVERERROR.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/BRLERR_EMPTYKEY.3 b/Documents/BrlAPIref/man/man3/BRLERR_EMPTYKEY.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLERR_EMPTYKEY.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/BRLERR_EOF.3 b/Documents/BrlAPIref/man/man3/BRLERR_EOF.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLERR_EOF.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/BRLERR_GAIERR.3 b/Documents/BrlAPIref/man/man3/BRLERR_GAIERR.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLERR_GAIERR.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/BRLERR_ILLEGAL_INSTRUCTION.3 b/Documents/BrlAPIref/man/man3/BRLERR_ILLEGAL_INSTRUCTION.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLERR_ILLEGAL_INSTRUCTION.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/BRLERR_INVALID_PACKET.3 b/Documents/BrlAPIref/man/man3/BRLERR_INVALID_PACKET.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLERR_INVALID_PACKET.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/BRLERR_INVALID_PARAMETER.3 b/Documents/BrlAPIref/man/man3/BRLERR_INVALID_PARAMETER.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLERR_INVALID_PARAMETER.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/BRLERR_LIBCERR.3 b/Documents/BrlAPIref/man/man3/BRLERR_LIBCERR.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLERR_LIBCERR.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/BRLERR_NOMEM.3 b/Documents/BrlAPIref/man/man3/BRLERR_NOMEM.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLERR_NOMEM.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/BRLERR_OPNOTSUPP.3 b/Documents/BrlAPIref/man/man3/BRLERR_OPNOTSUPP.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLERR_OPNOTSUPP.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/BRLERR_PROTOCOL_VERSION.3 b/Documents/BrlAPIref/man/man3/BRLERR_PROTOCOL_VERSION.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLERR_PROTOCOL_VERSION.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/BRLERR_SUCCESS.3 b/Documents/BrlAPIref/man/man3/BRLERR_SUCCESS.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLERR_SUCCESS.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/BRLERR_TTYBUSY.3 b/Documents/BrlAPIref/man/man3/BRLERR_TTYBUSY.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLERR_TTYBUSY.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/BRLERR_UNKNOWNTTY.3 b/Documents/BrlAPIref/man/man3/BRLERR_UNKNOWNTTY.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLERR_UNKNOWNTTY.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/BRLERR_UNKNOWN_INSTRUCTION.3 b/Documents/BrlAPIref/man/man3/BRLERR_UNKNOWN_INSTRUCTION.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRLERR_UNKNOWN_INSTRUCTION.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/BRL_KEYCODE_MAX.3 b/Documents/BrlAPIref/man/man3/BRL_KEYCODE_MAX.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/BRL_KEYCODE_MAX.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/UINT32_MAX.3 b/Documents/BrlAPIref/man/man3/UINT32_MAX.3 new file mode 100644 index 0000000000000000000000000000000000000000..bd2fc8e2253209eef3c85f9b36977815c2a8e751 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/UINT32_MAX.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.h.3 diff --git a/Documents/BrlAPIref/man/man3/_tmp_mktar.z26723_brltty-4.0_Programs_.3 b/Documents/BrlAPIref/man/man3/_tmp_mktar.z26723_brltty-4.0_Programs_.3 new file mode 100644 index 0000000000000000000000000000000000000000..01a1cc74a6174fd07b1977f36e4598ca7ca9eb34 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/_tmp_mktar.z26723_brltty-4.0_Programs_.3 @@ -0,0 +1,28 @@ +.TH "/tmp/mktar.z26723/brltty-4.0/Programs/ Directory Reference" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +/tmp/mktar.z26723/brltty-4.0/Programs/ Directory Reference \- +.SS "Files" + +.in +1c +.ti -1c +.RI "file \fBbrlapi.h\fP" +.br +.RI "\fITypes, defines and functions prototypes for \fIBrlAPI's\fP library. \fP" +.PP +.in +1c + +.ti -1c +.RI "file \fBbrlapi_constants.h\fP" +.br +.ti -1c +.RI "file \fBbrlapi_keycodes.h\fP" +.br +.ti -1c +.RI "file \fBbrlapi_protocol.h\fP" +.br +.RI "\fItypes and constants for \fIBrlAPI's\fP protocol \fP" +.PP + +.in -1c diff --git a/Documents/BrlAPIref/man/man3/andMask.3 b/Documents/BrlAPIref/man/man3/andMask.3 new file mode 100644 index 0000000000000000000000000000000000000000..27931229fc527a342aea7ca5aa4495db1e8fee3e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/andMask.3 @@ -0,0 +1 @@ +.so man3/brlapi_writeArguments_t.3 diff --git a/Documents/BrlAPIref/man/man3/argument.3 b/Documents/BrlAPIref/man/man3/argument.3 new file mode 100644 index 0000000000000000000000000000000000000000..2460d3527b143ff147cec48347244d4796db2a75 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/argument.3 @@ -0,0 +1 @@ +.so man3/brlapi_describedKeyCode_t.3 diff --git a/Documents/BrlAPIref/man/man3/attrAnd.3 b/Documents/BrlAPIref/man/man3/attrAnd.3 new file mode 100644 index 0000000000000000000000000000000000000000..2d1f0973a6b484b7f762cf92a512d8822294b5b3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/attrAnd.3 @@ -0,0 +1 @@ +.so man3/brlapi_writeStruct.3 diff --git a/Documents/BrlAPIref/man/man3/attrOr.3 b/Documents/BrlAPIref/man/man3/attrOr.3 new file mode 100644 index 0000000000000000000000000000000000000000..2d1f0973a6b484b7f762cf92a512d8822294b5b3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/attrOr.3 @@ -0,0 +1 @@ +.so man3/brlapi_writeStruct.3 diff --git a/Documents/BrlAPIref/man/man3/auth.3 b/Documents/BrlAPIref/man/man3/auth.3 new file mode 100644 index 0000000000000000000000000000000000000000..c53f67697a047594de6a5dedd214db7b1cb819b5 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/auth.3 @@ -0,0 +1 @@ +.so man3/brlapi_connectionSettings_t.3 diff --git a/Documents/BrlAPIref/man/man3/authClient.3 b/Documents/BrlAPIref/man/man3/authClient.3 new file mode 100644 index 0000000000000000000000000000000000000000..9d7ec0622aefcfb3c193f066c2aeec1ba2fef498 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/authClient.3 @@ -0,0 +1 @@ +.so man3/brlapi_packet_t.3 diff --git a/Documents/BrlAPIref/man/man3/authServer.3 b/Documents/BrlAPIref/man/man3/authServer.3 new file mode 100644 index 0000000000000000000000000000000000000000..9d7ec0622aefcfb3c193f066c2aeec1ba2fef498 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/authServer.3 @@ -0,0 +1 @@ +.so man3/brlapi_packet_t.3 diff --git a/Documents/BrlAPIref/man/man3/brl_keycode_t.3 b/Documents/BrlAPIref/man/man3/brl_keycode_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brl_keycode_t.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/brl_type_t.3 b/Documents/BrlAPIref/man/man3/brl_type_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brl_type_t.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi.h.3 b/Documents/BrlAPIref/man/man3/brlapi.h.3 new file mode 100644 index 0000000000000000000000000000000000000000..d33d260832d24f1e8585a991210681863ad82685 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi.h.3 @@ -0,0 +1,531 @@ +.TH "brlapi.h" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +brlapi.h \- Types, defines and functions prototypes for \fIBrlAPI's\fP library. +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.br +\fC#include \fP +.br +\fC#include \fP +.br +\fC#include \fP +.br +\fC#include 'brlapi_keycodes.h'\fP +.br + +.SS "Data Structures" + +.in +1c +.ti -1c +.RI "struct \fBbrlapi_connectionSettings_t\fP" +.br +.RI "\fISettings structure for \fIBrlAPI\fP connection. \fP" +.ti -1c +.RI "struct \fBbrlapi_writeArguments_t\fP" +.br +.ti -1c +.RI "struct \fBbrlapi_expandedKeyCode_t\fP" +.br +.ti -1c +.RI "struct \fBbrlapi_describedKeyCode_t\fP" +.br +.ti -1c +.RI "struct \fBbrlapi_range_t\fP" +.br +.ti -1c +.RI "struct \fBbrlapi_error_t\fP" +.br +.ti -1c +.RI "struct \fBbrlapi_writeStruct\fP" +.br +.in -1c +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBBRLAPI_RELEASE\fP '0.5.3'" +.br +.ti -1c +.RI "#define \fBBRLAPI_MAJOR\fP 0" +.br +.ti -1c +.RI "#define \fBBRLAPI_MINOR\fP 5" +.br +.ti -1c +.RI "#define \fBBRLAPI_REVISION\fP 3" +.br +.ti -1c +.RI "#define \fBBRLAPI_STDCALL\fP" +.br +.ti -1c +.RI "#define \fBBRLAPI_SOCKETPORTNUM\fP 4101" +.br +.ti -1c +.RI "#define \fBBRLAPI_SOCKETPORT\fP '4101'" +.br +.ti -1c +.RI "#define \fBBRLAPI_SOCKETPATH\fP '/var/lib/BrlAPI'" +.br +.ti -1c +.RI "#define \fBBRLAPI_ETCDIR\fP '/etc'" +.br +.ti -1c +.RI "#define \fBBRLAPI_AUTHKEYFILE\fP 'brlapi.key'" +.br +.ti -1c +.RI "#define \fBBRLAPI_DEFAUTH\fP BRLAPI_ETCDIR '/' BRLAPI_AUTHKEYFILE" +.br +.ti -1c +.RI "#define \fBBRLAPI_SETTINGS_INITIALIZER\fP { NULL, NULL }" +.br +.ti -1c +.RI "#define \fBBRLAPI_MAXNAMELENGTH\fP 31" +.br +.ti -1c +.RI "#define \fBBRLAPI_TTY_DEFAULT\fP -1" +.br +.ti -1c +.RI "#define \fBBRLAPI_DISPLAY_DEFAULT\fP -1" +.br +.ti -1c +.RI "#define \fBBRLAPI_CURSOR_LEAVE\fP -1" +.br +.ti -1c +.RI "#define \fBBRLAPI_CURSOR_OFF\fP 0" +.br +.ti -1c +.RI "#define \fBBRLAPI_WRITEARGUMENTS_INITIALIZER\fP { BRLAPI_DISPLAY_DEFAULT, 0, 0, NULL, -1, NULL, NULL, BRLAPI_CURSOR_LEAVE, NULL }" +.br +.ti -1c +.RI "#define \fBBRLAPI_UC_ROW\fP 0x2800UL" +.br +.ti -1c +.RI "#define \fBBRLAPI_MAXKEYSETSIZE\fP (BRLAPI_MAXPACKETSIZE / sizeof(\fBbrlapi_keyCode_t\fP))" +.br +.ti -1c +.RI "#define \fBbrlapi_ignoreAllKeys\fP() brlapi_ignoreKeys(brlapi_rangeType_all, NULL, 0)" +.br +.ti -1c +.RI "#define \fBbrlapi__ignoreAllKeys\fP(handle) brlapi__ignoreKeys(handle, brlapi_rangeType_all, NULL, 0)" +.br +.ti -1c +.RI "#define \fBbrlapi_acceptAllKeys\fP() brlapi_acceptKeys(brlapi_rangeType_all, NULL, 0)" +.br +.ti -1c +.RI "#define \fBbrlapi__acceptAllKeys\fP(handle) brlapi__acceptKeys(handle, brlapi_rangeType_all, NULL, 0)" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_SUCCESS\fP 0" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_NOMEM\fP 1" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_TTYBUSY\fP 2" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_DEVICEBUSY\fP 3" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_UNKNOWN_INSTRUCTION\fP 4" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_ILLEGAL_INSTRUCTION\fP 5" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_INVALID_PARAMETER\fP 6" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_INVALID_PACKET\fP 7" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_CONNREFUSED\fP 8" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_OPNOTSUPP\fP 9" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_GAIERR\fP 10" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_LIBCERR\fP 11" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_UNKNOWNTTY\fP 12" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_PROTOCOL_VERSION\fP 13" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_EOF\fP 14" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_EMPTYKEY\fP 15" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_DRIVERERROR\fP 16" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_AUTHENTICATION\fP 17" +.br +.ti -1c +.RI "#define \fBbrlapi_error\fP (*brlapi_error_location())" +.br +.ti -1c +.RI "#define \fBbrlapi_errno\fP (brlapi_error.brlerrno)" +.br +.ti -1c +.RI "#define \fBbrlapi_libcerrno\fP (brlapi_error.libcerrno)" +.br +.ti -1c +.RI "#define \fBbrlapi_gaierrno\fP (brlapi_error.gaierrno)" +.br +.ti -1c +.RI "#define \fBbrlapi_errfun\fP (brlapi_error.errfun)" +.br +.ti -1c +.RI "#define \fBbrlapi_settings_t\fP \fBbrlapi_connectionSettings_t\fP" +.br +.ti -1c +.RI "#define \fBBRLAPI_WRITESTRUCT_INITIALIZER\fP BRLAPI_WRITEARGUMENTS_INITIALIZER" +.br +.ti -1c +.RI "#define \fBbrl_keycode_t\fP \fBbrlapi_keyCode_t\fP" +.br +.ti -1c +.RI "#define \fBbrl_type_t\fP \fBbrlapi_packetType_t\fP" +.br +.ti -1c +.RI "#define \fBBRLCOMMANDS\fP NULL" +.br +.ti -1c +.RI "#define \fBBRL_KEYCODE_MAX\fP BRLAPI_KEY_MAX" +.br +.ti -1c +.RI "#define \fBbrlapi_initializeConnection\fP brlapi_openConnection" +.br +.ti -1c +.RI "#define \fBbrlapi_getTty\fP brlapi_enterTtyMode" +.br +.ti -1c +.RI "#define \fBbrlapi_getTtyPath\fP brlapi_enterTtyModeWithPath" +.br +.ti -1c +.RI "#define \fBbrlapi_leaveTty\fP brlapi_leaveTtyMode" +.br +.ti -1c +.RI "#define \fBbrlapi_unignoreKeyRange\fP brlapi_acceptKeyRange" +.br +.ti -1c +.RI "#define \fBbrlapi_unignoreKeySet\fP brlapi_acceptKeySet" +.br +.ti -1c +.RI "#define \fBbrlapi_getRaw\fP brlapi_enterRawMode" +.br +.ti -1c +.RI "#define \fBbrlapi_leaveRaw\fP brlapi_leaveRawMode" +.br +.ti -1c +.RI "#define \fBbrlapi_suspend\fP brlapi_suspendDriver" +.br +.ti -1c +.RI "#define \fBbrlapi_resume\fP brlapi_resumeDriver" +.br +.ti -1c +.RI "#define \fBBRLERR_SUCCESS\fP BRLAPI_ERROR_SUCCESS" +.br +.ti -1c +.RI "#define \fBBRLERR_NOMEM\fP BRLAPI_ERROR_NOMEM" +.br +.ti -1c +.RI "#define \fBBRLERR_TTYBUSY\fP BRLAPI_ERROR_TTYBUSY" +.br +.ti -1c +.RI "#define \fBBRLERR_DEVICEBUSY\fP BRLAPI_ERROR_DEVICEBUSY" +.br +.ti -1c +.RI "#define \fBBRLERR_UNKNOWN_INSTRUCTION\fP BRLAPI_ERROR_UNKNOWN_INSTRUCTION" +.br +.ti -1c +.RI "#define \fBBRLERR_ILLEGAL_INSTRUCTION\fP BRLAPI_ERROR_ILLEGAL_INSTRUCTION" +.br +.ti -1c +.RI "#define \fBBRLERR_INVALID_PARAMETER\fP BRLAPI_ERROR_INVALID_PARAMETER" +.br +.ti -1c +.RI "#define \fBBRLERR_INVALID_PACKET\fP BRLAPI_ERROR_INVALID_PACKET" +.br +.ti -1c +.RI "#define \fBBRLERR_CONNREFUSED\fP BRLAPI_ERROR_CONNREFUSED" +.br +.ti -1c +.RI "#define \fBBRLERR_OPNOTSUPP\fP BRLAPI_ERROR_OPNOTSUPP" +.br +.ti -1c +.RI "#define \fBBRLERR_GAIERR\fP BRLAPI_ERROR_GAIERR" +.br +.ti -1c +.RI "#define \fBBRLERR_LIBCERR\fP BRLAPI_ERROR_LIBCERR" +.br +.ti -1c +.RI "#define \fBBRLERR_UNKNOWNTTY\fP BRLAPI_ERROR_UNKNOWNTTY" +.br +.ti -1c +.RI "#define \fBBRLERR_PROTOCOL_VERSION\fP BRLAPI_ERROR_PROTOCOL_VERSION" +.br +.ti -1c +.RI "#define \fBBRLERR_EOF\fP BRLAPI_ERROR_EOF" +.br +.ti -1c +.RI "#define \fBBRLERR_EMPTYKEY\fP BRLAPI_ERROR_EMPTYKEY" +.br +.ti -1c +.RI "#define \fBBRLERR_DRIVERERROR\fP BRLAPI_ERROR_DRIVERERROR" +.br +.in -1c +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef \fBbrlapi_handle_t\fP \fBbrlapi_handle_t\fP" +.br +.ti -1c +.RI "typedef int \fBbrlapi_fileDescriptor\fP" +.br +.ti -1c +.RI "typedef uint32_t \fBbrlapi_packetType_t\fP" +.br +.ti -1c +.RI "typedef void(BRLAPI_STDCALL *) \fBbrlapi_exceptionHandler_t\fP (int error, \fBbrlapi_packetType_t\fP type, const void *packet, size_t size)" +.br +.ti -1c +.RI "typedef void(BRLAPI_STDCALL *) \fBbrlapi__exceptionHandler_t\fP (\fBbrlapi_handle_t\fP *handle, int error, \fBbrlapi_packetType_t\fP type, const void *packet, size_t size)" +.br +.in -1c +.SS "Enumerations" + +.in +1c +.ti -1c +.RI "enum \fBbrlapi_rangeType_t\fP { \fBbrlapi_rangeType_all\fP, \fBbrlapi_rangeType_type\fP, \fBbrlapi_rangeType_command\fP, \fBbrlapi_rangeType_key\fP, \fBbrlapi_rangeType_code\fP }" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "size_t BRLAPI_STDCALL \fBbrlapi_getHandleSize\fP (void)" +.br +.ti -1c +.RI "\fBbrlapi_fileDescriptor\fP BRLAPI_STDCALL \fBbrlapi_openConnection\fP (const \fBbrlapi_connectionSettings_t\fP *desiredSettings, \fBbrlapi_connectionSettings_t\fP *actualSettings)" +.br +.ti -1c +.RI "\fBbrlapi_fileDescriptor\fP BRLAPI_STDCALL \fBbrlapi__openConnection\fP (\fBbrlapi_handle_t\fP *handle, const \fBbrlapi_connectionSettings_t\fP *desiredSettings, \fBbrlapi_connectionSettings_t\fP *actualSettings)" +.br +.ti -1c +.RI "void BRLAPI_STDCALL \fBbrlapi_closeConnection\fP (void)" +.br +.ti -1c +.RI "void BRLAPI_STDCALL \fBbrlapi__closeConnection\fP (\fBbrlapi_handle_t\fP *handle)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_getDriverName\fP (char *buffer, size_t size)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__getDriverName\fP (\fBbrlapi_handle_t\fP *handle, char *buffer, size_t size)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_getDisplaySize\fP (unsigned int *x, unsigned int *y)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__getDisplaySize\fP (\fBbrlapi_handle_t\fP *handle, unsigned int *x, unsigned int *y)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_enterTtyMode\fP (int tty, const char *driver)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__enterTtyMode\fP (\fBbrlapi_handle_t\fP *handle, int tty, const char *driver)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_enterTtyModeWithPath\fP (int *ttys, int count, const char *driver)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__enterTtyModeWithPath\fP (\fBbrlapi_handle_t\fP *handle, int *ttys, int count, const char *driver)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_leaveTtyMode\fP (void)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__leaveTtyMode\fP (\fBbrlapi_handle_t\fP *handle)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_setFocus\fP (int tty)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__setFocus\fP (\fBbrlapi_handle_t\fP *handle, int tty)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_writeText\fP (int cursor, const char *text)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__writeText\fP (\fBbrlapi_handle_t\fP *handle, int cursor, const char *text)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_writeDots\fP (const unsigned char *dots)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__writeDots\fP (\fBbrlapi_handle_t\fP *handle, const unsigned char *dots)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_write\fP (const \fBbrlapi_writeArguments_t\fP *arguments)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__write\fP (\fBbrlapi_handle_t\fP *handle, const \fBbrlapi_writeArguments_t\fP *arguments)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_expandKeyCode\fP (\fBbrlapi_keyCode_t\fP code, \fBbrlapi_expandedKeyCode_t\fP *expansion)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_describeKeyCode\fP (\fBbrlapi_keyCode_t\fP code, \fBbrlapi_describedKeyCode_t\fP *description)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_readKey\fP (int wait, \fBbrlapi_keyCode_t\fP *code)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__readKey\fP (\fBbrlapi_handle_t\fP *handle, int wait, \fBbrlapi_keyCode_t\fP *code)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_ignoreKeys\fP (\fBbrlapi_rangeType_t\fP type, const \fBbrlapi_keyCode_t\fP keys[], unsigned int count)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__ignoreKeys\fP (\fBbrlapi_handle_t\fP *handle, \fBbrlapi_rangeType_t\fP type, const \fBbrlapi_keyCode_t\fP keys[], unsigned int count)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_acceptKeys\fP (\fBbrlapi_rangeType_t\fP type, const \fBbrlapi_keyCode_t\fP keys[], unsigned int count)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__acceptKeys\fP (\fBbrlapi_handle_t\fP *handle, \fBbrlapi_rangeType_t\fP type, const \fBbrlapi_keyCode_t\fP keys[], unsigned int count)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__ignoreAllKeys\fP (\fBbrlapi_handle_t\fP *handle)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__acceptAllKeys\fP (\fBbrlapi_handle_t\fP *handle)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_ignoreKeyRanges\fP (\fBbrlapi_range_t\fP ranges[], unsigned int count)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__ignoreKeyRanges\fP (\fBbrlapi_handle_t\fP *handle, \fBbrlapi_range_t\fP ranges[], unsigned int count)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_acceptKeyRanges\fP (\fBbrlapi_range_t\fP ranges[], unsigned int count)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__acceptKeyRanges\fP (\fBbrlapi_handle_t\fP *handle, \fBbrlapi_range_t\fP ranges[], unsigned int count)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_enterRawMode\fP (const char *driver)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__enterRawMode\fP (\fBbrlapi_handle_t\fP *handle, const char *driver)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_leaveRawMode\fP (void)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__leaveRawMode\fP (\fBbrlapi_handle_t\fP *handle)" +.br +.ti -1c +.RI "ssize_t BRLAPI_STDCALL \fBbrlapi_sendRaw\fP (const void *buffer, size_t size)" +.br +.ti -1c +.RI "ssize_t BRLAPI_STDCALL \fBbrlapi__sendRaw\fP (\fBbrlapi_handle_t\fP *handle, const void *buffer, size_t size)" +.br +.ti -1c +.RI "ssize_t BRLAPI_STDCALL \fBbrlapi_recvRaw\fP (void *buffer, size_t size)" +.br +.ti -1c +.RI "ssize_t BRLAPI_STDCALL \fBbrlapi__recvRaw\fP (\fBbrlapi_handle_t\fP *handle, void *buffer, size_t size)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_suspendDriver\fP (const char *driver)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__suspendDriver\fP (\fBbrlapi_handle_t\fP *handle, const char *driver)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_resumeDriver\fP (void)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__resumeDriver\fP (\fBbrlapi_handle_t\fP *handle)" +.br +.ti -1c +.RI "void BRLAPI_STDCALL \fBbrlapi_perror\fP (const char *s)" +.br +.ti -1c +.RI "\fBbrlapi_error_t\fP *BRLAPI_STDCALL \fBbrlapi_error_location\fP (void)" +.br +.ti -1c +.RI "const char *BRLAPI_STDCALL \fBbrlapi_strerror\fP (const \fBbrlapi_error_t\fP *error)" +.br +.ti -1c +.RI "const char *BRLAPI_STDCALL \fBbrlapi_getPacketTypeName\fP (\fBbrlapi_packetType_t\fP type)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_strexception\fP (char *buffer, size_t bufferSize, int error, \fBbrlapi_packetType_t\fP type, const void *packet, size_t packetSize)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__strexception\fP (\fBbrlapi_handle_t\fP *handle, char *buffer, size_t bufferSize, int error, \fBbrlapi_packetType_t\fP type, const void *packet, size_t packetSize)" +.br +.ti -1c +.RI "\fBbrlapi_exceptionHandler_t\fP BRLAPI_STDCALL \fBbrlapi_setExceptionHandler\fP (\fBbrlapi_exceptionHandler_t\fP handler)" +.br +.ti -1c +.RI "\fBbrlapi__exceptionHandler_t\fP BRLAPI_STDCALL \fBbrlapi__setExceptionHandler\fP (\fBbrlapi_handle_t\fP *handle, \fBbrlapi__exceptionHandler_t\fP handler)" +.br +.ti -1c +.RI "void BRLAPI_STDCALL \fBbrlapi_defaultExceptionHandler\fP (int error, \fBbrlapi_packetType_t\fP type, const void *packet, size_t size)" +.br +.ti -1c +.RI "void BRLAPI_STDCALL \fBbrlapi__defaultExceptionHandler\fP (\fBbrlapi_handle_t\fP *handle, int error, \fBbrlapi_packetType_t\fP type, const void *packet, size_t size)" +.br +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "const char * \fBbrlapi_errlist\fP []" +.br +.ti -1c +.RI "const int \fBbrlapi_nerr\fP" +.br +.ti -1c +.RI "\fBbrlapi_error_t\fP \fBbrlapi_error\fP" +.br +.ti -1c +.RI "int \fBbrlapi_errno\fP" +.br +.ti -1c +.RI "int \fBbrlapi_libcerrno\fP" +.br +.ti -1c +.RI "int \fBbrlapi_gaierrno\fP" +.br +.ti -1c +.RI "const char * \fBbrlapi_errfun\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SH "Define Documentation" +.PP +.SS "#define BRLAPI_STDCALL" +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for BrlAPI from the source code. diff --git a/Documents/BrlAPIref/man/man3/brlapi__acceptAllKeys.3 b/Documents/BrlAPIref/man/man3/brlapi__acceptAllKeys.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__acceptAllKeys.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__acceptKeyRanges.3 b/Documents/BrlAPIref/man/man3/brlapi__acceptKeyRanges.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__acceptKeyRanges.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__acceptKeys.3 b/Documents/BrlAPIref/man/man3/brlapi__acceptKeys.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__acceptKeys.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__closeConnection.3 b/Documents/BrlAPIref/man/man3/brlapi__closeConnection.3 new file mode 100644 index 0000000000000000000000000000000000000000..246c55313f72699bc6fdccdfe90257e8c5514855 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__closeConnection.3 @@ -0,0 +1 @@ +.so man3/brlapi_connection.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__defaultExceptionHandler.3 b/Documents/BrlAPIref/man/man3/brlapi__defaultExceptionHandler.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__defaultExceptionHandler.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__enterRawMode.3 b/Documents/BrlAPIref/man/man3/brlapi__enterRawMode.3 new file mode 100644 index 0000000000000000000000000000000000000000..d918a36920bfc639b7d0fecae9cb48b0d88417cf --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__enterRawMode.3 @@ -0,0 +1 @@ +.so man3/brlapi_driverspecific.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__enterTtyMode.3 b/Documents/BrlAPIref/man/man3/brlapi__enterTtyMode.3 new file mode 100644 index 0000000000000000000000000000000000000000..7d13bb94d99f00d4cea7cd6ca07091d975f71a50 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__enterTtyMode.3 @@ -0,0 +1 @@ +.so man3/brlapi_tty.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__enterTtyModeWithPath.3 b/Documents/BrlAPIref/man/man3/brlapi__enterTtyModeWithPath.3 new file mode 100644 index 0000000000000000000000000000000000000000..7d13bb94d99f00d4cea7cd6ca07091d975f71a50 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__enterTtyModeWithPath.3 @@ -0,0 +1 @@ +.so man3/brlapi_tty.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__exceptionHandler_t.3 b/Documents/BrlAPIref/man/man3/brlapi__exceptionHandler_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__exceptionHandler_t.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__getDisplaySize.3 b/Documents/BrlAPIref/man/man3/brlapi__getDisplaySize.3 new file mode 100644 index 0000000000000000000000000000000000000000..5dcc662448ca1b1d77c31a117c3ce09f52762b95 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__getDisplaySize.3 @@ -0,0 +1 @@ +.so man3/brlapi_info.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__getDriverName.3 b/Documents/BrlAPIref/man/man3/brlapi__getDriverName.3 new file mode 100644 index 0000000000000000000000000000000000000000..5dcc662448ca1b1d77c31a117c3ce09f52762b95 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__getDriverName.3 @@ -0,0 +1 @@ +.so man3/brlapi_info.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__ignoreAllKeys.3 b/Documents/BrlAPIref/man/man3/brlapi__ignoreAllKeys.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__ignoreAllKeys.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__ignoreKeyRanges.3 b/Documents/BrlAPIref/man/man3/brlapi__ignoreKeyRanges.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__ignoreKeyRanges.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__ignoreKeys.3 b/Documents/BrlAPIref/man/man3/brlapi__ignoreKeys.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__ignoreKeys.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__leaveRawMode.3 b/Documents/BrlAPIref/man/man3/brlapi__leaveRawMode.3 new file mode 100644 index 0000000000000000000000000000000000000000..d918a36920bfc639b7d0fecae9cb48b0d88417cf --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__leaveRawMode.3 @@ -0,0 +1 @@ +.so man3/brlapi_driverspecific.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__leaveTtyMode.3 b/Documents/BrlAPIref/man/man3/brlapi__leaveTtyMode.3 new file mode 100644 index 0000000000000000000000000000000000000000..7d13bb94d99f00d4cea7cd6ca07091d975f71a50 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__leaveTtyMode.3 @@ -0,0 +1 @@ +.so man3/brlapi_tty.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__openConnection.3 b/Documents/BrlAPIref/man/man3/brlapi__openConnection.3 new file mode 100644 index 0000000000000000000000000000000000000000..246c55313f72699bc6fdccdfe90257e8c5514855 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__openConnection.3 @@ -0,0 +1 @@ +.so man3/brlapi_connection.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__readKey.3 b/Documents/BrlAPIref/man/man3/brlapi__readKey.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__readKey.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__recvRaw.3 b/Documents/BrlAPIref/man/man3/brlapi__recvRaw.3 new file mode 100644 index 0000000000000000000000000000000000000000..d918a36920bfc639b7d0fecae9cb48b0d88417cf --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__recvRaw.3 @@ -0,0 +1 @@ +.so man3/brlapi_driverspecific.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__resumeDriver.3 b/Documents/BrlAPIref/man/man3/brlapi__resumeDriver.3 new file mode 100644 index 0000000000000000000000000000000000000000..d918a36920bfc639b7d0fecae9cb48b0d88417cf --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__resumeDriver.3 @@ -0,0 +1 @@ +.so man3/brlapi_driverspecific.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__sendRaw.3 b/Documents/BrlAPIref/man/man3/brlapi__sendRaw.3 new file mode 100644 index 0000000000000000000000000000000000000000..d918a36920bfc639b7d0fecae9cb48b0d88417cf --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__sendRaw.3 @@ -0,0 +1 @@ +.so man3/brlapi_driverspecific.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__setExceptionHandler.3 b/Documents/BrlAPIref/man/man3/brlapi__setExceptionHandler.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__setExceptionHandler.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__setFocus.3 b/Documents/BrlAPIref/man/man3/brlapi__setFocus.3 new file mode 100644 index 0000000000000000000000000000000000000000..7d13bb94d99f00d4cea7cd6ca07091d975f71a50 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__setFocus.3 @@ -0,0 +1 @@ +.so man3/brlapi_tty.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__strexception.3 b/Documents/BrlAPIref/man/man3/brlapi__strexception.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__strexception.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__suspendDriver.3 b/Documents/BrlAPIref/man/man3/brlapi__suspendDriver.3 new file mode 100644 index 0000000000000000000000000000000000000000..d918a36920bfc639b7d0fecae9cb48b0d88417cf --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__suspendDriver.3 @@ -0,0 +1 @@ +.so man3/brlapi_driverspecific.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__write.3 b/Documents/BrlAPIref/man/man3/brlapi__write.3 new file mode 100644 index 0000000000000000000000000000000000000000..492f429a9f41bc20a1f1ce2b1ec6b9e861439ba1 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__write.3 @@ -0,0 +1 @@ +.so man3/brlapi_write.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__writeDots.3 b/Documents/BrlAPIref/man/man3/brlapi__writeDots.3 new file mode 100644 index 0000000000000000000000000000000000000000..492f429a9f41bc20a1f1ce2b1ec6b9e861439ba1 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__writeDots.3 @@ -0,0 +1 @@ +.so man3/brlapi_write.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi__writeText.3 b/Documents/BrlAPIref/man/man3/brlapi__writeText.3 new file mode 100644 index 0000000000000000000000000000000000000000..492f429a9f41bc20a1f1ce2b1ec6b9e861439ba1 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi__writeText.3 @@ -0,0 +1 @@ +.so man3/brlapi_write.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_acceptAllKeys.3 b/Documents/BrlAPIref/man/man3/brlapi_acceptAllKeys.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_acceptAllKeys.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_acceptKeyRanges.3 b/Documents/BrlAPIref/man/man3/brlapi_acceptKeyRanges.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_acceptKeyRanges.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_acceptKeys.3 b/Documents/BrlAPIref/man/man3/brlapi_acceptKeys.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_acceptKeys.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_authClientPacket_t.3 b/Documents/BrlAPIref/man/man3/brlapi_authClientPacket_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..e27f13305d867b669c3af07dfe4dc6a01881d4dd --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_authClientPacket_t.3 @@ -0,0 +1,35 @@ +.TH "brlapi_authClientPacket_t" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +brlapi_authClientPacket_t \- +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "uint32_t \fBtype\fP" +.br +.ti -1c +.RI "unsigned char \fBkey\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Packeture of authorization packets +.PP +.SH "Field Documentation" +.PP +.SS "uint32_t \fBbrlapi_authClientPacket_t::type\fP" +.PP +.SS "unsigned char \fBbrlapi_authClientPacket_t::key\fP" +.PP + + +.SH "Author" +.PP +Generated automatically by Doxygen for BrlAPI from the source code. diff --git a/Documents/BrlAPIref/man/man3/brlapi_authServerPacket_t.3 b/Documents/BrlAPIref/man/man3/brlapi_authServerPacket_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..2ba5cfec0eec8dbcf3f46080f2b8eef6b692a1da --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_authServerPacket_t.3 @@ -0,0 +1,26 @@ +.TH "brlapi_authServerPacket_t" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +brlapi_authServerPacket_t \- +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "uint32_t \fBtype\fP [1]" +.br +.in -1c +.SH "Field Documentation" +.PP +.SS "uint32_t \fBbrlapi_authServerPacket_t::type\fP[1]" +.PP + + +.SH "Author" +.PP +Generated automatically by Doxygen for BrlAPI from the source code. diff --git a/Documents/BrlAPIref/man/man3/brlapi_closeConnection.3 b/Documents/BrlAPIref/man/man3/brlapi_closeConnection.3 new file mode 100644 index 0000000000000000000000000000000000000000..246c55313f72699bc6fdccdfe90257e8c5514855 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_closeConnection.3 @@ -0,0 +1 @@ +.so man3/brlapi_connection.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_connection.3 b/Documents/BrlAPIref/man/man3/brlapi_connection.3 new file mode 100644 index 0000000000000000000000000000000000000000..c648d208d460fc7c78e26c78dc9707e6bf931eb3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_connection.3 @@ -0,0 +1,152 @@ +.TH "Connecting to BrlAPI" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Connecting to BrlAPI \- +.SS "Data Structures" + +.in +1c +.ti -1c +.RI "struct \fBbrlapi_connectionSettings_t\fP" +.br +.RI "\fISettings structure for \fIBrlAPI\fP connection. \fP" +.in -1c +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBBRLAPI_SOCKETPORTNUM\fP 4101" +.br +.ti -1c +.RI "#define \fBBRLAPI_SOCKETPORT\fP '4101'" +.br +.ti -1c +.RI "#define \fBBRLAPI_SOCKETPATH\fP '/var/lib/BrlAPI'" +.br +.ti -1c +.RI "#define \fBBRLAPI_ETCDIR\fP '/etc'" +.br +.ti -1c +.RI "#define \fBBRLAPI_AUTHKEYFILE\fP 'brlapi.key'" +.br +.ti -1c +.RI "#define \fBBRLAPI_DEFAUTH\fP BRLAPI_ETCDIR '/' BRLAPI_AUTHKEYFILE" +.br +.ti -1c +.RI "#define \fBBRLAPI_SETTINGS_INITIALIZER\fP { NULL, NULL }" +.br +.in -1c +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef int \fBbrlapi_fileDescriptor\fP" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "\fBbrlapi_fileDescriptor\fP BRLAPI_STDCALL \fBbrlapi_openConnection\fP (const \fBbrlapi_connectionSettings_t\fP *desiredSettings, \fBbrlapi_connectionSettings_t\fP *actualSettings)" +.br +.ti -1c +.RI "\fBbrlapi_fileDescriptor\fP BRLAPI_STDCALL \fBbrlapi__openConnection\fP (\fBbrlapi_handle_t\fP *handle, const \fBbrlapi_connectionSettings_t\fP *desiredSettings, \fBbrlapi_connectionSettings_t\fP *actualSettings)" +.br +.ti -1c +.RI "void BRLAPI_STDCALL \fBbrlapi_closeConnection\fP (void)" +.br +.ti -1c +.RI "void BRLAPI_STDCALL \fBbrlapi__closeConnection\fP (\fBbrlapi_handle_t\fP *handle)" +.br +.in -1c +.SH "Detailed Description" +.PP +Before calling any other function of the library, calling \fBbrlapi_openConnection()\fP is needed to establish a connection to \fIBrlAPI\fP 's server. When the connection is not needed any more, \fBbrlapi_closeConnection()\fP must be called to close the connection. +.SH "Define Documentation" +.PP +.SS "#define BRLAPI_AUTHKEYFILE 'brlapi.key'" +.PP +Default name of the file containing \fIBrlAPI\fP 's authorization key +.PP +This name is relative to BRLAPI_ETCDIR +.SS "#define BRLAPI_DEFAUTH BRLAPI_ETCDIR '/' BRLAPI_AUTHKEYFILE" +.PP +Default authorization setting +.SS "#define BRLAPI_ETCDIR '/etc'" +.PP +\fIbrltty\fP 's settings directory +.PP +This is where authorization key and driver-dependent key names are found for instance. +.SS "#define BRLAPI_SETTINGS_INITIALIZER { NULL, NULL }" +.PP +Allows to initialize a structure of type \fI\fBbrlapi_connectionSettings_t\fP\fP * with default values. +.SS "#define BRLAPI_SOCKETPATH '/var/lib/BrlAPI'" +.PP +Default unix path on which connections to \fIBrlAPI\fP can be established +.SS "#define BRLAPI_SOCKETPORT '4101'" +.PP +.SS "#define BRLAPI_SOCKETPORTNUM 4101" +.PP +Default port number on which connections to \fIBrlAPI\fP can be established +.SH "Typedef Documentation" +.PP +.SS "typedef int \fBbrlapi_fileDescriptor\fP" +.PP +.SH "Function Documentation" +.PP +.SS "void BRLAPI_STDCALL brlapi__closeConnection (\fBbrlapi_handle_t\fP * handle)" +.PP +.SS "\fBbrlapi_fileDescriptor\fP BRLAPI_STDCALL brlapi__openConnection (\fBbrlapi_handle_t\fP * handle, const \fBbrlapi_connectionSettings_t\fP * desiredSettings, \fBbrlapi_connectionSettings_t\fP * actualSettings)" +.PP +.SS "void BRLAPI_STDCALL brlapi_closeConnection (void)" +.PP +Cleanly close the socket +.PP +This function locks until a closing acknowledgement is received from the server. The socket is then freed, so the file descriptor \fBbrlapi_openConnection()\fP gave has no meaning any more +.SS "\fBbrlapi_fileDescriptor\fP BRLAPI_STDCALL brlapi_openConnection (const \fBbrlapi_connectionSettings_t\fP * desiredSettings, \fBbrlapi_connectionSettings_t\fP * actualSettings)" +.PP +Open a socket and connect it to \fIBrlAPI\fP 's server +.PP +This function first loads an authorization key as specified in settings. It then creates a TCP socket and connects it to the specified machine, on the specified port. It writes the authorization key on the socket and waits for acknowledgement. +.PP +\fBReturns:\fP +.RS 4 +the file descriptor, or -1 on error +.RE +.PP +\fBNote:\fP +.RS 4 +The file descriptor is returned in case the client wants to communicate with the server without using \fIlibbrlapi\fP functions. If it uses them however, it won't have to pass the file descriptor later, since the library keeps a copy of it. But that also means that \fBbrlapi_openConnection()\fP may be called several times, but \fIlibbrlapi\fP functions will always work with the last call's descriptor +.RE +.PP +\fBExample:\fP.RS 4 + +.PP +.nf + if (brlapi_openConnection(&settings,&settings)<0) { + fprintf(stderr,'couldn't connect to BrlAPI at %s: %s\n', + settings.host, brlapi_strerror(&brlapi_error)); + exit(1); + } + +.fi +.PP +.RE +.PP +\fBErrors:\fP.RS 4 +\fIBrlAPI\fP might not be on this TCP port, the host name might not be resolvable, the authorization may fail,... +.RE +.PP +\fBParameters:\fP +.RS 4 +\fIdesiredSettings\fP this gives the desired connection parameters, as described in \fBbrlapi_connectionSettings_t\fP. If \fCNULL\fP, defaults values are used, so that it is generally a good idea to give \fCNULL\fP as default, and only fill a \fBbrlapi_connectionSettings_t\fP structure when the user gave parameters to the program for instance; +.br +\fIactualSettings\fP if not \fCNULL\fP, parameters which were actually used are stored here, if the application ever needs them. +.RE +.PP +\fBSee also:\fP +.RS 4 +\fBbrlapi_connectionSettings_t\fP \fBbrlapi_writePacket()\fP \fBbrlapi_readPacketHeader()\fP \fBbrlapi_readPacketContent()\fP \fBbrlapi_readPacket()\fP +.RE +.PP + diff --git a/Documents/BrlAPIref/man/man3/brlapi_connectionSettings_t.3 b/Documents/BrlAPIref/man/man3/brlapi_connectionSettings_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..f891e3e0211d12a4f3c9d91adf87c920d3b5c7a1 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_connectionSettings_t.3 @@ -0,0 +1,85 @@ +.TH "brlapi_connectionSettings_t" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +brlapi_connectionSettings_t \- Settings structure for \fIBrlAPI\fP connection. + +.PP +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "char * \fBauth\fP" +.br +.ti -1c +.RI "char * \fBhost\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +This structure holds every parameter needed to connect to \fIBrlAPI:\fP which file the authorization key can be found in and which computer to connect to. +.PP +\fBExamples:\fP.RS 4 + +.PP +.nf + brlapi_connectionSettings_t settings; + + settings.auth='/etc/brlapi.key'; + settings.host='foo'; + +.fi +.PP +.RE +.PP +\fIlibbrlapi\fP will read authorization key from file \fC/etc/brlapi\fP.key and connect to the machine called 'foo', on the default TCP port. +.PP +.PP +.nf + settings.host='10.1.0.2'; +.fi +.PP +.PP +lets directly enter an IP address instead of a machine name. +.PP +.PP +.nf + settings.host=':1'; +.fi +.PP +.PP +lets \fIlibbrlapi\fP connect to the local computer, on port BRLAPI_SOCKETPORTNUM+1 +.PP +\fBSee also:\fP +.RS 4 +\fBbrlapi_openConnection()\fP +.RE +.PP + +.PP +.SH "Field Documentation" +.PP +.SS "char* \fBbrlapi_connectionSettings_t::auth\fP" +.PP +For security reasons, \fIlibbrlapi\fP has to get authorized to connect to the \fIBrlAPI\fP server. This can be done via a secret key, for instance. This is the path to the file which holds it; it will hence have to be readable by the application. +.PP +Setting \fCNULL\fP defaults it to local installation setup or to the content of the BRLAPI_AUTH environment variable, if it exists. +.SS "char* \fBbrlapi_connectionSettings_t::host\fP" +.PP +This tells where the \fIBrlAPI\fP server resides: it might be listening on another computer, on any TCP port. It should look like 'foo:1', which means TCP port number BRLAPI_SOCKETPORTNUM+1 on computer called 'foo'. +.PP +\fBNote:\fP +.RS 4 +Please check that resolving this name works before complaining +.RE +.PP +Settings \fCNULL\fP defaults it to localhost, using the local installation's default TCP port, or to the content of the BRLAPI_HOST environment variable, if it exists. + +.SH "Author" +.PP +Generated automatically by Doxygen for BrlAPI from the source code. diff --git a/Documents/BrlAPIref/man/man3/brlapi_constants.h.3 b/Documents/BrlAPIref/man/man3/brlapi_constants.h.3 new file mode 100644 index 0000000000000000000000000000000000000000..3ab9f3d649bd7d5b1c50e893f964e16480b54f59 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_constants.h.3 @@ -0,0 +1,393 @@ +.TH "brlapi_constants.h" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +brlapi_constants.h \- +.SH SYNOPSIS +.br +.PP +.SS "Defines" + +.PP +.RI "\fB\fP" +.br + +.in +1c +.in +1c +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_NOOP\fP (BRLAPI_KEY_CMD(0) + 0)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_LNUP\fP (BRLAPI_KEY_CMD(0) + 1)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_LNDN\fP (BRLAPI_KEY_CMD(0) + 2)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_WINUP\fP (BRLAPI_KEY_CMD(0) + 3)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_WINDN\fP (BRLAPI_KEY_CMD(0) + 4)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PRDIFLN\fP (BRLAPI_KEY_CMD(0) + 5)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_NXDIFLN\fP (BRLAPI_KEY_CMD(0) + 6)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_ATTRUP\fP (BRLAPI_KEY_CMD(0) + 7)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_ATTRDN\fP (BRLAPI_KEY_CMD(0) + 8)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_TOP\fP (BRLAPI_KEY_CMD(0) + 9)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_BOT\fP (BRLAPI_KEY_CMD(0) + 10)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_TOP_LEFT\fP (BRLAPI_KEY_CMD(0) + 11)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_BOT_LEFT\fP (BRLAPI_KEY_CMD(0) + 12)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PRPGRPH\fP (BRLAPI_KEY_CMD(0) + 13)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_NXPGRPH\fP (BRLAPI_KEY_CMD(0) + 14)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PRPROMPT\fP (BRLAPI_KEY_CMD(0) + 15)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_NXPROMPT\fP (BRLAPI_KEY_CMD(0) + 16)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PRSEARCH\fP (BRLAPI_KEY_CMD(0) + 17)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_NXSEARCH\fP (BRLAPI_KEY_CMD(0) + 18)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CHRLT\fP (BRLAPI_KEY_CMD(0) + 19)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CHRRT\fP (BRLAPI_KEY_CMD(0) + 20)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_HWINLT\fP (BRLAPI_KEY_CMD(0) + 21)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_HWINRT\fP (BRLAPI_KEY_CMD(0) + 22)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_FWINLT\fP (BRLAPI_KEY_CMD(0) + 23)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_FWINRT\fP (BRLAPI_KEY_CMD(0) + 24)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_FWINLTSKIP\fP (BRLAPI_KEY_CMD(0) + 25)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_FWINRTSKIP\fP (BRLAPI_KEY_CMD(0) + 26)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_LNBEG\fP (BRLAPI_KEY_CMD(0) + 27)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_LNEND\fP (BRLAPI_KEY_CMD(0) + 28)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_HOME\fP (BRLAPI_KEY_CMD(0) + 29)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_BACK\fP (BRLAPI_KEY_CMD(0) + 30)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_RETURN\fP (BRLAPI_KEY_CMD(0) + 31)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_FREEZE\fP (BRLAPI_KEY_CMD(0) + 32)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_DISPMD\fP (BRLAPI_KEY_CMD(0) + 33)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SIXDOTS\fP (BRLAPI_KEY_CMD(0) + 34)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SLIDEWIN\fP (BRLAPI_KEY_CMD(0) + 35)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SKPIDLNS\fP (BRLAPI_KEY_CMD(0) + 36)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SKPBLNKWINS\fP (BRLAPI_KEY_CMD(0) + 37)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CSRVIS\fP (BRLAPI_KEY_CMD(0) + 38)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CSRHIDE\fP (BRLAPI_KEY_CMD(0) + 39)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CSRTRK\fP (BRLAPI_KEY_CMD(0) + 40)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CSRSIZE\fP (BRLAPI_KEY_CMD(0) + 41)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CSRBLINK\fP (BRLAPI_KEY_CMD(0) + 42)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_ATTRVIS\fP (BRLAPI_KEY_CMD(0) + 43)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_ATTRBLINK\fP (BRLAPI_KEY_CMD(0) + 44)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CAPBLINK\fP (BRLAPI_KEY_CMD(0) + 45)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_TUNES\fP (BRLAPI_KEY_CMD(0) + 46)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_AUTOREPEAT\fP (BRLAPI_KEY_CMD(0) + 47)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_AUTOSPEAK\fP (BRLAPI_KEY_CMD(0) + 48)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_HELP\fP (BRLAPI_KEY_CMD(0) + 49)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_INFO\fP (BRLAPI_KEY_CMD(0) + 50)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_LEARN\fP (BRLAPI_KEY_CMD(0) + 51)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PREFMENU\fP (BRLAPI_KEY_CMD(0) + 52)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PREFSAVE\fP (BRLAPI_KEY_CMD(0) + 53)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PREFLOAD\fP (BRLAPI_KEY_CMD(0) + 54)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_MENU_FIRST_ITEM\fP (BRLAPI_KEY_CMD(0) + 55)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_MENU_LAST_ITEM\fP (BRLAPI_KEY_CMD(0) + 56)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_MENU_PREV_ITEM\fP (BRLAPI_KEY_CMD(0) + 57)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_MENU_NEXT_ITEM\fP (BRLAPI_KEY_CMD(0) + 58)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_MENU_PREV_SETTING\fP (BRLAPI_KEY_CMD(0) + 59)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_MENU_NEXT_SETTING\fP (BRLAPI_KEY_CMD(0) + 60)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_MUTE\fP (BRLAPI_KEY_CMD(0) + 61)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SPKHOME\fP (BRLAPI_KEY_CMD(0) + 62)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SAY_LINE\fP (BRLAPI_KEY_CMD(0) + 63)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SAY_ABOVE\fP (BRLAPI_KEY_CMD(0) + 64)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SAY_BELOW\fP (BRLAPI_KEY_CMD(0) + 65)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SAY_SLOWER\fP (BRLAPI_KEY_CMD(0) + 66)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SAY_FASTER\fP (BRLAPI_KEY_CMD(0) + 67)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SAY_SOFTER\fP (BRLAPI_KEY_CMD(0) + 68)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SAY_LOUDER\fP (BRLAPI_KEY_CMD(0) + 69)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SWITCHVT_PREV\fP (BRLAPI_KEY_CMD(0) + 70)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SWITCHVT_NEXT\fP (BRLAPI_KEY_CMD(0) + 71)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CSRJMP_VERT\fP (BRLAPI_KEY_CMD(0) + 72)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PASTE\fP (BRLAPI_KEY_CMD(0) + 73)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_RESTARTBRL\fP (BRLAPI_KEY_CMD(0) + 74)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_RESTARTSPEECH\fP (BRLAPI_KEY_CMD(0) + 75)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_OFFLINE\fP (BRLAPI_KEY_CMD(0) + 76)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_TOGGLE_ON\fP BRLAPI_KEY_FLG(0X0100)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_TOGGLE_OFF\fP BRLAPI_KEY_FLG(0X0200)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_TOGGLE_MASK\fP (BRLAPI_KEY_FLG_TOGGLE_ON | BRLAPI_KEY_FLG_TOGGLE_OFF)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_ROUTE\fP BRLAPI_KEY_FLG(0X0400)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_REPEAT_INITIAL\fP BRLAPI_KEY_FLG(0X8000)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_REPEAT_DELAY\fP BRLAPI_KEY_FLG(0X4000)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_REPEAT_MASK\fP (BRLAPI_KEY_FLG_REPEAT_INITIAL | BRLAPI_KEY_FLG_REPEAT_DELAY)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_ROUTE\fP BRLAPI_KEY_CMD(0X01)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CUTBEGIN\fP BRLAPI_KEY_CMD(0X02)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CUTAPPEND\fP BRLAPI_KEY_CMD(0X03)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CUTRECT\fP BRLAPI_KEY_CMD(0X04)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CUTLINE\fP BRLAPI_KEY_CMD(0X05)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SWITCHVT\fP BRLAPI_KEY_CMD(0X06)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PRINDENT\fP BRLAPI_KEY_CMD(0X07)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_NXINDENT\fP BRLAPI_KEY_CMD(0X08)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_DESCCHAR\fP BRLAPI_KEY_CMD(0X09)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SETLEFT\fP BRLAPI_KEY_CMD(0X0A)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SETMARK\fP BRLAPI_KEY_CMD(0X0B)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_GOTOMARK\fP BRLAPI_KEY_CMD(0X0C)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_GOTOLINE\fP BRLAPI_KEY_CMD(0X0D)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_LINE_SCALED\fP BRLAPI_KEY_FLG(0X0100)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_LINE_TOLEFT\fP BRLAPI_KEY_FLG(0X0200)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PRDIFCHAR\fP BRLAPI_KEY_CMD(0X0E)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_NXDIFCHAR\fP BRLAPI_KEY_CMD(0X0F)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PASSDOTS\fP BRLAPI_KEY_CMD(0X22)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_SHIFT\fP BRLAPI_KEY_FLG(0X01)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_UPPER\fP BRLAPI_KEY_FLG(0X02)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_CONTROL\fP BRLAPI_KEY_FLG(0X04)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_META\fP BRLAPI_KEY_FLG(0X08)" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOT1\fP 0001" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOT2\fP 0002" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOT3\fP 0004" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOT4\fP 0010" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOT5\fP 0020" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOT6\fP 0040" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOT7\fP 0100" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOT8\fP 0200" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOTC\fP 0400" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PASSAT\fP BRLAPI_KEY_CMD(0X23)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PASSXT\fP BRLAPI_KEY_CMD(0X24)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PASSPS2\fP BRLAPI_KEY_CMD(0X25)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_KBD_RELEASE\fP BRLAPI_KEY_FLG(0X0100)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_KBD_EMUL0\fP BRLAPI_KEY_FLG(0X0200)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_KBD_EMUL1\fP BRLAPI_KEY_FLG(0X0400)" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOTS\fP(dot1, dot2, dot3, dot4, dot5, dot6, dot7, dot8)" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOT_CHORD\fP 256" +.br +.in -1c +.in -1c +.SH "Detailed Description" +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for BrlAPI from the source code. diff --git a/Documents/BrlAPIref/man/man3/brlapi_defaultExceptionHandler.3 b/Documents/BrlAPIref/man/man3/brlapi_defaultExceptionHandler.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_defaultExceptionHandler.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_deprecated.3 b/Documents/BrlAPIref/man/man3/brlapi_deprecated.3 new file mode 100644 index 0000000000000000000000000000000000000000..151dc33ed58bdb187a318e3d1672e67a3ce1b8d6 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_deprecated.3 @@ -0,0 +1,189 @@ +.TH "Deprecated names" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Deprecated names \- +.SS "Data Structures" + +.in +1c +.ti -1c +.RI "struct \fBbrlapi_writeStruct\fP" +.br +.in -1c +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBbrlapi_settings_t\fP \fBbrlapi_connectionSettings_t\fP" +.br +.ti -1c +.RI "#define \fBBRLAPI_WRITESTRUCT_INITIALIZER\fP BRLAPI_WRITEARGUMENTS_INITIALIZER" +.br +.ti -1c +.RI "#define \fBbrl_keycode_t\fP \fBbrlapi_keyCode_t\fP" +.br +.ti -1c +.RI "#define \fBbrl_type_t\fP \fBbrlapi_packetType_t\fP" +.br +.ti -1c +.RI "#define \fBBRLCOMMANDS\fP NULL" +.br +.ti -1c +.RI "#define \fBBRL_KEYCODE_MAX\fP BRLAPI_KEY_MAX" +.br +.ti -1c +.RI "#define \fBbrlapi_initializeConnection\fP brlapi_openConnection" +.br +.ti -1c +.RI "#define \fBbrlapi_getTty\fP brlapi_enterTtyMode" +.br +.ti -1c +.RI "#define \fBbrlapi_getTtyPath\fP brlapi_enterTtyModeWithPath" +.br +.ti -1c +.RI "#define \fBbrlapi_leaveTty\fP brlapi_leaveTtyMode" +.br +.ti -1c +.RI "#define \fBbrlapi_unignoreKeyRange\fP brlapi_acceptKeyRange" +.br +.ti -1c +.RI "#define \fBbrlapi_unignoreKeySet\fP brlapi_acceptKeySet" +.br +.ti -1c +.RI "#define \fBbrlapi_getRaw\fP brlapi_enterRawMode" +.br +.ti -1c +.RI "#define \fBbrlapi_leaveRaw\fP brlapi_leaveRawMode" +.br +.ti -1c +.RI "#define \fBbrlapi_suspend\fP brlapi_suspendDriver" +.br +.ti -1c +.RI "#define \fBbrlapi_resume\fP brlapi_resumeDriver" +.br +.ti -1c +.RI "#define \fBBRLERR_SUCCESS\fP BRLAPI_ERROR_SUCCESS" +.br +.ti -1c +.RI "#define \fBBRLERR_NOMEM\fP BRLAPI_ERROR_NOMEM" +.br +.ti -1c +.RI "#define \fBBRLERR_TTYBUSY\fP BRLAPI_ERROR_TTYBUSY" +.br +.ti -1c +.RI "#define \fBBRLERR_DEVICEBUSY\fP BRLAPI_ERROR_DEVICEBUSY" +.br +.ti -1c +.RI "#define \fBBRLERR_UNKNOWN_INSTRUCTION\fP BRLAPI_ERROR_UNKNOWN_INSTRUCTION" +.br +.ti -1c +.RI "#define \fBBRLERR_ILLEGAL_INSTRUCTION\fP BRLAPI_ERROR_ILLEGAL_INSTRUCTION" +.br +.ti -1c +.RI "#define \fBBRLERR_INVALID_PARAMETER\fP BRLAPI_ERROR_INVALID_PARAMETER" +.br +.ti -1c +.RI "#define \fBBRLERR_INVALID_PACKET\fP BRLAPI_ERROR_INVALID_PACKET" +.br +.ti -1c +.RI "#define \fBBRLERR_CONNREFUSED\fP BRLAPI_ERROR_CONNREFUSED" +.br +.ti -1c +.RI "#define \fBBRLERR_OPNOTSUPP\fP BRLAPI_ERROR_OPNOTSUPP" +.br +.ti -1c +.RI "#define \fBBRLERR_GAIERR\fP BRLAPI_ERROR_GAIERR" +.br +.ti -1c +.RI "#define \fBBRLERR_LIBCERR\fP BRLAPI_ERROR_LIBCERR" +.br +.ti -1c +.RI "#define \fBBRLERR_UNKNOWNTTY\fP BRLAPI_ERROR_UNKNOWNTTY" +.br +.ti -1c +.RI "#define \fBBRLERR_PROTOCOL_VERSION\fP BRLAPI_ERROR_PROTOCOL_VERSION" +.br +.ti -1c +.RI "#define \fBBRLERR_EOF\fP BRLAPI_ERROR_EOF" +.br +.ti -1c +.RI "#define \fBBRLERR_EMPTYKEY\fP BRLAPI_ERROR_EMPTYKEY" +.br +.ti -1c +.RI "#define \fBBRLERR_DRIVERERROR\fP BRLAPI_ERROR_DRIVERERROR" +.br +.in -1c +.SH "Detailed Description" +.PP +With version 0.5.0, BrlAPI is now provided through including <\fBbrlapi.h\fP> and got a big renaming pass. Old names are still available through macros, but they are deprecated since they will get dropped in the next release. This documentation is for you to know the new names. +.PP +For checking that you have completely switched to new names, just define BRLAPI_NO_DEPRECATED: that will disable compatibility macros. +.SH "Define Documentation" +.PP +.SS "#define BRL_KEYCODE_MAX BRLAPI_KEY_MAX" +.PP +.SS "#define brl_keycode_t \fBbrlapi_keyCode_t\fP" +.PP +.SS "#define brl_type_t \fBbrlapi_packetType_t\fP" +.PP +.SS "#define brlapi_getRaw brlapi_enterRawMode" +.PP +.SS "#define brlapi_getTty brlapi_enterTtyMode" +.PP +.SS "#define brlapi_getTtyPath brlapi_enterTtyModeWithPath" +.PP +.SS "#define brlapi_initializeConnection brlapi_openConnection" +.PP +.SS "#define brlapi_leaveRaw brlapi_leaveRawMode" +.PP +.SS "#define brlapi_leaveTty brlapi_leaveTtyMode" +.PP +.SS "#define brlapi_resume brlapi_resumeDriver" +.PP +.SS "#define brlapi_settings_t \fBbrlapi_connectionSettings_t\fP" +.PP +.SS "#define brlapi_suspend brlapi_suspendDriver" +.PP +.SS "#define brlapi_unignoreKeyRange brlapi_acceptKeyRange" +.PP +.SS "#define brlapi_unignoreKeySet brlapi_acceptKeySet" +.PP +.SS "#define BRLAPI_WRITESTRUCT_INITIALIZER BRLAPI_WRITEARGUMENTS_INITIALIZER" +.PP +.SS "#define BRLCOMMANDS NULL" +.PP +.SS "#define BRLERR_CONNREFUSED BRLAPI_ERROR_CONNREFUSED" +.PP +.SS "#define BRLERR_DEVICEBUSY BRLAPI_ERROR_DEVICEBUSY" +.PP +.SS "#define BRLERR_DRIVERERROR BRLAPI_ERROR_DRIVERERROR" +.PP +.SS "#define BRLERR_EMPTYKEY BRLAPI_ERROR_EMPTYKEY" +.PP +.SS "#define BRLERR_EOF BRLAPI_ERROR_EOF" +.PP +.SS "#define BRLERR_GAIERR BRLAPI_ERROR_GAIERR" +.PP +.SS "#define BRLERR_ILLEGAL_INSTRUCTION BRLAPI_ERROR_ILLEGAL_INSTRUCTION" +.PP +.SS "#define BRLERR_INVALID_PACKET BRLAPI_ERROR_INVALID_PACKET" +.PP +.SS "#define BRLERR_INVALID_PARAMETER BRLAPI_ERROR_INVALID_PARAMETER" +.PP +.SS "#define BRLERR_LIBCERR BRLAPI_ERROR_LIBCERR" +.PP +.SS "#define BRLERR_NOMEM BRLAPI_ERROR_NOMEM" +.PP +.SS "#define BRLERR_OPNOTSUPP BRLAPI_ERROR_OPNOTSUPP" +.PP +.SS "#define BRLERR_PROTOCOL_VERSION BRLAPI_ERROR_PROTOCOL_VERSION" +.PP +.SS "#define BRLERR_SUCCESS BRLAPI_ERROR_SUCCESS" +.PP +.SS "#define BRLERR_TTYBUSY BRLAPI_ERROR_TTYBUSY" +.PP +.SS "#define BRLERR_UNKNOWN_INSTRUCTION BRLAPI_ERROR_UNKNOWN_INSTRUCTION" +.PP +.SS "#define BRLERR_UNKNOWNTTY BRLAPI_ERROR_UNKNOWNTTY" +.PP + diff --git a/Documents/BrlAPIref/man/man3/brlapi_describeKeyCode.3 b/Documents/BrlAPIref/man/man3/brlapi_describeKeyCode.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_describeKeyCode.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_describedKeyCode_t.3 b/Documents/BrlAPIref/man/man3/brlapi_describedKeyCode_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..7f3d9a708c42d23af756ba98c6723083a84ed3fe --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_describedKeyCode_t.3 @@ -0,0 +1,60 @@ +.TH "brlapi_describedKeyCode_t" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +brlapi_describedKeyCode_t \- +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "const char * \fBtype\fP" +.br +.ti -1c +.RI "const char * \fBcommand\fP" +.br +.ti -1c +.RI "unsigned int \fBargument\fP" +.br +.ti -1c +.RI "unsigned int \fBflags\fP" +.br +.ti -1c +.RI "const char * \fBflag\fP [64-BRLAPI_KEY_FLAGS_SHIFT]" +.br +.ti -1c +.RI "\fBbrlapi_expandedKeyCode_t\fP \fBvalues\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Structure holding the components of a key code as returned by \fBbrlapi_describeKeyCode()\fP +.PP +.SH "Field Documentation" +.PP +.SS "const char* \fBbrlapi_describedKeyCode_t::type\fP" +.PP +the type name +.SS "const char* \fBbrlapi_describedKeyCode_t::command\fP" +.PP +the command name +.SS "unsigned int \fBbrlapi_describedKeyCode_t::argument\fP" +.PP +the argument value +.SS "unsigned int \fBbrlapi_describedKeyCode_t::flags\fP" +.PP +the flag count +.SS "const char* \fBbrlapi_describedKeyCode_t::flag\fP[64-BRLAPI_KEY_FLAGS_SHIFT]" +.PP +the flag names +.SS "\fBbrlapi_expandedKeyCode_t\fP \fBbrlapi_describedKeyCode_t::values\fP" +.PP +the actual values of the components + +.SH "Author" +.PP +Generated automatically by Doxygen for BrlAPI from the source code. diff --git a/Documents/BrlAPIref/man/man3/brlapi_driverspecific.3 b/Documents/BrlAPIref/man/man3/brlapi_driverspecific.3 new file mode 100644 index 0000000000000000000000000000000000000000..1f96991866557e12a04a9a518fc6a6ea10a26e0d --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_driverspecific.3 @@ -0,0 +1,154 @@ +.TH "Driver-Specific modes" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Driver-Specific modes \- Raw and Suspend Modes mechanism. + +.PP +.SS "Functions" + +.in +1c +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_enterRawMode\fP (const char *driver)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__enterRawMode\fP (\fBbrlapi_handle_t\fP *handle, const char *driver)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_leaveRawMode\fP (void)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__leaveRawMode\fP (\fBbrlapi_handle_t\fP *handle)" +.br +.ti -1c +.RI "ssize_t BRLAPI_STDCALL \fBbrlapi_sendRaw\fP (const void *buffer, size_t size)" +.br +.ti -1c +.RI "ssize_t BRLAPI_STDCALL \fBbrlapi__sendRaw\fP (\fBbrlapi_handle_t\fP *handle, const void *buffer, size_t size)" +.br +.ti -1c +.RI "ssize_t BRLAPI_STDCALL \fBbrlapi_recvRaw\fP (void *buffer, size_t size)" +.br +.ti -1c +.RI "ssize_t BRLAPI_STDCALL \fBbrlapi__recvRaw\fP (\fBbrlapi_handle_t\fP *handle, void *buffer, size_t size)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_suspendDriver\fP (const char *driver)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__suspendDriver\fP (\fBbrlapi_handle_t\fP *handle, const char *driver)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_resumeDriver\fP (void)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__resumeDriver\fP (\fBbrlapi_handle_t\fP *handle)" +.br +.in -1c +.SH "Detailed Description" +.PP +If the application wants to directly talk to the braille terminal, it should use Raw Mode. In this special mode, the driver gives the whole control of the terminal to it: \fIbrltty\fP doesn't work any more. +.PP +For this, it simply has to call \fBbrlapi_enterRawMode()\fP, then \fBbrlapi_sendRaw()\fP and \fBbrlapi_recvRaw()\fP, and finally give control back thanks to \fBbrlapi_leaveRawMode()\fP. +.PP +Special care of the terminal should be taken, since one might completely trash the terminal's data, or even lock it! The application should always check for terminal's type thanks to \fBbrlapi_getDriverName()\fP. +.PP +The client can also make brltty close the driver by using \fBbrlapi_suspendDriver()\fP, and resume it again with \fBbrlapi_resumeDriver()\fP. This should not be used if possible: raw mode should be sufficient for any use. If not, please ask for features :) +.SH "Function Documentation" +.PP +.SS "int BRLAPI_STDCALL brlapi__enterRawMode (\fBbrlapi_handle_t\fP * handle, const char * driver)" +.PP +.SS "int BRLAPI_STDCALL brlapi__leaveRawMode (\fBbrlapi_handle_t\fP * handle)" +.PP +.SS "ssize_t BRLAPI_STDCALL brlapi__recvRaw (\fBbrlapi_handle_t\fP * handle, void * buffer, size_t size)" +.PP +.SS "int BRLAPI_STDCALL brlapi__resumeDriver (\fBbrlapi_handle_t\fP * handle)" +.PP +.SS "ssize_t BRLAPI_STDCALL brlapi__sendRaw (\fBbrlapi_handle_t\fP * handle, const void * buffer, size_t size)" +.PP +.SS "int BRLAPI_STDCALL brlapi__suspendDriver (\fBbrlapi_handle_t\fP * handle, const char * driver)" +.PP +.SS "int BRLAPI_STDCALL brlapi_enterRawMode (const char * driver)" +.PP +Switch to Raw mode +.PP +\fBParameters:\fP +.RS 4 +\fIdriver\fP Specifies the name of the driver for which the raw communication will be established. +.RE +.PP +\fBReturns:\fP +.RS 4 +0 on success, -1 on error +.RE +.PP + +.SS "int BRLAPI_STDCALL brlapi_leaveRawMode (void)" +.PP +Leave Raw mode +.PP +\fBReturns:\fP +.RS 4 +0 on success, -1 on error +.RE +.PP + +.SS "ssize_t BRLAPI_STDCALL brlapi_recvRaw (void * buffer, size_t size)" +.PP +Get Raw data +.PP +\fBParameters:\fP +.RS 4 +\fIbuffer\fP points on a buffer where the function will store the received data; +.br +\fIsize\fP holds the buffer size. +.RE +.PP +\fBReturns:\fP +.RS 4 +its size, -1 on error or signal interruption +.RE +.PP + +.SS "int BRLAPI_STDCALL brlapi_resumeDriver (void)" +.PP +Resume braille driver +.PP +\fBReturns:\fP +.RS 4 +-1 on error +.RE +.PP + +.SS "ssize_t BRLAPI_STDCALL brlapi_sendRaw (const void * buffer, size_t size)" +.PP +Send Raw data +.PP +\fBParameters:\fP +.RS 4 +\fIbuffer\fP points on the data; +.br +\fIsize\fP holds the packet size. +.RE +.PP +\fBReturns:\fP +.RS 4 +size on success, -1 on error +.RE +.PP + +.SS "int BRLAPI_STDCALL brlapi_suspendDriver (const char * driver)" +.PP +Suspend braille driver +.PP +\fBParameters:\fP +.RS 4 +\fIdriver\fP Specifies the name of the driver which will be suspended. +.RE +.PP +\fBReturns:\fP +.RS 4 +-1 on error +.RE +.PP + diff --git a/Documents/BrlAPIref/man/man3/brlapi_enterRawMode.3 b/Documents/BrlAPIref/man/man3/brlapi_enterRawMode.3 new file mode 100644 index 0000000000000000000000000000000000000000..d918a36920bfc639b7d0fecae9cb48b0d88417cf --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_enterRawMode.3 @@ -0,0 +1 @@ +.so man3/brlapi_driverspecific.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_enterTtyMode.3 b/Documents/BrlAPIref/man/man3/brlapi_enterTtyMode.3 new file mode 100644 index 0000000000000000000000000000000000000000..7d13bb94d99f00d4cea7cd6ca07091d975f71a50 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_enterTtyMode.3 @@ -0,0 +1 @@ +.so man3/brlapi_tty.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_enterTtyModeWithPath.3 b/Documents/BrlAPIref/man/man3/brlapi_enterTtyModeWithPath.3 new file mode 100644 index 0000000000000000000000000000000000000000..7d13bb94d99f00d4cea7cd6ca07091d975f71a50 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_enterTtyModeWithPath.3 @@ -0,0 +1 @@ +.so man3/brlapi_tty.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_errfun.3 b/Documents/BrlAPIref/man/man3/brlapi_errfun.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_errfun.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_errlist.3 b/Documents/BrlAPIref/man/man3/brlapi_errlist.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_errlist.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_errno.3 b/Documents/BrlAPIref/man/man3/brlapi_errno.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_errno.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_error.3 b/Documents/BrlAPIref/man/man3/brlapi_error.3 new file mode 100644 index 0000000000000000000000000000000000000000..2db957921d3a892dc50b24b00fe9cfb15f542d32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_error.3 @@ -0,0 +1,346 @@ +.TH "Error handling" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Error handling \- How to handle errors. + +.PP +.SS "Data Structures" + +.in +1c +.ti -1c +.RI "struct \fBbrlapi_error_t\fP" +.br +.in -1c +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBBRLAPI_ERROR_SUCCESS\fP 0" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_NOMEM\fP 1" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_TTYBUSY\fP 2" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_DEVICEBUSY\fP 3" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_UNKNOWN_INSTRUCTION\fP 4" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_ILLEGAL_INSTRUCTION\fP 5" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_INVALID_PARAMETER\fP 6" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_INVALID_PACKET\fP 7" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_CONNREFUSED\fP 8" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_OPNOTSUPP\fP 9" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_GAIERR\fP 10" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_LIBCERR\fP 11" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_UNKNOWNTTY\fP 12" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_PROTOCOL_VERSION\fP 13" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_EOF\fP 14" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_EMPTYKEY\fP 15" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_DRIVERERROR\fP 16" +.br +.ti -1c +.RI "#define \fBBRLAPI_ERROR_AUTHENTICATION\fP 17" +.br +.ti -1c +.RI "#define \fBbrlapi_error\fP (*brlapi_error_location())" +.br +.ti -1c +.RI "#define \fBbrlapi_errno\fP (brlapi_error.brlerrno)" +.br +.ti -1c +.RI "#define \fBbrlapi_libcerrno\fP (brlapi_error.libcerrno)" +.br +.ti -1c +.RI "#define \fBbrlapi_gaierrno\fP (brlapi_error.gaierrno)" +.br +.ti -1c +.RI "#define \fBbrlapi_errfun\fP (brlapi_error.errfun)" +.br +.in -1c +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef uint32_t \fBbrlapi_packetType_t\fP" +.br +.ti -1c +.RI "typedef void(BRLAPI_STDCALL *) \fBbrlapi_exceptionHandler_t\fP (int error, \fBbrlapi_packetType_t\fP type, const void *packet, size_t size)" +.br +.ti -1c +.RI "typedef void(BRLAPI_STDCALL *) \fBbrlapi__exceptionHandler_t\fP (\fBbrlapi_handle_t\fP *handle, int error, \fBbrlapi_packetType_t\fP type, const void *packet, size_t size)" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "void BRLAPI_STDCALL \fBbrlapi_perror\fP (const char *s)" +.br +.ti -1c +.RI "\fBbrlapi_error_t\fP *BRLAPI_STDCALL \fBbrlapi_error_location\fP (void)" +.br +.ti -1c +.RI "const char *BRLAPI_STDCALL \fBbrlapi_strerror\fP (const \fBbrlapi_error_t\fP *error)" +.br +.ti -1c +.RI "const char *BRLAPI_STDCALL \fBbrlapi_getPacketTypeName\fP (\fBbrlapi_packetType_t\fP type)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_strexception\fP (char *buffer, size_t bufferSize, int error, \fBbrlapi_packetType_t\fP type, const void *packet, size_t packetSize)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__strexception\fP (\fBbrlapi_handle_t\fP *handle, char *buffer, size_t bufferSize, int error, \fBbrlapi_packetType_t\fP type, const void *packet, size_t packetSize)" +.br +.ti -1c +.RI "\fBbrlapi_exceptionHandler_t\fP BRLAPI_STDCALL \fBbrlapi_setExceptionHandler\fP (\fBbrlapi_exceptionHandler_t\fP handler)" +.br +.ti -1c +.RI "\fBbrlapi__exceptionHandler_t\fP BRLAPI_STDCALL \fBbrlapi__setExceptionHandler\fP (\fBbrlapi_handle_t\fP *handle, \fBbrlapi__exceptionHandler_t\fP handler)" +.br +.ti -1c +.RI "void BRLAPI_STDCALL \fBbrlapi_defaultExceptionHandler\fP (int error, \fBbrlapi_packetType_t\fP type, const void *packet, size_t size)" +.br +.ti -1c +.RI "void BRLAPI_STDCALL \fBbrlapi__defaultExceptionHandler\fP (\fBbrlapi_handle_t\fP *handle, int error, \fBbrlapi_packetType_t\fP type, const void *packet, size_t size)" +.br +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "const char * \fBbrlapi_errlist\fP []" +.br +.ti -1c +.RI "const int \fBbrlapi_nerr\fP" +.br +.ti -1c +.RI "\fBbrlapi_error_t\fP \fBbrlapi_error\fP" +.br +.ti -1c +.RI "int \fBbrlapi_errno\fP" +.br +.ti -1c +.RI "int \fBbrlapi_libcerrno\fP" +.br +.ti -1c +.RI "int \fBbrlapi_gaierrno\fP" +.br +.ti -1c +.RI "const char * \fBbrlapi_errfun\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +When a function fails, \fBbrlapi_errno\fP will hold an error code to explain why it failed. It should always be reported somehow. +.PP +Although most errors are reported that way, some (called exceptions) are reported asynchronously for efficiency reasons, because they always just report a programming error. The affected functions are: brlapi_setFocus, brlapi_write* and brlapi_sendRaw. When they happen, the next call to brlapi_something will close the connection and call the \fIexception\fP handler. If the exception handler returns, the brlapi_something function will return an end-of-file error. +.PP +The default exception handler (\fBbrlapi_defaultExceptionHandler()\fP) dumps the guilty packet before abort()ing. It can be replaced by calling \fBbrlapi_setExceptionHandler()\fP. For instance, the Java and Python bindings use this for raising a Java or Python exception that may be caught. +.SH "Define Documentation" +.PP +.SS "#define \fBbrlapi_errfun\fP (brlapi_error.errfun)" +.PP +Cheat about the brlapi_errfun C token +.SS "#define \fBbrlapi_errno\fP (brlapi_error.brlerrno)" +.PP +Cheat about the brlapi_errno C token +.SS "#define \fBbrlapi_error\fP (*brlapi_error_location())" +.PP +Cheat about the brlapi_error C token +.SS "#define BRLAPI_ERROR_AUTHENTICATION 17" +.PP +Authentication failed +.SS "#define BRLAPI_ERROR_CONNREFUSED 8" +.PP +Connection refused +.SS "#define BRLAPI_ERROR_DEVICEBUSY 3" +.PP +A connection is already using RAW or suspend mode +.SS "#define BRLAPI_ERROR_DRIVERERROR 16" +.PP +Packet returned by driver too large +.SS "#define BRLAPI_ERROR_EMPTYKEY 15" +.PP +Key file empty +.SS "#define BRLAPI_ERROR_EOF 14" +.PP +Unexpected end of file +.SS "#define BRLAPI_ERROR_GAIERR 10" +.PP +Getaddrinfo error +.SS "#define BRLAPI_ERROR_ILLEGAL_INSTRUCTION 5" +.PP +Forbiden in current mode +.SS "#define BRLAPI_ERROR_INVALID_PACKET 7" +.PP +Invalid size +.SS "#define BRLAPI_ERROR_INVALID_PARAMETER 6" +.PP +Out of range or have no sense +.SS "#define BRLAPI_ERROR_LIBCERR 11" +.PP +Libc error +.SS "#define BRLAPI_ERROR_NOMEM 1" +.PP +Not enough memory +.SS "#define BRLAPI_ERROR_OPNOTSUPP 9" +.PP +Operation not supported +.SS "#define BRLAPI_ERROR_PROTOCOL_VERSION 13" +.PP +Bad protocol version +.SS "#define BRLAPI_ERROR_SUCCESS 0" +.PP +Success +.SS "#define BRLAPI_ERROR_TTYBUSY 2" +.PP +A connection is already running in this tty +.SS "#define BRLAPI_ERROR_UNKNOWN_INSTRUCTION 4" +.PP +Not implemented in protocol +.SS "#define BRLAPI_ERROR_UNKNOWNTTY 12" +.PP +Couldn't find out the tty number +.SS "#define \fBbrlapi_gaierrno\fP (brlapi_error.gaierrno)" +.PP +Cheat about the brlapi_gaierrno C token +.SS "#define \fBbrlapi_libcerrno\fP (brlapi_error.libcerrno)" +.PP +Cheat about the brlapi_libcerrno C token +.SH "Typedef Documentation" +.PP +.SS "typedef void(BRLAPI_STDCALL *) \fBbrlapi__exceptionHandler_t\fP(\fBbrlapi_handle_t\fP *handle, int error, \fBbrlapi_packetType_t\fP type, const void *packet, size_t size)" +.PP +.SS "typedef void(BRLAPI_STDCALL *) \fBbrlapi_exceptionHandler_t\fP(int error, \fBbrlapi_packetType_t\fP type, const void *packet, size_t size)" +.PP +Types for exception handlers +.PP +Types of exception handlers which are to be given to \fBbrlapi_setExceptionHandler()\fP and \fBbrlapi__setExceptionHandler()\fP. +.PP +\fBParameters:\fP +.RS 4 +\fIhandle\fP is the handle corresponding to the guilty connection; +.br +\fIerror\fP is a BRLAPI_ERROR_ error code; +.br +\fItype\fP is the type of the guilty packet; +.br +\fIpacket\fP points to the content of the guilty packet (might be a little bit truncated); +.br +\fIsize\fP gives the guilty packet's size. +.RE +.PP + +.SS "typedef uint32_t \fBbrlapi_packetType_t\fP" +.PP +Type for packet type. Only unsigned can cross networks, 32bits +.SH "Function Documentation" +.PP +.SS "void BRLAPI_STDCALL brlapi__defaultExceptionHandler (\fBbrlapi_handle_t\fP * handle, int error, \fBbrlapi_packetType_t\fP type, const void * packet, size_t size)" +.PP +.SS "\fBbrlapi__exceptionHandler_t\fP BRLAPI_STDCALL brlapi__setExceptionHandler (\fBbrlapi_handle_t\fP * handle, \fBbrlapi__exceptionHandler_t\fP handler)" +.PP +.SS "int BRLAPI_STDCALL brlapi__strexception (\fBbrlapi_handle_t\fP * handle, char * buffer, size_t bufferSize, int error, \fBbrlapi_packetType_t\fP type, const void * packet, size_t packetSize)" +.PP +.SS "void BRLAPI_STDCALL brlapi_defaultExceptionHandler (int error, \fBbrlapi_packetType_t\fP type, const void * packet, size_t size)" +.PP +.SS "\fBbrlapi_error_t\fP* BRLAPI_STDCALL brlapi_error_location (void)" +.PP +Get per-thread error location +.PP +In multithreaded software, \fBbrlapi_error\fP is thread-specific, so api.h cheats about the brlapi_error token and actually calls \fBbrlapi_error_location()\fP. +.PP +This gets the thread specific location of global variable \fBbrlapi_error\fP +.SS "const char* BRLAPI_STDCALL brlapi_getPacketTypeName (\fBbrlapi_packetType_t\fP type)" +.PP +Get plain packet type +.PP +\fBbrlapi_getPacketTypeName()\fP returns the plain packet type name corresponding to its argument. +.SS "void BRLAPI_STDCALL brlapi_perror (const char * s)" +.PP +Print a BrlAPI error message +.PP +\fBbrlapi_perror()\fP reads \fBbrlapi_error\fP, and acts just like perror(). +.SS "\fBbrlapi_exceptionHandler_t\fP BRLAPI_STDCALL brlapi_setExceptionHandler (\fBbrlapi_exceptionHandler_t\fP handler)" +.PP +Set a new exception handler +.PP +\fBbrlapi_setExceptionHandler()\fP replaces the previous exception handler with the handler parameter. The previous exception handler is returned to make chaining error handlers possible. +.PP +The default handler just prints the exception and abort()s. +.SS "const char* BRLAPI_STDCALL brlapi_strerror (const \fBbrlapi_error_t\fP * error)" +.PP +Get plain error message +.PP +\fBbrlapi_strerror()\fP returns the plain error message corresponding to its argument. +.SS "int BRLAPI_STDCALL brlapi_strexception (char * buffer, size_t bufferSize, int error, \fBbrlapi_packetType_t\fP type, const void * packet, size_t packetSize)" +.PP +Describes an exception +.PP +\fBbrlapi_strexception()\fP puts a text describing the given exception in buffer. +.PP +The beginning of the guilty packet is dumped as a sequence of hex bytes. +.PP +\fBReturns:\fP +.RS 4 +the size of the text describing the exception, following snprintf()'s semantics. +.RE +.PP + +.SH "Variable Documentation" +.PP +.SS "const char* \fBbrlapi_errfun\fP" +.PP +Shorthand for brlapi_error.errfun +.SS "const char* \fBbrlapi_errlist\fP[]" +.PP +Error message list +.PP +These are the string constants used by \fBbrlapi_perror()\fP. +.SS "int \fBbrlapi_errno\fP" +.PP +Shorthand for brlapi_error.errno +.SS "\fBbrlapi_error_t\fP \fBbrlapi_error\fP" +.PP +Global variable brlapi_error +.PP +\fBbrlapi_error\fP is a global left-value containing the last error information. Its errno field is not reset to BRLAPI_ERROR_SUCCESS on success. +.PP +This information may be copied in \fBbrlapi_error_t\fP variables for later use with the brlapi_strerror function. +.SS "int \fBbrlapi_gaierrno\fP" +.PP +Shorthand for brlapi_error.gaierrno +.SS "int \fBbrlapi_libcerrno\fP" +.PP +Shorthand for brlapi_error.libcerrno +.SS "const int \fBbrlapi_nerr\fP" +.PP +Number of error messages diff --git a/Documents/BrlAPIref/man/man3/brlapi_errorPacket_t.3 b/Documents/BrlAPIref/man/man3/brlapi_errorPacket_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..c796c8a7f9e0c5820411fa49af8d51a56f5fa0be --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_errorPacket_t.3 @@ -0,0 +1,40 @@ +.TH "brlapi_errorPacket_t" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +brlapi_errorPacket_t \- +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "uint32_t \fBcode\fP" +.br +.ti -1c +.RI "\fBbrlapi_packetType_t\fP \fBtype\fP" +.br +.ti -1c +.RI "unsigned char \fBpacket\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Structure of error packets +.PP +.SH "Field Documentation" +.PP +.SS "uint32_t \fBbrlapi_errorPacket_t::code\fP" +.PP +.SS "\fBbrlapi_packetType_t\fP \fBbrlapi_errorPacket_t::type\fP" +.PP +.SS "unsigned char \fBbrlapi_errorPacket_t::packet\fP" +.PP + + +.SH "Author" +.PP +Generated automatically by Doxygen for BrlAPI from the source code. diff --git a/Documents/BrlAPIref/man/man3/brlapi_error_location.3 b/Documents/BrlAPIref/man/man3/brlapi_error_location.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_error_location.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_error_t.3 b/Documents/BrlAPIref/man/man3/brlapi_error_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..ed77ebe5f84239349450c29cd62ce14f6a73507b --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_error_t.3 @@ -0,0 +1,45 @@ +.TH "brlapi_error_t" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +brlapi_error_t \- +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "int \fBbrlerrno\fP" +.br +.ti -1c +.RI "int \fBlibcerrno\fP" +.br +.ti -1c +.RI "int \fBgaierrno\fP" +.br +.ti -1c +.RI "const char * \fBerrfun\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +All information that is needed to describe brlapi errors +.PP +.SH "Field Documentation" +.PP +.SS "int \fBbrlapi_error_t::brlerrno\fP" +.PP +.SS "int \fBbrlapi_error_t::libcerrno\fP" +.PP +.SS "int \fBbrlapi_error_t::gaierrno\fP" +.PP +.SS "const char* \fBbrlapi_error_t::errfun\fP" +.PP + + +.SH "Author" +.PP +Generated automatically by Doxygen for BrlAPI from the source code. diff --git a/Documents/BrlAPIref/man/man3/brlapi_exceptionHandler_t.3 b/Documents/BrlAPIref/man/man3/brlapi_exceptionHandler_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_exceptionHandler_t.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_expandKeyCode.3 b/Documents/BrlAPIref/man/man3/brlapi_expandKeyCode.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_expandKeyCode.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_expandedKeyCode_t.3 b/Documents/BrlAPIref/man/man3/brlapi_expandedKeyCode_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..56228cefb18253597677c5d2e489c9a8a68f2e15 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_expandedKeyCode_t.3 @@ -0,0 +1,48 @@ +.TH "brlapi_expandedKeyCode_t" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +brlapi_expandedKeyCode_t \- +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "unsigned int \fBtype\fP" +.br +.ti -1c +.RI "unsigned int \fBcommand\fP" +.br +.ti -1c +.RI "unsigned int \fBargument\fP" +.br +.ti -1c +.RI "unsigned int \fBflags\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Structure holding the components of a key code as returned by \fBbrlapi_expandKeyCode()\fP +.PP +.SH "Field Documentation" +.PP +.SS "unsigned int \fBbrlapi_expandedKeyCode_t::type\fP" +.PP +the type value +.SS "unsigned int \fBbrlapi_expandedKeyCode_t::command\fP" +.PP +the command value +.SS "unsigned int \fBbrlapi_expandedKeyCode_t::argument\fP" +.PP +the argument value +.SS "unsigned int \fBbrlapi_expandedKeyCode_t::flags\fP" +.PP +the flags value + +.SH "Author" +.PP +Generated automatically by Doxygen for BrlAPI from the source code. diff --git a/Documents/BrlAPIref/man/man3/brlapi_fd_mutex.3 b/Documents/BrlAPIref/man/man3/brlapi_fd_mutex.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_fd_mutex.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_fileDescriptor.3 b/Documents/BrlAPIref/man/man3/brlapi_fileDescriptor.3 new file mode 100644 index 0000000000000000000000000000000000000000..246c55313f72699bc6fdccdfe90257e8c5514855 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_fileDescriptor.3 @@ -0,0 +1 @@ +.so man3/brlapi_connection.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_gaierrno.3 b/Documents/BrlAPIref/man/man3/brlapi_gaierrno.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_gaierrno.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_getDisplaySize.3 b/Documents/BrlAPIref/man/man3/brlapi_getDisplaySize.3 new file mode 100644 index 0000000000000000000000000000000000000000..5dcc662448ca1b1d77c31a117c3ce09f52762b95 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_getDisplaySize.3 @@ -0,0 +1 @@ +.so man3/brlapi_info.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_getDriverName.3 b/Documents/BrlAPIref/man/man3/brlapi_getDriverName.3 new file mode 100644 index 0000000000000000000000000000000000000000..5dcc662448ca1b1d77c31a117c3ce09f52762b95 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_getDriverName.3 @@ -0,0 +1 @@ +.so man3/brlapi_info.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_getDriverSpecificModePacket_t.3 b/Documents/BrlAPIref/man/man3/brlapi_getDriverSpecificModePacket_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..d1ed7c78935ff3f88414a8ed2962fe9153c242c6 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_getDriverSpecificModePacket_t.3 @@ -0,0 +1,40 @@ +.TH "brlapi_getDriverSpecificModePacket_t" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +brlapi_getDriverSpecificModePacket_t \- +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "uint32_t \fBmagic\fP" +.br +.ti -1c +.RI "unsigned char \fBnameLength\fP" +.br +.ti -1c +.RI "char \fBname\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Structure of enterRawMode / suspend packets +.PP +.SH "Field Documentation" +.PP +.SS "uint32_t \fBbrlapi_getDriverSpecificModePacket_t::magic\fP" +.PP +.SS "unsigned char \fBbrlapi_getDriverSpecificModePacket_t::nameLength\fP" +.PP +.SS "char \fBbrlapi_getDriverSpecificModePacket_t::name\fP" +.PP + + +.SH "Author" +.PP +Generated automatically by Doxygen for BrlAPI from the source code. diff --git a/Documents/BrlAPIref/man/man3/brlapi_getHandleSize.3 b/Documents/BrlAPIref/man/man3/brlapi_getHandleSize.3 new file mode 100644 index 0000000000000000000000000000000000000000..8bbe255da5ea3e5e37b90ad7dd5675cc0bb9acac --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_getHandleSize.3 @@ -0,0 +1 @@ +.so man3/brlapi_handles.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_getPacketTypeName.3 b/Documents/BrlAPIref/man/man3/brlapi_getPacketTypeName.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_getPacketTypeName.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_getRaw.3 b/Documents/BrlAPIref/man/man3/brlapi_getRaw.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_getRaw.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_getTty.3 b/Documents/BrlAPIref/man/man3/brlapi_getTty.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_getTty.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_getTtyPath.3 b/Documents/BrlAPIref/man/man3/brlapi_getTtyPath.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_getTtyPath.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_handle_t.3 b/Documents/BrlAPIref/man/man3/brlapi_handle_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..8bbe255da5ea3e5e37b90ad7dd5675cc0bb9acac --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_handle_t.3 @@ -0,0 +1 @@ +.so man3/brlapi_handles.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_handles.3 b/Documents/BrlAPIref/man/man3/brlapi_handles.3 new file mode 100644 index 0000000000000000000000000000000000000000..7733be2815ba194c402aa244a6c78c9be86e74df --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_handles.3 @@ -0,0 +1,40 @@ +.TH "BrlAPI handles" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +BrlAPI handles \- +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef \fBbrlapi_handle_t\fP \fBbrlapi_handle_t\fP" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "size_t BRLAPI_STDCALL \fBbrlapi_getHandleSize\fP (void)" +.br +.in -1c +.SH "Detailed Description" +.PP +Each function provided by BrlAPI comes in two versions. +.PP +1. A version whose name is prefixed by brlapi_ for clients opening only one simultaneous connection with BrlAPI (most frequen case) +.PP +2. A version whose name is prefixed by brlapi__ for use by clients wishing to open more than one connection to BrlAPI. +.PP +A function called brlapi__foo is used in exactly the same way as its brlapi_foo counterpart, except that it takes an additional argument (the first one), which is a handle letting the client refer to a given connection in a similar manner to what file descriptors do. +.PP +In case you want to check that your code is not erroneously using brlapi_foo functions, define BRLAPI_NO_SINGLE_SESSION before including <\fBbrlapi.h\fP>: that will disable the declaration of all single session functions. +.SH "Typedef Documentation" +.PP +.SS "typedef struct \fBbrlapi_handle_t\fP \fBbrlapi_handle_t\fP" +.PP +Type for BrlAPI hanles +.SH "Function Documentation" +.PP +.SS "size_t BRLAPI_STDCALL brlapi_getHandleSize (void)" +.PP +Returns the size of an object of type brlapi_handle_t in bytes diff --git a/Documents/BrlAPIref/man/man3/brlapi_header_t.3 b/Documents/BrlAPIref/man/man3/brlapi_header_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..88854336696d1f7a964702f26bb8bfea0109987f --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_header_t.3 @@ -0,0 +1,35 @@ +.TH "brlapi_header_t" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +brlapi_header_t \- +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "uint32_t \fBsize\fP" +.br +.ti -1c +.RI "\fBbrlapi_packetType_t\fP \fBtype\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Structure of packets headers +.PP +.SH "Field Documentation" +.PP +.SS "uint32_t \fBbrlapi_header_t::size\fP" +.PP +.SS "\fBbrlapi_packetType_t\fP \fBbrlapi_header_t::type\fP" +.PP + + +.SH "Author" +.PP +Generated automatically by Doxygen for BrlAPI from the source code. diff --git a/Documents/BrlAPIref/man/man3/brlapi_ignoreAllKeys.3 b/Documents/BrlAPIref/man/man3/brlapi_ignoreAllKeys.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_ignoreAllKeys.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_ignoreKeyRanges.3 b/Documents/BrlAPIref/man/man3/brlapi_ignoreKeyRanges.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_ignoreKeyRanges.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_ignoreKeys.3 b/Documents/BrlAPIref/man/man3/brlapi_ignoreKeys.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_ignoreKeys.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_info.3 b/Documents/BrlAPIref/man/man3/brlapi_info.3 new file mode 100644 index 0000000000000000000000000000000000000000..4a14ec3f42706b1f5d7884f5d5868271d393c31c --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_info.3 @@ -0,0 +1,68 @@ +.TH "Getting Terminal information" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Getting Terminal information \- How to get information about the connected Terminal. + +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBBRLAPI_MAXNAMELENGTH\fP 31" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_getDriverName\fP (char *buffer, size_t size)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__getDriverName\fP (\fBbrlapi_handle_t\fP *handle, char *buffer, size_t size)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_getDisplaySize\fP (unsigned int *x, unsigned int *y)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__getDisplaySize\fP (\fBbrlapi_handle_t\fP *handle, unsigned int *x, unsigned int *y)" +.br +.in -1c +.SH "Detailed Description" +.PP +Before using Raw mode or key codes, the application should always check the type of the connected terminal, to be sure it is really the one it expects. +.PP +One should also check for display size, so as to adjust further displaying on it. +.SH "Define Documentation" +.PP +.SS "#define BRLAPI_MAXNAMELENGTH 31" +.PP +Maximum name length for names embeded in BrlAPI packets, not counting any termination \\0 character +.SH "Function Documentation" +.PP +.SS "int BRLAPI_STDCALL brlapi__getDisplaySize (\fBbrlapi_handle_t\fP * handle, unsigned int * x, unsigned int * y)" +.PP +.SS "int BRLAPI_STDCALL brlapi__getDriverName (\fBbrlapi_handle_t\fP * handle, char * buffer, size_t size)" +.PP +.SS "int BRLAPI_STDCALL brlapi_getDisplaySize (unsigned int * x, unsigned int * y)" +.PP +Return the size of the braille display +.SS "int BRLAPI_STDCALL brlapi_getDriverName (char * buffer, size_t size)" +.PP +Return the complete name of the driver used by \fIbrltty\fP +.PP +This function fills its argument with the whole name of the braille terminal if available, terminated with a '\\0'. +.PP +\fBParameters:\fP +.RS 4 +\fIbuffer\fP is the buffer given by the application; +.br +\fIsize\fP is the maximum size for the name buffer. +.RE +.PP +\fBReturns:\fP +.RS 4 +-1 on error, or a positive value giving the size of the needed buffer, if the supplied one is to small (same as snprintf()). +.RE +.PP + diff --git a/Documents/BrlAPIref/man/man3/brlapi_initializeConnection.3 b/Documents/BrlAPIref/man/man3/brlapi_initializeConnection.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_initializeConnection.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_keyCode_t.3 b/Documents/BrlAPIref/man/man3/brlapi_keyCode_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..685ae3cb2b79862331f072c868c8f09a1e43ed48 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_keyCode_t.3 @@ -0,0 +1 @@ +.so man3/brlapi_keycodes.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_keycodes.3 b/Documents/BrlAPIref/man/man3/brlapi_keycodes.3 new file mode 100644 index 0000000000000000000000000000000000000000..ee940b3e09c37a4748b3b4749539cf812331b75c --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_keycodes.3 @@ -0,0 +1,1038 @@ +.TH "Types and Defines fore BrlAPI Key Codes" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Types and Defines fore BrlAPI Key Codes \- +.in +1c +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_NOOP\fP (BRLAPI_KEY_CMD(0) + 0)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_LNUP\fP (BRLAPI_KEY_CMD(0) + 1)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_LNDN\fP (BRLAPI_KEY_CMD(0) + 2)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_WINUP\fP (BRLAPI_KEY_CMD(0) + 3)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_WINDN\fP (BRLAPI_KEY_CMD(0) + 4)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PRDIFLN\fP (BRLAPI_KEY_CMD(0) + 5)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_NXDIFLN\fP (BRLAPI_KEY_CMD(0) + 6)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_ATTRUP\fP (BRLAPI_KEY_CMD(0) + 7)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_ATTRDN\fP (BRLAPI_KEY_CMD(0) + 8)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_TOP\fP (BRLAPI_KEY_CMD(0) + 9)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_BOT\fP (BRLAPI_KEY_CMD(0) + 10)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_TOP_LEFT\fP (BRLAPI_KEY_CMD(0) + 11)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_BOT_LEFT\fP (BRLAPI_KEY_CMD(0) + 12)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PRPGRPH\fP (BRLAPI_KEY_CMD(0) + 13)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_NXPGRPH\fP (BRLAPI_KEY_CMD(0) + 14)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PRPROMPT\fP (BRLAPI_KEY_CMD(0) + 15)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_NXPROMPT\fP (BRLAPI_KEY_CMD(0) + 16)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PRSEARCH\fP (BRLAPI_KEY_CMD(0) + 17)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_NXSEARCH\fP (BRLAPI_KEY_CMD(0) + 18)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CHRLT\fP (BRLAPI_KEY_CMD(0) + 19)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CHRRT\fP (BRLAPI_KEY_CMD(0) + 20)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_HWINLT\fP (BRLAPI_KEY_CMD(0) + 21)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_HWINRT\fP (BRLAPI_KEY_CMD(0) + 22)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_FWINLT\fP (BRLAPI_KEY_CMD(0) + 23)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_FWINRT\fP (BRLAPI_KEY_CMD(0) + 24)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_FWINLTSKIP\fP (BRLAPI_KEY_CMD(0) + 25)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_FWINRTSKIP\fP (BRLAPI_KEY_CMD(0) + 26)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_LNBEG\fP (BRLAPI_KEY_CMD(0) + 27)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_LNEND\fP (BRLAPI_KEY_CMD(0) + 28)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_HOME\fP (BRLAPI_KEY_CMD(0) + 29)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_BACK\fP (BRLAPI_KEY_CMD(0) + 30)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_RETURN\fP (BRLAPI_KEY_CMD(0) + 31)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_FREEZE\fP (BRLAPI_KEY_CMD(0) + 32)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_DISPMD\fP (BRLAPI_KEY_CMD(0) + 33)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SIXDOTS\fP (BRLAPI_KEY_CMD(0) + 34)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SLIDEWIN\fP (BRLAPI_KEY_CMD(0) + 35)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SKPIDLNS\fP (BRLAPI_KEY_CMD(0) + 36)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SKPBLNKWINS\fP (BRLAPI_KEY_CMD(0) + 37)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CSRVIS\fP (BRLAPI_KEY_CMD(0) + 38)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CSRHIDE\fP (BRLAPI_KEY_CMD(0) + 39)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CSRTRK\fP (BRLAPI_KEY_CMD(0) + 40)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CSRSIZE\fP (BRLAPI_KEY_CMD(0) + 41)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CSRBLINK\fP (BRLAPI_KEY_CMD(0) + 42)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_ATTRVIS\fP (BRLAPI_KEY_CMD(0) + 43)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_ATTRBLINK\fP (BRLAPI_KEY_CMD(0) + 44)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CAPBLINK\fP (BRLAPI_KEY_CMD(0) + 45)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_TUNES\fP (BRLAPI_KEY_CMD(0) + 46)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_AUTOREPEAT\fP (BRLAPI_KEY_CMD(0) + 47)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_AUTOSPEAK\fP (BRLAPI_KEY_CMD(0) + 48)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_HELP\fP (BRLAPI_KEY_CMD(0) + 49)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_INFO\fP (BRLAPI_KEY_CMD(0) + 50)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_LEARN\fP (BRLAPI_KEY_CMD(0) + 51)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PREFMENU\fP (BRLAPI_KEY_CMD(0) + 52)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PREFSAVE\fP (BRLAPI_KEY_CMD(0) + 53)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PREFLOAD\fP (BRLAPI_KEY_CMD(0) + 54)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_MENU_FIRST_ITEM\fP (BRLAPI_KEY_CMD(0) + 55)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_MENU_LAST_ITEM\fP (BRLAPI_KEY_CMD(0) + 56)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_MENU_PREV_ITEM\fP (BRLAPI_KEY_CMD(0) + 57)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_MENU_NEXT_ITEM\fP (BRLAPI_KEY_CMD(0) + 58)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_MENU_PREV_SETTING\fP (BRLAPI_KEY_CMD(0) + 59)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_MENU_NEXT_SETTING\fP (BRLAPI_KEY_CMD(0) + 60)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_MUTE\fP (BRLAPI_KEY_CMD(0) + 61)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SPKHOME\fP (BRLAPI_KEY_CMD(0) + 62)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SAY_LINE\fP (BRLAPI_KEY_CMD(0) + 63)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SAY_ABOVE\fP (BRLAPI_KEY_CMD(0) + 64)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SAY_BELOW\fP (BRLAPI_KEY_CMD(0) + 65)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SAY_SLOWER\fP (BRLAPI_KEY_CMD(0) + 66)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SAY_FASTER\fP (BRLAPI_KEY_CMD(0) + 67)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SAY_SOFTER\fP (BRLAPI_KEY_CMD(0) + 68)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SAY_LOUDER\fP (BRLAPI_KEY_CMD(0) + 69)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SWITCHVT_PREV\fP (BRLAPI_KEY_CMD(0) + 70)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SWITCHVT_NEXT\fP (BRLAPI_KEY_CMD(0) + 71)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CSRJMP_VERT\fP (BRLAPI_KEY_CMD(0) + 72)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PASTE\fP (BRLAPI_KEY_CMD(0) + 73)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_RESTARTBRL\fP (BRLAPI_KEY_CMD(0) + 74)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_RESTARTSPEECH\fP (BRLAPI_KEY_CMD(0) + 75)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_OFFLINE\fP (BRLAPI_KEY_CMD(0) + 76)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_TOGGLE_ON\fP BRLAPI_KEY_FLG(0X0100)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_TOGGLE_OFF\fP BRLAPI_KEY_FLG(0X0200)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_TOGGLE_MASK\fP (BRLAPI_KEY_FLG_TOGGLE_ON | BRLAPI_KEY_FLG_TOGGLE_OFF)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_ROUTE\fP BRLAPI_KEY_FLG(0X0400)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_REPEAT_INITIAL\fP BRLAPI_KEY_FLG(0X8000)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_REPEAT_DELAY\fP BRLAPI_KEY_FLG(0X4000)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_REPEAT_MASK\fP (BRLAPI_KEY_FLG_REPEAT_INITIAL | BRLAPI_KEY_FLG_REPEAT_DELAY)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_ROUTE\fP BRLAPI_KEY_CMD(0X01)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CUTBEGIN\fP BRLAPI_KEY_CMD(0X02)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CUTAPPEND\fP BRLAPI_KEY_CMD(0X03)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CUTRECT\fP BRLAPI_KEY_CMD(0X04)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_CUTLINE\fP BRLAPI_KEY_CMD(0X05)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SWITCHVT\fP BRLAPI_KEY_CMD(0X06)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PRINDENT\fP BRLAPI_KEY_CMD(0X07)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_NXINDENT\fP BRLAPI_KEY_CMD(0X08)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_DESCCHAR\fP BRLAPI_KEY_CMD(0X09)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SETLEFT\fP BRLAPI_KEY_CMD(0X0A)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_SETMARK\fP BRLAPI_KEY_CMD(0X0B)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_GOTOMARK\fP BRLAPI_KEY_CMD(0X0C)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_GOTOLINE\fP BRLAPI_KEY_CMD(0X0D)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_LINE_SCALED\fP BRLAPI_KEY_FLG(0X0100)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_LINE_TOLEFT\fP BRLAPI_KEY_FLG(0X0200)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PRDIFCHAR\fP BRLAPI_KEY_CMD(0X0E)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_NXDIFCHAR\fP BRLAPI_KEY_CMD(0X0F)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PASSDOTS\fP BRLAPI_KEY_CMD(0X22)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_SHIFT\fP BRLAPI_KEY_FLG(0X01)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_UPPER\fP BRLAPI_KEY_FLG(0X02)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_CONTROL\fP BRLAPI_KEY_FLG(0X04)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_META\fP BRLAPI_KEY_FLG(0X08)" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOT1\fP 0001" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOT2\fP 0002" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOT3\fP 0004" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOT4\fP 0010" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOT5\fP 0020" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOT6\fP 0040" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOT7\fP 0100" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOT8\fP 0200" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOTC\fP 0400" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PASSAT\fP BRLAPI_KEY_CMD(0X23)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PASSXT\fP BRLAPI_KEY_CMD(0X24)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_PASSPS2\fP BRLAPI_KEY_CMD(0X25)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_KBD_RELEASE\fP BRLAPI_KEY_FLG(0X0100)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_KBD_EMUL0\fP BRLAPI_KEY_FLG(0X0200)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_KBD_EMUL1\fP BRLAPI_KEY_FLG(0X0400)" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOTS\fP(dot1, dot2, dot3, dot4, dot5, dot6, dot7, dot8)" +.br +.ti -1c +.RI "#define \fBBRLAPI_DOT_CHORD\fP 256" +.br +.in -1c +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBBRLAPI_PRIxKEYCODE\fP PRIx64" +.br +.ti -1c +.RI "#define \fBBRLAPI_PRIuKEYCODE\fP PRIu64" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_MAX\fP UINT64_C(0XFFFFFFFFFFFFFFFF)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLAGS_MASK\fP UINT64_C(0XFFFFFFFF00000000)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLAGS_SHIFT\fP 32" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG\fP(v) ((\fBbrlapi_keyCode_t\fP)(v) << BRLAPI_KEY_FLAGS_SHIFT)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_MOD1\fP BRLAPI_KEY_FLG(0x00000008)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_MOD2\fP BRLAPI_KEY_FLG(0x00000010)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_MOD3\fP BRLAPI_KEY_FLG(0x00000020)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_MOD4\fP BRLAPI_KEY_FLG(0x00000040)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_MOD5\fP BRLAPI_KEY_FLG(0x00000080)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_TYPE_MASK\fP UINT64_C(0X00000000E0000000)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_TYPE_SHIFT\fP 29" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_TYPE_CMD\fP UINT64_C(0X0000000020000000)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_TYPE_SYM\fP UINT64_C(0X0000000000000000)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CODE_MASK\fP UINT64_C(0X000000001FFFFFFF)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CODE_SHIFT\fP 0" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_BLK_MASK\fP UINT64_C(0X1FFF0000)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_BLK_SHIFT\fP 16" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_ARG_MASK\fP UINT64_C(0X0000FFFF)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_ARG_SHIFT\fP 0" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD\fP(v) ((v) << BRLAPI_KEY_CMD_BLK_SHIFT)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_BACKSPACE\fP UINT64_C(0X0000FF08)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_TAB\fP UINT64_C(0X0000FF09)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_LINEFEED\fP UINT64_C(0X0000FF0D)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_ESCAPE\fP UINT64_C(0X0000FF1B)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_HOME\fP UINT64_C(0X0000FF50)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_LEFT\fP UINT64_C(0X0000FF51)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_UP\fP UINT64_C(0X0000FF52)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_RIGHT\fP UINT64_C(0X0000FF53)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_DOWN\fP UINT64_C(0X0000FF54)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_PAGE_UP\fP UINT64_C(0X0000FF55)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_PAGE_DOWN\fP UINT64_C(0X0000FF56)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_END\fP UINT64_C(0X0000FF57)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_INSERT\fP UINT64_C(0X0000FF63)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_FUNCTION\fP UINT64_C(0X0000FFBE)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_DELETE\fP UINT64_C(0X0000FFFF)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_UNICODE\fP UINT64_C(0X01000000)" +.br +.in -1c +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef uint64_t \fBbrlapi_keyCode_t\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Key codes are unsigned 64 bit integers. This 64-bit space is split into 3 parts: +.PP +.IP "\(bu" 2 +bits 63-32 (BRLAPI_KEY_FLAGS_MASK), flags: bits 39-32 are standard X modifiers (shift, control, meta, ...). Other flags are used for some commands, see documentation of BRLAPI_KEY_FLG_* for their respective uses. +.IP "\(bu" 2 +bits 31-29 (BRLAPI_KEY_TYPE_MASK), key type: either BRLAPI_KEY_TYPE_CMD for braille commands, or BRLAPI_KEY_TYPE_SYM for standard X keysyms. +.IP "\(bu" 2 +bits 28-0 (BRLAPI_KEY_CODE_MASK), key code: for braille commands, see BRLAPI_KEY_CMD_* ; for standard X keysyms, this is the keysym value, see X11 documentation, a complete list is probably available on your system in /usr/include/X11/keysymdef.h +.PP +.PP +The third part is itself split into two parts: a command number and a command value. The relative sizes of these parts vary according to the key type. +.PP +For a braille command, bits 28-16 (BRLAPI_KEY_CMD_BLK_MASK) hold the braille command number, while bits 15-0 (BRLAPI_KEY_CMD_ARG_MASK) hold the command value. +.PP +For a X keysym, if it is a unicode keysym (0x1uvwxyz), then the command number part is 0x1000000 and the value part is 0xuvwxyz. Else, the command part is held by bits 28-8 and the value part is held by bits 7-0. This permits to easily handle usual cases like 0x00xy (latin1), 0x01xy (latin2), XK_Backspace (0xff08, backspace), XK_Tab (0xff09, tab), ... +.PP +For instance, if key == 0x0000000020010008, +.IP "\(bu" 2 +(key & BRLAPI_KEY_TYPE_MASK) == BRLAPI_KEY_TYPE_CMD, so it's a braille command +.IP "\(bu" 2 +(key & BRLAPI_KEY_CMD_BLK_MASK) == BRLAPI_KEY_CMD_ROUTE, so it's the braille route command. +.IP "\(bu" 2 +(key & BRLAPI_KEY_CMD_ARG_MASK) == 8, so the highlighted cell is the 9th one (cells are numbered from 0) +.IP "\(bu" 2 +(key & BRLAPI_KEY_FLAGS_MASK) == 0, so no modifier key was pressed during the command, and no particular flag applies to the command. +.PP +.PP +if key == 0x000000010000FF09, +.IP "\(bu" 2 +(key & BRLAPI_KEY_TYPE_MASK) == BRLAPI_KEY_TYPE_SYM, so it's a keysym +.IP "\(bu" 2 +(key & BRLAPI_KEY_CODE_MASK) == XK_Tab, so it's the tab key. BRLAPI_KEY_SYM_TAB can also be used here, as well as a few other BRLAPI_KEY_SYM_* constants which are provided to avoid having to include X11/keysymdef.h +.IP "\(bu" 2 +(key & BRLAPI_KEY_FLAGS_MASK) == BRLAPI_KEY_FLG_SHIFT, so the shift modifier was pressed during the command. +.PP +.PP +in the X11 standard some keysyms are directly unicode, for instance if key == 0x0000000001001EA0, +.IP "\(bu" 2 +(key & BRLAPI_KEY_TYPE_MASK) == BRLAPI_KEY_TYPE_SYM, so it's a keysym +.IP "\(bu" 2 +(key & BRLAPI_KEY_SYM_UNICODE) != 0 so it's a unicode keysym, whose value is key & (BRLAPI_KEY_SYM_UNICODE-1). Of course, one can also consider (key & BRLAPI_KEY_CODE_MASK) == XK_Abelowdot +.IP "\(bu" 2 +(key & BRLAPI_KEY_FLAGS_MASK) == 0, so no modifier key was pressed during the command, and no particular flag applies to the command. +.PP +.PP +The \fBbrlapi_expandKeyCode()\fP function may be used for splitting key codes into these parts. +.SH "Define Documentation" +.PP +.SS "#define BRLAPI_DOT1 0001" +.PP +upper-left dot of standard braille cell +.SS "#define BRLAPI_DOT2 0002" +.PP +middle-left dot of standard braille cell +.SS "#define BRLAPI_DOT3 0004" +.PP +lower-left dot of standard braille cell +.SS "#define BRLAPI_DOT4 0010" +.PP +upper-right dot of standard braille cell +.SS "#define BRLAPI_DOT5 0020" +.PP +middle-right dot of standard braille cell +.SS "#define BRLAPI_DOT6 0040" +.PP +lower-right dot of standard braille cell +.SS "#define BRLAPI_DOT7 0100" +.PP +lower-left dot of computer braille cell +.SS "#define BRLAPI_DOT8 0200" +.PP +lower-right dot of computer braille cell +.SS "#define BRLAPI_DOT_CHORD 256" +.PP +space key +.SS "#define BRLAPI_DOTC 0400" +.PP +space key pressed +.SS "#define BRLAPI_DOTS(dot1, dot2, dot3, dot4, dot5, dot6, dot7, dot8)" +.PP +\fBValue:\fP +.PP +.nf +(\ + ((dot1)? BRLAPI_DOT1: 0) | \ + ((dot2)? BRLAPI_DOT2: 0) | \ + ((dot3)? BRLAPI_DOT3: 0) | \ + ((dot4)? BRLAPI_DOT4: 0) | \ + ((dot5)? BRLAPI_DOT5: 0) | \ + ((dot6)? BRLAPI_DOT6: 0) | \ + ((dot7)? BRLAPI_DOT7: 0) | \ + ((dot8)? BRLAPI_DOT8: 0) \ +) +.fi +Helper macro to easily produce braille patterns +.SS "#define BRLAPI_KEY_CMD(v) ((v) << BRLAPI_KEY_CMD_BLK_SHIFT)" +.PP +.SS "#define BRLAPI_KEY_CMD_ARG_MASK UINT64_C(0X0000FFFF)" +.PP +Mask for braille command value +.SS "#define BRLAPI_KEY_CMD_ARG_SHIFT 0" +.PP +Shift for braille command value +.SS "#define BRLAPI_KEY_CMD_ATTRBLINK (BRLAPI_KEY_CMD(0) + 44)" +.PP +toggle attribute blinking on/off +.SS "#define BRLAPI_KEY_CMD_ATTRDN (BRLAPI_KEY_CMD(0) + 8)" +.PP +go down to nearest line with different highlighting +.SS "#define BRLAPI_KEY_CMD_ATTRUP (BRLAPI_KEY_CMD(0) + 7)" +.PP +go up to nearest line with different highlighting +.SS "#define BRLAPI_KEY_CMD_ATTRVIS (BRLAPI_KEY_CMD(0) + 43)" +.PP +toggle attribute underlining on/off +.SS "#define BRLAPI_KEY_CMD_AUTOREPEAT (BRLAPI_KEY_CMD(0) + 47)" +.PP +toggle autorepeat on/off +.SS "#define BRLAPI_KEY_CMD_AUTOSPEAK (BRLAPI_KEY_CMD(0) + 48)" +.PP +toggle autospeak on/off +.SS "#define BRLAPI_KEY_CMD_BACK (BRLAPI_KEY_CMD(0) + 30)" +.PP +go back (undo unexpected cursor tracking motion) +.SS "#define BRLAPI_KEY_CMD_BLK_MASK UINT64_C(0X1FFF0000)" +.PP +Mask for braille command type +.SS "#define BRLAPI_KEY_CMD_BLK_SHIFT 16" +.PP +Shift for braille command type +.SS "#define BRLAPI_KEY_CMD_BOT (BRLAPI_KEY_CMD(0) + 10)" +.PP +go to bottom line +.SS "#define BRLAPI_KEY_CMD_BOT_LEFT (BRLAPI_KEY_CMD(0) + 12)" +.PP +go to beginning of bottom line +.SS "#define BRLAPI_KEY_CMD_CAPBLINK (BRLAPI_KEY_CMD(0) + 45)" +.PP +toggle capital letter blinking on/off +.SS "#define BRLAPI_KEY_CMD_CHRLT (BRLAPI_KEY_CMD(0) + 19)" +.PP +go left one character +.SS "#define BRLAPI_KEY_CMD_CHRRT (BRLAPI_KEY_CMD(0) + 20)" +.PP +go right one character +.SS "#define BRLAPI_KEY_CMD_CSRBLINK (BRLAPI_KEY_CMD(0) + 42)" +.PP +toggle cursor blinking on/off +.SS "#define BRLAPI_KEY_CMD_CSRHIDE (BRLAPI_KEY_CMD(0) + 39)" +.PP +toggle hidden cursor on/off +.SS "#define BRLAPI_KEY_CMD_CSRJMP_VERT (BRLAPI_KEY_CMD(0) + 72)" +.PP +bring cursor to line (no horizontal motion) +.SS "#define BRLAPI_KEY_CMD_CSRSIZE (BRLAPI_KEY_CMD(0) + 41)" +.PP +toggle cursor style block/underline +.SS "#define BRLAPI_KEY_CMD_CSRTRK (BRLAPI_KEY_CMD(0) + 40)" +.PP +toggle cursor tracking on/off +.SS "#define BRLAPI_KEY_CMD_CSRVIS (BRLAPI_KEY_CMD(0) + 38)" +.PP +toggle cursor visibility on/off +.SS "#define BRLAPI_KEY_CMD_CUTAPPEND BRLAPI_KEY_CMD(0X03)" +.PP +append to existing cut buffer from character +.SS "#define BRLAPI_KEY_CMD_CUTBEGIN BRLAPI_KEY_CMD(0X02)" +.PP +start new cut buffer at character +.SS "#define BRLAPI_KEY_CMD_CUTLINE BRLAPI_KEY_CMD(0X05)" +.PP +linear cut to character +.SS "#define BRLAPI_KEY_CMD_CUTRECT BRLAPI_KEY_CMD(0X04)" +.PP +rectangular cut to character +.SS "#define BRLAPI_KEY_CMD_DESCCHAR BRLAPI_KEY_CMD(0X09)" +.PP +describe character +.SS "#define BRLAPI_KEY_CMD_DISPMD (BRLAPI_KEY_CMD(0) + 33)" +.PP +toggle display mode attributes/text +.SS "#define BRLAPI_KEY_CMD_FREEZE (BRLAPI_KEY_CMD(0) + 32)" +.PP +toggle screen mode frozen/live +.SS "#define BRLAPI_KEY_CMD_FWINLT (BRLAPI_KEY_CMD(0) + 23)" +.PP +go left one window +.SS "#define BRLAPI_KEY_CMD_FWINLTSKIP (BRLAPI_KEY_CMD(0) + 25)" +.PP +go left to nearest non-blank window +.SS "#define BRLAPI_KEY_CMD_FWINRT (BRLAPI_KEY_CMD(0) + 24)" +.PP +go right one window +.SS "#define BRLAPI_KEY_CMD_FWINRTSKIP (BRLAPI_KEY_CMD(0) + 26)" +.PP +go right to nearest non-blank window +.SS "#define BRLAPI_KEY_CMD_GOTOLINE BRLAPI_KEY_CMD(0X0D)" +.PP +go to line +.SS "#define BRLAPI_KEY_CMD_GOTOMARK BRLAPI_KEY_CMD(0X0C)" +.PP +go to remembered window position +.SS "#define BRLAPI_KEY_CMD_HELP (BRLAPI_KEY_CMD(0) + 49)" +.PP +enter/leave help display +.SS "#define BRLAPI_KEY_CMD_HOME (BRLAPI_KEY_CMD(0) + 29)" +.PP +go to cursor +.SS "#define BRLAPI_KEY_CMD_HWINLT (BRLAPI_KEY_CMD(0) + 21)" +.PP +go left half a window +.SS "#define BRLAPI_KEY_CMD_HWINRT (BRLAPI_KEY_CMD(0) + 22)" +.PP +go right half a window +.SS "#define BRLAPI_KEY_CMD_INFO (BRLAPI_KEY_CMD(0) + 50)" +.PP +enter/leave status display +.SS "#define BRLAPI_KEY_CMD_LEARN (BRLAPI_KEY_CMD(0) + 51)" +.PP +enter/leave command learn mode +.SS "#define BRLAPI_KEY_CMD_LNBEG (BRLAPI_KEY_CMD(0) + 27)" +.PP +go to beginning of line +.SS "#define BRLAPI_KEY_CMD_LNDN (BRLAPI_KEY_CMD(0) + 2)" +.PP +go down one line +.SS "#define BRLAPI_KEY_CMD_LNEND (BRLAPI_KEY_CMD(0) + 28)" +.PP +go to end of line +.SS "#define BRLAPI_KEY_CMD_LNUP (BRLAPI_KEY_CMD(0) + 1)" +.PP +go up one line +.SS "#define BRLAPI_KEY_CMD_MENU_FIRST_ITEM (BRLAPI_KEY_CMD(0) + 55)" +.PP +go to first item in menu +.SS "#define BRLAPI_KEY_CMD_MENU_LAST_ITEM (BRLAPI_KEY_CMD(0) + 56)" +.PP +go to last item in menu +.SS "#define BRLAPI_KEY_CMD_MENU_NEXT_ITEM (BRLAPI_KEY_CMD(0) + 58)" +.PP +go to next item in menu +.SS "#define BRLAPI_KEY_CMD_MENU_NEXT_SETTING (BRLAPI_KEY_CMD(0) + 60)" +.PP +change current item in menu to next choice +.SS "#define BRLAPI_KEY_CMD_MENU_PREV_ITEM (BRLAPI_KEY_CMD(0) + 57)" +.PP +go to previous item in menu +.SS "#define BRLAPI_KEY_CMD_MENU_PREV_SETTING (BRLAPI_KEY_CMD(0) + 59)" +.PP +change current item in menu to previous choice +.SS "#define BRLAPI_KEY_CMD_MUTE (BRLAPI_KEY_CMD(0) + 61)" +.PP +stop speaking immediately +.SS "#define BRLAPI_KEY_CMD_NOOP (BRLAPI_KEY_CMD(0) + 0)" +.PP +do nothing +.SS "#define BRLAPI_KEY_CMD_NXDIFCHAR BRLAPI_KEY_CMD(0X0F)" +.PP +go down to nearest line with different character +.SS "#define BRLAPI_KEY_CMD_NXDIFLN (BRLAPI_KEY_CMD(0) + 6)" +.PP +go down to nearest line with different content +.SS "#define BRLAPI_KEY_CMD_NXINDENT BRLAPI_KEY_CMD(0X08)" +.PP +go down to nearest line without greater indent +.SS "#define BRLAPI_KEY_CMD_NXPGRPH (BRLAPI_KEY_CMD(0) + 14)" +.PP +go down to first line of next paragraph +.SS "#define BRLAPI_KEY_CMD_NXPROMPT (BRLAPI_KEY_CMD(0) + 16)" +.PP +go down to next command prompt +.SS "#define BRLAPI_KEY_CMD_NXSEARCH (BRLAPI_KEY_CMD(0) + 18)" +.PP +search forward for content of cut buffer +.SS "#define BRLAPI_KEY_CMD_OFFLINE (BRLAPI_KEY_CMD(0) + 76)" +.PP +braille display temporarily unavailable +.SS "#define BRLAPI_KEY_CMD_PASSAT BRLAPI_KEY_CMD(0X23)" +.PP +input AT (aka set 2) keyboard scan code +.SS "#define BRLAPI_KEY_CMD_PASSDOTS BRLAPI_KEY_CMD(0X22)" +.PP +input character as braille dots +.SS "#define BRLAPI_KEY_CMD_PASSPS2 BRLAPI_KEY_CMD(0X25)" +.PP +input PS/2 (aka set 3) keyboard scan code +.SS "#define BRLAPI_KEY_CMD_PASSXT BRLAPI_KEY_CMD(0X24)" +.PP +input XT (aka set 1) keyboard scan code +.SS "#define BRLAPI_KEY_CMD_PASTE (BRLAPI_KEY_CMD(0) + 73)" +.PP +insert cut buffer at cursor +.SS "#define BRLAPI_KEY_CMD_PRDIFCHAR BRLAPI_KEY_CMD(0X0E)" +.PP +go up to nearest line with different character +.SS "#define BRLAPI_KEY_CMD_PRDIFLN (BRLAPI_KEY_CMD(0) + 5)" +.PP +go up to nearest line with different content +.SS "#define BRLAPI_KEY_CMD_PREFLOAD (BRLAPI_KEY_CMD(0) + 54)" +.PP +restore saved preferences +.SS "#define BRLAPI_KEY_CMD_PREFMENU (BRLAPI_KEY_CMD(0) + 52)" +.PP +enter/leave preferences menu +.SS "#define BRLAPI_KEY_CMD_PREFSAVE (BRLAPI_KEY_CMD(0) + 53)" +.PP +save current preferences +.SS "#define BRLAPI_KEY_CMD_PRINDENT BRLAPI_KEY_CMD(0X07)" +.PP +go up to nearest line without greater indent +.SS "#define BRLAPI_KEY_CMD_PRPGRPH (BRLAPI_KEY_CMD(0) + 13)" +.PP +go up to last line of previous paragraph +.SS "#define BRLAPI_KEY_CMD_PRPROMPT (BRLAPI_KEY_CMD(0) + 15)" +.PP +go up to previous command prompt +.SS "#define BRLAPI_KEY_CMD_PRSEARCH (BRLAPI_KEY_CMD(0) + 17)" +.PP +search backward for content of cut buffer +.SS "#define BRLAPI_KEY_CMD_RESTARTBRL (BRLAPI_KEY_CMD(0) + 74)" +.PP +reinitialize braille driver +.SS "#define BRLAPI_KEY_CMD_RESTARTSPEECH (BRLAPI_KEY_CMD(0) + 75)" +.PP +reinitialize speech driver +.SS "#define BRLAPI_KEY_CMD_RETURN (BRLAPI_KEY_CMD(0) + 31)" +.PP +go back (after cursor tracking) or to cursor (cursor not in window) +.SS "#define BRLAPI_KEY_CMD_ROUTE BRLAPI_KEY_CMD(0X01)" +.PP +bring cursor to character +.SS "#define BRLAPI_KEY_CMD_SAY_ABOVE (BRLAPI_KEY_CMD(0) + 64)" +.PP +speak from top of screen through current line +.SS "#define BRLAPI_KEY_CMD_SAY_BELOW (BRLAPI_KEY_CMD(0) + 65)" +.PP +speak from current line through bottom of screen +.SS "#define BRLAPI_KEY_CMD_SAY_FASTER (BRLAPI_KEY_CMD(0) + 67)" +.PP +increase speech rate +.SS "#define BRLAPI_KEY_CMD_SAY_LINE (BRLAPI_KEY_CMD(0) + 63)" +.PP +speak current line +.SS "#define BRLAPI_KEY_CMD_SAY_LOUDER (BRLAPI_KEY_CMD(0) + 69)" +.PP +increase speech volume +.SS "#define BRLAPI_KEY_CMD_SAY_SLOWER (BRLAPI_KEY_CMD(0) + 66)" +.PP +decrease speech rate +.SS "#define BRLAPI_KEY_CMD_SAY_SOFTER (BRLAPI_KEY_CMD(0) + 68)" +.PP +decrease speech volume +.SS "#define BRLAPI_KEY_CMD_SETLEFT BRLAPI_KEY_CMD(0X0A)" +.PP +position left end of window at character +.SS "#define BRLAPI_KEY_CMD_SETMARK BRLAPI_KEY_CMD(0X0B)" +.PP +remember current window position +.SS "#define BRLAPI_KEY_CMD_SIXDOTS (BRLAPI_KEY_CMD(0) + 34)" +.PP +toggle text style 6-dot/8-dot +.SS "#define BRLAPI_KEY_CMD_SKPBLNKWINS (BRLAPI_KEY_CMD(0) + 37)" +.PP +toggle skipping of blank windows on/off +.SS "#define BRLAPI_KEY_CMD_SKPIDLNS (BRLAPI_KEY_CMD(0) + 36)" +.PP +toggle skipping of lines with identical content on/off +.SS "#define BRLAPI_KEY_CMD_SLIDEWIN (BRLAPI_KEY_CMD(0) + 35)" +.PP +toggle sliding window on/off +.SS "#define BRLAPI_KEY_CMD_SPKHOME (BRLAPI_KEY_CMD(0) + 62)" +.PP +go to current (most recent) speech position +.SS "#define BRLAPI_KEY_CMD_SWITCHVT BRLAPI_KEY_CMD(0X06)" +.PP +switch to virtual terminal +.SS "#define BRLAPI_KEY_CMD_SWITCHVT_NEXT (BRLAPI_KEY_CMD(0) + 71)" +.PP +switch to next virtual terminal +.SS "#define BRLAPI_KEY_CMD_SWITCHVT_PREV (BRLAPI_KEY_CMD(0) + 70)" +.PP +switch to previous virtual terminal +.SS "#define BRLAPI_KEY_CMD_TOP (BRLAPI_KEY_CMD(0) + 9)" +.PP +go to top line +.SS "#define BRLAPI_KEY_CMD_TOP_LEFT (BRLAPI_KEY_CMD(0) + 11)" +.PP +go to beginning of top line +.SS "#define BRLAPI_KEY_CMD_TUNES (BRLAPI_KEY_CMD(0) + 46)" +.PP +toggle alert tunes on/off +.SS "#define BRLAPI_KEY_CMD_WINDN (BRLAPI_KEY_CMD(0) + 4)" +.PP +go down several lines +.SS "#define BRLAPI_KEY_CMD_WINUP (BRLAPI_KEY_CMD(0) + 3)" +.PP +go up several lines +.SS "#define BRLAPI_KEY_CODE_MASK UINT64_C(0X000000001FFFFFFF)" +.PP +Mask for code of brlapi_keyCode_t +.SS "#define BRLAPI_KEY_CODE_SHIFT 0" +.PP +Shift for code of brlapi_keyCode_t +.SS "#define BRLAPI_KEY_FLAGS_MASK UINT64_C(0XFFFFFFFF00000000)" +.PP +Mask for flags of brlapi_keyCode_t +.SS "#define BRLAPI_KEY_FLAGS_SHIFT 32" +.PP +Shift for flags of brlapi_keyCode_t +.SS "#define BRLAPI_KEY_FLG(v) ((\fBbrlapi_keyCode_t\fP)(v) << BRLAPI_KEY_FLAGS_SHIFT)" +.PP +.SS "#define BRLAPI_KEY_FLG_CONTROL BRLAPI_KEY_FLG(0X04)" +.PP +control key pressed +.SS "#define BRLAPI_KEY_FLG_KBD_EMUL0 BRLAPI_KEY_FLG(0X0200)" +.PP +it is an emulation 0 scan code +.SS "#define BRLAPI_KEY_FLG_KBD_EMUL1 BRLAPI_KEY_FLG(0X0400)" +.PP +it is an emulation 1 scan code +.SS "#define BRLAPI_KEY_FLG_KBD_RELEASE BRLAPI_KEY_FLG(0X0100)" +.PP +it is a release scan code +.SS "#define BRLAPI_KEY_FLG_LINE_SCALED BRLAPI_KEY_FLG(0X0100)" +.PP +scale arg=0X00-0XFF to screen height +.SS "#define BRLAPI_KEY_FLG_LINE_TOLEFT BRLAPI_KEY_FLG(0X0200)" +.PP +go to beginning of line +.SS "#define BRLAPI_KEY_FLG_META BRLAPI_KEY_FLG(0X08)" +.PP +meta key pressed +.SS "#define BRLAPI_KEY_FLG_MOD1 BRLAPI_KEY_FLG(0x00000008)" +.PP +Mod1 modifier (AKA meta) +.SS "#define BRLAPI_KEY_FLG_MOD2 BRLAPI_KEY_FLG(0x00000010)" +.PP +Mod2 modifier (usually numlock) +.SS "#define BRLAPI_KEY_FLG_MOD3 BRLAPI_KEY_FLG(0x00000020)" +.PP +Mod3 modifier +.SS "#define BRLAPI_KEY_FLG_MOD4 BRLAPI_KEY_FLG(0x00000040)" +.PP +Mod4 modifier +.SS "#define BRLAPI_KEY_FLG_MOD5 BRLAPI_KEY_FLG(0x00000080)" +.PP +Mod5 modifier (usually Alt-Gr) +.SS "#define BRLAPI_KEY_FLG_REPEAT_DELAY BRLAPI_KEY_FLG(0X4000)" +.PP +wait before repeating +.SS "#define BRLAPI_KEY_FLG_REPEAT_INITIAL BRLAPI_KEY_FLG(0X8000)" +.PP +execute command on key press +.SS "#define BRLAPI_KEY_FLG_REPEAT_MASK (BRLAPI_KEY_FLG_REPEAT_INITIAL | BRLAPI_KEY_FLG_REPEAT_DELAY)" +.PP +mask for all repeat flags +.SS "#define BRLAPI_KEY_FLG_ROUTE BRLAPI_KEY_FLG(0X0400)" +.PP +bring cursor into window after function +.SS "#define BRLAPI_KEY_FLG_SHIFT BRLAPI_KEY_FLG(0X01)" +.PP +shift key pressed +.SS "#define BRLAPI_KEY_FLG_TOGGLE_MASK (BRLAPI_KEY_FLG_TOGGLE_ON | BRLAPI_KEY_FLG_TOGGLE_OFF)" +.PP +mask for all toggle flags +.SS "#define BRLAPI_KEY_FLG_TOGGLE_OFF BRLAPI_KEY_FLG(0X0200)" +.PP +disable feature +.SS "#define BRLAPI_KEY_FLG_TOGGLE_ON BRLAPI_KEY_FLG(0X0100)" +.PP +enable feature +.SS "#define BRLAPI_KEY_FLG_UPPER BRLAPI_KEY_FLG(0X02)" +.PP +convert to uppercase +.SS "#define BRLAPI_KEY_MAX UINT64_C(0XFFFFFFFFFFFFFFFF)" +.PP +Brlapi_keyCode_t's biggest value +.PP +As defined in \fC\fP +.SS "#define BRLAPI_KEY_SYM_BACKSPACE UINT64_C(0X0000FF08)" +.PP +Standard X keysyms +.SS "#define BRLAPI_KEY_SYM_DELETE UINT64_C(0X0000FFFF)" +.PP +.SS "#define BRLAPI_KEY_SYM_DOWN UINT64_C(0X0000FF54)" +.PP +.SS "#define BRLAPI_KEY_SYM_END UINT64_C(0X0000FF57)" +.PP +.SS "#define BRLAPI_KEY_SYM_ESCAPE UINT64_C(0X0000FF1B)" +.PP +.SS "#define BRLAPI_KEY_SYM_FUNCTION UINT64_C(0X0000FFBE)" +.PP +.SS "#define BRLAPI_KEY_SYM_HOME UINT64_C(0X0000FF50)" +.PP +.SS "#define BRLAPI_KEY_SYM_INSERT UINT64_C(0X0000FF63)" +.PP +.SS "#define BRLAPI_KEY_SYM_LEFT UINT64_C(0X0000FF51)" +.PP +.SS "#define BRLAPI_KEY_SYM_LINEFEED UINT64_C(0X0000FF0D)" +.PP +.SS "#define BRLAPI_KEY_SYM_PAGE_DOWN UINT64_C(0X0000FF56)" +.PP +.SS "#define BRLAPI_KEY_SYM_PAGE_UP UINT64_C(0X0000FF55)" +.PP +.SS "#define BRLAPI_KEY_SYM_RIGHT UINT64_C(0X0000FF53)" +.PP +.SS "#define BRLAPI_KEY_SYM_TAB UINT64_C(0X0000FF09)" +.PP +.SS "#define BRLAPI_KEY_SYM_UNICODE UINT64_C(0X01000000)" +.PP +.SS "#define BRLAPI_KEY_SYM_UP UINT64_C(0X0000FF52)" +.PP +.SS "#define BRLAPI_KEY_TYPE_CMD UINT64_C(0X0000000020000000)" +.PP +Braille command brlapi_keyCode_t +.SS "#define BRLAPI_KEY_TYPE_MASK UINT64_C(0X00000000E0000000)" +.PP +Mask for type of brlapi_keyCode_t +.SS "#define BRLAPI_KEY_TYPE_SHIFT 29" +.PP +Shift for type of brlapi_keyCode_t +.SS "#define BRLAPI_KEY_TYPE_SYM UINT64_C(0X0000000000000000)" +.PP +X Keysym brlapi_keyCode_t +.SS "#define BRLAPI_PRIuKEYCODE PRIu64" +.PP +Unsigned print format for brlapi_keyCode_t +.SS "#define BRLAPI_PRIxKEYCODE PRIx64" +.PP +Hex print format for brlapi_keyCode_t +.SH "Typedef Documentation" +.PP +.SS "typedef uint64_t \fBbrlapi_keyCode_t\fP" +.PP + diff --git a/Documents/BrlAPIref/man/man3/brlapi_keycodes.h.3 b/Documents/BrlAPIref/man/man3/brlapi_keycodes.h.3 new file mode 100644 index 0000000000000000000000000000000000000000..35c8105f1e5d5dc3288126be171f7363c009c176 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_keycodes.h.3 @@ -0,0 +1,142 @@ +.TH "brlapi_keycodes.h" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +brlapi_keycodes.h \- +.SH SYNOPSIS +.br +.PP +\fC#include 'brlapi_constants.h'\fP +.br + +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBBRLAPI_PRIxKEYCODE\fP PRIx64" +.br +.ti -1c +.RI "#define \fBBRLAPI_PRIuKEYCODE\fP PRIu64" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_MAX\fP UINT64_C(0XFFFFFFFFFFFFFFFF)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLAGS_MASK\fP UINT64_C(0XFFFFFFFF00000000)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLAGS_SHIFT\fP 32" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG\fP(v) ((\fBbrlapi_keyCode_t\fP)(v) << BRLAPI_KEY_FLAGS_SHIFT)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_MOD1\fP BRLAPI_KEY_FLG(0x00000008)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_MOD2\fP BRLAPI_KEY_FLG(0x00000010)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_MOD3\fP BRLAPI_KEY_FLG(0x00000020)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_MOD4\fP BRLAPI_KEY_FLG(0x00000040)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_FLG_MOD5\fP BRLAPI_KEY_FLG(0x00000080)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_TYPE_MASK\fP UINT64_C(0X00000000E0000000)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_TYPE_SHIFT\fP 29" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_TYPE_CMD\fP UINT64_C(0X0000000020000000)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_TYPE_SYM\fP UINT64_C(0X0000000000000000)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CODE_MASK\fP UINT64_C(0X000000001FFFFFFF)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CODE_SHIFT\fP 0" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_BLK_MASK\fP UINT64_C(0X1FFF0000)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_BLK_SHIFT\fP 16" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_ARG_MASK\fP UINT64_C(0X0000FFFF)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD_ARG_SHIFT\fP 0" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_CMD\fP(v) ((v) << BRLAPI_KEY_CMD_BLK_SHIFT)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_BACKSPACE\fP UINT64_C(0X0000FF08)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_TAB\fP UINT64_C(0X0000FF09)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_LINEFEED\fP UINT64_C(0X0000FF0D)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_ESCAPE\fP UINT64_C(0X0000FF1B)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_HOME\fP UINT64_C(0X0000FF50)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_LEFT\fP UINT64_C(0X0000FF51)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_UP\fP UINT64_C(0X0000FF52)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_RIGHT\fP UINT64_C(0X0000FF53)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_DOWN\fP UINT64_C(0X0000FF54)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_PAGE_UP\fP UINT64_C(0X0000FF55)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_PAGE_DOWN\fP UINT64_C(0X0000FF56)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_END\fP UINT64_C(0X0000FF57)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_INSERT\fP UINT64_C(0X0000FF63)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_FUNCTION\fP UINT64_C(0X0000FFBE)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_DELETE\fP UINT64_C(0X0000FFFF)" +.br +.ti -1c +.RI "#define \fBBRLAPI_KEY_SYM_UNICODE\fP UINT64_C(0X01000000)" +.br +.in -1c +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef uint64_t \fBbrlapi_keyCode_t\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for BrlAPI from the source code. diff --git a/Documents/BrlAPIref/man/man3/brlapi_keys.3 b/Documents/BrlAPIref/man/man3/brlapi_keys.3 new file mode 100644 index 0000000000000000000000000000000000000000..6d19b245e07e9df61d549105e73ba147864f10f8 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_keys.3 @@ -0,0 +1,331 @@ +.TH "Reading key presses" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Reading key presses \- How to read key presses from the braille terminal. + +.PP +.SS "Data Structures" + +.in +1c +.ti -1c +.RI "struct \fBbrlapi_expandedKeyCode_t\fP" +.br +.ti -1c +.RI "struct \fBbrlapi_describedKeyCode_t\fP" +.br +.ti -1c +.RI "struct \fBbrlapi_range_t\fP" +.br +.in -1c +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBbrlapi_ignoreAllKeys\fP() brlapi_ignoreKeys(brlapi_rangeType_all, NULL, 0)" +.br +.ti -1c +.RI "#define \fBbrlapi_acceptAllKeys\fP() brlapi_acceptKeys(brlapi_rangeType_all, NULL, 0)" +.br +.ti -1c +.RI "#define \fBBRLAPI_UC_ROW\fP 0x2800UL" +.br +.ti -1c +.RI "#define \fBBRLAPI_MAXKEYSETSIZE\fP (BRLAPI_MAXPACKETSIZE / sizeof(\fBbrlapi_keyCode_t\fP))" +.br +.ti -1c +.RI "#define \fBbrlapi__ignoreAllKeys\fP(handle) brlapi__ignoreKeys(handle, brlapi_rangeType_all, NULL, 0)" +.br +.ti -1c +.RI "#define \fBbrlapi__acceptAllKeys\fP(handle) brlapi__acceptKeys(handle, brlapi_rangeType_all, NULL, 0)" +.br +.in -1c +.SS "Enumerations" + +.in +1c +.ti -1c +.RI "enum \fBbrlapi_rangeType_t\fP { \fBbrlapi_rangeType_all\fP, \fBbrlapi_rangeType_type\fP, \fBbrlapi_rangeType_command\fP, \fBbrlapi_rangeType_key\fP, \fBbrlapi_rangeType_code\fP }" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_expandKeyCode\fP (\fBbrlapi_keyCode_t\fP code, \fBbrlapi_expandedKeyCode_t\fP *expansion)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_describeKeyCode\fP (\fBbrlapi_keyCode_t\fP code, \fBbrlapi_describedKeyCode_t\fP *description)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_readKey\fP (int wait, \fBbrlapi_keyCode_t\fP *code)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__readKey\fP (\fBbrlapi_handle_t\fP *handle, int wait, \fBbrlapi_keyCode_t\fP *code)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_ignoreKeys\fP (\fBbrlapi_rangeType_t\fP type, const \fBbrlapi_keyCode_t\fP keys[], unsigned int count)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__ignoreKeys\fP (\fBbrlapi_handle_t\fP *handle, \fBbrlapi_rangeType_t\fP type, const \fBbrlapi_keyCode_t\fP keys[], unsigned int count)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_acceptKeys\fP (\fBbrlapi_rangeType_t\fP type, const \fBbrlapi_keyCode_t\fP keys[], unsigned int count)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__acceptKeys\fP (\fBbrlapi_handle_t\fP *handle, \fBbrlapi_rangeType_t\fP type, const \fBbrlapi_keyCode_t\fP keys[], unsigned int count)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__ignoreAllKeys\fP (\fBbrlapi_handle_t\fP *handle)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__acceptAllKeys\fP (\fBbrlapi_handle_t\fP *handle)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_ignoreKeyRanges\fP (\fBbrlapi_range_t\fP ranges[], unsigned int count)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__ignoreKeyRanges\fP (\fBbrlapi_handle_t\fP *handle, \fBbrlapi_range_t\fP ranges[], unsigned int count)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_acceptKeyRanges\fP (\fBbrlapi_range_t\fP ranges[], unsigned int count)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__acceptKeyRanges\fP (\fBbrlapi_handle_t\fP *handle, \fBbrlapi_range_t\fP ranges[], unsigned int count)" +.br +.in -1c +.SH "Detailed Description" +.PP +Once \fBbrlapi_enterTtyMode()\fP has been called, the application can call \fBbrlapi_readKey()\fP to read key presses. Either key codes (see \fBTypes and Defines fore BrlAPI Key Codes\fP) or commands will be returned, depending on parameters given to \fBbrlapi_enterTtyMode()\fP. +.PP +Key presses are buffered, so that calling \fBbrlapi_readKey()\fP in non-blocking mode from time to time should suffice. +.SH "Define Documentation" +.PP +.SS "#define brlapi__acceptAllKeys(handle) brlapi__acceptKeys(handle, brlapi_rangeType_all, NULL, 0)" +.PP +.SS "#define brlapi__ignoreAllKeys(handle) brlapi__ignoreKeys(handle, brlapi_rangeType_all, NULL, 0)" +.PP +.SS "int BRLAPI_STDCALL brlapi_acceptAllKeys(void) brlapi_acceptKeys(brlapi_rangeType_all, NULL, 0)" +.PP +Accept all key presses from the braille keyboard +.PP +This function asks the server to give all keys to the application, and not give them to \fIbrltty\fP. +.PP +Warning: after calling this function, make sure to call \fBbrlapi_ignoreKeys()\fP for ignoring important keys like BRL_CMD_SWITCHVT_PREV/NEXT and such. +.SS "int BRLAPI_STDCALL brlapi_ignoreAllKeys(void) brlapi_ignoreKeys(brlapi_rangeType_all, NULL, 0)" +.PP +Ignore all key presses from the braille keyboard +.PP +This function asks the server to give all keys to \fIbrltty\fP, rather than returning them to the application via \fBbrlapi_readKey()\fP. +.SS "#define BRLAPI_MAXKEYSETSIZE (BRLAPI_MAXPACKETSIZE / sizeof(\fBbrlapi_keyCode_t\fP))" +.PP +Maximum keyset size, i.e. maximum number of keys allowed in a key set +.SS "#define BRLAPI_UC_ROW 0x2800UL" +.PP +Unicode braille row +.SH "Enumeration Type Documentation" +.PP +.SS "enum \fBbrlapi_rangeType_t\fP" +.PP +types of key ranges +.PP +\fBEnumerator: \fP +.in +1c +.TP +\fB\fIbrlapi_rangeType_all \fP\fP +all keys, code must be 0 +.TP +\fB\fIbrlapi_rangeType_type \fP\fP +all keys of a given type +.TP +\fB\fIbrlapi_rangeType_command \fP\fP +all keys of a given command block, i.e. matching the key type and command parts +.TP +\fB\fIbrlapi_rangeType_key \fP\fP +a given key with any flags +.TP +\fB\fIbrlapi_rangeType_code \fP\fP +a given key code +.SH "Function Documentation" +.PP +.SS "int BRLAPI_STDCALL brlapi__acceptAllKeys (\fBbrlapi_handle_t\fP * handle)" +.PP +.SS "int BRLAPI_STDCALL brlapi__acceptKeyRanges (\fBbrlapi_handle_t\fP * handle, \fBbrlapi_range_t\fP ranges[], unsigned int count)" +.PP +.SS "int BRLAPI_STDCALL brlapi__acceptKeys (\fBbrlapi_handle_t\fP * handle, \fBbrlapi_rangeType_t\fP type, const \fBbrlapi_keyCode_t\fP keys[], unsigned int count)" +.PP +.SS "int BRLAPI_STDCALL brlapi__ignoreAllKeys (\fBbrlapi_handle_t\fP * handle)" +.PP +.SS "int BRLAPI_STDCALL brlapi__ignoreKeyRanges (\fBbrlapi_handle_t\fP * handle, \fBbrlapi_range_t\fP ranges[], unsigned int count)" +.PP +.SS "int BRLAPI_STDCALL brlapi__ignoreKeys (\fBbrlapi_handle_t\fP * handle, \fBbrlapi_rangeType_t\fP type, const \fBbrlapi_keyCode_t\fP keys[], unsigned int count)" +.PP +.SS "int BRLAPI_STDCALL brlapi__readKey (\fBbrlapi_handle_t\fP * handle, int wait, \fBbrlapi_keyCode_t\fP * code)" +.PP +.SS "int BRLAPI_STDCALL brlapi_acceptKeyRanges (\fBbrlapi_range_t\fP ranges[], unsigned int count)" +.PP +Accept some key presses from the braille keyboard +.PP +This function asks the server to return the provided key ranges (inclusive) to the application, and not give them to \fIbrltty\fP. +.PP +\fBParameters:\fP +.RS 4 +\fIranges\fP key ranges, which are inclusive +.br +\fIcount\fP number of ranges +.RE +.PP +\fBNote:\fP +.RS 4 +The given codes should be raw keycodes (i.e. some driver name was given to \fBbrlapi_enterTtyMode()\fP) +.RE +.PP + +.SS "int BRLAPI_STDCALL brlapi_acceptKeys (\fBbrlapi_rangeType_t\fP type, const \fBbrlapi_keyCode_t\fP keys[], unsigned int count)" +.PP +Accept some key presses from the braille keyboard +.PP +This function asks the server to give the provided keys to the application, and not give them to \fIbrltty\fP. +.PP +\fBParameters:\fP +.RS 4 +\fItype\fP type of keys to be ignored +.br +\fIkeys\fP array of keys to be ignored +.br +\fIcount\fP number of keys +.RE +.PP +\fBNote:\fP +.RS 4 +The given codes should be \fIbrltty\fP commands (NULL or '' was given to \fBbrlapi_enterTtyMode()\fP) +.RE +.PP + +.SS "int BRLAPI_STDCALL brlapi_describeKeyCode (\fBbrlapi_keyCode_t\fP code, \fBbrlapi_describedKeyCode_t\fP * description)" +.PP +Describe the components of a key code. +.PP +\fBParameters:\fP +.RS 4 +\fIcode\fP the keycode to be described +.br +\fIdescription\fP pointer to the structure that receives the description +.RE +.PP +\fBReturns:\fP +.RS 4 +0 on success, -1 on error +.RE +.PP + +.SS "int BRLAPI_STDCALL brlapi_expandKeyCode (\fBbrlapi_keyCode_t\fP code, \fBbrlapi_expandedKeyCode_t\fP * expansion)" +.PP +Expand the components of a key code +.PP +\fBParameters:\fP +.RS 4 +\fIcode\fP the key code to be expanded +.br +\fIexpansion\fP pointer to the structure that receives the components +.RE +.PP +\fBReturns:\fP +.RS 4 +0 on success, -1 on error +.RE +.PP + +.SS "int BRLAPI_STDCALL brlapi_ignoreKeyRanges (\fBbrlapi_range_t\fP ranges[], unsigned int count)" +.PP +Ignore some key presses from the braille keyboard +.PP +This function asks the server to give the provided key ranges to \fIbrltty\fP, rather than returning them to the application via \fBbrlapi_readKey()\fP. +.PP +\fBParameters:\fP +.RS 4 +\fIranges\fP key ranges, which are inclusive +.br +\fIcount\fP number of ranges +.RE +.PP +\fBNote:\fP +.RS 4 +The given codes should be raw keycodes (i.e. some driver name was given to \fBbrlapi_enterTtyMode()\fP) +.RE +.PP + +.SS "int BRLAPI_STDCALL brlapi_ignoreKeys (\fBbrlapi_rangeType_t\fP type, const \fBbrlapi_keyCode_t\fP keys[], unsigned int count)" +.PP +Ignore some key presses from the braille keyboard +.PP +This function asks the server to give the provided keys to \fIbrltty\fP, rather than returning them to the application via \fBbrlapi_readKey()\fP. +.PP +\fBParameters:\fP +.RS 4 +\fItype\fP type of keys to be ignored +.br +\fIkeys\fP array of keys to be ignored +.br +\fIcount\fP number of keys +.RE +.PP +\fBNote:\fP +.RS 4 +The given codes should be \fIbrltty\fP commands (NULL or '' was given to \fBbrlapi_enterTtyMode()\fP) +.RE +.PP + +.SS "int BRLAPI_STDCALL brlapi_readKey (int wait, \fBbrlapi_keyCode_t\fP * code)" +.PP +Read a key from the braille keyboard +.PP +This function returns one key press's code. +.PP +If NULL or '' was given to \fBbrlapi_enterTtyMode()\fP, a \fIbrltty\fP command is returned, as described in \fC\fP . It is hence pretty driver-independent, and should be used by default when no other option is possible. +.PP +By default, all commands but those which restart drivers and switch virtual terminals are returned to the application and not to brltty. If the application doesn't want to see some command events, it should call \fBbrlapi_ignoreKeys()\fP +.PP +If some driver name was given to \fBbrlapi_enterTtyMode()\fP, a raw keycode is returned, as specified by the terminal driver, usually in where xy is the driver's code. It generally corresponds to the very code that the terminal tells to the driver. This should only be used by applications which are dedicated to a particular braille terminal. Hence, checking the terminal type thanks to a call to \fBbrlapi_getDriverName()\fP before getting tty control is a pretty good idea. +.PP +By default, all the keypresses will be passed to the client, none will go through brltty, so the application will have to handle console switching itself for instance. +.PP +\fBParameters:\fP +.RS 4 +\fIwait\fP tells whether the call should block until a key is pressed (1) or should only probe key presses (0); +.br +\fIcode\fP holds the key code if a key press is indeed read. +.RE +.PP +\fBReturns:\fP +.RS 4 +-1 on error or signal interrupt and *code is then undefined, 0 if block was 0 and no key was pressed so far, or 1 and *code holds the key code. +.RE +.PP +Programming hints: +.PP +If your application is only driven by braille command keypresses, you can just call brlapi_readKey(1, &code) so that it keeps blocking, waiting for keypresses. +.PP +Else, you'll probably want to use the file descriptor returned by \fBbrlapi_openConnection()\fP in your 'big polling loop'. For instance: +.PP +.IP "\(bu" 2 +in a \fCselect()\fP loop, just add it to the \fCreadfds\fP and \fCexceptfds\fP file descriptor sets; +.IP "\(bu" 2 +in a gtk or atspi application, use \fCg_io_add_watch\fP(fileDescriptor, \fCG_IO_IN|G_IO_ERR|G_IO_HUP\fP, \fCf\fP, \fCdata\fP) for adding a callback called \fCf\fP; +.IP "\(bu" 2 +in an Xt/Xaw/motif-based application, use \fCXtAppAddInput\fP(app_context, \fCfileDescriptor\fP, \fCXtInputReadMask|XtInputExceptMask\fP, \fCf\fP, \fCdata\fP) +.IP "\(bu" 2 +etc. +.PP +.PP +and then, when you detect inbound trafic on the file descriptor, do something like this: +.PP +while (brlapi_readKey(0, &code) { // process keycode code // ... } +.PP +The \fCwhile\fP loop is needed for processing \fIall\fP pending key presses, else some of them may be left in libbrlapi's internal key buffer and you wouldn't get them immediately. +.PP +\fBNote:\fP +.RS 4 +If the read is interrupted by a signal, \fBbrlapi_readKey()\fP will return -1, brlapi_errno will be BRLAPI_ERROR_LIBCERR and errno will be EINTR. +.RE +.PP + diff --git a/Documents/BrlAPIref/man/man3/brlapi_leaveRaw.3 b/Documents/BrlAPIref/man/man3/brlapi_leaveRaw.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_leaveRaw.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_leaveRawMode.3 b/Documents/BrlAPIref/man/man3/brlapi_leaveRawMode.3 new file mode 100644 index 0000000000000000000000000000000000000000..d918a36920bfc639b7d0fecae9cb48b0d88417cf --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_leaveRawMode.3 @@ -0,0 +1 @@ +.so man3/brlapi_driverspecific.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_leaveTty.3 b/Documents/BrlAPIref/man/man3/brlapi_leaveTty.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_leaveTty.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_leaveTtyMode.3 b/Documents/BrlAPIref/man/man3/brlapi_leaveTtyMode.3 new file mode 100644 index 0000000000000000000000000000000000000000..7d13bb94d99f00d4cea7cd6ca07091d975f71a50 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_leaveTtyMode.3 @@ -0,0 +1 @@ +.so man3/brlapi_tty.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_libcerrno.3 b/Documents/BrlAPIref/man/man3/brlapi_libcerrno.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_libcerrno.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_nerr.3 b/Documents/BrlAPIref/man/man3/brlapi_nerr.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_nerr.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_openConnection.3 b/Documents/BrlAPIref/man/man3/brlapi_openConnection.3 new file mode 100644 index 0000000000000000000000000000000000000000..246c55313f72699bc6fdccdfe90257e8c5514855 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_openConnection.3 @@ -0,0 +1 @@ +.so man3/brlapi_connection.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_packetType_t.3 b/Documents/BrlAPIref/man/man3/brlapi_packetType_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_packetType_t.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_packet_t.3 b/Documents/BrlAPIref/man/man3/brlapi_packet_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..261a514cf7a73849d57b57310a7cbda36a3ffd43 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_packet_t.3 @@ -0,0 +1,65 @@ +.TH "brlapi_packet_t" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +brlapi_packet_t \- +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "unsigned char \fBdata\fP [BRLAPI_MAXPACKETSIZE]" +.br +.ti -1c +.RI "\fBbrlapi_versionPacket_t\fP \fBversion\fP" +.br +.ti -1c +.RI "\fBbrlapi_authClientPacket_t\fP \fBauthClient\fP" +.br +.ti -1c +.RI "\fBbrlapi_authServerPacket_t\fP \fBauthServer\fP" +.br +.ti -1c +.RI "\fBbrlapi_errorPacket_t\fP \fBerror\fP" +.br +.ti -1c +.RI "\fBbrlapi_getDriverSpecificModePacket_t\fP \fBgetDriverSpecificMode\fP" +.br +.ti -1c +.RI "\fBbrlapi_writeArgumentsPacket_t\fP \fBwriteArguments\fP" +.br +.ti -1c +.RI "uint32_t \fBuint32\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Type for packets. Should be used instead of a mere char[], since it has correct alignment requirements. +.PP +.SH "Field Documentation" +.PP +.SS "unsigned char \fBbrlapi_packet_t::data\fP[BRLAPI_MAXPACKETSIZE]" +.PP +.SS "\fBbrlapi_versionPacket_t\fP \fBbrlapi_packet_t::version\fP" +.PP +.SS "\fBbrlapi_authClientPacket_t\fP \fBbrlapi_packet_t::authClient\fP" +.PP +.SS "\fBbrlapi_authServerPacket_t\fP \fBbrlapi_packet_t::authServer\fP" +.PP +.SS "\fBbrlapi_errorPacket_t\fP \fBbrlapi_packet_t::error\fP" +.PP +.SS "\fBbrlapi_getDriverSpecificModePacket_t\fP \fBbrlapi_packet_t::getDriverSpecificMode\fP" +.PP +.SS "\fBbrlapi_writeArgumentsPacket_t\fP \fBbrlapi_packet_t::writeArguments\fP" +.PP +.SS "uint32_t \fBbrlapi_packet_t::uint32\fP" +.PP + + +.SH "Author" +.PP +Generated automatically by Doxygen for BrlAPI from the source code. diff --git a/Documents/BrlAPIref/man/man3/brlapi_perror.3 b/Documents/BrlAPIref/man/man3/brlapi_perror.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_perror.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_protocol.3 b/Documents/BrlAPIref/man/man3/brlapi_protocol.3 new file mode 100644 index 0000000000000000000000000000000000000000..fff9e4ce6399c9ecf812bfe5ffbca285a0badcf6 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_protocol.3 @@ -0,0 +1,393 @@ +.TH "BrlAPI's protocol" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +BrlAPI's protocol \- Instructions and constants for \fIBrlAPI\fP 's protocol. + +.PP +.SS "Data Structures" + +.in +1c +.ti -1c +.RI "struct \fBbrlapi_header_t\fP" +.br +.ti -1c +.RI "struct \fBbrlapi_versionPacket_t\fP" +.br +.ti -1c +.RI "struct \fBbrlapi_authClientPacket_t\fP" +.br +.ti -1c +.RI "struct \fBbrlapi_authServerPacket_t\fP" +.br +.ti -1c +.RI "struct \fBbrlapi_errorPacket_t\fP" +.br +.ti -1c +.RI "struct \fBbrlapi_getDriverSpecificModePacket_t\fP" +.br +.ti -1c +.RI "struct \fBbrlapi_writeArgumentsPacket_t\fP" +.br +.ti -1c +.RI "union \fBbrlapi_packet_t\fP" +.br +.in -1c +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBBRLAPI_PROTOCOL_VERSION\fP ((uint32_t) 8)" +.br +.ti -1c +.RI "#define \fBBRLAPI_MAXPACKETSIZE\fP 512" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_VERSION\fP 'v'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_AUTH\fP 'a'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_GETDRIVERNAME\fP 'n'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_GETDISPLAYSIZE\fP 's'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_ENTERTTYMODE\fP 't'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_SETFOCUS\fP 'F'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_LEAVETTYMODE\fP 'L'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_KEY\fP 'k'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_IGNOREKEYRANGES\fP 'm'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_ACCEPTKEYRANGES\fP 'u'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_WRITE\fP 'w'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_ENTERRAWMODE\fP '*'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_LEAVERAWMODE\fP '#'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_PACKET\fP 'p'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_ACK\fP 'A'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_ERROR\fP 'e'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_EXCEPTION\fP 'E'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_SUSPENDDRIVER\fP 'S'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_RESUMEDRIVER\fP 'R'" +.br +.ti -1c +.RI "#define \fBBRLAPI_DEVICE_MAGIC\fP (0xdeadbeefL)" +.br +.ti -1c +.RI "#define \fBBRLAPI_HEADERSIZE\fP sizeof(\fBbrlapi_header_t\fP)" +.br +.ti -1c +.RI "#define \fBBRLAPI_AUTH_NONE\fP 'N'" +.br +.ti -1c +.RI "#define \fBBRLAPI_AUTH_KEY\fP 'K'" +.br +.ti -1c +.RI "#define \fBBRLAPI_AUTH_CRED\fP 'C'" +.br +.ti -1c +.RI "#define \fBBRLAPI_WF_DISPLAYNUMBER\fP 0X01" +.br +.ti -1c +.RI "#define \fBBRLAPI_WF_REGION\fP 0X02" +.br +.ti -1c +.RI "#define \fBBRLAPI_WF_TEXT\fP 0X04" +.br +.ti -1c +.RI "#define \fBBRLAPI_WF_ATTR_AND\fP 0X08" +.br +.ti -1c +.RI "#define \fBBRLAPI_WF_ATTR_OR\fP 0X10" +.br +.ti -1c +.RI "#define \fBBRLAPI_WF_CURSOR\fP 0X20" +.br +.ti -1c +.RI "#define \fBBRLAPI_WF_CHARSET\fP 0X40" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "ssize_t \fBbrlapi_writePacket\fP (\fBbrlapi_fileDescriptor\fP fd, \fBbrlapi_packetType_t\fP type, const void *buf, size_t size)" +.br +.ti -1c +.RI "ssize_t \fBbrlapi_readPacketHeader\fP (\fBbrlapi_fileDescriptor\fP fd, \fBbrlapi_packetType_t\fP *packetType)" +.br +.ti -1c +.RI "ssize_t \fBbrlapi_readPacketContent\fP (\fBbrlapi_fileDescriptor\fP fd, size_t packetSize, void *buf, size_t bufSize)" +.br +.ti -1c +.RI "ssize_t \fBbrlapi_readPacket\fP (\fBbrlapi_fileDescriptor\fP fd, \fBbrlapi_packetType_t\fP *type, void *buf, size_t size)" +.br +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "pthread_mutex_t \fBbrlapi_fd_mutex\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +These are defines for the protocol between \fIBrlAPI\fP 's server and clients. Understanding is not needed to use the \fIBrlAPI\fP library, so reading this is not needed unless really wanting to connect to \fIBrlAPI\fP without \fIBrlAPI\fP 's library. +.SH "Define Documentation" +.PP +.SS "#define BRLAPI_AUTH_CRED 'C'" +.PP +Explicit socket credentials authorization +.SS "#define BRLAPI_AUTH_KEY 'K'" +.PP +Key authorization +.SS "#define BRLAPI_AUTH_NONE 'N'" +.PP +No or implicit authorization +.SS "#define BRLAPI_DEVICE_MAGIC (0xdeadbeefL)" +.PP +Magic number to give when sending a BRLPACKET_ENTERRAWMODE or BRLPACKET_SUSPEND packet +.SS "#define BRLAPI_HEADERSIZE sizeof(\fBbrlapi_header_t\fP)" +.PP +Size of packet headers +.SS "#define BRLAPI_MAXPACKETSIZE 512" +.PP +Maximum packet size for packets exchanged on sockets and with braille terminal +.SS "#define BRLAPI_PACKET_ACCEPTKEYRANGES 'u'" +.PP +Unmask key ranges +.SS "#define BRLAPI_PACKET_ACK 'A'" +.PP +Acknowledgement +.SS "#define BRLAPI_PACKET_AUTH 'a'" +.PP +Authorization +.SS "#define BRLAPI_PACKET_ENTERRAWMODE '*'" +.PP +Enter in raw mode +.SS "#define BRLAPI_PACKET_ENTERTTYMODE 't'" +.PP +Asks for a specified tty +.SS "#define BRLAPI_PACKET_ERROR 'e'" +.PP +non-fatal error +.SS "#define BRLAPI_PACKET_EXCEPTION 'E'" +.PP +Exception +.SS "#define BRLAPI_PACKET_GETDISPLAYSIZE 's'" +.PP +Dimensions of brl display +.SS "#define BRLAPI_PACKET_GETDRIVERNAME 'n'" +.PP +Ask which driver is used +.SS "#define BRLAPI_PACKET_IGNOREKEYRANGES 'm'" +.PP +Mask key ranges +.SS "#define BRLAPI_PACKET_KEY 'k'" +.PP +Braille key +.SS "#define BRLAPI_PACKET_LEAVERAWMODE '#'" +.PP +Leave raw mode +.SS "#define BRLAPI_PACKET_LEAVETTYMODE 'L'" +.PP +Release the tty +.SS "#define BRLAPI_PACKET_PACKET 'p'" +.PP +Raw packets +.SS "#define BRLAPI_PACKET_RESUMEDRIVER 'R'" +.PP +Resume driver +.SS "#define BRLAPI_PACKET_SETFOCUS 'F'" +.PP +Set current tty focus +.SS "#define BRLAPI_PACKET_SUSPENDDRIVER 'S'" +.PP +Suspend driver +.SS "#define BRLAPI_PACKET_VERSION 'v'" +.PP +Version +.SS "#define BRLAPI_PACKET_WRITE 'w'" +.PP +Write +.SS "#define BRLAPI_PROTOCOL_VERSION ((uint32_t) 8)" +.PP +.SS "#define BRLAPI_WF_ATTR_AND 0X08" +.PP +And attributes +.SS "#define BRLAPI_WF_ATTR_OR 0X10" +.PP +Or attributes +.SS "#define BRLAPI_WF_CHARSET 0X40" +.PP +Charset +.SS "#define BRLAPI_WF_CURSOR 0X20" +.PP +Cursor position +.SS "#define BRLAPI_WF_DISPLAYNUMBER 0X01" +.PP +Flags for writing Display number +.SS "#define BRLAPI_WF_REGION 0X02" +.PP +Region parameter +.SS "#define BRLAPI_WF_TEXT 0X04" +.PP +Contains some text +.SH "Function Documentation" +.PP +.SS "ssize_t brlapi_readPacket (\fBbrlapi_fileDescriptor\fP fd, \fBbrlapi_packetType_t\fP * type, void * buf, size_t size)" +.PP +Read a packet from \fIBrlAPI\fP server +.PP +This function is for internal use, but one might use it if one really knows what one is doing... +.PP +\fItype\fP is where the function will store the packet type; it should always be one of the above defined BRLPACKET_* (or else something very nasty must have happened :/). +.PP +The syntax is the same as read()'s. +.PP +\fBReturns:\fP +.RS 4 +packet's size, -2 if \fCEOF\fP occurred, -1 on error or signal interruption. +.RE +.PP +If the packet is larger than the supplied buffer, the buffer will be filled with the beginning of the packet, the rest of the packet being discarded. This follows the semantics of the recv system call when the MSG_TRUNC option is given. +.PP +\fBSee also:\fP +.RS 4 +\fBbrlapi_writePacket()\fP +.RE +.PP + +.SS "ssize_t brlapi_readPacketContent (\fBbrlapi_fileDescriptor\fP fd, size_t packetSize, void * buf, size_t bufSize)" +.PP +Read the content of a packet from \fIBrlAPI\fP server +.PP +This function is for internal use, but one might use it if one really knows what one is doing... +.PP +\fIpacketSize\fP is the size announced by \fI\fBbrlapi_readPacketHeader()\fP\fP +.PP +\fIbufSize\fP is the size of \fIbuf\fP +.PP +\fBReturns:\fP +.RS 4 +packetSize, -2 if \fCEOF\fP occurred, -1 on error. +.RE +.PP +If the packet is larger than the supplied buffer, the buffer will be filled with the beginning of the packet, the rest of the packet being discarded. This follows the semantics of the recv system call when the MSG_TRUNC option is given. +.PP +\fBSee also:\fP +.RS 4 +\fBbrlapi_writePacket()\fP \fBbrlapi_readPacketHeader()\fP \fBbrlapi_readPacket()\fP +.RE +.PP + +.SS "ssize_t brlapi_readPacketHeader (\fBbrlapi_fileDescriptor\fP fd, \fBbrlapi_packetType_t\fP * packetType)" +.PP +Read the header (type+size) of a packet from \fIBrlAPI\fP server +.PP +This function is for internal use, but one might use it if one really knows what one is doing... +.PP +\fItype\fP is where the function will store the packet type; it should always be one of the above defined BRLPACKET_* (or else something very nasty must have happened :/). +.PP +\fBReturns:\fP +.RS 4 +packet's size, -2 if \fCEOF\fP occurred, -1 on error or signal interruption. +.RE +.PP +\fBSee also:\fP +.RS 4 +\fBbrlapi_writePacket()\fP \fBbrlapi_readPacketContent\fP \fBbrlapi_readPacket\fP +.RE +.PP + +.SS "ssize_t brlapi_writePacket (\fBbrlapi_fileDescriptor\fP fd, \fBbrlapi_packetType_t\fP type, const void * buf, size_t size)" +.PP +Send a packet to \fIBrlAPI\fP server +.PP +This function is for internal use, but one might use it if one really knows what one is doing... +.PP +\fItype\fP should only be one of the above defined BRLPACKET_*. +.PP +The syntax is the same as write()'s. +.PP +\fBReturns:\fP +.RS 4 +0 on success, -1 on failure. +.RE +.PP +\fBSee also:\fP +.RS 4 +\fBbrlapi_readPacketHeader()\fP \fBbrlapi_readPacketContent()\fP \fBbrlapi_readPacket()\fP +.RE +.PP + +.SH "Variable Documentation" +.PP +.SS "pthread_mutex_t \fBbrlapi_fd_mutex\fP" +.PP +Mutex for protecting concurrent fd access +.PP +In order to regulate concurrent access to the library's file descriptor and requests to / answers from \fIBrlAPI\fP server, every function of the library locks this mutex, namely +.PP +.IP "\(bu" 2 +\fBbrlapi_openConnection()\fP +.IP "\(bu" 2 +\fBbrlapi_closeConnection()\fP +.IP "\(bu" 2 +\fBbrlapi_enterRawMode()\fP +.IP "\(bu" 2 +\fBbrlapi_leaveRawMode()\fP +.IP "\(bu" 2 +\fBbrlapi_sendRaw()\fP +.IP "\(bu" 2 +\fBbrlapi_recvRaw()\fP +.IP "\(bu" 2 +brlapi_getDriverId() +.IP "\(bu" 2 +\fBbrlapi_getDriverName()\fP +.IP "\(bu" 2 +\fBbrlapi_getDisplaySize()\fP +.IP "\(bu" 2 +\fBbrlapi_enterTtyMode()\fP +.IP "\(bu" 2 +\fBbrlapi_enterTtyModeWithPath()\fP +.IP "\(bu" 2 +\fBbrlapi_leaveTtyMode()\fP +.IP "\(bu" 2 +brlapi_*write*() +.IP "\(bu" 2 +brlapi_(un)?ignorekey(Range|Set)() +.IP "\(bu" 2 +\fBbrlapi_readKey()\fP +.PP +.PP +If both these functions and \fBbrlapi_writePacket()\fP or \fBbrlapi_readPacket()\fP are used in a multithreaded application, this mutex must be locked before calling \fBbrlapi_writePacket()\fP or \fBbrlapi_readPacket()\fP, and unlocked afterwards. diff --git a/Documents/BrlAPIref/man/man3/brlapi_protocol.h.3 b/Documents/BrlAPIref/man/man3/brlapi_protocol.h.3 new file mode 100644 index 0000000000000000000000000000000000000000..2af3a8fa022154769f66a383d0290d6a231be73d --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_protocol.h.3 @@ -0,0 +1,184 @@ +.TH "brlapi_protocol.h" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +brlapi_protocol.h \- types and constants for \fIBrlAPI's\fP protocol +.SH SYNOPSIS +.br +.PP +\fC#include 'brlapi.h'\fP +.br +\fC#include \fP +.br +\fC#include \fP +.br +\fC#include \fP +.br + +.SS "Data Structures" + +.in +1c +.ti -1c +.RI "struct \fBbrlapi_header_t\fP" +.br +.ti -1c +.RI "struct \fBbrlapi_versionPacket_t\fP" +.br +.ti -1c +.RI "struct \fBbrlapi_authClientPacket_t\fP" +.br +.ti -1c +.RI "struct \fBbrlapi_authServerPacket_t\fP" +.br +.ti -1c +.RI "struct \fBbrlapi_errorPacket_t\fP" +.br +.ti -1c +.RI "struct \fBbrlapi_getDriverSpecificModePacket_t\fP" +.br +.ti -1c +.RI "struct \fBbrlapi_writeArgumentsPacket_t\fP" +.br +.ti -1c +.RI "union \fBbrlapi_packet_t\fP" +.br +.in -1c +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBUINT32_MAX\fP (4294967295U)" +.br +.ti -1c +.RI "#define \fBBRLAPI_PROTOCOL_VERSION\fP ((uint32_t) 8)" +.br +.ti -1c +.RI "#define \fBBRLAPI_MAXPACKETSIZE\fP 512" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_VERSION\fP 'v'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_AUTH\fP 'a'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_GETDRIVERNAME\fP 'n'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_GETDISPLAYSIZE\fP 's'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_ENTERTTYMODE\fP 't'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_SETFOCUS\fP 'F'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_LEAVETTYMODE\fP 'L'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_KEY\fP 'k'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_IGNOREKEYRANGES\fP 'm'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_ACCEPTKEYRANGES\fP 'u'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_WRITE\fP 'w'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_ENTERRAWMODE\fP '*'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_LEAVERAWMODE\fP '#'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_PACKET\fP 'p'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_ACK\fP 'A'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_ERROR\fP 'e'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_EXCEPTION\fP 'E'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_SUSPENDDRIVER\fP 'S'" +.br +.ti -1c +.RI "#define \fBBRLAPI_PACKET_RESUMEDRIVER\fP 'R'" +.br +.ti -1c +.RI "#define \fBBRLAPI_DEVICE_MAGIC\fP (0xdeadbeefL)" +.br +.ti -1c +.RI "#define \fBBRLAPI_HEADERSIZE\fP sizeof(\fBbrlapi_header_t\fP)" +.br +.ti -1c +.RI "#define \fBBRLAPI_AUTH_NONE\fP 'N'" +.br +.ti -1c +.RI "#define \fBBRLAPI_AUTH_KEY\fP 'K'" +.br +.ti -1c +.RI "#define \fBBRLAPI_AUTH_CRED\fP 'C'" +.br +.ti -1c +.RI "#define \fBBRLAPI_WF_DISPLAYNUMBER\fP 0X01" +.br +.ti -1c +.RI "#define \fBBRLAPI_WF_REGION\fP 0X02" +.br +.ti -1c +.RI "#define \fBBRLAPI_WF_TEXT\fP 0X04" +.br +.ti -1c +.RI "#define \fBBRLAPI_WF_ATTR_AND\fP 0X08" +.br +.ti -1c +.RI "#define \fBBRLAPI_WF_ATTR_OR\fP 0X10" +.br +.ti -1c +.RI "#define \fBBRLAPI_WF_CURSOR\fP 0X20" +.br +.ti -1c +.RI "#define \fBBRLAPI_WF_CHARSET\fP 0X40" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "ssize_t \fBbrlapi_writePacket\fP (\fBbrlapi_fileDescriptor\fP fd, \fBbrlapi_packetType_t\fP type, const void *buf, size_t size)" +.br +.ti -1c +.RI "ssize_t \fBbrlapi_readPacketHeader\fP (\fBbrlapi_fileDescriptor\fP fd, \fBbrlapi_packetType_t\fP *packetType)" +.br +.ti -1c +.RI "ssize_t \fBbrlapi_readPacketContent\fP (\fBbrlapi_fileDescriptor\fP fd, size_t packetSize, void *buf, size_t bufSize)" +.br +.ti -1c +.RI "ssize_t \fBbrlapi_readPacket\fP (\fBbrlapi_fileDescriptor\fP fd, \fBbrlapi_packetType_t\fP *type, void *buf, size_t size)" +.br +.in -1c +.SS "Variables" + +.in +1c +.ti -1c +.RI "pthread_mutex_t \fBbrlapi_fd_mutex\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.SH "Define Documentation" +.PP +.SS "#define UINT32_MAX (4294967295U)" +.PP +.SH "Author" +.PP +Generated automatically by Doxygen for BrlAPI from the source code. diff --git a/Documents/BrlAPIref/man/man3/brlapi_rangeType_all.3 b/Documents/BrlAPIref/man/man3/brlapi_rangeType_all.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_rangeType_all.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_rangeType_code.3 b/Documents/BrlAPIref/man/man3/brlapi_rangeType_code.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_rangeType_code.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_rangeType_command.3 b/Documents/BrlAPIref/man/man3/brlapi_rangeType_command.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_rangeType_command.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_rangeType_key.3 b/Documents/BrlAPIref/man/man3/brlapi_rangeType_key.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_rangeType_key.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_rangeType_t.3 b/Documents/BrlAPIref/man/man3/brlapi_rangeType_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_rangeType_t.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_rangeType_type.3 b/Documents/BrlAPIref/man/man3/brlapi_rangeType_type.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_rangeType_type.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_range_t.3 b/Documents/BrlAPIref/man/man3/brlapi_range_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..1242b8ad86ca0f11fac34b26d931fa1aa988aea0 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_range_t.3 @@ -0,0 +1,38 @@ +.TH "brlapi_range_t" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +brlapi_range_t \- +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "\fBbrlapi_keyCode_t\fP \fBfirst\fP" +.br +.ti -1c +.RI "\fBbrlapi_keyCode_t\fP \fBlast\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Type for raw keycode ranges +.PP +Denotes the set of keycodes between \fIfirst\fP and \fIlast\fP (inclusive) +.PP +.SH "Field Documentation" +.PP +.SS "\fBbrlapi_keyCode_t\fP \fBbrlapi_range_t::first\fP" +.PP +first key of the range +.SS "\fBbrlapi_keyCode_t\fP \fBbrlapi_range_t::last\fP" +.PP +last key of the range + +.SH "Author" +.PP +Generated automatically by Doxygen for BrlAPI from the source code. diff --git a/Documents/BrlAPIref/man/man3/brlapi_readKey.3 b/Documents/BrlAPIref/man/man3/brlapi_readKey.3 new file mode 100644 index 0000000000000000000000000000000000000000..643f81db07e1c58ecaffefad86a04759e926991e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_readKey.3 @@ -0,0 +1 @@ +.so man3/brlapi_keys.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_readPacket.3 b/Documents/BrlAPIref/man/man3/brlapi_readPacket.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_readPacket.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_readPacketContent.3 b/Documents/BrlAPIref/man/man3/brlapi_readPacketContent.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_readPacketContent.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_readPacketHeader.3 b/Documents/BrlAPIref/man/man3/brlapi_readPacketHeader.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_readPacketHeader.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_recvRaw.3 b/Documents/BrlAPIref/man/man3/brlapi_recvRaw.3 new file mode 100644 index 0000000000000000000000000000000000000000..d918a36920bfc639b7d0fecae9cb48b0d88417cf --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_recvRaw.3 @@ -0,0 +1 @@ +.so man3/brlapi_driverspecific.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_resume.3 b/Documents/BrlAPIref/man/man3/brlapi_resume.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_resume.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_resumeDriver.3 b/Documents/BrlAPIref/man/man3/brlapi_resumeDriver.3 new file mode 100644 index 0000000000000000000000000000000000000000..d918a36920bfc639b7d0fecae9cb48b0d88417cf --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_resumeDriver.3 @@ -0,0 +1 @@ +.so man3/brlapi_driverspecific.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_sendRaw.3 b/Documents/BrlAPIref/man/man3/brlapi_sendRaw.3 new file mode 100644 index 0000000000000000000000000000000000000000..d918a36920bfc639b7d0fecae9cb48b0d88417cf --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_sendRaw.3 @@ -0,0 +1 @@ +.so man3/brlapi_driverspecific.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_setExceptionHandler.3 b/Documents/BrlAPIref/man/man3/brlapi_setExceptionHandler.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_setExceptionHandler.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_setFocus.3 b/Documents/BrlAPIref/man/man3/brlapi_setFocus.3 new file mode 100644 index 0000000000000000000000000000000000000000..7d13bb94d99f00d4cea7cd6ca07091d975f71a50 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_setFocus.3 @@ -0,0 +1 @@ +.so man3/brlapi_tty.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_settings_t.3 b/Documents/BrlAPIref/man/man3/brlapi_settings_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_settings_t.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_strerror.3 b/Documents/BrlAPIref/man/man3/brlapi_strerror.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_strerror.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_strexception.3 b/Documents/BrlAPIref/man/man3/brlapi_strexception.3 new file mode 100644 index 0000000000000000000000000000000000000000..b01fa0ee342ef4b5afed04c0bf2d264a059496a7 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_strexception.3 @@ -0,0 +1 @@ +.so man3/brlapi_error.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_suspend.3 b/Documents/BrlAPIref/man/man3/brlapi_suspend.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_suspend.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_suspendDriver.3 b/Documents/BrlAPIref/man/man3/brlapi_suspendDriver.3 new file mode 100644 index 0000000000000000000000000000000000000000..d918a36920bfc639b7d0fecae9cb48b0d88417cf --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_suspendDriver.3 @@ -0,0 +1 @@ +.so man3/brlapi_driverspecific.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_tty.3 b/Documents/BrlAPIref/man/man3/brlapi_tty.3 new file mode 100644 index 0000000000000000000000000000000000000000..6291fae27e75c6c605f10d0b80b1c5d870582147 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_tty.3 @@ -0,0 +1,174 @@ +.TH "Entering & leaving tty mode" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Entering & leaving tty mode \- How to take control of ttys for direct braille display / read. + +.PP +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBBRLAPI_TTY_DEFAULT\fP -1" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_enterTtyMode\fP (int tty, const char *driver)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__enterTtyMode\fP (\fBbrlapi_handle_t\fP *handle, int tty, const char *driver)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_enterTtyModeWithPath\fP (int *ttys, int count, const char *driver)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__enterTtyModeWithPath\fP (\fBbrlapi_handle_t\fP *handle, int *ttys, int count, const char *driver)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_leaveTtyMode\fP (void)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__leaveTtyMode\fP (\fBbrlapi_handle_t\fP *handle)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_setFocus\fP (int tty)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__setFocus\fP (\fBbrlapi_handle_t\fP *handle, int tty)" +.br +.in -1c +.SH "Detailed Description" +.PP +Before being able to write on the braille display, the application must tell the server which tty it will handle. +.PP +The application must also specify how braille keys will be delivered to it. Two ways are possible: key codes and commands: +.PP +.IP "\(bu" 2 +key codes are specific to each braille driver, since the raw key code, as defined in the driver will be given for each key press. Using them leads to building highly driver-dependent applications, which can yet sometimes be useful to mimic existing proprietary applications for instance. +.IP "\(bu" 2 +commands means that applications will get exactly the same values as \fIbrltty\fP. This allows driver-independent clients, which will hopefully be nice to use with a lot of different terminals. +.PP +\fBSee also:\fP +.RS 4 +\fBbrlapi_readKey()\fP +.RE +.PP + +.PP + +.SH "Define Documentation" +.PP +.SS "#define BRLAPI_TTY_DEFAULT -1" +.PP +Select the default tty. +.PP +The library takes the following steps: +.IP "1." 4 +Try to get the tty number from the \fCWINDOWID\fP environment variable (for the \fCxterm\fP case). +.IP "2." 4 +Try to get the tty number from the \fCCONTROLVT\fP environment variable. +.IP "3." 4 +Read \fC/proc/self/stat\fP (on \fCLinux\fP). +.PP +.PP +\fBSee also:\fP +.RS 4 +\fBbrlapi_enterTtyMode()\fP +.RE +.PP + +.SH "Function Documentation" +.PP +.SS "int BRLAPI_STDCALL brlapi__enterTtyMode (\fBbrlapi_handle_t\fP * handle, int tty, const char * driver)" +.PP +.SS "int BRLAPI_STDCALL brlapi__enterTtyModeWithPath (\fBbrlapi_handle_t\fP * handle, int * ttys, int count, const char * driver)" +.PP +.SS "int BRLAPI_STDCALL brlapi__leaveTtyMode (\fBbrlapi_handle_t\fP * handle)" +.PP +.SS "int BRLAPI_STDCALL brlapi__setFocus (\fBbrlapi_handle_t\fP * handle, int tty)" +.PP +.SS "int BRLAPI_STDCALL brlapi_enterTtyMode (int tty, const char * driver)" +.PP +Ask for some tty, with some key mechanism +.PP +\fBParameters:\fP +.RS 4 +\fItty\fP +.IP "\(bu" 2 +If tty>=0 then take control of the specified tty. +.IP "\(bu" 2 +If tty==\fBBRLAPI_TTY_DEFAULT\fP then take control of the default tty. +.PP +.br +\fIdriver\fP tells how the application wants \fBbrlapi_readKey()\fP to return key presses. NULL or '' means BRLTTY commands are required, whereas a driver name means that raw key codes returned by this driver are expected. +.RE +.PP +WINDOWPATH and WINDOWID should be propagated when running remote applications via ssh, for instance, along with BRLAPI_HOST and the authorization key (see SendEnv in ssh_config(5) and AcceptEnv in sshd_config(5)) +.PP +\fBReturns:\fP +.RS 4 +the used tty number on success, -1 on error +.RE +.PP +\fBSee also:\fP +.RS 4 +\fBbrlapi_leaveTtyMode()\fP \fBbrlapi_readKey()\fP +.RE +.PP + +.SS "int BRLAPI_STDCALL brlapi_enterTtyModeWithPath (int * ttys, int count, const char * driver)" +.PP +Ask for some tty specified by its path in the tty tree, with some key mechanism +.PP +\fBParameters:\fP +.RS 4 +\fIttys\fP points on the array of ttys representing the tty path to be got. Can be NULL if nttys is 0. +.br +\fIcount\fP gives the number of elements in ttys. +.br +\fIdriver\fP has the same meaning as in \fBbrlapi_enterTtyMode()\fP +.RE +.PP +Providing nttys == 0 means to get the root. +.PP +\fBSee also:\fP +.RS 4 +\fBbrlapi_enterTtyMode()\fP +.RE +.PP + +.SS "int BRLAPI_STDCALL brlapi_leaveTtyMode (void)" +.PP +Stop controlling the tty +.PP +\fBReturns:\fP +.RS 4 +0 on success, -1 on error. +.RE +.PP +\fBSee also:\fP +.RS 4 +\fBbrlapi_enterTtyMode()\fP +.RE +.PP + +.SS "int BRLAPI_STDCALL brlapi_setFocus (int tty)" +.PP +Tell the current tty to brltty +.PP +This is intended for focus tellers, such as brltty, xbrlapi, screen, ... \fBbrlapi_enterTtyMode()\fP must have been called beforehand to tell where this focus applies in the tty tree. +.PP +\fBReturns:\fP +.RS 4 +0 on success, -1 on error. +.RE +.PP +\fBSee also:\fP +.RS 4 +\fBbrlapi_enterTtyMode()\fP \fBbrlapi_leaveTtyMode()\fP +.RE +.PP + diff --git a/Documents/BrlAPIref/man/man3/brlapi_unignoreKeyRange.3 b/Documents/BrlAPIref/man/man3/brlapi_unignoreKeyRange.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_unignoreKeyRange.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_unignoreKeySet.3 b/Documents/BrlAPIref/man/man3/brlapi_unignoreKeySet.3 new file mode 100644 index 0000000000000000000000000000000000000000..49a899925074b3f8b0f236009f28461cfed5ab32 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_unignoreKeySet.3 @@ -0,0 +1 @@ +.so man3/brlapi_deprecated.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_version.3 b/Documents/BrlAPIref/man/man3/brlapi_version.3 new file mode 100644 index 0000000000000000000000000000000000000000..d1b71de034c9e7464a72796b552b15036b2d8969 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_version.3 @@ -0,0 +1,35 @@ +.TH "Version of the BrlAPI library" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Version of the BrlAPI library \- +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBBRLAPI_RELEASE\fP '0.5.3'" +.br +.ti -1c +.RI "#define \fBBRLAPI_MAJOR\fP 0" +.br +.ti -1c +.RI "#define \fBBRLAPI_MINOR\fP 5" +.br +.ti -1c +.RI "#define \fBBRLAPI_REVISION\fP 3" +.br +.in -1c +.SH "Define Documentation" +.PP +.SS "#define BRLAPI_MAJOR 0" +.PP +Library major version. +.SS "#define BRLAPI_MINOR 5" +.PP +Library minor version. +.SS "#define BRLAPI_RELEASE '0.5.3'" +.PP +Library version. +.SS "#define BRLAPI_REVISION 3" +.PP +Library revision. diff --git a/Documents/BrlAPIref/man/man3/brlapi_versionPacket_t.3 b/Documents/BrlAPIref/man/man3/brlapi_versionPacket_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..a0f1954fb06f79a759c413ff27b5ebf91c0e4b00 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_versionPacket_t.3 @@ -0,0 +1,30 @@ +.TH "brlapi_versionPacket_t" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +brlapi_versionPacket_t \- +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "uint32_t \fBprotocolVersion\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Structure of version packets +.PP +.SH "Field Documentation" +.PP +.SS "uint32_t \fBbrlapi_versionPacket_t::protocolVersion\fP" +.PP + + +.SH "Author" +.PP +Generated automatically by Doxygen for BrlAPI from the source code. diff --git a/Documents/BrlAPIref/man/man3/brlapi_write.3 b/Documents/BrlAPIref/man/man3/brlapi_write.3 new file mode 100644 index 0000000000000000000000000000000000000000..66093bc9bc3a498fd1a6b3e0ea0978ba60b09ea1 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_write.3 @@ -0,0 +1,170 @@ +.TH "Writing on the braille display" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Writing on the braille display \- Write text to the braille display. + +.PP +.SS "Data Structures" + +.in +1c +.ti -1c +.RI "struct \fBbrlapi_writeArguments_t\fP" +.br +.in -1c +.SS "Defines" + +.in +1c +.ti -1c +.RI "#define \fBBRLAPI_DISPLAY_DEFAULT\fP -1" +.br +.ti -1c +.RI "#define \fBBRLAPI_CURSOR_LEAVE\fP -1" +.br +.ti -1c +.RI "#define \fBBRLAPI_CURSOR_OFF\fP 0" +.br +.ti -1c +.RI "#define \fBBRLAPI_WRITEARGUMENTS_INITIALIZER\fP { BRLAPI_DISPLAY_DEFAULT, 0, 0, NULL, -1, NULL, NULL, BRLAPI_CURSOR_LEAVE, NULL }" +.br +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_writeText\fP (int cursor, const char *text)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__writeText\fP (\fBbrlapi_handle_t\fP *handle, int cursor, const char *text)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_writeDots\fP (const unsigned char *dots)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__writeDots\fP (\fBbrlapi_handle_t\fP *handle, const unsigned char *dots)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi_write\fP (const \fBbrlapi_writeArguments_t\fP *arguments)" +.br +.ti -1c +.RI "int BRLAPI_STDCALL \fBbrlapi__write\fP (\fBbrlapi_handle_t\fP *handle, const \fBbrlapi_writeArguments_t\fP *arguments)" +.br +.in -1c +.SH "Detailed Description" +.PP +After \fBbrlapi_enterTtyMode()\fP has been called, the application can call one of these functions to write things on the braille display. +.PP +\fBNote:\fP +.RS 4 +Be sure to call \fBbrlapi_enterTtyMode()\fP \fIbefore\fP calling \fBbrlapi_write()\fP, or else you'll get an error. This is particularly not always trivial when writing multithreaded applications. +.PP +Dots are coded as described in ISO/TR 11548-1: a dot pattern is coded by a byte in which bit 0 is set iff dot 1 is up, bit 1 is set iff dot 2 is up, ... bit 7 is set iff dot 8 is up. This also corresponds to the low-order byte of the coding of unicode's braille row U+2800. +.PP +Text is translated by the server one to one, by just using a simple wchar_t to pattern table, i.e. no contraction/expansion is performed, because the client would then have no way to know how wide the output would be and thus the quantity of text to feed. If contraction/expansion is desired, the client should perform it itself (e.g. thanks to liblouis or gnome-braille) and send the resulting dot patterns. This is actually exactly the same problem as font rendering on a graphical display: for better control, nowadays all font rasterization is performed on the client side, and mere pixmaps are sent to the X server. +.RE +.PP + +.SH "Define Documentation" +.PP +.SS "#define BRLAPI_CURSOR_LEAVE -1" +.PP +Do not change the cursor's state or position. +.PP +\fBSee also:\fP +.RS 4 +\fBbrlapi_writeText()\fP \fBbrlapi_write()\fP \fBbrlapi_writeArguments_t\fP +.RE +.PP + +.SS "#define BRLAPI_CURSOR_OFF 0" +.PP +Do not display the cursor. +.PP +\fBSee also:\fP +.RS 4 +\fBbrlapi_writeText()\fP \fBbrlapi_write()\fP \fBbrlapi_writeArguments_t\fP +.RE +.PP + +.SS "#define BRLAPI_DISPLAY_DEFAULT -1" +.PP +Write to the default display on the braille device. +.PP +\fBSee also:\fP +.RS 4 +\fBbrlapi_write()\fP \fBbrlapi_writeArguments_t\fP +.RE +.PP + +.SS "#define BRLAPI_WRITEARGUMENTS_INITIALIZER { BRLAPI_DISPLAY_DEFAULT, 0, 0, NULL, -1, NULL, NULL, BRLAPI_CURSOR_LEAVE, NULL }" +.PP +Allows to initialize a structure of type \fI\fBbrlapi_writeArguments_t\fP\fP * with default values: displayNumber = \fBBRLAPI_DISPLAY_DEFAULT\fP; (unspecified) regionBegin = regionSize = 0; (update the whole display, DEPRECATED and will be forbidden in next release. You must always express the region you wish to update) text = andMask = orMask = NULL; (no text, no attribute) cursor = \fBBRLAPI_CURSOR_LEAVE\fP; (don't touch cursor) +.SH "Function Documentation" +.PP +.SS "int BRLAPI_STDCALL brlapi__write (\fBbrlapi_handle_t\fP * handle, const \fBbrlapi_writeArguments_t\fP * arguments)" +.PP +.SS "int BRLAPI_STDCALL brlapi__writeDots (\fBbrlapi_handle_t\fP * handle, const unsigned char * dots)" +.PP +.SS "int BRLAPI_STDCALL brlapi__writeText (\fBbrlapi_handle_t\fP * handle, int cursor, const char * text)" +.PP +.SS "int BRLAPI_STDCALL brlapi_write (const \fBbrlapi_writeArguments_t\fP * arguments)" +.PP +Update a specific region of the braille display and apply and/or masks +.PP +\fBParameters:\fP +.RS 4 +\fIarguments\fP gives information necessary for the update +.RE +.PP +regionBegin and regionSize must be filled for specifying which part of the display will be updated, as well as the size (in characters, not bytes) of the text, andMask and orMask members. +.PP +If given, the 'text' field holds the text that will be displayed in the region. The char string must hold exactly as many characters as the region fields express. For multibyte text, this is the number of \fImultibyte\fP caracters. Notably, combining and double-width caracters count for 1. +.PP +The actual length of the text in \fIbytes\fP may be specified thanks to textSize. If -1 is given, it will be computed thanks to strlen(), so 'text' must then be a NUL-terminated string. +.PP +The 'andMask' and 'orMask' masks, if present, are then applied on top of the text, one byte per character. This hence permits the superimposing of attributes over the text. For instance, setting an andMask mask full of \fBBRLAPI_DOTS(1,1,1,1,1,1,0,0)\fP will only keep (logical AND) dots 1-6, hence dropping dots 7 and 8. On the contrary, setting an orMask full of BRLAPI_DOT7|BRLAPI_DOT8 will add (logical OR) dots 7 and 8. +.PP +The 'charset' field, if present, specifies the charset of the 'text' field. If it is '', the current locale's charset (if any) is assumed. Else, the 8-bit charset of the server is assumed. +.PP +A special invocation is with an unmodified initialized structure: this clears the client's whole display, letting the display of other applications on the same tty or of applications 'under' the tty appear. See Concurrency management section of the BrlAPI documentation for more details. +.PP +\fBReturns:\fP +.RS 4 +0 on success, -1 on error. +.RE +.PP + +.SS "int BRLAPI_STDCALL brlapi_writeDots (const unsigned char * dots)" +.PP +Write the given dots array to the display +.PP +\fBParameters:\fP +.RS 4 +\fIdots\fP points on an array of dot information, one per character. Its size must hence be the same as what \fBbrlapi_getDisplaySize()\fP returns. +.RE +.PP +\fBReturns:\fP +.RS 4 +0 on success, -1 on error. +.RE +.PP + +.SS "int BRLAPI_STDCALL brlapi_writeText (int cursor, const char * text)" +.PP +Write the given \\0-terminated string to the braille display +.PP +If the string is too long, it is cut. If it's too short, spaces are appended. The current LC_CTYPE locale is considered, unless it is left as default 'C', in which case the charset is assumed to be 8bits, and the same as the server's. +.PP +\fBParameters:\fP +.RS 4 +\fIcursor\fP gives the cursor position; if equal to \fBBRLAPI_CURSOR_OFF\fP, no cursor is shown at all; if cursor==\fBBRLAPI_CURSOR_LEAVE\fP, the cursor is left where it is +.br +\fItext\fP points to the string to be displayed. +.RE +.PP +\fBReturns:\fP +.RS 4 +0 on success, -1 on error. +.RE +.PP + diff --git a/Documents/BrlAPIref/man/man3/brlapi_writeArgumentsPacket_t.3 b/Documents/BrlAPIref/man/man3/brlapi_writeArgumentsPacket_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..07f1125b977b04892a55d1bf3aec97d3bc075c9c --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_writeArgumentsPacket_t.3 @@ -0,0 +1,35 @@ +.TH "brlapi_writeArgumentsPacket_t" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +brlapi_writeArgumentsPacket_t \- +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "uint32_t \fBflags\fP" +.br +.ti -1c +.RI "unsigned char \fBdata\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Structure of extended write packets +.PP +.SH "Field Documentation" +.PP +.SS "uint32_t \fBbrlapi_writeArgumentsPacket_t::flags\fP" +.PP +.SS "unsigned char \fBbrlapi_writeArgumentsPacket_t::data\fP" +.PP +Flags to tell which fields are present + +.SH "Author" +.PP +Generated automatically by Doxygen for BrlAPI from the source code. diff --git a/Documents/BrlAPIref/man/man3/brlapi_writeArguments_t.3 b/Documents/BrlAPIref/man/man3/brlapi_writeArguments_t.3 new file mode 100644 index 0000000000000000000000000000000000000000..440ce1b6ccc6ce4e6418028ac512310b042c1d56 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_writeArguments_t.3 @@ -0,0 +1,78 @@ +.TH "brlapi_writeArguments_t" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +brlapi_writeArguments_t \- +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "int \fBdisplayNumber\fP" +.br +.ti -1c +.RI "unsigned int \fBregionBegin\fP" +.br +.ti -1c +.RI "unsigned int \fBregionSize\fP" +.br +.ti -1c +.RI "char * \fBtext\fP" +.br +.ti -1c +.RI "int \fBtextSize\fP" +.br +.ti -1c +.RI "unsigned char * \fBandMask\fP" +.br +.ti -1c +.RI "unsigned char * \fBorMask\fP" +.br +.ti -1c +.RI "int \fBcursor\fP" +.br +.ti -1c +.RI "char * \fBcharset\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Structure containing arguments to be given to \fBbrlapi_write()\fP +.PP +.SH "Field Documentation" +.PP +.SS "int \fBbrlapi_writeArguments_t::displayNumber\fP" +.PP +Display number \fBBRLAPI_DISPLAY_DEFAULT\fP == unspecified +.SS "unsigned int \fBbrlapi_writeArguments_t::regionBegin\fP" +.PP +Region of display to update, 1st character of display is 1 +.SS "unsigned int \fBbrlapi_writeArguments_t::regionSize\fP" +.PP +Number of characters held in text, andMask and orMask. +.SS "char* \fBbrlapi_writeArguments_t::text\fP" +.PP +Text to display, must hold as many characters as the region fields expresses. +.SS "int \fBbrlapi_writeArguments_t::textSize\fP" +.PP +Size of text in bytes. If -1, strlen() is used for computing it. +.SS "unsigned char* \fBbrlapi_writeArguments_t::andMask\fP" +.PP +And attributes; applied first +.SS "unsigned char* \fBbrlapi_writeArguments_t::orMask\fP" +.PP +Or attributes; applied \fIafter\fP ANDing +.SS "int \fBbrlapi_writeArguments_t::cursor\fP" +.PP +\fBBRLAPI_CURSOR_LEAVE\fP == don't touch, \fBBRLAPI_CURSOR_OFF\fP == turn off, 1 = 1st char of display, ... +.SS "char* \fBbrlapi_writeArguments_t::charset\fP" +.PP +Text charset. NULL means it is assumed to be 8bits, and the same as the server's. '' means current locale's charset. If no locale was selected, defaults to NULL's meaning. + +.SH "Author" +.PP +Generated automatically by Doxygen for BrlAPI from the source code. diff --git a/Documents/BrlAPIref/man/man3/brlapi_writeDots.3 b/Documents/BrlAPIref/man/man3/brlapi_writeDots.3 new file mode 100644 index 0000000000000000000000000000000000000000..492f429a9f41bc20a1f1ce2b1ec6b9e861439ba1 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_writeDots.3 @@ -0,0 +1 @@ +.so man3/brlapi_write.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_writePacket.3 b/Documents/BrlAPIref/man/man3/brlapi_writePacket.3 new file mode 100644 index 0000000000000000000000000000000000000000..e44f63f4739d23755a70e3cee8f3ff9194b737a3 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_writePacket.3 @@ -0,0 +1 @@ +.so man3/brlapi_protocol.3 diff --git a/Documents/BrlAPIref/man/man3/brlapi_writeStruct.3 b/Documents/BrlAPIref/man/man3/brlapi_writeStruct.3 new file mode 100644 index 0000000000000000000000000000000000000000..ec8dbda38605c57755d9b203936418c86a7de1ee --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_writeStruct.3 @@ -0,0 +1,70 @@ +.TH "brlapi_writeStruct" 3 "15 May 2009" "Version 1.0" "BrlAPI" \" -*- nroff -*- +.ad l +.nh +.SH NAME +brlapi_writeStruct \- +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.PP +.SS "Data Fields" + +.in +1c +.ti -1c +.RI "int \fBdisplayNumber\fP" +.br +.ti -1c +.RI "unsigned int \fBregionBegin\fP" +.br +.ti -1c +.RI "unsigned int \fBregionSize\fP" +.br +.ti -1c +.RI "char * \fBtext\fP" +.br +.ti -1c +.RI "int \fBtextSize\fP" +.br +.ti -1c +.RI "unsigned char * \fBattrAnd\fP" +.br +.ti -1c +.RI "unsigned char * \fBattrOr\fP" +.br +.ti -1c +.RI "int \fBcursor\fP" +.br +.ti -1c +.RI "char * \fBcharset\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +\fBbrlapi_writeStruct\fP, replaced by \fBbrlapi_writeArguments_t\fP +.PP +.SH "Field Documentation" +.PP +.SS "int \fBbrlapi_writeStruct::displayNumber\fP" +.PP +.SS "unsigned int \fBbrlapi_writeStruct::regionBegin\fP" +.PP +.SS "unsigned int \fBbrlapi_writeStruct::regionSize\fP" +.PP +.SS "char* \fBbrlapi_writeStruct::text\fP" +.PP +.SS "int \fBbrlapi_writeStruct::textSize\fP" +.PP +.SS "unsigned char* \fBbrlapi_writeStruct::attrAnd\fP" +.PP +.SS "unsigned char* \fBbrlapi_writeStruct::attrOr\fP" +.PP +.SS "int \fBbrlapi_writeStruct::cursor\fP" +.PP +.SS "char* \fBbrlapi_writeStruct::charset\fP" +.PP + + +.SH "Author" +.PP +Generated automatically by Doxygen for BrlAPI from the source code. diff --git a/Documents/BrlAPIref/man/man3/brlapi_writeText.3 b/Documents/BrlAPIref/man/man3/brlapi_writeText.3 new file mode 100644 index 0000000000000000000000000000000000000000..492f429a9f41bc20a1f1ce2b1ec6b9e861439ba1 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlapi_writeText.3 @@ -0,0 +1 @@ +.so man3/brlapi_write.3 diff --git a/Documents/BrlAPIref/man/man3/brlerrno.3 b/Documents/BrlAPIref/man/man3/brlerrno.3 new file mode 100644 index 0000000000000000000000000000000000000000..91568a4c28f923e1c7bbe639d1d2ff33cd35ebfa --- /dev/null +++ b/Documents/BrlAPIref/man/man3/brlerrno.3 @@ -0,0 +1 @@ +.so man3/brlapi_error_t.3 diff --git a/Documents/BrlAPIref/man/man3/charset.3 b/Documents/BrlAPIref/man/man3/charset.3 new file mode 100644 index 0000000000000000000000000000000000000000..27931229fc527a342aea7ca5aa4495db1e8fee3e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/charset.3 @@ -0,0 +1 @@ +.so man3/brlapi_writeArguments_t.3 diff --git a/Documents/BrlAPIref/man/man3/code.3 b/Documents/BrlAPIref/man/man3/code.3 new file mode 100644 index 0000000000000000000000000000000000000000..52ae61a00242ce4a299b26548519c503829df2c2 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/code.3 @@ -0,0 +1 @@ +.so man3/brlapi_errorPacket_t.3 diff --git a/Documents/BrlAPIref/man/man3/command.3 b/Documents/BrlAPIref/man/man3/command.3 new file mode 100644 index 0000000000000000000000000000000000000000..2460d3527b143ff147cec48347244d4796db2a75 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/command.3 @@ -0,0 +1 @@ +.so man3/brlapi_describedKeyCode_t.3 diff --git a/Documents/BrlAPIref/man/man3/cursor.3 b/Documents/BrlAPIref/man/man3/cursor.3 new file mode 100644 index 0000000000000000000000000000000000000000..27931229fc527a342aea7ca5aa4495db1e8fee3e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/cursor.3 @@ -0,0 +1 @@ +.so man3/brlapi_writeArguments_t.3 diff --git a/Documents/BrlAPIref/man/man3/data.3 b/Documents/BrlAPIref/man/man3/data.3 new file mode 100644 index 0000000000000000000000000000000000000000..9d7ec0622aefcfb3c193f066c2aeec1ba2fef498 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/data.3 @@ -0,0 +1 @@ +.so man3/brlapi_packet_t.3 diff --git a/Documents/BrlAPIref/man/man3/displayNumber.3 b/Documents/BrlAPIref/man/man3/displayNumber.3 new file mode 100644 index 0000000000000000000000000000000000000000..27931229fc527a342aea7ca5aa4495db1e8fee3e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/displayNumber.3 @@ -0,0 +1 @@ +.so man3/brlapi_writeArguments_t.3 diff --git a/Documents/BrlAPIref/man/man3/errfun.3 b/Documents/BrlAPIref/man/man3/errfun.3 new file mode 100644 index 0000000000000000000000000000000000000000..91568a4c28f923e1c7bbe639d1d2ff33cd35ebfa --- /dev/null +++ b/Documents/BrlAPIref/man/man3/errfun.3 @@ -0,0 +1 @@ +.so man3/brlapi_error_t.3 diff --git a/Documents/BrlAPIref/man/man3/error.3 b/Documents/BrlAPIref/man/man3/error.3 new file mode 100644 index 0000000000000000000000000000000000000000..9d7ec0622aefcfb3c193f066c2aeec1ba2fef498 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/error.3 @@ -0,0 +1 @@ +.so man3/brlapi_packet_t.3 diff --git a/Documents/BrlAPIref/man/man3/first.3 b/Documents/BrlAPIref/man/man3/first.3 new file mode 100644 index 0000000000000000000000000000000000000000..6e1f7547cfb2ac93d05e5f58fc6465a26432693e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/first.3 @@ -0,0 +1 @@ +.so man3/brlapi_range_t.3 diff --git a/Documents/BrlAPIref/man/man3/flag.3 b/Documents/BrlAPIref/man/man3/flag.3 new file mode 100644 index 0000000000000000000000000000000000000000..2460d3527b143ff147cec48347244d4796db2a75 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/flag.3 @@ -0,0 +1 @@ +.so man3/brlapi_describedKeyCode_t.3 diff --git a/Documents/BrlAPIref/man/man3/flags.3 b/Documents/BrlAPIref/man/man3/flags.3 new file mode 100644 index 0000000000000000000000000000000000000000..2460d3527b143ff147cec48347244d4796db2a75 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/flags.3 @@ -0,0 +1 @@ +.so man3/brlapi_describedKeyCode_t.3 diff --git a/Documents/BrlAPIref/man/man3/gaierrno.3 b/Documents/BrlAPIref/man/man3/gaierrno.3 new file mode 100644 index 0000000000000000000000000000000000000000..91568a4c28f923e1c7bbe639d1d2ff33cd35ebfa --- /dev/null +++ b/Documents/BrlAPIref/man/man3/gaierrno.3 @@ -0,0 +1 @@ +.so man3/brlapi_error_t.3 diff --git a/Documents/BrlAPIref/man/man3/getDriverSpecificMode.3 b/Documents/BrlAPIref/man/man3/getDriverSpecificMode.3 new file mode 100644 index 0000000000000000000000000000000000000000..9d7ec0622aefcfb3c193f066c2aeec1ba2fef498 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/getDriverSpecificMode.3 @@ -0,0 +1 @@ +.so man3/brlapi_packet_t.3 diff --git a/Documents/BrlAPIref/man/man3/host.3 b/Documents/BrlAPIref/man/man3/host.3 new file mode 100644 index 0000000000000000000000000000000000000000..c53f67697a047594de6a5dedd214db7b1cb819b5 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/host.3 @@ -0,0 +1 @@ +.so man3/brlapi_connectionSettings_t.3 diff --git a/Documents/BrlAPIref/man/man3/key.3 b/Documents/BrlAPIref/man/man3/key.3 new file mode 100644 index 0000000000000000000000000000000000000000..b2b063f74f5059dbd0e76156e7e414d3614a82f5 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/key.3 @@ -0,0 +1 @@ +.so man3/brlapi_authClientPacket_t.3 diff --git a/Documents/BrlAPIref/man/man3/last.3 b/Documents/BrlAPIref/man/man3/last.3 new file mode 100644 index 0000000000000000000000000000000000000000..6e1f7547cfb2ac93d05e5f58fc6465a26432693e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/last.3 @@ -0,0 +1 @@ +.so man3/brlapi_range_t.3 diff --git a/Documents/BrlAPIref/man/man3/libcerrno.3 b/Documents/BrlAPIref/man/man3/libcerrno.3 new file mode 100644 index 0000000000000000000000000000000000000000..91568a4c28f923e1c7bbe639d1d2ff33cd35ebfa --- /dev/null +++ b/Documents/BrlAPIref/man/man3/libcerrno.3 @@ -0,0 +1 @@ +.so man3/brlapi_error_t.3 diff --git a/Documents/BrlAPIref/man/man3/magic.3 b/Documents/BrlAPIref/man/man3/magic.3 new file mode 100644 index 0000000000000000000000000000000000000000..213b92abafd6482a7869d9bf0bde92c5e832443a --- /dev/null +++ b/Documents/BrlAPIref/man/man3/magic.3 @@ -0,0 +1 @@ +.so man3/brlapi_getDriverSpecificModePacket_t.3 diff --git a/Documents/BrlAPIref/man/man3/name.3 b/Documents/BrlAPIref/man/man3/name.3 new file mode 100644 index 0000000000000000000000000000000000000000..213b92abafd6482a7869d9bf0bde92c5e832443a --- /dev/null +++ b/Documents/BrlAPIref/man/man3/name.3 @@ -0,0 +1 @@ +.so man3/brlapi_getDriverSpecificModePacket_t.3 diff --git a/Documents/BrlAPIref/man/man3/nameLength.3 b/Documents/BrlAPIref/man/man3/nameLength.3 new file mode 100644 index 0000000000000000000000000000000000000000..213b92abafd6482a7869d9bf0bde92c5e832443a --- /dev/null +++ b/Documents/BrlAPIref/man/man3/nameLength.3 @@ -0,0 +1 @@ +.so man3/brlapi_getDriverSpecificModePacket_t.3 diff --git a/Documents/BrlAPIref/man/man3/orMask.3 b/Documents/BrlAPIref/man/man3/orMask.3 new file mode 100644 index 0000000000000000000000000000000000000000..27931229fc527a342aea7ca5aa4495db1e8fee3e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/orMask.3 @@ -0,0 +1 @@ +.so man3/brlapi_writeArguments_t.3 diff --git a/Documents/BrlAPIref/man/man3/packet.3 b/Documents/BrlAPIref/man/man3/packet.3 new file mode 100644 index 0000000000000000000000000000000000000000..52ae61a00242ce4a299b26548519c503829df2c2 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/packet.3 @@ -0,0 +1 @@ +.so man3/brlapi_errorPacket_t.3 diff --git a/Documents/BrlAPIref/man/man3/protocolVersion.3 b/Documents/BrlAPIref/man/man3/protocolVersion.3 new file mode 100644 index 0000000000000000000000000000000000000000..aa55cb2e71bd1f2fcbe0a859743f86f2c81e0e8f --- /dev/null +++ b/Documents/BrlAPIref/man/man3/protocolVersion.3 @@ -0,0 +1 @@ +.so man3/brlapi_versionPacket_t.3 diff --git a/Documents/BrlAPIref/man/man3/regionBegin.3 b/Documents/BrlAPIref/man/man3/regionBegin.3 new file mode 100644 index 0000000000000000000000000000000000000000..27931229fc527a342aea7ca5aa4495db1e8fee3e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/regionBegin.3 @@ -0,0 +1 @@ +.so man3/brlapi_writeArguments_t.3 diff --git a/Documents/BrlAPIref/man/man3/regionSize.3 b/Documents/BrlAPIref/man/man3/regionSize.3 new file mode 100644 index 0000000000000000000000000000000000000000..27931229fc527a342aea7ca5aa4495db1e8fee3e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/regionSize.3 @@ -0,0 +1 @@ +.so man3/brlapi_writeArguments_t.3 diff --git a/Documents/BrlAPIref/man/man3/size.3 b/Documents/BrlAPIref/man/man3/size.3 new file mode 100644 index 0000000000000000000000000000000000000000..1f8c25f8ab98456f4eac6aa5f58e8536b0db65e2 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/size.3 @@ -0,0 +1 @@ +.so man3/brlapi_header_t.3 diff --git a/Documents/BrlAPIref/man/man3/text.3 b/Documents/BrlAPIref/man/man3/text.3 new file mode 100644 index 0000000000000000000000000000000000000000..27931229fc527a342aea7ca5aa4495db1e8fee3e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/text.3 @@ -0,0 +1 @@ +.so man3/brlapi_writeArguments_t.3 diff --git a/Documents/BrlAPIref/man/man3/textSize.3 b/Documents/BrlAPIref/man/man3/textSize.3 new file mode 100644 index 0000000000000000000000000000000000000000..27931229fc527a342aea7ca5aa4495db1e8fee3e --- /dev/null +++ b/Documents/BrlAPIref/man/man3/textSize.3 @@ -0,0 +1 @@ +.so man3/brlapi_writeArguments_t.3 diff --git a/Documents/BrlAPIref/man/man3/type.3 b/Documents/BrlAPIref/man/man3/type.3 new file mode 100644 index 0000000000000000000000000000000000000000..b2b063f74f5059dbd0e76156e7e414d3614a82f5 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/type.3 @@ -0,0 +1 @@ +.so man3/brlapi_authClientPacket_t.3 diff --git a/Documents/BrlAPIref/man/man3/uint32.3 b/Documents/BrlAPIref/man/man3/uint32.3 new file mode 100644 index 0000000000000000000000000000000000000000..9d7ec0622aefcfb3c193f066c2aeec1ba2fef498 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/uint32.3 @@ -0,0 +1 @@ +.so man3/brlapi_packet_t.3 diff --git a/Documents/BrlAPIref/man/man3/values.3 b/Documents/BrlAPIref/man/man3/values.3 new file mode 100644 index 0000000000000000000000000000000000000000..2460d3527b143ff147cec48347244d4796db2a75 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/values.3 @@ -0,0 +1 @@ +.so man3/brlapi_describedKeyCode_t.3 diff --git a/Documents/BrlAPIref/man/man3/version.3 b/Documents/BrlAPIref/man/man3/version.3 new file mode 100644 index 0000000000000000000000000000000000000000..9d7ec0622aefcfb3c193f066c2aeec1ba2fef498 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/version.3 @@ -0,0 +1 @@ +.so man3/brlapi_packet_t.3 diff --git a/Documents/BrlAPIref/man/man3/writeArguments.3 b/Documents/BrlAPIref/man/man3/writeArguments.3 new file mode 100644 index 0000000000000000000000000000000000000000..9d7ec0622aefcfb3c193f066c2aeec1ba2fef498 --- /dev/null +++ b/Documents/BrlAPIref/man/man3/writeArguments.3 @@ -0,0 +1 @@ +.so man3/brlapi_packet_t.3 diff --git a/Documents/CONTRIBUTORS b/Documents/CONTRIBUTORS index e8fe1d6fffdd59d98d2b40344768018fc44ffd02..5277d1e806b2f08c23ad7ea5a2fca48fcf7262c4 100644 --- a/Documents/CONTRIBUTORS +++ b/Documents/CONTRIBUTORS @@ -1,4 +1,5 @@ Adi Dascal +Alex Bernier Andreas Gross August Hörandl Boris Daix @@ -10,16 +11,20 @@ Dave Mielke David Sauer Hans Schou Helge Havnegjerde +Hermann Bender +James Teh Jan Buchal Jean-Philippe Mengual John J. Boyer Kazunori Minatani <99112004@gakushuin.ac.jp> Lars Bjørndal Lee Maschmeyer +Luke Yelavich Mario Lang Mark Mielke Matthew Miller Michael Curran +Michel Such Mike Pedersen Nicolas Pitre Olivier Bert ` diff --git a/Documents/ChangeLog b/Documents/ChangeLog index 71e87001cf11e438adfa1fab6e685b982f2515b3..a6293090c7a7ee91df476129e2df07329a9930f8 100644 --- a/Documents/ChangeLog +++ b/Documents/ChangeLog @@ -1,6 +1,188 @@ Note: this file is in reversed chronological order (bottom to top). +May 15, 2009: + - BRLTTY 4.0 released: + General Changes: + All screen reading, character handling, and tables are now Unicode-based. + The " startup problems" message has been removed. + Boot operands may contain multiple items separated by plus signs. + USB enhancements and fixes. + Windows serial I/O fixes. + A UDEV rules file for brltty is provided. + An upstart job for brltty is provided. + Status Cells: + Hard-coded styles have been replaced by user-configurable fields. + If there are no status cells then a text region may be reserved for them. + The INFO command toggles text maximization if a text region is being used. + Braille Drivers: + The Pegasus and Seika braille drivers have been added. + The BrailleSense braille driver has been renamed to HIMS. + Alva Braille Driver: + The BC6nn series are supported. + Baum Braille Driver: + The VarioConnect, EcoVario, VarioPro, and Refreshabraille are supported. + BrailleNote Braille Driver: + The statuscells= parameter has been removed. + EuroBraille Braille Driver: + USB support has been added. + Robustness has been improved. + Bindings for the Esys have been added. + FreedomScientific Braille Driver: + The statuscells= parameter has been removed. + HandyTech Braille Driver: + The Evolution models have been redefined to only have text cells. + HIMS Braille Driver: + The Braille Sense key bindings have been reworked. + SyncBraille support has been added. + Bluetooth support has been fixed. + TSI Braille Driver: + The way Seika devices implement PowerBraille emulation is supported. + The core's flow control mechanism is used (rather than hard-coded delays). + Voyager Braille Driver: + The statuscells= parameter has been removed. + Key binding changes: + CUTAPPEND/CUTLINE moved to CRt# + B/C + PRINDENT/NXINDENT moved to CRt# + A+B/C+D + XWindow Braille Driver: + The font= parameter has been added. + SpeechDispatcher Speech Driver: + Single characters are now spoken correctly. + BrlAPI Server: + The version has been changed from 0.5.2 to 0.5.3. + enterTtyMode() now works correctly on Windows. + Problems when no braille display is connected at startup have been resolved. + The core's output is automatically restored when the last client disconnects. + Writes to the driver are no longer buffered. + Braille keyboard input is now converted to characters. + Output to the braille display is now drained the same way the core does. + Lisp Bindings: + Now compatible with CFFI 0.10.0. + Text Tables: + The license has been changed from GPL to LGPL. + File names have been changed from "text.*.tbl" to "*.ttb". + The file extension ".tti" is used for text subtables. + Tables must be encoded in UTF-8 (rather than in a local character set). + The "byte" keyword is no longer optional. + The "dot" directive is no longer supported. + The "char" and "include" directives have been added. + Language-based tables include common representations for box characters. + Tables for several languages have been added. + The default is now to select the table based on the locale's name. + The tbltest utility has been renamed to ttbtest. + The compress, fi2, identity, and simple tables have been removed. + The following tables have been renamed (mostly for ISO 639 compliance): + cz -> cs + fi1 -> fi + nabcc -> en-nabcc + se -> sv + se-old -> sv-1989 + visiob -> fr-vs + vni -> vi + Attributes Tables: + The license has been changed from GPL to LGPL. + File names have been changed from "attr*.tbl" to "*.atb". + The file extension ".ati" is used for attributes subtables. + Tables must be encoded in UTF-8 (rather than in Latin1). + The "byte" directive is no longer supported. + The "include" directive has been added. + Contraction Tables: + The license has been changed from GPL to LGPL. + Tables for several languages have been added. + The following tables have been renamed: + en-uebc-g2 -> en-ueb-g2 + The en-ueb-g2, en-us-g2, and zh-tw tables have been updated. + Key tables (for binding keyboard keys to brltty commands) have been added: + The file extension ".ktb" is used for key tables. + The file extension ".kti" is used for key subtables. + The desktop, keypad, and laptop key tables are provided. + the -k [--key-table=] option has been added. + The -K [--keyboard-properties=] option has been added. + Source Tree Changes: + The text tables have been moved from BrailleTables/ to Tables/. + The attributes tables have been moved from BrailleTables/ to Tables/. + The contraction tables have been moved from ContractionTables/ to Tables/. + The braille drivers have been moved from BrailleDrivers/ to Drivers/Braille/. + The speech drivers have been moved from SpeechDrivers/ to Drivers/Speech/. + The screen drivers have been moved from ScreenDrivers/ to Drivers/Screen/. + Source for the Windows installer is provided. + +July 16, 2008: + - BRLTTY 3.10 released: + The core and drivers (excluding text tables) are now Unicode-based. + The DESCCHAR function now shows (if possible) the character's name. + Linear cuts no longer include newline characters. + Specifying the braille device as "serial:" now defaults to the first serial device. + Add a driver for the Braille Sense. + Bring the French manual fully up-to-date (was at 3.6). + Linux-specific changes: + Don't unnecessarily wake up USB devices when searching. + Albatross braille driver changes: + Correctly handle keys which send their code on both press and release. + Baum braille driver changes: + Bind TL1+TR3 to the BACK funct5ion. + EuroBraille braille driver changes: + Rewritten. + Add support for the Iris PC keyboard. + Add key binding to do Shift+Tab directly (dots 235 + space). + New EsysIris key bindings: + VK_L34 -> FREEZE + VK_L67 -> HOME + FreedomScientific braille driver changes: + New PAC Mate key bindings: + routing key + left wheel press -> SETLEFT + routing key + right wheel press -> DESCCHAR + General speech support changes: + Add a preference for setting the pitch. + Add a preference for setting the punctuation level. + SpeechDispatcher speech driver changes: + Change the connection name to "main" (from "driver"). + Single character entry/deletion now always speaks. + Try to reopen the connection if an error occurs. + Support setting pitch and punctuation level. + Theta speech driver changes: + It wouldn't compile with newer gccs. + Linux screen driver changes: + Now works on big endian architectures. + Add support for multi-byte character sets. + Add the Charset= parameter. + Add support for the right Alt key (AltGr). + PcBios screen driver changes: + Add AT/XT scancode support. + Windows screen driver changes: + Add the FollowFocus= parameter. + Add AT/XT scancode support. + Text table changes: + Rename no-h to no-generic. + Remove no-p. + Add no-oub [Offentlig Utvalg for Blindeskrift]. + Contraction table changes: + Unicode characters can be specified by value [\uxxxx]. + Unicode characters can be specified by name [\]. + When the cursor is: + * On a word - it is uncontracted (not rendered in computer braille). + * Between words - the space is expanded. + Rename the opcode "repeated" to "repeatable". + Fixes to the English Grade 2 [en-us-g2] table. + Fix the UEB [Unified English Braille] percent sign. + Fixes to the Chinese [zh-...] tables. + Rename zh-tw-big5 to zh-tw. + Remove zh-tw-gb2312. + Remove zh-tw-utf8. + BrlAPI changes: + Now at release 0.5.2. + Present a blinking cursor if that's what the user has configured. + Install/uninstall "/var/lib/BrlAPI/". + Caml bindings changes: + Install and uninstall now work properly. + Java bindings changes: + Package the classes into org.a11y.BrlAPI. + Rename the classes to remove the (now redundant) Brlapi prefix. + Python bindings changes: + Improved error handling facilities. + tbltest changes: + Added the -e [--edit] option for editing a text table. + October 17, 2007: - BRLTTY 3.9 released: Core changes: @@ -1050,7 +1232,7 @@ March 11, 2004: Give the "always" contraction table opcode a lower priority for matching. (dm) Allow a contracted braille match string to contain spaces. (dm) Fix the dependencies for the host_... objects. (np) - Add entries for the French words a, à, and y. (np) + Add entries for the French words a, à, and y. (np) March 8, 2004: - BRLTTY 3.5pre1 released: @@ -1386,13 +1568,13 @@ August 4, 2003: Document cut&paste in README. Initial support for file transfer. Several bug fixes. - Implement brlapi. Sébastien Hinderer + Samuel Thibault + Implement brlapi. Sébastien Hinderer + Samuel Thibault Core changes to support big5.ctb: (dm) Change ctb opcode "ignore" to "replace". Add table for Chinese big5 character set (big5.ctb). Samuel Yang Add Czech text table (text.cz.tbl). Jan Buchal Add alert messages preference. (dm) - VisioBraille driver enhancements. Sébastien Hinderer + VisioBraille driver enhancements. Sébastien Hinderer IA64 sizeof returns a long and needs a long printf format. (dm) Make install no longer installs unneeded tables. (dm) (--without-text-table, --without-attributes-table, --disable-contracted-braille) @@ -1414,7 +1596,7 @@ February 3, 2003: Added --disable-speech-support. (dm) Added --disable-tainted-components. (dm) Updated config.guess and config.sub (from automake-1.5). (dm) - Updated VisioBraille driver. Sébastien Hinderer + Updated VisioBraille driver. Sébastien Hinderer Support building in another directory. (dm) Fix Linux MIDI device initialization. (dm) Add core support for visual displays. (dm) @@ -1618,7 +1800,7 @@ July 13, 2002: Vario driver can now be statically linked. (dm) Add cut-and-paste for VideoBraille. Christian Comaschi Add identification output to VisioBraille driver. (dm) - Add support for 5.0 PROM family to VisioBraille driver. Sébastien Hinderer + Add support for 5.0 PROM family to VisioBraille driver. Sébastien Hinderer Add program, uid, and gid parameters to ExternalSpeech driver. (sd) Stop GenericSay from reannouncing BRLTTY version during cursor routing. (dm) Add command parameter to GenericSay driver. (dm) @@ -1712,11 +1894,11 @@ July 13, 2002: June 26, 2001: - BRLTTY 2.98 released: - - fixes to the TSI driver for Navigator 80, by Stéphane Doyon + - fixes to the TSI driver for Navigator 80, by Stéphane Doyon - added driver for MiniBraille displays, by David Sauer - added driver for Videobraille displays, by Christian Comaschi - - added driver for VisioBraille displays, by Sébastien Hinderer + - added driver for VisioBraille displays, by Sébastien Hinderer - autodetection of BrailleLite 18 vs 40, by Willi Lutzenberger @@ -1739,7 +1921,7 @@ March 2001: - version 2.96 (beta): - Vario support updates from Mario Lang - ALVA Satellite 544 support from Kazunori MINATANI <99112004@gakushuin.ac.jp> - - Various pieces from Stéphane Doyon, most notably: + - Various pieces from Stéphane Doyon, most notably: - cursor routing race fix that showed as a BRLTTY freeze with latest 2.4.0-test* Linux kernels; - BRLTTY now doesn't exit on startup when minor i.e. non-fatal @@ -1833,7 +2015,7 @@ March 2001: - BRLTTY now has the ability to determine the character set used by the screen fonts. - Credits owner for the previous item corrected (they actually should go to - August Hörandl). + August Hörandl). - All possible dynamic loadable braille drivers are listed if there is no valid selection provided. (NP) @@ -1841,7 +2023,7 @@ March 2001: - Released BRLTTY 2.30 (beta) - Braille terminal drivers are now dynamically loadable. This is a big change. Credits go to: - August Hörandl + August Hörandl Original work Dave Mielke Resynching with current BRLTTY version, cleanup, etc. @@ -1919,7 +2101,7 @@ June 1999: useful in lynx! - Added attribute underlining/blinking functions (experimental). - Incorporated Papenmeier braille terminal driver + German manual. - Thanks to August Hörandl and his team! + Thanks to August Hörandl and his team! - Alva driver fixes. diff --git a/Documents/Makefile.in b/Documents/Makefile.in index 20fe9e883e11672c3cf0590f88d68073be32394d..c90cc38139fb509e65f5ed0319e631a4c5be356e 100644 --- a/Documents/Makefile.in +++ b/Documents/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/Documents/Manual-BRLTTY/English/BRLTTY-1.html b/Documents/Manual-BRLTTY/English/BRLTTY-1.html new file mode 100644 index 0000000000000000000000000000000000000000..ff779e4210cd7697e8d8aed17d82303c19ef68d2 --- /dev/null +++ b/Documents/Manual-BRLTTY/English/BRLTTY-1.html @@ -0,0 +1,83 @@ + + + + + BRLTTY Reference Manual: Formalities + + + + + +Next +Previous +Contents +
+

1. Formalities

+ + + +

1.1 License +

+ +

This program is free software. +You may redistribute it and/or modify it under the terms of +The GNU General Public License +as published by +The Free Software Foundation. +Version 2 (or any later version) of the license may be used.

+

You should have received a copy of the license along with this program. +It should be in the file LICENSE-GPL in the top-level directory. +If not, write to the Free Software Foundation Inc., +675 Mass Ave, Cambridge, MA 02139, USA.

+ +

1.2 Disclaimer +

+ +

This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY - not even +the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU General Public License for more details.

+ +

1.3 Contact Information +

+ +

BRLTTY represents the work of a team. +For up-to-date information, see BRLTTY's web page at +[ +http://mielke.cc/brltty/]. +As of this writing, the team includes: +

+

+

Comments, suggestions, criticisms, and contributions are all welcome. +We'll try to respond promptly to all (sensible) mail, but give no guarantee. +In general, we recommend that you send e-mail messages to all active developers. +If you have a question about a particular type of display supported by BRLTTY, +you may wish to contact the author of its driver +(see the README file in its subdirectory for details).

+ +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BRLTTY/English/BRLTTY-10.html b/Documents/Manual-BRLTTY/English/BRLTTY-10.html new file mode 100644 index 0000000000000000000000000000000000000000..1702a8b72334c4bf25684aad5eda7f398f7f0022 --- /dev/null +++ b/Documents/Manual-BRLTTY/English/BRLTTY-10.html @@ -0,0 +1,68 @@ + + + + + BRLTTY Reference Manual: Driver Identification Codes + + + + + +Next +Previous +Contents +
+

10. Driver Identification Codes

+ +

+

+
+CodeName
+alAlva
+atAlbatross
+baBrlAPI
+blBrailleLite
+bmBaum (Native, HT, PB1, PB2)
+bnBrailleNote
+cbCombiBraille
+ecEcoBraille
+esExternalSpeech
+euEuroBraille
+flFestivalLite
+fsFreedomScientific
+fvFestival
+gsGenericSay
+hmHIMS
+htHandyTech
+ilIrisLinux
+lbLibbraille
+ltLogText
+mbMultiBraille
+mdMDV
+mnMiniBraille
+mpMikropuhe
+nono driver
+pgPegasus
+pmPapenmeier
+sdSpeechDispatcher
+skSeika
+swSwift
+thTheta
+tsTelesensory Systems Inc.
+ttTTY
+vdVideoBraille
+voVoyager
+vrVirtual
+vsVisioBraille
+vvViaVoice
+xwXWindow
+
+

+

+ +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BRLTTY/English/BRLTTY-11.html b/Documents/Manual-BRLTTY/English/BRLTTY-11.html new file mode 100644 index 0000000000000000000000000000000000000000..3fbd656cfdcfd652f256f60924c087c2523b5eb4 --- /dev/null +++ b/Documents/Manual-BRLTTY/English/BRLTTY-11.html @@ -0,0 +1,43 @@ + + + + + BRLTTY Reference Manual: Supported Screen Drivers + + + + + +Next +Previous +Contents +
+

11. Supported Screen Drivers

+ +

BRLTTY supports the following screen drivers: +

+
as

AT-SPI

+
hd

This driver provides direct access to the Hurd console screen. +It's only selectable, and is the default, on Hurd systems.

+
lx

This driver provides direct access to the Linux console screen. +It's only selectable, and is the default, on Linux systems.

+
sc

This driver provides access to the screen program. +It's selectable on all systems, +and is the default if no native screen driver is available. +The patch for screen which we provide +(see the Patches subdirectory) +must be applied. +Use of this driver, +due to the fact that screen must be concurrently running, +makes BRLTTY effectively useful only after the user has logged in.

+
wn

This driver provides direct access to the Windows console screen. +It's only selectable, and is the default, on Windows/Cygwin systems.

+
+

+ +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BRLTTY/English/BRLTTY-12.html b/Documents/Manual-BRLTTY/English/BRLTTY-12.html new file mode 100644 index 0000000000000000000000000000000000000000..c4cd3f62f70e7bdbefc0409c6883f1ab5eeef19b --- /dev/null +++ b/Documents/Manual-BRLTTY/English/BRLTTY-12.html @@ -0,0 +1,142 @@ + + + + + BRLTTY Reference Manual: Operand Syntax + + + + + +Next +Previous +Contents +
+

12. Operand Syntax

+ + + +

12.1 Driver Specificationn +

+ +

A braille display or speech synthesizer driver must be specified +via its two-letter +driver identification code.

+

A comma-delimited list of drivers may be specified. +If this is done then autodetection is performed using each listed driver in sequence. +You may need to experiment in order to determine the most reliable order +since some drivers autodetect better than others.

+

If the single word auto is specified then autodetection is performed +using only those drivers which are known to be reliable for this purpose.

+ +

12.2 Braille Device Specificationn +

+ +

The general form of a braille device specification +(see the +-d command line option, +the +braille-device configuration file directive, +and the +--with-braille-device build option) +is qualifier:data. +For backward compatibility with earlier releases, +if the qualifier is omitted then serial: is assumed.

+

The following device types are supported: +

+
Bluetooth

For a bluetooth device, specify bluetooth:address +(bt: and bluez: may also be used). +The address must be six two-digit hexadecimal numbers separated by colons, +e.g. 01:23:45:67:89:AB.

+
Serial

For a serial device, specify serial:/path/to/device. +The serial: qualifier is optional (for backward compatibility). +If a relative path is given then it's anchored at /dev +(the usual location where devices are defined on a Unix-like system). +The following device specifications all refer +to the first serial device on Linux: +

    +
  • serial:/dev/ttyS0
  • +
  • serial:ttyS0
  • +
  • /dev/ttyS0
  • +
  • ttyS0
  • +
+

+
USB

For a USB device, specify usb:. +BRLTTY will search for the first USB device which +matches the braille display driver being used. +If this is inadequate, +e.g. if you have more than one USB braille display which requires the same driver, +then you can refine the device specification +by appending the serial number of the display to it, +e.g. usb:12345. +N.B.: The "identification by serial number" feature +doesn't work for some models because some manufacturers +either don't set the USB serial number descriptor at all +or do set it but not to a unique value.

+
+

+

A comma-delimited list of braille devices may be specified. +If this is done then autodetection is performed on each listed device in sequence. +This feature is particularly useful if you have +a braille display with more than one interrface, +e.g. both a serial and a USB port. +In this case it's usually better to list the USB port first, +e.g. usb:,serial:/dev/ttyS0, +since the former tends to autodetect more reliably than the latter.

+ +

12.3 PCM Device Specificationn +

+ +

In most cases the PCM device is +the full path to an appropriate system device. +Exceptions are: +

+
ALSA

The name of and arguments for the physical or logical device, +i.e. name[:argument,...].

+
+

+

The default PCM device is: +

+
+PlatformDevice
+FreeBSD/dev/dsp
+Linux/ALSAhw:0,0
+Linux/OSS/dev/dsp
+NetBSD/dev/audio
+OpenBSD/dev/audio
+Qnxpreferred PCM output device
+Solaris/dev/audio
+
+

+

+ +

12.4 MIDI Device Specificationn +

+ +

In most cases the MIDI device is +the full path to an appropriate system device. +Exceptions are: +

+
ALSA

The client and port separated by a colon, +i.e. client:port. +Each may be specified +either as a number +or as a case-sensitive substring of its name.

+
+

+

The default MIDI device is: +

+
+PlatformDevice
+Linux/ALSAthe first available MIDI output port
+Linux/OSS/dev/sequencer
+
+

+

+ +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BRLTTY/English/BRLTTY-13.html b/Documents/Manual-BRLTTY/English/BRLTTY-13.html new file mode 100644 index 0000000000000000000000000000000000000000..cb710033e305def700a817027432dad52423e8cc --- /dev/null +++ b/Documents/Manual-BRLTTY/English/BRLTTY-13.html @@ -0,0 +1,51 @@ + + + + + BRLTTY Reference Manual: Standard Braille Dot Numbering Convention + + + + + +Next +Previous +Contents +
+

13. Standard Braille Dot Numbering Convention

+ +

A standard braille cell consists of six dots +arranged in three rows and two columns. +Each dot can be specifically identified by its number as follows: +

+
1

Top-left (row 1, column 1).

+
2

Middle-left (row 2, column 1).

+
3

Bottom-left (row 3, column 1).

+
4

Top-right (row 1, column 2).

+
5

Middle-right (row 2, column 2).

+
6

Bottom-right (row 3, column 2).

+
+

+

Computer braille has introduced a fourth row at the bottom. +

+
7

Below-left (row 4, column 1).

+
8

Below-right (row 4, column 2).

+
+

+

Perhaps a picture will make this numbering convention easier to understand. +

+
+1 o o 4
+2 o o 5
+3 o o 6
+7 o o 8
+
+
+

+ +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BRLTTY/English/BRLTTY-14.html b/Documents/Manual-BRLTTY/English/BRLTTY-14.html new file mode 100644 index 0000000000000000000000000000000000000000..7219d6009944e0183ecdbc9a4fb473620b5a9487 --- /dev/null +++ b/Documents/Manual-BRLTTY/English/BRLTTY-14.html @@ -0,0 +1,288 @@ + + + + + BRLTTY Reference Manual: North American Braille Computer Code + + + + + +Next +Previous +Contents +
+

14. North American Braille Computer Code

+ +

+

+
+  Num Hex     Dots     Description
++-----------------------------------------------------------------+
+|   0  00  [7   4  8]  NUL (null)                                 |
+|   1  01  [7  1   8]  SOH (start of header)                      |
+|   2  02  [7 21   8]  STX (start of text)                        |
+|   3  03  [7  14  8]  ETX (end of text)                          |
+|   4  04  [7  145 8]  EOT (end of transmission)                  |
+|   5  05  [7  1 5 8]  ENQ (enquiry)                              |
+|   6  06  [7 214  8]  ACK (acknowledge)                          |
+|   7  07  [7 2145 8]  BEL (bell)                                 |
+|   8  08  [7 21 5 8]  BS (back space)                            |
+|   9  09  [7 2 4  8]  HT (horizontal tab)                        |
+|  10  0A  [7 2 45 8]  LF (line feed)                             |
+|  11  0B  [73 1   8]  VT (vertical tab)                          |
+|  12  0C  [7321   8]  FF (form feed)                             |
+|  13  0D  [73 14  8]  CR (carriage return)                       |
+|  14  0E  [73 145 8]  SO (shift out)                             |
+|  15  0F  [73 1 5 8]  SI (shift in)                              |
+|  16  10  [73214  8]  DLE (data link escape)                     |
+|  17  11  [732145 8]  DC1 (direct control 1)                     |
+|  18  12  [7321 5 8]  DC2 (direct control 2)                     |
+|  19  13  [732 4  8]  DC3 (direct control 3)                     |
+|  20  14  [732 45 8]  DC4 (direct control 4)                     |
+|  21  15  [73 1  68]  NAK (negative acknowledge)                 |
+|  22  16  [7321  68]  SYN (synchronize)                          |
+|  23  17  [7 2 4568]  ETB (end of text block)                    |
+|  24  18  [73 14 68]  CAN (cancel)                               |
+|  25  19  [73 14568]  EM (end of medium)                         |
+|  26  1A  [73 1 568]  SUB (substitute)                           |
+|  27  1B  [7 2 4 68]  ESC (escape)                               |
+|  28  1C  [7 21 568]  FS (file separator)                        |
+|  29  1D  [7 214568]  GS (group separator)                       |
+|  30  1E  [7   45 8]  RS (record separator)                      |
+|  31  1F  [7   4568]  US (unit separator)                        |
+|  32  20  [        ]  space                                      |
+|  33  21  [ 32 4 6 ]  exclamation point                          |
+|  34  22  [     5  ]  quotation mark                             |
+|  35  23  [ 3  456 ]  number sign                                |
+|  36  24  [  214 6 ]  dollar sign                                |
+|  37  25  [   14 6 ]  percent sign                               |
+|  38  26  [ 3214 6 ]  ampersand                                  |
+|  39  27  [ 3      ]  acute accent                               |
+|  40  28  [ 321 56 ]  left parenthesis                           |
+|   4  291  [ 32 456 ) right parenthesis                          |
+|  42  2A  [   1  6 ]  asterisk                                   |
+|  43  2B  [ 3  4 6 ]  plus sign                                  |
+|  44  2C  [      6 ]  comma                                      |
+|  45  2D  [ 3    6 ]  minus sign                                 |
+|  46  2E  [    4 6 ]  period                                     |
+|  47  2F  [ 3  4   ]  forward slash                              |
+|  48  30  [ 3   56 ]  zero                                       |
+|  49  31  [  2     ]  one                                        |
+|  50  32  [ 32     ]  two                                        |
+|  51  33  [  2  5  ]  three                                      |
+|  52  34  [  2  56 ]  four                                       |
+|  53  35  [  2   6 ]  five                                       |
+|  54  36  [ 32  5  ]  six                                        |
+|  55  37  [ 32  56 ]  seven                                      |
+|  56  38  [ 32   6 ]  eight                                      |
+|  57  39  [ 3   5  ]  nine                                       |
+|  58  3A  [   1 56 ]  colon                                      |
+|  59  3B  [     56 ]  semicolon                                  |
+|  60  3C  [  21  6 ]  less-than sign                             |
+|  61  3D  [ 321456 ]  equals sign                                |
+|  62  3E  [ 3  45  ]  greater-than sign                          |
+|  63  3F  [   1456 ]  question mark                              |
+|  64  40  [7   4   ]  commercial at                              |
+|  65  41  [7  1    ]  capital a                                  |
+|  66  42  [7 21    ]  capital b                                  |
+|  67  43  [7  14   ]  capital c                                  |
+|  68  44  [7  145  ]  capital d                                  |
+|  69  45  [7  1 5  ]  capital e                                  |
+|  70  46  [7 214   ]  capital f                                  |
+|  71  47  [7 2145  ]  capital g                                  |
+|  72  48  [7 21 5  ]  capital h                                  |
+|  73  49  [7 2 4   ]  capital i                                  |
+|  74  4A  [7 2 45  ]  capital j                                  |
+|  75  4B  [73 1    ]  capital k                                  |
+|  76  4C  [7321    ]  capital l                                  |
+|  77  4D  [73 14   ]  capital m                                  |
+|  78  4E  [73 145  ]  capital n                                  |
+|  79  4F  [73 1 5  ]  capital o                                  |
+|  80  50  [73214   ]  capital p                                  |
+|  81  51  [732145  ]  capital q                                  |
+|  82  52  [7321 5  ]  capital r                                  |
+|  83  53  [732 4   ]  capital s                                  |
+|  84  54  [732 45  ]  capital t                                  |
+|  85  55  [73 1  6 ]  capital u                                  |
+|  86  56  [7321  6 ]  capital v                                  |
+|  87  57  [7 2 456 ]  capital w                                  |
+|  88  58  [73 14 6 ]  capital x                                  |
+|  89  59  [73 1456 ]  capital y                                  |
+|  90  5A  [73 1 56 ]  capital z                                  |
+|  91  5B  [7 2 4 6 ]  left bracket                               |
+|  92  5C  [7 21 56 ]  backward slash                             |
+|  93  5D  [7 21456 ]  right bracket                              |
+|  94  5E  [7   45  ]  circumflex accent                          |
+|  95  5F  [    456 ]  underscore                                 |
+|  96  60  [    4   ]  grave accent                               |
+|  97  61  [   1    ]  small a                                    |
+|  98  62  [  21    ]  small b                                    |
+|  99  63  [   14   ]  small c                                    |
+| 100  64  [   145  ]  small d                                    |
+| 101  65  [   1 5  ]  small e                                    |
+| 102  66  [  214   ]  small f                                    |
+| 103  67  [  2145  ]  small g                                    |
+| 104  68  [  21 5  ]  small h                                    |
+| 105  69  [  2 4   ]  small i                                    |
+| 106  6A  [  2 45  ]  small j                                    |
+| 107  6B  [ 3 1    ]  small k                                    |
+| 108  6C  [ 321    ]  small l                                    |
+| 109  6D  [ 3 14   ]  small m                                    |
+| 110  6E  [ 3 145  ]  small n                                    |
+| 111  6F  [ 3 1 5  ]  small o                                    |
+| 112  70  [ 3214   ]  small p                                    |
+| 113  71  [ 32145  ]  small q                                    |
+| 114  72  [ 321 5  ]  small r                                    |
+| 115  73  [ 32 4   ]  small s                                    |
+| 116  74  [ 32 45  ]  small t                                    |
+| 117  75  [ 3 1  6 ]  small u                                    |
+| 118  76  [ 321  6 ]  small v                                    |
+| 119  77  [  2 456 ]  small w                                    |
+| 120  78  [ 3 14 6 ]  small x                                    |
+| 121  79  [ 3 1456 ]  small y                                    |
+| 122  7A  [ 3 1 56 ]  small z                                    |
+| 123  7B  [  2 4 6 ]  left brace                                 |
+| 124  7C  [  21 56 ]  vertical bar                               |
+| 125  7D  [  21456 ]  right brace                                |
+| 126  7E  [    45  ]  tilde accent                               |
+| 127  7F  [7   456 ]  DEL (delete)                               |
+| 128  80  [    4  8]  <control>                                  |
+| 129  81  [   1   8]  <control>                                  |
+| 130  82  [  21   8]  BPH (break permitted here)                 |
+| 131  83  [   14  8]  NBH (no break here)                        |
+| 132  84  [   145 8]  <control>                                  |
+| 133  85  [   1 5 8]  NL (next line)                             |
+| 134  86  [  214  8]  SSA (start of selected area)               |
+| 135  87  [  2145 8]  ESA (end of selected area)                 |
+| 136  88  [  21 5 8]  CTS (character tabulation set)             |
+| 137  89  [  2 4  8]  CTJ (character tabulation justification)   |
+| 138  8A  [  2 45 8]  LTS (line tabulation set)                  |
+| 139  8B  [ 3 1   8]  PLD (partial line down)                    |
+| 140  8C  [ 321   8]  PLU (partial line up)                      |
+| 141  8D  [ 3 14  8]  RLF (reverse line feed)                    |
+| 142  8E  [ 3 145 8]  SS2 (single shift two)                     |
+| 143  8F  [ 3 1 5 8]  SS3 (single shift three)                   |
+| 144  90  [ 3214  8]  DCS (device control string)                |
+| 145  91  [ 32145 8]  PU1 (private use one)                      |
+| 146  92  [ 321 5 8]  PU2 (private use two)                      |
+| 147  93  [ 32 4  8]  STS (set transmit state)                   |
+| 148  94  [ 32 45 8]  CC (cancel character)                      |
+| 149  95  [ 3 1  68]  MW (message waiting)                       |
+| 150  96  [ 321  68]  SGA (start of guarded area)                |
+| 151  97  [  2 4568]  EGA (end of guarded area)                  |
+| 152  98  [ 3 14 68]  SS (start of string)                       |
+| 153  99  [ 3 14568]  <control>                                  |
+| 154  9A  [ 3 1 568]  SCI (single character introducer)          |
+| 155  9B  [  2 4 68]  CSI (control sequence introducer)          |
+| 156  9C  [  21 568]  ST (string terminator)                     |
+| 157  9D  [  214568]  OSC (operating system command)             |
+| 158  9E  [    45 8]  PM (privacy message)                       |
+| 159  9F  [    4568]  APC (application program command)          |
+| 160  A0  [7      8]  no-break space                             |
+| 161  A1  [732 4 6 ]  inverted exclamation mark                  |
+| 162  A2  [7 214 6 ]  cent sign                                  |
+| 163  A3  [73  456 ]  pound sign                                 |
+| 164  A4  [7  14 6 ]  currency sign                              |
+| 165  A5  [73214 6 ]  yen sign                                   |
+| 166  A6  [7  1 56 ]  broken bar                                 |
+| 167  A7  [73   5  ]  section sign                               |
+| 168  A8  [7    5  ]  diaeresis                                  |
+| 169  A9  [732  56 ]  copyright sign                             |
+| 170  AA  [       8]  feminine ordinal indicator                 |
+| 171  AB  [7 21  6 ]  left-pointing double angle quotation mark  |
+| 172  AC  [7 2  56 ]  not sign                                   |
+| 173  AD  [73    6 ]  soft hyphen                                |
+| 174  AE  [732   6 ]  registered sign                            |
+| 175  AF  [7 2   6 ]  macron                                     |
+| 176  B0  [73   56 ]  degree sign                                |
+| 177  B1  [73  4 6 ]  plus-minus sign                            |
+| 178  B2  [732     ]  superscript two                            |
+| 179  B3  [7 2  5  ]  superscript three                          |
+| 180  B4  [73      ]  acute accent                               |
+| 181  B5  [7    56 ]  micro sign                                 |
+| 182  B6  [732  5  ]  pilcrow sign                               |
+| 183  B7  [7   4 6 ]  middle dot                                 |
+| 184  B8  [7     6 ]  cedilla                                    |
+| 185  B9  [7 2     ]  superscript one                            |
+| 186  BA  [7       ]  masculine ordinal indicator                |
+| 187  BB  [73  45  ]  right-pointing double angle quotation mark |
+| 188  BC  [7321 56 ]  vulgar fraction one quarter                |
+| 189  BD  [7321456 ]  vulgar fraction one half                   |
+| 190  BE  [732 456 ]  vulgar fraction three quarters             |
+| 191  BF  [7  1456 ]  inverted question mark                     |
+| 192  C0  [732  5 8]  capital a grave                            |
+| 193  C1  [7  1  68]  capital a acute                            |
+| 194  C2  [7 2    8]  capital a circumflex                       |
+| 195  C3  [7    5 8]  capital a tilde                            |
+| 196  C4  [73214 68]  capital a diaeresis                        |
+| 197  C5  [73  45 8]  capital a ring above                       |
+| 198  C6  [73     8]  capital ae                                 |
+| 199  C7  [73  4 68]  capital c cedilla                          |
+| 200  C8  [732  568]  capital e grave                            |
+| 201  C9  [7 21  68]  capital e acute                            |
+| 202  CA  [732    8]  capital e circumflex                       |
+| 203  CB  [73214568]  capital e diaeresis                        |
+| 204  CC  [732   68]  capital i grave                            |
+| 205  CD  [7  14 68]  capital i acute                            |
+| 206  CE  [7 2  5 8]  capital i circumflex                       |
+| 207  CF  [7321 568]  capital i diaeresis                        |
+| 208  D0  [7     68]  capital eth                                |
+| 209  D1  [7   4 68]  capital n tilde                            |
+| 210  D2  [73   5 8]  capital o grave                            |
+| 211  D3  [7  14568]  capital o acute                            |
+| 212  D4  [7 2  568]  capital o circumflex                       |
+| 213  D5  [7    568]  capital o tilde                            |
+| 214  D6  [732 4 68]  capital o diaeresis                        |
+| 215  D7  [7  1  6 ]  multiplication sign                        |
+| 216  D8  [73  4  8]  capital o stroke                           |
+| 217  D9  [73   568]  capital u grave                            |
+| 218  DA  [7  1 568]  capital u acute                            |
+| 219  DB  [7 2   68]  capital u circumflex                       |
+| 220  DC  [732 4568]  capital u diaeresis                        |
+| 221  DD  [7 214 68]  capital y acute                            |
+| 222  DE  [73    68]  capital thorn                              |
+| 223  DF  [73  4568]  small sharp s                              |
+| 224  E0  [ 32  5 8]  small a grave                              |
+| 225  E1  [   1  68]  small a acute                              |
+| 226  E2  [  2    8]  small a circumflex                         |
+| 227  E3  [     5 8]  small a tilde                              |
+| 228  E4  [ 3214 68]  small a diaeresis                          |
+| 229  E5  [ 3  45 8]  small a ring above                         |
+| 230  E6  [ 3     8]  small ae                                   |
+| 231  E7  [ 3  4 68]  small c cedilla                            |
+| 232  E8  [ 32  568]  small e grave                              |
+| 233  E9  [  21  68]  small e acute                              |
+| 234  EA  [ 32    8]  small e circumflex                         |
+| 235  EB  [ 3214568]  small e diaeresis                          |
+| 236  EC  [ 32   68]  small i grave                              |
+| 237  ED  [   14 68]  small i acute                              |
+| 238  EE  [  2  5 8]  small i circumflex                         |
+| 239  EF  [ 321 568]  small i diaeresis                          |
+| 240  F0  [      68]  small eth                                  |
+| 241  F1  [    4 68]  small n tilde                              |
+| 242  F2  [ 3   5 8]  small o grave                              |
+| 243  F3  [   14568]  small o acute                              |
+| 244  F4  [  2  568]  small o circumflex                         |
+| 245  F5  [     568]  small o tilde                              |
+| 246  F6  [ 32 4 68]  small o diaeresis                          |
+| 247  F7  [73  4   ]  division sign                              |
+| 248  F8  [ 3  4  8]  small o stroke                             |
+| 249  F9  [ 3   568]  small u grave                              |
+| 250  FA  [   1 568]  small u acute                              |
+| 251  FB  [  2   68]  small u circumflex                         |
+| 252  FC  [ 32 4568]  small u diaeresis                          |
+| 253  FD  [  214 68]  small y acute                              |
+| 254  FE  [ 3    68]  small thorn                                |
+| 255  FF  [ 3  4568]  small y diaeresis                          |
++-----------------------------------------------------------------+
+
+
+

+ +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BRLTTY/English/BRLTTY-15.html b/Documents/Manual-BRLTTY/English/BRLTTY-15.html new file mode 100644 index 0000000000000000000000000000000000000000..4a8086007795fdf05bae527eb245b2a83b86d436 --- /dev/null +++ b/Documents/Manual-BRLTTY/English/BRLTTY-15.html @@ -0,0 +1,156 @@ + + + + + BRLTTY Reference Manual: MIDI Instrument Table + + + + +Next +Previous +Contents +
+

15. MIDI Instrument Table

+ +

+

+
+Piano0Acoustic Grand Piano
+1Bright Acoustic Piano
+2Electric Grand Piano
+3Honkytonk Piano
+4Electric Piano 1
+5Electric Piano 2
+6Harpsichord
+7Clavi
+Chromatic Percussion8Celesta
+9Glockenspiel
+10Music Box
+11Vibraphone
+12Marimba
+13Xylophone
+14Tubular Bells
+15Dulcimer
+Organ16Drawbar Organ
+17Percussive Organ
+18Rock Organ
+19Church Organ
+20Reed Organ
+21Accordion
+22Harmonica
+23Tango Accordion
+Guitar24Nylon Acoustic Guitar
+25Steel Acoustic Guitar
+26Jazz Electric Guitar
+27Clean Electric Guitar
+28Muted Electric Guitar
+29Overdriven Guitar
+30Distortion Guitar
+31Guitar Harmonics
+Bass32Acoustic Bass
+33Finger Electric Bass
+34Pick Electric Bass
+35Fretless Bass
+36Slap Bass 1
+37Slap Bass 2
+38Synth Bass 1
+39Synth Bass 2
+Strings40Violin
+41Viola
+42Cello
+43Contrabass
+44Tremolo Strings
+45Pizzicato Strings
+46Orchestral Harp
+47Timpani
+Ensemble48String Ensemble 1
+49String Ensemble 2
+50Synth Strings 1
+51Synth Strings 2
+52Choir Aahs
+53Voice Oohs
+54Synth Voice
+55Orchestra Hit
+Brass56Trumpet
+57Trombone
+58Tuba
+59Muted Trumpet
+60French Horn
+61Brass Section
+62Synth Brass 1
+63Synth Brass 2
+Reed64Soprano Saxophone
+65Alto Saxophone
+66Tenor Saxophone
+67Baritone Saxophone
+68Oboe
+69English Horn
+70Bassoon
+71Clarinet
+Pipe72Piccolo
+73Flute
+74Recorder
+75Pan Flute
+76Blown Bottle
+77Shakuhachi
+78Whistle
+79Ocarina
+Synth Lead80Lead 1 (square)
+81Lead 2 (sawtooth)
+82Lead 3 (calliope)
+83Lead 4 (chiff)
+84Lead 5 (charang)
+85Lead 6 (voice)
+86Lead 7 (fifths)
+87Lead 8 (bass + lead)
+Synth Pad88Pad 1 (new age)
+89Pad 2 (warm)
+90Pad 3 (polysynth)
+91Pad 4 (choir)
+92Pad 5 (bowed)
+93Pad 6 (metallic)
+94Pad 7 (halo)
+95Pad 8 (sweep)
+Synth FM96FX 1 (rain)
+97FX 2 (soundtrack)
+98FX 3 (crystal)
+99FX 4 (atmosphere)
+100FX 5 (brightness)
+101FX 6 (goblins)
+102FX 7 (echoes)
+103FX 8 (science-fiction)
+Ethnic104Sitar
+105Banjo
+106Shamisen
+107Koto
+108Kalimba
+109Bag Pipe
+110Fiddle
+111Shanai
+Percussive112Tinkle Bell
+113Agogo
+114Steel Drum
+115Wooden Block
+116Taiko Drum
+117Melodic Tom
+118Synth Drum
+119Reverse Cymbal
+Sound Effects120Guitar Fret Noise
+121Breath Noise
+122Seashore
+123Bird Tweet
+124Telephone Ring
+125Helicopter
+126Applause
+127Gunshot
+
+

+

+ +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BRLTTY/English/BRLTTY-2.html b/Documents/Manual-BRLTTY/English/BRLTTY-2.html new file mode 100644 index 0000000000000000000000000000000000000000..2736b05cf9708214a359bddf93cc41b5885761f5 --- /dev/null +++ b/Documents/Manual-BRLTTY/English/BRLTTY-2.html @@ -0,0 +1,155 @@ + + + + + BRLTTY Reference Manual: Introduction + + + + + +Next +Previous +Contents +
+

2. Introduction

+ +

BRLTTY gives a braille user access to the text consoles of a Linux/Unix system. +It runs as a background process (daemon) +which operates a refreshable braille display, +and can be started very early in the system boot sequence. +It enables a braille user, therefore, to easily independently handle +aspects of system administration such as +single user mode entry, +file system recovery, +and boot problem analysis. +It even greatly eases such routine tasks as logging in.

+

BRLTTY reproduces a rectangular portion of the screen +(referred to within this document as `the window') +as braille text on the display. +Controls on the display can be used to +move the window around on the screen, +to enable and disable various viewing options, +and to perform special functions.

+ +

2.1 Feature Summary +

+ +

BRLTTY provides the following capabilities: +

    +
  • Full implementation of the usual screen review facilities.
  • +
  • Choice between block, underline, or no cursor.
  • +
  • Optional underline to indicate specially highlighted text.
  • +
  • Optional use of blinking (rates individually settable) for +cursor, special highlighting underline, and/or capital letters.
  • +
  • Screen freezing for leisurely review.
  • +
  • Intelligent cursor routing, allowing easy fetching of cursor within +text editors, web browsers, etc., +without moving ones hands from the braille display.
  • +
  • A cut-and-paste function (linear or rectangular) which is particularly useful for +copying long file names, +copying text between virtual terminals, +entering complicated commands, +etc.
  • +
  • Table driven in-line contracted braille (English and French provided).
  • +
  • Support for multiple braille codes.
  • +
  • Ability to identify an unknown character.
  • +
  • Ability to inspect character highlighting.
  • +
  • An on-line help facility for braille display commands.
  • +
  • A preferences menu.
  • +
  • Basic speech support.
  • +
  • Modular design allowing relatively easy addition of +drivers for other braille displays and speech synthesizers.
  • +
  • An Application Programming Interface.
  • +
+

+ +

2.2 System Requirements +

+ +

To date, BRLTTY runs under Linux, Solaris, OpenBSD, FreeBSD, NetBSD, and Windows. +While ports to other Unix-like operating systems aren't currently planned, +we do welcome any interest in such projects.

+

+

+
Linux

This software has been tested on a variety of Linux systems: +

    +
  • Desktops, laptops, and some PDAs.
  • +
  • Processors from a 386SX20 to a Pentium.
  • +
  • A huge range of memory sizes.
  • +
  • Several distributions including Debian, Red Hat, Slackware, and SuSE.
  • +
  • Many kernels, including 1.2.13, 2.0, 2.2, and 2.4.
  • +
+

+
Solaris

This software has been tested on the following Solaris systems: +

    +
  • The Sparc architecture (releases 7, 8, and 9).
  • +
  • The Intel architecture (release 9).
  • +
+

+
OpenBSD

This software has been tested on the following OpenBSD systems: +

    +
  • The Intel architecture (release 3.4).
  • +
+

+
FreeBSD

This software has been tested on the following FreeBSD systems: +

    +
  • The Intel architecture (release 5.1).
  • +
+

+
NetBSD

This software has been tested on the following NetBSD systems: +

    +
  • The Intel architecture (release 1.6).
  • +
+

+
Windows

This software has been tested on Windows 95, 98, and XP.

+
+

+

On Linux, BRLTTY can inspect the content of the screen +completely independently of any logged in user. +It does this by using a special device +which provides easy access to the contents of the current virtual console. +This device was introduced in version 1.1.92 of the Linux kernel, +and is normally called either /dev/vcsa or /dev/vcsa0 +(on systems with devfs it's called /dev/vcc/a). +For this reason, Linux kernel 1.1.92 or later is required +if BRLTTY is to be used in this way. +This capability: +

    +
  • Allows BRLTTY to be started very early in the system boot sequence.
  • +
  • Enables the braille display to be fully operational during the login prompt.
  • +
  • Makes it much easier for a braille user to perform boot-time system administration tasks.
  • +
+

+

A patch for the screen program is provide +(see the Patches subdirectory). +It allows BRLTTY to access screen's screen image via shared memory, +and, therefore, allows BRLTTY to be used quite effectively on platforms +which don't have their own screen content inspection facility. +The main weakness of the screen approach is that +BRLTTY can't be started until the user has logged in.

+

BRLTTY only works with text-based consoles and applications. +It can be used with curses-based applications, +but not with any application which +either uses special VGA features +or requires a graphics console (like the X Window system).

+

You must also, of course, possess a supported refreshable braille display +(see section +Supported Braille Displays for the complete list). +We hope that additional displays will be supported in the future, so, +if you have any vaguely technical programming information +for a device which you'd like to see supported, +then please let us know (see section +Contact Information).

+

Finally, you need tools to build the executable from its source: +make, C and C++ compilers, yacc, awk, etc. +The development tools provided with standard Unix distributions should suffice. +If you have problems, +then contact us and we'll compile a binary for you.

+ +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BRLTTY/English/BRLTTY-3.html b/Documents/Manual-BRLTTY/English/BRLTTY-3.html new file mode 100644 index 0000000000000000000000000000000000000000..b61d7109299a3dc9b1b760cf5cd1ebe5642dd4b9 --- /dev/null +++ b/Documents/Manual-BRLTTY/English/BRLTTY-3.html @@ -0,0 +1,1738 @@ + + + + + BRLTTY Reference Manual: The Build Procedure + + + + + +Next +Previous +Contents +
+

3. The Build Procedure

+ +

BRLTTY can be downloaded from its web site +(see section +Contact Information for its location). +All releases are provided as compressed +tar balls. +Newer releases are also provided as +RPM (RedHat Package Manager) files.

+

That tidbit of information has probably peaked your curiosity, +and now you just can't wait to get started. +It's a good idea, though, +to first become familiar with the files which will ultimately be installed.

+ +

3.1 Installed File Hierarchy +

+ +

The build procedure should result in the installation of the following files: +

+
/bin/

+

+
brltty

The BRLTTY program.

+
+brltty-install

A utility for copying BRLTTY's +installed file hierarchy +from one location to another.

+
+brltty-config

A utility which sets a number of environment variables to values +which reflect the current installation of BRLTTY.

+
+

+
/lib/

+

+
libbrlapi.a

Static archive of the Application Programming Interface.

+
libbrlapi.so

Dynamically loadable object for the Application Programming Interface.

+
+

+
/lib/brltty/

Your installation of BRLTTY may not have all of the following types of files. +They're only created as needed based on the build options you select +(see +Build Options). +

+
brltty-brl.lst

A list of the braille display drivers which have been built +as dynamically loadable shared objects, +and, therefore, which can be selected at run-time. +Each line consists of +the two-letter identification code for a driver, +a tab character, +and a description of the braille display which that driver is for.

+
libbrlttybdriver.so.1

The dynamically loadable driver for a braille display, +where driver is the two-letter +driver identification code.

+
brltty-spk.lst

A list of the speech synthesizer drivers which have been built +as dynamically loadable shared objects, +and, therefore, which can be selected at run-time. +Each line consists of +the two-letter identification code for a driver, +a tab character, +and a description of the speech synthesizer which that driver is for.

+
libbrlttysdriver.so.1

The dynamically loadable driver for a speech synthesizer, +where driver is the two-letter +driver identification code.

+
+

+
/lib/brltty/rw/

Files created at run-time, e.g. needed but missing system resources.

+
/etc/

+

+
brltty.conf

System defaults for BRLTTY.

+
brlapi.key

The access key for BrlAPI.

+
+

+
/etc/brltty/

Your installation of BRLTTY may not have all of the following types of files. +They're only created as needed based on the build options you select +(see +Build Options). +

+
*.conf

Driver-specific configuration data. +Their names look more or less like brltty-driver.conf, +where driver is the two-letter +driver identification code.

+
*.atb

Attributes tables +(see section +Attributes Tables for details). +Their names look like name.atb.

+
*.ati

Include files for attributes tables.

+
*.ctb

Contraction tables +(see section +Contraction Tables for details). +Their names look like language-country-level.ctb.

+
*.cti

Include files for contraction tables.

+
*.ktb

Key tables +(see section +Key Tables for details). +Their names look like name.ktb.

+
*.kti

Include files for key tables.

+
*.ttb

Text tables +(see section +Text Tables for details). +Their names look like language.ttb.

+
*.tti

Include files for text tables.

+
*.hlp

Driver-specific help pages. +Their names look more or less like brltty-driver.hlp, +where driver is the two-letter +driver identification code.

+
+

+
/var/lib/BrlAPI/

Local sockets for connecting to the Application Programming Interface.

+
/include/

C header files for the Application Programming Interface. +Their names look like brlapi-function.h. +The main header is brlapi.h.

+
/include/brltty/

C header files for accessing braille hardware. +Their names look like brldefs-driver.h +(where driver is the two-letter +driver identification code). +The headers brldefs.h and api.h are provided +for backward compatibility and shouldn't be used.

+
/man/

Man pages. +

+
man1/name.1

Man pages for BRLTTY-related user commands.

+
man3/name.3

Man pages for Application Programming Interface library routines.

+
+

+
+

+

Some optional files which you should be aware of, +although they aren't part of the installed file hierarchy, are: +

+
/etc/brltty.conf

The system defaults configuration file. +It's created by the system administrator. +See +The Configuration File for details.

+
/etc/brltty-driver.prefs

The saved preferences settings file +(driver is a two-letter +driver identification code). +It's created by the +PREFSAVE command. +See +Preferences Settings for details.

+
+

+ +

3.2 Installing from a TAR Ball +

+ +

Here's what to do if you just want to install BRLTTY as quickly as possible, +trusting that all of our defaults are correct. +

    +
  1. Download the source. +It'll be a file named +brltty-release.tar.gz, +e.g. brltty-3.0.tar.gz.
  2. +
  3. Unpack the source into its native hierarchical structure. +
    +tar xzf brltty-release.tar.gz +
    + +This should create the directory brltty-release.
  4. +
  5. Change to the source directory, configure, compile, and install BRLTTY. +
    +cd brltty-release
    +./configure
    +make install +
    + +This should be done as root.
  6. +
+

+

To uninstall BRLTTY, do: +

+cd brltty-release
+make uninstall +
+

+

That's all there's to it. +Now, for those who really want to know what's going on, here are the details.

+ +

Build Options

+ +

The first step in building BRLTTY is to configure it +for your system and/or for your personal needs. +This is done by running the configure script in BRLTTY's top-level directory. +We've tried to make the defaults fit the most common case, so, +assuming that you're not attempting to do anything out of the ordinary, +you may not need to do anything more complicated than +invoke this script without specifying any options at all. +

+./configure +
+ +If, however, you have some special requirements, +or even if you're just adventurous, +you should find out what your choices are. +
+./configure --help +
+ +You should also check out the README file in the subdirectory +containing the driver for your braille display +for any additional display-specific instructions.

+ +

System Defaults

+ +

+

+
--with-braille-driver=driver +

Specify the braille display drivers +which are to be linked into the BRLTTY binary. +Those drivers which aren't listed via this option +are built as dynamically loadable shared objects +and can still be selected at run-time. +Each driver must be identified +either by its two-letter +driver identification code +or by its proper name (full or abbreviated). +The driver identifiers must be +separated from one another by a single comma. +If a driver identifier is prefixed by a minus sign (-), +then that driver is excluded from the build. +Any of the following words can also be used as the operand of this option: +

+
all

Link all of the drivers into the binary. +Don't build any of them as dynamically loadable shared objects. +This word may also be specified as the final element of a driver list. +This is how to specify the dfault driver when all the drivers are to be linked in.

+
-all

Only build those drivers which have been explicitly included via this option.

+
no

Don't build any drivers at all. +This is equivalent to specifying --without-braille-driver.

+
yes

Build all of the drivers as dynamically loadable shared objects. +Don't link any of them into the binary. +This is equivalent to specifying --with-braille-driver.

+
+ +See the +braille-driver configuration file directive +and the +-b command line option +for run-time selection.

+
--with-braille-parameters=[driver:]name=value,... +

Specify the default parameter settings for the braille display drivers. +If the same parameter is specified more than once, +then its rightmost assignment is used. +If a parameter name is qualified by a driver +(see section +Driver Identification Codes) +then that setting only applies to that driver; +if it isn't then it applies to all drivers. +For a description of the parameters accepted by a specific driver, +please see the documentation for that driver. +See the +braille-parameters configuration file directive +and the +-B command line option +for run-time selection.

+
--with-braille-device=device,... +

Specify the default device to which the braille display is connected +(see section +Braille Device Specification). +If this option isn't specified, +then usb: is assumed if USB support is available, +and an operating system appropriate path +for the primary (first) serial port (device) is assumed if not. +See the +braille-device configuration file directive +and the +-d command line option +for run-time selection.

+
--with-libbraille=directory +

Specify the installed location of the Libbraille package, +and build the Libbraille braille display driver +(see +Build Restrictions). +Any of the following words can also be used as the operand of this option: +

+
no

Don't build the driver. +This is equivalent to specifying --without-libbraille.

+
yes

Build the driver if the package can be found in +/usr, +/usr/local, +/usr/local/Libbraille, +/usr/local/libbraille, +/opt/Libbraille, +or /opt/libbraille. +This is equivalent to specifying --with-libbraille.

+
+

+
--with-text-table=file +

Specify the default text table +(see section +Text Tables for details). +The absolute path to a table outside the source tree may be specified. +The .ttb extension is optional. +If this option isn't specified, +then en-nabcc, +a commonly (in North America) used 8-dot variant of the +North American Braille Computer Code, +is assumed. +See the +text-table configuration file directive +and the +-t command line option +for run-time selection. +This setting can be changed with the +Text Table preference.

+
--with-attributes-table=file +

Specify the default attributes table +(see section +Attributes Translation for details). +The absolute path to a table outside the source tree may be specified. +The .atb extension is optional. +If this option isn't specified, +then attributes is assumed. +Change it to attrib if you'd like it done the old way. +See the +attributes-table configuration file directive +and the +-a command line option +for run-time selection. +This setting can be changed with the +Attributes Table preference.

+
--with-speech-driver=driver +

Specify the speech synthesizer drivers +which are to be linked into the BRLTTY binary. +Those drivers which aren't listed via this option +are built as dynamically loadable shared objects +and can still be selected at run-time. +Each driver must be identified +either by its two-letter +driver identification code +or by its proper name (full or abbreviated). +The driver identifiers must be +separated from one another by a single comma. +If a driver identifier is prefixed by a minus sign (-), +then that driver is excluded from the build. +Any of the following words can also be used as the operand of this option: +

+
all

Link all of the drivers into the binary. +Don't build any of them as dynamically loadable shared objects. +This word may also be specified as the final element of a driver list. +This is how to specify the dfault driver when all the drivers are to be linked in.

+
-all

Only build those drivers which have been explicitly included via this option.

+
no

Don't build any drivers at all. +This is equivalent to specifying --without-speech-driver.

+
yes

Build all of the drivers as dynamically loadable shared objects. +Don't link any of them into the binary. +This is equivalent to specifying --with-speech-driver.

+
+ +See the +speech-driver configuration file directive +and the +-s command line option +for run-time selection.

+
--with-speech-parameters=[driver:]name=value,... +

Specify the default parameter settings for the speech synthesizer drivers. +If the same parameter is specified more than once, +then its rightmost assignment is used. +If a parameter name is qualified by a driver +(see section +Driver Identification Codes) +then that setting only applies to that driver; +if it isn't then it applies to all drivers. +For a description of the parameters accepted by a specific driver, +please see the documentation for that driver. +See the +speech-parameters configuration file directive +and the +-S command line option +for run-time selection.

+
--with-flite=directory +

Specify the installed location of the FestivalLite text-to-speech package, +and build the FestivalLite speech synthesizer driver +(see +Build Restrictions). +Any of the following words can also be used as the operand of this option: +

+
no

Don't build the driver. +This is equivalent to specifying --without-flite.

+
yes

Build the driver if the package can be found in +/usr, +/usr/local, +/usr/local/FestivalLite, +/usr/local/flite, +/opt/FestivalLite, +or /opt/flite. +This is equivalent to specifying --with-flite.

+
+

+
--with-flite-language=language +

Specify the language which the FestivalLite text to speech engine is to use. +The default language is usenglish.

+
--with-flite-lexicon=lexicon +

Specify the lexicon which the FestivalLite text to speech engine is to use. +The default lexicon is cmulex.

+
--with-flite-voice=voice +

Specify the voice which the FestivalLite text to speech engine is to use. +The default voice is cmu_us_kal16.

+
--with-mikropuhe=directory +

Specify the installed location of the Mikropuhe text-to-speech package, +and build the Mikropuhe speech synthesizer driver +(see +Build Restrictions). +Any of the following words can also be used as the operand of this option: +

+
no

Don't build the driver. +This is equivalent to specifying --without-mikropuhe.

+
yes

Build the driver if the package can be found in +/usr, +/usr/local, +/usr/local/Mikropuhe, +/usr/local/mikropuhe, +/opt/Mikropuhe, +or /opt/mikropuhe. +This is equivalent to specifying --with-mikropuhe.

+
+

+
--with-speechd=directory +

Specify the installed location of the speech-dispatcher text-to-speech package, +and build the speech-dispatcher speech synthesizer driver. +Any of the following words can also be used as the operand of this option: +

+
no

Don't build the driver. +This is equivalent to specifying --without-speechd.

+
yes

Build the driver if the package can be found in +/usr, +/usr/local, +/usr/local/speech-dispatcher, +/usr/local/speechd, +/opt/speech-dispatcher, +or /opt/speechd. +This is equivalent to specifying --with-speechd.

+
+

+
--with-swift=directory +

Specify the installed location of the Swift text-to-speech package, +and build the Swift speech synthesizer driver. +Any of the following words can also be used as the operand of this option: +

+
no

Don't build the driver. +This is equivalent to specifying --without-swift.

+
yes

Build the driver if the package can be found in +/usr, +/usr/local, +/usr/local/Swift, +/usr/local/swift, +/opt/Swift, +or /opt/swift. +This is equivalent to specifying --with-swift.

+
+

+
--with-theta=directory +

Specify the installed location of the Theta text-to-speech package, +and build the Theta speech synthesizer driver +(see +Build Restrictions). +Any of the following words can also be used as the operand of this option: +

+
no

Don't build the driver. +This is equivalent to specifying --without-theta.

+
yes

Build the driver if the package can be found in +/usr, +/usr/local, +/usr/local/Theta, +/usr/local/theta, +/opt/Theta, +or /opt/theta. +This is equivalent to specifying --with-theta.

+
+

+
--with-viavoice=directory +

Specify the installed location of the ViaVoice text-to-speech package, +and build the ViaVoice speech synthesizer driver +(see +Build Restrictions). +Any of the following words can also be used as the operand of this option: +

+
no

Don't build the driver. +This is equivalent to specifying --without-viavoice.

+
yes

Build the driver if the package can be found in +/usr, +/usr/local, +/usr/local/ViaVoice, +/usr/local/viavoice, +/opt/ViaVoice, +or /opt/viavoice. +This is equivalent to specifying --with-viavoice.

+
+

+
--with-screen-driver=driver +

Specify the screen drivers +which are to be linked into the BRLTTY binary. +Those drivers which aren't listed via this option +are built as dynamically loadable shared objects +and can still be selected at run-time. +Each driver must be identified +either by its two-letter driver identification code +(see section +Supported Screen Drivers) +or by its proper name (full or abbreviated). +The driver identifiers must be +separated from one another by a single comma. +If a driver identifier is prefixed by a minus sign (-), +then that driver is excluded from the build. +Any of the following words can also be used as the operand of this option: +

+
all

Link all of the drivers into the binary. +Don't build any of them as dynamically loadable shared objects. +This word may also be specified as the final element of a driver list. +This is how to specify the dfault driver when all the drivers are to be linked in.

+
-all

Only build those drivers which have been explicitly included via this option.

+
no

Don't build any drivers at all. +This is equivalent to specifying --without-screen-driver.

+
yes

Build all of the drivers as dynamically loadable shared objects. +Don't link any of them into the binary. +This is equivalent to specifying --with-screen-driver.

+
+ +The first non-excluded driver becomes the default driver. +If this option isn't specified, +or if no drivdr is specifically included, +then an operating system appropriate default is selected. +If a native driver for the current operating system is available, +then that driver is selected; +if not, then sc is selected. +See the +screen-driver configuration file directive +and the +-x command line option +for run-time selection.

+
--with-screen-parameters=[driver:]name=value,... +

Specify the default parameter settings for the screen drivers. +If the same parameter is specified more than once, +then its rightmost assignment is used. +If a parameter name is qualified by a driver +(see section +Supported Screen Drivers) +then that setting only applies to that driver; +if it isn't then it applies to all drivers. +For a description of the parameters accepted by a specific driver, +please see the documentation for that driver. +See the +screen-parameters configuration file directive +and the +-X command line option +for run-time selection.

+
+

+ +

Directory Specification

+ +

+

+
--with-execute-root=directory +

Specify the directory at which the +installed file hierarchy +is to be rooted at run-time. +The absolute path should be supplied. +If this option isn't specified, +then the system's root directory is assumed. +Use this option if you need to install +BRLTTY's run-time files in a non-standard location. +You need to use this feature, for example, if you'd like to have +more than one version of BRLTTY installed at the same time +(see section +Installing Multiple Versions +for an example of how to do this).

+
--with-install-root=directory +

Specify the directory beneath which the +installed file hierarchy +is to be installed. +The absolute path should be supplied. +If this option isn't specified, +then the run-time package root +(see the +--with-execute-root build option) +is assumed. +This directory is only used by +make install +and +make uninstall. +Use this option if you need to install BRLTTY in a different location +than the one from which it'll ultimately be executed. +You need to use this feature, for example, +if you're building BRLTTY on one system for use on another.

+
--prefix=directory +

Specify the directory within the +installed file hierarchy +where the default directories for the architecture-independent files +are to be rooted. +These directories include: +

+ +The absolute path should be supplied. +If this option isn't specified, +then the system's root directory is assumed. +This directory is rooted at the directory specified by the +--with-execute-root build option.

+
--exec-prefix=directory +

Specify the directory within the +installed file hierarchy +where the default directories for the architecture-dependent files +are to be rooted. +These directories include: +

+ +The absolute path should be supplied. +If this option isn't specified, +then the directory specified via the +--prefix +build option is assumed. +This directory is rooted at the directory specified by the +--with-execute-root build option.

+
--libdir=directory +

Specify the directory within the +installed file hierarchy +where the static archive and the dynamically loadable object +for the Application Programming Interface are to be installed. +The absolute path should be supplied. +If this option isn't specified, +then the directory +specified via the standard configure option --libdir +(which defaults to /lib rooted at the directory specified by the +--exec-prefix build option) +is assumed. +The directory is created if it doesn't exist.

+
--sysconfdir=directory +

Specify the directory within the +installed file hierarchy +where the configuration files are to be installed. +The absolute path should be supplied. +If this option isn't specified, +then the directory +specified via the standard configure option --sysconfdir +(which defaults to /etc rooted at the directory specified by the +--prefix build option) +is assumed. +The directory is created if it doesn't exist.

+
--with-program-directory=directory +

Specify the directory within the +installed file hierarchy +where the runnable programs (binaries, executables) are to be installed. +The absolute path should be supplied. +If this option isn't specified, +then the directory +specified via the standard configure option --bindir +(which defaults to /bin rooted at the directory specified by the +--exec-prefix build option) +is assumed. +The directory is created if it doesn't exist.

+
--with-library-directory=directory +

Specify the directory within the +installed file hierarchy +where the drivers and other architecture-dependent files are to be installed. +The absolute path should be supplied. +If this option isn't specified, +then the brltty subdirectory of the directory +specified via the standard configure option --libdir +(which defaults to /lib rooted at the directory specified by the +--exec-prefix build option) +is assumed. +The directory is created if it doesn't exist.

+
--with-writable-directory=directory +

Specify the directory within the +installed file hierarchy +which may be written to. +The absolute path should be supplied. +Any of the following words can also be used as the operand of this option: +

+
no

Don't define a writable directory. +This is equivalent to specifying --without-writable-directory.

+
yes

Use the default location. +This is equivalent to specifying --with-writable-directory.

+
+ +If this option isn't specified, +then the rw subdirectory of the directory specified via the +--with-library-directory build option +is assumed. +The directory is created if it doesn't exist.

+
--with-data-directory=directory +

Specify the directory within the +installed file hierarchy +where the tables, help pages, +and other architecture-independent files are to be installed. +The absolute path should be supplied. +If this option isn't specified, +then the brltty subdirectory of the directory +specified via the standard configure option --sysconfdir +(which defaults to /etc rooted at the directory specified by the +--prefix build option) +is assumed. +The directory is created if it doesn't exist.

+
--with-manpage-directory=directory +

Specify the directory within the +installed file hierarchy +where the man pages are to be installed. +The absolute path should be supplied. +If this option isn't specified, +then the directory +specified via the standard configure option --mandir +(which defaults to /man rooted at the directory specified by the +--prefix build option) +is assumed. +The directory is created if it doesn't exist.

+
--with-include-directory=directory +

Specify the directory within the +installed file hierarchy +where the C header files for the Application Programming Interface +are to be installed. +The absolute path should be supplied. +If this option isn't specified, +then the brltty subdirectory of the directory +specified via the standard configure option --includedir +(which defaults to /include rooted at the directory specified by the +--prefix build option) +is assumed. +The directory is created if it doesn't exist.

+
+

+ +

Build Features

+ +

These options are primarily useful when building BRLTTY for use on a boot disk. +

+
--enable-standalone-programs +

Create statically linked, rather than dynamically linked, programs. +This option removes all dependencies on shared objects at run-time. +Only the default drivers (see the +--with-braille-driver, +--with-speech-driver, +and +--with-screen-driver +build options) are compiled.

+
--enable-relocatable-install +

If this feature is enabled then all internal paths +are recalculated to be relative to the program directory. +If it's disabled then all internal paths are absolute. +This feature allows the entire installed file hierarchy +to be copied or moved, in tact, from one place to another, +and is primarily intended for use on Windows platforms.

+
--disable-preferences-menu +

Reduce program size by excluding the preferences menu +(see section +The Preferences Menu).

+
--disable-table-selection +

Reduce program size by excluding +the table selection entries from the preferences menu +(see the +Text Table, +Attributes Table, +and +Contraction Table preferences).

+
--disable-learn-mode +

Reduce program size by excluding command learn mode +(see section +Command Learn Mode).

+
--disable-contracted-braille +

Reduce program size by excluding support for contracted braille +(see section +Contraction Tables).

+
--disable-usb-support +

Reduce program size by excluding support for USB devices.

+
--disable-bluetooth-support +

Reduce program size by excluding support for bluetooth devices.

+
--disable-speech-support +

Reduce program size by excluding support for speech synthesizers.

+
--disable-iconv +

Reduce program size by excluding support for +character set conversion.

+
--disable-icu +

Reduce program size by excluding support for +Unicode-based internationalization.

+
--disable-x +

Reduce program size by excluding support for +X11.

+
--disable-beeper-support +

Reduce program size by excluding support for +the console tone generator.

+
--disable-pcm-support +

Reduce program size by excluding support for +the digital audio interface on the sound card.

+
--enable-pcm-support=interface

If a platform provides more than one digital audio interface +then the one which is to be used may be specified. +

+
+PlatformInterfaceDescription
+LinuxossOpen Sound System
+alsaAdvanced Linux Sound Architecture
+
+

+

+
--disable-midi-support +

Reduce program size by excluding support for +the Musical Instrument Digital Interface of the sound card.

+
--enable-midi-support=interface

If a platform provides more than one Musical Instrument Digital Interface +then the one which is to be used may be specified. +

+
+PlatformInterfaceDescription
+LinuxossOpen Sound System
+alsaAdvanced Linux Sound Architecture
+
+

+

+
--disable-fm-support +

Reduce program size by excluding support for +the FM synthesizer on an AdLib, OPL3, Sound Blaster, or equivalent sound card.

+
--disable-pm-configfile +

Reduce program size by excluding support for +the Papenmeier driver's configuration file.

+
--disable-gpm +

Reduce program size by excluding +the interface to the gpm application +which allows BRLTTY to interact with the pointer (mouse) device +(see section +Pointer (Mouse) Support via GPM).

+
--disable-api +

Reduce program size by excluding +the Application Programming Interface.

+
--with-api-parameters=name=value,... +

Specify the default parameter settings for the Application Programming Interface. +If the same parameter is specified more than once, +then its rightmost assignment is used. +For a description of the parameters accepted by the interface, +please see the BrlAPI reference manual. +See the +api-parameters configuration file directive +and the +-A command line option +for run-time selection.

+
--disable-caml-bindings +

Don't build the Caml bindings for the Application Programming Interface.

+
--disable-java-bindings +

Don't build the Java bindings for the Application Programming Interface.

+
--disable-lisp-bindings +

Don't build the Lisp bindings for the Application Programming Interface.

+
--disable-python-bindings +

Don't build the Python bindings for the Application Programming Interface.

+
--disable-tcl-bindings +

Don't build the Tcl bindings for the Application Programming Interface.

+
--with-tcl-config=path +

Specify the location of the Tcl configuration script (tclConfig.sh). +Either the path to the script itself +or to the directory containing it +may be supplied. +Any of the following words can also be used as the operand of this option: +

+
no

Use other means to guess if Tcl is available, and, if so, where it has been installed. +This is equivalent to specifying --without-tcl-config.

+
yes

Search for the script in a few commonly used directories. +This is equivalent to specifying --with-tcl-config.

+
+

+
+

+ +

Miscellaneous Options

+ +

+

+
--with-compiler-prefix=prefix +

Specify the prefix (path and beginning of program name) +for the suite of compile and link tools which are to be used. +You may need to use this option if, for example, +you're cross-compiling for a different architecture.

+
--with-init-path=path +

Specify the path to the real init program for the system. +The absolute path should be supplied. +If this option is specified, then: +

    +
  1. The init program should be moved to a new location.
  2. +
  3. brltty should be moved to the init program's original location.
  4. +
  5. When the system runs init at startup, +brltty is actually run. +It puts itself into the background, +and runs the real init in the foreground. +This is one (somewhat sneaky) way to have braille right at the outset. +It's especially useful for some install/rescue disks.
  6. +
+ +If this option isn't specified, then this feature isn't activated. +This option is primarily intended for building a braillified installer image.

+
--with-stderr-path=path +

Specify the path to the file or device where standard erorr output is to be written. +The absolute path should be supplied. +If this option isn't specified, then this feature isn't activated. +This option is primarily intended for building a braillified installer image.

+
+

+ +

Make File Targets

+ +

Once BRLTTY has been configured, +the next steps are to compile and to install it. +These are done by applying the system's make command +to BRLTTY's main make file (Makefile in the top-level directory). +BRLTTY's make file supports most of the common application maintenance targets. +They include: +

+
make

A shortcut for make all.

+
make all +

Compile and link the BRLTTY executable, its drivers and their help pages, +its test programs, and a few other small utilities.

+
make install +

Complete the compile and link phase +(see +make all), +and then install the BRLTTY executable, its data files, drivers, and help pages, +in the correct places and with the correct permissions.

+
make uninstall +

Remove the BRLTTY executable, its data files, drivers, and help pages, +from the system.

+
make clean +

Ensure that the next compile and link +(see +make all) +will be done from scratch by removing the results of +compiling, linking, and testing from the source directory structure. +This includes the removal of object files, executables, +dynamically loadable shared objects, driver lists, help pages, +temporary header files, and core files.

+
make distclean +

In addition to removing the results of compiling and linking +(see +make clean): +

    +
  • Remove the results of BRLTTY configuration +(see +Build Options). +This includes the removal of +config.mk, config.h, +config.cache, config.status, and config.log.
  • +
  • Remove other files from the source directory structure +which tend to accumulate over time but which don't belong there. +This includes the removal of +editor backup files, test case results, +rejected patch hunks, and copies of original source files.
  • +
+

+
+

+ +

3.3 Testing BRLTTY +

+ +

After compiling, linking, and installing BRLTTY, +it's a good idea to give it a quick test before activating it permanently. +To do so, invoke it with the command: +

+brltty -bdriver -ddevice +
+ +For driver, specify the two-letter +driver identification code +corresponding to your braille display. +For device, specify the full path +for the device to which your braille display is connected.

+

If you don't want to explicitly identify the driver and device +each time you start BRLTTY, then you can take two approaches. +You can establish system defaults +via the +braille-driver +and the +braille-device +configuration file directives, +and/or compile your needs right into BRLTTY +via the +--with-braille-driver +and the +--with-braille-device +build options.

+

If all is well, BRLTTY's version identification message +should appear on the braille display for a few seconds +(see the +-M command line option). +After it goes away (which you can hasten by pressing any key on the display), +the area of the screen where the cursor is should appear. +This means that you should expect to see your shell's command prompt. +Then, as you enter your next command, +each character should appear on the display as it's typed on the keyboard.

+

If this is your experience, then leave BRLTTY running, and enjoy it. +If this isn't your experience, then it may be necessary +to test each driver separately in order to isolate the source of the probledm. +The screen driver can be tested with +scrtest, +and the braille display driver can be tested with +brltest.

+

If you experience a problem which requires a lot of digging, +then you may wish to use the following brltty command line options: +

    +
  • +-ldebug +to log lots of diagnostic messages.
  • +
  • +-n +to keep BRLTTY in the foreground.
  • +
  • +-e +to direct diagnostic messages to standard error +rather than to the system log.
  • +
+

+ +

3.4 Starting BRLTTY +

+ +

BRLTTY, when properly installed, is invoked with the single command brltty. +A configuration file +(see section +The Configuration File for details) +can be created in order to establish system defaults for such things as +the location of the preferences file, +the braille display driver to be used, +the device to which the braille display is connected, +and the text table to be used. +Many options +(see section +Command Line Options for details) +allow explicit run-time specification of such things as +the location of the configuration file, +any defaults established within the configuration file, +and some characteristics which have reasonable defaults +but which those who think they know what they're doing may wish to play with. +The +-h option +displays a summary of all the options. +The +-V option +displays the current version of the program, the API, and the selected drivers. +The +-v option +displays the values of the options after all sources have been considered.

+

It's probably best to have the system automatically start BRLTTY +as part of the boot sequence +so that the braille display is already up and running when the login prompt appears. +Most (probably all) distributions provide a script wherein +user-supplied applications can be safely started near the end of the boot sequence. +The name of this script is distribution-dependent. +Here are the ones we know about so far: +

+
Red Hat

/etc/rc.d/rc.local

+
+

+

Starting BRLTTY from this script is a good approach (especially for new users). +Just add a set of lines like these: +

+
+if [ -x /bin/brltty -a -f /etc/brltty.conf ]
+then
+   /bin/brltty
+fi
+
+
+ +This can usually be abbreviated to the somewhat less readable form: +
+
+[ -x /bin/brltty -a -f /etc/brltty.conf ] && /bin/brltty
+
+
+ +Don't add these lines before the first line +(which usually looks like #!/bin/sh).

+

If the braille display is to be used by a system administrator, +then it should probably be started as early as possible during the boot sequence +(like before the file systems are checked) +so that the display is usable +in the event that something goes wrong during these checks +and the system drops into single user mode. +Again, exactly where it's best to do this is distribution-dependent. +Here are the places we know about so far: +

+
Debian

/etc/init.d/boot (for older releases)
+/etc/init.d/rcS (for newer releases)
+A brltty package is provided +(see [ +http://packages.debian.org/brltty]) +as of release 3.0 (Woody). +Since this package takes care of starting BRLTTY, +there's no need for user-supplied code to do so if it's installed.

+
RedHat

/etc/rc.d/rc.sysinit
+Beware that later releases, +in order to support a more user-oriented system initialization procedure, +have this script reinvoke itself such that +it's under the control of initlog. +Look, probably right up near the top, for a set of lines like these: +

+
+    # Rerun ourselves through initlog
+    if [ -z "$IN_INITLOG" ]; then
+      [ -f /sbin/initlog ] && exec /sbin/initlog $INITLOG_ARGS -r /etc/rc.sysinit
+    fi
+    
+
+
+ +Starting BRLTTY before this reinvocation +results in two BRLTTY processes running at the same time, +and that'll give you no end of problems. +If your version of this script has this feature, +then make sure you start BRLTTY after the lines which implement it.

+
Slackware

/etc/rc.d/rc.S

+
SuSE

/sbin/init.d/boot

+
+

+

An alternative is to start BRLTTY from /etc/inittab. +You have two choices if you choose this route. +

    +
  • If you want it to be started really early +but don't need it to be automatially restarted if it dies, +then add a line like this before the first :sysinit: line which is already in there. +
    +brl::sysinit:/bin/brltty +
    +
  • +
  • If you don't mind it being started later +but do want it to be automatially restarted if it dies, +then add a line like this anywhere within the file. +
    +brl:12345:respawn:/bin/brltty -n +
    + +The +-n (--nodaemon) option is very +important when running BRLTTY with init's respawn facility. +You'll end up with hundreds of BRLTTY processes all running at the same time +if you forget to specify it.
  • +
+ +Check that the identifier (bt in these examples) +isn't already being used by another entry, +and, if it is, choose a different one which isn't.

+

Note that a command like kill -TERM +is sufficient to stop BRLTTY in its tracks. +If it dies during entry into single user mode, for example, +it may well be due to a problem of this nature.

+

Some systems, as part of the boot sequence, probe the serial ports +(usually in order to automatically find the mouse and deduce its type). +If your braille display is using a serial port, +this kind of probing may be enough to get it confused. +If this happens to you, then try restarting the braille driver +(see the +RESTARTBRL command). +Better yet, turn off the serial port probing. +Here's what we know so far about how to do this: +

+
Red Hat

The probing is done by a service named kudzu. +Use the command +

+chkconfig --list kudzu +
+ to see if it's been enabled. +Use the command +
+chkconfig kudzu off +
+ to disable it. +Later releases allow you to let kudzu run +without probing the serial ports. +To do this, edit the file /etc/sysconfig/kudzu, +and set SAFE to yes.

+
+

+

If you want to start BRLTTY before any file systems are mounted, then +ensure that all of its components are installed within the root file system. +See the +--with-execute-root, +--bindir, +--libdir, +--with-writable-directory, +and +--with-data-directory +build options.

+ +

3.5 Security Considerations +

+ +

BRLTTY needs to run with root privileges because it needs +read and write access for the port to which the braille display is connected, +read access to /dev/vcsa or equivalent +(to query the screen dimensions and the cursor position, +and to review the current screen content and highlighting), +and read and write access to the system console +(for arrow key entry during cursor routing, +for input character insertion during paste, +for special key simulation using keys on the braille display, +for retrieving output character translation and screen font mapping tables, +and for activation of the internal beeper). +Access to the needed devices can, of course, be granted to a non-root user +by changing the file permissions associated with the devices. +Merely having access to the console, however, isn't enough because +activating the internal beeper and simulating key strokes still require root privilege. +So, if you're willing to give up cursor routing, cut&paste, beeps, +and all that, you can run BRLTTY without root priviledge.

+ +

3.6 Build and Run-Time Restrictions +

+ +

+

+
Alert Tunes

+ +Some platforms don't support all of the tune devices. +See the +Tune Device +preference for details.

+
FestivalLite Speech Synthesizer Driver

+ +The driver for the FestivalLite text to speech engine +is only built if that package has been installed.

+

This driver and the driver for the Theta text to speech engine +(see the +--with-theta build option) +cannot be simultaneously linked into the BRLTTY binary +(see the +--with-speech-driver build option) +because their run-time libraries contain conflicting symbols.

+
Libbraille Braille Display Driver

+ +The driver for the Libbraille package +is only built if that package has been installed.

+
Mikropuhe Speech Synthesizer Driver

+ +The driver for the Mikropuhe text to speech engine +is only built if that package has been installed.

+

This driver cannot be included if the BRLTTY binary is statically linked +(see the +--enable-standalone-programs build option) +because a static archive isn't included with the package.

+
Theta Speech Synthesizer Driver

+ +The driver for the Theta text to speech engine +is only built if that package has been installed.

+

This driver and the driver for the FestivalLite text to speech engine +(see the +--with-flite build option) +cannot be simultaneously linked into the BRLTTY binary +(see the +--with-speech-driver build option) +because their run-time libraries contain conflicting symbols.

+

If this driver is built as a dynamically loadable shared object +then $THETA_HOME/lib must be added +to the LD_LIBRARY_PATH environment variable +before BRLTTY is invoked +because the shared objects within the package don't contain +run-time search paths for their dependencies.

+
ViaVoice Speech Synthesizer Driver

+ +The driver for the ViaVoice text to speech engine +is only built if that package has been installed.

+

This driver cannot be included if the BRLTTY binary is statically linked +(see the +--enable-standalone-programs build option) +because a static archive isn't included with the package.

+
VideoBraille Braille Display Driver

+ +The driver for the VideoBraille braille display is built on all systems, +but only works on Linux.

+
+

+ +

3.7 Installing from an RPM File +

+ +

To install BRLTTY from an RPM (RedHat Package Manager) file, do the following: +

    +
  1. Download the binary package which corresponds to your hardware. +It'll be a file named +brltty-release-version.architecture.rpm, +e.g. brltty-3.0-1.i386.rpm.
  2. +
  3. Install the package. +
    +rpm -Uvh brltty-release-version.architecture.rpm +
    + +This should be done as root. +Strictly speaking, the -U (update) option is the only one which is necessary. +The -v (verbose) option displays the name of the package as it's being installed. +The -h (hashes) option displays a progress meter (using hash signs).
  4. +
+ +For the brave, +we also provide the source RPM (.src.rpm) file, +but that's beyond the scope of this document.

+

To uninstall BRLTTY, do: +

+rpm -e brltty +
+

+ +

3.8 Other Utilities +

+ +

Building BRLTTY also results in the building of +a few small helper and diagnostic utilities.

+ +

brltty-config

+ +

This utility sets a number of environment variables to values +which reflect the current installation of BRLTTY +(see +Build Options). +It should be executed within an existing shell environment, +i.e. not as a command in its own right, +and can only be used by scripts which support Bourne Shell syntax. +

+. brltty-config +
+

+

The following environment variables are set: +

+
BRLTTY_VERSION

The version number of the BRLTTY package.

+
BRLTTY_EXECUTE_ROOT

Run-time root for the installed package. +Configured via the +--with-execute-root build option.

+
BRLTTY_PROGRAM_DIRECTORY

Directory for runnable programs (binaries, executables). +Configured via the +--with-program-directory build option.

+
BRLTTY_LIBRARY_DIRECTORY

Directory for drivers. +Configured via the +--with-library-directory build option.

+
BRLTTY_WRITABLE_DIRECTORY

Directory which can be written to. +Configured via the +--with-writable-directory build option.

+
BRLTTY_DATA_DIRECTORY

Directory for tables and help pages. +Configured via the +--with-data-directory build option.

+
BRLTTY_MANPAGE_DIRECTORY

Directory for manual pages. +Configured via the +--with-manpage-directory build option.

+
BRLTTY_INCLUDE_DIRECTORY

Directory for BrlAPI's C header files. +Configured via the +--with-include-directory build option.

+
BRLAPI_VERSION

The version number of BrlAPI (BRLTTY's Application Programming Interface).

+
BRLAPI_RELEASE

The full release number of BrlAPI.

+
BRLAPI_AUTH

The name of BrlAPI's key file.

+
+

+

In addition, the following standard autoconf environment variables are also set: +

+
prefix

Subroot for architecture-independent files. +Configured via the +--prefix build option.

+
exec_prefix

Subroot for architecture-dependent files. +Configured via the +--exec-prefix build option.

+
bindir

Default location for +program directory. +Configured via the --bindir build option.

+
libdir

Directory for BrlAPI's static archive and dynamically loadable object. +Default anchor for +library directory. +Configured via the +--libdir build option.

+
sysconfdir

Directory for configuration files. +Default anchor for +data directory. +Configured via the +--sysconfdir build option.

+
mandir

Default location for +manual pages directory. +Configured via the --mandir build option.

+
includedir

Default anchor for +header files directory. +Configured via the --includedir build option.

+
+

+ +

brltty-install

+ +

This utility copies BRLTTY's +installed file hierarchy +from one location to another. +

+brltty-install to [from] +
+ +
+
to

The location to which the +installed file hierarchy +is to be copied. +It must be an existing directory.

+
from

The location from which the +installed file hierarchy +is to be taken. +If it's specified, then it must be an existing directory. +If it's not specified, then the location used for the build is assumed.

+
+

+

This utility can be used, for example, to copy BRLTTY to a root disk. +If a root floppy is mounted as /mnt, +and BRLTTY is installed on the main system, +then typing +

+brltty-install /mnt +
+ +copies BRLTTY, along with all of its data and library files, +to the root floppy.

+

Some problems have been experienced when copying BRLTTY +between systems with different versions of the shared C library. +This is worth investigating if you have difficulties.

+ +

brltest

+ +

This utility tests a braille display driver, +and also provides an interactive way to learn +what the keys on the braille display do. +It should be run as root. +

+brltest -option ... [driver [name=value ...]] +
+ +
+
driver

The driver for the braille display. +It must be a two-letter +driver identification code. +If it's not specified, then the first driver configured via the +--with-braille-driver build option +is assumed.

+
name=value

Set a braille display driver parameter. +For a description of the parameters accepted by a specific driver, +please see the documentation for that driver.

+
-ddevice --device=device

The absolute path for the device to which the braille display is connected. +If it's not specified, then the device configured via the +--with-braille-device build option +is assumed.

+
-Ddirectory --data-directory=directory

The absolute path for the directory wherein the driver data files reside. +If it's not specified, then the directory configured via the +--with-data-directory build option +is assumed.

+
-Ldirectory --library-directory=directory

The absolute path for the directory wherein the drivers reside. +If it's not specified, then the directory configured via the +--libdir build option +is assumed.

+
-Wdirectory --writable-directory=directory

The absolute path for a directory which can be written to. +If it's not specified, then the directory configured via the +--with-writable-directory build option +is assumed.

+
-h --help

Display a summary of the command line options, and then exit.

+
+

+

This utility uses BRLTTY's +Command Learn Mode. +The key press timeout +(after which this utility exits) +is 10 seconds. +The message hold time +(used for non-final segments of long messages) +is 4 seconds.

+ +

spktest

+ +

This utility tests a speech synthesizer driver. +It may need to be run as root. +

+spktest -option ... [driver [name=value ...]] +
+ +
+
driver

The driver for the speech synthesizer. +It must be a two-letter +driver identification code. +If it's not specified, then the first driver configured via the +--with-speech-driver build option +is assumed.

+
name=value

Set a speech synthesizer driver parameter. +For a description of the parameters accepted by a specific driver, +please see the documentation for that driver.

+
-tstring --text-string=string

The text to be spoken. +If it's not specified, then standard input is read.

+
-Ddirectory --data-directory=directory

The absolute path for the directory wherein the driver data files reside. +If it's not specified, then the directory configured via the +--with-data-directory build option +is assumed.

+
-Ldirectory --library-directory=directory

The absolute path for the directory wherein the drivers reside. +If it's not specified, then the directory configured via the +--libdir build option +is assumed.

+
-h --help

Display a summary of the command line options, and then exit.

+
+

+ +

scrtest

+ +

This utility tests the screen driver. +It must be run as root. +

+scrtest -option ... [name=value ...] +
+ +
+
name=value

Set a screen driver parameter. +For a description of the parameters accepted by a specific driver, +please see the documentation for that driver.

+
-lcolumn --left=column

Specify the starting (left) column (zero-origin) of the region. +If this value isn't supplied, +then a default value, based on the specified width, +is selected such that the region is horizontally centred.

+
-ccount --columns=count

Specify the width of the region (in columns). +If this value isn't supplied, +then a default value, based on the specified starting column, +is selected such that the region is horizontally centred.

+
-trow --top=row

Specify the starting (top) row (zero-origin) of the region. +If this value isn't supplied, +then a default value, based on the specified height, +is selected such that the region is vertically centred.

+
-rcount --rows=count

Specify the height of the region (in rows). +If this value isn't supplied, +then a default value, based on the specified starting row, +is selected such that the region is vertically centred.

+
-h --help

Display a summary of the command line options, and then exit.

+
+

+

Notes: +

    +
  • If neither a starting column nor a region width is specified, +then the region is horizontally-centred and starts at column 5.
  • +
  • If neither a starting row nor a region height is specified, +then the region is vertically-centred and starts at row 5.
  • +
+

+

The following is written to standard output: +

    +
  1. A line detailing the dimensions of the screen. +
    +Screen: widthxheight +
    +
  2. +
  3. A line detailing the position (zero-origin) of the cursor. +
    +Cursor: [column,row] +
    +
  4. +
  5. A line detailing the size of the selected screen region, +and the position (zero-origin) of its top-left corner. +
    +Region: widthxheight@[column,row] +
    +
  6. +
  7. The contents of the selected screen region. +Unprintable characters are written as blanks.
  8. +
+

+ +

ttbtest

+ +

This utility tests a text table +(see section +Text Tables). +

+ttbtest -option ... input-table output-table +
+ +
+
input-table

The file system path to the input text table. +If it's relative then it's anchored at the directory configured via the +--with-data-directory build option.

+
output-table

The file system path to the output text table. +If it's relative then it's anchored at the current working directory. +If this parameter isn't supplied then no output table is written.

+
-iformat --input-format=format

Specify the format of the input table. +If this option isn't supplied then the format of the input table +is deduced from the extension of the input table's file name.

+
-oformat --output-format=format

Specify the format of the output table. +If this option isn't supplied then the format of the output table +is deduced from the extension of the output table's file name.

+
-ccharset --charset=charset

Specify the name of the 8-bit character set to use when interpreting the tables. +If this option isn't supplied then the host's character set is used.

+
-e --edit

Invoke the text table editor. +If the output table is specified then changes are written to it. +If not then the input table is rewritten.

+
-h --help

Display a summary of the command line options, and then exit.

+
+

+

If no special action is requested then the output table is optional. +If it is not specified then the input table is checked. +If it is specified then the input table is converted.

+

The following table formats are supported: +

+
ttb

BRLTTY

+
sbl

SuSE Blinux

+
a2b

Gnopernicus

+
gnb

Gnome Braille

+
+

+ +

ctbtest

+ +

This utility tests a contraction table +(see section +Contraction Tables). +The text read from the input files (or standard input) +is rewritten to standard output as contracted braille. +

+ctbtest -option ... input-file ... +
+ +
+
input-file

The list of files to be processed. +Any number of files may be specified. +They're processed from left to right. +The special file name - is interpreted to mean standard input. +If no files are specified then standard input is processed.

+
-cfile --contraction-table=file

The file system path to the contraction table. +If it's relative then it's anchored at the directory configured via the +--with-data-directory build option. +The .ctb extension is optional. +If this option isn't supplied then en-us-g2 is assumed.

+
-tfile|auto --text-table=file|auto

The file system path to the text table to use. +If it's relative then it's anchored at the directory configured via the +--with-data-directory build option. +The .ttb extension is optional. +If this option isn't supplied then the table defined via the +--with-text-table +build option is assumed.

+
-wcolumns --output-width=columns

The maximum length of an output line. +Each contracted input line is wrapped into as many output lines as necessary. +If this option isn't specified then there's no limit, +and there's a one-to-one correspondance between input and output lines.

+
-h --help

Display a summary of the command line options, and then exit.

+
+

+

The text table is used: +

    +
  • To define the output character set so that +the contracted braille will be displayed correctly. +The same table as will be used by BRLTTY when the output is read should be specified.
  • +
  • To define the braille representations of those characters +defined within the contraction table as = +(see section +Character Translation).
  • +
+

+

The brf.ttb text table is provided for use with this utility. +It defines the format used within .brf files. +This is also the preferred format used +by most braille printers +and within electronically distributed braille documents. +This table effectively allows this utility to be used as a text to braille translator.

+ +

tunetest

+ +

This utility tests the alert tunes facility, +and also provides an easy way to compose new tunes. +It may need to be run as root. +

+tunetest -option ... {note duration} ... +
+ +
+
note

A standard MIDI note number. +It must be an integer from 1 through 127, +with 60 representing Middle C. +Each value represents a standard chromatic semi-tone, +with the next lower and higher values +representing, respectively, the next lower and higher notes. +The lowest value (1) represents +the fifth C-Sharp below Middle C, +and the highest value (127) represents +the sixth G above Middle C.

+
duration

The duration of the note in milliseconds. +It must be an integer from 1 through 255.

+
-ddevice --device=device

The device on which to play the tune. +

+
beeper

The internal beeper (console tone generator).

+
pcm

The digital audio interface on the sound card.

+
midi

The Musical Instrument Digital Interface on the sound card.

+
fm

The FM synthesizer on an +AdLib, OPL3, Sound Blaster, or equivalent sound card.

+
+ +The device name may be abbreviated. +See the +Tune Device preference +for details regarding the default device and platform restrictions.

+
-vloudness --volume=loudness

Specify the output volume (loudness) as a percentage of the maximum. +The default output volume is 50.

+
-pdevice --pcm-device=device

Specify the device to use for digital audio +(see section +PCM Device Specification). +This option isn't available if the +--disable-pcm-support build option was specified.

+
-mdevice --midi-device=device

Specify the device to use for the Musical Instrument Digital Interface +(see section +MIDI Device Specification). +This option isn't available if the +--disable-midi-support build option was specified.

+
-iinstrument --instrument=instrument

The instrument to use if the selected device is midi. +For the complete list of instruments, +see the +MIDI Instrument Table. +The default instrument is an acoustic grand piano. +The words comprising the instrument name must be separated from one another +by a single minus sign rather than by spaces, +and any of the words may be abbreviated. +An acoustic grand piano, for example, may be specified as a-gra-pi.

+
-h --help

Display a summary of the command line options, and then exit.

+
+

+ +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BRLTTY/English/BRLTTY-4.html b/Documents/Manual-BRLTTY/English/BRLTTY-4.html new file mode 100644 index 0000000000000000000000000000000000000000..10da7a7cc52d3d9dd18e7e0ece39a1fa756e2bd4 --- /dev/null +++ b/Documents/Manual-BRLTTY/English/BRLTTY-4.html @@ -0,0 +1,1217 @@ + + + + + BRLTTY Reference Manual: Using BRLTTY + + + + + +Next +Previous +Contents +
+

4. Using BRLTTY

+ +

Before starting BRLTTY, you need to set up your braille display. +In most cases this is done simply +by connecting it to an available serial port, +and then turning it on. +After your display has been set up, +run BRLTTY simply by typing the command brltty at a shell prompt +(this must be done as root). +Check the +-d command line option, +the +braille-device configuration file directive, +and the +--with-braille-device build option +for alternatives regarding how to tell BRLTTY which device your display is connected to. +Check the +-b command line option, +the +braille-driver configuration file directive, +and the +--with-braille-driver build option +for alternatives regarding how to tell BRLTTY which kind of braille display you have. +Check the +-B command line option, +and the +braille-parameters configuration file directive +for alternatives regarding how to pass parameters to the driver for your braille display.

+

A message giving the program name (BRLTTY) and its version number +will appear briefly +(see the +-M command line option) +on the braille display. +The display will then show a small area of the screen including the cursor. +By default, the cursor is represented as +dots 7 and 8 superimposed on the character it is on.

+

Any screen activity will be reflected on the braille display. +The display will also follow the progress of the cursor on the screen. +This feature is known as cursor tracking.

+

Just typing on the keyboard and reading the display, however, isn't enough. +Try entering a command which will cause an error, and pressing enter. +The error appears on the screen, but, unless you have a multi-line display, +the chances are that it isn't visible on the braille display. +All you see thereon is another shell prompt. +What's needed, then, is some way to move +the braille window around the screen. +The keys on the braille display itself can be used to send commands to BRLTTY +which, in addition to a lot of other things, can also do exactly that.

+ +

4.1 Commands +

+ +

Unfortunately, the various braille displays don't offer a standard set of controls. +Some have the six standard dot keys, some have eight, and others have none. +Some have thumb keys, but there's no standard number of them. +Some have a button above each braille cell. +Some have rocker switches. +Some have an easy-to-reach bar which works much like a joystick. +Most have varying combinations of the above. +Because the nature and layout of each display is so different, +please refer to the documentation for your particular display +in order to find out exactly what its keys do.

+

BRLTTY commands are referred to by name within this manual. +If you forget which key(s) on your braille display to use +for a paticular command, then refer to its driver's help page. +The main key you should immediately commit to memory, therefore, is the one +for the +HELP command. +Use the regular motion keys (as described below) to navigate the help page, +and press the help key again to quit.

+ +

Vertical Motion

+ +

See also +the +PRINDENT/NXINDENT, +and the +PRDIFCHAR/NXDIFCHAR +routing key commands. +

+
LNUP/LNDN +

Go up/down one line. +If identical line skipping has been activated +(see the +SKPIDLNS command), +then these commands, rather than moving exactly one line, +are aliases for the +PRDIFLN/NXDIFLN commands.

+
WINUP/WINDN +

Go up/down one window. +If the window is only 1 line high then move 5 lines.

+
PRDIFLN/NXDIFLN +

Go up/down to the nearest line with different content. +If identical line skipping has been activated +(see the +SKPIDLNS command), +then these commands, rather than skipping identical lines, +are aliases for the +LNUP/LNDN commands.

+
ATTRUP/ATTRDN +

Go up/down to the nearest line with different attributes (character highlighting).

+
TOP/BOT +

Go to the top/bottom line.

+
TOP_LEFT/BOT_LEFT +

Go to the top-left/bottom-left corner.

+
PRPGRPH/NXPGRPH +

Go to the nearest line of the previous/next paragraph +(the first non-blank line beyond the nearest blank line). +The current line is included when searching for the inter-paragraph space.

+
PRPROMPT/NXPROMPT +

Go to the previous/next command prompt.

+
PRSEARCH/NXSEARCH +

Search backward/forward for the nearest occurrence +of the character string within the cut buffer +(see +Cut and Paste) +which isn't within the braille window. +The search proceeds to the left/right, +starting at the character immediately to the left/right of the window, +and wrapping at the edge of the screen. +The search isn't case sensitive.

+
+

+ +

Horizontal Motion

+ +

See also the +SETLEFT routing key command. +

+
CHRLT/CHRRT +

Go left/right one character.

+
HWINLT/HWINRT +

Go left/right half a window.

+
FWINLT/FWINRT +

Go left/right one window. +These commands are particularly useful +because they automatically wrap when they reach the edge of the screen. +Other features, like their ability to skip blank windows +(see the +SKPBLNKWINS command), +further enhance their usefulness.

+
FWINLTSKIP/FWINRTSKIP +

Go left/right to the nearest non-blank window.

+
LNBEG/LNEND +

Go to the beginning/end of the line.

+
+

+ +

Implicit Motion

+ +

See also the +GOTOMARK routing key command. +

+
HOME +

Go to where the cursor is.

+
BACK +

Go back to where the most recent motion command put the braille window. +This is an easy way to get right back to where you were reading +after an unexpected event (like cursor tracking) +moves the braille window at an inopportune moment.

+
RETURN +

+

    +
  • If the most recent motion of the braille window was automatic, +e.g. as a result of cursor tracking, +then go back to where the most recent motion command put it +(see the +BACK command).
  • +
  • If the cursor isn't within the braille window +then go to where the cursor is +(see the +HOME command).
  • +
+

+
+

+ +

Feature Activation

+ +

Each of these commands has three forms: +activate (turn the feature on), +deactivate (turn the feature off), +and toggle (if it's off then turn it on, and if it's on then turn it off). +Unless specifically noted, each of these features +is initially off, and, when on, affects BRLTTY's operation as a whole. +The initial setting of some of these features can be changed +via the +preferences menu. +

+
FREEZE +

Freeze the screen image. +BRLTTY makes a copy of the screen (content and attributes) +as of the moment when the screen image is frozen, +and then ignores all updating of the screen until it's unfrozen. +This feature makes it easy, for example, +to sample the output of an application which writes too much too quickly.

+
DISPMD +

Show the highlighting (the attributes) +of each character within the braille window, +rather than the characters themselves (the content). +This feature is useful, for example, +when you need to locate a highlighted item. +When showing screen content, the text table is used +(see the +-t command line option, +the +text-table configuration file directive, +and the +--with-text-table build option). +When showing screen attributes, the attributes table is used +(see the +-a command line option, +the +attributes-table configuration file directive, +and the +--with-attributes-table build option). +This feature only affects the current virtual terminal.

+
SIXDOTS +

Show characters using 6-dot, rather than 8-dot, braille. +Dots 7 and 8 are still used by other features +like cursor representation and highlighted character underlining. +If a contraction table has been selected +(see the +-c command line option +and the +contraction-table configuration file directive), +then it is used. +This setting can also be changed with the +Text Style preference.

+
SLIDEWIN +

If cursor tracking +(see the +CSRTRK command) +is on, then, +whenever the cursor moves too close to (or beyond) +either end of the braille window, +horizontally reposition the window such that the cursor, +while remaining on that side, is nearer the centre. +If this feature is off, +then the braille window is always positioned such that +its left end is a multiple of its width from the left edge of the screen. +This setting can also be changed with the +Sliding Window preference.

+
SKPIDLNS +

Rather than explicitly moving exactly one line either up or down, +skip past lines which have the same content as the current line. +This feature affects +the +LNUP/LNDN commands, +as well as the line wrapping feature of +the +FWINLT/FWINRT +and +FWINLTSKIP/FWINRTSKIP commands. +This setting can also be changed with the +Skip Identical Lines preference.

+
SKPBLNKWINS +

Skip past blank windows when reading either forward or backward. +This feature affects the +FWINLT/FWINRT commands. +This setting can also be changed with the +Skip Blank Windows preference.

+
CSRVIS +

Show the cursor by superimposing a dot pattern +(see the +CSRSIZE command) +on top of the character where it is. +This feature is initially on. +This setting can also be changed with the +Show Cursor preference.

+
CSRHIDE +

Hide the cursor (see the +CSRVIS command) +in order to accurately read the character beneath it. +This feature only affects the current virtual terminal.

+
CSRTRK +

Track (follow) the cursor. +If the cursor moves to a location which isn't within the braille window, +then automatically move the braille window to the cursor's new location. +You'll usually want this feature turned on +since it minimizes the effects of screen scrolling, +and since, during input, the region wherein you're currently typing is always visible. +If this feature causes the braille window to jump at an inopportune moment, +then use the +BACK command +to get back to where you were reading. +You may need to turn this feature off when using an application which +continually updates the screen while maintaining a fixed data layout. +This feature is initially on. +This feature only affects the current virtual terminal.

+
CSRSIZE +

Represent the cursor with all eight dots (a solid block), +rather than with just dots 7 and 8 (an underline). +This setting can also be changed with the +Cursor Style preference.

+
CSRBLINK +

Blink (turn on and off according to a predefined interval) +the symbol representing the cursor +(see the +CSRVIS command). +This setting can also be changed with the +Blinking Cursor preference.

+
ATTRVIS +

Underline (with combinations of dots 7 and 8) highlighted characters. +

+
no underline

White on black (normal), +gray on black, +white on blue, +black on cyan.

+
dots 7 and 8

Black on white (reverse video).

+
dot 8

Everything else.

+
+ +This setting can also be changed with the +Show Attributes preference.

+
ATTRBLINK +

Blink (turn on and off according to a predefined interval) +the attribute underline +(see the +ATTRVIS command). +This feature is initially on. +This setting can also be changed with the +Blinking Attributes preference.

+
CAPBLINK +

Blink (turn on and off according to a predefined interval) +capital (uppercase) letters. +This setting can also be changed with the +Blinking Capitals preference.

+
TUNES +

Play a short predefined tune (see +Alert Tunes) +whenever a significant event occurs. +This feature is initially on. +This setting can also be changed with the +Alert Tunes preference.

+
AUTOREPEAT +

Automatically repeat a command at a regular interval +after an initial delay +while its key (combination) remains pressed. +Only some drivers support this functionality, +the primary limitation being that many braille displays +don't signal key presses and key releases as distinctly separate events. +This feature is initially on. +This setting can also be changed with the +Autorepeat preference.

+
AUTOSPEAK +

Automatically speak: +

    +
  • the new line when the braille window is moved vertically.
  • +
  • characters which are entered or deleted.
  • +
  • the character to which the cursor is moved.
  • +
+ +This feature is initially off. +This setting can also be changed with the +Autospeak preference.

+
+

+ +

Mode Selection

+ +

+

+
HELP +

Switch to the braille display driver's help page. +This is where you can find an on-line summary of things like +what your braille display's keys do, +and how to interpret its status cells. +Use the regular +vertical +and +horizontal motion commands +to navigate the help page. +Invoke the help command again to return to the screen.

+
INFO +

Switch to the status display +(see section +The Status Display for full details). +It presents a summary including +the position of the cursor, +the position of the braille window, +and the states of a number of BRLTTY's features. +Invoke this command again to return to the screen.

+
LEARN +

Switch to command learn mode +(see section +Command Learn Mode for full details). +This is how you can interactively learn what your braille display's keys do. +Invoke this command again to return to the screen. +This command isn't available if the +--disable-learn-mode build option was specified.

+
+

+ +

Preference Maintenance

+ +

+

+
PREFMENU +

Switch to the preferences menu +(see +The Preferences Menu for full details). +Invoke this command again to return to normal operation. +This command isn't available if the +--disable-preferences-menu build option was specified.

+
PREFSAVE +

Save the current preferences settings +(see +Preferences for full details).

+
PREFLOAD +

Restore the most recently saved preferences settings +(see +Preferences for full details).

+
+

+ +

Menu Navigation

+ +

+

+
MENU_FIRST_ITEM/MENU_LAST_ITEM +

Go to the first/last item in the menu.

+
MENU_PREV_ITEMMENU_NEXT_ITEM/ +

Go to the previous/next item in the menu.

+
MENU_PREV_SETTING/MENU_NEXT_SETTING +

Decrement/increment the current menu item's setting.

+
+

+ +

Speech Controls

+ +

+

+
SAY_LINE +

Speak the current line. +The +Say-Line Mode preference +determines if pending speech is discarded first.

+
SAY_ABOVE +

Speak the top portion of the screen (ending with the current line).

+
SAY_BELOW +

Speak the bottom portion of the screen (starting with the current line).

+
MUTE +

Stop speaking immediately.

+
SPKHOME +

Go to where the speech cursor is.

+
SAY_SLOWER/SAY_FASTER +

Decrease/increase the speech rate +(see also the +Speech Rate preference). +This command is only available if a driver which supports it is being used.

+
SAY_SOFTER/SAY_LOUDER +

Decrease/increase the speech volume +(see also the +Speech Volume preference). +This command is only available if a driver which supports it is being used.

+
+

+ +

Virtual Terminal Switching

+ +

See also the +SWITCHVT routing key command. +

+
SWITCHVT_PREV/SWITCHVT_NEXT +

Switch to the previous/next virtual terminal.

+
+

+ +

Other Commands

+ +

+

+
CSRJMP_VERT +

Route (bring) the cursor to anywhere on the top line of the braille window +(see +Cursor Routing for full details). +The cursor is moved by simulating vertical arrow-key presses. +This command doesn't always work because some applications +either move the cursor somewhat unpredictably +or use the arrow keys for purposes other than cursor motion. +It's somewhat safer than the other cursor routing commands, though, +because it makes no attempt to simulate the left- and right-arrows.

+
PASTE +

Insert the characters within the cut buffer at the current cursor location +(see +Cut and Paste for full details).

+
RESTARTBRL +

Stop, and then restart the braille display driver.

+
RESTARTSPEECH +

Stop, and then restart the speech synthesizer driver.

+
+

+ +

Character Commands

+ +

+

+
ROUTE +

Route (bring) the cursor to the character +associated with the routing key +(see +Cursor Routing for full details). +The cursor is moved by simulating arrow-key presses. +This command doesn't always work because some applications +either move the cursor somewhat unpredictably +or use the arrow keys for purposes other than cursor motion.

+
CUTBEGIN +

Anchor the start of the cut block at the character +associated with the routing key +(see +Cut and Paste for full details). +This command clears the cut buffer.

+
CUTAPPEND +

Anchor the start of the cut block at the character +associated with the routing key +(see +Cut and Paste for full details). +This command doesn't clear the cut buffer.

+
CUTRECT +

Anchor the end of the cut block at the character +associated with the routing key, +and append the rectangular region to the cut buffer +(see +Cut and Paste for full details).

+
CUTLINE +

Anchor the end of the cut block at the character +associated with the routing key, +and append the linear region to the cut buffer +(see +Cut and Paste for full details).

+
PRINDENT/NXINDENT +

Go up/down to the nearest line which isn't indented +more than the column associated with the routing key.

+
DESCCHAR +

Momentarily (see the +-M command line option) +display a message describing the character associated with the routing key. +It reveals +the decimal and hexadecimal values of the character, +the foreground and background colours, +and, when present, special attributes (bright and blink). +The message looks like this: +

+char 65 (0x41): white on black bright blink +
+

+
SETLEFT +

Horizontally reposition the braille window so that +its left edge is at the column associated with the routing key. +This feature makes it very easy to put the window exactly where it's needed, +and, therefore, for displays which have routing keys, +almost eliminates the need for a lot of elementary window motion +(like +the +CHRLT/CHRRT +and +HWINLT/HWINRT +commands).

+
PRDIFCHAR/NXDIFCHAR +

Go up/down to the nearest line which has a different character +in the column associated with the routing key.

+
+

+ +

Base Commands

+ +

+

+
SWITCHVT +

Switch to the virtual terminal whose number +(counting from 1) matches that of the routing key. +See also the +SWITCHVT_PREV/SWITCHVT_NEXT virtual terminal switching commands.

+
SETMARK +

Mark (remember) the current position of the braille window +in a register associated with the routing key. +See the +GOTOMARK command. +This feature only affects the current virtual terminal.

+
GOTOMARK +

Move the braille window to the position formerly marked +(see the +SETMARK command) +with the same routing key. +This feature only affects the current virtual terminal.

+
+

+ +

4.2 The Configuration File +

+ +

System defaults for many settings may be established within a configuration file. +The default name for this file is /etc/brltty.conf, +although it may be overridden with the +-f command line option. +It doesn't need to exist. +A template for it can be found within the DOCS subdirectory.

+

Blank lines are ignored. +A comment begin with a number sign (#), +and continues to the end of the line. +The following directives are recognized: +

+
api-parameters name=value,... +

Specify parameters for the Application Programming Interrface. +If the same parameter is specified more than once, +then its rightmost assignment is used. +For a description of the parameters accepted by the interface, +please see the BrlAPI reference manual. +See the +--with-api-parameters +build option for the defaults established during the build procedure. +This directive can be overridden with the +-A command line option.

+
attributes-table file +

Specify the attributes table +(see section +Attributes Tables for details). +If a relative path is supplied, then it's anchored at /etc/brltty +(see the +--with-data-directory +and the +--with-execute-root +build options for more details). +The .atb extension is optional. +See the +--with-attributes-table +build option for the default established during the build procedure. +This directive can be overridden with the +-a command line option.

+
braille-device device,... +

Specify the device to which the braille display is connected +(see section +Braille Device Specification). +See the +--with-braille-device +build option for the default established during the build procedure. +This directive can be overridden with the +-d command line option.

+
braille-driver driver,...|auto +

Specify the braille display driver +(see section +Driver Specification). +The default is to perform autodetection. +This directive can be overridden with the +-b command line option.

+
braille-parameters [driver:]name=value,... +

Specify parameters for the braille display drivers. +If the same parameter is specified more than once, +then its rightmost assignment is used. +If a parameter name is qualified by a driver +(see section +Driver Identification Codes) +then that setting only applies to that driver; +if it isn't then it applies to all drivers. +For a description of the parameters accepted by a specific driver, +please see the documentation for that driver. +See the +--with-braille-parameters +build option for the defaults established during the build procedure. +This directive can be overridden with the +-B command line option.

+
contraction-table file +

Specify the contraction table +(see section +Contraction Tables for details). +If a relative path is supplied, then it's anchored at /etc/brltty +(see the +--with-data-directory +and the +--with-execute-root +build options for more details). +The .ctb extension is optional. +The contraction table is used when the 6-dot braille feature is activated +(see the +SIXDOTS command +and the +Text Style preference). +The default is to display uncontracted 6-dot braille. +This directive can be overridden with the +-c command line option. +It isn't available if the +--disable-contracted-braille build option was specified.

+
key-table file|auto +

Specify the key table +(see section +Key Tables for details). +If a relative path is supplied, then it's anchored at /etc/brltty +(see the +--with-data-directory +and the +--with-execute-root +build options for more details). +The .ktb extension is optional. +The default is not to use a key table. +This directive can be overridden with the +-k command line option.

+
keyboard-properties name=value,... +

Specify the properties of the keyboard(s) to be monitored. +If the same property is specified more than once, +then its rightmost assignment is used. +See section +Keyboard Properties +for a list of the properties which may be specified. +The default is to monitor all keyboards. +This directive can be overridden with the +-K command line option.

+
midi-device device +

Specify the device to use for the Musical Instrument Digital Interface +(see section +MIDI Device Specification). +This directive can be overridden with the +-m command line option. +It isn't available if the +--disable-midi-support build option was specified.

+
pcm-device device +

Specify the device to use for digital audio +(see section +PCM Device Specification). +This directive can be overridden with the +-p command line option. +It isn't available if the +--disable-pcm-support build option was specified.

+
release-device boolean +

Whether or not to release the device to which the braille display is connected +when the current screen or window can't be read. +

+
on

Release the device.

+
off

Don't release the device.

+
+ +The default setting is on on Windows platforms +and off on all other platforms. +This directive can be overridden with the +-r command line option.

+
screen-driver driver +

Specify the screen driver +(see section +Supported Screen Drivers). +See the +--with-screen-driver +build option for the default established during the build procedure. +This directive can be overridden with the +-x command line option.

+
screen-parameters [driver:]name=value,... +

Specify parameters for the screen drivers. +If the same parameter is specified more than once, +then its rightmost assignment is used. +If a parameter name is qualified by a driver +(see section +Supported Screen Drivers) +then that setting only applies to that driver; +if it isn't then it applies to all drivers. +For a description of the parameters accepted by a specific driver, +please see the documentation for that driver. +See the +--with-screen-parameters +build option for the defaults established during the build procedure. +This directive can be overridden with the +-X command line option.

+
speech-driver driver,...|auto +

Specify the speech synthesizer driver +(see section +Driver Specification). +The default is to perform autodetection. +This directive can be overridden with the +-s command line option. +It isn't available if the +--disable-speech-support build option was specified.

+
speech-fifo file +

Specify the FIFO (a special file which works like a pipe) +which is to be used by other applications +that wish to gain access to BRLTTY's speech driver. +This directive can be overridden with the +-F command line option. +It isn't available if the +--disable-speech-support build option was specified.

+
speech-parameters [driver:]name=value,... +

Specify parameters for the speech synthesizer drivers. +If the same parameter is specified more than once, +then its rightmost assignment is used. +If a parameter name is qualified by a driver +(see section +Driver Identification Codes) +then that setting only applies to that driver; +if it isn't then it applies to all drivers. +For a description of the parameters accepted by a specific driver, +please see the documentation for that driver. +See the +--with-speech-parameters +build option for the defaults established during the build procedure. +This directive can be overridden with the +-S command line option.

+
text-table file|auto +

Specify the text table +(see section +Text Tables for details). +If a relative path is supplied, then it's anchored at /etc/brltty +(see the +--with-data-directory +and the +--with-execute-root +build options for more details). +The .ttb extension is optional. +See the +--with-text-table +build option for the default established during the build procedure. +The default is to perform locale-based autoselection with fallback to the built-in table. +This directive can be overridden with the +-t command line option.

+
+

+ +

4.3 Command Line Options +

+ +

Many settings can be explicitly specified when invoking BRLTTY. +The brltty command accepts the following options: +

+
-afile --attributes-table=file +

Specify the attributes table +(see section +Attributes Tables for details). +If a relative path is supplied, then it's anchored at /etc/brltty +(see the +--with-data-directory +and the +--with-execute-root +build options for more details). +The .atb extension is optional. +See the +attributes-table +configuration file directive for the default run-time setting. +This setting can be changed with the +Attributes Table preference.

+
-bdriver,...|auto --braille-driver=driver,...|auto +

Specify the braille display driver +(see section +Driver Specification). +See the +braille-driver +configuration file directive for the default run-time setting.

+
-cfile --contraction-table=file +

Specify the contraction table +(see section +Contraction Tables for details). +If a relative path is supplied, then it's anchored at /etc/brltty +(see the +--with-data-directory +and the +--with-execute-root +build options for more details). +The .ctb extension is optional. +The contraction table is used when the 6-dot braille feature is activated +(see the +SIXDOTS command +and the +Text Style preference). +See the +contraction-table +configureation file directive for the default run-time setting. +This setting can be changed with the +Contraction Table preference. +This option isn't available if the +--disable-contracted-braille build option was specified.

+
-ddevice,... --braille-device=device,... +

Specify the device to which the braille display is connected +(see section +Braille Device Specification). +See the +braille-device +configuration file directive for the default run-time setting.

+
-e --standard-error +

Write diagnostic messages to standard error. +The default is to record them via syslog.

+
-ffile --configuration-file=file +

Specify the location of the +configuration file +which is to be used for the establishing of default run-time settings.

+
-h --help +

Display a summary of the command line options accepted by BRLTTY, +and then exit.

+
-kfile --key-table=file +

Specify the key table +(see section +Key Tables for details). +If a relative path is supplied, then it's anchored at /etc/brltty +(see the +--with-data-directory +and the +--with-execute-root +build options for more details). +The .ktb extension is optional. +See the +key-table +configureation file directive for the default run-time setting. +This setting can be changed with the +Key Table preference.

+
-llevel --log-level=level +

Specify the severity threshold for diagnostic message generation. +The following levels are recognized. +

+
0

emergency

+
1

alert

+
2

critical

+
3

error

+
4

warning

+
5

notice

+
6

information

+
7

debug

+
+ +Either the number or the name may be supplied, +and the name may be abbreviated. +If not specified, +then information is assumed +(see the +-q option for more details).

+
-mdevice --midi-device=device +

Specify the device to use for the Musical Instrument Digital Interface +(see section +MIDI Device Specification). +See the +midi-device +configuration file directive for the default run-time setting. +This option isn't available if the +--disable-midi-support build option was specified.

+
-n --no-daemon +

Specify that BRLTTY is to remain in the foreground. +If not specified, then BRLTTY becomes a background process (daemon) +after initializing itself but before starting any of the selected drivers.

+
-pdevice --pcm-device=device +

Specify the device to use for digital audio +(see section +PCM Device Specification). +See the +pcm-device +configuration file directive for the default run-time setting. +This option isn't available if the +--disable-pcm-support build option was specified.

+
-q --quiet +

Log less information. +This option changes the default log level +(see the +-l option) +to notice if +either the +-v +or the +-V +option is specified, and to warning otherwise.

+
-r --release-device +

Release the device to which the braille display is connected +when the current screen or window can't be read. +See the +release-device +configuration file directive for the default run-time setting.

+
-sdriver,...|auto --speech-driver=driver,...|auto +

Specify the speech synthesizer driver +(see section +Driver Specification). +See the +speech-driver +configuration file directive for the default run-time setting. +This option isn't available if the +--disable-speech-support build option was specified.

+
-tfile --text-table=file +

Specify the text table +(see section +Text Tables for details). +If a relative path is supplied, then it's anchored at /etc/brltty +(see the +--with-data-directory +and the +--with-execute-root +build options for more details). +The .ttb extension is optional. +See the +text-table +configureation file directive for the default run-time setting. +This setting can be changed with the +Text Table preference.

+
-v --verify +

Display the current versions +of BRLTTY itself, +of the server side of its application programming interface, +and of the selected braille and speech drivers, +and then exit. +If the +-q option isn't specified, +then also display the values of the options after all sources have been considered. +If more than one braille driver +(see the +-b command line option) +and/or more than one braille device +(see the +-d command line option) +has been specified then braille display autodetection is performed. +If more than one speech driver +(see the +-s command line option) +has been specified then speech synthesizer autodetection is performed.

+
-xdriver --screen-driver=driver +

Specify the screen driver +(see section +Supported Screen Drivers). +See the +screen-driver +configuration file directive for the default run-time setting.

+
-Aname=value,... --api-parameters=name=value,... +

Specify parameters for the Application Programming Interface. +If the same parameter is specified more than once, +then its rightmost assignment is used. +For a description of the parameters accepted by the interface, +please see the BrlAPI reference manual. +See the +api-parameters +configuration file directive for the default run-time settings.

+
-B[driver:]name=value,... --braille-parameters=[driver:]name=value,... +

Specify parameters for the braille display drivers. +If the same parameter is specified more than once, +then its rightmost assignment is used. +If a parameter name is qualified by a driver +(see section +Driver Identification Codes) +then that setting only applies to that driver; +if it isn't then it applies to all drivers. +For a description of the parameters accepted by a specific driver, +please see the documentation for that driver. +See the +braille-parameters +configuration file directive for the default run-time settings.

+
-E --environment-variables +

Recognize environment variables when determining +the default settings for unspecified command line options +(see section +Command Line Options). +If this option is specified, +and if the environment variable associated with an unspecified option is defined, +then the value of that environment variable is used. +The names of these environment variables are based on +the long names of the options they correspond to: +

    +
  • All letters are in upper case.
  • +
  • Underscores (_) are used instead of minus signs (-).
  • +
  • The prefix BRLTTY_ is added.
  • +
+ +This option is particularly useful on the Linux operating system +as it allows default settings to be passed to BRLTTY via boot parameters. +The following environment variables are supported: +
+
BRLTTY_API_PARAMETERS

Parameters for the Application Programming Interface +(see the +-A command line option).

+
BRLTTY_ATTRIBUTES_TABLE

The attributes table +(see the +-a command line option).

+
BRLTTY_BRAILLE_DEVICE

The braille display device +(see the +-d command line option).

+
BRLTTY_BRAILLE_DRIVER

The braille display driver +(see the +-b command line option).

+
BRLTTY_BRAILLE_PARAMETERS

Parameters for the braille display driver +(see the +-B command line option).

+
BRLTTY_CONFIGURATION_FILE

The configuration file +(see the +-f command line option).

+
BRLTTY_CONTRACTION_TABLE

The contraction table +(see the +-c command line option).

+
BRLTTY_KEY_TABLE

The key table +(see the +-k command line option).

+
BRLTTY_KEYBOARD_PROPERTIES

The keyboard properties +(see the +-K command line option).

+
BRLTTY_MIDI_DEVICE

The Musical Instrument Digital Interface device +(see the +-m command line option).

+
BRLTTY_PCM_DEVICE

The digital audio device +(see the +-p command line option).

+
BRLTTY_RELEASE_DEVICE

Whether or not to release the device to which the braille display is connected +when the current screen or window can't be read +(see the +-r command line option).

+
BRLTTY_SCREEN_PARAMETERS

Parameters for the screen driver +(see the +-X command line option).

+
BRLTTY_SPEECH_DRIVER

The speech synthesizer driver +(see the +-s command line option).

+
BRLTTY_SPEECH_FIFO

The speech pass-through FIFO +(see the +-F command line option).

+
BRLTTY_SPEECH_PARAMETERS

Parameters for the speech synthesizer driver +(see the +-S command line option).

+
BRLTTY_TEXT_TABLE

The text table +(see the +-t command line option).

+
+

+
-Ffile --speech-fifo=file +

Specify the FIFO (a special file which works like a pipe) +which is to be used by other applications +that wish to gain access to BRLTTY's speech driver. +If not specified, no FIFO is created. +See the +speech-fifo +configuration file directive for the default run-time setting. +This option isn't available if the +--disable-speech-support build option was specified.

+
-I --install-service +

Install BRLTTY as the BrlAPI service. +This means that: +

    +
  • BRLTTY will be automatically started when the system is booted.
  • +
  • Applications can know that a BrlAPI server is running.
  • +
+ +This option is only supported on the Windows platform.

+
-Kname=value,... --keyboard-properties=name=value,... +

Specify the properties of the keyboard(s) to be monitored. +If the same property is specified more than once, +then its rightmost assignment is used. +See section +Keyboard Properties +for a list of the properties which may be specified. +See the +keyboard-properties +configuration file directive for the default run-time settings.

+
-Mcsecs --message-delay=csecs +

Specify the amount of time (in hundredths of a second) +that BRLTTY keeps its own internally generated messages on the braille display. +If not specified, then 400 (4 seconds) is assumed.

+
-N --no-api +

Disable the application programming interface.

+
-Pfile --pid-file=file +

Specify the file wherein BRLTTY is to write its process identifier (pid). +If not specified, BRLTTY doesn't write its process identifier anywhere.

+
-R --remove-service +

Remove the BrlAPI service. +This means that: +

    +
  • BRLTTY will not be automatically started when the system is booted.
  • +
  • Applications can know that no BrlAPI server is running.
  • +
+ +This option is only supported on the Windows platform.

+
-S[driver:]name=value,... --speech-parameters=[driver:]name=value,... +

Specify parameters for the speech synthesizer drivers. +If the same parameter is specified more than once, +then its rightmost assignment is used. +If a parameter name is qualified by a driver +(see section +Driver Identification Codes) +then that setting only applies to that driver; +if it isn't then it applies to all drivers. +For a description of the parameters accepted by a specific driver, +please see the documentation for that driver. +See the +speech-parameters +configuration file directive for the default run-time settings.

+
-Ucsecs --update-interval=csecs +

Specify the interval (in hundredths of a second) +at which the braille window is updated with new screen content. +If not specified, then 4 (40 milliseconds) is assumed.

+
-V --version +

Display the current versions +of BRLTTY itself, +of the server side of its application programming interface, +and of those drivers which have been linked into its binary, +and then exit. +If the +-q option isn't specified, +then also display copyright information.

+
-X[driver:]name=value,... --screen-parameters=[driver:]name=value,... +

Specify parameters for the screen drivers. +If the same parameter is specified more than once, +then its rightmost assignment is used. +If a parameter name is qualified by a driver +(see section +Supported Screen Drivers) +then that setting only applies to that driver; +if it isn't then it applies to all drivers. +For a description of the parameters accepted by a specific driver, +please see the documentation for that driver. +See the +screen-parameters +configuration file directive for the default run-time settings.

+
+

+ +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BRLTTY/English/BRLTTY-5.html b/Documents/Manual-BRLTTY/English/BRLTTY-5.html new file mode 100644 index 0000000000000000000000000000000000000000..5221769958d5bcb5168b6793d6332f3af8c42d50 --- /dev/null +++ b/Documents/Manual-BRLTTY/English/BRLTTY-5.html @@ -0,0 +1,1214 @@ + + + + + BRLTTY Reference Manual: Feature Descriptions + + + + + +Next +Previous +Contents +
+

5. Feature Descriptions

+ + + +

5.1 Cursor Routing +

+ +

When moving the braille window around the screen +while examining the text, say, in an editor, +you often need to bring the cursor +to a specific character within the braille window. +You'll probably find this to be a rather difficult task for a number of reasons. +One is that you may not know where the cursor is, +and that you may lose your place while trying to find it. +Another is that the cursor may move unrpedictably as the arrow keys are pressed +(some editors, for example, don't allow the cursor to be +more to the right than the end of the line it's on). +Cursor routing provides just such a capability +by knowing where the cursor is, +by simulating the same arrow-key presses which you'd have to enter manually, +and by monitoring the progress of the cursor as it moves.

+

Some braille displays have a button, known as a routing key, above each cell. +These keys use the +ROUTE command +to route the cursor right to the desired location.

+

Cursor routing, while very convenient and effective, +is, strictly speaking, not completely reliable. +One reason for this is that its current implementation assumes +VT100 cursor key escape sequences. +Another is that some applications do non-standard things +in response to detecting that a cursor key has been pressed. +A minor problem found within some editors (like vi), +as already mentioned above, +is that they throw in some unpredictable horizontal motion +when vertical motion is requested +because they don't allow the cursor to be to the right of the end of a line. +A major problem found within some web browsers (like lynx) +is that the up- and down-arrow keys are used to move among the links +(which may skip lines and/or move the cursor horizontally, +but which rarely just moves the cursor one line in the desired direction), +and that the left- and right-arrow keys are used to select links +(which has absolutely nothing to do with any form of cursor motion whatsoever, +and which even totally changes the screen content).

+

Cursor routing may not work very well on a heavily loaded system, +and definitely doesn't work very well when working on a remote system over a slow link. +This is so because of all of the checks which must be made along the way +in order to deal with unpredictable cursor motion +and in order to ensure that any mistake has at least a fighting chance to be undone. +Even though BRLTTY tries to be fairly clever, +it must still essentially wait to see what happens after each simulated arrow-key press.

+

Once a cursor routing request has been made, +BRLTTY keeps trying to route the cursor to the desired location until +a timeout expires before the cursor reaches that location, +the cursor seems to be moving in the wrong direction, +or you switch to a different virtual terminal. +An attempt is first made to use virtical motion +to bring the cursor to the right line, +and, only if that succeeds, an attempt is then made +to use horizontal motion to bring the cursor to the right column. +If another request is made while one is still in progress, +then the first one is aborted and the second one is initiated.

+

A safer but less powerful cursor routing command, +CSRJMP_VERT, +uses just vertical motion to bring the cursor +to anywhere on the top line of the braille window. +It's especially useful in conjunction with applications (like lynx) +wherein horizontal cursor motion must never be attempted.

+ +

5.2 Cut and Paste +

+ +

This feature enables you to grab some text which is already on the screen +and re-enter it at the current cursor position. +Using it saves time and avoids errors +when a long and/or complicated piece of text needs to be copied, +and even when the same short and simple piece of text needs to be copied many times. +It's particularly useful for things like +long file names, +complicated command lines, +E-mail addresses, +and URLs. Cutting and pasting text involves three simple steps: +

    +
  1. Mark either the top-left corner of the rectangular area +or the beginning of the linear area +on the screen which is to be grabbed (cut). +If your display has routing keys, +then move the braille window so that +the first character to be cut appears anywhere within it, and then: +
      +
    • invoke the +CUTBEGIN command +to start a new cut buffer
    • +
    • invoke the +CUTAPPEND command +to append to the existing cut buffer
    • +
    + +by pressing the key(s) associated with it +and then pressing the routing key associated with the character.
  2. +
  3. Mark either the bottom-right corner of the rectangular area +or the end of the linear area +on the screen which is to be grabbed (cut). +If your display has routing keys, +then move the braille window so that +the last character to be cut appears anywhere within it, and then +
      +
    • invoke the +CUTRECT command +to cut a rectangular area
    • +
    • invoke the +CUTLINE command +to cut a linear area
    • +
    + +by pressing the key(s) associated with it +and then pressing the routing key associated with the character. +Marking the end of the cut area +appends the selected screen content to the cut buffer. +Excess white-space is removed from the end of each line in the cut buffer +so that unwanted trailing spaces won't be pasted back in. +Control characters are replaced with blanks.
  4. +
  5. Insert (paste) the text where it's needed. +Place the cursor over the character where the text is to be pasted, +and invoke the +PASTE command. +You can paste the same text any number of times without recutting it. +This description assumes that you're already in some sort of input mode. +If you paste when you're in some other kind of mode +(like vi's command mode), +then you'd better be aware of what the characters in the cut buffer will do.
  6. +
+

+

The cut buffer is also used by +the +PRSEARCH/NXSEARCH commands.

+ +

5.3 Pointer (Mouse) Support via GPM +

+ +

If BRLTTY is configured with the +--enable-gpm build option +on a system where the gpm application has been installed, +then it'll interact with the pointer (mouse).

+

Moving the pointer drags the braille window +(see the +Window Follows Pointer preference). +Whenever the pointer is moved beyond the edge of the braille window, +the braille window is dragged along (one character at a time). +This gives the braille user another two-dimensional way +to inspect the screen content +or to quickly move the braille window to a desired location. +It also gives a sighted observer an easy way to move the braille window +to something he'd like the braille user to read.

+

gpm uses reverse video to show where the pointer is. +Underlining of highlighted characters +(see the +ATTRVIS command for details) +should be turned on, therefore, when the braille user wishes to use the pointer.

+

This feature also gives the braille user access to gpm's cut-and-paste capability. +Although you should read gpm's own documentation, +here are some notes on how it works. +

    +
  • Copy the current character to the cut buffer +by single-clicking the left button.
  • +
  • Copy the current word (space-delimited) to the cut buffer +by double-clicking the left button.
  • +
  • Copy the current line to the cut buffer +by tripple-clicking the left button.
  • +
  • Copy a linear region to the cut buffer as follows: +
      +
    1. Place the pointer on the first character of the region.
    2. +
    3. Press (and hold) the left button.
    4. +
    5. Move the pointer to the last character of the region +(all currently selected characters are highlighted).
    6. +
    7. Release the left button.
    8. +
    +
  • +
  • Paste (input) the current contents of the cut buffer +by clicking the middle button of a three-button mouse +or by clicking the right button of a two-button mouse.
  • +
  • Append to the cut buffer +by using the right button of a three-button mouse.
  • +
+

+ +

5.4 Alert Tunes +

+ +

BRLTTY alerts you to the occurrence of significant events +by playing short predefined tunes. +This feature can be activated and deactivated with +either the +TUNES command +or the +Alert Tunes preference. +The tunes are played via the internal beeper by default, +but other alternatives can be selected +with the +Tune Device preference.

+

Each significant event is associated, from highest to lowest priority, +with one or more of the following: +

+
a tune

If a tune has been associated with the event, +if the +Alert Tunes preference +(see also the +TUNES command) +is active, +and if the selected tune device +(see the +Tune Device preference) +can be opened, +then the tune is played.

+
a dot pattern

If a dot pattern has been associated with the event, +and if the +Alert Dots preference is active, +then the dot pattern is briefly displayed on every braille cell. +Some braille displays don't respond quickly enough +for this mechanism to work effectively.

+
a message

If a message has been associated with the event, +and if the +Alert Messages preference is active, +then it is displayed for a few seconds +(see the +-M command line option).

+
+

+

These events include: +

    +
  • When the braille display driver starts or stops.
  • +
  • When a lengthy command completes.
  • +
  • When a command cannot be executed.
  • +
  • When a mark is set.
  • +
  • When the start or end of the cut block is set.
  • +
  • When a feature is activated or deactivated.
  • +
  • When cursor tracking is turned on or off.
  • +
  • When the screen image is frozen or unfrozen.
  • +
  • When the braille window wraps +either down to the beginning of the next line +or up to the end of the previous line.
  • +
  • When identical lines are skipped.
  • +
  • When a requested motion cannot be performed.
  • +
  • When cursor routing starts, finishes, or fails.
  • +
+

+ +

5.5 Preferences Settings +

+ +

When BRLTTY starts, it loads a file which contains your preferences settings. +The file doesn't need to exist, +and is created the first time the settings are saved +with the +PREFSAVE command. +The most recently saved settings can be restored at any time +with the +PREFLOAD command.

+

The name for this file is /etc/brltty-driver.prefs. +where driver is the two-letter +driver identification code.

+ +

The Preferences Menu

+ +

The preferences settings are saved as binary data +which, therefore, can't be edited by hand. +BRLTTY, however, has a simple menu from which you can easily change them. +This feature isn't available if the +--disable-preferences-menu build option was specified.

+

The meny is activated by the +PREFMENU command. +The braille display briefly +(see the +-M command line option) +shows the menu title, +and then presents the current item and its current setting.

+ +

Navigating the Menu

+ +

See +Menu Navigation Commands for the full list of +commands which enable you to select items and change settings within the menu. +For backward compatibility with old drivers, the window motion commands, +which have modified meanings in this context, can also be used. +

+
TOP/BOT, TOP_LEFT/BOT_LEFT, PAGE_UP/PAGE_DOWN

Go to the first/last item in the menu +(same as +MENU_FIRST_ITEM/MENU_LAST_ITEM).

+
LNUP/LNDN, PRDIFLN/NXDIFLN, CURSOR_UP/CURSOR_DOWN

Go to the previous/next item in the menu +(same as +MENU_PREV_ITEM/MENU_NEXT_ITEM).

+
WINUP/WINDN, CHRLT/CHRRT, CURSOR_LEFT/CURSOR_RIGHT, BACK/HOME

Decrement/increment the current menu item's setting +(same as +MENU_PREV_SETTING/MENU_NEXT_SETTING).

+
+

+

Notes: +

    +
  • The routing keys can also be used to select a setting for the current item. +If the item has numeric settings, +then the entire row of routing keys acts as a scroll bar +which covers the full range of valid values. +If the item has named settings, +then the routing keys correspond ordinally with the settings.
  • +
  • Use the PREFLOAD command to undo all of the changes +which were made since entering the menu.
  • +
  • Use the PREFMENU command (again) to leave the new settings in effect, +exit the menu, and resume normal operation. +If the "Save Settings on Exit" item is set, then, in addition, +the new settings are written to the preferences settings file. +Any command not recognized by the menu system also does these same things.
  • +
+

+ +

The Menu Items

+ +

+

+
Save on Exit +

When exiting the preferences menu: +

+
No

Don't automatically save the preferences settings.

+
Yes

Automatically save the preferences settings.

+
+ +The initial setting is No.

+
Text Style +

When displaying screen content +(see the +DISPMD command), +show characters: +

+
8-dot

With all eight dots.

+
6-dot

With only dots 1 through 6. +If a contraction table has been selected +(see the +-c command line option +and the +contraction-table configuration file directive), +then it is used.

+
+ +This setting can also be changed with the +SIXDOTS command.

+
Skip Identical Lines +

When moving either up or down exactly one line with +the +LNUP/LNDN commands, +as well as the line wrapping feature of +the +FWINLT/FWINRT +and +FWINLTSKIP/FWINRTSKIP commands: +

+
No

Don't skip past lines which have the same content as the current line.

+
Yes

Skip past lines which have the same content as the current line.

+
+ +This setting can also be changed with the +SKPIDLNS command.

+
Skip Blank Windows +

When moving either left or right with +the +FWINLT/FWINRT commands: +

+
No

Don't skip past blank windows.

+
Yes

Skip past blank windows.

+
+ +This setting can also be changed with the +SKPBLNKWINS command.

+
Which Blank Windows +

If blank windows are to be skipped: +

+
All

Skip all of them.

+
End of Line

Only skip those which are at the end (on the right side) of a line.

+
Rest of Line

Only skip those which are +at the end (on the right side) of a line when reading forward, +and at the beginning (on the left side) of a line when reading backward.

+
+

+
Sliding Window +

If the cursor is being tracked +(see the +CSRTRK command), +and the cursor moves too close to (or beyond) +either end of the braille window: +

+
No

Horizontally reposition the window such that its left end +is a multiple of its width from the left edge of the screen.

+
Yes

Horizontally reposition the window such that the cursor, +while remaining on that side of the window, is nearer the centre.

+
+ +This setting can also be changed with the +SLIDEWIN command.

+
Eager Sliding Window +

If the braille window is to slide: +

+
No

Reposition it whenever the cursor moves beyond either end.

+
Yes

Reposition it whenever the cursor moves too close to either end.

+
+ +The initial setting is No.

+
Window Overlap +

When moving either left or right with +the +FWINLT/FWINRT commands, +this setting specifies how many characters +horizontally adjacent braille windows should overlap each other by. +The initial setting is 0.

+
Autorepeat +

While the key (combination) for a command remains pressed: +

+
No

Don't automatically repeat the command.

+
Yes

Automatically repeat the command at a regular interval after an initial delay.

+
+ +The following commands are eligible for autorepeating: +
    +
  • The +LNUP/LNDN commands.
  • +
  • The +PRDIFLN/NXDIFLN commands.
  • +
  • The +CHRLT/CHRRT commands.
  • +
  • Braille window panning operations +(see the +Autorepeat Panning preference).
  • +
  • The Page-Up and Page-Down operations.
  • +
  • The Cursor-Up and Cursor-Down operations.
  • +
  • The Cursor-Left and Cursor-Right operations.
  • +
  • The Backspace and Delete operations.
  • +
  • Character entry.
  • +
+ +Only some drivers support this functionality, +the primary limitation being that many braille displays +don't signal both key presses and key releases as distinctly separate events. +This setting can also be changed with the +AUTOREPEAT command. +The initial setting is Yes.

+
Autorepeat Panning +

When the +Autorepeat preference is enabled: +

+
No

Don't autorepeat braille window panning operations.

+
Yes

Autorepeat braille window panning operations.

+
+ +This preference affects the +FWINLT/FWINRT commands. +The initial setting is No.

+
Autorepeat Delay +

When a character is to be autorepeated, +this setting specifies the amount of time +(see the note on +time settings below) +which must pass before autorepeating begins. +The initial setting is 50.

+
Autorepeat Interval +

When a character is being autorepeated, +this setting specifies the amount of time +(see the note on +time settings below) +between each reexecution. +The initial setting is 10.

+
Show Cursor +

When displaying screen content +(see the +DISPMD command): +

+
No

Don't show the cursor.

+
Yes

Show the cursor.

+
+ +This setting can also be changed with the +CSRVIS command. +The initial setting is Yes.

+
Cursor Style +

When showing the cursor, represent it: +

+
Underline

With dots 7 and 8.

+
Block

With all eight dots.

+
+ +This setting can also be changed with the +CSRSIZE command.

+
Blinking Cursor +

When the cursor is to be shown: +

+
No

Leave it visible all the time.

+
Yes

Make it alternately visible and invisible +according to a predefined interval.

+
+ +This setting can also be changed with the +CSRBLINK command.

+
Cursor Visible Time +

When the cursor is to be blinked, this setting specifies the length of time +(see the note on +time settings below) +during each cycle that it is to be visible. +The initial setting is 40.

+
Cursor Invisible Time +

When the cursor is to be blinked, this setting specifies the length of time +(see the note on +time settings below) +during each cycle that it is to be invisible. +The initial setting is 40.

+
Show Attributes +

When displaying screen content +(see the +DISPMD command): +

+
No

Don't underline highlighted characters.

+
Yes

Underline highlighted characters.

+
+ +This setting can also be changed with the +ATTRVIS command.

+
Blinking Attributes +

When highlighted characters are to be underlined: +

+
No

Leave the indicator visible all the time.

+
Yes

Make the indicator alternately visible and invisible +according to a predefined interval.

+
+ +This setting can also be changed with the +ATTRBLINK command.

+
Attributes Visible Time +

When the highlighted character underline is to be blinked, +this setting specifies the length of time +(see the note on +time settings below) +during each cycle that it is to be visible. +The initial setting is 20.

+
Attributes Invisible Time +

When the highlighted character underline is to be blinked, +this setting specifies the length of time +(see the note on +time settings below) +during each cycle that it is to be invisible. +The initial setting is 60.

+
Blinking Capitals +

When displaying screen content +(see the +DISPMD command): +

+
No

Leave capital letters visible all the time.

+
Yes

Make capital letters alternately visible and invisible +according to a predefined interval.

+
+ +This setting can also be changed with the +CAPBLINK command.

+
Capitals Visible Time +

When capital letters are to be blinked, +this setting specifies the length of time +(see the note on +time settings below) +during each cycle that they're to be visible. +The initial setting is 60.

+
Capitals Invisible Time +

When capital letters are to be blinked, +this setting specifies the length of time +(see the note on +time settings below) +during each cycle that they're to be invisible. +The initial setting is 20.

+
Braille Firmness +

Adjust the firmness (or stiffness) of the braille dots. +It can be set to: +

    +
  • Maximum
  • +
  • High
  • +
  • Medium
  • +
  • Low
  • +
  • Minimum
  • +
+ +This preference is only available if a driver which supports it is being used. +The initial setting is Medium.

+
Braille Sensitivity +

Adjust the sensitivity of the braille dots to touch. +It can be set to: +

    +
  • Maximum
  • +
  • High
  • +
  • Medium
  • +
  • Low
  • +
  • Minimum
  • +
+ +This preference is only available if a driver which supports it is being used. +The initial setting is Medium.

+
Window Follows Pointer +

When moving the pointer device (mouse): +

+
No

Don't drag the braille window.

+
Yes

Drag the braille window.

+
+ +This preference is only presented if the +--enable-gpm build option was specified.

+
Highlight Window +

When moving the braille window: +

+
No

Don't highlight the new screen area.

+
Yes

Highlight the new screen area.

+
+ +This feature enables a sighted observer to see where the braille window is, +and, therefore, to know what the braille user is reading. +Any motion of the braille window (manual, cursor tracking, etc.), +other than when it moves in response to pointer (mouse) motion +(see the +Window Follows Pointer preference), +causes the area of the screen corresponding to +the new location of the braille window to be highlighted. +If the +Show Attributes preference is enabled +then only the character corresponding to the upper-left corner of the braille window is highlighted.

+
Alert Tunes +

Whenever a significant event with an associated tune occurs +(see +Alert Tunes): +

+
No

Don't play the tune.

+
Yes

Play the tune.

+
+ +This setting can also be changed with the +TUNES command. +The initial setting is Yes.

+
Tune Device +

Play alert tunes via: +

+
Beeper

The internal beeper (console tone generator). +This setting is supported +on Linux, +on OpenBSD, +on FreeBSD, +and on NetBSD. +It's always safe to use, +although it may be somewhat soft. +This device isn't available if the +--disable-beeper-support build option was specified.

+
PCM

The digital audio interface on the sound card. +This setting is supported +on Linux (via /dev/dsp), +on Solaris (via /dev/audio), +on OpenBSD (via /dev/audio0), +on FreeBSD (via /dev/dsp), +and on NetBSD (via /dev/audio0). +It doesn't work when this device is already being used +by another application. +This device isn't available if the +--disable-pcm-support build option was specified.

+
MIDI

The Musical Instrument Digital Interface on the sound card +This setting is supported +on Linux (via /dev/sequencer). +It doesn't work when this device is already being used +by another application. +This device isn't available if the +--disable-midi-support build option was specified.

+
FM

The FM synthesizer on an +AdLib, OPL3, Sound Blaster, or equivalent sound card. +This setting is supported +on Linux. +It works even if the FM synthesizer +is already being used by another application. +The results are unpredictable, and potentially not very good, +if it's used with a sound card which doesn't support this feature. +This device isn't available if the +--disable-fm-support build option was specified.

+
+ +The initial setting is Beeper on those platforms which support it, +and PCM on those platforms which don't.

+
PCM Volume +

If the digital audio interface of the sound card +is being used to play the alert tunes, +this setting specifies the loudness +(as a percentage of the maximum) +at which they are to be played. +The initial setting is 70.

+
MIDI Volume +

If the Musical Instrument Digital Interface (MIDI) of the sound card +is being used to play the alert tunes, +this setting specifies the loudness +(as a percentage of the maximum) +at which they are to be played. +The initial setting is 70.

+
MIDI Instrument +

If the Musical Instrument Digital Interface (MIDI) of the sound card +is being used to play the alert tunes, +this setting specifies which instrument is to be used +(see the +MIDI Instrument Table). +The initial setting is Acoustic Grand Piano.

+
FM Volume +

If the FM synthesizer of the sound card +is being used to play the alert tunes, +this setting specifies the loudness +(as a percentage of the maximum) +at which they are to be played. +The initial setting is 70.

+
Alert Dots +

Whenever a significant event with an associated dot pattern occurs +(see +Alert Tunes): +

+
No

Don't display the dot pattern.

+
Yes

Briefly display the dot pattern.

+
+ +If alert tunes are to be played +(see the +TUNES command +and the +Alert Tunes preference), +if a tune has been associated with the event, +and if the selected tune device can be opened, +then, regardless of the setting of this preference, the dot pattern isn't displayed.

+
Alert Messages +

Whenever a significant event with an associated message occurs +(see +Alert Tunes): +

+
No

Don't display the message.

+
Yes

Display the message.

+
+ +If alert tunes are to be played +(see the +TUNES command +and the +Alert Tunes preference), +if a tune has been associated with the event, +and if the selected tune device can be opened, +or if alert dot patterns are to be displayed +(see the +Alert Dots preference) +and if a dot pattern has been associated with the event, +then, regardless of the setting of this preference, the message isn't displayed.

+
Say-Line Mode +

When using the +SAY_LINE command: +

+
Immediate

Discard pending speech.

+
Enqueue

Don't discard pending speech.

+
+ +The initial setting is Immediate.

+
Autospeak +

+

+
No

Only speak when explicitly requested to do so.

+
Yes

Automatically speak: +

    +
  • the new line when the braille window is moved vertically.
  • +
  • characters which are entered or deleted.
  • +
  • the character to which the cursor is moved.
  • +
+

+
+ +This setting can also be changed with the +AUTOSPEAK command. +The initial setting is No.

+
Speech Rate +

Adjust the speech rate +(0 is the slowest, 20 is the fastest). +This preference is only available if a driver which supports it is being used. +This setting can also be changed with +the +SAY_SLOWER/SAY_FASTER commands. +The initial setting is 10.

+
Speech Volume +

Adjust the speech volume +(0 is the softest, 20 is the loudest). +This preference is only available if a driver which supports it is being used. +This setting can also be changed with +the +SAY_SOFTER/SAY_LOUDER commands. +The initial setting is 10.

+
Speech Pitch +

Adjust the speech pitch +(0 is the lowest, 20 is the highest). +This preference is only available if a driver which supports it is being used. +The initial setting is 10.

+
Speech Punctuation +

Adjust the amount of punctuation which is spoken. +It can be set to: +

    +
  • All
  • +
  • Some
  • +
  • All
  • +
+ +This preference is only available if a driver which supports it is being used. +The initial setting is Some.

+
Status Style +

This setting specifies the way that the status cells are to be used. +You shuldn't normally need to play with it. +It enables BRLTTY's developers to test status cell configurations +for braille displays which they don't actually have. +

+
None

Don't use the status cells. +This setting is always safe, but it's also quite useless.

+
Alva

The status cells contain: +

+
1

The location of the cursor (see below).

+
2

The location of the top-left corner of the braille window (see below).

+
3

A letter indicating BRLTTY's state. +In order of precedence: +

+
a

Screen attributes are being shown +(see the +DISPMD command).

+
f

The screen image is frozen +(see the +FREEZE command).

+
f

The cursor is being tracked +(see the +CSRTRK command).

+
blank

Nothing special.

+
+

+
+ +The locations of the cursor and the braille window +are presented in an interesting way. +Dots 1 through 6 represent the line number with a letter +from a (for 1) through y (for 25). +Dots 7 and 8 (the extra two at the bottom) +represent the horizontal braille window number as follows: +
+
No Dots

The first (leftmost) window.

+
Dot 7

The second window.

+
Dot 8

The third window.

+
Dots 7 and 8

The fourth window.

+
+ +In both cases, the indicators wrap: +line 26 is represented by the letter a, and the fifth horizontal +braille window is represented by no dots at the bottom.

+
Tieman

The status cells contain: +

+
1-2

The columns (counting from 1) of the cursor +(shown in the top half of the cells) +and the top-left corner of the braille window +(shown in the bottom half of the cells).

+
3-4

The rows (counting from 1) of the cursor +(shown in the top half of the cells) +and the top-left corner of the braille window +(shown in the bottom half of the cells).

+
5

Each dot indicates if a feature is turned on as follows: +

+
Dot 1

The screen image is frozen +(see the +FREEZE command).

+
Dot 2

Screen attributes are being displayed +(see the +DISPMD command).

+
Dot 3

Alert tunes are being played +(see the +TUNES command).

+
Dot 4

The cursor is being shown +(see the +CSRVIS command).

+
Dot 5

The cursor is a solid block +(see the +CSRSIZE command).

+
Dot 6

The cursor is blinking +(see the +CSRBLINK command).

+
Dot 7

The cursor is being tracked +(see the +CSRTRK command).

+
Dot 8

The braille window will slide +(see the +SLIDEWIN command).

+
+

+
+

+
PowerBraille 80

The status cells contain: +

+
1

The row (counting from 1) corresponding +to the top of the braille window. +The tens digit is shown in the top half of the cell, +and the units digit is shown in the bottom half of the cell.

+
+

+
Generic

This setting passes a lot of information to the braille driver, +and the driver itself decides how to present it.

+
MDV

The status cells contain: +

+
1-2

The location of the top-left corner of the braille window. +The row (counting from 1) is shown in the top half of the cells, +and the column (counting from 1) is shown in the bottom half of the cells.

+
+

+
Voyager

The status cells contain: +

+
1

The row (counting from 1) corresponding to +the top of the braille window (see below).

+
2

The row (counting from 1) whereon the cursor is (see below).

+
3

If the screen is frozen +(see the +FREEZE command), +then the letter F. +If it isn't, then +the column (counting from 1) wherein the cursor is (see below).

+
+ +Row and column numbers are shown as two digits within a single cell. +The tens digit is shown in the top half of the cell, +and the units digit is shown in the bottom half of the cell.

+
+ +The initial setting is braille display driver dependent.

+
Text Table +

Select the text table. +See section +Text Tables for details. +See the +-t command line option for the initial setting. +This preference isn't saved. +It isn't presented if the +--disable-table-selection build option was specified.

+
Attributesw Table +

Select the attributes table. +See section +Attributes Tables for details. +See the +-a command line option for the initial setting. +This preference isn't saved. +It isn't presented if the +--disable-table-selection build option was specified.

+
Contraction Table +

Select the contraction table. +See section +Contraction Tables for details. +See the +-c command line option for the initial setting. +This preference isn't saved. +It isn't presented if the +--disable-table-selection build option was specified.

+
Key Table +

Select the key table. +See section +Key Tables for details. +See the +-k command line option for the initial setting. +This preference isn't saved. +It isn't presented if the +--disable-table-selection build option was specified.

+
+

+

Notes: +

    +
  • + +All time settings are in hundredths of a second. +They are multiples of the braille window update interval +(see the +-U command line option) +within the range 1 through 100.
  • +
+

+ +

5.6 The Status Display +

+ +

The status display is a summary of BRLTTY's current state +which fits completely within the braille window. +Some braille displays have a set of status cells +which are used to permanently display some of this information as well +(see the documentation for your display's driver). +The data presented by this display isn't static, and may change at any time +in response to screen updates and/or BRLTTY commands.

+

Use the +INFO command +to switch to the status display, +and use it again to return to the screen. +The layout of the information contained therein +is dependent on the size of the braille window.

+ +

Displays with 21 Cells or More

+ +

Short pneumonics have been used, even though they're rather cryptic, +in order to show the precise column layout. +

+wx:wy cx:cy vt tcmfdu +
+ +
+
wx:wy

The column and row (counting from 1) on the screen corresponding +to the top-left corner of the braille window.

+
cx:cy

The column and row (counting from 1) on the screen corresponding +to the position of the cursor.

+
vt

The number (counting from 1) of the current virtual terminal.

+
t

The state of the cursor tracking feature +(see the +CSRTRK command). +

+
blank

Cursor tracking is off.

+
t

Cursor tracking is on.

+
+

+
c

The state of the cursor visibility features +(see the +CSRVIS +and +CSRBLINK commands). +

+
blank

The cursor isn't visible, and won't blink when made visible.

+
b

The cursor isn't visible, and will blink when made visible.

+
v

The cursor is visible, and isn't blinking.

+
B

The cursor is visible, and is blinking.

+
+

+
m

The current display mode +(see the +DISPMD command). +

+
t

Screen content (text) is being displayed.

+
a

Screen highlighting (attributes) is being displayed.

+
+

+
f

The state of the frozen screen feature +(see the +FREEZE command). +

+
blank

The screen isn't frozen.

+
f

The screen is frozen.

+
+

+
d

The number of braille dots being used to display each character +(see the +SIXDOTS command). +

+
8

All eight dots are being used.

+
6

Only dots 1 through 6 are being used.

+
+

+
u

The state of the uppercase (capital letter) display features +(see the +CAPBLINK command). +

+
blank

Uppercase letters don't blink.

+
B

Uppercase letters blink.

+
+

+
+

+ +

Displays with 20 Cells or Less

+ +

Short pneumonics have been used, even though they're rather cryptic, +in order to show the precise column layout. +

+xxyys vt tcmfdu +
+ +
+
xx

The columns (counting from 1) on the screen corresponding +to the position of the cursor (shown in the top half of the cells) +and to the top-left corner of the braille window (shown in the bottom half of the cells).

+
yy

The rows (counting from 1) on the screen corresponding +to the position of the cursor (shown in the top half of the cells) +and to the top-left corner of the braille window (shown in the bottom half of the cells).

+
s

The settings of some of BRLTTY's features. +A feature is turned on if its corresponding dot is raised. +

+
Dot 1

Frozen screen image +(see the +FREEZE command).

+
Dot 2

Display attributes +(see the +DISPMD command).

+
Dot 3

Alert tunes +(see the +TUNES command).

+
Dot 4

Visible cursor +(see the +CSRVIS command).

+
Dot 5

Block cursor +(see the +CSRSIZE command).

+
Dot 6

Blinking cursor +(see the +CSRBLINK command).

+
Dot 7

Cursor tracking +(see the +CSRTRK command).

+
Dot 8

Sliding window +(see the +SLIDEWIN command).

+
+

+
vt

The number (counting from 1) of the current virtual terminal.

+
t

The state of the cursor tracking feature +(see the +CSRTRK command). +

+
blank

Cursor tracking is off.

+
t

Cursor tracking is on.

+
+

+
c

The state of the cursor visibility features +(see the +CSRVIS +and +CSRBLINK commands). +

+
blank

The cursor isn't visible, and won't blink when made visible.

+
b

The cursor isn't visible, and will blink when made visible.

+
v

The cursor is visible, and isn't blinking.

+
B

The cursor is visible, and is blinking.

+
+

+
m

The current display mode +(see the +DISPMD command). +

+
t

Screen content (text) is being displayed.

+
a

Screen highlighting (attributes) is being displayed.

+
+

+
f

The state of the frozen screen feature +(see the +FREEZE command). +

+
blank

The screen isn't frozen.

+
f

The screen is frozen.

+
+

+
d

The number of braille dots being used to display each character +(see the +SIXDOTS command). +

+
8

All eight dots are being used.

+
6

Only dots 1 through 6 are being used.

+
+

+
u

The state of the uppercase (capital letter) display features +(see the +CAPBLINK command). +

+
blank

Uppercase letters don't blink.

+
B

Uppercase letters blink.

+
+

+
+

+ +

5.7 Command Learn Mode +

+ +

Command learn mode is an interactive way to learn +what the keys on the braille display do. +It can be accessed +either by the +LEARN command +or via the +brltest utility. +This feature isn't available if the +--disable-learn-mode build option was specified.

+

When this mode is entered, +the message command learn mode is written to the braille display. +Then, as each key (or key combination) on the display is pressed, +a short message describing its BRLTTY function is written. +This mode exits immediately if the key (or key combination) +for the +LEARN command is pressed. +It exits automatically, and the message done is written, +if ten seconds elapse without any key on the display being pressed. +Note that some displays don't signal the driver +and/or some drivers don't signal BRLTTY +until all the keys are released.

+

If a message is longer than the braille display is wide, +then it's displayed in segments. +The length of each segment but the last is one less than the display's width, +with the rightmost character on the display being set to a minus sign. +Each such segment remains on the display +either for a few seconds +(see the +-M command line option) +or until any key on the display is pressed.

+ +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BRLTTY/English/BRLTTY-6.html b/Documents/Manual-BRLTTY/English/BRLTTY-6.html new file mode 100644 index 0000000000000000000000000000000000000000..38c6bcded018310a18bdc78dfe9bbad1b9619fd0 --- /dev/null +++ b/Documents/Manual-BRLTTY/English/BRLTTY-6.html @@ -0,0 +1,834 @@ + + + + + BRLTTY Reference Manual: Tables + + + + + +Next +Previous +Contents +
+

6. Tables

+ + + +

6.1 Text Tables +

+ +

Files with names of the form *.ttb are text tables, +and with names of the form *.tti are text subtables. +They are used by BRLTTY to translate the characters on the screen +into their corresponding 8-dot computer braille representations.

+

BRLTTY is initially configured to use the +North American Braille Computer Code +(NABCC) text table. +In addition to this default, +the following alternatives are provided: +

+
auto

locale-based autoselection

+
ar

Arabic (generic)

+
as

Assamese

+
awa

Awadhi

+
bg

Bulgarian

+
bh

Bihari

+
bn

Bengali

+
bo

Tibetan

+
bra

Braj

+
brf

for viewing .brf files within an editor or pager

+
cs

Czech

+
cy

Welsh

+
da

Danish

+
de

German

+
dra

Dravidian

+
el

Greek

+
en

English

+
en_CA

English (Canada)

+
en_UK

English (United Kingdom)

+
en_US

English (United States)

+
en-nabcc

English (North American Braille Computer Code)

+
eo

Esperanto

+
es

Spanish

+
et

Estonian

+
fi

Finnish

+
fr

French

+
fr_CA

French (Canada)

+
fr_FR

French (France)

+
fr-2007

French (unified)

+
fr-cbifs

French (Code Braille Informatique Français Standard)

+
ga

Irish

+
gd

Gaelic

+
gon

Gondi

+
gu

Gujarati

+
he

Hebrew

+
hi

Hindi

+
hr

Croatian

+
hu

Hungarian

+
hy

Armenian

+
is

Icelandic

+
it

Italian

+
kha

Khasi

+
kn

Kannada

+
kok

Konkani

+
kru

Kurukh

+
lt

Lituanian

+
lv

Latvian

+
mg

Malagasy

+
mi

Maori

+
ml

Malayalam

+
mni

Manipuri

+
mr

Marathi

+
mt

Maltese

+
mun

Mundari

+
mwr

Marwari

+
ne

Nepali

+
new

Newari

+
nl

Dutch

+
nl_BE

Dutch (Belgium)

+
nl_NL

Dutch (Netherlands)

+
no

Norwegian

+
no-generic

Norwegian (with support for other languages)

+
no-oub

Norwegian (Offentlig Utvalg for Blindeskrift)

+
nwc

Old Newari

+
or

Oriya

+
pa

Panjabi

+
pi

Pali

+
pl

Polish

+
pt

Portuguese

+
ro

Romanian

+
ru

Russian

+
sa

Sanskrit

+
sat

Santali

+
sd

Sindhi

+
sk

Slovak

+
sv

Swedish

+
sw

Swahili

+
ta

Tamil

+
te

Telugu

+
tr

Turkish

+
vi

Vietnamese

+
+ +See the +-t command line option, +the +text-table configuration file directive, +and the +--with-text-table build option +for details regarding how to use an alternate text table.

+ +

Text Table Format

+ +

A text table consists of a sequence of directives, one per line, +which define how each character is to be represented in braille. +UTF-8 character encoding must be used. +White-space (blanks, tabs) at the beginning of a line, +as well as before and/or after any operand of any directive, +is ignored. +Lines containing only white-space are ignored. +If the first non-white-space character of a line is "#" +then that line is a comment and is ignored.

+ +

Text Table Directives

+ +

The following directives are provided: +

+
char character dots # comment

Use the char directive to specify +how a Unicode character is to be represented in braille.

+

+

+
character

The Unicode character being defined. +It may be: +

    +
  • Any single character other than a backslash or a white-space character.
  • +
  • A backslash-prefixed special character. +These are: +
    +

    -

    +
    \b

    The backspace character. +-

    +
    \f

    The formfeed character. +-

    +
    \n

    The newline character. +-

    +
    \o###

    The three-digit octal representation of a character. +-

    +
    \r

    The carriage return character. +-

    +
    \s

    The space character. +-

    +
    \t

    The horizontal tab character. +-

    +
    \u####

    The four-digit hexadecimal representation of a character. +-

    +
    \U########

    The eight-digit hexadecimal representation of a character. +-

    +
    \v

    The vertical tab character. +-

    +
    \x##

    The two-digit hexadecimal representation of a character. +-

    +
    \X##

    ... (the case of the X and of the digits isn't significant) +-

    +
    \#

    A literal number sign. +-

    +
    \<name>

    The Unicode name of a character (use _ for space). +-

    +
    \\

    A literal backslash.

    +
    +
  • +
+

+
dots

The braille representation of the Unicode character. +It is a sequence of one to eight dot numbers. +If the dot number sequence is enclosed within parentheses +then the dot numbers may be separated from one another by white-space. +A dot number is a digit within the range 1-8 as defined by the +Standard Braille Dot Numbering Convention. +The special dot number 0 is recognized +when not enclosed within parentheses, +and means no dots; +it may not be used in conjunction with any other dot number.

+
+

+

Examples: +

    +
  • char a 1
  • +
  • char b (12)
  • +
  • char c ( 4 1 )
  • +
  • char \\ 12567
  • +
  • char \s 0
  • +
  • char \x20 ()
  • +
  • char \<LATIN_SMALL_LETTER_D> 145
  • +
+

+
byte byte dots # comment

Use the byte directive to specify how +a character in the local character set +is to be represented in braille. +It has been retained for backward compatibility but should not be used. +Unicode characters should be defined +(via the char directive) +so that the text table remains valid +regardless of what the local character set is.

+

+

+
byte

The local character being defined. +It may be specified in the same ways +as the character operand of the char directive +except that the Unicode-specific forms +(\u, \U, \<) +may not be used.

+
dots

The braille representation of the local character. +It may be specified in the same ways +as the dots operand of the char directive.

+
+

+
include file # comment

Use the include directive to include the content of a text subtable. +It is recursive, which means that +any text subtable can itself include yet another text subtable. +Care must be taken to ensure that an "include loop" is not created.

+

+

+
file

The file to be included. +It may be either a relative or an absolute path. +If relative, it is anchored at the directory containing the including file.

+
+

+
+

+ +

6.2 Attributes Tables +

+ +

Files with names of the form *.atb are attributes tables, +and with names of the form *.ati are attributes subtables. +They are used when BRLTTY +is displaying screen attributes rather than screen content +(see the +DISPMD command). +Each of the eight braille dots represents +one of the eight VGA attribute bits.

+

The following attributes tables are provided: +

+
attributes

The lefthand column represents the foreground colours: +

+
Dot 1

Red

+
Dot 2

Green

+
Dot 3

Blue

+
Dot 7

Bright

+
+ +The righthand column represents the background colours: +
+
Dot 4

Red

+
Dot 5

Green

+
Dot 6

Blue

+
Dot 8

Blink

+
+ +A dot is raised when its corresponding attribute bit is on. +This is the default attributes table +because it's the most intuitive. +One of its problems, though, is that it's difficult to discern +the difference between normal (white on black) +and reverse (black on white) video.

+
attrib

The lefthand column represents the foreground colours: +

+
Dot 1

Red

+
Dot 2

Green

+
Dot 3

Blue

+
Dot 7

Bright

+
+ +The righthand column represents the background colours: +
+
Dot 4

Red

+
Dot 5

Green

+
Dot 6

Blue

+
Dot 8

Blink

+
+ +A background bit being on triggers its corresponding dot, +whereas a foreground bit being off triggers its corresponding dot. +This unintuitive logic actually makes it easier +to read the most commonly used attribute combinations.

+
+ +See the +-a command line option, +the +attributes-table configuration file directive, +and the +--with-attributes-table build option +for details regarding how to use an alternate attributes table.

+ +

Attributes Table Format

+ +

An attributes table consists of a sequence of directives, one per line, +which define how combinations of VGA attributes +are to be represented in braille. +UTF-8 character encoding must be used. +White-space (blanks, tabs) at the beginning of a line, +as well as before and/or after any operand of any directive, +is ignored. +Lines containing only white-space are ignored. +If the first non-white-space character of a line is "#" +then that line is a comment and is ignored.

+ +

Attributes Table Directives

+ +

The following directives are provided: +

+
dot dot state # comment

Use the dot directive to specify +what a specific dot represents.

+

+

+
dot

The dot being defined. +It is a single digit within the range 1-8 as defined by the +Standard Braille Dot Numbering Convention.

+
state

What the dot represents. +It may be: +

+
=attribute

The dot is raised if the named attribute is on.

+
~attribute

The dot is raised if the named attribute is off.

+
+

+

The names of the attribute bits are: +

+
0X01

fg-blue

+
0X02

fg-green

+
0X04

fg-red

+
0X08

fg-bright

+
0X10

bg-blue

+
0X20

bg-green

+
0X40

bg-red

+
0X80

blink

+
+

+
+

+

Examples: +

    +
  • dot 1 =fg-red
  • +
  • dot 2 ~bg-blue
  • +
+

+
include file # comment

Use the include directive to include the content of an attributes subtable. +It is recursive, which means that +any attributes subtable can itself include yet another attributes subtable. +Care must be taken to ensure that an "include loop" is not created.

+

+

+
file

The file to be included. +It may be either a relative or an absolute path. +If relative, it is anchored at the directory containing the including file.

+
+

+
+

+ +

6.3 Contraction Tables +

+ +

Files with names of the form *.ctb are contraction tables, +and with names of the form *.cti are contraction subtables. +They are used by BRLTTY to translate character sequences on the screen +into their corresponding contracted braille representations.

+

BRLTTY presents contracted braille if: +

    +
  • A contraction table has been selected. +See the +-c command line option +and the +contraction-table configuration file directive +for details.
  • +
  • The 6-dot braille feature has been activated. +See the +SIXDOTS command +and the +Text Style preference +for details.
  • +
+ +This feature isn't available if the +--disable-contracted-braille build option was specified.

+

The following contraction tables are provided: +

+
af

Afrikaans (contracted)

+
am

Amharic (uncontracted)

+
de-basis

German (uncontracted)

+
de-kurzschrift

German (contracted - 1998 standard)

+
de-vollschrift

German (basic contractions)

+
en-ueb-g2

Unified English Braille (grade 2)

+
en-us-g2

American English (grade 2)

+
es

Spanish (grade 2)

+
fr-abrege

French (contracted)

+
fr-integral

French (uncontracted)

+
ha

Hausa (contracted)

+
id

Indonesian (contracted)

+
ja

Japanese (uncontracted)

+
ko-g1

Korean (grade 1)

+
ko-g2

Korean (grade 2)

+
ko

Korean (uncontracted)

+
mg

Malagasy (contracted)

+
mun

Munda (contracted)

+
nl

Dutch (contracted)

+
ny

Chichewa (contracted)

+
ipa

International Phonetic Alphabet

+
pt

Portuguese (grade 2)

+
si

Sinhalese (uncontracted)

+
sw

Swahili (contracted)

+
th

Thai (contracted)

+
zh-tw

Taiwanese Chinese (uncontracted)

+
zh-tw-ucb

Taiwanese Chinese (Unique Chinese Braille)

+
zu

Zulu (contracted)

+
+ +See the +-c command line option, +and the +contraction-table configuration file directive +for details regarding how to use a contraction table.

+ +

Contraction Table Format

+ +

A contraction table consists of a sequence of entries, one per line, +which define how character sequences are to be represented in braille. +UTF-8 character encoding must be used. +White-space (blanks, tabs) at the beginning of a line, +as well as before and/or after any operand, +is ignored. +Lines containing only white-space are ignored. +If the first non-white-space character of a line is "#" +then that line is a comment and is ignored.

+

The format of a contraction table entry is: +

+directive operand ... [comment] +
+ +Each directive has a specific number of operands. +Any text beyond the last operand of a directive is interpreted as a comment. +The order of the entries within a contraction table is, in general, +anything that is convenient for its maintainer(s). +An entry which defines an entity, e.g. class, +must precede all references to that entity.

+

Entries which match character sequences +are automatically rearranged from longest to shortest +so that longer matches are always preferred. +If more than one entry matches the same character sequence +then their original table ordering is maintained. +Thus, the same sequence may be translated differently under different circumstances.

+ +

Contraction Table Operands

+ +

+

+
characters

The first operand of a character sequence matching directive +is the character sequence to be matched. +Each character within the sequence may be: +

    +
  • Any single character other than a backslash or a white-space character.
  • +
  • A backslash-prefixed special character. +These are: +
    +

    -

    +
    \b

    The backspace character. +-

    +
    \f

    The formfeed character. +-

    +
    \n

    The newline character. +-

    +
    \o###

    The three-digit octal representation of a character. +-

    +
    \r

    The carriage return character. +-

    +
    \s

    The space character. +-

    +
    \t

    The horizontal tab character. +-

    +
    \u####

    The four-digit hexadecimal representation of a character. +-

    +
    \U########

    The eight-digit hexadecimal representation of a character. +-

    +
    \v

    The vertical tab character. +-

    +
    \x##

    The two-digit hexadecimal representation of a character. +-

    +
    \X##

    ... (the case of the X and of the digits isn't significant) +-

    +
    \#

    A literal number sign. +-

    +
    \<name>

    The Unicode name of a character (use _ for space). +-

    +
    \\

    A literal backslash.

    +
    +
  • +
+

+
representation

The second operand of those character sequence matching directives which have one +is the braille representation of the sequence. +Each braille cell is specified as a sequence of one to eight dot numbers. +A dot number is a digit within the range 1-8 as defined by the +Standard Braille Dot Numbering Convention. +The special dot number 0, +which may not be used in conjunction with any other dot number, +means no dots.

+
+

+ +

Opcodes

+ +

An opcode is a keyword which tells the translator how to interpret the operands. +The opcodes are grouped here by function.

+ +

Table Administration

+ +

These opcodes make it easier to write contraction tables. +They have no direct effect on the character translation. +

+
include path +

Include the contents of another file. +Nesting can be to any depth. +Relative paths are anchored at the directory of the including file.

+
locale locale +

Define the locale for character interpretation +(lowercase, uppercase, numeric, etc.). +The locale may be specified as: +

+
language[_country][.charset][@modifier]

The language component is required and should be a two-letter ISO-639 language code. +The country component is optional and should be a two-letter ISO-3166 country code. +The charset component is optional and should be a character set name, e.g. ISO-8859-1.

+
C

7-bit ASCII.

+
-

No locale.

+
+ +The last locale specification applies to the entire table. +If this opcode isn't used then the C locale is assumed.

+
+

+ +

Special Symbol Definition

+ +

These opcodes define special symbols which must be +inserted into the braille text in order to clarify it. +

+
capsign dots +

The symbol which capitalizes a single letter.

+
begcaps dots +

The symbol which begins a block of capital letters within a word.

+
endcaps dots +

The symbol which ends a block of capital letters within a word.

+
letsign dots +

The symbol which marks a letter which isn't part of a word.

+
numsign dots +

The symbol which marks the beginning of a number.

+
+

+ +

Character Translation

+ +

These opcodes define the braille representations for character sequences. +Each of them defines an entry within the contraction table. +These entries may be defined in any order except, as noted below, +when they define alternate representations for the same character sequence.

+

Each of these opcodes has +a characters operand (which must be specified as a string), +and a built-in condition governing its eligibility for use. +The text is processed strictly from left to right, character by character, +with the most eligible entry for each position being used. +If there's more than one eligible entry for a given position, +then the one with the longest character string is used. +If there's more than one eligible entry for the same character string, +then the one defined nearest to the beginning of the table is used +(this is the only order dependency).

+

Many of these opcodes have a dots operand +which defines the braille representation for its characters operand. +It may also be specified as an equals sign (=), +in which case it means one of two things. +If the entry is for a single character, +then it means that the currently selected computer braille representation +(see the +-t command line option +and the +text-table configuration file directive) +for that character is to be used. +If it's for a multi-character sequence, +then the default representation for each character +(see +always) +within the sequence is to be used.

+

Some special terms are used within the descriptions of these opcodes. +

+
word

A maximal sequence of one or more consecutive letters.

+
+

+

Now, finally, here are the opcode descriptions themselves: +

+
literal characters +

Translate the entire white-space-bounded containing character sequence into computer braille +(see the +-t command line option +and the +text-table configuration file directive).

+
replace characters characters +

Replace the first set of characters, no matter where they appear, with the second. +The replaced characters aren't reprocessed.

+
always characters dots +

Translate the characters no matter where they appear. +If there's only one character, then, in addition, +define the default representation for that character.

+
repeatable characters dots +

Translate the characters no matter where they appear. +Ignore any consecutive repetitions of the same sequence.

+
largesign characters dots +

Translate the characters no matter where they appear. +Remove white-space between consecutive words matched by this opcode.

+
lastlargesign characters dots +

Translate the characters no matter where they appear. +Remove preceding white-space if the previous word was matched by the +largesign opcode.

+
word characters dots +

Translate the characters if they're a word.

+
joinword characters dots +

Translate the characters if they're a word. +Remove the following white-space if the first character after it is a letter.

+
lowword characters dots +

Translate the characters if they're a white-space-bounded word.

+
contraction characters +

Prefix the characters with a letter sign +(see +letsign) +if they're a word.

+
sufword characters dots +

Translate the characters if they're either a word or at the beginning of a word.

+
prfword characters dots +

Translate the characters if they're either a word or at the end of a word.

+
begword characters dots +

Translate the characters if they're at the beginning of a word.

+
begmidword characters dots +

Translate the characters if they're either at the beginning or in the middle of a word.

+
midword characters dots +

Translate the characters if they're in the middle of a word.

+
midendword characters dots +

Translate the characters if they're either in the middle or at the end of a word.

+
endword characters dots +

Translate the characters if they're at the end of a word.

+
prepunc characters dots +

Translate the characters if they're part of punctuation at the beginning of a word.

+
postpunc characters dots +

Translate the characters if they're part of punctuation at the end of a word.

+
begnum characters dots +

Translate the characters if they're at the beginning of a number.

+
midnum characters dots +

Translate the characters if they're in the middle of a number.

+
endnum characters dots +

Translate the characters if they're at the end of a number.

+
+

+ +

Character Classes

+ +

These opcodes define and use character classes. +A character class associates a set of characters with a name. +The name then refers to any character within the class. +A character may belong to more than one class.

+

The following character classes are automatically predefined +basdd on the selected locale: +

+
digit

Numeric characters.

+
letter

Both uppercase and lowercase alphabetic characters. +Some locales have additional letters which are neither uppercase nor lowercase.

+
lowercase

Lowercase alphabetic characters.

+
punctuation

Printable characters which are neither white-space nor alphanumeric.

+
space

White-space characters. +In the default locale these are: +space, horizontal tab, vertical tab, carriage return, new line, form feed.

+
uppercase

Uppercase alphabetic characters.

+
+

+

The opcodes which define and use character classes are: +

+
class name characters +

Define a new character class. +The characters operand must be specified as a string. +A character class may not be used until it's been defined.

+
after class opcode ... +

The specified opcode is further constrained in that +the matched character sequence must be immediately preceded by +a character belonging to the specified class. +If this opcode is used more than once on the same line +then the union of the characters in all the classes is used.

+
before class opcode ... +

The specified opcode is further constrained in that +the matched character sequence must be immediately followed by +a character belonging to the specified class. +If this opcode is used more than once on the same line +then the union of the characters in all the classes is used.

+
+

+ +

6.4 Key Tables +

+ +

Files with names of the form *.ktb are key tables, +and with names of the form *.kti are key subtables. +They are used by BRLTTY to bind keyboard key combinations +to BRLTTY commands.

+

The following key tables are provided: +

+
desktop

bindings for full keyboards

+
keypad

bindings for keypad-based navigation

+
laptop

bindings for keyboards without a keypad

+
+ +See the +-k command line option, +and the +key-table configuration file directive +for details regarding how to use a key table.

+ +

Key Table Format

+ +

A key table consists of a sequence of directives, one per line, +which define what each key combination is to be bound to. +UTF-8 character encoding must be used. +White-space (blanks, tabs) at the beginning of a line, +as well as before and/or after any operand of any directive, +is ignored. +Lines containing only white-space are ignored. +If the first non-white-space character of a line is "#" +then that line is a comment and is ignored.

+ +

Key Table Directives

+ +

The following directives are provided: +

+
bind keys command # comment

Use the bind directive to bind a key combination to a command.

+

+

+
keys

The key combination to be bound. +It is a sequence of one or more key names +(see the file ktb_keynames.h within the Programs subdirectory of BRLTTY's source tree) +separated by plus (+) signs. +The initial keys are known as modifiers and may be pressed in any order. +The last key must be pressed while all the modifiers are being held.

+
command

The name of a BRLTTY command +(see section +Commands for details).

+

For the commands listed in section +Feature Activation: +

    +
  • If no modifier is appended +then the state of the feature is toggled.
  • +
  • If the modifier +on is appended +then the feature is turned on.
  • +
  • If the modifier +off is appended +then the feature is turned off.
  • +
+

+

For the commands listed in section +Character Commands: +The command acts on the character where the cursor is.

+

For the commands listed in section +Base Commands: +The modifier +n, +wehre n is a non-negative integer, +may be appended. +If this modifier isn't specified then 0 is assumed.

+
+

+

Examples: +

    +
  • bind CapsLock+Enter CsrTrk
  • +
  • bind CapsLock+O CsrTrk+off
  • +
  • bind CapsLock+P CsrTrk+on
  • +
  • bind KPInsert+1 GoToMark+1
  • +
+

+
include file # comment

Use the include directive to include the content of a key subtable. +It is recursive, which means that +any key subtable can itself include yet another key subtable. +Care must be taken to ensure that an "include loop" is not created.

+

+

+
file

The file to be included. +It may be either a relative or an absolute path. +If relative, it is anchored at the directory containing the including file.

+
+

+
+

+ +

Keyboard Properties

+ +

The default is that all keyboards are monitored. +A subset of the keyboards may be selected by specifying one or more of the following properties +(see the +-K command line option, +and the +keyboard-properties configuration file directive): +

+
type

The bus type, specified as one of the following keywords: +any, +ps2, +usb, +bluetooth.

+
vendor

The vendor identifier, specified as a 16-bit unsigned integer.

+
product

The product identifier, specified as a 16-bit unsigned integer.

+
+

+

The vendor and product identifiers may be specified in +decimal (no prefix), +octal (prefixed by 0), +or hexadecimal (prefixed by 0x). +Specifying 0 means match any value +(as if the property weren't specified).

+ +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BRLTTY/English/BRLTTY-7.html b/Documents/Manual-BRLTTY/English/BRLTTY-7.html new file mode 100644 index 0000000000000000000000000000000000000000..7e9bcca25f5bbbd7b2c6d653310657659e2ece76 --- /dev/null +++ b/Documents/Manual-BRLTTY/English/BRLTTY-7.html @@ -0,0 +1,189 @@ + + + + + BRLTTY Reference Manual: Advanced Topics + + + + + +Next +Previous +Contents +
+

7. Advanced Topics

+ + + +

7.1 Installing Multiple Versions +

+ +

It's easy to have more than one version of BRLTTY +installed on the same system at the same time. +This capability allows you to test a new version before removing the old one.

+

The +--with-execute-root build option allows you +to install the complete +installed file hierarchy +anywhere you want such that it's entirely self-contained. +Remembering that it's best to keep all of BRLTTY's components +within the root file system, you can build it like this: +

+
+./configure --with-execute-root=/brltty-3.1
+make install
+
+
+ +You can then run it like this: +
+/brltty-3.1/bin/brltty +
+ +When version 3.2 is released, just install it in a different location +and run the new executable from there. +
+
+./configure --with-execute-root=/brltty-3.2
+make install
+/brltty-3.2/bin/brltty
+
+
+

+

So far, this paradigm is somewhat awkward for at least two reasons. +One is that these long path names are too hard to type, +and the other is that you don't want to fiddle with your system's boot sequence +each time you want to switch to a different version of BRLTTY. +These problems are easily solved by adding a symbolic link for the executable. +

+ln -s /brltty-3.1/bin/brltty /bin/brltty +
+ +When it's time to switch to the newer version, just repoint the symbolc link. +
+ln -s /brltty-3.2/bin/brltty /bin/brltty +
+

+

If you'd like to get really fancy, then introduce another level of indirection +in order to make all of BRLTTY's files for any given version +look like they're in all of the standard places. +First, create a symbolic link through a common repointable location +from each of BRLTTY's standard locations. +

+
+ln -s /brltty/bin/brltty /bin/brltty
+ln -s /brltty/etc/brltty /etc/brltty
+ln -s /brltty/lib/brltty /lib/brltty
+
+
+ +Then all you need to do is to point /brltty to the desired version. +
+ln -s /brltty-3.1 /brltty +
+

+ +

7.2 Installation/Rescue Root Disks for Linux +

+ +

BRLTTY can run as a stand-alone executable. +Everything it needs to know can be explicitly configured at build-time +(see +Build Options). +If the data directory +(see the +--with-data-directory +and +--with-execute-root build options) +doesn't exist, then BRLTTY looks in /etc for the files it needs. +Even if any of these files don't exist at all, BRLTTY still works!

+

If, for some reason, you ever create the data directory +(usually /etc/brltty) by hand, it's important +to set its permissions so that only root can create files within it. +

+chmod 755 /etc/brltty +
+

+

The screen content inspection device (usually /dev/vcsa) is required. +It should already exist unless your Linux distribution is quite old. +If necessary, you can create it with: +

+
+mknod /dev/vcsa c 7 128
+chmod 660 /dev/vcsa
+chown root.tty /dev/vcsa
+
+
+

+

One problem often encountered when trying to use BRLTTY +in an uncertain environment like a root disk or an incomplete system is +that it might not find the shared libraries (or parts thereof) which it needs. +Root disks often use subset and/or outdated versions of the libraries +which may be inadequate. +The solution is to configure BRLTTY with the +--enable-standalone-programs build option. +This removes all dependencies on shared libraries, +but, unfortunately, also creates a larger executable. +There are a number of build options which can be used +to selectively remove unneeded features from BRLTTY +in order to somewhat mitigate this problem +(see section +Build Features).

+

The executable is stripped during the +make install. +This significantly reduces its size by removing its symbol table. +You'll get a much smaller executable, therefore, +if you complete the full build procedure, +and then copy it from its installed location. +If, however, you copy it from the build directory, it'll be way too big. +Don't forget to strip it. +

+strip brltty +
+

+ +

7.3 Future Enhancements +

+ +

Apart from fixing bugs and supporting more types of braille displays, +we hope, time permitting, to work on the following: +

+
Better Attribute Handling

+

    +
  • Attribute tracking.
  • +
  • Mixed text and attribute mode.
  • +
+

+
Scroll Tracking

Locking the braille window to one line as it scrolls on the screen.

+
Better Speech Support

+

    +
  • Mixed braille and speech for faster reading of text.
  • +
  • Better speech navigation.
  • +
  • More speech synthesizers.
  • +
+

+
Screen Subregions

Ignore cursor motion outside the region, +and set soft navigational boundaries at the edges of the region.

+
+ +See the file TODO for a more complete list.

+ +

7.4 Known Bugs +

+ +

At the time of writing (December 2001), the following problems are known:

+

Cursor routing is implemented as a looping sub-process +which runs at reduced priority to avoid using too much cpu time. +Different system loads require different settings of its parameters. +The defaults work very well +in a typical Unix editor on a fairly lightly loaded system, +but very poorly in some other situations, +e.g. over a slow serial link to a remote host.

+ +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BRLTTY/English/BRLTTY-8.html b/Documents/Manual-BRLTTY/English/BRLTTY-8.html new file mode 100644 index 0000000000000000000000000000000000000000..f427f33794d0aae787b46a4640540a29c100ad56 --- /dev/null +++ b/Documents/Manual-BRLTTY/English/BRLTTY-8.html @@ -0,0 +1,94 @@ + + + + + BRLTTY Reference Manual: Supported Braille Displays + + + + + +Next +Previous +Contents +
+

8. Supported Braille Displays

+ +

BRLTTY supports the following braille displays: +

+
+NameModels
+Albatross46/80
+AlvaABT (3nn)
+Delphi (4nn)
+Satellite (5nn)
+Braille System 40
+Braille Controller 640/680
+BaumInka
+Vario/RBT
+SuperVario/Brailliant
+PocketVario
+VarioPro
+EcoVario
+VarioConnect/BrailleConnect
+Refreshabraille
+BrailleLite18/40/M20/M40
+BrailleNote18/32
+BrlAPI
+CombiBraille25/45/85
+EcoBraille20/40/80
+EuroBrailleAzerBraille
+Clio
+Iris
+NoteBraille
+Scriba
+FreedomScientificFocus 44/70/84
+PAC Mate 20/40/80
+HandyTechModular 20/40/80
+Modular Evolution 64/88
+Braille Wave 40
+Easy Braille
+Braille Star 40/80
+Bookworm
+Braillino 20
+HIMSBraille Sense
+SyncBraille
+Libbraille
+LogText32
+MDVMB208/MB408L/MB408S (protocol 5)
+MiniBraille20
+MultiBrailleMB125CR/MB145CR/MB185CR
+PapenmeierCompact 486
+Compact/Tiny
+IB 80 CR Soft
+2D Lite (plus)
+2D Screen Soft
+EL 80
+EL 2D 40/66/80
+EL 40/66/70/80 S
+EL 2D 80 S
+EL 40 P
+EL 80 II
+Elba 20/32
+Trio 40/Elba20/Elba32
+Pegasus20/27/40/80
+Seika40
+TSINavigator 20/40/80
+PowerBraille 40/65/80
+TTYterminfo
+VideoBraille40
+VirtualTCP/Unix, client/server
+VisioBraille20/40
+Voyager44/70
+XWindowX11
+Windows
+
+

+

+ +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BRLTTY/English/BRLTTY-9.html b/Documents/Manual-BRLTTY/English/BRLTTY-9.html new file mode 100644 index 0000000000000000000000000000000000000000..3ab0bdbb1d1907fcd40fa1574ee0091fc520a3a7 --- /dev/null +++ b/Documents/Manual-BRLTTY/English/BRLTTY-9.html @@ -0,0 +1,41 @@ + + + + + BRLTTY Reference Manual: Supported Speech Synthesizers + + + + + +Next +Previous +Contents +
+

9. Supported Speech Synthesizers

+ +

BRLTTY supports the following speech synthesizers: +

+
+NameModels
+AlvaDelphi (4nn)
+BrailleLite
+CombiBraille
+ExternalSpeechruns /usr/local/bin/externalspeech
+Festivaltext to speech engine
+FestivalLitetext to speech engine
+GenericSaypipes to /usr/local/bin/say
+Mikropuhetext to speech engine
+Swifttext to speech engine
+Thetatext to speech engine
+ViaVoicetext to speech engine
+
+

+

+ +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BRLTTY/English/BRLTTY.html b/Documents/Manual-BRLTTY/English/BRLTTY.html new file mode 100644 index 0000000000000000000000000000000000000000..8eddaa738d4990b1030de6f807766099f14f2d00 --- /dev/null +++ b/Documents/Manual-BRLTTY/English/BRLTTY.html @@ -0,0 +1,145 @@ + + + + + BRLTTY Reference Manual + + + + + +Next +Previous +Contents +
+

BRLTTY Reference Manual

+ + +

Access to the Console Screen for Blind Persons using Refreshable Braille Displays +

+

Nikhil Nair +<nn201@cus.cam.ac.uk> +

+

Nicolas Pitre +<nico@cam.org> +

+

Stéphane Doyon +<s.doyon@videotron.ca> +

+

Dave Mielke +<dave@mielke.cc> +

Version 4.0, May 2009 + +
+ Copyright © 1995-2009 by The BRLTTY Developers. + BRLTTY is free software, + and comes with ABSOLUTELY NO WARRANTY. + It is placed under the terms of version 2 or later of + The GNU General Public License + as published by + The Free Software Foundation. + +
+

+

1. Formalities

+ + +

+

2. Introduction

+ + +

+

3. The Build Procedure

+ + +

+

4. Using BRLTTY

+ + +

+

5. Feature Descriptions

+ + +

+

6. Tables

+ + +

+

7. Advanced Topics

+ + +

Appendix

+

+

8. Supported Braille Displays

+ +

+

9. Supported Speech Synthesizers

+ +

+

10. Driver Identification Codes

+ +

+

11. Supported Screen Drivers

+ +

+

12. Operand Syntax

+ + +

+

13. Standard Braille Dot Numbering Convention

+ +

+

14. North American Braille Computer Code

+ +

+

15. MIDI Instrument Table

+ +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BRLTTY/English/BRLTTY.sgml b/Documents/Manual-BRLTTY/English/BRLTTY.sgml index 508d073c6bebfb9e5a636d93b6717fffeb8eb908..65741b1a8425dc40622ed766814a65b6ef1fe401 100644 --- a/Documents/Manual-BRLTTY/English/BRLTTY.sgml +++ b/Documents/Manual-BRLTTY/English/BRLTTY.sgml @@ -12,9 +12,9 @@ Stéphane Doyon Dave Mielke - Version 3.9, October 2007 + Version 4.0, May 2009 - Copyright © 1995-2008 by The BRLTTY Developers. + Copyright © 1995-2009 by The BRLTTY Developers. BRLTTY is free software, and comes with ABSOLUTELY NO WARRANTY. It is placed under the terms of version 2 or later of @@ -38,7 +38,7 @@ as published by . + for details). + Their names look like for details). + (see section for details). Their names look like for details). + Their names look like for details). + Their names look like . - for details). - Their names look like /var/lib/BrlAPI/ Local sockets for connecting to the Application Programming Interface. @@ -504,13 +514,12 @@ for any additional display-specific instructions. This is equivalent to specifying - Specify the default text translation table - (see section for details). + Specify the default text table + (see section for details). The absolute path to a table outside the source tree may be specified. - The , is assumed. @@ -520,10 +529,10 @@ for any additional display-specific instructions. This setting can be changed with the preference. - Specify the default attributes translation table - (see section for details). + Specify the default attributes table + (see section for details). The absolute path to a table outside the source tree may be specified. - The ). Reduce program size by excluding support for contracted braille - (see section ). + (see section ). Reduce program size by excluding support for USB devices. @@ -972,6 +981,12 @@ These options are primarily useful when building BRLTTY for use on a boot disk. Reduce program size by excluding support for character set conversion. + + Reduce program size by excluding support for + Unicode-based internationalization. + + Reduce program size by excluding support for + X11. Reduce program size by excluding support for the console tone generator. @@ -1193,7 +1208,7 @@ can be created in order to establish system defaults for such things as the location of the preferences file, the braille display driver to be used, the device to which the braille display is connected, -and the text translation table to be used. +and the text table to be used. Many options (see section for details) allow explicit run-time specification of such things as @@ -1673,22 +1688,19 @@ The following is written to standard output: Unprintable characters are written as blanks. -tbltest + Ajuste la quantité de ponctuation parlée. Elle peut être inijialisée à: + + All (toutes) + Some (certaines) + All (toutes) + + + Cette préférence n'est disponible que si vous utilisez + un pilote qui la supporte. Le réglage initial est Status Style Ce paramètre spécifie la façon dont les cellules de statut doivent être utilisées. Normalement, vous ne devriez pas avoir besoin de jouer avec ça. diff --git a/Documents/Manual-BRLTTY/French/Makefile.in b/Documents/Manual-BRLTTY/French/Makefile.in index bfa3a13bfea649b37ebc7f2e871d44e512839979..054bd8630e39544ad18492b14bbacc8439169d74 100644 --- a/Documents/Manual-BRLTTY/French/Makefile.in +++ b/Documents/Manual-BRLTTY/French/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/Documents/Manual-BRLTTY/French/html.made b/Documents/Manual-BRLTTY/French/html.made new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Documents/Manual-BrlAPI/English/BrlAPI-1.html b/Documents/Manual-BrlAPI/English/BrlAPI-1.html new file mode 100644 index 0000000000000000000000000000000000000000..fc41c9de45dba95e12782e27ea15db0b6a8961bf --- /dev/null +++ b/Documents/Manual-BrlAPI/English/BrlAPI-1.html @@ -0,0 +1,159 @@ + + + + + BrlAPI Reference manual: Introduction + + + + + +Next +Previous +Contents +
+

1. Introduction

+ +

BrlAPI is a service provided by the brltty daemon.

+

Its purpose is to allow programmers to write applications that take advantage +of a braille terminal in order to deliver a blind user suitable information +for his/her specific needs.

+

While an application communicates with the braille terminal, everything +brltty sends to the braille terminal in the application's console is +ignored, whereas each piece of data coming from the braille terminal is sent to +the application, rather than to brltty.

+ +

1.1 Concepts +

+ +

All throughout this manual, a few terms will be used which are either +specific to braille terminals, or introduced because of BrlAPI. They are defined +below. Taking a few minutes to go through this glossary will save a lot +of time and questions later.

+

+

+ +
Authorization key

A file containing arbitrary data, that has to be sent to the server by the +client, to prove it is allowed to establish a connection and then control +the braille terminal.

+ +
Braille display

The small screen on the braille terminal that is able to display braille text.

+ +
Braille keyboard

The keyboard of the braille terminal.

+ +
Braille terminal

A computer designed to display text in braille. In this case, the text is +supposed to come from another computer running Linux or any other Unix system.

+ +
Brltty

The background process that gives a blind person access to the console screen +thanks to a braille terminal or speech synthetizer.

+ +
Client

An application designed to handle a braille terminal thanks to BrlAPI.

+ +
Command

A code returned by the driver, indicating an action to do, for instance +"go to previous line", "go to next line", etc.

+ +
Driver

A library that has functions to communicate with a braille terminal. +Basically, a driver has functions to open communication with the +braille terminal, close the communication, write on the braille +display, and read keypresses from the braille keyboard, plus some special +functions that will be described in detail in this manual.

+ +
Key

A code that is returned by the driver when a key is pressed. This is +different from a command, because the command concept is driver-independent +(all drivers use the same command codes - those defined by brltty), whereas +codes used for returning keypresses may vary between drivers.

+ +
BrlAPI's Library

This library helps clients to connect and use BrlAPI's +server thanks to a series of brlapi_-prefixed functions.

+ +
Packet

A sequence of bytes making up the atomic unit in communications, either between +braille drivers and braille terminals or between the server and clients.

+ +
Raw mode

Mode in which the client application exchanges packets with the driver. +Normal operations like sending text for display or reading keypresses are +not available in this mode. It lets applications take advantage of advanced +functionalities of the driver's communication protocol.

+ +
Server

The part of brltty that controls incoming connections and communication +between clients and braille drivers.

+ +
Suspend mode

Mode in which the server keeps the device driver closed, so that the client +can connect directly to the device.

+ +
Tty

Synonym for console, terminal, ... Linux' console consist of several Virtual +Ttys (VTs). The screen program's windows also are Ttys. X-window system's +xterms emulate Ttys as well.

+ +
+

+ +

1.2 How to read this manual +

+ +

This manual is split in five parts.

+

+

+ +
+General description

Describes more precisely what BrlAPI +is and how it works in collaboration with brltty's core, the braille driver +and clients. In this part, a "connection-use-disconnection" scenario +will be described step by step, explaining for each step what BrlAPI does in +reaction to client instructions. These explanations will take place at a +user level.

+ +
+Concurrency management

This part explains how concurrency between BrlAPI clients is handled +thanks to focus tellers.

+ +
+Installation and configuration

This part explains in detail how to install and configure the API. For +instructions on how to install and configure brltty, please report to +the brltty documentation.

+ +
+Library description

This part describes how client applications +can communicate with the server using the BrlAPI library that +comes with brltty. Each function will be briefly described, +classified by categories. More exhaustive descriptions of every +function are available in the corresponding online manual pages.

+ +
+Writing braille drivers

This part describes how the braille drivers included in brltty should be +written in order to take advantage of BrlAPI's services.

+ +
+Protocol reference

This part describes in detail the communication +protocol that is used to communicate between server and clients.

+ +
+

+

What should be read probably depends on what should be done by applications with +BrlAPI.

+

Reading chapters +General description, +Concurrency management and +Installation and configuration is recommended, since they provide +useful information and (hopefully) lead to a good understanding of BrlAPI, +for an efficient use.

+

Chapter +Library description concerns writing +applications that take advantage of braille terminals so as to bring specific +(and more useful) information to blind people.

+

Chapter +Drivers is for braille driver implementation: either adding a braille driver +to brltty or modifying an existing one so that it can benefit from +BrlAPI's features, this chapter will be of interest, since it describes +exactly what is needed to write a driver for brltty: the core +of drivers interface for instance.

+

Finally, chapter +Protocol reference is for not using the library, but using the BrlAPI +server directly, when the library might not be sufficient: it describes the +underlying protocol that will have to be used to do so.

+ +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BrlAPI/English/BrlAPI-2.html b/Documents/Manual-BrlAPI/English/BrlAPI-2.html new file mode 100644 index 0000000000000000000000000000000000000000..dd2e67a5d06114dad5650bacb8f9ed63c96a5fae --- /dev/null +++ b/Documents/Manual-BrlAPI/English/BrlAPI-2.html @@ -0,0 +1,207 @@ + + + + + BrlAPI Reference manual: General description of BrlAPI + + + + + +Next +Previous +Contents +
+

2. General description of BrlAPI

+ +

Here is explained what BrlAPI is, and what it precisely does. +These explanations should be simple enough to be accessible to every user. +For a more technical review of BrlAPI's functionalities, please see chapter +Libary description.

+ +

2.1 Historical notes. +

+ +

Originally, brltty was designed to give access to the Linux +console to visually impaired people, through a braille terminal +or a speech synthetizer. At that time, applications running in the +console were not taking care of the presence of a braille +terminal (most applications didn't even know what a braille +terminal was).

+

This situation where applications are not aware of the presence of a +special device is elegant of course, since it lets use an +unlimited number of applications which don't need to be specially +designed for visually impaired people.

+

However, it appeared that applications specially designed to take +advantage of a braille terminal could be wanted, to +provide the suitable information to blind users, for instance. +The idea of BrlAPI is to propose an efficient communication +mechanism, to control the braille display, read keys from the +braille keyboard, or to exchange data with the braille terminal at +a lower level (e.g. to write file transfer protocols between +braille terminals and Linux systems).

+ +

2.2 Why BrlAPI is part of brltty. +

+ +

Instead of rewriting a whole communication program from +scratch, we chose to add communication +mechanisms to brltty. This choice has two main justifications.

+

On the one hand, integration to brltty allows us to use the +increasing number of drivers written for brltty, thus handling +a large number of braille terminals without having to rewrite any +piece of existing code.

+

On the other hand, if an application chooses to send its own +information to the braille display, and to process braille keys, +brltty has to be warned, so that it won't try to communicate +with the braille terminal while the application already does. +To make this synchronzation between brltty +and client applications possible, it seemed easier to add the +communication mechanisms to brltty's core, instead of writing an +external program providing them.

+ +

2.3 How it works. +

+ +

We are now going to describe the steps an application should +go through to get control of the braille terminal, and what +happens on brltty's side at each step. This step-by-step +description will let us introduce more precisely some +concepts that are useful for every BrlAPI user.

+ +

Connection.

+ +

The first thing any client application has to do is to +connect (in the Unix sense of the word) to BrlAPI which is +an mere application server. If this is not +clear, the only thing to be remembered is that this +step allows the client application to let the server know about its +presence. At this stage, nothing special is done on brltty's +side.

+ +

Authorization.

+ +

Since Unix is designed to allow many users to work on the +same machine, it's quite possible that there are more than one +user accounts on the system. Most probably, one doesn't want +any user with an account on the machine to be able to communicate +with the braille terminal (just imagine what would happen if, +while somebody was working with the braille terminal, another user +connected to the system began to communicate with it, +preventing the first one from doing his job...). That's why BrlAPI has to +provide a way to determine whether a user who established a +connection is really allowed to communicate with the braille +terminal. To achieve this, BrlAPI requires that each +application that wants to control a braille terminal sends an +authorization key before doing anything else. The control of +the braille terminal will only be possible for the client once +it has sent the proper authorization key. What is called +authorization key is in fact a Unix file containing data (it +must be non-empty) on your system. All the things you have to do is to give +read permissions on this file to users that are allowed to +communicate with the braille terminal, and only to them. This +way, only authorized users will have access to the +authorization key and then be able to send it to BrlAPI. +To see how to do that, please see chapter +Installation and configuration.

+

At the end of this step, the user is authorized to take +control of the braille terminal. On brltty's side, some data +structures are allocated to store information on the client, +but this has no user-level side-effect.

+ +

Real use of the braille terminal.

+ +

Once the client is properly connected and authorized, +there are two possible types of communication with the braille +terminal. The chosen type of communication depends on what the +client plans to do. If its purpose is to display information on +the braille display or to process braille keys, it will have to +take control of the Linux tty on which it is running. If its +purpose is to exchange data with the braille terminal (e.g. for +file transfer), it will enter what is called "raw mode".

+ +

Braille display and braille key presses processing.

+ +

If the client wants to display something on the braille +display or to process braille keys itself, rather than letting +brltty process them, it has to take control of the Linux +terminal it is running on.

+

Once a client has obtained the control of his tty, BrlAPI +will completely discard brltty's display on this tty (and only +this one), leaving the braille display free for the client.

+

At the same time, if a key is pressed on the braille +keyboard, BrlAPI checks whether the client application is +interested in this key or not. If it is, the key is passed to +it, either as a key code or as a brltty command. If it is not, the +key code is converted into a brltty command and returned to +brltty.

+

Once the client is not interested in displaying text +or reading braille keys any more, it has to leave the tty, so +that either brltty can continue its job, or another client can +take control of it.

+ +

Raw mode.

+ +

Only one client can be in raw mode at the same time. In +this mode, data coming from the braille terminal are checked +by the driver (to ensure they are valid), but instead of being processed, +they are delivered "as-is" to the client that is in raw mode.

+

In the other direction, packets sent to BrlAPI by the +client that is in raw mode are passed to the driver which is +expected to deliver them to the braille terminal without any +modification.

+ +

Suspend Mode.

+ +

Only one client can be in suspend mode at the same time. This mode is also +exclusive with raw mode. In this mode, the server keeps the device driver +closed, and thus the client can open the device directly by itself.

+ +

This mode is not recommended, since the client will then have to +reimplement device access. Raw mode should really be preferred, since it lets +the client take advantage of server's ability to talk with the device +(USB/bluetooth support for instance).

+ +

Remarks.

+ + +

+

    +
  • The operations described in the three previous +subsections are not completely mutually exclusive. An +application that controls its current tty can enter raw or suspend +mode, provided that no other application already is in this +mode. +
  • +
  • Not every braille driver supports raw mode. It has +to be specially (re)written to support it, since it has +to provide special functions to process incoming and outgoing +packets. The same restriction is true (but less strong) +concerning the ability to deliver/convert keycodes into +commands: not every driver has this ability, it has to be +modified to get it. +
  • +
  • Operations previously described can be repeated. +You can, for instance, use raw mode to transfer data onto +your braille terminal, display text in braille, return to raw +mode..., all that without having to reconnect to BrlAPI before +each operation. +
  • +
+

+ +

Disconnection.

+ +

Once the client has finished using the braille terminal, it +has to disconnect from the API, so that the memory structures +allocated for the connection can be freed and eventually used by +another client. This step is transparent for the user, in the +sense that it involves no change on the braille display.

+ + +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BrlAPI/English/BrlAPI-3.html b/Documents/Manual-BrlAPI/English/BrlAPI-3.html new file mode 100644 index 0000000000000000000000000000000000000000..23493c6ee9f2aae13f447b96171992cdfb39ad14 --- /dev/null +++ b/Documents/Manual-BrlAPI/English/BrlAPI-3.html @@ -0,0 +1,189 @@ + + + + + BrlAPI Reference manual: Concurrency management between BrlAPI clients + + + + + +Next +Previous +Contents +
+

3. Concurrency management between BrlAPI clients

+ +

An essential purpose of BrlAPI is to manage concurrent access to the +braille display between the brltty daemon and applications. This +concurrency is managed "per Tty". We first describe this with a flat view, and +then consider Tty hierarchy.

+ +

3.1 VT switching +

+ +

Let's first describe how things work with the simple case of a single series of +Virtual Ttys (VTs), the linux console for instance.

+ +

As described in +General Description, before being able +to write output, a BrlAPI client has to "get" a tty, i.e. it sends to the +BrlAPI server the number of the linux' Virtual Tty on which it is running. +The BrlAPI server uses this information so as to know which client's output +should be shown on the braille display, according to the focus teller's +information.

+ +

Let's say some client A is running on VT 2. It "got" VT 2 and wrote some +output on its BrlAPI connection. The focus teller is brltty here: it +always tells to the BrlAPI server which VT is currently shown on the screen +and gets usual keyboard presses (it is "active").

+ +

Let's say VT 1 is active, then the BrlAPI server shows brltty's output +on the braille display. I.e. the usual brltty screen reading appears. +Moreover, when braille keys are pressed, they are passed to brltty, so that +usual screen reading can be performed. When the user switches to VT 2, +brltty (as focus teller) tells it to the BrlAPI server, which then +remembers that client A has got it and has produced some output. The +server then displays this output on the braille display. Note that A +doesn't need to re-submit its output: the server had recorded it so as to be +able to show it as soon as the focus switches to VT 2. Whenever some key of the +braille device is pressed, BrlAPI looks whether it is in the list of keys +that client A said to be of his interest. If it is, it is passed to A +(and not to brltty). If it isn't, it is passed to brltty (and not to +A).

+ +

As a consequence, whenever clients get and release Ttys and the user switches +between Ttys, either the brltty screen reading or the client's output is +automatically shown according to rather natural rules.

+ +

3.2 A pile of "paper sheets" +

+ +

Let's look at VT 2 by itself. What is shown on the braille display can be seen +as the result of a pile of two paper sheets. brltty is represented by the +bottom sheet on which its screen reading is written, and client A by the +top sheet on which its output is written. A's sheet hence "covers" +brltty's sheet: A's output "mask" brltty's screen reading.

+ +

A may yet want to temporarily let brltty's screen reading appear on VT +2, while still receiving some key presses, for instance. For this, it sends a +"void" write. The server then clears the recorded output for this connection +(in the sheet representation, the sheet becomes "transparent"). As a +consequence, brltty's output is automatically shown (by transparency in the +sheet representation), just like if A had released the Tty.

+ +

Keypresses are handled in a similar way: A's desire to get key presses is +satisfied first before brltty.

+ +

Let's say some other client B (probably launched by A) also gets VT 2 +and outputs some text on its BrlAPI connection. This adds a third sheet, +on top of the two previous ones. It means that the BrlAPI server will show +B's output on the braille device. If A then outputs some text, the +server will record it (on A's sheet which hence becomes opaque again), but +it won't be displayed on the braille device, since B's sheet is still at +the top and opaque (i.e. with some text on it). But if B issues a void +write, the server clears its ouput buffer (i.e. B's sheet becomes +transparent), and as a result A's output appear on the braille display (by +transparency through B's sheet).

+ +

The sheet order is determined by the Tty "get"ting order. Some mecanism will be +added in near future for clients to precise "at which level its sheet should be +inserted" so as to avoid race conditions on the "get"ting order.

+ +

3.3 Hierarchy +

+ +

Now, what happens when running some screen program on, say, VT 3? It +emulates a series of Ttys, whose output actually appear on the same VT 3. +That's where a hierarchy level appears: the focus information is not only the VT +number but also, in the case of VT 3, which screen window is active. This +hence forms a tree of Ttys: the "root" being the vga driver's output, whose +sons are VTs, and VT 3 has the screen windows as sons. Brltty is a +focus teller for the root, screen will have to be a focus teller for VT 3. +Screen should then get VT 3, not display anything (so that the usual +brltty screen reading will be shown by transparency), and tell the +BrlAPI server which screen window is active (at startup and at each +window switch). This is not implemented directly in screen yet, but this +may be achieved via a second brltty daemon running the Screen driver (but +it isn't yet able to get the current window number though) and the BrlAPI +driver.

+ +

A BrlAPI client C running in some screen window number 1 would +then have to get the Tty path "VT 3 then window 1", which is merely expressed +as "3 1". The window number is available in the WINDOW environment +variable, set by screen. The VT number, which actually represents the "path +to screen's output" should be available in the WINDOWPATH environment +variable, also set by screen. The client can thus merely concatenate the +content of WINDOWPATH (which could hold many levels of window numbers) and +of WINDOW and give the result as tty path to the BrlAPI server, which +then knows precisely where the client's usual output resides. In practice, +applications just need to call brlapi_enterTtyMode(BRLAPI_TTY_DEFAULT), and +the the BrlAPI client library will automatically perform all that.

+ +

Whenever the user switches to VT 3, the BrlAPI server remembers the window +that screen told to be active. If it was window 1, it then displays +C's output (if any). Else brltty's usual screen reading is shown. +Of course, several clients may be run in window 1 as well, and the "sheet pile" +mecanism applies: brltty's sheet first (at the root of the Ttys tree), then +screen's sheet (which is transparent, on VT 3), then C's sheet (on +window 1 of VT 3), then other clients' sheets (on the same window).

+ +

Ttys are hence organized in a tree, each client adding its sheet at some tty in +the tree.

+ +

3.4 The X-window case +

+ +

Let's say some X server is running on VT 7 of a Linux system. Xorg's xinit +and xdm commands automatically set the X session's WINDOWPATH +environment variable to "7", so that X11 BrlAPI clients started from +the session just need to call brlapi_enterTtyMode(xid) where xid +is the X-window ID of the window of the client. The BrlAPI library +will automatically prepend the content of WINDOWPATH to it.

+ +

For text-based BrlAPI clients running in an xterm (which should just call +brlapi_enterTtyMode(BRLAPI_TTY_DEFAULT) as explained in the previous +section), BrlAPI detects the window id thanks to the WINDOWID variable +set by xterm.

+ +

Screen readers are not bound to a particular window, so they should call +brlapi_enterTtyModeWithPath(NULL, 0) to let the BrlAPI library only +send the content of WINDOWPATH, expressing that screen readers take the +whole tty. The user should notably launch xbrlapi, which is a focus +teller for X-window as well as a keyboard simulator (brltty can't reliably +simulate them at the kernel level in such situation). For accessing AT-SPI +contents (like gnome or kde applications), Orca should also be launched. For +accessing AT-SPI terminals (like gnome-terminal) in the same way as in the +console, a second brltty daemon running the at-spi screen driver and the +BrlAPI driver can also be launched. All three would get the VT of the +X session, in that order (for now): xbrlapi first, then orca and +brltty at last. When the X focus is on an AT-SPI terminal, brltty +will hence be able to grab the braille display and key presses. Else orca +would get them. And xbrlapi would finally get remaining key presses and +simulate them.

+ +

Note: old versions of xinit, xdm, kdm or gdm do not +automatically set the WINDOWPATH variable. The user can set it by hand in +his ~/.xsession, ~/.xinitrc, ~/.gdmrc... to "7"

+ +

Note: some Operating Systems like Solaris do not have VTs. In that case +WINDOWPATH is empty or not even set. Everything explained above still +work fine.

+ +

3.5 Detaching +

+ +

Several programs allow detaching: screen and VNC for instance. In such +situation, an intermediate BrlAPI server should be run for each such +session. Clients would connect to it, and it would prepend the "current tty" +path on the fly while forwarding things to the root BrlAPI server. This +intermediate server is yet to be written (but it is actually relatively close to +be).

+ + +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BrlAPI/English/BrlAPI-4.html b/Documents/Manual-BrlAPI/English/BrlAPI-4.html new file mode 100644 index 0000000000000000000000000000000000000000..4180de3cc92a93f647a18467443b70264a624566 --- /dev/null +++ b/Documents/Manual-BrlAPI/English/BrlAPI-4.html @@ -0,0 +1,44 @@ + + + + + BrlAPI Reference manual: Installation and configuration of BrlAPI + + + + + +Next +Previous +Contents +
+

4. Installation and configuration of BrlAPI

+ +

make install will install libbrlapi.so in /lib, and include files in +/usr/include/brltty. An authorization key will also typically be set in +/etc/brlapi.key (if it is not, just create it and put arbitrary data in it), but +it won't be readable by anybody else than root. It is up +to you to define a group of users who will have the right to read it and hence +be able to connect to the server. For instance, you may want to do:

+

+

+
+
+# addgroup brlapi
+# chgrp brlapi /etc/brlapi.key
+# chmod g+r /etc/brlapi.key
+# addgroup user1 brlapi
+# addgroup user2 brlapi
+...
+
+
+
+

+ + +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BrlAPI/English/BrlAPI-5.html b/Documents/Manual-BrlAPI/English/BrlAPI-5.html new file mode 100644 index 0000000000000000000000000000000000000000..d03eb03b803d05a751fdf28d56748ca9667715cd --- /dev/null +++ b/Documents/Manual-BrlAPI/English/BrlAPI-5.html @@ -0,0 +1,398 @@ + + + + + BrlAPI Reference manual: Library description + + + + + +Next +Previous +Contents +
+

5. Library description

+ +

Let's now see how one can write dedicated applications. Basic notions will be +seen, along with a very simple client. Greater details are given as online +manual pages.

+ + +

The historical test program for BrlAPI was something like: +

    +
  • connect to BrlAPI
  • +
  • get driver id
  • +
  • get driver name
  • +
  • get display size
  • +
  • try entering raw mode, immediately leave raw mode.
  • +
  • get tty control
  • +
  • write something on the display
  • +
  • wait for a key press
  • +
  • leave tty control
  • +
  • disconnect from BrlAPI
  • +
+

+

It is here rewritten, its working briefly explained.

+ +

5.1 Connecting to BrlAPI +

+ +

Connection to BrlAPI is needed first, thanks to the +brlapi_openConnection call. For this, a +brlapi_connectionSettings_t variable must be filled which will hold the +settings the library needs to connect to the server. Just giving NULL +will work for local use. The other parameter lets you get back the parameters +which were actually used to initialize connection. NULL will also be nice +for now.

+

+

+
+
+  if (brlapi_openConnection(NULL, NULL)<0) {
+    brlapi_perror("brlapi_openConnection");
+    exit(1);
+  }
+
+
+
+

+

The connection might fail, so testing is needed.

+ +

5.2 Getting driver name +

+ +

Knowing the type of the braille device might be useful:

+

+

+
+
+  char name[BRLAPI_MAXNAMELENGTH+1];
+  if (brlapi_getDriverName(name, sizeof(name)) < 0)
+    brlapi_perror("brlapi_getDriverName");
+  else
+    fprintf(stderr, "Driver name: %s\n", name);
+
+
+
+

+

This is particularly useful before entering raw mode to achieve file +transfers for instance, just to check that the device is really the one +expected.

+ +

5.3 Getting display size +

+ +

Before writing on the braille display, the size should be always first +checked to be sure everything will hold on it:

+

+

+
+
+  if (brlapi_getDisplaySize(&x, &y) < 0)
+    brlapi_perror("brlapi_getDisplaySize");
+  else
+    fprintf(stderr, "Braille display has %d line%s of %d column%s\n",
+      y, y>1?"s":"", x, x>1?"s":"");
+
+
+
+

+ +

5.4 Entering raw mode, immediately leaving raw mode. +

+ +

Entering raw mode is very simple:

+

+

+
+
+  fprintf(stderr, "Trying to enter in raw mode... ");
+  if (brlapi_enterRawMode(name) < 0)
+    brlapi_perror("brlapi_enterRawMode");
+  else {
+    fprintf(stderr, "Ok, leaving raw mode immediately\n");
+    brlapi_leaveRawMode();
+  }
+
+
+
+

+

Not every driver supports raw mode, so testing is needed.

+

While in raw mode, brlapi_sendRaw and brlapi_recvRaw +can be used to send and get data directly to and from the device. +It should be used with care, improper use might completely thrash the device!

+ +

5.5 Getting tty control +

+ +

Let's now display something on the device. control of the tty must be get +first:

+

+

+
+
+  fprintf(stderr, "Taking control of the tty... ");
+  if (brlapi_enterTtyMode(BRLAPI_TTY_DEFAULT, NULL) >= 0)
+  {
+    fprintf(stderr, "Ok\n");
+
+
+
+

+

The first parameter tells the server the number of the tty to take +control of. Setting BRLAPI_TTY_DEFAULT lets the library determine it for us.

+ +

The server is asked to send brltty commands, which are device-independent.

+ +

Getting control might fail if, for instance, another application already took +control of this tty, so testing is needed.

+ +

From now on, the braille display is detached from the screen.

+ +

5.6 Writing something on the display +

+ +

The application can now write things on the braille display without +altering the screen display:

+

+

+
+
+    fprintf(stderr, "Writing to braille display... ");
+    if (brlapi_writeText(0, "Press a braille key to continue...") >= 0)
+    {
+      fprintf(stderr, "Ok\n");
+
+
+
+

+

The cursor is also asked not to be shown: its position is set to 0.

+ +

"Writing to braille display... Ok" is now displayed on the screen, and +"Press a braille key to continue..." on the braille display.

+ +

5.7 Waiting for a key press +

+ +

To have a break for the user to be able to read these messages, +a key press (a command here, which is driver-independent) may be waited for:

+

+

+
+
+      fprintf(stderr, "Waiting until a braille key is pressed to continue... ");
+      if (brlapi_readKey(1, &key) > 0)
+        fprintf(stderr, "got it! (code=%"BRLAPI_PRIxKEYCODE")\n", key);
+
+
+
+

+

The command is returned, as described in <brlapi_constants.h> +and <brlapi_keycodes.h>. +It is not transmitted to brltty: it is up to the application to define +the behavior, here cleanly exitting, as described below.

+

The first parameter tells the lib to block until a key press is indeed read.

+ +

5.8 Understanding commands +

+ +

There are two kinds of commands: braille commands (line up/down, top/bottom, +etc.) and X Keysyms (i.e. regular keyboard keys). One way to discover which key +was pressed is to just use a switch statement:

+

+

+
+
+        switch(key) {
+          case BRLAPI_KEY_TYPE_CMD|BRLAPI_KEY_CMD_LNUP:
+            fprintf(stderr, "line up\n");
+            break;
+          case BRLAPI_KEY_TYPE_CMD|BRLAPI_KEY_CMD_LNDN:
+            fprintf(stderr, "line down\n");
+            break;
+          case BRLAPI_KEY_TYPE_SYM|XK_Tab:
+            fprintf(stderr, "tab\n");
+            break;
+          default:
+            fprintf(stderr, "unknown key\n");
+            break;
+        }
+
+
+
+

+

Another way is to ask BrlAPI to expand the keycode into separate information +parts:

+

+

+
+
+        brlapi_expandedKeyCode_t ekey;
+        brlapi_expandKeyCode(key, &ekey);
+        fprintf(stderr, "type %u, command %u, argument %u, flags %u\n",
+          ekey.type, ekey.command, ekey.argument, ekey.flags);
+
+
+
+

+

Eventually, named equivalents are provided:

+

+

+
+
+        brlapi_describedKeyCode_t dkey;
+        int i;
+
+        brlapi_describeKeyCode(key, &dkey);
+        fprintf(stderr, "type %s, command %s, argument %u, flags",
+          dkey.type, dkey.command, dkey.argument);
+        for (i = 0; i < dkey.flags; i++)
+          fprintf(stderr, " %s", dkey.flag[i]);
+        fprintf(stderr, "\n");
+
+
+
+

+ +

5.9 Leaving tty control +

+ +

Let's now leave the tty:

+

+

+
+
+    fprintf(stderr, "Leaving tty... ");
+    if (brlapi_leaveTtyMode() >= 0)
+      fprintf(stderr, "Ok\n");
+
+
+
+

+

But control of another tty can still be get for instance, by calling +brlapi_enterTtyMode() again...

+ +

5.10 Disconnecting from BrlAPI +

+ +

Let's disconnect from BrlAPI:

+

+

+
+
+  brlapi_closeConnection();
+
+
+
+

+

The application can as well still need to connect to another server on another +computer for instance, by calling brlapi_openConnection() +again...

+ +

5.11 Putting everything together... +

+ +

+

+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <brlapi.h>
+
+int main()
+{
+  brlapi_keyCode_t key;
+  char name[BRLAPI_MAXNAMELENGTH+1];
+  unsigned int x, y;
+
+/* Connect to BrlAPI */
+  if (brlapi_openConnection(NULL, NULL)<0)
+  {
+    brlapi_perror("brlapi_openConnection");
+    exit(1);
+  }
+
+/* Get driver name */
+  if (brlapi_getDriverName(name, sizeof(name)) < 0)
+    brlapi_perror("brlapi_getDriverName");
+  else
+    fprintf(stderr, "Driver name: %s\n", name);
+
+/* Get display size */
+  if (brlapi_getDisplaySize(&x, &y) < 0)
+    brlapi_perror("brlapi_getDisplaySize");
+  else
+    fprintf(stderr, "Braille display has %d line%s of %d column%s\n",
+      y, y>1?"s":"", x, x>1?"s":"");
+
+/* Try entering raw mode, immediately go out from raw mode */
+  fprintf(stderr, "Trying to enter in raw mode... ");
+  if (brlapi_enterRawMode(name) < 0)
+    brlapi_perror("brlapi_enterRawMode");
+  else {
+    fprintf(stderr, "Ok, leaving raw mode immediately\n");
+    brlapi_leaveRawMode();
+  }
+
+/* Get tty control */
+  fprintf(stderr, "Taking control of the tty... ");
+  if (brlapi_enterTtyMode(BRLAPI_TTY_DEFAULT, NULL) >= 0)
+  {
+    fprintf(stderr, "Ok\n");
+
+/* Write something on the display */
+    fprintf(stderr, "Writing to braille display... ");
+    if (brlapi_writeText(0, "Press a braille key to continue...") >= 0)
+    {
+      fprintf(stderr, "Ok\n");
+
+/* Wait for a key press */
+      fprintf(stderr, "Waiting until a braille key is pressed to continue... ");
+      if (brlapi_readKey(1, &key) > 0) {
+        brlapi_expandedKeyCode_t ekey;
+        brlapi_describedKeyCode_t dkey;
+        int i;
+
+        fprintf(stderr, "got it! (code=%"BRLAPI_PRIxKEYCODE")\n", key);
+
+        brlapi_expandKeyCode(key, &ekey);
+        fprintf(stderr, "type %u, command %u, argument %u, flags %u\n",
+          ekey.type, ekey.command, ekey.argument, ekey.flags);
+
+        brlapi_describeKeyCode(key, &dkey);
+        fprintf(stderr, "type %s, command %s, argument %u, flags",
+          dkey.type, dkey.command, dkey.argument);
+        for (i = 0; i < dkey.flags; i++)
+          fprintf(stderr, " %s", dkey.flag[i]);
+        fprintf(stderr, "\n");
+      } else brlapi_perror("brlapi_readKey");
+
+    } else brlapi_perror("brlapi_writeText");
+
+/* Leave tty control */
+    fprintf(stderr, "Leaving tty... ");
+    if (brlapi_leaveTtyMode() >= 0)
+      fprintf(stderr, "Ok\n");
+    else brlapi_perror("brlapi_leaveTtyMode");
+
+  } else brlapi_perror("brlapi_enterTtyMode");
+
+/* Disconnect from BrlAPI */
+  brlapi_closeConnection();
+  return 0;
+}
+
+
+
+

+

This should compile well thanks to +gcc apiclient.c -o apiclient -lbrlapi

+ +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BrlAPI/English/BrlAPI-6.html b/Documents/Manual-BrlAPI/English/BrlAPI-6.html new file mode 100644 index 0000000000000000000000000000000000000000..9990c84e61b4086702cd351fe86cf1270756e477 --- /dev/null +++ b/Documents/Manual-BrlAPI/English/BrlAPI-6.html @@ -0,0 +1,302 @@ + + + + + BrlAPI Reference manual: Writing (BrlAPI-compliant) drivers for brltty + + + + + +Next +Previous +Contents +
+

6. Writing (BrlAPI-compliant) drivers for brltty

+ +

In this chapter, we will describe in details how to write a +driver for brltty. We begin with a general description of the +structure the driver should have, before explaining more precisely +what each function is supposed to do.

+ +

6.1 Overview of the driver's structure +

+ +

A braille driver is in fact a library that is either +dynamically loaded by brltty at startup, or statically linked to +it during the compilation, depending on the options given to the +./configure script.

+

This library has to provide every function needed by the core, +plus some additional functions, that are not mandatory, but which +improve communication with BrlAPI and the service level provided +to client applications.

+

Basically, a driver library needs to provide a function to open +the communication with the braille terminal, one to close this +communication, one to read key codes from the braille keyboard, and +one to write text on the braille display. As we will see in a +moment, other functions are required.

+

Moreover, a driver can provide additional functionalities, by +defining some macros asserting that it has these functionalities, +and by defining associated functions.

+ +

6.2 Basic driver structure +

+ +

Every brltty driver must consist in at least +a file called braille.c, located in an appropriate subdirectory of +the BrailleDrivers subdirectory. This braille.c file must have the +following layout

+

+

+    #include "prologue.h"
+    /* Include standard C headers */
+    #include "Programs/brl.h"
+    #include "Programs/misc.h"
+    #include "Programs/scr.h"
+    #include "Programs/message.h"
+    /* Include other files */
+
+    static void brl_identify() { }
+
+    static int brl_open(BrailleDisplay *brl, char **parameters, const char *tty) { ... }
+
+    static void brl_close(BrailleDisplay *brl) { ... }
+
+    static void brl_writeWindow(BrailleDisplay *brl) { ... }
+
+    static void brl_writeStatus(BrailleDisplay *brl) { ... }
+
+    static int brl_readCommand(BrailleDisplay *brl, DriverCommandContext context) { ... }
+
+

+

Before giving a detailed description of what each function is +supposed to do, we define the BrailleDisplay structure, +since each function has an argument of type BrailleDisplay +*. The BrailleDisplay structure is defined like this:

+

+

+    typedef struct {
+
+      int x, y; /* The dimensions of the display */
+
+      int helpPage; /* The page number within the help file */
+
+      unsigned char *buffer; /* The contents of the display */
+
+      unsigned isCoreBuffer:1; /* The core allocated the buffer */
+
+      unsigned resizeRequired:1; /* The display size has changed */
+
+      unsigned int writeDelay;
+
+      void (*bufferResized)(int rows, int columns);
+
+    } BrailleDisplay;
+
+

+

We now describe each function's semantics and calling +convention.

+

The brl_identify() function takes no argument and returns +nothing. It is called as soon as the driver is loaded, and its +purpose is to print some information about the driver in the system +log. To achieve this, the only thing this function has to do is to +call LOG_PRINT with appropriate arguments (log level and string to +put in the syslog).

+

The brl_open() function takes 3 arguments and returns an int. Its +purpose is to initialize the communication with the braille +terminal. Generally, this function has to open the file referred to by +the tty argument, and to configure the associated communication +port. The parameters argument contains parameters passed to the +driver with the -B command-line option. It's up to the driver's +author to decide wether or not he/she wants to use this argument, +and what for. The function can perform some additional tasks such +as trying to identify precisely which braille terminal model is +connected to the computer, by sending it a request and analyzing its +answer. The value that is finally returned depends on the success of +the initialization process. If it fails, th function has to return +-1. The function returns 0 on success.

+

The brl_close() function takes just one argument, and returns +nothing. The name of this function should be self-explanatory; it's +goal is to close (finish) the communication between the computer and +the braille terminal. In general, the only thing this function has +to do is to close the file descriptor associated to the braille +terminal's communication port.

+

The brl_writeWindow() function takes just one argument of type +BrailleDisplay, and returns nothing. This function displays the +specified text on the braille window. This routine is the right +place to check if the text that has to be displayed is not already +on the braille display, to send it only if necessary. More +generally, if the braille terminal supports partial refresh of the +display, the calculus of what exactly has to be sent to the braille +display to have a proper display, according to what was previously +displayed should be done in this function.

+

The brl_writeStatus() function is very similar to brl_writeWindow(). +The only difference is that whereas brl_writeWindow() writes on the +main braille display, brl_writeStatus() writes on an auxiliary braille +display, which occasionaly appears on some braille terminals. The +remarks that have been done concerning optimizations for refreshing +the display still apply here.

+

The brl_readCommand() function takes two arguments, and returns an +integer. Its purpose is to read commands from the braille keyboard +and to pass them to brltty's core, which in turn will process them. +The first argument, of type BrailleDisplay, is for future use, and +can safely be ignored for the moment. The second argument indicates +in which context (state) brltty is. For instance, it specifies if +brltty is in a menu, displays a help screen, etc. This information +can indeed be of some interest when translating a key into a +command, especially if the keys can have different meanings, +depending on the context. So, this function has to read keypresses +from the braille keyboard, and to convert them into commands, +according to the given context, these commands then being returned +to brltty. For a complete list of available command codes, please +have a look at brl.h in the Programs subdirectory. Two codes have special +meanings:

+

+

+ +
eof

specifies that no command is available now, and that +no key is waiting to be converted into command in a near future.

+ +
CMD_NOOP

specifies that no command is available, but +that one will be, soon. As a consequence, brl_readCommand will be +called again immediately. Returning CMD_NOOP is appropriate for +instance when a key is composed of two consecutive data packets. +When the first of them is received, one can expect that the second +will arrive quickly, so that trying to read it as soon as possible +is a good idea.

+ +
+

+ +

6.3 Enhancements for BrlAPI +

+ +

To improve the level of service provided to client +applications communicating with braille drivers through BrlAPI, the +drivers should declare some additional functions that will then be +called by the API when needed.

+

For each additional feature that has to be implemented in a +driver, a specific macro must be defined, in addition to the +functions implementing that feature. For the moment, two features +are supported by BrlAPI:

+

+

    +
  • reading braille terminal specific key codes, +
  • +
  • exchanging raw data packets between the braille +terminal and a client application running on the PC.
  • +
+

+

For each feature presented below, only a short description of each +concerned macro and function will be given. For a more complete description +of concepts used here, please refer to chapters +Introduction and +General description.

+ +

Reading braille key codes

+ +

When a client takes control of a tty and asks for getting raw key codes, it +has, like in command mode, the possibility to mask some keys. The masked +keys will then be passed to brltty. This assumes the existence of a +conversion mechanism from key codes to brltty commands. +This conversion mechanism can only be implemented by the braille driver, +since +it is the only piece of code that knows about braille terminal specific key +codes. So, to make it possible for client applications to read raw key +codes, the driver has to define the following macro: +

+#define BRL_HAVE_KEY_CODES
+
+ +and the following functions: +
+static int brl_readKey(BrailleDisplay *)
+int brl_keyToCommand(BrailleDisplay *brl, DriverCommandContext caller, int code)
+
+

+

The semantics of brl_readKey() is very similar to +brl_readCommand()'s, with one essential difference: a key code +is not context-dependant, so no context argument needs to be given to this +function. Moreover, the code this function returns is driver-specific, and +has to be properly defined by the driver's author so that client applications +can rely on it.

+

The brl_keyToCommand() function's purpose is to convert a key code +as delivered by brl_readKey() into a brltty command. As explained +above, this function is called by brlapi when a key is pressed on the +braille keyboard that is ignored by the client application. The +corresponding command is then returned to brltty.

+ +

Remarks

+ +

When these two functions are present, the only thing +brl_readCommand() has to do is to call brl_readKey() and then +call brl_keyToCommand() with the value returned by the first function +as argument.

+ +

Exchanging raw data packets

+ +

Under some circumstances, an application running on the PC +can be interested in a raw level communication with the braille +terminal. For instance, to implement a file transfer protocol, +commands to display braille or to read keys are not enough. In +such a case, one must have a way to send raw data to the +terminal, and to receive them from it.

+

A driver that wants to provide such a mechanism has to define +three functions: one to send packets, another one to receive them, +and the last one to reset the communication when problems occur.

+

The macro that declares that a driver is able to transmit packets +is:

+

+

+#define BRL_HAVE_PACKET_IO
+
+

+

The prototypes of the functions the driver should define are:

+

+

+static int brl_writePacket(BrailleDisplay *brl, const unsigned char *packet, int size);
+static int brl_readPacket(BrailleDisplay *brl, unsigned char *p, int size);
+static void brl_rescue(BrailleDisplay *brl)
+
+

+

brl_writePacket() sends a packet of size bytes, stored +at packet, to the braille terminal. If the communication protocol +allows to determined if a packet has been send properly (e.g. the +terminal sends back an acknowledgement for each packet he +receives), then this function should wait the acknowledgement, +and, if it is not received, retransmission of the packet should take +place.

+

brl_readPacket() reads a packet of at most size bytes, and +stores it at the specified address. The read must not block. I.e., +if no packet is available, the function should return immediately, +returning 0.

+

brl_rescue() is called by BrlAPI when a client +application terminates without properly leaving the raw mode. This +function should restore the terminal's state, so that it is +able to display text in braille again.

+ +

Remarks.

+ +

+

    +
  • If the driver provides such functions, every other +functions should use them, instead of trying to communicate +directly with the braille terminal. For instance, readCommand() +should call readPacket(), and then extract a key from the packet, +rather than reading directly from the communication port's file +descriptor. The same applies for brl_writeWindow(), which should +use brl_writePacket(), rather than writing on the communication +port's file descriptor. +
  • +
  • For the moment, the argument of type BrailleDisplay +can safely be ignored by the functions described here. +
  • +
+

+ +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BrlAPI/English/BrlAPI-7.html b/Documents/Manual-BrlAPI/English/BrlAPI-7.html new file mode 100644 index 0000000000000000000000000000000000000000..074a9e707e1c306b1723c29471b2ffada0dc6c49 --- /dev/null +++ b/Documents/Manual-BrlAPI/English/BrlAPI-7.html @@ -0,0 +1,341 @@ + + + + + BrlAPI Reference manual: Protocol reference + + + + +Next +Previous +Contents +
+

7. Protocol reference

+ +

Under some circumstances, it may be preferable to communicate directly with +BrlAPI's server rather than using BrlAPI's +library. Here are the needed details to be able +to do this. This chapter is also of interest if a precise understanding of +how the communication stuff works is desired, to be sure to understand how +to write multithreaded clients, for instance.

+ +

In all the following, integer will mean an unsigned 32 bits integer in +network byte order (ie most significant bytes first).

+ +

7.1 Reliable packet transmission channel +

+ +

The protocol between BrlAPI's server and clients is based on exchanges +of packets. So as to avoid locks due to packet loss, these exchanges are +supposed reliable, and ordering must be preserved, thus BrlAPI needs +a reliable packet transmission channel.

+ +

To achieve this, BrlAPI uses a TCP-based connection, on which packets +are transmitted this way:

+

+

    +
  • the size in bytes of the packet is transmitted first as an integer,
  • +
  • then the type of the packet, as an integer,
  • +
  • and finally the packet data.
  • +
+

+ +

The size does not include the { size, type } header, so that packets which +don't need any data have a size of 0 byte. The type of the packet can be +either of BRLAPI_PACKET_* constants defined in api_protocol.h. Each type of +packet will be further discussed below.

+ +

BrlAPI's library ships two functions to achieve packets sending and receiving +using this protocol: brlapi_writePacket and brlapi_readPacket. It +is a good idea to use these functions rather than rewriting them, since this protocol +might change one day in favor of a real reliable packet transmission protocol +such as the experimental RDP.

+ +

7.2 Responses from the server +

+ +

As described below, many packets are `acknowledged'. It means that upon +reception, the server sends either:

+

+

    +
  • a BRLAPI_PACKET_ACK packet, with no data, which means the operation +corresponding to the received packet was successful,
  • +
  • or a BRLAPI_PACKET_ERROR packet, the data being an integer +which should be one of BRLAPI_ERROR_* constants. This +means the operation corresponding to the received packet failed.
  • +
+

+ +

Some other packets need some information as a response. +Upon reception, the server will send either:

+

+

    +
  • a packet of the same type, its data being the response,
  • +
  • or a BRLAPI_PACKET_ERROR packet.
  • +
+

+ +

If at some point an ill-formed or non-sense packet is received by the server, +and BRLAPI_PACKET_EXCEPTION is returned, holding the guilty packet for +further analysis.

+ +

7.3 Operating modes +

+ +

The connection between the client and the server can be in either of the +four following modes:

+

+

    +
  • authorization mode: this is the initial mode, when the client hasn't +got the authorization to use the server yet. The server first sends a +BRLAPI_PACKET_VERSION packet that announces the server version. The client +must send back a BRLAPI_PACKET_VERSION for announcing its own version too. +The server then sends a BRLAPI_PACKET_AUTH packet that announces +which authorization methods are allowed. The client can then send +BRLAPI_PACKET_AUTH packets, which makes the connection enter normal mode. +If no authorization is needed, the server can announce the NONE method, the +client then doesn't need to send a BRLAPI_PACKET_AUTH packet. + + +
  • +
  • normal mode: the client is authorized to use the server, but didn't ask for a tty +or raw mode. The client can send either of these types of packet: +
      +
    • BRLAPI_PACKET_GETDRIVERID, BRLAPI_PACKET_GETDRIVERNAME +or BRLAPI_PACKET_GETDISPLAYSIZE to get pieces of information from the server,
    • +
    • BRLAPI_PACKET_ENTERTTYMODE to enter tty handling mode,
    • +
    • BRLAPI_PACKET_ENTERRAWMODE to enter raw mode,
    • +
    + + +
  • +
  • tty handling mode: the client holds the control of a tty: brltty has +no power on it any more, masked keys excepted. It's up to the client to manage +display and keypresses. For this, it can send either of these types of packet: +
      +
    • BRLAPI_PACKET_ENTERTYMODE to switch to another tty, but how key presses +should be sent mustn't change,
    • +
    • BRLAPI_PACKET_LEAVETTYMODE to leave tty handling mode and go back to +normal mode,
    • +
    • BRLAPI_PACKET_IGNOREKEYRANGE, BRLAPI_PACKET_ACCEPTKEYRANGE, +BRLAPI_PACKET_IGNOREKEYSET, BRLAPI_PACKET_ACCEPTKEYSET to mask and unmask +keys,
    • +
    • BRLAPI_PACKET_WRITE to display text on this tty,
    • +
    • BRLAPI_PACKET_ENTERRAWMODE to enter raw mode,
    • +
    • BRLAPI_PACKET_GETDRIVERID, BRLAPI_PACKET_GETDRIVERNAME +or BRLAPI_PACKET_GETDISPLAYSIZE to get pieces of information from the server,
    • +
    + +And the server might send BRLAPI_PACKET_KEY packets to signal key presses. + +
  • +
  • raw mode: the client wants to exchange packets directly with the braille +terminal. Only these types of packet will be accepted. +
      +
    • BRLAPI_PACKET_LEAVERAWMODE to get back to previous mode, either normal or +tty handling mode.
    • +
    • BRLAPI_PACKET_PACKET to send a packet to the braille terminal.
    • +
    + +And the server might send BRLAPI_PACKET_PACKET packets to give received packets +from the terminal to the client. +
  • +
  • suspend mode: the client wants to completely drive the braille terminal. +The device driver is hence kept closed. No type of packet is allowed except +BRLAPI_PACKET_RESUME
  • +
+

+

Termination of the connection is initiated by the client in normal mode by +simply closing its side of the socket. The server will then close the +connection.

+ + +

7.4 Details for each type of packet +

+ +

Here is described the semantics of each type of packet. Most of them are +directly linked to some of BrlAPI's library's functions. Reading their +online manual page as well will hence be of good help for understanding.

+ +

BRLAPI_PACKET_VERSIONThis must be the first packet ever transmitted from the server to the client andfrom the client to the server. The server sends one first for letting the clientknow its protocol version. Data is an integer indicating the protocol version.Then client must then respond the same way for giving itsversion. If the protocol version can't be handled by the server, aBRLAPI_ERROR_PROTOCOL_VERSION error packet is returned and the connectionis closed.

+ +

BRLAPI_PACKET_AUTH

+ +

This must be the second packet ever transmitted from the server to the client +and from the client to the server. The server sends one first for letting the +client know which authorization methods are available. Data is the allowed +authorization types, as integers.

+

If the NONE method is not announced by the server, the client can then try +to get authorized by sending packets whose data is the type of authorization +that is tried (as an integer), and eventually some data (if the authorization +type needs it).

+

If the authorization is successful, the server acknowledges the packet, and +other types of packets might be used, other BRLAPI_PACKET_AUTH shouldn't be +sent by the client.

+

If the authorization is not successful, the server sends a +BRLAPI_ERROR_AUTHENTICATION error, and the client can try another +authorization method.

+

Authorization methods are as follow:

+

+

    +
  • NONE: the client doesn't need to send an authorization packet.
  • +
  • KEY: data holds a secret key, the authorization is successful only +if the key matches the server secret key.
  • +
  • CREDENTIALS: Operating-System-specific credentials are explicitely +sent over the socket, the authorization is successful if the server considers +the credentials sufficient.
  • +
+

+

Note: when the Operating system permits it, the server may use implicit +credential check, and then advertise the none method.

+ +

BRLAPI_PACKET_GETDRIVERID (see brlapi_getDriverId())

+ +

This should be sent by the client when it needs the 2-char identifier of +the current brltty driver. The returned string is \0 terminated.

+ +

BRLAPI_PACKET_GETDRIVERNAME (see brlapi_getDriverName())

+ +

This should be sent by the client when it needs the full name of +the current brltty driver. The returned string is \0 terminated.

+ +

BRLAPI_PACKET_GETDISPLAYSIZE (see brlapi_getDisplaySize())

+ +

This should be sent by the client when it needs to know the braille display +size. The returned data are two integers: width and then height.

+ +

BRLAPI_PACKET_ENTERTTYMODE (see brlapi_enterTtyMode() andbrlapi_enterTtyModeWithPath())

+ +

This should be sent by the client to get control of a tty. Sent data are +first a series of integers: the first one gives the number of following +integers, which are the numbers of ttys that leads to the tty that +the application wants to take control of (it can be empty if the tty is +one of the machine's VT). The last integer of this series tells the number of +the tty to get control of. Finaly, how key presses should be reported is sent: +either a driver name or "", preceded by the number of caracters in the driver +name (0 in the case of ""), as an unsigned byte. This packet is then +acknowledged by the server.

+ +

BRLAPI_PACKET_KEY (see brlapi_readKey())

+ +

As soon as the client gets a tty, it must be prepared to handle +BRLAPI_PACKET_KEY incoming packets +at any time (as soon as the key +was pressed on the braille terminal, hopefuly). +The data holds a key code as 2 integers, or +the key flags then the command code +as 2 integers, depending on what has been request in the +BRLAPI_PACKET_ENTERTTYMODE packet.

+ +

BRLAPI_PACKET_SETFOCUS (see brlapi_setFocus())

+ +

For the server to know which tty is active, one particular client is responsible +for sending BRLAPI_PACKET_SETFOCUS packets. They hold a single integer telling +the new current tty. For instance, when running an X server on VT 7, the +xbrlapi client would have sent a BRLAPI_PACKET_ENTERTTYMODE(7) and will send +window IDs whenever X focus changes, allowing display and keypresses switching +between xterms.

+ +

BRLAPI_PACKET_LEAVETTYMODE (see brlapi_leaveTtyMode())

+ +

This should be sent to free the tty and masked keys lists. +This is acknowledged by the server.

+ +

BRLAPI_PACKET_IGNOREKEYRANGE, BRLAPI_PACKET_ACCEPTKEYRANGE,BRLAPI_PACKET_IGNOREKEYSET and BRLAPI_PACKET_ACCEPTKEYSET (seebrlapi_ignoreKeyRange(), brlapi_acceptKeyRange(),brlapi_ignoreKeySet(), and brlapi_acceptKeySet())

+ +

If the client doesn't want every key press to be signaled to it, but some of +them to be given to brltty for normal processing, it can send +BRLAPI_PACKET_IGNOREKEYRANGE (resp. BRLAPI_PACKET_IGNOREKEYSET) packets to +tell ranges (resp. sets) of key codes which shouldn't be +sent to it, but given to brltty, and BRLAPI_PACKET_ACCEPTKEYRANGE +(resp. BRLAPI_PACKET_ACCEPTKEYSET) packets to tell ranges (resp. sets) +of key codes which should be sent to it, and not given to +brltty. The server keeps a dynamic list of ranges, so that arbitrary +sequences of such packets can be sent. +For ranges, Data are 2 pairs of integers: the lower and the +upper boundaries; lower and upper must be equal to tell one key, for instance. +For Sets, Data simply consists of pairs of integers, one per key in the set.

+ +

BRLAPI_PACKET_WRITE (see brlapi_write())

+ +

To display text on the braille terminal and set the position of the cursor, +the client can send a BRLAPI_PACKET_WRITE packet. The packet begins +with an integer holding flags (see BRLAPI_WF_*). These flags indicate +which data will then be available, in the following order (corresponding to +flag weight):

+

+

    +
  • A display number can be given as a integer, in case the braille +display has several. If not given, usual display is used.
  • +
  • A region must be given as two integers indicating the beginning and the +number of characters of the part of the braille display which is to be updated, +the first cell of the display being numbered 1.
  • +
  • The text to display can then be given, preceded by its size in bytes +expressed as an integer. It will erase the corresponding region in the AND and +OR fields. The text's length in characters must exactly match the region +size. For multibyte text, this is the number of wide characters. Notably, +combining and double-width characters count for 1.
  • +
  • Then an AND field can be given, one byte per character: the 8-dot +representation of the above text will be AND-ed with this field, hence allowing +to erase some unwanted parts of characters. Dots are coded as described in +ISO/TR 11548-1: dot 1 is set iff bit 0 is set, dot 2 is set iff bit 1 is set, +... dot i+1 is set if bit i is set. This also corresponds to the +low-order byte of the coding of unicode's braille row U+2800.
  • +
  • As well, an OR field may be given, one byte per character: the 8-dot +result of the AND operation above (or the 8-dot representation of the text if +no AND operation was performed) is OR-ed with this field, hence allowing +to set some dots, to underline characters for instance.
  • +
  • A cursor position can be specified. 1 representing +the first character of the display, 0 turning the cursor off. If not given, +the cursor (if any) is left unmodified.
  • +
  • Last but not least, the charset of the text can be specified: the length +of the name first in one byte, then the name itself in ASCII characters. If the +charset is not specified, an 8-bit charset is assumed, and it is assumed to be +the same as the server's. Multibyte charsets may be used, AND and OR fields' +bytes will correspond to each text's wide character, be it a combining or a +double-width character.
  • +
+

+

A BRLAPI_PACKET_WRITE packet without any flag (and hence no data) means a +"void" WRITE: the server clears the output buffer for this connection.

+ +

BRLAPI_PACKET_ENTERRAWMODE (see brlapi_enterRawMode())

+ +

To enter raw mode, the client must send a BRLAPI_PACKET_ENTERRAWMODE packet, +which is acknowledged. Once in raw mode, no other packet than +BRLAPI_PACKET_LEAVERAWMODE or BRLAPI_PACKET_PACKET will be accepted. +The data must hold the special value BRLAPI_DEVICE_MAGIC: 0xdeadbeef, then +the name of the driver (one byte for the length, then the name) to avoid +erroneous raw mode activating.

+ +

BRLAPI_PACKET_LEAVERAWMODE (see brlapi_leaveRawMode())

+ +

To leave raw mode, the client must send a BRLAPI_PACKET_LEAVERAWMODE packet, which +is acknowledged.

+ +

BRLAPI_PACKET_PACKET (see brlapi_sendRaw() andbrlapi_recvRaw())

+ +

While in raw mode, only BRLAPI_PACKET_PACKET packets can be exchanged between +the client and the server: to send a packet to the braille terminal, the +client merely sends a BRLAPI_PACKET_PACKET packet, its data being the packet to +send to the terminal. Whenever its receives a packet from the terminal, the +server does exactly the same, so that packet exchanges between the terminal and +the server are exactly reproduced between the server and the client.

+ +

BRLAPI_PACKET_SUSPENDDRIVER (see brlapi_suspendDriver())

+ +

To enter suspend mode, the client must send a BRLAPI_PACKET_SUSPEND packet, +which is acknowledge. Once in suspend mode, no other packet than +BRLAPI_PACKET_RESUME will be accepted. +The data must hold the special value BRLAPI_DEVICE_MAGIC: 0xdeadbeef, +then the name of the driver (one byte for the length, then the name) to avoid +erroneous raw mode activating.

+ + +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BrlAPI/English/BrlAPI.html b/Documents/Manual-BrlAPI/English/BrlAPI.html new file mode 100644 index 0000000000000000000000000000000000000000..1b27f7c8f35a392585ed4d651e35ad5a4b4b710b --- /dev/null +++ b/Documents/Manual-BrlAPI/English/BrlAPI.html @@ -0,0 +1,90 @@ + + + + + BrlAPI Reference manual + + + + + +Next +Previous +Contents +
+

BrlAPI Reference manual

+ +

Sébastien Hinderer +<Sebastien.Hinderer@ens-lyon.org>

+

Samuel Thibault +<Samuel.Thibault@ens-lyon.org>

V1.4, December 2006 +
+This document describes BrlAPI. +
+

+

1. Introduction

+ + +

+

2. General description of BrlAPI

+ + +

+

3. Concurrency management between BrlAPI clients

+ + +

+

4. Installation and configuration of BrlAPI

+ +

+

5. Library description

+ + +

+

6. Writing (BrlAPI-compliant) drivers for brltty

+ + +

+

7. Protocol reference

+ + +
+Next +Previous +Contents + + diff --git a/Documents/Manual-BrlAPI/English/BrlAPI.sgml b/Documents/Manual-BrlAPI/English/BrlAPI.sgml index f5748c83ef75c95d9859f99b52835771c8e447e1..6132da695e3cd1186bf3bdd9e07514cfc63abdd1 100644 --- a/Documents/Manual-BrlAPI/English/BrlAPI.sgml +++ b/Documents/Manual-BrlAPI/English/BrlAPI.sgml @@ -483,14 +483,16 @@ driver.

A Whenever the user switches to VT 3, the The X-window case

-Let's say some X server is running on VT 7. The user should also launch - +For text-based +Screen readers are not bound to a particular window, so they should call + -The user should also set in his ~/.xsession, ~/.xinitrc, -~/.gdmrc... the ~/.xsession, ~/.xinitrc, ~/.gdmrc... to "7" + +

+Note: some Operating Systems like Solaris do not have VTs. In that case +Detaching @@ -670,13 +690,13 @@ first: fprintf(stderr, "Taking control of the tty... "); - if (brlapi_enterTtyMode(-1, NULL) >= 0) + if (brlapi_enterTtyMode(BRLAPI_TTY_DEFAULT, NULL) >= 0) { fprintf(stderr, "Ok\n"); The first parameter tells the server the number of the tty to take -control of. Setting -1 lets the library determine it for us. +control of. Setting BRLAPI_TTY_DEFAULT lets the library determine it for us.

The server is asked to send = 0) + if (brlapi_enterTtyMode(BRLAPI_TTY_DEFAULT, NULL) >= 0) { fprintf(stderr, "Ok\n"); diff --git a/Documents/Manual-BrlAPI/English/BrlAPI.txt b/Documents/Manual-BrlAPI/English/BrlAPI.txt new file mode 100644 index 0000000000000000000000000000000000000000..c7b2a787cf64c59a39bd20ab2a6a679a04c782c6 --- /dev/null +++ b/Documents/Manual-BrlAPI/English/BrlAPI.txt @@ -0,0 +1,1723 @@ + BrlAPI Reference manual + Sébastien Hinderer + Samuel Thibault + V1.4, December 2006 + + This document describes BrlAPI. + ______________________________________________________________________ + + Table of Contents + + + + 1. Introduction + 1.1 Concepts + 1.2 How to read this manual + + 2. General description of BrlAPI + 2.1 Historical notes. + 2.2 Why BrlAPI is part of brltty. + 2.3 How it works. + 2.3.1 Connection. + 2.3.2 Authorization. + 2.3.3 Real use of the braille terminal. + 2.3.3.1 Braille display and braille key presses processing. + 2.3.3.2 Raw mode. + 2.3.3.3 Suspend Mode. + 2.3.3.4 Remarks. + 2.3.4 Disconnection. + + 3. Concurrency management between BrlAPI clients + 3.1 VT switching + 3.2 A pile of "paper sheets" + 3.3 Hierarchy + 3.4 The X-window case + 3.5 Detaching + + 4. Installation and configuration of BrlAPI + 5. Library description + 5.1 Connecting to BrlAPI + 5.2 Getting driver name + 5.3 Getting display size + 5.4 Entering raw mode, immediately leaving raw mode. + 5.5 Getting tty control + 5.6 Writing something on the display + 5.7 Waiting for a key press + 5.8 Understanding commands + 5.9 Leaving tty control + 5.10 Disconnecting from BrlAPI + 5.11 Putting everything together... + + 6. Writing (BrlAPI-compliant) drivers for brltty + 6.1 Overview of the driver's structure + 6.2 Basic driver structure + 6.3 Enhancements for BrlAPI + 6.3.1 Reading braille key codes + 6.3.1.1 Remarks + 6.3.2 Exchanging raw data packets + 6.3.2.1 Remarks. + + 7. Protocol reference + 7.1 Reliable packet transmission channel + 7.2 Responses from the server + 7.3 Operating modes + 7.4 Details for each type of packet + 7.4.1 BRLAPI_PACKET_VERSION This must be the first packet ever transmitted from the server to the client and from the client to the server. The server sends one first for letting the client know its protocol version. Data is an integer indicating the protocol version. Then client must then respond the same way for giving its version. If the protocol version can't be handled by the server, a BRLAPI_ERROR_PROTOCOL_VERSION error packet is returned and the connection is closed. + 7.4.2 BRLAPI_PACKET_AUTH + 7.4.3 BRLAPI_PACKET_GETDRIVERID (see brlapi_getDriverId()) + 7.4.4 BRLAPI_PACKET_GETDRIVERNAME (see brlapi_getDriverName()) + 7.4.5 BRLAPI_PACKET_GETDISPLAYSIZE (see brlapi_getDisplaySize()) + 7.4.6 BRLAPI_PACKET_ENTERTTYMODE (see brlapi_enterTtyMode() and brlapi_enterTtyModeWithPath()) + 7.4.7 BRLAPI_PACKET_KEY (see brlapi_readKey()) + 7.4.8 BRLAPI_PACKET_SETFOCUS (see brlapi_setFocus()) + 7.4.9 BRLAPI_PACKET_LEAVETTYMODE (see brlapi_leaveTtyMode()) + 7.4.10 BRLAPI_PACKET_IGNOREKEYRANGE, BRLAPI_PACKET_ACCEPTKEYRANGE, BRLAPI_PACKET_IGNOREKEYSET and BRLAPI_PACKET_ACCEPTKEYSET (see brlapi_ignoreKeyRange(), brlapi_acceptKeyRange(), brlapi_ignoreKeySet(), and brlapi_acceptKeySet()) + 7.4.11 BRLAPI_PACKET_WRITE (see brlapi_write()) + 7.4.12 BRLAPI_PACKET_ENTERRAWMODE (see brlapi_enterRawMode()) + 7.4.13 BRLAPI_PACKET_LEAVERAWMODE (see brlapi_leaveRawMode()) + 7.4.14 BRLAPI_PACKET_PACKET (see brlapi_sendRaw() and brlapi_recvRaw()) + 7.4.15 BRLAPI_PACKET_SUSPENDDRIVER (see brlapi_suspendDriver()) + + + ______________________________________________________________________ + + 1. Introduction + + BrlAPI is a service provided by the brltty daemon. + + Its purpose is to allow programmers to write applications that take + advantage of a braille terminal in order to deliver a blind user + suitable information for his/her specific needs. + + While an application communicates with the braille terminal, + everything brltty sends to the braille terminal in the application's + console is ignored, whereas each piece of data coming from the braille + terminal is sent to the application, rather than to brltty. + + + 1.1. Concepts + + All throughout this manual, a few terms will be used which are either + specific to braille terminals, or introduced because of BrlAPI. They + are defined below. Taking a few minutes to go through this glossary + will save a lot of time and questions later. + + + + Authorization key + A file containing arbitrary data, that has to be sent to the + server by the client, to prove it is allowed to establish a + connection and then control the braille terminal. + + + Braille display + The small screen on the braille terminal that is able to display + braille text. + + + Braille keyboard + The keyboard of the braille terminal. + + + Braille terminal + A computer designed to display text in braille. In this case, + the text is supposed to come from another computer running Linux + or any other Unix system. + + + Brltty + The background process that gives a blind person access to the + console screen thanks to a braille terminal or speech + synthetizer. + + + Client + An application designed to handle a braille terminal thanks to + BrlAPI. + + + Command + A code returned by the driver, indicating an action to do, for + instance "go to previous line", "go to next line", etc. + + + + Driver + A library that has functions to communicate with a braille + terminal. Basically, a driver has functions to open + communication with the braille terminal, close the + communication, write on the braille display, and read keypresses + from the braille keyboard, plus some special functions that will + be described in detail in this manual. + + + Key + A code that is returned by the driver when a key is pressed. + This is different from a command, because the command concept is + driver-independent (all drivers use the same command codes - + those defined by brltty), whereas codes used for returning + keypresses may vary between drivers. + + + BrlAPI's Library + This library helps clients to connect and use BrlAPI's server + thanks to a series of brlapi_-prefixed functions. + + + Packet + A sequence of bytes making up the atomic unit in communications, + either between braille drivers and braille terminals or between + the server and clients. + + + Raw mode + Mode in which the client application exchanges packets with the + driver. Normal operations like sending text for display or + reading keypresses are not available in this mode. It lets + applications take advantage of advanced functionalities of the + driver's communication protocol. + + + Server + The part of brltty that controls incoming connections and + communication between clients and braille drivers. + + + Suspend mode + Mode in which the server keeps the device driver closed, so that + the client can connect directly to the device. + + + Tty + Synonym for console, terminal, ... Linux' console consist of + several Virtual Ttys (VTs). The screen program's windows also + are Ttys. X-window system's xterms emulate Ttys as well. + + + + 1.2. How to read this manual + + This manual is split in five parts. + + + + ``General description'' + Describes more precisely what BrlAPI is and how it works in + collaboration with brltty's core, the braille driver and + clients. In this part, a "connection-use-disconnection" scenario + will be described step by step, explaining for each step what + BrlAPI does in reaction to client instructions. These + explanations will take place at a user level. + ``Concurrency management'' + This part explains how concurrency between BrlAPI clients is + handled thanks to focus tellers. + + + ``Installation and configuration'' + This part explains in detail how to install and configure the + API. For instructions on how to install and configure brltty, + please report to the brltty documentation. + + + ``Library description'' + This part describes how client applications can communicate with + the server using the BrlAPI library that comes with brltty. Each + function will be briefly described, classified by categories. + More exhaustive descriptions of every function are available in + the corresponding online manual pages. + + + ``Writing braille drivers'' + This part describes how the braille drivers included in brltty + should be written in order to take advantage of BrlAPI's + services. + + + ``Protocol reference'' + This part describes in detail the communication protocol that is + used to communicate between server and clients. + + + What should be read probably depends on what should be done by + applications with BrlAPI. + + Reading chapters ``General description'', ``Concurrency management'' + and ``Installation and configuration'' is recommended, since they + provide useful information and (hopefully) lead to a good + understanding of BrlAPI, for an efficient use. + + Chapter ``Library description'' concerns writing applications that + take advantage of braille terminals so as to bring specific (and more + useful) information to blind people. + + Chapter ``Drivers'' is for braille driver implementation: either + adding a braille driver to brltty or modifying an existing one so that + it can benefit from BrlAPI's features, this chapter will be of + interest, since it describes exactly what is needed to write a driver + for brltty: the core of drivers interface for instance. + + Finally, chapter ``Protocol reference'' is for not using the library, + but using the BrlAPI server directly, when the library might not be + sufficient: it describes the underlying protocol that will have to be + used to do so. + + + 2. General description of BrlAPI + + Here is explained what BrlAPI is, and what it precisely does. These + explanations should be simple enough to be accessible to every user. + For a more technical review of BrlAPI's functionalities, please see + chapter ``Libary description''. + + + 2.1. Historical notes. + + Originally, brltty was designed to give access to the Linux console to + visually impaired people, through a braille terminal or a speech + synthetizer. At that time, applications running in the console were + not taking care of the presence of a braille terminal (most + applications didn't even know what a braille terminal was). + + This situation where applications are not aware of the presence of a + special device is elegant of course, since it lets use an unlimited + number of applications which don't need to be specially designed for + visually impaired people. + + However, it appeared that applications specially designed to take + advantage of a braille terminal could be wanted, to provide the + suitable information to blind users, for instance. The idea of BrlAPI + is to propose an efficient communication mechanism, to control the + braille display, read keys from the braille keyboard, or to exchange + data with the braille terminal at a lower level (e.g. to write file + transfer protocols between braille terminals and Linux systems). + + + 2.2. Why BrlAPI is part of brltty . + + Instead of rewriting a whole communication program from scratch, we + chose to add communication mechanisms to brltty. This choice has two + main justifications. + + On the one hand, integration to brltty allows us to use the increasing + number of drivers written for brltty, thus handling a large number of + braille terminals without having to rewrite any piece of existing + code. + + On the other hand, if an application chooses to send its own + information to the braille display, and to process braille keys, + brltty has to be warned, so that it won't try to communicate with the + braille terminal while the application already does. To make this + synchronzation between brltty and client applications possible, it + seemed easier to add the communication mechanisms to brltty's core, + instead of writing an external program providing them. + + + 2.3. How it works. + + We are now going to describe the steps an application should go + through to get control of the braille terminal, and what happens on + brltty's side at each step. This step-by-step description will let us + introduce more precisely some concepts that are useful for every + BrlAPI user. + + + 2.3.1. Connection. + + The first thing any client application has to do is to connect (in the + Unix sense of the word) to BrlAPI which is an mere application server. + If this is not clear, the only thing to be remembered is that this + step allows the client application to let the server know about its + presence. At this stage, nothing special is done on brltty's side. + + + 2.3.2. Authorization. + + Since Unix is designed to allow many users to work on the same + machine, it's quite possible that there are more than one user + accounts on the system. Most probably, one doesn't want any user with + an account on the machine to be able to communicate with the braille + terminal (just imagine what would happen if, while somebody was + working with the braille terminal, another user connected to the + system began to communicate with it, preventing the first one from + doing his job...). That's why BrlAPI has to provide a way to determine + whether a user who established a connection is really allowed to + communicate with the braille terminal. To achieve this, BrlAPI + requires that each application that wants to control a braille + terminal sends an authorization key before doing anything else. The + control of the braille terminal will only be possible for the client + once it has sent the proper authorization key. What is called + authorization key is in fact a Unix file containing data (it must be + non-empty) on your system. All the things you have to do is to give + read permissions on this file to users that are allowed to communicate + with the braille terminal, and only to them. This way, only authorized + users will have access to the authorization key and then be able to + send it to BrlAPI. To see how to do that, please see chapter + ``Installation and configuration''. + + At the end of this step, the user is authorized to take control of the + braille terminal. On brltty's side, some data structures are allocated + to store information on the client, but this has no user-level side- + effect. + + + 2.3.3. Real use of the braille terminal. + + Once the client is properly connected and authorized, there are two + possible types of communication with the braille terminal. The chosen + type of communication depends on what the client plans to do. If its + purpose is to display information on the braille display or to process + braille keys, it will have to take control of the Linux tty on which + it is running. If its purpose is to exchange data with the braille + terminal (e.g. for file transfer), it will enter what is called "raw + mode". + + + 2.3.3.1. Braille display and braille key presses processing. + + If the client wants to display something on the braille display or to + process braille keys itself, rather than letting brltty process them, + it has to take control of the Linux terminal it is running on. + + Once a client has obtained the control of his tty, BrlAPI will + completely discard brltty's display on this tty (and only this one), + leaving the braille display free for the client. + + At the same time, if a key is pressed on the braille keyboard, BrlAPI + checks whether the client application is interested in this key or + not. If it is, the key is passed to it, either as a key code or as a + brltty command. If it is not, the key code is converted into a brltty + command and returned to brltty. + + Once the client is not interested in displaying text or reading + braille keys any more, it has to leave the tty, so that either brltty + can continue its job, or another client can take control of it. + + + 2.3.3.2. Raw mode. + + Only one client can be in raw mode at the same time. In this mode, + data coming from the braille terminal are checked by the driver (to + ensure they are valid), but instead of being processed, they are + delivered "as-is" to the client that is in raw mode. + + In the other direction, packets sent to BrlAPI by the client that is + in raw mode are passed to the driver which is expected to deliver them + to the braille terminal without any modification. + + + + 2.3.3.3. Suspend Mode. + + Only one client can be in suspend mode at the same time. This mode is + also exclusive with raw mode. In this mode, the server keeps the + device driver closed, and thus the client can open the device directly + by itself. + + + This mode is not recommended, since the client will then have to + reimplement device access. Raw mode should really be preferred, since + it lets the client take advantage of server's ability to talk with the + device (USB/bluetooth support for instance). + + + 2.3.3.4. Remarks. + + + + · The operations described in the three previous subsections are not + completely mutually exclusive. An application that controls its + current tty can enter raw or suspend mode, provided that no other + application already is in this mode. + + · Not every braille driver supports raw mode. It has to be specially + (re)written to support it, since it has to provide special + functions to process incoming and outgoing packets. The same + restriction is true (but less strong) concerning the ability to + deliver/convert keycodes into commands: not every driver has this + ability, it has to be modified to get it. + + · Operations previously described can be repeated. You can, for + instance, use raw mode to transfer data onto your braille terminal, + display text in braille, return to raw mode..., all that without + having to reconnect to BrlAPI before each operation. + + + 2.3.4. Disconnection. + + Once the client has finished using the braille terminal, it has to + disconnect from the API, so that the memory structures allocated for + the connection can be freed and eventually used by another client. + This step is transparent for the user, in the sense that it involves + no change on the braille display. + + + + 3. Concurrency management between BrlAPI clients + + An essential purpose of BrlAPI is to manage concurrent access to the + braille display between the brltty daemon and applications. This + concurrency is managed "per Tty". We first describe this with a flat + view, and then consider Tty hierarchy. + + + 3.1. VT switching + + Let's first describe how things work with the simple case of a single + series of Virtual Ttys (VTs), the linux console for instance. + + + As described in ``General Description'', before being able to write + output, a BrlAPI client has to "get" a tty, i.e. it sends to the + BrlAPI server the number of the linux' Virtual Tty on which it is + running. The BrlAPI server uses this information so as to know which + client's output should be shown on the braille display, according to + the focus teller's information. + Let's say some client A is running on VT 2. It "got" VT 2 and wrote + some output on its BrlAPI connection. The focus teller is brltty + here: it always tells to the BrlAPI server which VT is currently shown + on the screen and gets usual keyboard presses (it is "active"). + + + Let's say VT 1 is active, then the BrlAPI server shows brltty's output + on the braille display. I.e. the usual brltty screen reading appears. + Moreover, when braille keys are pressed, they are passed to brltty, so + that usual screen reading can be performed. When the user switches to + VT 2, brltty (as focus teller) tells it to the BrlAPI server, which + then remembers that client A has got it and has produced some output. + The server then displays this output on the braille display. Note + that A doesn't need to re-submit its output: the server had recorded + it so as to be able to show it as soon as the focus switches to VT 2. + Whenever some key of the braille device is pressed, BrlAPI looks + whether it is in the list of keys that client A said to be of his + interest. If it is, it is passed to A (and not to brltty). If it + isn't, it is passed to brltty (and not to A). + + + As a consequence, whenever clients get and release Ttys and the user + switches between Ttys, either the brltty screen reading or the + client's output is automatically shown according to rather natural + rules. + + + 3.2. A pile of "paper sheets" + + Let's look at VT 2 by itself. What is shown on the braille display can + be seen as the result of a pile of two paper sheets. brltty is + represented by the bottom sheet on which its screen reading is + written, and client A by the top sheet on which its output is written. + A's sheet hence "covers" brltty's sheet: A's output "mask" brltty's + screen reading. + + + A may yet want to temporarily let brltty's screen reading appear on VT + 2, while still receiving some key presses, for instance. For this, it + sends a "void" write. The server then clears the recorded output for + this connection (in the sheet representation, the sheet becomes + "transparent"). As a consequence, brltty's output is automatically + shown (by transparency in the sheet representation), just like if A + had released the Tty. + + + Keypresses are handled in a similar way: A's desire to get key presses + is satisfied first before brltty. + + + Let's say some other client B (probably launched by A) also gets VT 2 + and outputs some text on its BrlAPI connection. This adds a third + sheet, on top of the two previous ones. It means that the BrlAPI + server will show B's output on the braille device. If A then outputs + some text, the server will record it (on A's sheet which hence becomes + opaque again), but it won't be displayed on the braille device, since + B's sheet is still at the top and opaque (i.e. with some text on it). + But if B issues a void write, the server clears its ouput buffer (i.e. + B's sheet becomes transparent), and as a result A's output appear on + the braille display (by transparency through B's sheet). + + + The sheet order is determined by the Tty "get"ting order. Some + mecanism will be added in near future for clients to precise "at which + level its sheet should be inserted" so as to avoid race conditions on + the "get"ting order. + 3.3. Hierarchy + + Now, what happens when running some screen program on, say, VT 3? It + emulates a series of Ttys, whose output actually appear on the same VT + 3. That's where a hierarchy level appears: the focus information is + not only the VT number but also, in the case of VT 3, which screen + window is active. This hence forms a tree of Ttys: the "root" being + the vga driver's output, whose sons are VTs, and VT 3 has the screen + windows as sons. Brltty is a focus teller for the root, screen will + have to be a focus teller for VT 3. Screen should then get VT 3, not + display anything (so that the usual brltty screen reading will be + shown by transparency), and tell the BrlAPI server which screen window + is active (at startup and at each window switch). This is not + implemented directly in screen yet, but this may be achieved via a + second brltty daemon running the Screen driver (but it isn't yet able + to get the current window number though) and the BrlAPI driver. + + + A BrlAPI client C running in some screen window number 1 would then + have to get the Tty path "VT 3 then window 1", which is merely + expressed as "3 1". The window number is available in the WINDOW + environment variable, set by screen. The VT number, which actually + represents the "path to screen's output" should be available in the + WINDOWPATH environment variable, also set by screen. The client can + thus merely concatenate the content of WINDOWPATH (which could hold + many levels of window numbers) and of WINDOW and give the result as + tty path to the BrlAPI server, which then knows precisely where the + client's usual output resides. In practice, applications just need to + call brlapi_enterTtyMode(BRLAPI_TTY_DEFAULT), and the the BrlAPI + client library will automatically perform all that. + + + Whenever the user switches to VT 3, the BrlAPI server remembers the + window that screen told to be active. If it was window 1, it then + displays C's output (if any). Else brltty's usual screen reading is + shown. Of course, several clients may be run in window 1 as well, and + the "sheet pile" mecanism applies: brltty's sheet first (at the root + of the Ttys tree), then screen's sheet (which is transparent, on VT + 3), then C's sheet (on window 1 of VT 3), then other clients' sheets + (on the same window). + + + Ttys are hence organized in a tree, each client adding its sheet at + some tty in the tree. + + + 3.4. The X-window case + + Let's say some X server is running on VT 7 of a Linux system. Xorg's + xinit and xdm commands automatically set the X session's WINDOWPATH + environment variable to "7", so that X11 BrlAPI clients started from + the session just need to call brlapi_enterTtyMode(xid) where xid is + the X-window ID of the window of the client. The BrlAPI library will + automatically prepend the content of WINDOWPATH to it. + + + For text-based BrlAPI clients running in an xterm (which should just + call brlapi_enterTtyMode(BRLAPI_TTY_DEFAULT) as explained in the + previous section), BrlAPI detects the window id thanks to the WINDOWID + variable set by xterm. + + + Screen readers are not bound to a particular window, so they should + call brlapi_enterTtyModeWithPath(NULL, 0) to let the BrlAPI library + only send the content of WINDOWPATH, expressing that screen readers + take the whole tty. The user should notably launch xbrlapi, which is + a focus teller for X-window as well as a keyboard simulator (brltty + can't reliably simulate them at the kernel level in such situation). + For accessing AT-SPI contents (like gnome or kde applications), Orca + should also be launched. For accessing AT-SPI terminals (like gnome- + terminal) in the same way as in the console, a second brltty daemon + running the at-spi screen driver and the BrlAPI driver can also be + launched. All three would get the VT of the X session, in that order + (for now): xbrlapi first, then orca and brltty at last. When the X + focus is on an AT-SPI terminal, brltty will hence be able to grab the + braille display and key presses. Else orca would get them. And + xbrlapi would finally get remaining key presses and simulate them. + + + Note: old versions of xinit, xdm, kdm or gdm do not automatically set + the WINDOWPATH variable. The user can set it by hand in his + ~/.xsession, ~/.xinitrc, ~/.gdmrc... to "7" + + + Note: some Operating Systems like Solaris do not have VTs. In that + case WINDOWPATH is empty or not even set. Everything explained above + still work fine. + + + 3.5. Detaching + + Several programs allow detaching: screen and VNC for instance. In such + situation, an intermediate BrlAPI server should be run for each such + session. Clients would connect to it, and it would prepend the + "current tty" path on the fly while forwarding things to the root + BrlAPI server. This intermediate server is yet to be written (but it + is actually relatively close to be). + + + + 4. Installation and configuration of BrlAPI + + make install will install libbrlapi.so in /lib, and include files in + /usr/include/brltty. An authorization key will also typically be set + in /etc/brlapi.key (if it is not, just create it and put arbitrary + data in it), but it won't be readable by anybody else than root. It is + up to you to define a group of users who will have the right to read + it and hence be able to connect to the server. For instance, you may + want to do: + + + + ______________________________________________________________________ + # addgroup brlapi + # chgrp brlapi /etc/brlapi.key + # chmod g+r /etc/brlapi.key + # addgroup user1 brlapi + # addgroup user2 brlapi + ... + ______________________________________________________________________ + + + + 5. Library description + + Let's now see how one can write dedicated applications. Basic notions + will be seen, along with a very simple client. Greater details are + given as online manual pages. + + The historical test program for BrlAPI was something like: + + · connect to BrlAPI + + · get driver id + + · get driver name + + · get display size + + · try entering raw mode, immediately leave raw mode. + + · get tty control + + · write something on the display + + · wait for a key press + + · leave tty control + + · disconnect from BrlAPI + + It is here rewritten, its working briefly explained. + + + 5.1. Connecting to BrlAPI + + Connection to BrlAPI is needed first, thanks to the + brlapi_openConnection call. For this, a brlapi_connectionSettings_t + variable must be filled which will hold the settings the library needs + to connect to the server. Just giving NULL will work for local use. + The other parameter lets you get back the parameters which were + actually used to initialize connection. NULL will also be nice for + now. + + + + ______________________________________________________________________ + if (brlapi_openConnection(NULL, NULL)<0) { + brlapi_perror("brlapi_openConnection"); + exit(1); + } + ______________________________________________________________________ + + + + The connection might fail, so testing is needed. + + + 5.2. Getting driver name + + Knowing the type of the braille device might be useful: + + + + ______________________________________________________________________ + char name[BRLAPI_MAXNAMELENGTH+1]; + if (brlapi_getDriverName(name, sizeof(name)) < 0) + brlapi_perror("brlapi_getDriverName"); + else + fprintf(stderr, "Driver name: %s\n", name); + ______________________________________________________________________ + + + + This is particularly useful before entering raw mode to achieve file + transfers for instance, just to check that the device is really the + one expected. + + + 5.3. Getting display size + + Before writing on the braille display, the size should be always first + checked to be sure everything will hold on it: + + + + ______________________________________________________________________ + if (brlapi_getDisplaySize(&x, &y) < 0) + brlapi_perror("brlapi_getDisplaySize"); + else + fprintf(stderr, "Braille display has %d line%s of %d column%s\n", + y, y>1?"s":"", x, x>1?"s":""); + ______________________________________________________________________ + + + + 5.4. Entering raw mode, immediately leaving raw mode. + + Entering raw mode is very simple: + + + + ______________________________________________________________________ + fprintf(stderr, "Trying to enter in raw mode... "); + if (brlapi_enterRawMode(name) < 0) + brlapi_perror("brlapi_enterRawMode"); + else { + fprintf(stderr, "Ok, leaving raw mode immediately\n"); + brlapi_leaveRawMode(); + } + ______________________________________________________________________ + + + + Not every driver supports raw mode, so testing is needed. + + While in raw mode, brlapi_sendRaw and brlapi_recvRaw can be used to + send and get data directly to and from the device. It should be used + with care, improper use might completely thrash the device! + + + 5.5. Getting tty control + + Let's now display something on the device. control of the tty must be + get first: + + + + ______________________________________________________________________ + fprintf(stderr, "Taking control of the tty... "); + if (brlapi_enterTtyMode(BRLAPI_TTY_DEFAULT, NULL) >= 0) + { + fprintf(stderr, "Ok\n"); + ______________________________________________________________________ + + + + The first parameter tells the server the number of the tty to take + control of. Setting BRLAPI_TTY_DEFAULT lets the library determine it + for us. + + + The server is asked to send brltty commands, which are device- + independent. + + + Getting control might fail if, for instance, another application + already took control of this tty, so testing is needed. + + + From now on, the braille display is detached from the screen. + + + 5.6. Writing something on the display + + The application can now write things on the braille display without + altering the screen display: + + + + ______________________________________________________________________ + fprintf(stderr, "Writing to braille display... "); + if (brlapi_writeText(0, "Press a braille key to continue...") >= 0) + { + fprintf(stderr, "Ok\n"); + ______________________________________________________________________ + + + + The cursor is also asked not to be shown: its position is set to 0. + + + "Writing to braille display... Ok" is now displayed on the screen, and + "Press a braille key to continue..." on the braille display. + + + 5.7. Waiting for a key press + + To have a break for the user to be able to read these messages, a key + press (a command here, which is driver-independent) may be waited for: + + + + ______________________________________________________________________ + fprintf(stderr, "Waiting until a braille key is pressed to continue... "); + if (brlapi_readKey(1, &key) > 0) + fprintf(stderr, "got it! (code=%"BRLAPI_PRIxKEYCODE")\n", key); + ______________________________________________________________________ + + + + The command is returned, as described in and + . It is not transmitted to brltty: it is up to the + application to define the behavior, here cleanly exitting, as + described below. + + The first parameter tells the lib to block until a key press is indeed + read. + + + + 5.8. Understanding commands + + There are two kinds of commands: braille commands (line up/down, + top/bottom, etc.) and X Keysyms (i.e. regular keyboard keys). One way + to discover which key was pressed is to just use a switch statement: + + + + ______________________________________________________________________ + switch(key) { + case BRLAPI_KEY_TYPE_CMD|BRLAPI_KEY_CMD_LNUP: + fprintf(stderr, "line up\n"); + break; + case BRLAPI_KEY_TYPE_CMD|BRLAPI_KEY_CMD_LNDN: + fprintf(stderr, "line down\n"); + break; + case BRLAPI_KEY_TYPE_SYM|XK_Tab: + fprintf(stderr, "tab\n"); + break; + default: + fprintf(stderr, "unknown key\n"); + break; + } + ______________________________________________________________________ + + + + Another way is to ask BrlAPI to expand the keycode into separate + information parts: + + + + ______________________________________________________________________ + brlapi_expandedKeyCode_t ekey; + brlapi_expandKeyCode(key, &ekey); + fprintf(stderr, "type %u, command %u, argument %u, flags %u\n", + ekey.type, ekey.command, ekey.argument, ekey.flags); + ______________________________________________________________________ + + + + Eventually, named equivalents are provided: + + + + ______________________________________________________________________ + brlapi_describedKeyCode_t dkey; + int i; + + brlapi_describeKeyCode(key, &dkey); + fprintf(stderr, "type %s, command %s, argument %u, flags", + dkey.type, dkey.command, dkey.argument); + for (i = 0; i < dkey.flags; i++) + fprintf(stderr, " %s", dkey.flag[i]); + fprintf(stderr, "\n"); + ______________________________________________________________________ + + + + 5.9. Leaving tty control + + Let's now leave the tty: + + + + ______________________________________________________________________ + fprintf(stderr, "Leaving tty... "); + if (brlapi_leaveTtyMode() >= 0) + fprintf(stderr, "Ok\n"); + ______________________________________________________________________ + + + + But control of another tty can still be get for instance, by calling + brlapi_enterTtyMode() again... + + + 5.10. Disconnecting from BrlAPI + + Let's disconnect from BrlAPI: + + + + ______________________________________________________________________ + brlapi_closeConnection(); + ______________________________________________________________________ + + + + The application can as well still need to connect to another server on + another computer for instance, by calling brlapi_openConnection() + again... + + + 5.11. Putting everything together... + + + + ______________________________________________________________________ + #include + #include + #include + + int main() + { + brlapi_keyCode_t key; + char name[BRLAPI_MAXNAMELENGTH+1]; + unsigned int x, y; + + /* Connect to BrlAPI */ + if (brlapi_openConnection(NULL, NULL)<0) + { + brlapi_perror("brlapi_openConnection"); + exit(1); + } + + /* Get driver name */ + if (brlapi_getDriverName(name, sizeof(name)) < 0) + brlapi_perror("brlapi_getDriverName"); + else + fprintf(stderr, "Driver name: %s\n", name); + + /* Get display size */ + if (brlapi_getDisplaySize(&x, &y) < 0) + brlapi_perror("brlapi_getDisplaySize"); + else + fprintf(stderr, "Braille display has %d line%s of %d column%s\n", + y, y>1?"s":"", x, x>1?"s":""); + + /* Try entering raw mode, immediately go out from raw mode */ + fprintf(stderr, "Trying to enter in raw mode... "); + if (brlapi_enterRawMode(name) < 0) + brlapi_perror("brlapi_enterRawMode"); + else { + fprintf(stderr, "Ok, leaving raw mode immediately\n"); + brlapi_leaveRawMode(); + } + + /* Get tty control */ + fprintf(stderr, "Taking control of the tty... "); + if (brlapi_enterTtyMode(BRLAPI_TTY_DEFAULT, NULL) >= 0) + { + fprintf(stderr, "Ok\n"); + + /* Write something on the display */ + fprintf(stderr, "Writing to braille display... "); + if (brlapi_writeText(0, "Press a braille key to continue...") >= 0) + { + fprintf(stderr, "Ok\n"); + + /* Wait for a key press */ + fprintf(stderr, "Waiting until a braille key is pressed to continue... "); + if (brlapi_readKey(1, &key) > 0) { + brlapi_expandedKeyCode_t ekey; + brlapi_describedKeyCode_t dkey; + int i; + + fprintf(stderr, "got it! (code=%"BRLAPI_PRIxKEYCODE")\n", key); + + brlapi_expandKeyCode(key, &ekey); + fprintf(stderr, "type %u, command %u, argument %u, flags %u\n", + ekey.type, ekey.command, ekey.argument, ekey.flags); + + brlapi_describeKeyCode(key, &dkey); + fprintf(stderr, "type %s, command %s, argument %u, flags", + dkey.type, dkey.command, dkey.argument); + for (i = 0; i < dkey.flags; i++) + fprintf(stderr, " %s", dkey.flag[i]); + fprintf(stderr, "\n"); + } else brlapi_perror("brlapi_readKey"); + + } else brlapi_perror("brlapi_writeText"); + + /* Leave tty control */ + fprintf(stderr, "Leaving tty... "); + if (brlapi_leaveTtyMode() >= 0) + fprintf(stderr, "Ok\n"); + else brlapi_perror("brlapi_leaveTtyMode"); + + } else brlapi_perror("brlapi_enterTtyMode"); + + /* Disconnect from BrlAPI */ + brlapi_closeConnection(); + return 0; + } + ______________________________________________________________________ + + + + This should compile well thanks to gcc apiclient.c -o apiclient + -lbrlapi + + + 6. Writing ( BrlAPI -compliant) drivers for brltty + + In this chapter, we will describe in details how to write a driver for + brltty. We begin with a general description of the structure the + driver should have, before explaining more precisely what each + function is supposed to do. + + + 6.1. Overview of the driver's structure + + A braille driver is in fact a library that is either dynamically + loaded by brltty at startup, or statically linked to it during the + compilation, depending on the options given to the ./configure script. + + This library has to provide every function needed by the core, plus + some additional functions, that are not mandatory, but which improve + communication with BrlAPI and the service level provided to client + applications. + + Basically, a driver library needs to provide a function to open the + communication with the braille terminal, one to close this + communication, one to read key codes from the braille keyboard, and + one to write text on the braille display. As we will see in a moment, + other functions are required. + + Moreover, a driver can provide additional functionalities, by defining + some macros asserting that it has these functionalities, and by + defining associated functions. + + + 6.2. Basic driver structure + + Every brltty driver must consist in at least a file called braille.c, + located in an appropriate subdirectory of the BrailleDrivers + subdirectory. This braille.c file must have the following layout + + #include "prologue.h" + /* Include standard C headers */ + #include "Programs/brl.h" + #include "Programs/misc.h" + #include "Programs/scr.h" + #include "Programs/message.h" + /* Include other files */ + + static void brl_identify() { } + + static int brl_open(BrailleDisplay *brl, char **parameters, const char *tty) { ... } + + static void brl_close(BrailleDisplay *brl) { ... } + + static void brl_writeWindow(BrailleDisplay *brl) { ... } + + static void brl_writeStatus(BrailleDisplay *brl) { ... } + + static int brl_readCommand(BrailleDisplay *brl, DriverCommandContext context) { ... } + + + + Before giving a detailed description of what each function is supposed + to do, we define the BrailleDisplay structure, since each function has + an argument of type BrailleDisplay *. The BrailleDisplay structure is + defined like this: + + + typedef struct { + + int x, y; /* The dimensions of the display */ + + int helpPage; /* The page number within the help file */ + + unsigned char *buffer; /* The contents of the display */ + + unsigned isCoreBuffer:1; /* The core allocated the buffer */ + + unsigned resizeRequired:1; /* The display size has changed */ + + unsigned int writeDelay; + + void (*bufferResized)(int rows, int columns); + + } BrailleDisplay; + + + + We now describe each function's semantics and calling convention. + + The brl_identify() function takes no argument and returns nothing. It + is called as soon as the driver is loaded, and its purpose is to print + some information about the driver in the system log. To achieve this, + the only thing this function has to do is to call LOG_PRINT with + appropriate arguments (log level and string to put in the syslog). + + The brl_open() function takes 3 arguments and returns an int. Its + purpose is to initialize the communication with the braille terminal. + Generally, this function has to open the file referred to by the tty + argument, and to configure the associated communication port. The + parameters argument contains parameters passed to the driver with the + -B command-line option. It's up to the driver's author to decide + wether or not he/she wants to use this argument, and what for. The + function can perform some additional tasks such as trying to identify + precisely which braille terminal model is connected to the computer, + by sending it a request and analyzing its answer. The value that is + finally returned depends on the success of the initialization process. + If it fails, th function has to return -1. The function returns 0 on + success. + + The brl_close() function takes just one argument, and returns nothing. + The name of this function should be self-explanatory; it's goal is to + close (finish) the communication between the computer and the braille + terminal. In general, the only thing this function has to do is to + close the file descriptor associated to the braille terminal's + communication port. + + The brl_writeWindow() function takes just one argument of type + BrailleDisplay, and returns nothing. This function displays the + specified text on the braille window. This routine is the right place + to check if the text that has to be displayed is not already on the + braille display, to send it only if necessary. More generally, if the + braille terminal supports partial refresh of the display, the calculus + of what exactly has to be sent to the braille display to have a proper + display, according to what was previously displayed should be done in + this function. + + The brl_writeStatus() function is very similar to brl_writeWindow(). + The only difference is that whereas brl_writeWindow() writes on the + main braille display, brl_writeStatus() writes on an auxiliary braille + display, which occasionaly appears on some braille terminals. The + remarks that have been done concerning optimizations for refreshing + the display still apply here. + + The brl_readCommand() function takes two arguments, and returns an + integer. Its purpose is to read commands from the braille keyboard and + to pass them to brltty's core, which in turn will process them. The + first argument, of type BrailleDisplay, is for future use, and can + safely be ignored for the moment. The second argument indicates in + which context (state) brltty is. For instance, it specifies if brltty + is in a menu, displays a help screen, etc. This information can indeed + be of some interest when translating a key into a command, especially + if the keys can have different meanings, depending on the context. So, + this function has to read keypresses from the braille keyboard, and to + convert them into commands, according to the given context, these + commands then being returned to brltty. For a complete list of + available command codes, please have a look at brl.h in the Programs + subdirectory. Two codes have special meanings: + + + + eof + specifies that no command is available now, and that no key is + waiting to be converted into command in a near future. + + + CMD_NOOP + specifies that no command is available, but that one will be, + soon. As a consequence, brl_readCommand will be called again + immediately. Returning CMD_NOOP is appropriate for instance when + a key is composed of two consecutive data packets. When the + first of them is received, one can expect that the second will + arrive quickly, so that trying to read it as soon as possible is + a good idea. + + + + 6.3. Enhancements for BrlAPI + + To improve the level of service provided to client applications + communicating with braille drivers through BrlAPI, the drivers should + declare some additional functions that will then be called by the API + when needed. + + For each additional feature that has to be implemented in a driver, a + specific macro must be defined, in addition to the functions + implementing that feature. For the moment, two features are supported + by BrlAPI: + + + · reading braille terminal specific key codes, + + · exchanging raw data packets between the braille terminal and a + client application running on the PC. + + For each feature presented below, only a short description of each + concerned macro and function will be given. For a more complete + description of concepts used here, please refer to chapters + ``Introduction'' and ``General description''. + + + 6.3.1. Reading braille key codes + + When a client takes control of a tty and asks for getting raw key + codes, it has, like in command mode, the possibility to mask some + keys. The masked keys will then be passed to brltty. This assumes the + existence of a conversion mechanism from key codes to brltty commands. + This conversion mechanism can only be implemented by the braille + driver, since it is the only piece of code that knows about braille + terminal specific key codes. So, to make it possible for client + applications to read raw key codes, the driver has to define the + following macro: + + #define BRL_HAVE_KEY_CODES + + + and the following functions: + + static int brl_readKey(BrailleDisplay *) + int brl_keyToCommand(BrailleDisplay *brl, DriverCommandContext caller, int code) + + + + The semantics of brl_readKey() is very similar to brl_readCommand()'s, + with one essential difference: a key code is not context-dependant, so + no context argument needs to be given to this function. Moreover, the + code this function returns is driver-specific, and has to be properly + defined by the driver's author so that client applications can rely on + it. + + The brl_keyToCommand() function's purpose is to convert a key code as + delivered by brl_readKey() into a brltty command. As explained above, + this function is called by brlapi when a key is pressed on the braille + keyboard that is ignored by the client application. The corresponding + command is then returned to brltty. + + + 6.3.1.1. Remarks + + When these two functions are present, the only thing brl_readCommand() + has to do is to call brl_readKey() and then call brl_keyToCommand() + with the value returned by the first function as argument. + + + 6.3.2. Exchanging raw data packets + + Under some circumstances, an application running on the PC can be + interested in a raw level communication with the braille terminal. For + instance, to implement a file transfer protocol, commands to display + braille or to read keys are not enough. In such a case, one must have + a way to send raw data to the terminal, and to receive them from it. + + A driver that wants to provide such a mechanism has to define three + functions: one to send packets, another one to receive them, and the + last one to reset the communication when problems occur. + + The macro that declares that a driver is able to transmit packets is: + + + #define BRL_HAVE_PACKET_IO + + + + The prototypes of the functions the driver should define are: + + + static int brl_writePacket(BrailleDisplay *brl, const unsigned char *packet, int size); + static int brl_readPacket(BrailleDisplay *brl, unsigned char *p, int size); + static void brl_rescue(BrailleDisplay *brl) + + + + brl_writePacket() sends a packet of size bytes, stored at packet, to + the braille terminal. If the communication protocol allows to + determined if a packet has been send properly (e.g. the terminal sends + back an acknowledgement for each packet he receives), then this + function should wait the acknowledgement, and, if it is not received, + retransmission of the packet should take place. + + brl_readPacket() reads a packet of at most size bytes, and stores it + at the specified address. The read must not block. I.e., if no packet + is available, the function should return immediately, returning 0. + + brl_rescue() is called by BrlAPI when a client application terminates + without properly leaving the raw mode. This function should restore + the terminal's state, so that it is able to display text in braille + again. + + + 6.3.2.1. Remarks. + + + · If the driver provides such functions, every other functions should + use them, instead of trying to communicate directly with the + braille terminal. For instance, readCommand() should call + readPacket(), and then extract a key from the packet, rather than + reading directly from the communication port's file descriptor. The + same applies for brl_writeWindow(), which should use + brl_writePacket(), rather than writing on the communication port's + file descriptor. + + · For the moment, the argument of type BrailleDisplay can safely be + ignored by the functions described here. + + + 7. Protocol reference + + Under some circumstances, it may be preferable to communicate directly + with BrlAPI's server rather than using BrlAPI's library. Here are the + needed details to be able to do this. This chapter is also of interest + if a precise understanding of how the communication stuff works is + desired, to be sure to understand how to write multithreaded clients, + for instance. + + In all the following, integer will mean an unsigned 32 bits integer in + network byte order (ie most significant bytes first). + + + 7.1. Reliable packet transmission channel + + The protocol between BrlAPI's server and clients is based on exchanges + of packets. So as to avoid locks due to packet loss, these exchanges + are supposed reliable, and ordering must be preserved, thus BrlAPI + needs a reliable packet transmission channel. + + + To achieve this, BrlAPI uses a TCP-based connection, on which packets + are transmitted this way: + + + · the size in bytes of the packet is transmitted first as an integer, + + · then the type of the packet, as an integer, + + · and finally the packet data. + + + The size does not include the { size, type } header, so that packets + which don't need any data have a size of 0 byte. The type of the + packet can be either of BRLAPI_PACKET_* constants defined in + api_protocol.h. Each type of packet will be further discussed below. + + + BrlAPI's library ships two functions to achieve packets sending and + receiving using this protocol: brlapi_writePacket and + brlapi_readPacket. It is a good idea to use these functions rather + than rewriting them, since this protocol might change one day in favor + of a real reliable packet transmission protocol such as the + experimental RDP. + + + 7.2. Responses from the server + + As described below, many packets are `acknowledged'. It means that + upon reception, the server sends either: + + + · a BRLAPI_PACKET_ACK packet, with no data, which means the operation + corresponding to the received packet was successful, + + · or a BRLAPI_PACKET_ERROR packet, the data being an integer which + should be one of BRLAPI_ERROR_* constants. This means the operation + corresponding to the received packet failed. + + + Some other packets need some information as a response. Upon + reception, the server will send either: + + + · a packet of the same type, its data being the response, + + · or a BRLAPI_PACKET_ERROR packet. + + + If at some point an ill-formed or non-sense packet is received by the + server, and BRLAPI_PACKET_EXCEPTION is returned, holding the guilty + packet for further analysis. + + + + 7.3. Operating modes + + The connection between the client and the server can be in either of + the four following modes: + + + · authorization mode: this is the initial mode, when the client + hasn't got the authorization to use the server yet. The server + first sends a BRLAPI_PACKET_VERSION packet that announces the + server version. The client must send back a BRLAPI_PACKET_VERSION + for announcing its own version too. The server then sends a + BRLAPI_PACKET_AUTH packet that announces which authorization + methods are allowed. The client can then send BRLAPI_PACKET_AUTH + packets, which makes the connection enter normal mode. If no + authorization is needed, the server can announce the NONE method, + the client then doesn't need to send a BRLAPI_PACKET_AUTH packet. + + + + · normal mode: the client is authorized to use the server, but didn't + ask for a tty or raw mode. The client can send either of these + types of packet: + + · BRLAPI_PACKET_GETDRIVERID, BRLAPI_PACKET_GETDRIVERNAME or + BRLAPI_PACKET_GETDISPLAYSIZE to get pieces of information from + the server, + + · BRLAPI_PACKET_ENTERTTYMODE to enter tty handling mode, + + · BRLAPI_PACKET_ENTERRAWMODE to enter raw mode, + + + + · tty handling mode: the client holds the control of a tty: brltty + has no power on it any more, masked keys excepted. It's up to the + client to manage display and keypresses. For this, it can send + either of these types of packet: + + · BRLAPI_PACKET_ENTERTYMODE to switch to another tty, but how key + presses should be sent mustn't change, + + · BRLAPI_PACKET_LEAVETTYMODE to leave tty handling mode and go + back to normal mode, + + · BRLAPI_PACKET_IGNOREKEYRANGE, BRLAPI_PACKET_ACCEPTKEYRANGE, + BRLAPI_PACKET_IGNOREKEYSET, BRLAPI_PACKET_ACCEPTKEYSET to mask + and unmask keys, + + · BRLAPI_PACKET_WRITE to display text on this tty, + + · BRLAPI_PACKET_ENTERRAWMODE to enter raw mode, + + · BRLAPI_PACKET_GETDRIVERID, BRLAPI_PACKET_GETDRIVERNAME or + BRLAPI_PACKET_GETDISPLAYSIZE to get pieces of information from + the server, + + And the server might send BRLAPI_PACKET_KEY packets to signal key + presses. + + + · raw mode: the client wants to exchange packets directly with the + braille terminal. Only these types of packet will be accepted. + + · BRLAPI_PACKET_LEAVERAWMODE to get back to previous mode, either + normal or tty handling mode. + + · BRLAPI_PACKET_PACKET to send a packet to the braille terminal. + + And the server might send BRLAPI_PACKET_PACKET packets to give + received packets from the terminal to the client. + + · suspend mode: the client wants to completely drive the braille + terminal. The device driver is hence kept closed. No type of + packet is allowed except BRLAPI_PACKET_RESUME + + Termination of the connection is initiated by the client in normal + mode by simply closing its side of the socket. The server will then + close the connection. + + + + 7.4. Details for each type of packet + + Here is described the semantics of each type of packet. Most of them + are directly linked to some of BrlAPI's library's functions. Reading + their online manual page as well will hence be of good help for + understanding. + + + 7.4.1. BRLAPI_PACKET_VERSION This must be the first packet ever + transmitted from the server to the client and from the client to the + server. The server sends one first for letting the client know its + protocol version. Data is an integer indicating the protocol version. + Then client must then respond the same way for giving its version. If + the protocol version can't be handled by the server, a + BRLAPI_ERROR_PROTOCOL_VERSION error packet is returned and the con- + nection is closed. + + 7.4.2. BRLAPI_PACKET_AUTH + + This must be the second packet ever transmitted from the server to the + client and from the client to the server. The server sends one first + for letting the client know which authorization methods are available. + Data is the allowed authorization types, as integers. + + If the NONE method is not announced by the server, the client can then + try to get authorized by sending packets whose data is the type of + authorization that is tried (as an integer), and eventually some data + (if the authorization type needs it). + + If the authorization is successful, the server acknowledges the + packet, and other types of packets might be used, other + BRLAPI_PACKET_AUTH shouldn't be sent by the client. + + If the authorization is not successful, the server sends a + BRLAPI_ERROR_AUTHENTICATION error, and the client can try another + authorization method. + + Authorization methods are as follow: + + + · NONE: the client doesn't need to send an authorization packet. + + · KEY: data holds a secret key, the authorization is successful only + if the key matches the server secret key. + + · CREDENTIALS: Operating-System-specific credentials are explicitely + sent over the socket, the authorization is successful if the server + considers the credentials sufficient. + + Note: when the Operating system permits it, the server may use + implicit credential check, and then advertise the none method. + 7.4.3. BRLAPI_PACKET_GETDRIVERID (see brlapi_getDriverId() ) + + This should be sent by the client when it needs the 2-char identifier + of the current brltty driver. The returned string is \0 terminated. + + + 7.4.4. BRLAPI_PACKET_GETDRIVERNAME (see brlapi_getDriverName() ) + + This should be sent by the client when it needs the full name of the + current brltty driver. The returned string is \0 terminated. + + + 7.4.5. BRLAPI_PACKET_GETDISPLAYSIZE (see brlapi_getDisplaySize() ) + + This should be sent by the client when it needs to know the braille + display size. The returned data are two integers: width and then + height. + + + 7.4.6. BRLAPI_PACKET_ENTERTTYMODE (see brlapi_enterTtyMode() and + brlapi_enterTtyModeWithPath() ) + + This should be sent by the client to get control of a tty. Sent data + are first a series of integers: the first one gives the number of + following integers, which are the numbers of ttys that leads to the + tty that the application wants to take control of (it can be empty if + the tty is one of the machine's VT). The last integer of this series + tells the number of the tty to get control of. Finaly, how key presses + should be reported is sent: either a driver name or "", preceded by + the number of caracters in the driver name (0 in the case of ""), as + an unsigned byte. This packet is then acknowledged by the server. + + + 7.4.7. BRLAPI_PACKET_KEY (see brlapi_readKey() ) + + As soon as the client gets a tty, it must be prepared to handle + BRLAPI_PACKET_KEY incoming packets at any time (as soon as the key was + pressed on the braille terminal, hopefuly). The data holds a key code + as 2 integers, or the key flags then the command code as 2 integers, + depending on what has been request in the BRLAPI_PACKET_ENTERTTYMODE + packet. + + + 7.4.8. BRLAPI_PACKET_SETFOCUS (see brlapi_setFocus() ) + + For the server to know which tty is active, one particular client is + responsible for sending BRLAPI_PACKET_SETFOCUS packets. They hold a + single integer telling the new current tty. For instance, when running + an X server on VT 7, the xbrlapi client would have sent a + BRLAPI_PACKET_ENTERTTYMODE(7) and will send window IDs whenever X + focus changes, allowing display and keypresses switching between + xterms. + + + 7.4.9. BRLAPI_PACKET_LEAVETTYMODE (see brlapi_leaveTtyMode() ) + + This should be sent to free the tty and masked keys lists. This is + acknowledged by the server. + + + 7.4.10. BRLAPI_PACKET_IGNOREKEYRANGE , BRLAPI_PACKET_ACCEPTKEYRANGE , + BRLAPI_PACKET_IGNOREKEYSET and BRLAPI_PACKET_ACCEPTKEYSET (see + brlapi_ignoreKeyRange() , brlapi_acceptKeyRange() , brlapi_ignoreKey- + Set() , and brlapi_acceptKeySet() ) + + + If the client doesn't want every key press to be signaled to it, but + some of them to be given to brltty for normal processing, it can send + BRLAPI_PACKET_IGNOREKEYRANGE (resp. BRLAPI_PACKET_IGNOREKEYSET) + packets to tell ranges (resp. sets) of key codes which shouldn't be + sent to it, but given to brltty, and BRLAPI_PACKET_ACCEPTKEYRANGE + (resp. BRLAPI_PACKET_ACCEPTKEYSET) packets to tell ranges (resp. sets) + of key codes which should be sent to it, and not given to brltty. The + server keeps a dynamic list of ranges, so that arbitrary sequences of + such packets can be sent. For ranges, Data are 2 pairs of integers: + the lower and the upper boundaries; lower and upper must be equal to + tell one key, for instance. For Sets, Data simply consists of pairs + of integers, one per key in the set. + + + 7.4.11. BRLAPI_PACKET_WRITE (see brlapi_write() ) + + To display text on the braille terminal and set the position of the + cursor, the client can send a BRLAPI_PACKET_WRITE packet. The packet + begins with an integer holding flags (see BRLAPI_WF_*). These flags + indicate which data will then be available, in the following order + (corresponding to flag weight): + + + · A display number can be given as a integer, in case the braille + display has several. If not given, usual display is used. + + · A region must be given as two integers indicating the beginning and + the number of characters of the part of the braille display which + is to be updated, the first cell of the display being numbered 1. + + · The text to display can then be given, preceded by its size in + bytes expressed as an integer. It will erase the corresponding + region in the AND and OR fields. The text's length in characters + must exactly match the region size. For multibyte text, this is the + number of wide characters. Notably, combining and double-width + characters count for 1. + + · Then an AND field can be given, one byte per character: the 8-dot + representation of the above text will be AND-ed with this field, + hence allowing to erase some unwanted parts of characters. Dots are + coded as described in ISO/TR 11548-1: dot 1 is set iff bit 0 is + set, dot 2 is set iff bit 1 is set, ... dot i+1 is set if bit i is + set. This also corresponds to the low-order byte of the coding of + unicode's braille row U+2800. + + · As well, an OR field may be given, one byte per character: the + 8-dot result of the AND operation above (or the 8-dot + representation of the text if no AND operation was performed) is + OR-ed with this field, hence allowing to set some dots, to + underline characters for instance. + + · A cursor position can be specified. 1 representing the first + character of the display, 0 turning the cursor off. If not given, + the cursor (if any) is left unmodified. + + · Last but not least, the charset of the text can be specified: the + length of the name first in one byte, then the name itself in ASCII + characters. If the charset is not specified, an 8-bit charset is + assumed, and it is assumed to be the same as the server's. + Multibyte charsets may be used, AND and OR fields' bytes will + correspond to each text's wide character, be it a combining or a + double-width character. + + A BRLAPI_PACKET_WRITE packet without any flag (and hence no data) + means a "void" WRITE: the server clears the output buffer for this + connection. + 7.4.12. BRLAPI_PACKET_ENTERRAWMODE (see brlapi_enterRawMode() ) + + To enter raw mode, the client must send a BRLAPI_PACKET_ENTERRAWMODE + packet, which is acknowledged. Once in raw mode, no other packet than + BRLAPI_PACKET_LEAVERAWMODE or BRLAPI_PACKET_PACKET will be accepted. + The data must hold the special value BRLAPI_DEVICE_MAGIC: 0xdeadbeef, + then the name of the driver (one byte for the length, then the name) + to avoid erroneous raw mode activating. + + + 7.4.13. BRLAPI_PACKET_LEAVERAWMODE (see brlapi_leaveRawMode() ) + + To leave raw mode, the client must send a BRLAPI_PACKET_LEAVERAWMODE + packet, which is acknowledged. + + + 7.4.14. BRLAPI_PACKET_PACKET (see brlapi_sendRaw() and + brlapi_recvRaw() ) + + While in raw mode, only BRLAPI_PACKET_PACKET packets can be exchanged + between the client and the server: to send a packet to the braille + terminal, the client merely sends a BRLAPI_PACKET_PACKET packet, its + data being the packet to send to the terminal. Whenever its receives a + packet from the terminal, the server does exactly the same, so that + packet exchanges between the terminal and the server are exactly + reproduced between the server and the client. + + + 7.4.15. BRLAPI_PACKET_SUSPENDDRIVER (see brlapi_suspendDriver() ) + + To enter suspend mode, the client must send a BRLAPI_PACKET_SUSPEND + packet, which is acknowledge. Once in suspend mode, no other packet + than BRLAPI_PACKET_RESUME will be accepted. The data must hold the + special value BRLAPI_DEVICE_MAGIC: 0xdeadbeef, then the name of the + driver (one byte for the length, then the name) to avoid erroneous raw + mode activating. + + + diff --git a/Documents/Manual-BrlAPI/English/Makefile.in b/Documents/Manual-BrlAPI/English/Makefile.in index 8d4e489e62a2b14026b7b15642b493eca4b847b4..bbfc6427c2b0939483ba90faaf99b1d3316ec608 100644 --- a/Documents/Manual-BrlAPI/English/Makefile.in +++ b/Documents/Manual-BrlAPI/English/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/Documents/Manual-BrlAPI/English/html.made b/Documents/Manual-BrlAPI/English/html.made new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Documents/README.Gnopernicus b/Documents/README.Gnopernicus deleted file mode 100644 index 6955baa7c1912091ad6bc50fe4963b886b9450c4..0000000000000000000000000000000000000000 --- a/Documents/README.Gnopernicus +++ /dev/null @@ -1,356 +0,0 @@ -Introduction -============ - -As of version 0.3.4 (released in July of 2003), Gnopernicus contains a braille -driver for BRLTTY. This means that you can now use Gnopernicus with any braille -display that is supported by BRLTTY. Although support is far from complete, -basic braille displaying, as well as key transmission, work fine. - - -Configuring BRLTTY -================== - -Gnopernicus uses BrlAPI (a general-purpose braille-enabling application -programming interface). - -After installation, but *before* launching the new BRLTTY, please check that a -BrlAPI authorization key has been defined. If the file /etc/brlapi.key either -doesn't exist or is empty then you need to generate a key. The easiest way to -do this is: - - echo some-string >/etc/brlapi.key - -Easiest, of course and as usual, doesn't necessarily mean best. It's much -better for this kind of data to be unpredictable. If, therefore, a random data -source is available then it should be used. - -If you have the mcookie command then you can do: - - mcookie >/etc/brlapi.key - -If you have the dd command and the /dev/random device then you can do: - - dd if=/dev/random of=/etc/brlapi.key bs=32 count=1 - -If there's the slightest possibility that even just one untrustworthy user can -access your system then you should seriously consider ensuring that the file -containing the authorization key for BrlAPI can only be accessed by those -users who actually need to use the braille display. If there's only one braille -user then it's easy. Just make him the owner of the file and ensure that noone -else can access it. - - chown whoever /etc/brlapi.key - chmod 600 /etc/brlapi.key - -If there's more than one braille user then it's a little more complicated. -Create a new group with a meaningful name (like, say, brlapi), make the file -readable to that group but not to anyone else, and ensure that each braille -user is a member of that group. - - groupadd brlapi - chgrp brlapi /etc/brlapi.key - chmod 640 /etc/brlapi.key - usermod -G brlapi user1 - usermod -G brlapi user2 - ... - - -Compiling Gnopernicus -===================== - -Gnopernicus must be linked against the libbrlapi.so which comes with the -currently running BRLTTY. Whenever the version of this shared object changes -(only the first two digits matter, e.g. libbrlapi.so.0.2.0 upgraded to -libbrlapi.so.3.0.0 but not libbrlapi.so.0.3.0 upgraded to libbrlapi.so.0.3.1), -you must rebuild (compile and link) Gnopernicus so as to make it use the -correct interface. - -If the build fails then one thing you should try is replacing the Gnopernicus -source file braille/libbrl/ttybrl.c with the one provided by BRLTTY in -Patches/ttybrl.c. - - -Configuring Gnopernicus -======================= - -You need to ensure that the braille-related accessibility features of Gnome are -set correctly, i.e. that Accessibility is enabled, that Braille Support is -enabled, and that the Braille Device is set to "BRLTTY". Gnopernicus, at start -time, automatically checks these settings, and, for each feature which isn't -enabled, displays a dialogue which asks the user if it should be. Since a blind -user can't see these dialogues, and, therefore, may experience what he believes -to be an unexpected hang when starting Gnopernicus, other means have been -provided so that he can ensure that they're correct ahead of time. They may be -preconfigured via Gnopernicus command-line options, via the generic Gnome -command-line configuration tool, or, if sighted assistance is available, from -the Gnome desktop. All of these methods, in that order, are described below. - - -Gnopernicus Command-line Options --------------------------------- - -As of Gnopernicus 0.7, the following command-line options are supported. - - -b --enable-braille Enable the Braille service. - -B --disable-braille Disable the Braille service. - -s --enable-speech Enable the Speech service. - -S --disable-speech Disable the Speech service. - -m --enable-magnifier Enable the Magnifier service. - -M --disable-magnifier Disable the Magnifier service. - -o --enable-braille-monitor Enable the on-screen Braille Monitor. - -O --disable-braille-monitor Disable the on-screen Braille Monitor. - -e --braille-device= The braille device type (should be BRLTTY). - -p --braille-port=ttyS The serial port (not relevant for BRLTTY). - -To get Gnopernicus to operate your braille display via BRLTTY, the minimum set -of options you must specify is: - - -b -e BRLTTY - -These options make permanent changes to the Gnome Accessibility settings so you -only need to specify them when you invoke Gnopernicus for the first time. -Specifying them on every invocation isn't wrong, but you should be aware that -this approach will undo any subsequent changes to the settings made via the -Gnome Desktop. - - -The Generic Gnome Command-line Configuration Tool -------------------------------------------------- - -There's a command-line interface to the Gnome configuration system (gconf) -called "gconftool-2". You can get verbose help for it with "gconftool-2 --help" -or something shorter with "gconftool-2 --usage". - -You can check the current setting of any key with: - - gconftool-2 --get - -You can change the setting of any key with: - - gconftool-2 --type --set - -To check if Assistive Technology Support (Accessibility) is enabled, for -example, do: - - gconftool-2 --get /desktop/gnome/interface/accessibility - -If it's disabled (set to false) and you'd like to permanently enable it, set it -to true as follows: - - gconftool-2 --type bool --set /desktop/gnome/interface/accessibility true - -There's also a way to temporarily (for a single session) enable Accessibility. -This is done by setting the environment variable GNOME_ACCESSIBILITY to 1. - - sh: GNOME_ACCESSIBILITY=1; export GNOME_ACCESSIBILITY - ksh: export GNOME_ACCESSIBILITY=1 - csh: setenv GNOME_ACCESSIBILITY 1 - -The relevant gconf keys are: - -[turn Accessibility on (as just described above)] - gconftool-2 --type bool --set /desktop/gnome/interface/accessibility true - -[turn Braille on] - gconftool-2 --type bool --set /apps/gnopernicus/srcore/br_active true - -[set Braille Device to BRLTTY's BrlAPI] - gconftool-2 --type string --set /apps/gnopernicus/braille/device BRLTTY - -[set Braille Translation Table to your preferred language] - gconftool-2 --type string --set /apps/gnopernicus/braille/translation_table - English: en_US (American) - German: de - Spanish: es - Swedish: sv - -[turn the on-screen Braille Monitor (for sighted users) off] - gconftool-2 --type bool --set /apps/gnopernicus/srcore/bm_active false - -[turn Speech off] - gconftool-2 --type bool --set /apps/gnopernicus/srcore/sp_active false - - -Configuration via the Gnome Desktop ------------------------------------ - -To enable Assistive Technologies Support (Accessibility), do: Alt-F1 -> -"Desktop Preferences" -> "Accessibility" -> "Assistive Technology Support" - -If "Enable Assistive Technologies" isn't checked, then check it, log out, and -log back in again. - -If the main Gnopernicus window isn't visible, do: Alt-F1 -> "Accessibility" -> -"Screen Reader" - -From the main Gnopernicus window, select: "Startup Mode" - -In this menu, check the checkbox with the label "Active Components Braille". -This activates braille support, and makes the "Braille Preferences" window -available. - -Now click "OK" to apply the change and close the window. - -From the main Gnopernicus window again, select: "Preferences" -> "Braille" - -Select "Braille Device", set it to "BRLTTY's BrlAPI", and click "OK" to apply -the change. - -Select "Translation Table", set it to your preferred language, and click "OK" -to apply the change. - -Make any other changes which more accurately tailor Gnopernicus's braille -support to your own personal needs, then "Close" the "Braille Preferences" -window, and, finally, "Close" the "Preferences" window. - -Braille should start working as soon as all needed configuration changes have -been made. - - -Starting Gnome -============== - -Here's a sample .xinitrc file for starting Gnome under the Garnome -distribution. The accessibility key is set in the file to ensure that it is -true. The environment variable GTK_MODULES seems to be necessary to make -everything accessible. The .xinitrc file must be placed in your home directory -and is used when you type "startx" to start the X-server. - - ------------------------------------------------------------------------------ - #!/bin/sh - - # Define environment variables. - GARNOME=$HOME/garnome - PATH=$GARNOME/bin:$PATH - LD_LIBRARY_PATH=$GARNOME/lib:$LD_LIBRARY_PATH - PYTHONPATH=$GARNOME/lib/python2.2/site-packages - PKG_CONFIG_PATH=$GARNOME/lib/pkgconfig:/usr/lib/pkgconfig - GDK_USE_XFT=1 - GTK_MODULES=gail:atk-bridge - export PATH LD_LIBRARY_PATH PYTHONPATH PKG_CONFIG_PATH GDK_USE_XFT GTK_MODULES - - # Configure Gnome. - gconftool-2 --type bool --set /desktop/gnome/interface/accessibility true - - # Tell Gnopernicus which virtual terminal is being used by the X display. - # This is a bit complicated so cut-and-paste (rather than retype) it. - CONTROLVT="$(grep "using VT number" "/var/log/XFree86.$(echo "$DISPLAY" | sed -e "s/^.*::*\([0-9]*\).*$/\1/").log" | sed -e "s/^.*using VT number \([0-9]*\).*$/\1/")" - export CONTROLVT - - # Start the Gnome session. - exec $GARNOME/bin/gnome-session - ------------------------------------------------------------------------------ - - -Starting Gnopernicus -==================== - -Gnopernicus is started from a file in your home directory which Gnome reads -when it starts up. While Gnome provides a GUI for adding startup programs, -there's no proper command-line or script way to do so yet. You can, however, -manually edit the session file as follows: - -1) Create the directory "~/.gnome2" if it doesn't exist yet. -2) Create the file "~/.gnome2/session-manual" if it doesn't exist yet. -3) Contents of the "session-manual" file (without the indentation): - - - [Default] - num_clients=1 - 0,RestartStyleHint=3 - 0,Priority=60 - 0,RestartCommand=gnopernicus - - -Key Mappings -============ - -This driver assumes that Gnopernicus key bindings remain at their default -settings. Changing Gnopernicus's key bindings may interfere with the user's -ability to accurately and/or predictably control window navigation when using -BRLTTY. - - -Original Mappings ------------------ - -The original way in which BRLTTY commands were mapped to Gnopernicus functions -wasn't very practical. It's still documented here, though, in case the version -of Gnopernicus which you're running is still using it. It is as follows: - - BRLTTY Gnopern Functional - Command Binding Description - -------------- -------- ----------- - BRL_CMD_LNUP DK00 Go to parent object - BRL_CMD_HOME DK01 Go to object with focus - BRL_CMD_LNDN DK02 Go to child object - BRL_CMD_FWINLT DK03 Go to previous object - BRL_CMD_FWINRT DK05 Go to next object - BRL_CMD_CHRLT L09K01 Move left one character - BRL_CMD_CHRRT L09K03 Move right one character - BRL_CMD_HWINLT L09K04 Move left one display-width - BRL_CMD_HWINRT L09K06 Move right one display-width - BRL_BLK_ROUTE HMSnn Route (bring) cursor to character - - -Current Mappings ----------------- - -The current way in which BRLTTY commands are mapped to Gnopernicus functions is -listed below. If the version of Gnopernicus which you're running isn't yet -using it then copy the file ttybrl.c from the Patches/ subdirectory of BRLTTY's -source tree to the braille/libbrl/ subdirectory of Gnopernicus's source tree, -and then rebuild Gnopernicus. - - BRLTTY Gnopern Functional - Command Binding Description - -------------- ------- ----------- - BRL_CMD_TOP_LEFT L00K07 Go to title - BRL_CMD_BOT_LEFT L00K03 Go to status bar - BRL_CMD_TOP L00K09 Go to menu - BRL_CMD_BOT L00K01 Go to tool bar - BRL_CMD_HOME L00K12 Go to object with focus - BRL_CMD_PRPROMPT L00K08 Go to parent object - BRL_CMD_NXPROMPT L00K02 Go to child object - BRL_CMD_PRPGRPH L00K15 Go to first object - BRL_CMD_NXPGRPH L00K14 Go to last object - BRL_CMD_LNUP L00K04 Go to previous object - BRL_CMD_LNDN L00K06 Go to next object - BRL_CMD_FREEZE L00K10 Toggle focus-tracking/flat-review mode - BRL_CMD_FWINLT L09K04 Move one display-width left - BRL_CMD_FWINRT L09K06 Move one display-width right - BRL_CMD_CHRLT L09K01 Move one character left - BRL_CMD_CHRRT L09K03 Move one character right - BRL_CMD_SAY_SOFTER L08K01 Decrease speech volume - BRL_CMD_SAY_LOUDER L08K03 Increase speech volume - BRL_CMD_SAY_SLOWER L08K04 Decrease speech rate - BRL_CMD_SAY_FASTER L08K06 Increase speech rate - BRL_BLK_ROUTE HMSnn Route (bring) cursor to character - - -Getting the Routing Keys to Work --------------------------------- - -The routing keys won't work until their action has been configured. To -configure them, do the following: - -Go to Gnopernicus's "Preferences" dialog (option 2 in its main menu). - -Choose "Braille Preferences" (option 2 in the Preferences dialog). - -Choose "Braille key mapping" (option 5 in the Braille Preferences dialog). - -You will now be on the "Position Sensors" page tab. Press the radio button -which says "Position sensors move caret" (which should be the fifth radio -button). - -Select "Apply" followed by "OK" to close the dialog. - -You will be back in the Braille Preferences dialog. Click its "Close" button to -close it. - -You will be back in the main Preferences dialog. Click its "Close" button to -close it. - -Be aware that your routing keys will only work in those contexts which actually -have a caret. diff --git a/Documents/README.Seika b/Documents/README.Seika new file mode 100644 index 0000000000000000000000000000000000000000..198663a4e027c59741e1f90c76ac5d060c57cd92 --- /dev/null +++ b/Documents/README.Seika @@ -0,0 +1,44 @@ +BRLTTY doesn't yet have a native driver for Seika braille displays. They, +however, also emulate TSI PowerBraille displays, and, therefore, can still be +used with BRLTTY via its TSI braille driver. + +The TSI driver expects a serial device whereas a Seika is connected via USB. +This isn't a problem on Linux because the kernel automatically creates a pseudo +serial device as soon as the Seika is connected. These devices have names of +the form ttyUSB, where is a non-negative decimal integer, and, as is +true on all Unix-like systems, are in the /dev/ directory. Note that case is +critical - the "tty" part of the name is in lowercase whereas the "USB" part of +the name is in uppercase. + +To know which ttyUSB device is your Seika, check which of them you already +have before connecting it, and then check again after it has been connected. +The easiest way to check which ttyUSB devices you have is via this command: + + ls /dev/ttyUSB* + +If you don't have any then the output will look like this: + + ls: /dev/ttyUSB*: No such file or directory + +If you do then the output will look like this: + + /dev/ttyUSB0 /dev/ttyUSB1 + +You need to tell BRLTTY which device your Seika is connected to. This is done +via the -d option. If, for example, it's connected to ttyUSB0 then you'd +specify -dserial:ttyUSB0. You also need to tell BRLTTY to use its TSI braille +driver by specifying the -bts option. The command line to start BRLTTY would +look like this: + + brltty -bts -dserial:ttyUSB0 + +If you prefer not having to specify these options all the time then you can +define them as system defaults by adding lines like the following to +/etc/brltty.conf: + + braille-driver ts + braille-device serial:ttyUSB0 + +Remember that the device ttyUSB0 is only being used here as an example. You +must determine which device your Seika is really connected to and specify it +instead. diff --git a/Documents/README.Windows b/Documents/README.Windows index e6b46ab6e5a27cc59632b3c1c48d6ca808240224..8a9a81d544e967e480245ca6c93cdbc5c1bf0a0f 100644 --- a/Documents/README.Windows +++ b/Documents/README.Windows @@ -120,6 +120,17 @@ option builds BRLTTY such that relative paths are used. ------------------------------------------------------------------------------ +Sticking to a console +===================== + +It may be useful to have BRLTTY only review the console it is started in, i.e. +for it not to follow the keyboard focus. To achieve this, set the FollowFocus +parameter of the Windows screen driver to no. This can be done either on the +command line (-XFollowFocus=no) or in brltty.conf (screen-parameter +FollowFocus=no). + +------------------------------------------------------------------------------ + Sharing the Braille Display with Other Screen Readers ===================================================== diff --git a/Documents/brltty.1.in b/Documents/brltty.1.in index a41f1367b7dd2a65eea4b040d1c687c976955e46..74e51fcfc2379802ba13b7105018b084cc774479 100644 --- a/Documents/brltty.1.in +++ b/Documents/brltty.1.in @@ -1,4 +1,4 @@ -.TH "BRLTTY" "1" "October 2007" "brltty 3.9" "The BRLTTY Project" +.TH "BRLTTY" "1" "May 2009" "brltty 4.0" "The BRLTTY Project" .SH NAME brltty \- refreshable braille display driver for Linux/Unix .SH SYNOPSIS @@ -43,10 +43,10 @@ The path to the attributes translation table. Relative paths are anchored at .BR "/etc/brltty/" "." The -.B ".tbl" +.B ".atb" extension is optional. The built-in default is -.BR "attributes.tbl" "." +.BR "attributes.atb" "." .TP \fB-b \fIdriver\fB,\fR...|\fBauto\fR (\fB--braille-driver=\fR) The driver for the braille display @@ -234,13 +234,10 @@ The path to the text translation table. Relative paths are anchored at .BR "/etc/brltty/" "." The -.B ".tbl" +.B ".ttb" extension is optional. -For a simple file name, the -.B "text." -prefix is optional. The built-in default is -.B "text.nabcc.tbl" +.B "nabcc.ttb" (the North American Braille Computer Code). .TP \fB-v\fR (\fB--verify\fR) @@ -291,6 +288,17 @@ Relative paths are anchored at The built-in default is that no FIFO is created. .TP +\fB-I\fR (\fB--install-service\fR) +(Windows only) +Install +.B brltty +as the +.B BrlAPI +service so that it will be automatically started when the system is booted +and so that applications can know that a +.B BrlAPI +server is running. +.TP \fB-M \fIcsecs\fR (\fB--message-delay=\fR) The message hold time in hundredths of a second. The built-in default is @@ -309,6 +317,17 @@ The file is removed when .B brltty terminates. .TP +\fB-R\fR (\fB--remove-service\fR) +(Windows only) +Remove the +.B BrlAPI +service so that +.B brltty +will not be automatically started when the system is booted +and so that applications can know that no +.B BrlAPI +server is running. +.TP \fB-S \fR[\fIdriver\fB:\fR]\fIname\fB=\fIvalue\fB,\fR... (\fB--speech-parameters=\fR) Parameters for the speech synthesizer driver. If the same parameter is specified more than once @@ -627,6 +646,9 @@ Festival .B gs GenericSay .TP 4 +.B hm +HIMS +.TP 4 .B ht HandyTech .TP 4 @@ -654,12 +676,18 @@ Mikropuhe .B no no driver .TP 4 +.B pg +Pegasus +.TP 4 .B pm Papenmeier .TP 4 .B sd SpeechDispatcher .TP 4 +.B sk +Seika +.TP 4 .B sw Swift .TP 4 diff --git a/Documents/brltty.conf.in b/Documents/brltty.conf.in index 7e7d13ebd1b4889d8177f4a75371bc8297361ec9..011f94cee3c1a0d3fff18a7b9a132dfed26e2366 100644 --- a/Documents/brltty.conf.in +++ b/Documents/brltty.conf.in @@ -41,11 +41,11 @@ #braille-driver bl # BrailleLite #braille-driver bm # Baum #braille-driver bn # BrailleNote -#braille-driver bs # BrailleSense #braille-driver cb # CombiBraille #braille-driver ec # EcoBraille #braille-driver eu # EuroBraille #braille-driver fs # FreedomScientific +#braille-driver hm # HIMS #braille-driver ht # HandyTech #braille-driver il # IrisLinux #braille-driver lb # Libbraille @@ -53,7 +53,9 @@ #braille-driver mb # MultiBraille #braille-driver md # MDV (protocol 5) #braille-driver mn # MiniBraille +#braille-driver pg # Pegasus #braille-driver pm # Papenmeier +#braille-driver sk # Seika #braille-driver tn # TechniBraille #braille-driver ts # TSI #braille-driver tt # TTY @@ -85,49 +87,130 @@ #release-device on # Release the device. #release-device off # Don't release the device. -# The text-table directive specifies which text translation table to -# use. Relative paths are anchored at "@DATA_DIRECTORY@". If not specified, -# "@text_table@" will be used. +# The text-table directive specifies which text table to use. Relative paths +# are anchored at "@DATA_DIRECTORY@". If not specified, locale-based +# autoselection with fallback to "@text_table@" will be performed. # (can be overridden with the -t [--text-table=] option) -#text-table cz # Czech (iso-8859-2) +#text-table auto # locale-based autoselection (fallback to "@text_table@") +#text-table ar # Arabic (generic) +#text-table as # Assamese +#text-table awa # Awadhi +#text-table bg # Bulgarian +#text-table bh # Bihari +#text-table bn # Bengali +#text-table bo # Tibetan +#text-table bra # Braj +#text-table cs # Czech +#text-table cy # Welsh #text-table da # Danish #text-table de # German +#text-table dra # Dravidian +#text-table el # Greek +#text-table en # English +#text-table en_CA # English (Canada) #text-table en_UK # English (United Kingdom) #text-table en_US # English (United States) +#text-table en-nabcc # English (North American Braille Computer Code) +#text-table eo # Esperanto #text-table es # Spanish +#text-table et # Estonian +#text-table fi # Finnish +#text-table fr # French #text-table fr_CA # French (Canada) #text-table fr_FR # French (France) -#text-table fr-2007 # French (Unified) +#text-table fr-2007 # French (unified) #text-table fr-cbifs # French (Code Braille Informatique Français Standard) +#text-table ga # Irish +#text-table gd # Gaelic +#text-table gon # Gondi +#text-table gu # Gujarati +#text-table he # Hebrew +#text-table hi # Hindi +#text-table hr # Croatian +#text-table hu # Hungarian +#text-table hy # Armenian +#text-table is # Icelandic #text-table it # Italian -#text-table nabcc # North American Braille Computer Code +#text-table kha # Khasi +#text-table kn # Kannada +#text-table kok # Konkani +#text-table kru # Kurukh +#text-table lt # Lituanian +#text-table lv # Latvian +#text-table mg # Malagasy +#text-table mi # Maori +#text-table ml # Malayalam +#text-table mni # Manipuri +#text-table mr # Marathi +#text-table mt # Maltese +#text-table mun # Mundari +#text-table mwr # Marwari +#text-table ne # Nepali +#text-table new # Newari +#text-table nl # Dutch +#text-table nl_BE # Dutch (Belgium) +#text-table nl_NL # Dutch (Netherlands) +#text-table no # Norwegian #text-table no-generic # Norwegian (with support for other languages) #text-table no-oub # Norwegian (Offentlig Utvalg for Blindeskrift) -#text-table pl # Polish (iso-8859-2) -#text-table pt # Portuguese (iso-8859-1) -#text-table ru # Russian (koi8-r) -#text-table se # Swedish (1996 standard) -#text-table se-old # Swedish (1989 standard) -#text-table vni # Vietnamese - -# The attributes-table directive specifies which attributes translation -# table to use. Relative paths are anchored at "@DATA_DIRECTORY@". If not -# specified, "@attributes_table@" will be used. +#text-table nwc # Old Newari +#text-table or # Oriya +#text-table pa # Panjabi +#text-table pi # Pali +#text-table pl # Polish +#text-table pt # Portuguese +#text-table ro # Romanian +#text-table ru # Russian +#text-table sa # Sanskrit +#text-table sat # Santali +#text-table sd # Sindhi +#text-table sk # Slovak +#text-table sv # Swedish +#text-table sw # Swahili +#text-table ta # Tamil +#text-table te # Telugu +#text-table tr # Turkish +#text-table vi # Vietnamese + +# The attributes-table directive specifies which attributes table to use. +# Relative paths are anchored at "@DATA_DIRECTORY@". If not specified, +# "@attributes_table@" will be used. # (can be overridden with the -a [--attributes-table=] option) -#attributes-table attributes.tbl # -#attributes-table attrib.tbl # +#attributes-table attributes # +#attributes-table attrib # -# The contraction-table directive specifies which braille contraction -# table to use. Relative paths are anchored at "@DATA_DIRECTORY@". If not -# specified, no contraction table will be available. +# The contraction-table directive specifies which contraction table to use. +# Relative paths are anchored at "@DATA_DIRECTORY@". If not specified, no +# contraction table will be available. # (can be overridden with the -c [--contraction-table=] option) -#contraction-table compress # Remove excess white space. -#contraction-table en-uebc-g2 # Grade 2 Unified English Braille Code -#contraction-table en-us-g2 # Grade 2 American English -#contraction-table fr-abrege # Contracted French -#contraction-table fr-integral # Uncontracted French -#contraction-table zh-tw # Taiwanese Chinese -#contraction-table zh-tw-ucb # Taiwanese Unique Chinese Braille +#contraction-table af # Afrikaans (contracted) +#contraction-table am # Amharic (uncontracted) +#contraction-table de-basis # German (uncontracted) +#contraction-table de-kurzschrift # German (contracted - 1998 standard) +#contraction-table de-vollschrift # German (basic contractions) +#contraction-table en-ueb-g2 # Unified English Braille (grade 2) +#contraction-table en-us-g2 # American English (grade 2) +#contraction-table es # Spanish (grade 2) +#contraction-table fr-abrege # French (contracted) +#contraction-table fr-integral # French (uncontracted) +#contraction-table ha # Hausa (contracted) +#contraction-table id # Indonesian (contracted) +#contraction-table ja # Japanese (uncontracted) +#contraction-table ko-g1 # Korean (grade 1) +#contraction-table ko-g2 # Korean (grade 2) +#contraction-table ko # Korean (uncontracted) +#contraction-table mg # Malagasy (contracted) +#contraction-table mun # Munda (contracted) +#contraction-table nl # Dutch (contracted) +#contraction-table ny # Chichewa (contracted) +#contraction-table ipa # International Phonetic Alphabet +#contraction-table pt # Portuguese (grade 2) +#contraction-table si # Sinhalese (uncontracted) +#contraction-table sw # Swahili (contracted) +#contraction-table th # Thai (contracted) +#contraction-table zh-tw # Taiwanese Chinese (uncontracted) +#contraction-table zh-tw-ucb # Taiwanese Chinese (Unique Chinese Braille) +#contraction-table zu # Zulu (contracted) ############################# @@ -151,12 +234,8 @@ #braille-parameters bm:Protocols=default # [default,all,native] #braille-parameters bm:VarioKeys=no # [no,yes] -# BrailleNote Braille Driver Parameters -#braille-parameters bn:StatusCells=0 - # FreedomScientific Braille Driver Parameters #braille-parameters fs:DebugPackets=no # [no,yes] -#braille-parameters fs:StatusCells= # [0,n,-n] # HandyTech Braille Driver Parameters #braille-parameters ht:InputMode=no # [no,yes] @@ -187,10 +266,10 @@ # Voyager Braille Driver Parameters #braille-parameters vo:InputMode=no # [no,yes] -#braille-parameters vo:StatusCells=3 # [0,n,-n] # XWindow Braille Driver Parameters #braille-parameters xw:Columns=40 # [1-80] +#braille-parameters xw:Font=name # [] #braille-parameters xw:Input=off # [off,on] #braille-parameters xw:Lines=1 # [1-3] #braille-parameters xw:Model=bare # [bare] @@ -287,6 +366,25 @@ #speech-parameters vv:Roughness= # [0-100] +##################### +# Keyboard Settings # +##################### + +# The key-table directive specifies which key table to use. Relative paths are +# anchored at "@DATA_DIRECTORY@". If not specified, no key table is used. +# (can be overridden with the -k [--key-table=] option) +#key-table desktop # bindings for full keyboards +#key-table keypad # bindings for keypad-based navigation +#key-table laptop # bindings for keyboards without a keypad + +# The keyboard-properties directive specifies which keyboards to monitor. +# If not specified, all keyboards are monitored. +# (can be overridden with the -K [--keyboard-properties=] option) +#keyboard-properties Type=any # [any,ps2,usb,bluetooth] +#keyboard-properties Vendor=0X0000 # [0X0000-0XFFFF] +#keyboard-properties Product=0X0000 # [0X0000-0XFFFF] + + ################## # Sound Settings # ################## @@ -329,17 +427,11 @@ #data-directory @DATA_DIRECTORY@ # The tables-directory directive specifies the absolute path to the directory -# which contains the text and attributes tables. If not specified, -# "@DATA_DIRECTORY@" will be used. +# which contains the text, attributes, contraction, and key tables. If not +# specified, "@DATA_DIRECTORY@" will be used. # (can be overridden with the -T [--tables-directory=] option) #tables-directory @DATA_DIRECTORY@ -# The contractions-directory directive specifies the absolute path to the -# directory which contains the contraction tables. If not specified, -# "@DATA_DIRECTORY@" will be used. -# (can be overridden with the -C [--contractions-directory=] option) -#contractions-directory @DATA_DIRECTORY@ - ################################################ # Application Programming Interface Parameters # @@ -389,6 +481,6 @@ # Windows Screen Driver Parameters #screen-parameters wn:Root=no # [no,yes] -#screen-parameters wn:FollowFocus=no # [no,yes] +#screen-parameters wn:FollowFocus=yes # [yes,no] diff --git a/Documents/brltty.lsm b/Documents/brltty.lsm index ff9bf05183da22e232252d76bd660fce29f41299..77564f244812a96d496162af3e02ad9a1123a50f 100644 --- a/Documents/brltty.lsm +++ b/Documents/brltty.lsm @@ -1,7 +1,7 @@ Begin4 Title: brltty -Version: 3.9 -Entered-date: 2007/10/17 +Version: 4.0 +Entered-date: 2009/05/15 Description: Braille Display Driver for Linux/Unix BRLTTY is a background process (daemon) which provides access to the console screen (when in text mode) for a blind person @@ -15,11 +15,11 @@ Author: dave@mielke.cc (Dave Mielke) nn201@cus.cam.ac.uk (Nikhil Nair) Maintained-by: dave@mielke.cc (Dave Mielke) Primary-site: ftp.ibiblio.org /pub/Linux/system/access - 1700KB brltty-3.9.tar.gz - 1030KB brltty-3.9-1.i386.rpm - 1700KB brltty-3.9-1.src.rpm - 13KB brltty-3.9.README - 4KB brltty-3.9.lsm + 2200KB brltty-4.0.tar.gz + 1500KB brltty-4.0-1.i386.rpm + 2100KB brltty-4.0-1.src.rpm + 14KB brltty-4.0.README + 4KB brltty-4.0.lsm Alternate-site: ftp://leb.net /pub/blinux/brltty Original-site: Platforms: Linux (kernel 1.1.92 or later) @@ -29,11 +29,13 @@ Platforms: Linux (kernel 1.1.92 or later) NetBSD (release 1.6 or later) Supported Braille Displays: - Albatross [46/80] - - Alva [ABT(3nn), Delphi(4nn), Satellite(5nn), Braille System 40] - - Baum [Inka, Vario/RBT, SuperVario/Brailliant, PocketVario] + - Alva [ABT(3nn), Delphi(4nn), Satellite(5nn), Braille System 40, + Braille Controller 640/680] + - Baum [Inka, Vario/RBT, SuperVario/Brailliant, PocketVario, + VarioPro, EcoVario, VarioConnect/BrailleConnect, + Refreshabraille] - BrailleLite [18/40/M20/M40] - BrailleNote [18/32] - - BrailleSense [32] - BrlAPI - CombiBraille [25/45/85] - EcoBraille [20/40/80] @@ -42,6 +44,7 @@ Platforms: Linux (kernel 1.1.92 or later) - HandyTech [Modular 20/40/80, Modular Evolution 64/88, Braille Wave 40, Easy Braille, Braille Star 40/80, Bookworm, Braillino 20] + - HIMS [Braille Sense, SyncBraille] - IrisLinux - Libbraille - LogText [32] @@ -53,6 +56,8 @@ Platforms: Linux (kernel 1.1.92 or later) EL 2D 40/66/80, EL 40/66/70/80 S, EL 2D 80 S, EL 40 P, EL 80 II, Elba 20/32, Trio 40/Elba20/Elba32] + - Pegasus [20/27/40/80] + - Seika [40] - TSI [Navigator 20/40/80, PowerBraille 40/65/80] - TTY [terminfo] - VideoBraille [40] diff --git a/Documents/xbrlapi.1 b/Documents/xbrlapi.1 index c75c8b181708021aa18050e1179822e607d71142..36a74ea9e18a6d2eaf3397a2288b07511ef3ad6c 100644 --- a/Documents/xbrlapi.1 +++ b/Documents/xbrlapi.1 @@ -1,4 +1,4 @@ -.TH "XBRLAPI" "1" "January 2008" "brltty 3.9" "The BRLTTY Project" +.TH "XBRLAPI" "1" "May 2009" "brltty 4.0" "The BRLTTY Project" .SH NAME xbrlapi \- X11 BrlAPI helper for Linux/Unix .SH SYNOPSIS @@ -12,7 +12,8 @@ server in order to provide it with the ID of the window which currently has focus. It also simulates .B X -keysyms from braille key presses. +keysyms from braille key presses (else brltty would simulate them using a qwerty +keyboard). .SH OPTIONS Options are processed sequentially from left to right. If an option is specified more than once, diff --git a/BrailleDrivers/Albatross/Makefile.in b/Drivers/Braille/Albatross/Makefile.in similarity index 81% rename from BrailleDrivers/Albatross/Makefile.in rename to Drivers/Braille/Albatross/Makefile.in index 6d70204cbc8b4a926881fc61ca8fd4b84ec11f85..b7d650e932c00827cfca794def7723f98e67dd59 100644 --- a/BrailleDrivers/Albatross/Makefile.in +++ b/Drivers/Braille/Albatross/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/Albatross/README b/Drivers/Braille/Albatross/README similarity index 100% rename from BrailleDrivers/Albatross/README rename to Drivers/Braille/Albatross/README diff --git a/BrailleDrivers/Albatross/braille.c b/Drivers/Braille/Albatross/braille.c similarity index 97% rename from BrailleDrivers/Albatross/braille.c rename to Drivers/Braille/Albatross/braille.c index 60b983547aaaf7e7dd56fd8721d2ddfaaf18d0c6..bcb086d7b39f6371bf87f6b3d32d32691298620a 100644 --- a/BrailleDrivers/Albatross/braille.c +++ b/Drivers/Braille/Albatross/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -253,8 +254,8 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { if (byte == 0XFF) { if (!acknowledgeDisplay(brl)) break; clearDisplay(brl); - brl->x = windowWidth; - brl->y = 1; + brl->textColumns = windowWidth; + brl->textRows = 1; return 1; } @@ -297,8 +298,8 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { if (byte == 0XFF) { if (acknowledgeDisplay(brl)) { refreshDisplay(brl); - brl->x = windowWidth; - brl->y = 1; + brl->textColumns = windowWidth; + brl->textRows = 1; brl->resizeRequired = 1; } continue; diff --git a/BrailleDrivers/Albatross/braille.h b/Drivers/Braille/Albatross/braille.h similarity index 76% rename from BrailleDrivers/Albatross/braille.h rename to Drivers/Braille/Albatross/braille.h index 3e59804f65f1eeaa27c638cccd27790a6bf3c6a5..44a35417b1192f30c59d8929d69c7a1255f7acee 100644 --- a/BrailleDrivers/Albatross/braille.h +++ b/Drivers/Braille/Albatross/braille.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/Albatross/help0.txt b/Drivers/Braille/Albatross/help0.txt similarity index 97% rename from BrailleDrivers/Albatross/help0.txt rename to Drivers/Braille/Albatross/help0.txt index cd15b4d167a015a154a6cf6ba671a2f2fc360986..8f39ae42f05370667fa9e7b867ccfc4ae26d0c25 100644 --- a/BrailleDrivers/Albatross/help0.txt +++ b/Drivers/Braille/Albatross/help0.txt @@ -1,4 +1,4 @@ -BRLTTY Help Screen for Albatross models +Help for All Models Front Keys: Top go to top-left corner diff --git a/BrailleDrivers/Albatross/reldeps.mk b/Drivers/Braille/Albatross/reldeps.mk similarity index 100% rename from BrailleDrivers/Albatross/reldeps.mk rename to Drivers/Braille/Albatross/reldeps.mk diff --git a/BrailleDrivers/Alva/Makefile.in b/Drivers/Braille/Alva/Makefile.in similarity index 79% rename from BrailleDrivers/Alva/Makefile.in rename to Drivers/Braille/Alva/Makefile.in index 5ca12d6a841522de98d15b47da66c17604378c1a..6668078e085e93d27835e2b182d816d4b3124a37 100644 --- a/BrailleDrivers/Alva/Makefile.in +++ b/Drivers/Braille/Alva/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # @@ -17,7 +18,7 @@ DRIVER_CODE = al DRIVER_NAME = Alva -DRIVER_COMMENT = ABT(3nn), Delphi(4nn), Satellite(5nn), Braille System 40 +DRIVER_COMMENT = ABT(3nn), Delphi(4nn), Satellite(5nn), Braille System 40, Braille Controller 640/680 DRIVER_VERSION = 2.2 DRIVER_DEVELOPERS = Nicolas Pitre HELP_DEPS = $(HELP_TEXT) diff --git a/BrailleDrivers/Alva/README b/Drivers/Braille/Alva/README similarity index 98% rename from BrailleDrivers/Alva/README rename to Drivers/Braille/Alva/README index 8cb45e20d5f0a8d783e1f14936a98d1e868a31c4..4d4e4eaa4e4f50f34b18c7cc7e80b1a6d46d79da 100644 --- a/BrailleDrivers/Alva/README +++ b/Drivers/Braille/Alva/README @@ -7,7 +7,7 @@ Copyright ========= This driver is copyrighted under the GNU Public License. It is free software. -See the file 'COPYING' for more details. Feel free to send your comments and to +See the file 'LICENSE-GPL' for more details. Feel free to send your comments and to report bugs (if any) to me at . diff --git a/Drivers/Braille/Alva/braille.c b/Drivers/Braille/Alva/braille.c new file mode 100644 index 0000000000000000000000000000000000000000..b30edccd39871ae9d8b4f955875aa51ab0b6d201 --- /dev/null +++ b/Drivers/Braille/Alva/braille.c @@ -0,0 +1,2211 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +/* Alva/brlmain.cc - Braille display library for Alva braille displays + * Copyright (C) 1995-2002 by Nicolas Pitre + * See the GNU Public license for details in the LICENSE-GPL file + * + */ + +/* Changes: + * january 2004: + * - Added USB support. + * - Improved key bindings for Satellite models. + * - Moved autorepeat (typematic) support to the core. + * september 2002: + * - This pesky binary only parallel port library is just + * causing trouble (not compatible with new compilers, etc). + * It is also unclear if distribution of such closed source + * library is allowed within a GPL'ed program archive. + * Let's just nuke it until we can write an open source one. + * - Converted this file back to pure C source. + * may 21, 1999: + * - Added Alva Delphi 80 support. Thanks to ??? +* . + * mar 14, 1999: + * - Added LogPrint's (which is a good thing...) + * - Ugly ugly hack for parallel port support: seems there + * is a bug in the parallel port library so that the display + * completely hang after an arbitrary period of time. + * J. Lemmens didn't respond to my query yet... and since + * the F***ing library isn't Open Source, I can't fix it. + * feb 05, 1999: + * - Added Alva Delphi support (thanks to Terry Barnaby + * ). + * - Renamed Alva_ABT3 to Alva. + * - Some improvements to the autodetection stuff. + * dec 06, 1998: + * - added parallel port communication support using + * J. lemmens 's library. + * This required brl.o to be sourced with C++ for the parallel + * stuff to link. Now brl.o is a partial link of brlmain.o + * and the above library. + * jun 21, 1998: + * - replaced CMD_WINUP/DN with CMD_ATTRUP/DN wich seems + * to be a more useful binding. Modified help files + * acordingly. + * apr 23, 1998: + * - I finally had the chance to test with an ABT380... and + * corrected the ABT380 model ID for autodetection. + * - Added a refresh delay to force redrawing the whole display + * in order to minimize garbage due to noise on the + * serial line + * oct 02, 1996: + * - bound CMD_SAY_LINE and CMD_MUTE + * sep 22, 1996: + * - bound CMD_PRDIFLN and CMD_NXDIFLN. + * aug 15, 1996: + * - adeded automatic model detection for new firmware. + * - support for selectable help screen. + * feb 19, 1996: + * - added small hack for automatic rewrite of display when + * the terminal is turned off and back on, replugged, etc. + * feb 15, 1996: + * - Modified writebrl() for lower bandwith + * - Joined the forced ReWrite function to the CURSOR key + * jan 31, 1996: + * - moved user configurable parameters into brlconf.h + * - added identbrl() + * - added overide parameter for serial device + * - added keybindings for BRLTTY preferences menu + * jan 23, 1996: + * - modifications to be compatible with the BRLTTY braille + * mapping standard. + * dec 27, 1995: + * - Added conditions to support all ABT3xx series + * - changed directory Alva_ABT40 to Alva_ABT3 + * dec 02, 1995: + * - made changes to support latest Alva ABT3 firmware (new + * serial protocol). + * nov 05, 1995: + * - added typematic facility + * - added key bindings for Stephane Doyon's cut'n paste. + * - added cursor routing key block marking + * - fixed a bug in readbrl() about released keys + * sep 30' 1995: + * - initial Alva driver code, inspired from the + * (old) BrailleLite code. + */ + +#include "prologue.h" + +#include +#include +#include + +#include "misc.h" +#include "brltty.h" + +#define BRL_STATUS_FIELDS sfAlphabeticCursorCoordinates, sfAlphabeticWindowCoordinates, sfStateLetter +#define BRL_HAVE_STATUS_CELLS +#define BRL_HAVE_FIRMNESS +#define BRLCONST +#include "brl_driver.h" +#include "braille.h" + +static const int logInputPackets = 0; +static const int logOutputPackets = 0; + +typedef struct { + const char *name; + unsigned char identifier; + unsigned char columns; + unsigned char statusCells; + unsigned char flags; + unsigned char helpPage; +} ModelEntry; +static const ModelEntry *model; /* points to terminal model config struct */ + +#define MOD_FLG__CONFIGURABLE 0X01 + +static const ModelEntry modelTable[] = { + { .identifier = 0X00, + .name = "ABT 320", + .columns = 20, + .statusCells = 3, + .flags = 0, + .helpPage = 0 + } + , + { .identifier = 0X01, + .name = "ABT 340", + .columns = 40, + .statusCells = 3, + .flags = 0, + .helpPage = 0 + } + , + { .identifier = 0X02, + .name = "ABT 340 Desktop", + .columns = 40, + .statusCells = 5, + .flags = 0, + .helpPage = 0 + } + , + { .identifier = 0X03, + .name = "ABT 380", + .columns = 80, + .statusCells = 5, + .flags = 0, + .helpPage = 0 + } + , + { .identifier = 0X04, + .name = "ABT 382 Twin Space", + .columns = 80, + .statusCells = 5, + .flags = 0, + .helpPage = 0 + } + , + { .identifier = 0X0A, + .name = "Delphi 420", + .columns = 20, + .statusCells = 3, + .flags = 0, + .helpPage = 0 + } + , + { .identifier = 0X0B, + .name = "Delphi 440", + .columns = 40, + .statusCells = 3, + .flags = 0, + .helpPage = 0 + } + , + { .identifier = 0X0C, + .name = "Delphi 440 Desktop", + .columns = 40, + .statusCells = 5, + .flags = 0, + .helpPage = 0 + } + , + { .identifier = 0X0D, + .name = "Delphi 480", + .columns = 80, + .statusCells = 5, + .flags = 0, + .helpPage = 0 + } + , + { .identifier = 0X0E, + .name = "Satellite 544", + .columns = 40, + .statusCells = 3, + .flags = MOD_FLG__CONFIGURABLE, + .helpPage = 1 + } + , + { .identifier = 0X0F, + .name = "Satellite 570 Pro", + .columns = 66, + .statusCells = 3, + .flags = MOD_FLG__CONFIGURABLE, + .helpPage = 1 + } + , + { .identifier = 0X10, + .name = "Satellite 584 Pro", + .columns = 80, + .statusCells = 3, + .flags = MOD_FLG__CONFIGURABLE, + .helpPage = 1 + } + , + { .identifier = 0X11, + .name = "Satellite 544 Traveller", + .columns = 40, + .statusCells = 3, + .flags = MOD_FLG__CONFIGURABLE, + .helpPage = 1 + } + , + { .identifier = 0X13, + .name = "Braille System 40", + .columns = 40, + .statusCells = 0, + .flags = MOD_FLG__CONFIGURABLE, + .helpPage = 1 + } + , + { .name = NULL } +}; + +static const ModelEntry modelBC624 = { + .identifier = 0X24, + .name = "BC624", + .columns = 24, + .helpPage = 2 +}; + +static const ModelEntry modelBC640 = { + .identifier = 0X40, + .name = "BC640", + .columns = 40, + .helpPage = 2 +}; + +static const ModelEntry modelBC680 = { + .identifier = 0X80, + .name = "BC680", + .columns = 80, + .helpPage = 2 +}; + +typedef struct { + int (*openPort) (const char *device); + void (*closePort) (void); + int (*awaitInput) (int milliseconds); + int (*readBytes) (unsigned char *buffer, int length, int wait); + int (*writeBytes) (const unsigned char *buffer, int length, unsigned int *delay); + int (*getFeatureReport) (unsigned char report, unsigned char *buffer, int length); +} InputOutputOperations; +static const InputOutputOperations *io; + +typedef struct { + void (*initializeVariables) (void); + int (*readPacket) (unsigned char *packet, int size); + int (*updateConfiguration) (BrailleDisplay *brl, int autodetecting, const unsigned char *packet); + int (*detectModel) (BrailleDisplay *brl); + int (*readCommand) (BrailleDisplay *brl, BRL_DriverCommandContext context); + int (*writeBraille) (BrailleDisplay *brl, const unsigned char *cells, int start, int count); +} ProtocolOperations; +static const ProtocolOperations *protocol; + +typedef enum { + STATUS_FIRST, + STATUS_LEFT, + STATUS_RIGHT +} StatusType; + +static TranslationTable outputTable; +static unsigned char *previousText = NULL; +static unsigned char *previousStatus = NULL; + +static unsigned char actualColumns; +static unsigned char textOffset; +static unsigned char statusOffset; + +static int textRewriteRequired = 0; +static int textRewriteInterval; +static struct timeval textRewriteTime; +static int statusRewriteRequired; + +static int +readByte (unsigned char *byte, int wait) { + int count = io->readBytes(byte, 1, wait); + if (count > 0) return 1; + + if (count == 0) errno = EAGAIN; + return 0; +} + +static int +writeBytes (const unsigned char *buffer, int length, unsigned int *delay) { + return io->writeBytes(buffer, length, delay) != -1; +} + +static int +reallocateBuffer (unsigned char **buffer, int size) { + void *address = realloc(*buffer, size); + if (size && !address) return 0; + *buffer = address; + return 1; +} + +static int +reallocateBuffers (BrailleDisplay *brl) { + if (reallocateBuffer(&previousText, brl->textColumns*brl->textRows)) + if (reallocateBuffer(&previousStatus, brl->statusColumns*brl->statusRows)) + return 1; + + LogPrint(LOG_ERR, "cannot allocate braille buffers"); + return 0; +} + +static int +setDefaultConfiguration (BrailleDisplay *brl) { + LogPrint(LOG_INFO, "detected Alva %s: %d columns, %d status cells", + model->name, model->columns, model->statusCells); + + brl->textColumns = model->columns; + brl->textRows = 1; + brl->statusColumns = model->statusCells; + brl->statusRows = 1; + brl->helpPage = model->helpPage; /* initialise size of display */ + + actualColumns = model->columns; + statusOffset = 0; + textOffset = statusOffset + model->statusCells; + textRewriteRequired = 1; /* To write whole display at first time */ + statusRewriteRequired = 1; + return reallocateBuffers(brl); +} + +static int +updateConfiguration (BrailleDisplay *brl, int autodetecting, int textColumns, int statusColumns, StatusType statusType) { + int changed = 0; + int separator = 0; + + actualColumns = textColumns; + if (statusType == STATUS_FIRST) { + statusOffset = 0; + textOffset = statusOffset + statusColumns; + } else if ((statusColumns = MIN(statusColumns, (actualColumns-1)/2))) { + separator = 1; + textColumns -= statusColumns + separator; + + switch (statusType) { + case STATUS_LEFT: + statusOffset = 0; + textOffset = statusOffset + statusColumns + separator; + break; + + case STATUS_RIGHT: + textOffset = 0; + statusOffset = textOffset + textColumns + separator; + break; + + default: + break; + } + } else { + statusOffset = 0; + textOffset = 0; + } + + if (statusColumns != brl->statusColumns) { + LogPrint(LOG_INFO, "status cell count changed to %d", statusColumns); + brl->statusColumns = statusColumns; + changed = 1; + } + + if (textColumns != brl->textColumns) { + LogPrint(LOG_INFO, "text column count changed to %d", textColumns); + brl->textColumns = textColumns; + if (!autodetecting) brl->resizeRequired = 1; + changed = 1; + } + + if (changed) + if (!reallocateBuffers(brl)) + return 0; + + if (separator) { + unsigned char cell = 0; + if (!protocol->writeBraille(brl, &cell, MAX(textOffset, statusOffset)-1, 1)) return 0; + } + + textRewriteRequired = 1; + statusRewriteRequired = 1; + return 1; +} + +#define PACKET_SIZE(count) (((count) * 2) + 4) +#define MAXIMUM_PACKET_SIZE PACKET_SIZE(0XFF) +#define PACKET_BYTE(packet, index) ((packet)[PACKET_SIZE((index)) - 1]) + +static const unsigned char BRL_ID[] = {0X1B, 'I', 'D', '='}; +#define BRL_ID_LENGTH (sizeof(BRL_ID)) +#define BRL_ID_SIZE (BRL_ID_LENGTH + 1) + +/* NB: The first 7 key values are the same as those returned by the + * old firmware, so they can be used directly from the input stream as + * make and break sequence already combined... not to be changed. + */ +#define KEY_PROG 0x008 /* the PROG key */ +#define KEY_HOME 0x004 /* the HOME key */ +#define KEY_CURSOR 0x002 /* the CURSOR key */ +#define KEY_UP 0x001 /* the UP key */ +#define KEY_LEFT 0x010 /* the LEFT key */ +#define KEY_RIGHT 0x020 /* the RIGHT key */ +#define KEY_DOWN 0x040 /* the DOWN key */ +#define KEY_CURSOR2 0x080 /* the CURSOR2 key */ +#define KEY_HOME2 0x100 /* the HOME2 key */ +#define KEY_PROG2 0x200 /* the PROG2 key */ + +#define KEY_STATUS1_A 0x01000 /* first lower status key */ +#define KEY_STATUS1_B 0x02000 /* second lower status key */ +#define KEY_STATUS1_C 0x03000 /* third lower status key */ +#define KEY_STATUS1_D 0x04000 /* fourth lower status key */ +#define KEY_STATUS1_E 0x05000 /* fifth lower status key */ +#define KEY_STATUS1_F 0x06000 /* sixth lower status key */ +#define KEY_ROUTING1 0x08000 /* lower cursor routing key set */ + +#define KEY_STATUS2_A 0x10000 /* first upper status key */ +#define KEY_STATUS2_B 0x20000 /* second upper status key */ +#define KEY_STATUS2_C 0x30000 /* third upper status key */ +#define KEY_STATUS2_D 0x40000 /* fourth upper status key */ +#define KEY_STATUS2_E 0x50000 /* fifth upper status key */ +#define KEY_STATUS2_F 0x60000 /* sixth upper status key */ +#define KEY_ROUTING2 0x80000 /* upper cursor routing key set */ + +#define KEY_SPK_F1 0x0100000 +#define KEY_SPK_F2 0x0200000 +#define KEY_SPK_UP 0x1000000 +#define KEY_SPK_DOWN 0x2000000 +#define KEY_SPK_LEFT 0x3000000 +#define KEY_SPK_RIGHT 0x4000000 + +#define KEY_BRL_F1 0x0400000 +#define KEY_BRL_F2 0x0800000 +#define KEY_BRL_UP 0x5000000 +#define KEY_BRL_DOWN 0x6000000 +#define KEY_BRL_LEFT 0x7000000 +#define KEY_BRL_RIGHT 0x8000000 + +#define KEY_TUMBLER1A 0x10000000 /* left end of left tumbler key */ +#define KEY_TUMBLER1B 0x20000000 /* right end of left tumbler key */ +#define KEY_TUMBLER2A 0x30000000 /* left end of right tumbler key */ +#define KEY_TUMBLER2B 0x40000000 /* right end of right tumbler key */ + +/* first cursor routing offset on main display (old firmware only) */ +#define KEY_ROUTING_OFFSET 168 + +#if ! ABT3_OLD_FIRMWARE +/* Index for new firmware protocol */ +static const int OperatingKeys[14] = { + KEY_PROG, KEY_HOME, KEY_CURSOR, + KEY_UP, KEY_LEFT, KEY_RIGHT, KEY_DOWN, + KEY_CURSOR2, KEY_HOME2, KEY_PROG2, + KEY_TUMBLER1A, KEY_TUMBLER1B, KEY_TUMBLER2A, KEY_TUMBLER2B +}; +#endif /* ! ABT3_OLD_FIRMWARE */ + +static const int StatusKeys1[6] = { + KEY_STATUS1_A, KEY_STATUS1_B, KEY_STATUS1_C, + KEY_STATUS1_D, KEY_STATUS1_E, KEY_STATUS1_F +}; + +static const int StatusKeys2[6] = { + KEY_STATUS2_A, KEY_STATUS2_B, KEY_STATUS2_C, + KEY_STATUS2_D, KEY_STATUS2_E, KEY_STATUS2_F +}; + +static const int SpeechPad[6] = { + KEY_SPK_F1, KEY_SPK_UP, KEY_SPK_LEFT, + KEY_SPK_DOWN, KEY_SPK_RIGHT, KEY_SPK_F2 +}; + +static const int BraillePad[6] = { + KEY_BRL_F1, KEY_BRL_UP, KEY_BRL_LEFT, + KEY_BRL_DOWN, KEY_BRL_RIGHT, KEY_BRL_F2 +}; + +static int +writeFunction1 (BrailleDisplay *brl, unsigned char code) { + unsigned char bytes[] = {0X1B, 'F', 'U', 'N', code, '\r'}; + return writeBytes(bytes, sizeof(bytes), &brl->writeDelay); +} + +static int +writeParameter1 (BrailleDisplay *brl, unsigned char parameter, unsigned char setting) { + unsigned char bytes[] = {0X1B, 'P', 'A', 3, 0, parameter, setting, '\r'}; + return writeBytes(bytes, sizeof(bytes), &brl->writeDelay); +} + +static int +updateConfiguration1 (BrailleDisplay *brl, int autodetecting, const unsigned char *packet) { + int textColumns = brl->textColumns; + int statusColumns = brl->statusColumns; + int count = PACKET_BYTE(packet, 0); + + if (count >= 3) statusColumns = PACKET_BYTE(packet, 3); + if (count >= 4) textColumns = PACKET_BYTE(packet, 4); + return updateConfiguration(brl, autodetecting, textColumns, statusColumns, STATUS_FIRST); +} + +static int +identifyModel1 (BrailleDisplay *brl, unsigned char identifier) { + /* Find out which model we are connected to... */ + for ( + model = modelTable; + model->name && (model->identifier != identifier); + model += 1 + ); + + if (model->name) { + if (setDefaultConfiguration(brl)) { + if (model->flags & MOD_FLG__CONFIGURABLE) { + BRLSYMBOL.firmness = brl_firmness; + + if (!writeFunction1(brl, 0X07)) return 0; + while (io->awaitInput(200)) { + unsigned char packet[MAXIMUM_PACKET_SIZE]; + int count = protocol->readPacket(packet, sizeof(packet)); + + if (count == -1) break; + if (count == 0) continue; + + if ((packet[0] == 0X7F) && (packet[1] == 0X07)) { + updateConfiguration1(brl, 1, packet); + break; + } + } + + if (!writeFunction1(brl, 0X0B)) return 0; + } else { + BRLSYMBOL.firmness = NULL; + } + + return 1; + } + } else { + LogPrint(LOG_ERR, "detected unknown Alva model with ID %02X (hex)", identifier); + } + + return 0; +} + +static void +initializeVariables1 (void) { +} + +static int +readPacket1 (unsigned char *packet, int size) { + int offset = 0; + int length = 0; + + while (1) { + unsigned char byte; + + { + int started = offset > 0; + + if (!readByte(&byte, started)) { + int result = (errno == EAGAIN)? 0: -1; + if (started) LogBytes(LOG_WARNING, "Partial Packet", packet, offset); + return result; + } + } + + gotByte: + if (offset == 0) { +#if ! ABT3_OLD_FIRMWARE + if (byte == 0X7F) { + length = PACKET_SIZE(0); + } else if ((byte & 0XF0) == 0X70) { + length = 2; + } else if (byte == BRL_ID[0]) { + length = BRL_ID_SIZE; + } else if (!byte) { + length = 2; + } else { + LogBytes(LOG_WARNING, "Ignored Byte", &byte, 1); + continue; + } +#else /* ABT3_OLD_FIRMWARE */ + length = 1; +#endif /* ! ABT3_OLD_FIRMWARE */ + } else { + int unexpected = 0; + +#if ! ABT3_OLD_FIRMWARE + unsigned char type = packet[0]; + + if (type == 0X7F) { + if (offset == 3) length = PACKET_SIZE(byte); + if (((offset % 2) == 0) && (byte != 0X7E)) unexpected = 1; + } else if (type == BRL_ID[0]) { + if ((offset < BRL_ID_LENGTH) && (byte != BRL_ID[offset])) unexpected = 1; + } else if (!type) { + if (byte) unexpected = 1; + } +#else /* ABT3_OLD_FIRMWARE */ +#endif /* ! ABT3_OLD_FIRMWARE */ + + if (unexpected) { + LogBytes(LOG_WARNING, "Short Packet", packet, offset); + offset = 0; + length = 0; + goto gotByte; + } + } + + if (offset < size) { + packet[offset] = byte; + } else { + if (offset == size) LogBytes(LOG_WARNING, "Truncated Packet", packet, offset); + LogBytes(LOG_WARNING, "Discarded Byte", &byte, 1); + } + + if (++offset == length) { + if ((offset > size) || !packet[0]) { + offset = 0; + length = 0; + continue; + } + + if (logInputPackets) LogBytes(LOG_DEBUG, "Input Packet", packet, offset); + return length; + } + } +} + +static int +detectModel1 (BrailleDisplay *brl) { + int probes = 0; + + while (writeFunction1(brl, 0X06)) { + while (io->awaitInput(200)) { + unsigned char packet[MAXIMUM_PACKET_SIZE]; + + if (protocol->readPacket(packet, sizeof(packet)) > 0) { + if (memcmp(packet, BRL_ID, BRL_ID_LENGTH) == 0) { + if (identifyModel1(brl, packet[BRL_ID_LENGTH])) { + return 1; + } + } + } + } + + if (errno != EAGAIN) break; + if (++probes == 3) break; + } + + return 0; +} + +static int +getKey1 (BrailleDisplay *brl, unsigned int *Keys, unsigned int *Pos) { + unsigned char packet[MAXIMUM_PACKET_SIZE]; + int length = protocol->readPacket(packet, sizeof(packet)); + if (length < 1) return length; + +#if ! ABT3_OLD_FIRMWARE + switch (packet[0]) { + case 0X71: { /* operating keys and status keys */ + unsigned char key = packet[1]; + if (key <= 0X0D) { + *Keys |= OperatingKeys[key]; + } else if ((key >= 0X80) && (key <= 0X89)) { + *Keys &= ~OperatingKeys[key - 0X80]; + } else if ((key >= 0X20) && (key <= 0X25)) { + *Keys |= StatusKeys1[key - 0X20]; + } else if ((key >= 0XA0) && (key <= 0XA5)) { + *Keys &= ~StatusKeys1[key - 0XA0]; + } else if ((key >= 0X30) && (key <= 0X35)) { + *Keys |= StatusKeys2[key - 0X30]; + } else if ((key >= 0XB0) && (key <= 0XB5)) { + *Keys &= ~StatusKeys2[key - 0XB0]; + } else { + *Keys = 0; + } + return 1; + } + + case 0X72: { /* primary (lower) routing keys */ + unsigned char key = packet[1]; + if (key <= 0X5F) { /* make */ + *Pos = key; + *Keys |= KEY_ROUTING1; + } else { + *Keys &= ~KEY_ROUTING1; + } + return 1; + } + + case 0X75: { /* secondary (upper) routing keys */ + unsigned char key = packet[1]; + if (key <= 0X5F) { /* make */ + *Pos = key; + *Keys |= KEY_ROUTING2; + } else { + *Keys &= ~KEY_ROUTING2; + } + return 1; + } + + case 0X77: { /* windows keys and speech keys */ + unsigned char key = packet[1]; + if (key <= 0X05) { + *Keys |= SpeechPad[key]; + } else if ((key >= 0X80) && (key <= 0X85)) { + *Keys &= ~SpeechPad[key - 0X80]; + } else if ((key >= 0X20) && (key <= 0X25)) { + *Keys |= BraillePad[key - 0X20]; + } else if ((key >= 0XA0) && (key <= 0XA5)) { + *Keys &= ~BraillePad[key - 0XA0]; + } else { + *Keys = 0; + } + return 1; + } + + case 0X7F: + switch (packet[1]) { + case 0X07: /* text/status cells reconfigured */ + if (!updateConfiguration1(brl, 0, packet)) return -1; + return 0; + + case 0X0B: { /* display parameters reconfigured */ + int count = PACKET_BYTE(packet, 0); + + if (count >= 8) { + unsigned char frontKeys = PACKET_BYTE(packet, 8); + const unsigned char progKey = 0X02; + if (frontKeys & progKey) { + unsigned char newSetting = frontKeys & ~progKey; + LogPrint(LOG_DEBUG, "Reconfiguring front keys: %02X -> %02X", + frontKeys, newSetting); + writeParameter1(brl, 6, newSetting); + } + } + + return 0; + } + } + break; + + default: + if (length >= BRL_ID_SIZE) { + if (memcmp(packet, BRL_ID, BRL_ID_LENGTH) == 0) { + /* The terminal has been turned off and back on. */ + if (!identifyModel1(brl, packet[BRL_ID_LENGTH])) return -1; + brl->resizeRequired = 1; + return 0; + } + } + + break; + } + +#else /* ABT3_OLD_FIRMWARE */ + + int key = packet[0]; + if (key < (KEY_ROUTING_OFFSET + brl->textColumns + brl->statusColumns)) { + if (key >= (KEY_ROUTING_OFFSET + brl->textColumns)) { + /* status key */ + *Keys |= StatusKeys1[key - (KEY_ROUTING_OFFSET + brl->textColumns)]; + return 1; + } + + if (key >= KEY_ROUTING_OFFSET) { + /* routing key */ + *Pos = key - KEY_ROUTING_OFFSET; + *Keys |= KEY_ROUTING1; + return 1; + } + + if (!(key & 0X80)) { + /* operating key */ + *Keys = key; /* check comments where KEY_xxxx are defined */ + return 1; + } + } + +#endif /* ! ABT3_OLD_FIRMWARE */ + LogBytes(LOG_WARNING, "Unexpected Packet", packet, length); + return 0; +} + +static int +readCommand1 (BrailleDisplay *brl, BRL_DriverCommandContext context) { + static unsigned int CurrentKeys = 0, LastKeys = 0, ReleasedKeys = 0; + static unsigned int RoutingPos = 0; + int res = EOF; + int ProcessKey = getKey1(brl, &CurrentKeys, &RoutingPos); + + if (ProcessKey < 0) { + /* An input error occurred (perhaps disconnect of USB device) */ + res = BRL_CMD_RESTARTBRL; + } else if (ProcessKey > 0) { + res = BRL_CMD_NOOP; + + if (CurrentKeys > LastKeys) { + /* These are the keys that should be processed when pressed */ + LastKeys = CurrentKeys; /* we keep it until it is released */ + ReleasedKeys = 0; + switch (brl->helpPage) { + case 0: /* ABT and Delphi models */ + switch (CurrentKeys) { + case KEY_HOME | KEY_UP: + res = BRL_CMD_TOP; + break; + case KEY_HOME | KEY_DOWN: + res = BRL_CMD_BOT; + break; + case KEY_UP: + res = BRL_CMD_LNUP; + break; + case KEY_CURSOR | KEY_UP: + res = BRL_CMD_ATTRUP; + break; + case KEY_DOWN: + res = BRL_CMD_LNDN; + break; + case KEY_CURSOR | KEY_DOWN: + res = BRL_CMD_ATTRDN; + break; + case KEY_LEFT: + res = BRL_CMD_FWINLT; + break; + case KEY_HOME | KEY_LEFT: + res = BRL_CMD_LNBEG; + break; + case KEY_CURSOR | KEY_LEFT: + res = BRL_CMD_HWINLT; + break; + case KEY_PROG | KEY_LEFT: + res = BRL_CMD_CHRLT; + break; + case KEY_RIGHT: + res = BRL_CMD_FWINRT; + break; + case KEY_HOME | KEY_RIGHT: + res = BRL_CMD_LNEND; + break; + case KEY_PROG | KEY_RIGHT: + res = BRL_CMD_CHRRT; + break; + case KEY_CURSOR | KEY_RIGHT: + res = BRL_CMD_HWINRT; + break; + case KEY_HOME | KEY_CURSOR | KEY_UP: + res = BRL_CMD_PRDIFLN; + break; + case KEY_HOME | KEY_CURSOR | KEY_DOWN: + res = BRL_CMD_NXDIFLN; + break; + case KEY_HOME | KEY_CURSOR | KEY_LEFT: + res = BRL_CMD_MUTE; + break; + case KEY_HOME | KEY_CURSOR | KEY_RIGHT: + res = BRL_CMD_SAY_LINE; + break; + case KEY_PROG | KEY_DOWN: + res = BRL_CMD_FREEZE; + break; + case KEY_PROG | KEY_UP: + res = BRL_CMD_INFO; + break; + case KEY_PROG | KEY_CURSOR | KEY_LEFT: + res = BRL_CMD_BACK; + break; + case KEY_STATUS1_A: + res = BRL_CMD_CAPBLINK; + break; + case KEY_STATUS1_B: + res = BRL_CMD_CSRVIS; + break; + case KEY_STATUS1_C: + res = BRL_CMD_CSRBLINK; + break; + case KEY_CURSOR | KEY_STATUS1_A: + res = BRL_CMD_SIXDOTS; + break; + case KEY_CURSOR | KEY_STATUS1_B: + res = BRL_CMD_CSRSIZE; + break; + case KEY_CURSOR | KEY_STATUS1_C: + res = BRL_CMD_SLIDEWIN; + break; + case KEY_PROG | KEY_HOME | KEY_UP: + res = BRL_CMD_PRPROMPT; + break; + case KEY_PROG | KEY_HOME | KEY_LEFT: + res = BRL_CMD_RESTARTSPEECH; + break; + case KEY_PROG | KEY_HOME | KEY_RIGHT: + res = BRL_CMD_SAY_BELOW; + break; + case KEY_ROUTING1: + /* normal Cursor routing keys */ + res = BRL_BLK_ROUTE + RoutingPos; + break; + case KEY_PROG | KEY_ROUTING1: + /* marking beginning of block */ + res = BRL_BLK_CUTBEGIN + RoutingPos; + break; + case KEY_HOME | KEY_ROUTING1: + /* marking end of block */ + res = BRL_BLK_CUTRECT + RoutingPos; + break; + case KEY_PROG | KEY_HOME | KEY_DOWN: + res = BRL_CMD_PASTE; + break; + + /* See released keys handling below for these. There appears + * to be a bug with at least some models when a routing key + * is pressed in conjunction with more than one front key. + */ + case KEY_PROG | KEY_HOME | KEY_ROUTING1: + case KEY_HOME | KEY_CURSOR | KEY_ROUTING1: + break; + } + break; + + case 1: /* Satellite models */ + switch (CurrentKeys) { + case KEY_UP: + res = BRL_CMD_LNUP; + break; + case KEY_DOWN: + res = BRL_CMD_LNDN; + break; + case KEY_HOME | KEY_UP: + res = BRL_CMD_TOP_LEFT; + break; + case KEY_HOME | KEY_DOWN: + res = BRL_CMD_BOT_LEFT; + break; + case KEY_CURSOR | KEY_UP: + res = BRL_CMD_TOP; + break; + case KEY_CURSOR | KEY_DOWN: + res = BRL_CMD_BOT; + break; + case KEY_BRL_F1 | KEY_UP: + res = BRL_CMD_PRDIFLN; + break; + case KEY_BRL_F1 | KEY_DOWN: + res = BRL_CMD_NXDIFLN; + break; + case KEY_BRL_F2 | KEY_UP: + res = BRL_CMD_ATTRUP; + break; + case KEY_BRL_F2 | KEY_DOWN: + res = BRL_CMD_ATTRDN; + break; + + case KEY_LEFT: + res = BRL_CMD_FWINLT; + break; + case KEY_RIGHT: + res = BRL_CMD_FWINRT; + break; + case KEY_TUMBLER2A: + case KEY_HOME | KEY_LEFT: + res = BRL_CMD_LNBEG; + break; + case KEY_TUMBLER2B: + case KEY_HOME | KEY_RIGHT: + res = BRL_CMD_LNEND; + break; + case KEY_CURSOR | KEY_LEFT: + res = BRL_CMD_FWINLTSKIP; + break; + case KEY_CURSOR | KEY_RIGHT: + res = BRL_CMD_FWINRTSKIP; + break; + case KEY_TUMBLER1A: + case KEY_BRL_F1 | KEY_LEFT: + res = BRL_CMD_CHRLT; + break; + case KEY_TUMBLER1B: + case KEY_BRL_F1 | KEY_RIGHT: + res = BRL_CMD_CHRRT; + break; + case KEY_BRL_F2 | KEY_LEFT: + res = BRL_CMD_HWINLT; + break; + case KEY_BRL_F2 | KEY_RIGHT: + res = BRL_CMD_HWINRT; + break; + + case KEY_ROUTING2: + res = BRL_BLK_DESCCHAR + RoutingPos; + break; + case KEY_ROUTING1: + res = BRL_BLK_ROUTE + RoutingPos; + break; + case KEY_BRL_F1 | KEY_ROUTING2: + res = BRL_BLK_CUTAPPEND + RoutingPos; + break; + case KEY_BRL_F1 | KEY_ROUTING1: + res = BRL_BLK_CUTBEGIN + RoutingPos; + break; + case KEY_BRL_F2 | KEY_ROUTING2: + res = BRL_BLK_CUTLINE + RoutingPos; + break; + case KEY_BRL_F2 | KEY_ROUTING1: + res = BRL_BLK_CUTRECT + RoutingPos; + break; + case KEY_HOME | KEY_ROUTING2: + res = BRL_BLK_SETMARK + RoutingPos; + break; + case KEY_HOME | KEY_ROUTING1: + res = BRL_BLK_GOTOMARK + RoutingPos; + break; + case KEY_CURSOR | KEY_ROUTING2: + res = BRL_BLK_PRINDENT + RoutingPos; + break; + case KEY_CURSOR | KEY_ROUTING1: + res = BRL_BLK_NXINDENT + RoutingPos; + break; + + case KEY_STATUS1_A: + res = BRL_CMD_CSRVIS; + break; + case KEY_STATUS2_A: + res = BRL_CMD_SKPIDLNS; + break; + case KEY_STATUS1_B: + res = BRL_CMD_ATTRVIS; + break; + case KEY_STATUS2_B: + res = BRL_CMD_DISPMD; + break; + case KEY_STATUS1_C: + res = BRL_CMD_CAPBLINK; + break; + case KEY_STATUS2_C: + res = BRL_CMD_SKPBLNKWINS; + break; + + case KEY_BRL_LEFT: + res = BRL_CMD_PREFMENU; + break; + case KEY_BRL_RIGHT: + res = BRL_CMD_INFO; + break; + + case KEY_BRL_F1 | KEY_BRL_LEFT: + res = BRL_CMD_FREEZE; + break; + case KEY_BRL_F1 | KEY_BRL_RIGHT: + res = BRL_CMD_SIXDOTS; + break; + + case KEY_BRL_F2 | KEY_BRL_LEFT: + res = BRL_CMD_PASTE; + break; + case KEY_BRL_F2 | KEY_BRL_RIGHT: + res = BRL_CMD_CSRJMP_VERT; + break; + + case KEY_BRL_UP: + res = BRL_CMD_PRPROMPT; + break; + case KEY_BRL_DOWN: + res = BRL_CMD_NXPROMPT; + break; + case KEY_BRL_F1 | KEY_BRL_UP: + res = BRL_CMD_PRPGRPH; + break; + case KEY_BRL_F1 | KEY_BRL_DOWN: + res = BRL_CMD_NXPGRPH; + break; + case KEY_BRL_F2 | KEY_BRL_UP: + res = BRL_CMD_PRSEARCH; + break; + case KEY_BRL_F2 | KEY_BRL_DOWN: + res = BRL_CMD_NXSEARCH; + break; + + case KEY_SPK_LEFT: + res = BRL_CMD_MUTE; + break; + case KEY_SPK_RIGHT: + res = BRL_CMD_SAY_LINE; + break; + case KEY_SPK_UP: + res = BRL_CMD_SAY_ABOVE; + break; + case KEY_SPK_DOWN: + res = BRL_CMD_SAY_BELOW; + break; + case KEY_SPK_F2 | KEY_SPK_LEFT: + res = BRL_CMD_SAY_SLOWER; + break; + case KEY_SPK_F2 | KEY_SPK_RIGHT: + res = BRL_CMD_SAY_FASTER; + break; + case KEY_SPK_F2 | KEY_SPK_DOWN: + res = BRL_CMD_SAY_SOFTER; + break; + case KEY_SPK_F2 | KEY_SPK_UP: + res = BRL_CMD_SAY_LOUDER; + break; + } + break; + + } + res |= BRL_FLG_REPEAT_INITIAL | BRL_FLG_REPEAT_DELAY; + } else { + /* These are the keys that should be processed when released */ + if (!ReleasedKeys) { + ReleasedKeys = LastKeys; + switch (brl->helpPage) { + case 0: /* ABT and Delphi models */ + switch (ReleasedKeys) { + case KEY_HOME: + res = BRL_CMD_TOP_LEFT; + break; + case KEY_CURSOR: + res = BRL_CMD_RETURN; + break; + case KEY_PROG: + res = BRL_CMD_HELP; + break; + case KEY_PROG | KEY_HOME: + res = BRL_CMD_DISPMD; + break; + case KEY_HOME | KEY_CURSOR: + res = BRL_CMD_CSRTRK; + break; + case KEY_PROG | KEY_CURSOR: + res = BRL_CMD_PREFMENU; + break; + + /* The following bindings really belong in the "pressed keys" + * section, but it appears (at least on my ABT340) that a bogus + * routing key press event is sometimes generated when at least + * two front keys are already pressed. The correct routing key + * event follows eventually, so the best workaround is to let + * getKey1() overwrite RoutingPos until some key is released. + * The exact bug as I observe it is that for routing keys 25-29 + * an extra press packet for routing key 35-31 is sent before + * the correct one. In other words, if 25 <= x <= 29 then a key + * press event is prepended with x = 30 + (30-x). + */ + case KEY_PROG | KEY_HOME | KEY_ROUTING1: + /* attribute for pointed character */ + res = BRL_BLK_DESCCHAR + RoutingPos; + break; + case KEY_HOME | KEY_CURSOR | KEY_ROUTING1: + /* align window to pointed character */ + res = BRL_BLK_SETLEFT + RoutingPos; + break; + } + break; + + case 1: /* Satellite models */ + switch (ReleasedKeys) { + case KEY_HOME: + res = BRL_CMD_BACK; + break; + case KEY_CURSOR: + res = BRL_CMD_HOME; + break; + case KEY_HOME | KEY_CURSOR: + res = BRL_CMD_CSRTRK; + break; + + case KEY_BRL_F1: + res = BRL_CMD_HELP; + break; + case KEY_BRL_F2: + res = BRL_CMD_LEARN; + break; + case KEY_BRL_F1 | KEY_BRL_F2: + res = BRL_CMD_RESTARTBRL; + break; + + case KEY_SPK_F1: + res = BRL_CMD_SPKHOME; + break; + case KEY_SPK_F2: + res = BRL_CMD_AUTOSPEAK; + break; + case KEY_SPK_F1 | KEY_SPK_F2: + res = BRL_CMD_RESTARTSPEECH; + break; + } + break; + + } + } + LastKeys = CurrentKeys; + if (!CurrentKeys) + ReleasedKeys = 0; + } + } + + if (res == BRL_CMD_RESTARTBRL) { + CurrentKeys = LastKeys = ReleasedKeys = 0; + RoutingPos = 0; + } + + return res; +} + +static int +writeBraille1 (BrailleDisplay *brl, const unsigned char *cells, int start, int count) { + static const unsigned char header[] = {'\r', 0X1B, 'B'}; /* escape code to display braille */ + static const unsigned char trailer[] = {'\r'}; /* to send after the braille sequence */ + + unsigned char packet[sizeof(header) + 2 + count + sizeof(trailer)]; + unsigned char *byte = packet; + + memcpy(byte, header, sizeof(header)); + byte += sizeof(header); + + *byte++ = start; + *byte++ = count; + + memcpy(byte, cells, count); + byte += count; + + memcpy(byte, trailer, sizeof(trailer)); + byte += sizeof(trailer); + + return writeBytes(packet, byte-packet, &brl->writeDelay); +} + +static const ProtocolOperations protocol1Operations = { + initializeVariables1, + readPacket1, updateConfiguration1, detectModel1, + readCommand1, writeBraille1 +}; + +#define KEY2_THUMB_COUNT 5 +#define KEY2_ETOUCH_COUNT 4 +#define KEY2_SMARTPAD_COUNT 9 + +#define KEY2_THUMB_SHIFT 0 +#define KEY2_ETOUCH_SHIFT (KEY2_THUMB_SHIFT + KEY2_THUMB_COUNT) +#define KEY2_SMARTPAD_SHIFT (KEY2_ETOUCH_SHIFT + KEY2_ETOUCH_COUNT) + +#define KEY2(type,index) (1 << (KEY2_##type##_SHIFT + (index))) + +#define KEY2_TH_1 KEY2(THUMB, 0) +#define KEY2_TH_2 KEY2(THUMB, 1) +#define KEY2_TH_3 KEY2(THUMB, 2) +#define KEY2_TH_4 KEY2(THUMB, 3) +#define KEY2_TH_5 KEY2(THUMB, 4) + +#define KEY2_ET_1 KEY2(ETOUCH, 0) +#define KEY2_ET_2 KEY2(ETOUCH, 1) +#define KEY2_ET_3 KEY2(ETOUCH, 2) +#define KEY2_ET_4 KEY2(ETOUCH, 3) + +#define KEY2_SP_1 KEY2(SMARTPAD, 0) +#define KEY2_SP_2 KEY2(SMARTPAD, 1) +#define KEY2_SP_L KEY2(SMARTPAD, 2) +#define KEY2_SP_E KEY2(SMARTPAD, 3) +#define KEY2_SP_U KEY2(SMARTPAD, 4) +#define KEY2_SP_D KEY2(SMARTPAD, 5) +#define KEY2_SP_R KEY2(SMARTPAD, 6) +#define KEY2_SP_3 KEY2(SMARTPAD, 7) +#define KEY2_SP_4 KEY2(SMARTPAD, 8) + +static uint32_t firmwareVersion2; +static unsigned long primaryKeys2; +static unsigned long secondaryKeys2; +static unsigned long activeKeys2; +static unsigned char splitOffset2; + +static void +initializeVariables2 (void) { + primaryKeys2 = 0; + secondaryKeys2 = 0; + activeKeys2 = 0; +} + +static int +interpretKeyCombination2 (void) { + switch (activeKeys2) { + case KEY2_SP_1: return BRL_CMD_HELP; + case KEY2_SP_2: return BRL_CMD_LEARN; + case KEY2_SP_3: return BRL_CMD_INFO; + case KEY2_SP_4: return BRL_CMD_PREFMENU; + + case KEY2_SP_L: return BRL_CMD_SIXDOTS; + case KEY2_SP_R: return BRL_CMD_CSRTRK; + case KEY2_SP_U: return BRL_CMD_FREEZE; + case KEY2_SP_D: return BRL_CMD_DISPMD; + case KEY2_SP_E: return BRL_CMD_PASTE; + + case KEY2_TH_3: return BRL_CMD_HOME; + + case KEY2_TH_2: return BRL_CMD_LNUP; + case KEY2_TH_4: return BRL_CMD_LNDN; + case KEY2_TH_1: return BRL_CMD_FWINLT; + case KEY2_TH_5: return BRL_CMD_FWINRT; + + case KEY2_TH_3 | KEY2_TH_2: return BRL_CMD_PRDIFLN; + case KEY2_TH_3 | KEY2_TH_4: return BRL_CMD_NXDIFLN; + case KEY2_TH_3 | KEY2_TH_1: return BRL_CMD_FWINLTSKIP; + case KEY2_TH_3 | KEY2_TH_5: return BRL_CMD_FWINRTSKIP; + + case KEY2_SP_1 | KEY2_TH_3: return BRL_CMD_BACK; + case KEY2_SP_1 | KEY2_TH_2: return BRL_CMD_ATTRUP; + case KEY2_SP_1 | KEY2_TH_4: return BRL_CMD_ATTRDN; + case KEY2_SP_1 | KEY2_TH_1: return BRL_CMD_TOP_LEFT; + case KEY2_SP_1 | KEY2_TH_5: return BRL_CMD_BOT_LEFT; + + case KEY2_SP_4 | KEY2_TH_3: return BRL_CMD_CSRJMP_VERT; + case KEY2_SP_4 | KEY2_TH_2: return BRL_CMD_PRPGRPH; + case KEY2_SP_4 | KEY2_TH_4: return BRL_CMD_NXPGRPH; + case KEY2_SP_4 | KEY2_TH_1: return BRL_CMD_PRPROMPT; + case KEY2_SP_4 | KEY2_TH_5: return BRL_CMD_NXPROMPT; + + case KEY2_ET_1: return BRL_CMD_LNBEG; + case KEY2_ET_2: return BRL_CMD_CHRLT; + case KEY2_ET_3: return BRL_CMD_LNEND; + case KEY2_ET_4: return BRL_CMD_CHRRT; + + case KEY2_SP_1 | KEY2_SP_L: return BRL_CMD_SAY_SLOWER; + case KEY2_SP_1 | KEY2_SP_R: return BRL_CMD_SAY_FASTER; + case KEY2_SP_1 | KEY2_SP_D: return BRL_CMD_SAY_SOFTER; + case KEY2_SP_1 | KEY2_SP_U: return BRL_CMD_SAY_LOUDER; + case KEY2_SP_1 | KEY2_SP_E: return BRL_CMD_AUTOSPEAK; + case KEY2_SP_4 | KEY2_SP_L: return BRL_CMD_MUTE; + case KEY2_SP_4 | KEY2_SP_R: return BRL_CMD_SAY_LINE; + case KEY2_SP_4 | KEY2_SP_U: return BRL_CMD_SAY_ABOVE; + case KEY2_SP_4 | KEY2_SP_D: return BRL_CMD_SAY_BELOW; + case KEY2_SP_4 | KEY2_SP_E: return BRL_CMD_SPKHOME; + } + + return EOF; +} + +static int +interpretPrimaryRoutingKey2 (void) { + switch (activeKeys2) { + case 0: return BRL_BLK_ROUTE; + + case KEY2_SP_1: return BRL_BLK_CUTBEGIN; + case KEY2_SP_2: return BRL_BLK_CUTAPPEND; + case KEY2_SP_3: return BRL_BLK_CUTLINE; + case KEY2_SP_4: return BRL_BLK_CUTRECT; + + case KEY2_SP_L: return BRL_BLK_PRINDENT; + case KEY2_SP_R: return BRL_BLK_NXINDENT; + case KEY2_SP_U: return BRL_BLK_PRDIFCHAR; + case KEY2_SP_D: return BRL_BLK_NXDIFCHAR; + case KEY2_SP_E: return BRL_BLK_SETLEFT; + } + + return EOF; +} + +static int +interpretSecondaryRoutingKey2 (void) { + switch (activeKeys2) { + case 0: return BRL_BLK_DESCCHAR; + } + + return EOF; +} + +static int +interpretKeyEvent2 (BrailleDisplay *brl, int *command, unsigned char group, unsigned char key) { + unsigned char release = group & 0X80; + group &= ~release; + + switch (group) { + case 0X01: + switch (key) { + case 0X01: + if (protocol->updateConfiguration(brl, 0, NULL)) return 0; + *command = BRL_CMD_RESTARTBRL; + return 1; + + default: + break; + } + break; + + { + unsigned int shift; + unsigned int count; + int secondary; + unsigned long *keys; + + case 0X71: /* thumb key */ + shift = KEY2_THUMB_SHIFT; + count = KEY2_THUMB_COUNT; + secondary = 1; + goto doKey; + + case 0X72: /* etouch key */ + shift = KEY2_ETOUCH_SHIFT; + count = KEY2_ETOUCH_COUNT; + secondary = 0; + goto doKey; + + case 0X73: /* smartpad key */ + shift = KEY2_SMARTPAD_SHIFT; + count = KEY2_SMARTPAD_COUNT; + secondary = 1; + goto doKey; + + doKey: + keys = &primaryKeys2; + if (secondary) { + if ((key / count) == 1) { + key -= count; + keys = &secondaryKeys2; + } + } + + if (key < count) { + unsigned long bit = 1 << (shift + key); + + if (release) { + *command = interpretKeyCombination2(); + *keys &= ~bit; + activeKeys2 = 0; + return 1; + } + + *keys |= bit; + activeKeys2 = primaryKeys2 | secondaryKeys2; + *command = interpretKeyCombination2(); + + if (*command == EOF) { + *command = BRL_CMD_NOOP; + } else { + *command |= BRL_FLG_REPEAT_DELAY; + } + + return 1; + } + break; + } + + case 0X74: { /* routing key */ + unsigned char secondary = key & 0X80; + key &= ~secondary; + + if (firmwareVersion2 < 0X011102) + if (key >= splitOffset2) + key -= splitOffset2; + + if (key >= textOffset) { + if ((key -= textOffset) < brl->textColumns) { + if (release) { + *command = EOF; + } else { + *command = secondary? interpretSecondaryRoutingKey2(): interpretPrimaryRoutingKey2(); + + if (*command == EOF) { + *command = BRL_CMD_NOOP; + } else { + *command |= key; + } + } + + activeKeys2 = 0; + return 1; + } + } + break; + } + + default: + break; + } + + LogPrint(LOG_WARNING, "unknown key: group=%02X key=%02X", group, key); + return 0; +} + +static int +readPacket2s (unsigned char *packet, int size) { + int offset = 0; + int length = 0; + + while (1) { + unsigned char byte; + + { + int started = offset > 0; + + if (!readByte(&byte, started)) { + int result = (errno == EAGAIN)? 0: -1; + if (started) LogBytes(LOG_WARNING, "Partial Packet", packet, offset); + return result; + } + } + + if (offset == 0) { + switch (byte) { + case 0X1B: + length = 2; + break; + + default: + LogBytes(LOG_WARNING, "Ignored Byte", &byte, 1); + continue; + } + } + + if (offset < size) { + packet[offset] = byte; + } else { + if (offset == size) LogBytes(LOG_WARNING, "Truncated Packet", packet, offset); + LogBytes(LOG_WARNING, "Discarded Byte", &byte, 1); + } + + if (offset == 1) { + switch (byte) { + case 0X3F: /* ? */ length = 3; break; + case 0X45: /* E */ length = 3; break; + case 0X4B: /* K */ length = 4; break; + case 0X54: /* T */ length = 4; break; + case 0X56: /* V */ length = 13; break; + } + } + + if (++offset == length) { + if (offset > size) { + offset = 0; + length = 0; + continue; + } + + if (logInputPackets) LogBytes(LOG_DEBUG, "Input Packet", packet, offset); + return length; + } + } +} + +static int +getAttributes2s (unsigned char item, unsigned char *packet, int size) { + unsigned char request[] = {0X1B, item, 0X3F}; + + if (writeBytes(request, sizeof(request), NULL)) { + while (io->awaitInput(200)) { + int length = protocol->readPacket(packet, size); + if (length <= 0) break; + if ((packet[0] == 0X1B) && (packet[1] == item)) return 1; + } + } + + return 0; +} + +static int +updateConfiguration2s (BrailleDisplay *brl, int autodetecting, const unsigned char *packet) { + unsigned char buffer[0X20]; + + if (getAttributes2s(0X45, buffer, sizeof(buffer))) { + unsigned char textColumns = buffer[2]; + + if (getAttributes2s(0X54, buffer, sizeof(buffer))) { + unsigned char statusColumns = buffer[2]; + unsigned char statusSide = buffer[3]; + + if (updateConfiguration(brl, autodetecting, textColumns, statusColumns, + (statusSide == 'R')? STATUS_RIGHT: STATUS_LEFT)) { + splitOffset2 = (model->columns == actualColumns)? 0: actualColumns+1; + return 1; + } + } + } + + return 0; +} + +static int +identifyModel2s (BrailleDisplay *brl, unsigned char identifier) { + static const ModelEntry *const models[] = { + &modelBC624, &modelBC640, &modelBC680, + NULL + }; + + unsigned char packet[0X20]; + const ModelEntry *const *modelEntry = models; + + while ((model = *modelEntry++)) { + if (model->identifier == identifier) { + BRLSYMBOL.firmness = NULL; + + firmwareVersion2 = 0; + if (getAttributes2s(0X56, packet, sizeof(packet))) { + firmwareVersion2 |= (packet[4] << 16); + firmwareVersion2 |= (packet[5] << 8); + firmwareVersion2 |= (packet[6] << 0); + + if (setDefaultConfiguration(brl)) { + if (updateConfiguration2s(brl, 1, NULL)) { + return 1; + } + } + } + + return 0; + } + } + + LogPrint(LOG_ERR, "detected unknown Alva model with ID %02X (hex)", identifier); + return 0; +} + +static int +detectModel2s (BrailleDisplay *brl) { + int probes = 0; + + do { + unsigned char packet[0X20]; + + if (getAttributes2s(0X3F, packet, sizeof(packet))) { + if (identifyModel2s(brl, packet[2])) { + return 1; + } + } else if (errno != EAGAIN) { + break; + } + } while (++probes < 3); + + return 0; +} + +static int +readCommand2s (BrailleDisplay *brl, BRL_DriverCommandContext context) { + while (1) { + unsigned char packet[MAXIMUM_PACKET_SIZE]; + int length = protocol->readPacket(packet, sizeof(packet)); + + if (!length) return EOF; + if (length < 0) return BRL_CMD_RESTARTBRL; + + switch (packet[0]) { + case 0X1B: + switch (packet[1]) { + case 0X4B: /* K */ { + int command; + if (interpretKeyEvent2(brl, &command, packet[2], packet[3])) return command; + continue; + } + + default: + break; + } + break; + + default: + break; + } + + LogBytes(LOG_WARNING, "Unexpected Packet", packet, length); + } +} + +static int +writeBraille2s (BrailleDisplay *brl, const unsigned char *cells, int start, int count) { + unsigned char packet[4 + count]; + unsigned char *byte = packet; + + *byte++ = 0X1B; + *byte++ = 0X42; + *byte++ = start; + *byte++ = count; + + memcpy(byte, cells, count); + byte += count; + + return writeBytes(packet, byte-packet, &brl->writeDelay); +} + +static const ProtocolOperations protocol2sOperations = { + initializeVariables2, + readPacket2s, updateConfiguration2s, detectModel2s, + readCommand2s, writeBraille2s +}; + +static int +readPacket2u (unsigned char *packet, int size) { + int offset = 0; + int length = 0; + + while (1) { + unsigned char byte; + + { + int started = offset > 0; + + if (!readByte(&byte, started)) { + int result = (errno == EAGAIN)? 0: -1; + if (started) LogBytes(LOG_WARNING, "Partial Packet", packet, offset); + return result; + } + } + + if (offset == 0) { + switch (byte) { + case 0X04: + length = 3; + break; + + default: + LogBytes(LOG_WARNING, "Ignored Byte", &byte, 1); + continue; + } + } + + if (offset < size) { + packet[offset] = byte; + } else { + if (offset == size) LogBytes(LOG_WARNING, "Truncated Packet", packet, offset); + LogBytes(LOG_WARNING, "Discarded Byte", &byte, 1); + } + + if (++offset == length) { + if (offset > size) { + offset = 0; + length = 0; + continue; + } + + if (logInputPackets) LogBytes(LOG_DEBUG, "Input Packet", packet, offset); + return length; + } + } +} + +static int +updateConfiguration2u (BrailleDisplay *brl, int autodetecting, const unsigned char *packet) { + unsigned char buffer[0X20]; + int length = io->getFeatureReport(0X05, buffer, sizeof(buffer)); + + if (length != -1) { + int textColumns = brl->textColumns; + int statusColumns = brl->statusColumns; + int statusSide = 0; + + if (length >= 2) statusColumns = buffer[1]; + if (length >= 3) statusSide = buffer[2]; + if (length >= 7) textColumns = buffer[6]; + + if (updateConfiguration(brl, autodetecting, textColumns, statusColumns, + statusSide? STATUS_RIGHT: STATUS_LEFT)) { + splitOffset2 = model->columns - actualColumns; + return 1; + } + } + + return 0; +} + +static int +detectModel2u (BrailleDisplay *brl) { + BRLSYMBOL.firmness = NULL; + + { + unsigned char buffer[0X20]; + int length = io->getFeatureReport(0X09, buffer, sizeof(buffer)); + + firmwareVersion2 = 0; + if (length >= 6) firmwareVersion2 |= (buffer[5] << 16); + if (length >= 7) firmwareVersion2 |= (buffer[6] << 8); + if (length >= 8) firmwareVersion2 |= (buffer[7] << 0); + } + + if (setDefaultConfiguration(brl)) + if (updateConfiguration2u(brl, 1, NULL)) + return 1; + + return 0; +} + +static int +readCommand2u (BrailleDisplay *brl, BRL_DriverCommandContext context) { + while (1) { + unsigned char packet[MAXIMUM_PACKET_SIZE]; + int length = protocol->readPacket(packet, sizeof(packet)); + + if (!length) return EOF; + if (length < 0) return BRL_CMD_RESTARTBRL; + + switch (packet[0]) { + case 0X04: { + int command; + if (interpretKeyEvent2(brl, &command, packet[2], packet[1])) return command; + continue; + } + + default: + break; + } + + LogBytes(LOG_WARNING, "Unexpected Packet", packet, length); + } +} + +static int +writeBraille2u (BrailleDisplay *brl, const unsigned char *cells, int start, int count) { + while (count > 0) { + int length = MIN(count, 40); + unsigned char packet[3 + length]; + unsigned char *byte = packet; + + *byte++ = 0X02; + *byte++ = start; + *byte++ = length; + + memcpy(byte, cells, length); + byte += length; + + if (!writeBytes(packet, byte-packet, &brl->writeDelay)) return 0; + cells += length; + start += length; + count -= length; + } + + return 1; +} + +static const ProtocolOperations protocol2uOperations = { + initializeVariables2, + readPacket2u, updateConfiguration2u, detectModel2u, + readCommand2u, writeBraille2u +}; + +#include "io_serial.h" +static SerialDevice *serialDevice = NULL; +static int serialCharactersPerSecond; + +static int +openSerialPort (const char *device) { + if ((serialDevice = serialOpenDevice(device))) { + if (serialRestartDevice(serialDevice, BAUDRATE)) { + serialCharactersPerSecond = BAUDRATE / serialGetCharacterBits(serialDevice); + textRewriteInterval = REWRITE_INTERVAL; + protocol = &protocol1Operations; + return 1; + } + } + + return 0; +} + +static void +closeSerialPort (void) { + if (serialDevice) { + serialCloseDevice(serialDevice); + serialDevice = NULL; + } +} + +static int +awaitSerialInput (int milliseconds) { + return serialAwaitInput(serialDevice, milliseconds); +} + +static int +readSerialBytes (unsigned char *buffer, int count, int wait) { + const int timeout = 100; + return serialReadData(serialDevice, buffer, count, + (wait? timeout: 0), timeout); +} + +static int +writeSerialBytes (const unsigned char *buffer, int length, unsigned int *delay) { + if (logOutputPackets) LogBytes(LOG_DEBUG, "Output Packet", buffer, length); + if (delay) *delay += (length * 1000 / serialCharactersPerSecond) + 1; + return serialWriteData(serialDevice, buffer, length); +} + +static int +getSerialFeatureReport (unsigned char report, unsigned char *buffer, int length) { + errno = ENOSYS; + return -1; +} + +static const InputOutputOperations serialOperations = { + openSerialPort, closeSerialPort, + awaitSerialInput, readSerialBytes, writeSerialBytes, + getSerialFeatureReport +}; + +#ifdef ENABLE_USB_SUPPORT +#include "io_usb.h" + +static UsbChannel *usbChannel = NULL; + +static int +openUsbPort (const char *device) { + static const UsbChannelDefinition definitions[] = { + { /* Alva 5nn */ + .vendor=0X06b0, .product=0X0001, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=2 + } + , + { /* Alva BC624 */ + .vendor=0X0798, .product=0X0624, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=0, + .data=&modelBC624 + } + , + { /* Alva BC640 */ + .vendor=0X0798, .product=0X0640, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=0, + .data=&modelBC640 + } + , + { /* Alva BC680 */ + .vendor=0X0798, .product=0X0680, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=0, + .data=&modelBC680 + } + , + { .vendor=0 } + }; + + if ((usbChannel = usbFindChannel(definitions, (void *)device))) { + if (usbChannel->definition.outputEndpoint) { + protocol = &protocol1Operations; + } else { + protocol = &protocol2uOperations; + } + + model = usbChannel->definition.data; + textRewriteInterval = 0; + return 1; + } + return 0; +} + +static void +closeUsbPort (void) { + if (usbChannel) { + usbCloseChannel(usbChannel); + usbChannel = NULL; + } +} + +static int +awaitUsbInput (int milliseconds) { + return usbAwaitInput(usbChannel->device, usbChannel->definition.inputEndpoint, milliseconds); +} + +static int +readUsbBytes (unsigned char *buffer, int length, int wait) { + const int timeout = 100; + int count = usbReapInput(usbChannel->device, + usbChannel->definition.inputEndpoint, + buffer, length, + (wait? timeout: 0), timeout); + if (count != -1) return count; + if (errno == EAGAIN) return 0; + return -1; +} + +static int +writeUsbBytes (const unsigned char *buffer, int length, unsigned int *delay) { + if (logOutputPackets) LogBytes(LOG_DEBUG, "Output Packet", buffer, length); + + if (usbChannel->definition.outputEndpoint) { + return usbWriteEndpoint(usbChannel->device, usbChannel->definition.outputEndpoint, buffer, length, 1000); + } else { + return usbHidSetReport(usbChannel->device, usbChannel->definition.interface, buffer[0], buffer, length, 1000); + } +} + +static int +getUsbFeatureReport (unsigned char report, unsigned char *buffer, int length) { + return usbHidGetFeature(usbChannel->device, usbChannel->definition.interface, report, buffer, length, 1000); +} + +static const InputOutputOperations usbOperations = { + openUsbPort, closeUsbPort, + awaitUsbInput, readUsbBytes, writeUsbBytes, + getUsbFeatureReport +}; +#endif /* ENABLE_USB_SUPPORT */ + +#ifdef ENABLE_BLUETOOTH_SUPPORT +/* Bluetooth IO */ +#include "io_bluetooth.h" +#include "io_misc.h" + +static int bluetoothConnection = -1; + +static int +openBluetoothPort (const char *device) { + if ((bluetoothConnection = btOpenConnection(device, 1, 0)) != -1) { + textRewriteInterval = REWRITE_INTERVAL; + protocol = &protocol2sOperations; + return 1; + } + + return 0; +} + +static void +closeBluetoothPort (void) { + close(bluetoothConnection); + bluetoothConnection = -1; +} + +static int +awaitBluetoothInput (int milliseconds) { + return awaitInput(bluetoothConnection, milliseconds); +} + +static int +readBluetoothBytes (unsigned char *buffer, int length, int wait) { + const int timeout = 100; + size_t offset = 0; + return readChunk(bluetoothConnection, + buffer, &offset, length, + (wait? timeout: 0), timeout); +} + +static int +writeBluetoothBytes (const unsigned char *buffer, int length, unsigned int *delay) { + int count = writeData(bluetoothConnection, buffer, length); + if (count != length) { + if (count == -1) { + LogError("Alva Bluetooth write"); + } else { + LogPrint(LOG_WARNING, "trunccated bluetooth write: %d < %d", count, length); + } + } + return count; +} + +static int +getBluetoothFeatureReport (unsigned char report, unsigned char *buffer, int length) { + errno = ENOSYS; + return -1; +} + +static const InputOutputOperations bluetoothOperations = { + openBluetoothPort, closeBluetoothPort, + awaitBluetoothInput, readBluetoothBytes, writeBluetoothBytes, + getBluetoothFeatureReport +}; +#endif /* ENABLE_BLUETOOTH_SUPPORT */ + +int +AL_writeData( unsigned char *data, int len ) { + return writeBytes(data, len, NULL); +} + +static int +brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { + { + static const DotsTable dots = {0X01, 0X02, 0X04, 0X08, 0X10, 0X20, 0X40, 0X80}; + makeOutputTable(dots, outputTable); + } + + if (isSerialDevice(&device)) { + io = &serialOperations; + } else + +#ifdef ENABLE_USB_SUPPORT + if (isUsbDevice(&device)) { + io = &usbOperations; + } else +#endif /* ENABLE_USB_SUPPORT */ + +#ifdef ENABLE_BLUETOOTH_SUPPORT + if (isBluetoothDevice(&device)) { + io = &bluetoothOperations; + } else +#endif /* ENABLE_BLUETOOTH_SUPPORT */ + + { + unsupportedDevice(device); + return 0; + } + + /* Open the Braille display device */ + if (io->openPort(device)) { + protocol->initializeVariables(); + + if (protocol->detectModel(brl)) { + memset(&textRewriteTime, 0, sizeof(textRewriteTime)); + return 1; + } + + io->closePort(); + } + + return 0; +} + +static void +brl_destruct (BrailleDisplay *brl) { + if (previousText) { + free(previousText); + previousText = NULL; + } + + if (previousStatus) { + free(previousStatus); + previousStatus = NULL; + } + + io->closePort(); +} + +static int +brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) { + int from = 0; + int to = brl->textColumns * brl->textRows; + + if (textRewriteInterval) { + struct timeval now; + gettimeofday(&now, NULL); + if (millisecondsBetween(&textRewriteTime, &now) > textRewriteInterval) textRewriteRequired = 1; + if (textRewriteRequired) textRewriteTime = now; + } + + if (textRewriteRequired) { + textRewriteRequired = 0; + } else { + while ((from < to) && (brl->buffer[from] == previousText[from])) from++; + while ((--to > from) && (brl->buffer[to] == previousText[to])); + to++; + } + + if (from < to) { + unsigned char cells[to - from - 1]; + + { + int index; + for (index=from; indexbuffer[index])]; + } + + if (!protocol->writeBraille(brl, cells, textOffset+from, to-from)) return 0; + } + return 1; +} + +static int +brl_writeStatus (BrailleDisplay *brl, const unsigned char *status) { + if (statusRewriteRequired || (memcmp(status, previousStatus, brl->statusColumns) != 0)) { + unsigned char cells[brl->statusColumns]; + + { + int i; + for (i=0; istatusColumns; ++i) + cells[i] = outputTable[(previousStatus[i] = status[i])]; + } + + if (!protocol->writeBraille(brl, cells, statusOffset, brl->statusColumns)) return 0; + statusRewriteRequired = 0; + } + + return 1; +} + +static int +brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { + return protocol->readCommand(brl, context); +} + +static void +brl_firmness (BrailleDisplay *brl, BrailleFirmness setting) { + writeParameter1(brl, 3, + setting * 4 / BRL_FIRMNESS_MAXIMUM); +} diff --git a/BrailleDrivers/Alva/braille.h b/Drivers/Braille/Alva/braille.h similarity index 83% rename from BrailleDrivers/Alva/braille.h rename to Drivers/Braille/Alva/braille.h index 212a943d8c43627ff5b40ae21438af9ddd28af4a..cf375068411445a5a879172af6a9c19339cd3eb8 100644 --- a/BrailleDrivers/Alva/braille.h +++ b/Drivers/Braille/Alva/braille.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/Alva/help0.txt b/Drivers/Braille/Alva/help0.txt similarity index 98% rename from BrailleDrivers/Alva/help0.txt rename to Drivers/Braille/Alva/help0.txt index 23e25f30b0dcc02712099355385a2ee9970a14d0..060a31486cd9b324cfc749221f990e326c01744f 100644 --- a/BrailleDrivers/Alva/help0.txt +++ b/Drivers/Braille/Alva/help0.txt @@ -1,4 +1,4 @@ -Help Screen for Alva ABT and Delphi models +Help for ABT and Delphi Models From left to right, front keys are: PROG HOME CURSOR UP LEFT RIGHT DOWN diff --git a/BrailleDrivers/Alva/help1.txt b/Drivers/Braille/Alva/help1.txt similarity index 98% rename from BrailleDrivers/Alva/help1.txt rename to Drivers/Braille/Alva/help1.txt index 82d6d077e7d9e717384b928c679de985109fc809..d1b733fda32afa8c8d2f871286419c8b11c4d634 100644 --- a/BrailleDrivers/Alva/help1.txt +++ b/Drivers/Braille/Alva/help1.txt @@ -1,4 +1,4 @@ -Help Screen for Alva Satellite Models +Help for Satellite Models From left to right, the front keys are: Home Left Up Down Right Cursor The left Satellite keypad is for speech functions. The right Satellite keypad is for braille functions. diff --git a/Drivers/Braille/Alva/help2.txt b/Drivers/Braille/Alva/help2.txt new file mode 100644 index 0000000000000000000000000000000000000000..ee1a2c3576072992d13b4642a9e95564e85e0120 --- /dev/null +++ b/Drivers/Braille/Alva/help2.txt @@ -0,0 +1,61 @@ +Help for Braille Controller Models + +Legend: +th1-th5: thumb keys +et1-et4: etouch keys +sp1-sp4: smartpad rectangular keys +spl,spr,spu,spd,spe: smartpad navigation keys +cr1: primary cursor routing key +cr2: secondary cursor routing key + +Display Modes: +sp1: enter/leave help page +sp2: enter/leave learn mode +sp3: enter/leave status display +sp4: enter/leave preferences menu + +Basic Navigation: +th3: go to cursor +th1/th5: go left/right one window +th2/th4: go up/down one line +th3 + th1/th5: go left/right to nearest non-blank window +th3 + th2/th4: go up/down to nearest line with different content +et1/et3: go to beginning/end of line +et2/et4: go left/right one character +cr1: bring cursor to character +cr2: describe character + +Advanced Navigation: +sp1 + th1/th5: go to beginning of top/bottom line +sp1 + th2/th4: go up/down to nearest line with different highlighting +sp4 + th1/th5: go to previous/next command prompt +sp4 + th2/th4: go to last/first line of previous/next paragraph +sp1+th3: undo unexpected cursor tracking motion +sp4+th3: bring cursor to line (no horizontal motion) +spl/spr + cr1: go up/down to nearest line without greater indent +spu/spd + cr1: go up/down to nearest line with different character +spe+cr1: position left edge of window at character + +Feature States: +spl: toggle braille six/eight dots +spr: toggle cursor tracking off/on +spu: toggle screen freeze on/off +spd: toggle display content attributes/text + +Cut and Paste: +sp1+cr1: start new cut buffer at character +sp2+cr1: append to existing cur buffer from character +sp3+cr1: linear cut to character +sp4+cr1: rectangular cut to character +spe: insert cut buffer at cursor + +Speech Functions: +sp1 + spl/spr: decrease/increase speed +sp1 + spd/spu: decrease/increase volume +sp1+spe: toggle autospeak +sp4+spl: stop speaking +sp4+spr: say current line +sp4+spu: say from top of screen through current line +sp4+spd: say from current line through bottom of screen +sp4+spe: go to current speech position + diff --git a/BrailleDrivers/Alva/reldeps.mk b/Drivers/Braille/Alva/reldeps.mk similarity index 78% rename from BrailleDrivers/Alva/reldeps.mk rename to Drivers/Braille/Alva/reldeps.mk index 0a13bb8fa01ba94d929c681f261c9219255abc70..aa8b022965bf49ab5deb7c7224dbafd18ca6babc 100644 --- a/BrailleDrivers/Alva/reldeps.mk +++ b/Drivers/Braille/Alva/reldeps.mk @@ -3,6 +3,7 @@ braille.$O: $(SRC_DIR)/braille.c braille.$O: $(BLD_TOP)config.h braille.$O: $(SRC_TOP)prologue.h braille.$O: $(SRC_TOP)Programs/misc.h +braille.$O: $(SRC_TOP)Programs/bitmask.h braille.$O: $(SRC_TOP)Programs/brl.h braille.$O: $(BLD_TOP)Programs/brlapi_constants.h braille.$O: $(SRC_TOP)Programs/brlapi_keycodes.h @@ -11,10 +12,14 @@ braille.$O: $(SRC_TOP)Programs/brltty.h braille.$O: $(SRC_TOP)Programs/cmd.h braille.$O: $(SRC_TOP)Programs/ctb.h braille.$O: $(SRC_TOP)Programs/driver.h +braille.$O: $(SRC_TOP)Programs/keycodes.h +braille.$O: $(SRC_TOP)Programs/ktb.h braille.$O: $(SRC_TOP)Programs/spk.h braille.$O: $(SRC_TOP)Programs/brl_driver.h braille.$O: $(SRC_DIR)/braille.h braille.$O: $(SRC_TOP)Programs/io_defs.h braille.$O: $(SRC_TOP)Programs/io_serial.h braille.$O: $(SRC_TOP)Programs/io_usb.h +braille.$O: $(SRC_TOP)Programs/io_bluetooth.h +braille.$O: $(SRC_TOP)Programs/io_misc.h diff --git a/Drivers/Braille/Baum/Makefile.in b/Drivers/Braille/Baum/Makefile.in new file mode 100644 index 0000000000000000000000000000000000000000..a3f61d23178a17339f01c28337701a75a568269c --- /dev/null +++ b/Drivers/Braille/Baum/Makefile.in @@ -0,0 +1,29 @@ +############################################################################### +# 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-2009 by The BRLTTY Developers. +# +# BRLTTY comes with ABSOLUTELY NO WARRANTY. +# +# This is free software, placed under the terms of the +# GNU General Public License, as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. +# +# Web Page: http://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +DRIVER_CODE = bm +DRIVER_NAME = Baum +DRIVER_COMMENT = Inka, Vario/RBT, SuperVario/Brailliant, PocketVario, VarioPro, EcoVario, VarioConnect/BrailleConnect, Refreshabraille +DRIVER_VERSION = +DRIVER_DEVELOPERS = Dave Mielke +HELP_DEPS = $(HELP_TEXT) +include $(SRC_TOP)braille.mk + +braille.$O: + $(CC) $(BRL_CFLAGS) -c $(SRC_DIR)/braille.c + diff --git a/BrailleDrivers/Baum/README.Inka b/Drivers/Braille/Baum/README.Inka similarity index 100% rename from BrailleDrivers/Baum/README.Inka rename to Drivers/Braille/Baum/README.Inka diff --git a/BrailleDrivers/Baum/braille.c b/Drivers/Braille/Baum/braille.c similarity index 65% rename from BrailleDrivers/Baum/braille.c rename to Drivers/Braille/Baum/braille.c index 98fcb2fddd08df82dec7ff62bac9456566792dec..3e389855a138eef80cc53b1165b1001b9b585af8 100644 --- a/BrailleDrivers/Baum/braille.c +++ b/Drivers/Braille/Baum/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -48,8 +49,6 @@ static const int probeTimeout = 200; #define VERTICAL_SENSOR_COUNT 27 static int cellCount; -static int textCount; -static int statusCount; static int cellsUpdated; static unsigned char internalCells[MAXIMUM_CELL_COUNT]; static unsigned char externalCells[MAXIMUM_CELL_COUNT]; @@ -85,7 +84,8 @@ typedef struct { const char *name; int serialBaud; SerialParity serialParity; - int (*readPacket) (unsigned char *packet, int size); + DotsTable dotsTable; + int (*readPacket) (BrailleDisplay *brl, unsigned char *packet, int size); int (*writePacket) (BrailleDisplay *brl, const unsigned char *packet, int length); int (*probeDisplay) (BrailleDisplay *brl); int (*updateKeys) (BrailleDisplay *brl, int *keyPressed); @@ -146,6 +146,7 @@ updateFunctionKeys (uint64_t keys, uint64_t mask, unsigned int shift, int *press mask <<= shift; } + keys &= mask; keys |= pressedKeys.functionKeys & ~mask; if (keys == pressedKeys.functionKeys) return 0; @@ -257,21 +258,23 @@ clearCells (int start, int count) { } static void -logCellCount (void) { - switch ((textCount = cellCount)) { +logCellCount (BrailleDisplay *brl) { + switch ((brl->textColumns = cellCount)) { case 44: + case 68: case 84: - textCount -= 4; + brl->textColumns -= 4; break; case 56: - textCount -= 16; + brl->textColumns -= 16; break; } - statusCount = cellCount - textCount; + brl->textRows = 1; + brl->statusRows = (brl->statusColumns = cellCount - brl->textColumns)? 1: 0; LogPrint(LOG_INFO, "Cell Count: %d (%d text, %d status)", - cellCount, textCount, statusCount); + cellCount, brl->textColumns, brl->statusColumns); } static void @@ -282,7 +285,7 @@ changeCellCount (BrailleDisplay *brl, int count) { { int number; - for (number=cellCount; numberx = textCount; + logCellCount(brl); brl->resizeRequired = 1; } } @@ -301,6 +302,16 @@ changeCellCount (BrailleDisplay *brl, int count) { #define ESCAPE 0X1B +typedef unsigned char BaumInteger[2]; +#define MAKE_BAUM_INTEGER_FIRST(i) ((i) & 0XFF) +#define MAKE_BAUM_INTEGER_SECOND(i) (((i) >> 8) & 0XFF) +#define MAKE_BAUM_INTEGER(i) MAKE_BAUM_INTEGER_FIRST((i)), MAKE_BAUM_INTEGER_SECOND((i)) + +static inline uint16_t +getBaumInteger (const BaumInteger integer) { + return (integer[1] << 8) | integer[0]; +} + typedef enum { BAUM_REQ_DisplayData = 0X01, BAUM_REQ_GetVersionNumber = 0X05, @@ -310,6 +321,9 @@ typedef enum { BAUM_REQ_SetProtocolState = 0X15, BAUM_REQ_SetCommunicationChannel = 0X16, BAUM_REQ_CausePowerdown = 0X17, + BAUM_REQ_ModuleRegistration = 0X50, + BAUM_REQ_DataRegisters = 0X51, + BAUM_REQ_ServiceRegisters = 0X52, BAUM_REQ_GetDeviceIdentity = 0X84, BAUM_REQ_GetSerialNumber = 0X8A, BAUM_REQ_GetBluetoothName = 0X8C, @@ -327,7 +341,7 @@ typedef enum { BAUM_RSP_VerticalSensors = 0X21, BAUM_RSP_RoutingKeys = 0X22, BAUM_RSP_Switches = 0X23, - BAUM_RSP_TopKeys = 0X24, + BAUM_RSP_DisplayKeys = 0X24, BAUM_RSP_HorizontalSensor = 0X25, BAUM_RSP_VerticalSensor = 0X26, BAUM_RSP_RoutingKey = 0X27, @@ -339,6 +353,9 @@ typedef enum { BAUM_RSP_EntryKeys = 0X33, BAUM_RSP_JoyStick = 0X34, BAUM_RSP_ErrorCode = 0X40, + BAUM_RSP_ModuleRegistration = 0X50, + BAUM_RSP_DataRegisters = 0X51, + BAUM_RSP_ServiceRegisters = 0X52, BAUM_RSP_DeviceIdentity = 0X84, BAUM_RSP_SerialNumber = 0X8A, BAUM_RSP_BluetoothName = 0X8C @@ -376,16 +393,16 @@ typedef enum { #define BAUM_KEY(bit,type) (UINT64_C(bit) << BAUM_SHIFT_##type) -#define BAUM_SHIFT_TOP 0 -#define BAUM_WIDTH_TOP 6 -#define BAUM_KEY_TL1 BAUM_KEY(0X01, TOP) -#define BAUM_KEY_TL2 BAUM_KEY(0X02, TOP) -#define BAUM_KEY_TL3 BAUM_KEY(0X04, TOP) -#define BAUM_KEY_TR1 BAUM_KEY(0X08, TOP) -#define BAUM_KEY_TR2 BAUM_KEY(0X10, TOP) -#define BAUM_KEY_TR3 BAUM_KEY(0X20, TOP) +#define BAUM_SHIFT_DISPLAY 0 +#define BAUM_WIDTH_DISPLAY 6 +#define BAUM_KEY_DK1 BAUM_KEY(0X01, DISPLAY) +#define BAUM_KEY_DK2 BAUM_KEY(0X02, DISPLAY) +#define BAUM_KEY_DK3 BAUM_KEY(0X04, DISPLAY) +#define BAUM_KEY_DK4 BAUM_KEY(0X08, DISPLAY) +#define BAUM_KEY_DK5 BAUM_KEY(0X10, DISPLAY) +#define BAUM_KEY_DK6 BAUM_KEY(0X20, DISPLAY) -#define BAUM_SHIFT_COMMAND (BAUM_SHIFT_TOP + BAUM_WIDTH_TOP) +#define BAUM_SHIFT_COMMAND (BAUM_SHIFT_DISPLAY + BAUM_WIDTH_DISPLAY) #define BAUM_WIDTH_COMMAND 7 #define BAUM_KEY_CK1 BAUM_KEY(0X01, COMMAND) #define BAUM_KEY_CK2 BAUM_KEY(0X02, COMMAND) @@ -446,18 +463,20 @@ typedef enum { #define BAUM_KEY_BLU BAUM_KEY(0X20, BACK6) #define BAUM_SHIFT_DOT (BAUM_SHIFT_BACK10A + BAUM_WIDTH_BACK10A) -#define BAUM_WIDTH_DOT 6 +#define BAUM_WIDTH_DOT 8 #define BAUM_KEY_DOT1 BAUM_KEY(0X01, DOT) #define BAUM_KEY_DOT2 BAUM_KEY(0X02, DOT) #define BAUM_KEY_DOT3 BAUM_KEY(0X04, DOT) #define BAUM_KEY_DOT4 BAUM_KEY(0X08, DOT) #define BAUM_KEY_DOT5 BAUM_KEY(0X10, DOT) #define BAUM_KEY_DOT6 BAUM_KEY(0X20, DOT) +#define BAUM_KEY_DOT7 BAUM_KEY(0X40, DOT) +#define BAUM_KEY_DOT8 BAUM_KEY(0X80, DOT) #define BAUM_SHIFT_BUTTON (BAUM_SHIFT_DOT + BAUM_WIDTH_DOT) #define BAUM_WIDTH_BUTTON 8 #define BAUM_KEY_B9 BAUM_KEY(0X01, BUTTON) -#define BAUM_KEY_B0 BAUM_KEY(0X02, BUTTON) +#define BAUM_KEY_B10 BAUM_KEY(0X02, BUTTON) #define BAUM_KEY_B11 BAUM_KEY(0X04, BUTTON) #define BAUM_KEY_F1 BAUM_KEY(0X10, BUTTON) #define BAUM_KEY_F2 BAUM_KEY(0X20, BUTTON) @@ -509,66 +528,313 @@ typedef enum { BAUM_ERR_BrailleTableIndex = 0X2A } BaumError; -#define BAUM_DEVICE_IDENTITY_LENGTH 16 -#define BAUM_SERIAL_NUMBER_LENGTH 8 -#define BAUM_BLUETOOTH_NAME_LENGTH 14 +#define BAUM_LENGTH_DeviceIdentity 16 +#define BAUM_LENGTH_SerialNumber 8 +#define BAUM_LENGTH_BluetoothName 14 + +typedef enum { + BAUM_MRC_Acknowledge = 0X01, + BAUM_MRC_Query = 0X04 +} BaumModuleRegistrationCommand; + +typedef enum { + BAUM_MRE_Addition = 1, + BAUM_MRE_Removal = 2, + BAUM_MRE_Rejection = 3 +} BaumModuleRegistrationEvent; + +typedef enum { + BAUM_DRC_Write = 0X00, + BAUM_DRC_Read = 0X01, + BAUM_DRC_Reset = 0X80 +} BaumDataRegistersCommand; + +typedef enum { + BAUM_DRF_WheelsChanged = 0X01, + BAUM_DRF_ButtonsChanged = 0X02, + BAUM_DRF_KeysChanged = 0X04, + BAUM_DRF_PotsChanged = 0X04, + BAUM_DRF_SensorsChanged = 0X08, + BAUM_DRF_ErrorOccurred = 0X80 +} BaumDataRegistersFlag; + +typedef enum { + BAUM_DRE_WheelsNotConnected = 0X01, + BAUM_DRE_WheelsNotAdjusted = 0X02, + BAUM_DRE_KeyBufferFull = 0X04, + BAUM_DRE_SerialError = 0X80 +} BaumDataRegistersError; + +typedef enum { + BAUM_SRC_Write = 0X00, + BAUM_SRC_Read = 0X01 +} BaumServiceRegistersCommand; typedef union { - unsigned char bytes[17]; + unsigned char bytes[2 + 0XFF]; struct { unsigned char code; union { + unsigned char cellCount; + unsigned char versionNumber; + + struct { + unsigned char identifier; + unsigned char setting; + } PACKED mode; + + unsigned char communicationChannel; + unsigned char powerdownReason; unsigned char horizontalSensors[KEY_GROUP_SIZE(MAXIMUM_CELL_COUNT)]; + struct { unsigned char left[KEY_GROUP_SIZE(VERTICAL_SENSOR_COUNT)]; unsigned char right[KEY_GROUP_SIZE(VERTICAL_SENSOR_COUNT)]; } PACKED verticalSensors; + unsigned char routingKeys[KEY_GROUP_SIZE(MAXIMUM_CELL_COUNT)]; unsigned char switches; - unsigned char topKeys; + unsigned char displayKeys; unsigned char horizontalSensor; + union { unsigned char left; unsigned char right; } PACKED verticalSensor; + unsigned char routingKey; unsigned char frontKeys6; unsigned char backKeys6; unsigned char commandKeys; unsigned char frontKeys10[2]; unsigned char backKeys10[2]; + struct { unsigned char buttons; unsigned char dots; } PACKED entryKeys; - unsigned char joyStick; - unsigned char cellCount; - unsigned char versionNumber; - unsigned char communicationChannel; - unsigned char powerdownReason; + unsigned char joyStick; + unsigned char errorCode; struct { - unsigned char identifier; - unsigned char setting; - } PACKED mode; - - char deviceIdentity[BAUM_DEVICE_IDENTITY_LENGTH]; - char serialNumber[BAUM_SERIAL_NUMBER_LENGTH]; - char bluetoothName[BAUM_BLUETOOTH_NAME_LENGTH]; + unsigned char length; + BaumInteger moduleIdentifier; + BaumInteger serialNumber; + + union { + struct { + BaumInteger hardwareVersion; + BaumInteger firmwareVersion; + unsigned char event; + } PACKED registration; + + union { + struct { + unsigned char flags; + unsigned char errors; + signed char wheels[4]; + unsigned char buttons; + unsigned char keys; + unsigned char sensors[KEY_GROUP_SIZE(80)]; + } PACKED display80; + + struct { + unsigned char flags; + unsigned char errors; + signed char wheels[3]; + unsigned char buttons; + unsigned char keys; + unsigned char sensors[KEY_GROUP_SIZE(64)]; + } PACKED display64; + + struct { + unsigned char flags; + unsigned char errors; + unsigned char buttons; + } PACKED status; + + struct { + unsigned char flags; + unsigned char errors; + signed char wheel; + unsigned char buttons; + unsigned char keypad[2]; + } PACKED phone; + + struct { + unsigned char flags; + unsigned char errors; + signed char wheel; + unsigned char keys; + unsigned char pots[6]; + } PACKED audio; + + struct { + unsigned char flags; + unsigned char errors; + unsigned char buttons; + unsigned char cursor; + unsigned char keys; + unsigned char pots[4]; + } PACKED voice; + } registers; + } data; + } PACKED modular; + + char deviceIdentity[BAUM_LENGTH_DeviceIdentity]; + char serialNumber[BAUM_LENGTH_SerialNumber]; + char bluetoothName[BAUM_LENGTH_BluetoothName]; } PACKED values; } PACKED data; } PACKED BaumResponsePacket; typedef enum { - BAUM_TYPE_Inka, - BAUM_TYPE_DM80P, - BAUM_TYPE_Generic + BAUM_DEVICE_Inka, + BAUM_DEVICE_DM80P, + BAUM_DEVICE_Modular, + BAUM_DEVICE_Generic } BaumDeviceType; static BaumDeviceType baumDeviceType; +typedef enum { + BAUM_MODULE_Display80, + BAUM_MODULE_Display64, + BAUM_MODULE_Status, + BAUM_MODULE_Phone, + BAUM_MODULE_Audio, + BAUM_MODULE_Voice +} BaumModuleType; + +typedef struct { + uint16_t identifier; + unsigned char type; + unsigned char cellCount; + unsigned char keyCount; + unsigned char buttonCount; + unsigned char wheelCount; + unsigned char potCount; + unsigned isDisplay:1; + unsigned hasCursorKeys:1; + unsigned hasKeypad:1; +} BaumModuleDescription; + +static const BaumModuleDescription baumModuleDescriptions[] = { + { .identifier = 0X4180, + .type = BAUM_MODULE_Display80, + .cellCount = 80, + .wheelCount = 4, + .isDisplay = 1 + } + , + { .identifier = 0X4181, + .type = BAUM_MODULE_Display64, + .cellCount = 64, + .wheelCount = 3, + .isDisplay = 1 + } + , + { .identifier = 0X4190, + .type = BAUM_MODULE_Status, + .cellCount = 4, + .buttonCount = 4 + } + , + { .identifier = 0X4191, + .type = BAUM_MODULE_Phone, + .cellCount = 12, + .buttonCount = 4, + .wheelCount = 1, + .hasKeypad = 1 + } + , + { .identifier = 0X4192, + .type = BAUM_MODULE_Audio, + .keyCount = 5, + .wheelCount = 1, + .potCount = 6 + } + , + { .identifier = 0X4193, + .type = BAUM_MODULE_Voice, + .keyCount = 4, + .buttonCount = 3, + .potCount = 4, + .hasCursorKeys = 1 + } + , + { .identifier = 0 } +}; + +static const BaumModuleDescription * +getBaumModuleDescription (uint16_t identifier) { + const BaumModuleDescription *bmd = baumModuleDescriptions; + + while (bmd->identifier) { + if (bmd->identifier == identifier) return bmd; + bmd += 1; + } + + LogPrint(LOG_DEBUG, "unknown module identifier: %04X", identifier); + return NULL; +} + +typedef struct { + const BaumModuleDescription *description; + uint16_t serialNumber; + uint16_t hardwareVersion; + uint16_t firmwareVersion; +} BaumModuleRegistration; + +static void +clearBaumModuleRegistration (BaumModuleRegistration *bmr) { + bmr->description = NULL; + bmr->serialNumber = 0; + bmr->hardwareVersion = 0; + bmr->firmwareVersion = 0; +} + +static BaumModuleRegistration baumDisplayModule; +static BaumModuleRegistration baumStatusModule; + +static BaumModuleRegistration *const baumModules[] = { + &baumDisplayModule, + &baumStatusModule, + NULL +}; + +static BaumModuleRegistration * +getBaumModuleRegistration (const BaumModuleDescription *bmd, uint16_t serialNumber) { + if (bmd) { + BaumModuleRegistration *const *bmr = baumModules; + + while (*bmr) { + if (((*bmr)->description == bmd) && ((*bmr)->serialNumber == serialNumber)) return *bmr; + bmr += 1; + } + } + + return NULL; +} + +static int +getBaumModuleCellCount (void) { + int count = 0; + + { + BaumModuleRegistration *const *bmr = baumModules; + + while (*bmr) { + const BaumModuleDescription *bmd = (*bmr++)->description; + if (bmd) count += bmd->cellCount; + } + } + + return count; +} + static void assumeBaumDeviceIdentity (const char *identity) { LogPrint(LOG_INFO, "Baum Device Identity: %s", identity); @@ -622,7 +888,7 @@ logBaumPowerdownReason (BaumPowerdownReason reason) { } static int -readBaumPacket (unsigned char *packet, int size) { +readBaumPacket (BrailleDisplay *brl, unsigned char *packet, int size) { int started = 0; int escape = 0; int offset = 0; @@ -661,7 +927,7 @@ readBaumPacket (unsigned char *packet, int size) { case BAUM_RSP_Switches: if (!cellCount) { assumeBaumDeviceIdentity("DM80P"); - baumDeviceType = BAUM_TYPE_DM80P; + baumDeviceType = BAUM_DEVICE_DM80P; cellCount = 84; } @@ -669,7 +935,7 @@ readBaumPacket (unsigned char *packet, int size) { case BAUM_RSP_VersionNumber: case BAUM_RSP_CommunicationChannel: case BAUM_RSP_PowerdownSignal: - case BAUM_RSP_TopKeys: + case BAUM_RSP_DisplayKeys: case BAUM_RSP_HorizontalSensor: case BAUM_RSP_RoutingKey: case BAUM_RSP_FrontKeys6: @@ -677,6 +943,9 @@ readBaumPacket (unsigned char *packet, int size) { case BAUM_RSP_CommandKeys: case BAUM_RSP_JoyStick: case BAUM_RSP_ErrorCode: + case BAUM_RSP_ModuleRegistration: + case BAUM_RSP_DataRegisters: + case BAUM_RSP_ServiceRegisters: length = 2; break; @@ -688,7 +957,7 @@ readBaumPacket (unsigned char *packet, int size) { break; case BAUM_RSP_VerticalSensor: - length = (baumDeviceType == BAUM_TYPE_Inka)? 2: 3; + length = (baumDeviceType == BAUM_DEVICE_Inka)? 2: 3; break; case BAUM_RSP_VerticalSensors: @@ -707,11 +976,11 @@ readBaumPacket (unsigned char *packet, int size) { case BAUM_RSP_RoutingKeys: if (!cellCount) { assumeBaumDeviceIdentity("Inka"); - baumDeviceType = BAUM_TYPE_Inka; + baumDeviceType = BAUM_DEVICE_Inka; cellCount = 56; } - if (baumDeviceType == BAUM_TYPE_Inka) { + if (baumDeviceType == BAUM_DEVICE_Inka) { length = 2; break; } @@ -720,7 +989,7 @@ readBaumPacket (unsigned char *packet, int size) { break; case BAUM_RSP_HorizontalSensors: - length = KEY_GROUP_SIZE(textCount) + 1; + length = KEY_GROUP_SIZE(brl->textColumns) + 1; break; default: @@ -728,6 +997,17 @@ readBaumPacket (unsigned char *packet, int size) { started = 0; continue; } + } else if (offset == 1) { + switch (packet[0]) { + case BAUM_RSP_ModuleRegistration: + case BAUM_RSP_DataRegisters: + case BAUM_RSP_ServiceRegisters: + length += byte; + break; + + default: + break; + } } packet[offset] = byte; @@ -751,8 +1031,8 @@ readBaumPacket (unsigned char *packet, int size) { } static int -getBaumPacket (BaumResponsePacket *packet) { - return readBaumPacket(packet->bytes, sizeof(*packet)); +getBaumPacket (BrailleDisplay *brl, BaumResponsePacket *packet) { + return readBaumPacket(brl, packet->bytes, sizeof(*packet)); } static int @@ -821,37 +1101,224 @@ setInkaSwitches (BrailleDisplay *brl, unsigned char newSettings, int initialize) setBaumSwitches(brl, ((newSettings & 0X03) | ((newSettings & 0X0C) << 4)), initialize); } +static int +writeBaumModuleRegistrationCommand ( + BrailleDisplay *brl, + uint16_t moduleIdentifier, uint16_t serialNumber, + BaumModuleRegistrationCommand command +) { + const unsigned char request[] = { + BAUM_REQ_ModuleRegistration, + 5, /* data length */ + MAKE_BAUM_INTEGER(moduleIdentifier), + MAKE_BAUM_INTEGER(serialNumber), + command + }; + + return writeBaumPacket(brl, request, sizeof(request)); +} + +static int +writeBaumDataRegisters ( + BrailleDisplay *brl, + const BaumModuleRegistration *bmr, + const unsigned char *registers, unsigned char count +) { + const BaumModuleDescription *bmd = bmr->description; + + if (bmd) { + if (count < bmd->cellCount) count = bmd->cellCount; + + if (count) { + unsigned char packet[2 + 7 + count]; + unsigned char *byte = packet; + + *byte++ = BAUM_REQ_DataRegisters; + *byte++ = 7 + count; + + *byte++ = MAKE_BAUM_INTEGER_FIRST(bmd->identifier); + *byte++ = MAKE_BAUM_INTEGER_SECOND(bmd->identifier); + + *byte++ = MAKE_BAUM_INTEGER_FIRST(bmr->serialNumber); + *byte++ = MAKE_BAUM_INTEGER_SECOND(bmr->serialNumber); + + *byte++ = BAUM_DRC_Write; + *byte++ = 0; /* index of the first register to write */ + *byte++ = count; + + memcpy(byte, registers, count); + byte += count; + + if (!writeBaumPacket(brl, packet, byte-packet)) return 0; + } + } + + return 1; +} + +static int +handleBaumModuleRegistrationEvent (BrailleDisplay *brl, const BaumResponsePacket *packet) { + uint16_t moduleIdentifier = getBaumInteger(packet->data.values.modular.moduleIdentifier); + uint16_t serialNumber = getBaumInteger(packet->data.values.modular.serialNumber); + const BaumModuleDescription *bmd = getBaumModuleDescription(moduleIdentifier); + + if (packet->data.values.modular.data.registration.event == BAUM_MRE_Addition) { + if (!writeBaumModuleRegistrationCommand(brl, + moduleIdentifier, serialNumber, + BAUM_MRC_Acknowledge)) + return 0; + + if (bmd) { + BaumModuleRegistration *bmr; + + if (bmd->isDisplay) { + bmr = &baumDisplayModule; + } else if (bmd->type == BAUM_MODULE_Status) { + bmr = &baumStatusModule; + } else { + bmr = NULL; + } + + if (bmr) { + if (bmr->description) clearBaumModuleRegistration(bmr); + + bmr->description = bmd; + bmr->serialNumber = serialNumber; + bmr->hardwareVersion = getBaumInteger(packet->data.values.modular.data.registration.hardwareVersion); + bmr->firmwareVersion = getBaumInteger(packet->data.values.modular.data.registration.firmwareVersion); + } + } + } else { + BaumModuleRegistration *bmr = getBaumModuleRegistration(bmd, serialNumber); + if (bmr) clearBaumModuleRegistration(bmr); + } + + return 1; +} + +static int +handleBaumDataRegistersEvent (BrailleDisplay *brl, const BaumResponsePacket *packet, int *keyPressed) { + const BaumModuleDescription *bmd = getBaumModuleDescription(getBaumInteger(packet->data.values.modular.moduleIdentifier)); + const BaumModuleRegistration *bmr = getBaumModuleRegistration(bmd, getBaumInteger(packet->data.values.modular.serialNumber)); + + if (bmr) { + switch (bmd->type) { + { + unsigned char flags; + unsigned char errors; + const signed char *wheel; + unsigned char wheels; + unsigned char buttons; + unsigned char keys; + const unsigned char *sensors; + + case BAUM_MODULE_Display80: + flags = packet->data.values.modular.data.registers.display80.flags; + errors = packet->data.values.modular.data.registers.display80.errors; + wheel = packet->data.values.modular.data.registers.display80.wheels; + wheels = ARRAY_COUNT(packet->data.values.modular.data.registers.display80.wheels); + buttons = packet->data.values.modular.data.registers.display80.buttons; + keys = packet->data.values.modular.data.registers.display80.keys; + sensors = packet->data.values.modular.data.registers.display80.sensors; + goto doDisplay; + + case BAUM_MODULE_Display64: + flags = packet->data.values.modular.data.registers.display64.flags; + errors = packet->data.values.modular.data.registers.display64.errors; + wheel = packet->data.values.modular.data.registers.display64.wheels; + wheels = ARRAY_COUNT(packet->data.values.modular.data.registers.display64.wheels); + buttons = packet->data.values.modular.data.registers.display64.buttons; + keys = packet->data.values.modular.data.registers.display64.keys; + sensors = packet->data.values.modular.data.registers.display64.sensors; + goto doDisplay; + + doDisplay: + { + int changed = 0; + + if (flags & BAUM_DRF_WheelsChanged) { + } + + if (flags & BAUM_DRF_ButtonsChanged) { + } + + if (flags & BAUM_DRF_KeysChanged) { + if (updateFunctionKeyByte(keys, BAUM_SHIFT_DISPLAY, BAUM_WIDTH_DISPLAY, keyPressed)) changed = 1; + } + + if (flags & BAUM_DRF_SensorsChanged) { + if (updateKeyGroup(pressedKeys.routingKeys, sensors, brl->textColumns, keyPressed)) changed = 1; + } + + if (changed) return 1; + } + + break; + } + + case BAUM_MODULE_Status: + if (packet->data.values.modular.data.registers.status.flags & BAUM_DRF_ButtonsChanged) + if (updateFunctionKeyByte(packet->data.values.modular.data.registers.status.buttons, + BAUM_SHIFT_COMMAND, BAUM_WIDTH_COMMAND, keyPressed)) + return 1; + + break; + + default: + LogPrint(LOG_WARNING, "unsupported data register configuration: %u", bmd->type); + break; + } + } + + return 0; +} + static int probeBaumDisplay (BrailleDisplay *brl) { int probes = 0; - while (1) { - int assumedCellCount = 0; + + do { + int identityCellCount = 0; + + baumDeviceType = BAUM_DEVICE_Generic; + cellCount = 0; + { + BaumModuleRegistration *const *bmr = baumModules; + while (*bmr) clearBaumModuleRegistration(*bmr++); + } + + /* newer models return an identity string which contains the cell count */ { static const unsigned char request[] = {BAUM_REQ_GetDeviceIdentity}; if (!writeBaumPacket(brl, request, sizeof(request))) break; } + /* get the serial number for the log */ { static const unsigned char request[] = {BAUM_REQ_GetSerialNumber}; if (!writeBaumPacket(brl, request, sizeof(request))) break; } + /* try explicitly asking for the cell count */ { static const unsigned char request[] = {BAUM_REQ_DisplayData, 0}; if (!writeBaumPacket(brl, request, sizeof(request))) break; } + /* enqueue a request to get the initial key states */ { static const unsigned char request[] = {BAUM_REQ_GetKeys}; if (!writeBaumPacket(brl, request, sizeof(request))) break; } - baumDeviceType = BAUM_TYPE_Generic; - cellCount = 0; + /* the modular models need to be probed with a general call */ + if (!writeBaumModuleRegistrationCommand(brl, 0, 0, BAUM_MRC_Query)) break; + while (io->awaitInput(probeTimeout)) { BaumResponsePacket response; - int size = getBaumPacket(&response); + int size = getBaumPacket(brl, &response); + if (size) { switch (response.data.code) { case BAUM_RSP_RoutingKeys: /* Inka */ @@ -862,21 +1329,42 @@ probeBaumDisplay (BrailleDisplay *brl) { setBaumSwitches(brl, response.data.values.switches, 1); return 1; - case BAUM_RSP_CellCount: /* newer models */ - cellCount = response.data.values.cellCount; + case BAUM_RSP_CellCount: { /* newer models */ + unsigned char count = response.data.values.cellCount; + + if ((count > 0) && (count <= MAXIMUM_CELL_COUNT)) { + cellCount = count; + return 1; + } + + LogPrint(LOG_DEBUG, "unexpected cell count: %u", count); + continue; + } + + case BAUM_RSP_ModuleRegistration: /* modular models */ + if (!handleBaumModuleRegistrationEvent(brl, &response)) return 0; + if (!baumDisplayModule.description) continue; + baumDeviceType = BAUM_DEVICE_Modular; + cellCount = getBaumModuleCellCount(); return 1; - case BAUM_RSP_DeviceIdentity: + case BAUM_RSP_DeviceIdentity: /* should contain fallback cell count */ logBaumDeviceIdentity(&response); + { const int length = sizeof(response.data.values.deviceIdentity); char buffer[length+1]; + memcpy(buffer, response.data.values.deviceIdentity, length); buffer[length] = 0; { char *digits = strpbrk(buffer, "123456789"); - if (digits) assumedCellCount = atoi(digits); + + if (digits) { + int count = atoi(digits); + if ((count > 0) && (count <= MAXIMUM_CELL_COUNT)) identityCellCount = count; + } } } continue; @@ -885,7 +1373,13 @@ probeBaumDisplay (BrailleDisplay *brl) { logBaumSerialNumber(&response); continue; + case BAUM_RSP_ErrorCode: + if (response.data.values.errorCode != BAUM_ERR_PacketType) goto unexpectedPacket; + LogPrint(LOG_DEBUG, "unsupported request"); + continue; + default: + unexpectedPacket: LogBytes(LOG_WARNING, "Unexpected Packet", response.bytes, size); continue; } @@ -894,12 +1388,12 @@ probeBaumDisplay (BrailleDisplay *brl) { } } if (errno != EAGAIN) break; - if (assumedCellCount) { - cellCount = assumedCellCount; + + if (identityCellCount) { + cellCount = identityCellCount; return 1; } - if (++probes == probeLimit) break; - } + } while (++probes < probeLimit); return 0; } @@ -909,7 +1403,7 @@ updateBaumKeys (BrailleDisplay *brl, int *keyPressed) { BaumResponsePacket packet; int size; - while ((size = getBaumPacket(&packet))) { + while ((size = getBaumPacket(brl, &packet))) { switch (packet.data.code) { case BAUM_RSP_CellCount: changeCellCount(brl, packet.data.values.cellCount); @@ -931,32 +1425,32 @@ updateBaumKeys (BrailleDisplay *brl, int *keyPressed) { errno = ENODEV; return 0; - case BAUM_RSP_TopKeys: { + case BAUM_RSP_DisplayKeys: { unsigned char keys; switch (baumDeviceType) { - case BAUM_TYPE_Inka: + case BAUM_DEVICE_Inka: keys = 0; -#define KEY(bit,name) if (!(packet.data.values.topKeys & (bit))) keys |= BAUM_KEY_##name - KEY(004, TL1); - KEY(002, TL2); - KEY(001, TL3); - KEY(040, TR1); - KEY(020, TR2); - KEY(010, TR3); +#define KEY(bit,name) if (!(packet.data.values.displayKeys & (bit))) keys |= BAUM_KEY_##name + KEY(004, DK1); + KEY(002, DK2); + KEY(001, DK3); + KEY(040, DK4); + KEY(020, DK5); + KEY(010, DK6); #undef KEY break; - case BAUM_TYPE_DM80P: - keys = packet.data.values.topKeys ^ 0X7F; + case BAUM_DEVICE_DM80P: + keys = packet.data.values.displayKeys ^ 0X7F; break; default: - keys = packet.data.values.topKeys; + keys = packet.data.values.displayKeys; break; } - if (updateFunctionKeyByte(keys, BAUM_SHIFT_TOP, BAUM_WIDTH_TOP, keyPressed)) return 1; + if (updateFunctionKeyByte(keys, BAUM_SHIFT_DISPLAY, BAUM_WIDTH_DISPLAY, keyPressed)) return 1; continue; } @@ -1011,15 +1505,15 @@ updateBaumKeys (BrailleDisplay *brl, int *keyPressed) { continue; case BAUM_RSP_HorizontalSensor: - resetKeyGroup(packet.data.values.horizontalSensors, textCount, packet.data.values.horizontalSensor); + resetKeyGroup(packet.data.values.horizontalSensors, brl->textColumns, packet.data.values.horizontalSensor); case BAUM_RSP_HorizontalSensors: - if (updateKeyGroup(pressedKeys.horizontalSensors, packet.data.values.horizontalSensors, textCount, keyPressed)) return 1; + if (updateKeyGroup(pressedKeys.horizontalSensors, packet.data.values.horizontalSensors, brl->textColumns, keyPressed)) return 1; continue; case BAUM_RSP_VerticalSensor: { unsigned char left = packet.data.values.verticalSensor.left; unsigned char right; - if (baumDeviceType != BAUM_TYPE_Inka) { + if (baumDeviceType != BAUM_DEVICE_Inka) { right = packet.data.values.verticalSensor.right; } else if (left & 0X40) { left -= 0X40; @@ -1043,7 +1537,7 @@ updateBaumKeys (BrailleDisplay *brl, int *keyPressed) { resetKeyGroup(packet.data.values.routingKeys, cellCount, packet.data.values.routingKey); goto doRoutingKeys; case BAUM_RSP_RoutingKeys: - if (baumDeviceType == BAUM_TYPE_Inka) { + if (baumDeviceType == BAUM_DEVICE_Inka) { setInkaSwitches(brl, packet.data.values.switches, 0); continue; } @@ -1056,7 +1550,24 @@ updateBaumKeys (BrailleDisplay *brl, int *keyPressed) { setBaumSwitches(brl, packet.data.values.switches, 0); continue; + case BAUM_RSP_ModuleRegistration: + if (handleBaumModuleRegistrationEvent(brl, &packet)) { + } + + changeCellCount(brl, getBaumModuleCellCount()); + continue; + + case BAUM_RSP_DataRegisters: + if (handleBaumDataRegistersEvent(brl, &packet, keyPressed)) return 1; + continue; + + case BAUM_RSP_ErrorCode: + if (packet.data.values.errorCode != BAUM_ERR_PacketType) goto unexpectedPacket; + LogPrint(LOG_DEBUG, "unsupported request"); + continue; + default: + unexpectedPacket: LogBytes(LOG_WARNING, "Unexpected Packet", packet.bytes, size); continue; } @@ -1067,22 +1578,31 @@ updateBaumKeys (BrailleDisplay *brl, int *keyPressed) { static int writeBaumCells (BrailleDisplay *brl) { - unsigned char packet[1 + 1 + cellCount]; - unsigned char *byte = packet; + if (baumDeviceType == BAUM_DEVICE_Modular) { + if (!writeBaumDataRegisters(brl, &baumDisplayModule, &externalCells[0], brl->textColumns)) return 0; + if (!writeBaumDataRegisters(brl, &baumStatusModule, &externalCells[brl->textColumns], brl->statusColumns)) return 0; + return 1; + } + + { + unsigned char packet[1 + 1 + cellCount]; + unsigned char *byte = packet; - *byte++ = BAUM_REQ_DisplayData; - if ((baumDeviceType == BAUM_TYPE_Inka) || (baumDeviceType == BAUM_TYPE_DM80P)) - *byte++ = 0; + *byte++ = BAUM_REQ_DisplayData; + if ((baumDeviceType == BAUM_DEVICE_Inka) || (baumDeviceType == BAUM_DEVICE_DM80P)) + *byte++ = 0; - memcpy(byte, externalCells, cellCount); - byte += cellCount; + memcpy(byte, externalCells, cellCount); + byte += cellCount; - return writeBaumPacket(brl, packet, byte-packet); + return writeBaumPacket(brl, packet, byte-packet); + } } static const ProtocolOperations baumOperations = { "Baum", 19200, SERIAL_PARITY_NONE, + {0X01, 0X02, 0X04, 0X08, 0X10, 0X20, 0X40, 0X80}, readBaumPacket, writeBaumPacket, probeBaumDisplay, updateBaumKeys, writeBaumCells }; @@ -1095,18 +1615,18 @@ typedef enum { } HandyTechRequestCode; typedef enum { - HT_RSP_KEY_TL1 = 0X04, /* UP */ - HT_RSP_KEY_TL2 = 0X03, /* B1 */ - HT_RSP_KEY_TL3 = 0X08, /* DN */ - HT_RSP_KEY_TR1 = 0X07, /* B2 */ - HT_RSP_KEY_TR2 = 0X0B, /* B3 */ - HT_RSP_KEY_TR3 = 0X0F, /* B4 */ + HT_RSP_KEY_DK1 = 0X04, /* UP */ + HT_RSP_KEY_DK2 = 0X03, /* B1 */ + HT_RSP_KEY_DK3 = 0X08, /* DN */ + HT_RSP_KEY_DK4 = 0X07, /* B2 */ + HT_RSP_KEY_DK5 = 0X0B, /* B3 */ + HT_RSP_KEY_DK6 = 0X0F, /* B4 */ HT_RSP_KEY_CR1 = 0X20, HT_RSP_WRITE_ACK = 0X7E, HT_RSP_RELEASE = 0X80, HT_RSP_IDENTITY = 0XFE } HandyTechResponseCode; -#define HT_IS_ROUTING_KEY(code) (((code) >= HT_RSP_KEY_CR1) && ((code) < (HT_RSP_KEY_CR1 + textCount))) +#define HT_IS_ROUTING_KEY(code) (((code) >= HT_RSP_KEY_CR1) && ((code) < (HT_RSP_KEY_CR1 + brl->textColumns))) typedef union { unsigned char bytes[2]; @@ -1141,7 +1661,7 @@ static const HandyTechModelEntry handyTechModelTable[] = { static const HandyTechModelEntry *ht; static int -readHandyTechPacket (unsigned char *packet, int size) { +readHandyTechPacket (BrailleDisplay *brl, unsigned char *packet, int size) { int offset = 0; int length = 0; @@ -1173,12 +1693,12 @@ readHandyTechPacket (unsigned char *packet, int size) { continue; } - case HT_RSP_KEY_TL1: - case HT_RSP_KEY_TL2: - case HT_RSP_KEY_TL3: - case HT_RSP_KEY_TR1: - case HT_RSP_KEY_TR2: - case HT_RSP_KEY_TR3: + case HT_RSP_KEY_DK1: + case HT_RSP_KEY_DK2: + case HT_RSP_KEY_DK3: + case HT_RSP_KEY_DK4: + case HT_RSP_KEY_DK5: + case HT_RSP_KEY_DK6: length = 1; break; } @@ -1207,8 +1727,8 @@ readHandyTechPacket (unsigned char *packet, int size) { } static int -getHandyTechPacket (HandyTechResponsePacket *packet) { - return readHandyTechPacket(packet->bytes, sizeof(*packet)); +getHandyTechPacket (BrailleDisplay *brl, HandyTechResponsePacket *packet) { + return readHandyTechPacket(brl, packet->bytes, sizeof(*packet)); } static int @@ -1244,7 +1764,7 @@ probeHandyTechDisplay (BrailleDisplay *brl) { while (writeHandyTechPacket(brl, request, sizeof(request))) { while (io->awaitInput(probeTimeout)) { HandyTechResponsePacket response; - if (getHandyTechPacket(&response)) { + if (getHandyTechPacket(brl, &response)) { if (response.data.code == HT_RSP_IDENTITY) { if (!(ht = findHandyTechModel(response.data.values.identity))) return 0; cellCount = ht->textCount; @@ -1264,7 +1784,7 @@ updateHandyTechKeys (BrailleDisplay *brl, int *keyPressed) { HandyTechResponsePacket packet; int size; - while ((size = getHandyTechPacket(&packet))) { + while ((size = getHandyTechPacket(brl, &packet))) { unsigned char code = packet.data.code; switch (code) { @@ -1292,12 +1812,12 @@ updateHandyTechKeys (BrailleDisplay *brl, int *keyPressed) { uint64_t bit; switch (key) { #define KEY(name) case HT_RSP_KEY_##name: bit = BAUM_KEY_##name; break - KEY(TL1); - KEY(TL2); - KEY(TL3); - KEY(TR1); - KEY(TR2); - KEY(TR3); + KEY(DK1); + KEY(DK2); + KEY(DK3); + KEY(DK4); + KEY(DK5); + KEY(DK6); #undef KEY default: @@ -1334,6 +1854,7 @@ writeHandyTechCells (BrailleDisplay *brl) { static const ProtocolOperations handyTechOperations = { "HandyTech", 19200, SERIAL_PARITY_ODD, + {0X01, 0X02, 0X04, 0X08, 0X10, 0X20, 0X40, 0X80}, readHandyTechPacket, writeHandyTechPacket, probeHandyTechDisplay, updateHandyTechKeys, writeHandyTechCells }; @@ -1341,20 +1862,20 @@ static const ProtocolOperations handyTechOperations = { /* PowerBraille Protocol */ #define PB_BUTTONS0_MARKER 0X60 -#define PB1_BUTTONS0_TR3 0X08 -#define PB1_BUTTONS0_TR2 0X04 -#define PB1_BUTTONS0_TR1 0X02 -#define PB1_BUTTONS0_TL2 0X01 -#define PB2_BUTTONS0_TL3 0X08 -#define PB2_BUTTONS0_TR2 0X04 -#define PB2_BUTTONS0_TL1 0X02 -#define PB2_BUTTONS0_TL2 0X01 +#define PB1_BUTTONS0_DK6 0X08 +#define PB1_BUTTONS0_DK5 0X04 +#define PB1_BUTTONS0_DK4 0X02 +#define PB1_BUTTONS0_DK2 0X01 +#define PB2_BUTTONS0_DK3 0X08 +#define PB2_BUTTONS0_DK5 0X04 +#define PB2_BUTTONS0_DK1 0X02 +#define PB2_BUTTONS0_DK2 0X01 #define PB_BUTTONS1_MARKER 0XE0 -#define PB1_BUTTONS1_TL3 0X08 -#define PB1_BUTTONS1_TL1 0X02 -#define PB2_BUTTONS1_TR3 0X04 -#define PB2_BUTTONS1_TR1 0X02 +#define PB1_BUTTONS1_DK3 0X08 +#define PB1_BUTTONS1_DK1 0X02 +#define PB2_BUTTONS1_DK6 0X04 +#define PB2_BUTTONS1_DK4 0X02 typedef enum { PB_REQ_WRITE = 0X04, @@ -1393,7 +1914,7 @@ typedef union { } PACKED PowerBrailleResponsePacket; static int -readPowerBraillePacket (unsigned char *packet, int size) { +readPowerBraillePacket (BrailleDisplay *brl, unsigned char *packet, int size) { int offset = 0; int length = 0; @@ -1465,8 +1986,8 @@ readPowerBraillePacket (unsigned char *packet, int size) { } static int -getPowerBraillePacket (PowerBrailleResponsePacket *packet) { - return readPowerBraillePacket(packet->bytes, sizeof(*packet)); +getPowerBraillePacket (BrailleDisplay *brl, PowerBrailleResponsePacket *packet) { + return readPowerBraillePacket(brl, packet->bytes, sizeof(*packet)); } static int @@ -1499,7 +2020,7 @@ probePowerBrailleDisplay (BrailleDisplay *brl) { while (writePowerBraillePacket(brl, request, sizeof(request))) { while (io->awaitInput(probeTimeout)) { PowerBrailleResponsePacket response; - if (getPowerBraillePacket(&response)) { + if (getPowerBraillePacket(brl, &response)) { if (response.data.code == PB_RSP_IDENTITY) { const unsigned char *version = response.data.values.identity.version; LogPrint(LOG_INFO, "Baum emulation: PowerBraille Version: %c%c%c%c", @@ -1521,7 +2042,7 @@ updatePowerBrailleKeys (BrailleDisplay *brl, int *keyPressed) { PowerBrailleResponsePacket packet; int size; - while ((size = getPowerBraillePacket(&packet))) { + while ((size = getPowerBraillePacket(brl, &packet))) { if (!packet.data.zero) { switch (packet.data.code) { case PB_RSP_IDENTITY: @@ -1529,7 +2050,7 @@ updatePowerBrailleKeys (BrailleDisplay *brl, int *keyPressed) { continue; case PB_RSP_SENSORS: - if (updateKeyGroup(pressedKeys.routingKeys, packet.data.values.sensors.horizontal, textCount, keyPressed)) return 1; + if (updateKeyGroup(pressedKeys.routingKeys, packet.data.values.sensors.horizontal, brl->textColumns, keyPressed)) return 1; continue; default: @@ -1538,12 +2059,15 @@ updatePowerBrailleKeys (BrailleDisplay *brl, int *keyPressed) { } } else { uint64_t keys = 0; - if (packet.buttons[0] & PB2_BUTTONS0_TL1) keys |= BAUM_KEY_TL1; - if (packet.buttons[0] & PB2_BUTTONS0_TL2) keys |= BAUM_KEY_TL2; - if (packet.buttons[0] & PB2_BUTTONS0_TL3) keys |= BAUM_KEY_TL3; - if (packet.buttons[1] & PB2_BUTTONS1_TR1) keys |= BAUM_KEY_TR1; - if (packet.buttons[0] & PB2_BUTTONS0_TR2) keys |= BAUM_KEY_TR2; - if (packet.buttons[1] & PB2_BUTTONS1_TR3) keys |= BAUM_KEY_TR3; + +#define KEY(name,index) if (packet.buttons[index] & PB2_BUTTONS##index##_##name) keys |= BAUM_KEY_##name + KEY(DK1, 0); + KEY(DK2, 0); + KEY(DK3, 0); + KEY(DK4, 1); + KEY(DK5, 0); + KEY(DK6, 1); +#undef KEY /* * The PB emulation is deficient as the protocol doesn't report any @@ -1580,19 +2104,19 @@ updatePowerBrailleKeys (BrailleDisplay *brl, int *keyPressed) { static int writePowerBrailleCells (BrailleDisplay *brl) { - unsigned char packet[6 + (textCount * 2)]; + unsigned char packet[6 + (brl->textColumns * 2)]; unsigned char *byte = packet; *byte++ = PB_REQ_WRITE; *byte++ = 0; /* cursor mode: disabled */ *byte++ = 0; /* cursor position: nowhere */ *byte++ = 1; /* cursor type: command */ - *byte++ = textCount * 2; /* attribute-data pairs */ + *byte++ = brl->textColumns * 2; /* attribute-data pairs */ *byte++ = 0; /* start */ { int i; - for (i=0; itextColumns; ++i) { *byte++ = 0; /* attributes */ *byte++ = externalCells[i]; /* data */ } @@ -1604,6 +2128,7 @@ writePowerBrailleCells (BrailleDisplay *brl) { static const ProtocolOperations powerBrailleOperations = { "PowerBraille", 9600, SERIAL_PARITY_NONE, + {0X01, 0X02, 0X04, 0X08, 0X10, 0X20, 0X40, 0X80}, readPowerBraillePacket, writePowerBraillePacket, probePowerBrailleDisplay, updatePowerBrailleKeys, writePowerBrailleCells }; @@ -1674,54 +2199,154 @@ static const InputOutputOperations serialOperations = { #include "io_usb.h" static UsbChannel *usbChannel = NULL; -static const UsbSerialOperations *usbSerial = NULL; static int openUsbPort (const char *device) { static const UsbChannelDefinition definitions[] = { - { /* 24 cells */ + { /* Vario40 (40 cells) */ + .vendor=0X0403, .product=0XFE70, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=2, + .disableAutosuspend=1 + } + , + { /* PocketVario (24 cells) */ .vendor=0X0403, .product=0XFE71, .configuration=1, .interface=0, .alternative=0, .inputEndpoint=1, .outputEndpoint=2, .disableAutosuspend=1 } , - { /* 40 cells */ + { /* SuperVario 40 (40 cells) */ .vendor=0X0403, .product=0XFE72, .configuration=1, .interface=0, .alternative=0, .inputEndpoint=1, .outputEndpoint=2, .disableAutosuspend=1 } , - { /* 32 cells */ + { /* SuperVario 32 (32 cells) */ .vendor=0X0403, .product=0XFE73, .configuration=1, .interface=0, .alternative=0, .inputEndpoint=1, .outputEndpoint=2, .disableAutosuspend=1 } , - { /* 64 cells */ + { /* SuperVario 64 (64 cells) */ .vendor=0X0403, .product=0XFE74, .configuration=1, .interface=0, .alternative=0, .inputEndpoint=1, .outputEndpoint=2, .disableAutosuspend=1 } , - { /* 80 cells */ + { /* SuperVario 80 (80 cells) */ .vendor=0X0403, .product=0XFE75, .configuration=1, .interface=0, .alternative=0, .inputEndpoint=1, .outputEndpoint=2, .disableAutosuspend=1 } , + { /* VarioPro 80 (80 cells) */ + .vendor=0X0403, .product=0XFE76, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=2, + .disableAutosuspend=1 + } + , + { /* VarioPro 64 (64 cells) */ + .vendor=0X0403, .product=0XFE77, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=2, + .disableAutosuspend=1 + } + , + { /* VarioPro 40 (40 cells) */ + .vendor=0X0904, .product=0X2000, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=2, + .disableAutosuspend=1 + } + , + { /* EcoVario 24 (24 cells) */ + .vendor=0X0904, .product=0X2001, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=2, + .disableAutosuspend=1 + } + , + { /* EcoVario 40 (40 cells) */ + .vendor=0X0904, .product=0X2002, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=2, + .disableAutosuspend=1 + } + , + { /* VarioConnect 40 (40 cells) */ + .vendor=0X0904, .product=0X2007, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=2, + .disableAutosuspend=1 + } + , + { /* VarioConnect 32 (32 cells) */ + .vendor=0X0904, .product=0X2008, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=2, + .disableAutosuspend=1 + } + , + { /* VarioConnect 24 (24 cells) */ + .vendor=0X0904, .product=0X2009, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=2, + .disableAutosuspend=1 + } + , + { /* VarioConnect 64 (64 cells) */ + .vendor=0X0904, .product=0X2010, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=2, + .disableAutosuspend=1 + } + , + { /* VarioConnect 80 (80 cells) */ + .vendor=0X0904, .product=0X2011, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=2, + .disableAutosuspend=1 + } + , + { /* EcoVario 32 (32 cells) */ + .vendor=0X0904, .product=0X2014, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=2, + .disableAutosuspend=1 + } + , + { /* EcoVario 64 (64 cells) */ + .vendor=0X0904, .product=0X2015, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=2, + .disableAutosuspend=1 + } + , + { /* EcoVario 80 (80 cells) */ + .vendor=0X0904, .product=0X2016, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=2, + .disableAutosuspend=1 + } + , + { /* Refreshabraille 18 (18 cells) */ + .vendor=0X0904, .product=0X3000, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=2, + .disableAutosuspend=1 + } + , { .vendor=0 } }; if ((usbChannel = usbFindChannel(definitions, (void *)device))) { - usbSerial = usbGetSerialOperations(usbChannel->device); - usbBeginInput(usbChannel->device, - usbChannel->definition.inputEndpoint, - 8); return 1; } return 0; @@ -1770,7 +2395,6 @@ static void closeUsbPort (void) { if (usbChannel) { usbCloseChannel(usbChannel); - usbSerial = NULL; usbChannel = NULL; } } @@ -1863,11 +2487,6 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { if (!validateYesNo(&useVarioKeys, parameters[PARM_VARIOKEYS])) LogPrint(LOG_WARNING, "%s: %s", "invalid vario keys setting", parameters[PARM_VARIOKEYS]); - { - static const DotsTable dots = {0X01, 0X02, 0X04, 0X08, 0X10, 0X20, 0X40, 0X80}; - makeOutputTable(dots, outputTable); - } - if (isSerialDevice(&device)) { io = &serialOperations; } else @@ -1899,6 +2518,7 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { while ((protocol = *(protocolAddress++))) { LogPrint(LOG_DEBUG, "probing with %s protocol", protocol->name); + makeOutputTable(protocol->dotsTable, outputTable); { int bits = 10; @@ -1913,13 +2533,11 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { switchSettings = 0; if (protocol->probeDisplay(brl)) { - logCellCount(); + logCellCount(brl); clearCells(0, cellCount); if (!updateCells(brl)) goto failed; - brl->x = textCount; - brl->y = 1; brl->helpPage = useVarioKeys? 1: 0; activeKeys = pressedKeys; @@ -1948,7 +2566,7 @@ brl_destruct (BrailleDisplay *brl) { static ssize_t brl_readPacket (BrailleDisplay *brl, void *buffer, size_t size) { - int count = protocol->readPacket(buffer, size); + int count = protocol->readPacket(brl, buffer, size); if (!count) count = -1; return count; } @@ -1966,29 +2584,30 @@ brl_reset (BrailleDisplay *brl) { static int brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) { int start = 0; - int count = textCount; + int count = brl->textColumns; while (count > 0) { if (brl->buffer[count-1] != internalCells[count-1]) break; - --count; + count -= 1; } while (start < count) { if (brl->buffer[start] != internalCells[start]) break; - ++start; + start += 1; } count -= start; memcpy(&internalCells[start], &brl->buffer[start], count); translateCells(start, count); + return updateCells(brl); } static int brl_writeStatus (BrailleDisplay *brl, const unsigned char *status) { - if (memcmp(&internalCells[textCount], status, statusCount) != 0) { - memcpy(&internalCells[textCount], status, statusCount); - translateCells(textCount, statusCount); + if (memcmp(&internalCells[brl->textColumns], status, brl->statusColumns) != 0) { + memcpy(&internalCells[brl->textColumns], status, brl->statusColumns); + translateCells(brl->textColumns, brl->statusColumns); } return 1; } @@ -2000,7 +2619,7 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { int keyPressed; int newModifiers = 0; - unsigned char routingKeys[textCount]; + unsigned char routingKeys[brl->textColumns]; int routingKeyCount; signed char horizontalSensor; signed char leftVerticalSensor; @@ -2022,13 +2641,13 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { keys = activeKeys.functionKeys; command = BRL_CMD_NOOP; - routingKeyCount = getKeyNumbers(activeKeys.routingKeys, textCount, routingKeys); - horizontalSensor = getSensorNumber(activeKeys.horizontalSensors, textCount); + routingKeyCount = getKeyNumbers(activeKeys.routingKeys, brl->textColumns, routingKeys); + horizontalSensor = getSensorNumber(activeKeys.horizontalSensors, brl->textColumns); leftVerticalSensor = getSensorNumber(activeKeys.leftVerticalSensors, VERTICAL_SENSOR_COUNT); rightVerticalSensor = getSensorNumber(activeKeys.rightVerticalSensors, VERTICAL_SENSOR_COUNT); if (!(switchSettings & BAUM_SWT_DisableSensors)) { - if (baumDeviceType == BAUM_TYPE_Inka) { + if (baumDeviceType == BAUM_DEVICE_Inka) { if (horizontalSensor >= 0) { routingKeys[routingKeyCount++] = horizontalSensor; horizontalSensor = -1; @@ -2043,12 +2662,12 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { #define KEY(key,cmd) case (key): command = (cmd); break #define KEYv(key,baumCmd,varioCmd) KEY((key), (useVarioKeys? (varioCmd): (baumCmd))) if (currentModifiers & MOD_INPUT) { -#define DOT1 BAUM_KEY_TL1 -#define DOT2 BAUM_KEY_TL2 -#define DOT3 BAUM_KEY_TL3 -#define DOT4 BAUM_KEY_TR1 -#define DOT5 BAUM_KEY_TR2 -#define DOT6 BAUM_KEY_TR3 +#define DOT1 BAUM_KEY_DK1 +#define DOT2 BAUM_KEY_DK2 +#define DOT3 BAUM_KEY_DK3 +#define DOT4 BAUM_KEY_DK4 +#define DOT5 BAUM_KEY_DK5 +#define DOT6 BAUM_KEY_DK6 newModifiers = currentModifiers & (MOD_INPUT | MOD_INPUT_ONCE | MOD_DOT7_LOCK | MOD_DOT8_LOCK | @@ -2107,7 +2726,7 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { } else if (routingKeyCount == 1) { unsigned char key1 = routingKeys[0]; - if ((key1 == 0) || (key1 == textCount-1)) { + if ((key1 == 0) || (key1 == brl->textColumns-1)) { if (keys) goto doChord; newModifiers |= MOD_CHORD; } else if (key1 == 1) { @@ -2122,7 +2741,7 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { newModifiers |= MOD_DOT7_LOCK | MOD_DOT7; else newModifiers |= MOD_DOT7; - } else if (key1 == textCount-2) { + } else if (key1 == brl->textColumns-2) { if (keys) { currentModifiers |= MOD_DOT8; goto doCharacter; @@ -2146,7 +2765,7 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { newModifiers |= MOD_UPPER_LOCK | MOD_UPPER; else newModifiers |= MOD_UPPER; - } else if (key1 == textCount-3) { + } else if (key1 == brl->textColumns-3) { if (keys) { currentModifiers |= MOD_META; goto doCharacter; @@ -2159,31 +2778,31 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { unsigned char key2 = routingKeys[1]; if (keys == 0) { - if ((key1 == textCount-2) && (key2 == textCount-1)) + if ((key1 == brl->textColumns-2) && (key2 == brl->textColumns-1)) command = BRL_BLK_PASSDOTS; /* space */ - else if ((key1 == 0) && (key2 == textCount-1)) + else if ((key1 == 0) && (key2 == brl->textColumns-1)) newModifiers &= ~(MOD_CHORD | MOD_DOT7 | MOD_DOT7_LOCK | MOD_DOT8 | MOD_DOT8_LOCK | MOD_UPPER | MOD_UPPER_LOCK | MOD_META | MOD_CNTRL); - else if ((key1 == 1) && (key2 == textCount-2)) + else if ((key1 == 1) && (key2 == brl->textColumns-2)) newModifiers |= MOD_DOT7 | MOD_DOT8; - else if ((key1 == 2) && (key2 == textCount-3)) + else if ((key1 == 2) && (key2 == brl->textColumns-3)) newModifiers |= MOD_CNTRL; } else { - if ((key1 == textCount-2) && (key2 == textCount-1)) { + if ((key1 == brl->textColumns-2) && (key2 == brl->textColumns-1)) { switch (keys) { - case BAUM_KEY_TL1: + case BAUM_KEY_DK1: /* already in input mode */ command = BRL_CMD_NOOP | BRL_FLG_TOGGLE_ON; break; - case BAUM_KEY_TL2: + case BAUM_KEY_DK2: newModifiers |= MOD_INPUT_ONCE; break; - case BAUM_KEY_TL3: + case BAUM_KEY_DK3: newModifiers = 0; command = BRL_CMD_NOOP | BRL_FLG_TOGGLE_OFF; break; @@ -2204,10 +2823,17 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { #undef DOT5 #undef DOT6 } else if (routingKeyCount == 0) { - if (keys && (keys == (keys & (BAUM_KEY_DOT1 | BAUM_KEY_DOT2 | BAUM_KEY_DOT3 | - BAUM_KEY_DOT4 | BAUM_KEY_DOT5 | BAUM_KEY_DOT6 | - BAUM_KEY_B9 | BAUM_KEY_B0)))) { + uint64_t dotKeys = BAUM_KEY_DOT1 | BAUM_KEY_DOT2 | BAUM_KEY_DOT3 | + BAUM_KEY_DOT4 | BAUM_KEY_DOT5 | BAUM_KEY_DOT6 | + BAUM_KEY_DOT7 | BAUM_KEY_DOT8 | + BAUM_KEY_F2 | BAUM_KEY_F3; + const uint64_t chordKeys = BAUM_KEY_B9 | BAUM_KEY_B10 | BAUM_KEY_B11; + if (context == BRL_CTX_CHORDS) dotKeys |= chordKeys; + + if (keys && (keys == (keys & dotKeys))) { command = BRL_BLK_PASSDOTS; + if (keys & chordKeys) command |= BRL_DOTC; + #define DOT(dot,key) if (keys & BAUM_KEY_##key) command |= BRL_DOT##dot DOT(1, DOT1); DOT(2, DOT2); @@ -2215,85 +2841,110 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { DOT(4, DOT4); DOT(5, DOT5); DOT(6, DOT6); - DOT(7, B9); - DOT(8, B0); + DOT(7, DOT7); + DOT(8, DOT8); + DOT(7, F2); + DOT(8, F3); #undef DOT } else { switch (keys) { - KEY(BAUM_KEY_TL2, BRL_CMD_FWINLT); - KEY(BAUM_KEY_TR2, BRL_CMD_FWINRT); + KEY(BAUM_KEY_CK1, BRL_CMD_HELP); + KEY(BAUM_KEY_CK2, BRL_CMD_LEARN); + KEY(BAUM_KEY_CK3, BRL_CMD_INFO); + KEY(BAUM_KEY_CK4, BRL_CMD_PREFMENU); - KEYv(BAUM_KEY_TL1|BAUM_KEY_TL3, BRL_CMD_CHRLT, BRL_CMD_HOME); - KEYv(BAUM_KEY_TR1|BAUM_KEY_TR3, BRL_CMD_CHRRT, BRL_CMD_CSRTRK); + KEY(BAUM_KEY_DK2, BRL_CMD_FWINLT); + KEY(BAUM_KEY_DK5, BRL_CMD_FWINRT); - KEYv(BAUM_KEY_TL1|BAUM_KEY_TL2|BAUM_KEY_TL3, BRL_CMD_LNBEG, BRL_CMD_CHRLT); - KEYv(BAUM_KEY_TR1|BAUM_KEY_TR2|BAUM_KEY_TR3, BRL_CMD_LNEND, BRL_CMD_CHRRT); + KEYv(BAUM_KEY_DK1|BAUM_KEY_DK3, BRL_CMD_CHRLT, BRL_CMD_HOME); + KEYv(BAUM_KEY_DK4|BAUM_KEY_DK6, BRL_CMD_CHRRT, BRL_CMD_CSRTRK); - KEYv(BAUM_KEY_TR1, BRL_CMD_LNUP, BRL_CMD_PRDIFLN); - KEYv(BAUM_KEY_TR3, BRL_CMD_LNDN, BRL_CMD_NXDIFLN); + KEYv(BAUM_KEY_DK1|BAUM_KEY_DK2|BAUM_KEY_DK3, BRL_CMD_LNBEG, BRL_CMD_CHRLT); + KEYv(BAUM_KEY_DK4|BAUM_KEY_DK5|BAUM_KEY_DK6, BRL_CMD_LNEND, BRL_CMD_CHRRT); - KEY(BAUM_KEY_TL1|BAUM_KEY_TR1, BRL_CMD_TOP); - KEY(BAUM_KEY_TL3|BAUM_KEY_TR3, BRL_CMD_BOT); + KEYv(BAUM_KEY_DK4, BRL_CMD_LNUP, BRL_CMD_PRDIFLN); + KEYv(BAUM_KEY_DK6, BRL_CMD_LNDN, BRL_CMD_NXDIFLN); - KEYv(BAUM_KEY_TL2|BAUM_KEY_TR1, BRL_CMD_TOP_LEFT, BRL_CMD_INFO); - KEYv(BAUM_KEY_TL2|BAUM_KEY_TR3, BRL_CMD_BOT_LEFT, BRL_CMD_NOOP); + KEY(BAUM_KEY_DK1|BAUM_KEY_DK4, BRL_CMD_TOP); + KEY(BAUM_KEY_DK3|BAUM_KEY_DK6, BRL_CMD_BOT); - KEYv(BAUM_KEY_TR2|BAUM_KEY_TR1, BRL_CMD_PRDIFLN, BRL_CMD_ATTRUP); - KEYv(BAUM_KEY_TR2|BAUM_KEY_TR3, BRL_CMD_NXDIFLN, BRL_CMD_ATTRDN); + KEYv(BAUM_KEY_DK2|BAUM_KEY_DK4, BRL_CMD_TOP_LEFT, BRL_CMD_INFO); + KEYv(BAUM_KEY_DK2|BAUM_KEY_DK6, BRL_CMD_BOT_LEFT, BRL_CMD_NOOP); - KEYv(BAUM_KEY_TL2|BAUM_KEY_TL1, BRL_CMD_ATTRUP, BRL_CMD_TOP_LEFT); - KEYv(BAUM_KEY_TL2|BAUM_KEY_TL3, BRL_CMD_ATTRDN, BRL_CMD_BOT_LEFT); + KEYv(BAUM_KEY_DK5|BAUM_KEY_DK4, BRL_CMD_PRDIFLN, BRL_CMD_ATTRUP); + KEYv(BAUM_KEY_DK5|BAUM_KEY_DK6, BRL_CMD_NXDIFLN, BRL_CMD_ATTRDN); - KEY(BAUM_KEY_TL2|BAUM_KEY_TR2|BAUM_KEY_TL1|BAUM_KEY_TR1, BRL_CMD_PRPROMPT); - KEY(BAUM_KEY_TL2|BAUM_KEY_TR2|BAUM_KEY_TL3|BAUM_KEY_TR3, BRL_CMD_NXPROMPT); + KEYv(BAUM_KEY_DK2|BAUM_KEY_DK1, BRL_CMD_ATTRUP, BRL_CMD_TOP_LEFT); + KEYv(BAUM_KEY_DK2|BAUM_KEY_DK3, BRL_CMD_ATTRDN, BRL_CMD_BOT_LEFT); - KEY(BAUM_KEY_TL2|BAUM_KEY_TR2|BAUM_KEY_TR1, BRL_CMD_PRPGRPH); - KEY(BAUM_KEY_TL2|BAUM_KEY_TR2|BAUM_KEY_TR3, BRL_CMD_NXPGRPH); + KEY(BAUM_KEY_DK2|BAUM_KEY_DK5|BAUM_KEY_DK1|BAUM_KEY_DK4, BRL_CMD_PRPROMPT); + KEY(BAUM_KEY_DK2|BAUM_KEY_DK5|BAUM_KEY_DK3|BAUM_KEY_DK6, BRL_CMD_NXPROMPT); - KEY(BAUM_KEY_TL2|BAUM_KEY_TR1|BAUM_KEY_TR3|BAUM_KEY_TL1, BRL_CMD_PRSEARCH); - KEY(BAUM_KEY_TL2|BAUM_KEY_TR1|BAUM_KEY_TR3|BAUM_KEY_TL3, BRL_CMD_NXSEARCH); + KEY(BAUM_KEY_DK2|BAUM_KEY_DK5|BAUM_KEY_DK4, BRL_CMD_PRPGRPH); + KEY(BAUM_KEY_DK2|BAUM_KEY_DK5|BAUM_KEY_DK6, BRL_CMD_NXPGRPH); - KEYv(BAUM_KEY_TL1, BRL_CMD_CSRTRK|BRL_FLG_TOGGLE_ON, BRL_CMD_LNUP); - KEYv(BAUM_KEY_TL3, BRL_CMD_CSRTRK|BRL_FLG_TOGGLE_OFF, BRL_CMD_LNDN); + KEY(BAUM_KEY_DK2|BAUM_KEY_DK4|BAUM_KEY_DK6|BAUM_KEY_DK1, BRL_CMD_PRSEARCH); + KEY(BAUM_KEY_DK2|BAUM_KEY_DK4|BAUM_KEY_DK6|BAUM_KEY_DK3, BRL_CMD_NXSEARCH); - KEY(BAUM_KEY_TL1|BAUM_KEY_TR3, BRL_CMD_BACK); + KEYv(BAUM_KEY_DK1, BRL_CMD_CSRTRK|BRL_FLG_TOGGLE_ON, BRL_CMD_LNUP); + KEYv(BAUM_KEY_DK3, BRL_CMD_CSRTRK|BRL_FLG_TOGGLE_OFF, BRL_CMD_LNDN); - KEYv(BAUM_KEY_TL2|BAUM_KEY_TR1|BAUM_KEY_TR3, BRL_CMD_HOME, BRL_CMD_LNBEG); - KEYv(BAUM_KEY_TL1|BAUM_KEY_TL3|BAUM_KEY_TR2, BRL_CMD_SPKHOME, BRL_CMD_LNEND); + KEY(BAUM_KEY_DK1|BAUM_KEY_DK6, BRL_CMD_BACK); - KEY(BAUM_KEY_TL1|BAUM_KEY_TL3|BAUM_KEY_TR1|BAUM_KEY_TR3, BRL_CMD_CSRJMP_VERT); - KEYv(BAUM_KEY_TL2|BAUM_KEY_TR2, BRL_CMD_INFO, BRL_CMD_SKPBLNKWINS); + KEYv(BAUM_KEY_DK2|BAUM_KEY_DK4|BAUM_KEY_DK6, BRL_CMD_HOME, BRL_CMD_LNBEG); + KEYv(BAUM_KEY_DK1|BAUM_KEY_DK3|BAUM_KEY_DK5, BRL_CMD_SPKHOME, BRL_CMD_LNEND); - KEY(BAUM_KEY_TL1|BAUM_KEY_TR1|BAUM_KEY_TR2, BRL_CMD_DISPMD); - KEY(BAUM_KEY_TL1|BAUM_KEY_TL2|BAUM_KEY_TR1, BRL_CMD_FREEZE); - KEY(BAUM_KEY_TL1|BAUM_KEY_TL2|BAUM_KEY_TR2, BRL_CMD_HELP); - KEY(BAUM_KEY_TL1|BAUM_KEY_TL3|BAUM_KEY_TR1, BRL_CMD_PREFMENU); - KEY(BAUM_KEY_TL1|BAUM_KEY_TL2|BAUM_KEY_TL3|BAUM_KEY_TR1, BRL_CMD_PASTE); - KEY(BAUM_KEY_TL1|BAUM_KEY_TL2|BAUM_KEY_TL3|BAUM_KEY_TR2, BRL_CMD_PREFLOAD); - KEY(BAUM_KEY_TL2|BAUM_KEY_TL3|BAUM_KEY_TR1, BRL_CMD_RESTARTSPEECH); - KEY(BAUM_KEY_TL2|BAUM_KEY_TL3|BAUM_KEY_TR1|BAUM_KEY_TR2, BRL_CMD_ATTRVIS); - KEY(BAUM_KEY_TL1|BAUM_KEY_TL3|BAUM_KEY_TR3, BRL_CMD_BACK); - KEY(BAUM_KEY_TL2|BAUM_KEY_TR1|BAUM_KEY_TR2|BAUM_KEY_TR3, BRL_CMD_PREFSAVE); + KEY(BAUM_KEY_DK1|BAUM_KEY_DK3|BAUM_KEY_DK4|BAUM_KEY_DK6, BRL_CMD_CSRJMP_VERT); + KEYv(BAUM_KEY_DK2|BAUM_KEY_DK5, BRL_CMD_INFO, BRL_CMD_SKPBLNKWINS); - KEY(BAUM_KEY_TL2|BAUM_KEY_TL3|BAUM_KEY_TR2, BRL_CMD_SIXDOTS|BRL_FLG_TOGGLE_ON); - KEY(BAUM_KEY_TL2|BAUM_KEY_TL3|BAUM_KEY_TR3, BRL_CMD_SIXDOTS|BRL_FLG_TOGGLE_OFF); + KEY(BAUM_KEY_DK1|BAUM_KEY_DK4|BAUM_KEY_DK5, BRL_CMD_DISPMD); + KEY(BAUM_KEY_DK1|BAUM_KEY_DK2|BAUM_KEY_DK4, BRL_CMD_FREEZE); + KEY(BAUM_KEY_DK1|BAUM_KEY_DK2|BAUM_KEY_DK5, BRL_CMD_HELP); + KEY(BAUM_KEY_DK1|BAUM_KEY_DK3|BAUM_KEY_DK4, BRL_CMD_PREFMENU); + KEY(BAUM_KEY_DK1|BAUM_KEY_DK2|BAUM_KEY_DK3|BAUM_KEY_DK4, BRL_CMD_PASTE); + KEY(BAUM_KEY_DK1|BAUM_KEY_DK2|BAUM_KEY_DK3|BAUM_KEY_DK5, BRL_CMD_PREFLOAD); + KEY(BAUM_KEY_DK2|BAUM_KEY_DK3|BAUM_KEY_DK4, BRL_CMD_RESTARTSPEECH); + KEY(BAUM_KEY_DK2|BAUM_KEY_DK3|BAUM_KEY_DK4|BAUM_KEY_DK5, BRL_CMD_ATTRVIS); + KEY(BAUM_KEY_DK1|BAUM_KEY_DK3|BAUM_KEY_DK6, BRL_CMD_BACK); + KEY(BAUM_KEY_DK2|BAUM_KEY_DK4|BAUM_KEY_DK5|BAUM_KEY_DK6, BRL_CMD_PREFSAVE); - KEY(BAUM_KEY_TL1|BAUM_KEY_TR1|BAUM_KEY_TR2|BAUM_KEY_TR3, BRL_CMD_LEARN); - KEY(BAUM_KEY_TL1|BAUM_KEY_TL2|BAUM_KEY_TL3|BAUM_KEY_TR3, BRL_CMD_SWITCHVT_NEXT); - KEY(BAUM_KEY_TL3|BAUM_KEY_TR1|BAUM_KEY_TR2|BAUM_KEY_TR3, BRL_CMD_SWITCHVT_PREV); + KEY(BAUM_KEY_DK2|BAUM_KEY_DK3|BAUM_KEY_DK5, BRL_CMD_SIXDOTS|BRL_FLG_TOGGLE_ON); + KEY(BAUM_KEY_DK2|BAUM_KEY_DK3|BAUM_KEY_DK6, BRL_CMD_SIXDOTS|BRL_FLG_TOGGLE_OFF); - KEY(BAUM_KEY_TL3|BAUM_KEY_TR1, BRL_CMD_MUTE); - KEY(BAUM_KEY_TL3|BAUM_KEY_TR2, BRL_CMD_SAY_LINE); - KEY(BAUM_KEY_TL3|BAUM_KEY_TR1|BAUM_KEY_TR2, BRL_CMD_SAY_ABOVE); - KEY(BAUM_KEY_TL3|BAUM_KEY_TR2|BAUM_KEY_TR3, BRL_CMD_SAY_BELOW); - KEY(BAUM_KEY_TL3|BAUM_KEY_TR1|BAUM_KEY_TR3, BRL_CMD_AUTOSPEAK); + KEY(BAUM_KEY_DK1|BAUM_KEY_DK4|BAUM_KEY_DK5|BAUM_KEY_DK6, BRL_CMD_LEARN); + KEY(BAUM_KEY_DK1|BAUM_KEY_DK2|BAUM_KEY_DK3|BAUM_KEY_DK6, BRL_CMD_SWITCHVT_NEXT); + KEY(BAUM_KEY_DK3|BAUM_KEY_DK4|BAUM_KEY_DK5|BAUM_KEY_DK6, BRL_CMD_SWITCHVT_PREV); + KEY(BAUM_KEY_DK3|BAUM_KEY_DK4, BRL_CMD_MUTE); + KEY(BAUM_KEY_DK3|BAUM_KEY_DK5, BRL_CMD_SAY_LINE); + KEY(BAUM_KEY_DK3|BAUM_KEY_DK4|BAUM_KEY_DK5, BRL_CMD_SAY_ABOVE); + KEY(BAUM_KEY_DK3|BAUM_KEY_DK5|BAUM_KEY_DK6, BRL_CMD_SAY_BELOW); + KEY(BAUM_KEY_DK3|BAUM_KEY_DK4|BAUM_KEY_DK6, BRL_CMD_AUTOSPEAK); + + KEY(BAUM_KEY_B9, BRL_BLK_PASSDOTS); + KEY(BAUM_KEY_B10, BRL_BLK_PASSDOTS); KEY(BAUM_KEY_B11, BRL_BLK_PASSDOTS); + KEY(BAUM_KEY_PRESS, BRL_BLK_PASSKEY+BRL_KEY_ENTER); - KEY(BAUM_KEY_LEFT, BRL_BLK_PASSKEY+BRL_KEY_CURSOR_LEFT); - KEY(BAUM_KEY_RIGHT, BRL_BLK_PASSKEY+BRL_KEY_CURSOR_RIGHT); KEY(BAUM_KEY_UP, BRL_BLK_PASSKEY+BRL_KEY_CURSOR_UP); KEY(BAUM_KEY_DOWN, BRL_BLK_PASSKEY+BRL_KEY_CURSOR_DOWN); + KEY(BAUM_KEY_LEFT, BRL_BLK_PASSKEY+BRL_KEY_CURSOR_LEFT); + KEY(BAUM_KEY_RIGHT, BRL_BLK_PASSKEY+BRL_KEY_CURSOR_RIGHT); + + KEY(BAUM_KEY_DOT4|BAUM_KEY_UP, BRL_CMD_TOP_LEFT); + KEY(BAUM_KEY_DOT4|BAUM_KEY_DOWN, BRL_CMD_BOT_LEFT); + KEY(BAUM_KEY_DOT4|BAUM_KEY_LEFT, BRL_CMD_LNBEG); + KEY(BAUM_KEY_DOT4|BAUM_KEY_RIGHT, BRL_CMD_LNEND); + + KEY(BAUM_KEY_DOT5|BAUM_KEY_UP, BRL_CMD_LNUP); + KEY(BAUM_KEY_DOT5|BAUM_KEY_DOWN, BRL_CMD_LNDN); + KEY(BAUM_KEY_DOT5|BAUM_KEY_LEFT, BRL_CMD_FWINLT); + KEY(BAUM_KEY_DOT5|BAUM_KEY_RIGHT, BRL_CMD_FWINRT); + + KEY(BAUM_KEY_DOT6|BAUM_KEY_UP, BRL_CMD_WINUP); + KEY(BAUM_KEY_DOT6|BAUM_KEY_DOWN, BRL_CMD_WINDN); + KEY(BAUM_KEY_DOT6|BAUM_KEY_LEFT, BRL_CMD_CHRLT); + KEY(BAUM_KEY_DOT6|BAUM_KEY_RIGHT, BRL_CMD_CHRRT); { int arg; @@ -2326,22 +2977,22 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { switch (keys) { KEY(0, BRL_BLK_ROUTE+key); - KEY(BAUM_KEY_TL1, BRL_BLK_CUTBEGIN+key); - KEY(BAUM_KEY_TL2, BRL_BLK_CUTAPPEND+key); - KEY(BAUM_KEY_TR1, BRL_BLK_CUTLINE+key); - KEY(BAUM_KEY_TR2, BRL_BLK_CUTRECT+key); + KEY(BAUM_KEY_DK1, BRL_BLK_CUTBEGIN+key); + KEY(BAUM_KEY_DK2, BRL_BLK_CUTAPPEND+key); + KEY(BAUM_KEY_DK4, BRL_BLK_CUTLINE+key); + KEY(BAUM_KEY_DK5, BRL_BLK_CUTRECT+key); - KEY(BAUM_KEY_TL3, BRL_BLK_DESCCHAR+key); - KEY(BAUM_KEY_TR3, BRL_BLK_SETLEFT+key); + KEY(BAUM_KEY_DK3, BRL_BLK_DESCCHAR+key); + KEY(BAUM_KEY_DK6, BRL_BLK_SETLEFT+key); - KEY(BAUM_KEY_TL2|BAUM_KEY_TL1, BRL_BLK_PRINDENT+key); - KEY(BAUM_KEY_TL2|BAUM_KEY_TL3, BRL_BLK_NXINDENT+key); + KEY(BAUM_KEY_DK2|BAUM_KEY_DK1, BRL_BLK_PRINDENT+key); + KEY(BAUM_KEY_DK2|BAUM_KEY_DK3, BRL_BLK_NXINDENT+key); - KEY(BAUM_KEY_TR2|BAUM_KEY_TR1, BRL_BLK_PRDIFCHAR+key); - KEY(BAUM_KEY_TR2|BAUM_KEY_TR3, BRL_BLK_NXDIFCHAR+key); + KEY(BAUM_KEY_DK5|BAUM_KEY_DK4, BRL_BLK_PRDIFCHAR+key); + KEY(BAUM_KEY_DK5|BAUM_KEY_DK6, BRL_BLK_NXDIFCHAR+key); - KEY(BAUM_KEY_TL1|BAUM_KEY_TL3, BRL_BLK_SETMARK+key); - KEY(BAUM_KEY_TR1|BAUM_KEY_TR3, BRL_BLK_GOTOMARK+key); + KEY(BAUM_KEY_DK1|BAUM_KEY_DK3, BRL_BLK_SETMARK+key); + KEY(BAUM_KEY_DK4|BAUM_KEY_DK6, BRL_BLK_GOTOMARK+key); } } else if (routingKeyCount == 2) { if (keys == 0) { @@ -2349,22 +3000,22 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { pendingCommand = BRL_BLK_CUTLINE + routingKeys[1]; } else if (routingKeys[1] == routingKeys[0]+1) { switch (keys) { - KEY(BAUM_KEY_TR1, BRL_BLK_PRINDENT+routingKeys[0]); - KEY(BAUM_KEY_TR3, BRL_BLK_NXINDENT+routingKeys[0]); + KEY(BAUM_KEY_DK4, BRL_BLK_PRINDENT+routingKeys[0]); + KEY(BAUM_KEY_DK6, BRL_BLK_NXINDENT+routingKeys[0]); default: - if (routingKeys[1] == textCount-1) { + if (routingKeys[1] == brl->textColumns-1) { switch (keys) { - case BAUM_KEY_TL1: + case BAUM_KEY_DK1: newModifiers = MOD_INPUT; command = BRL_CMD_NOOP | BRL_FLG_TOGGLE_ON; break; - case BAUM_KEY_TL2: + case BAUM_KEY_DK2: newModifiers = MOD_INPUT | MOD_INPUT_ONCE; break; - KEY(BAUM_KEY_TL3, BRL_CMD_NOOP|BRL_FLG_TOGGLE_OFF); + KEY(BAUM_KEY_DK3, BRL_CMD_NOOP|BRL_FLG_TOGGLE_OFF); /* already out of input mode */ } } diff --git a/BrailleDrivers/Baum/help0.txt b/Drivers/Braille/Baum/help0.txt similarity index 98% rename from BrailleDrivers/Baum/help0.txt rename to Drivers/Braille/Baum/help0.txt index d7ae4bcc82dad3a455b7c9b17f05b07c32027ed7..38debb037b81aef9c383595f57d1d4a6370c0135 100644 --- a/BrailleDrivers/Baum/help0.txt +++ b/Drivers/Braille/Baum/help0.txt @@ -1,4 +1,4 @@ -Help for Baum Displays +Help for All Models (with VarioKeys=no) TL2/TR2: go left/right one window TL1+TL3 / TR1+TR3: go left/right one character diff --git a/BrailleDrivers/Baum/help1.txt b/Drivers/Braille/Baum/help1.txt similarity index 98% rename from BrailleDrivers/Baum/help1.txt rename to Drivers/Braille/Baum/help1.txt index ac1ccaad3dea72f307b723f82d9dd77f04dc58bd..7858ba1f1075836d7143e3390c60654526a1f494 100644 --- a/BrailleDrivers/Baum/help1.txt +++ b/Drivers/Braille/Baum/help1.txt @@ -1,4 +1,4 @@ -Help for Baum Displays with VarioKeys=yes +Help for All Models (with VarioKeys=yes) (for users familiar with BRLTTY's old Vario driver) TL2/TR2: go left/right one window diff --git a/BrailleDrivers/Baum/reldeps.mk b/Drivers/Braille/Baum/reldeps.mk similarity index 100% rename from BrailleDrivers/Baum/reldeps.mk rename to Drivers/Braille/Baum/reldeps.mk diff --git a/BrailleDrivers/BrailleLite/Makefile.in b/Drivers/Braille/BrailleLite/Makefile.in similarity index 87% rename from BrailleDrivers/BrailleLite/Makefile.in rename to Drivers/Braille/BrailleLite/Makefile.in index fa32587da4a0b2eec3cd428aa51931de954d0a6c..f4a1b7a882de3e4d0f5eb052bd138a41547dce99 100644 --- a/BrailleDrivers/BrailleLite/Makefile.in +++ b/Drivers/Braille/BrailleLite/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/BrailleLite/README b/Drivers/Braille/BrailleLite/README similarity index 100% rename from BrailleDrivers/BrailleLite/README rename to Drivers/Braille/BrailleLite/README diff --git a/BrailleDrivers/BrailleLite/bindings.h b/Drivers/Braille/BrailleLite/bindings.h similarity index 98% rename from BrailleDrivers/BrailleLite/bindings.h rename to Drivers/Braille/BrailleLite/bindings.h index cb2b3f5cb6440f76811c6baf6e59f4a04dfedb88..da0188dea773b7e2d4fee64236055bcd790c8f0c 100644 --- a/BrailleDrivers/BrailleLite/bindings.h +++ b/Drivers/Braille/BrailleLite/bindings.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/BrailleLite/braille.c b/Drivers/Braille/BrailleLite/braille.c similarity index 96% rename from BrailleDrivers/BrailleLite/braille.c rename to Drivers/Braille/BrailleLite/braille.c index 50a94f8e3e4f30884e9b6e91004d82b052ec4205..d0152289649d292149885f7821493aa451f09d30 100644 --- a/BrailleDrivers/BrailleLite/braille.c +++ b/Drivers/Braille/BrailleLite/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -39,7 +40,6 @@ typedef enum { #define BRLPARMS "baudrate", "kbemu" #include "brl_driver.h" -#include "tbl.h" #include "braille.h" #include "io_serial.h" @@ -363,14 +363,14 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) } LogPrint(LOG_NOTICE, "Braille Lite %d detected.", blitesz); - brl->x = blitesz; /* initialise size of display - */ - brl->y = 1; /* Braille Lites are single line displays */ + brl->textColumns = blitesz; /* initialise size of display - */ + brl->textRows = 1; /* Braille Lites are single line displays */ /* Allocate space for buffers */ - if ((prevdata = malloc(brl->x))) { - memset(prevdata, 0, brl->x); + if ((prevdata = malloc(brl->textColumns))) { + memset(prevdata, 0, brl->textColumns); - if ((rawdata = malloc(brl->x))) { + if ((rawdata = malloc(brl->textColumns))) { if (serialSetFlowControl(BL_serialDevice, SERIAL_FLOW_HARDWARE)) return 1; free(rawdata); @@ -577,8 +577,8 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) dot8shift = 0; #endif /* USE_TEXTTRANS */ if(kbemu) - message ("keyboard emu on", MSG_SILENT); - else message ("keyboard emu off", MSG_SILENT); + message (NULL, "keyboard emu on", MSG_SILENT); + else message (NULL, "keyboard emu off", MSG_SILENT); return BRL_CMD_NOOP; case BLT_ROTATE: /* rotate Braille Lite by 180 degrees */ reverse_kbd ^= 1; @@ -590,13 +590,13 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) case BLT_REPEAT: /* set repeat count */ hold = 0; sprintf (outmsg, "Repeat count:"); - message (outmsg, MSG_SILENT | MSG_NODELAY); + message (NULL, outmsg, MSG_SILENT | MSG_NODELAY); intoverride = 1; state = ST_REPEAT; return BRL_CMD_NOOP; case BLT_CONFIG: /* configuration menu */ sprintf (outmsg, "Config? [m/s/r/z]"); - message (outmsg, MSG_SILENT | MSG_NODELAY); + message (NULL, outmsg, MSG_SILENT | MSG_NODELAY); intoverride = 1; state = ST_CONFIG; return BRL_CMD_NOOP; @@ -656,7 +656,7 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) return BRL_CMD_NOOP; case BLT_ABORT: /* abort - quit keyboard emulation */ kbemu = 0; - message ("keyboard emu off", MSG_SILENT); + message (NULL, "keyboard emu off", MSG_SILENT); return BRL_CMD_NOOP; default: /* unrecognised command */ shift = shiftlck = ctrl = meta = 0; @@ -771,7 +771,7 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) sprintf (outmsg, "Repeat count: %d", hold); else sprintf (outmsg, "Repeat count: "); intoverride = 0; - message (outmsg, MSG_SILENT | MSG_NODELAY); + message (NULL, outmsg, MSG_SILENT | MSG_NODELAY); intoverride = 1; } else if (key.routing) @@ -779,7 +779,7 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) hold = key.routing +1; sprintf (outmsg, "Repeat count: %d", hold); intoverride = 0; - message (outmsg, MSG_SILENT | MSG_NODELAY); + message (NULL, outmsg, MSG_SILENT | MSG_NODELAY); intoverride = 1; } else { diff --git a/BrailleDrivers/BrailleLite/braille.h b/Drivers/Braille/BrailleLite/braille.h similarity index 84% rename from BrailleDrivers/BrailleLite/braille.h rename to Drivers/Braille/BrailleLite/braille.h index 0aa5b37f35b97e642338d99fde860ae78e453dfe..94a32ec7372c8590933039413d230076ad4da7e6 100644 --- a/BrailleDrivers/BrailleLite/braille.h +++ b/Drivers/Braille/BrailleLite/braille.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Drivers/Braille/BrailleLite/brl_drivers.lst b/Drivers/Braille/BrailleLite/brl_drivers.lst new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/BrailleDrivers/BrailleLite/help.src b/Drivers/Braille/BrailleLite/help.src similarity index 100% rename from BrailleDrivers/BrailleLite/help.src rename to Drivers/Braille/BrailleLite/help.src diff --git a/Drivers/Braille/BrailleLite/help0.txt b/Drivers/Braille/BrailleLite/help0.txt new file mode 100644 index 0000000000000000000000000000000000000000..7a1c6abd3bdcddd1dfdf687a7d1d6604d5ff72ab --- /dev/null +++ b/Drivers/Braille/BrailleLite/help0.txt @@ -0,0 +1,92 @@ +--BRLTTY Braille Lite Help Screen-- + +Advance bar left/right: full window left/right +1: line up / 4: line down +3: character left / 6: character right +235: line start / 256: line end +123: top left / 456: bottom left +1236: next virtual terminal / 3456: previous VT +234: search forward / 156: search backward (use cut to set search string) +12356: next prompt / 23456: previous prompt (same prompt as current line) +1345: next paragraph / 1246: previous paragraph (line after blank line) + +2: keyboard left arrow / 5: keyboard right arrow +23: keyboard up arrow / 56: keyboard down arrow +12 chord: keyboard backspace +145 chord: keyboard delete +2345 chord: keyboard tab +46 chord: keyboard return +246 chord: keyboard escape + +125: home (goto cursor) +1256: goto cursor previous position +14: cursor tracking (toggle) +124 chord: freeze screen (toggle) +1456: help mode (toggle) +12456: learn mode (key describer) (toggle) +34: status mode (toggle) +24: attribute display (toggle) +2346: six dots mode (toggle) + +245 chord: route cursor to beginning of line +45 chord: route cursor to current line +236 chord: cut start +126 chord: cut append +356 chord: cut end rectangular +16 chord: cut end linear +1234 chord: paste + +36: speak line +134: mute speech + +1235 chord: restart braille driver + +25 chord: preferences options: + 134: menu + 1235: reset + 234: save + 1356: cancel + +Chord required for *dangerous* commands, e.g. routing, cut/paste, +restart driver, etc. + +Internal: + +1245 chord: position internal cursor for column-specific function: + To move internal cursor: + 125: centre of window + 235: left end of window + 256: right end of window + 3: character left + 6: character right + Advance bar left/right: quarter window left/right + To terminate: + 236 chord: cut start + 126 chord: cut append + 356 chord: cut end rectangular + 16 chord: cut end linear + 24: describe attributes of selected character + 1356: cancel + +k chord toggles keyboard emulation mode - initially off. +When on, unchorded characters passed directly to inskey(), unless prefixed +by: + +u chord: uppercase (twice to lock) +q chord: unlock +26 chord: add 8th dot to next char typed +35 chord: prepend ESCAPE to next character (ALT) +x chord: control character +z chord: cancel preceding meta/control + +Other internals: + +2356 chord: rotate BrailleLite by 180 degrees +o chord: set repeat count for following command (up to 2digits). + Type numbers, then type movement command or character (if in + keyboard emulation). + z chord: cancels special context. + e chord: confirms count and waits for key to repeat. +Goto virtual terminal: use o chord, followed by VT number, + followed by v chord or # chord. +Set/goto mark: use o chord followed by # followed by s to set or m to go. diff --git a/Drivers/Braille/BrailleLite/help1.txt b/Drivers/Braille/BrailleLite/help1.txt new file mode 100644 index 0000000000000000000000000000000000000000..c0652602e8bbb52b69fcd506d9c458f0512187f7 --- /dev/null +++ b/Drivers/Braille/BrailleLite/help1.txt @@ -0,0 +1,122 @@ +--BRLTTY Braille Lite Help Screen-- + +left bar left: full window left +left bar right: line up +right bar left: line down +right bar right: full window right + +1: line up / 4: line down +3: character left / 6: character right +235: line start / 256: line end +123: top left / 456: bottom left +1236: next virtual terminal / 3456: previous VT +234: search forward / 156: search backward (use cut to set search string) +12356: next prompt / 23456: previous prompt (same prompt as current line) +1345: next paragraph / 1246: previous paragraph (line after blank line) + +2: keyboard left arrow / 5: keyboard right arrow +23: keyboard up arrow / 56: keyboard down arrow +12 chord: keyboard backspace +145 chord: keyboard delete +2345 chord: keyboard tab +46 chord: keyboard return +246 chord: keyboard escape + +125: home (goto cursor) +1256: goto cursor previous position +14: cursor tracking (toggle) +124 chord: freeze screen (toggle) +1456: help mode (toggle) +12456: learn mode (key describer) (toggle) +34: status mode (toggle) +24: attribute display (toggle) +2346: six dots mode (toggle) + +245 chord: route cursor to beginning of line +45 chord: route cursor to current line +236 chord: cut start +126 chord: cut append +356 chord: cut end rectangular +16 chord: cut end linear +1234 chord: paste + +36: speak line +134: mute speech + +1235 chord: restart braille driver + +25 chord: preferences options: + 134: menu + 1235: reset + 234: save + 1356: cancel + +Chord required for *dangerous* commands, e.g. routing, cut/paste, +restart driver, etc. + +Advance Bar Combinations: +Left Right Description +center ------ half window left +------ center half window right +left left up to line with different content +left right down to line with different content +right left up to line with different highlighting +right right down to line with different highlighting +center left up to top line +center right down to bottom line + +Whiz Wheels (Millennium models): +Wheel Motion Description +left up one line up +left down one line down +right up full window left +right down full window right +left press attribute underlining (toggle) +right press show cursor (toggle) + +Internal: + +1245 chord: position internal cursor for column-specific function: + To move internal cursor: + 125: centre of window + 235: left end of window + 256: right end of window + 3: character left + 6: character right + left bar left: quarter window left + right bar right: quarter window right + routing key: go to character + To terminate: + 236 chord: cut start + 126 chord: cut append + 356 chord: cut end rectangular + 16 chord: cut end linear + 24: describe attributes of selected character + 1356: cancel + +k chord toggles keyboard emulation mode - initially off. +When on, unchorded characters passed directly to inskey(), unless prefixed +by: + +u chord: uppercase (twice to lock) +q chord: unlock +26 chord: add 8th dot to next char typed +35 chord: prepend ESCAPE to next character (ALT) +x chord: control character +z chord: cancel preceding meta/control + +Combinations with: +dot 7: shift +dot 78: control + +Other internals: + +2356 chord: rotate BrailleLite by 180 degrees +o chord: set repeat count for following command (up to 2digits). + Type numbers, then type movement command or character (if in + keyboard emulation). + z chord: cancels special context. + e chord: confirms count and waits for key to repeat. +Goto virtual terminal: use o chord, followed by VT number, + followed by v chord or # chord. +Set/goto mark: use o chord followed by # followed by s to set or m to go. diff --git a/BrailleDrivers/BrailleLite/reldeps.mk b/Drivers/Braille/BrailleLite/reldeps.mk similarity index 93% rename from BrailleDrivers/BrailleLite/reldeps.mk rename to Drivers/Braille/BrailleLite/reldeps.mk index dd9cbdd0f0f8ab43f0a56775d052fba6a7c94c52..1589bd9624309f50d2ef315a648b678a17e9d10d 100644 --- a/BrailleDrivers/BrailleLite/reldeps.mk +++ b/Drivers/Braille/BrailleLite/reldeps.mk @@ -8,7 +8,6 @@ braille.$O: $(SRC_TOP)Programs/brl.h braille.$O: $(SRC_TOP)Programs/brl_driver.h braille.$O: $(SRC_TOP)Programs/brldefs.h braille.$O: $(SRC_TOP)Programs/driver.h -braille.$O: $(SRC_TOP)Programs/tbl.h braille.$O: $(SRC_DIR)/braille.h braille.$O: $(SRC_TOP)Programs/io_defs.h braille.$O: $(SRC_TOP)Programs/io_serial.h diff --git a/BrailleDrivers/BrailleNote/Makefile.in b/Drivers/Braille/BrailleNote/Makefile.in similarity index 81% rename from BrailleDrivers/BrailleNote/Makefile.in rename to Drivers/Braille/BrailleNote/Makefile.in index 4ff57068d4347283568034213716bc5baf1a78c1..fbc32c6fb51a09eab6f0c6252d7a4fd29f882773 100644 --- a/BrailleDrivers/BrailleNote/Makefile.in +++ b/Drivers/Braille/BrailleNote/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/BrailleNote/PROTOCOL b/Drivers/Braille/BrailleNote/PROTOCOL similarity index 100% rename from BrailleDrivers/BrailleNote/PROTOCOL rename to Drivers/Braille/BrailleNote/PROTOCOL diff --git a/BrailleDrivers/BrailleNote/README b/Drivers/Braille/BrailleNote/README similarity index 100% rename from BrailleDrivers/BrailleNote/README rename to Drivers/Braille/BrailleNote/README diff --git a/BrailleDrivers/BrailleNote/TODO b/Drivers/Braille/BrailleNote/TODO similarity index 100% rename from BrailleDrivers/BrailleNote/TODO rename to Drivers/Braille/BrailleNote/TODO diff --git a/BrailleDrivers/BrailleNote/braille.c b/Drivers/Braille/BrailleNote/braille.c similarity index 91% rename from BrailleDrivers/BrailleNote/braille.c rename to Drivers/Braille/BrailleNote/braille.c index 2e1b3ac3d0e05d4150dc08a7c30d7bf3c43d5217..baf3cca4309925d7429c2d17ac373e28fa0011e7 100644 --- a/BrailleDrivers/BrailleNote/braille.c +++ b/Drivers/Braille/BrailleNote/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -28,16 +29,10 @@ #include "misc.h" -typedef enum { - PARM_STATUSCELLS -} DriverParameter; -#define BRLPARMS "statuscells" - -#define BRL_HAVE_STATUS_CELLS #define BRL_HAVE_PACKET_IO #include "brl_driver.h" #include "braille.h" -#include "tbl.h" +#include "ttb.h" static int logInputPackets = 0; static int logOutputPackets = 0; @@ -222,7 +217,7 @@ writePrompt (BrailleDisplay *brl, const char *prompt) { int index = 0; if (length > dataCells) length = dataCells; while (index < length) { - dataArea[index] = textTable[(unsigned char)prompt[index]]; + dataArea[index] = convertCharacterToDots(textTable, (unsigned char)prompt[index]); ++index; } while (index < dataCells) dataArea[index++] = 0; @@ -237,20 +232,20 @@ getByte (void) { return byte; } -static unsigned char +static wchar_t getCharacter (BrailleDisplay *brl) { for (;;) { switch (getByte()) { default: break; case BNI_CHARACTER: - return untextTable[inputTable[getByte()]]; + return convertDotsToCharacter(textTable, inputTable[getByte()]); case BNI_SPACE: switch (getByte()) { default: break; case BNC_SPACE: - return ' '; + return WC_C(' '); } break; case BNI_BACKSPACE: @@ -258,7 +253,7 @@ getCharacter (BrailleDisplay *brl) { default: break; case BNC_SPACE: - return '\b'; + return WC_C('\b'); } break; case BNI_ENTER: @@ -266,7 +261,7 @@ getCharacter (BrailleDisplay *brl) { default: break; case BNC_SPACE: - return '\r'; + return WC_C('\r'); } break; } @@ -378,22 +373,6 @@ visualDisplay (BrailleDisplay *brl, unsigned char byte, BRL_DriverCommandContext return EOF; } -static void -adjustStatusCells (BrailleDisplay *brl, const char *parameter) { - if (*parameter) { - const int minimum = 0; - const int maximum = MIN(BRL_MAX_STATUS_CELL_COUNT, brl->x-1); - if (validateInteger(&statusCells, parameter, &minimum, &maximum)) { - statusArea = dataArea; - dataArea = statusArea + statusCells; - brl->x -= statusCells; - dataCells -= statusCells; - } else { - LogPrint(LOG_WARNING, "%s: %s", "invalid status cell count", parameter); - } - } -} - static int brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { { @@ -418,13 +397,13 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { if (size) { if (response.data.code == BNI_DESCRIBE) { statusCells = response.data.values.description.statusCells; - brl->x = response.data.values.description.textCells; - brl->y = 1; - if ((statusCells == 5) && (brl->x == 30)) { + brl->textColumns = response.data.values.description.textCells; + brl->textRows = 1; + if ((statusCells == 5) && (brl->textColumns == 30)) { statusCells -= 2; - brl->x += 2; + brl->textColumns += 2; } - dataCells = brl->x * brl->y; + dataCells = brl->textColumns * brl->textRows; cellCount = statusCells + dataCells; if ((cellBuffer = malloc(cellCount))) { memset(cellBuffer, 0, cellCount); @@ -435,7 +414,6 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { temporaryKeyboardMode = persistentKeyboardMode; persistentRoutingOperation = BRL_BLK_ROUTE; temporaryRoutingOperation = persistentRoutingOperation; - adjustStatusCells(brl, parameters[PARM_STATUSCELLS]); return 1; } else { LogError("cell buffer allocation"); @@ -488,45 +466,34 @@ brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) { return 1; } -static int -brl_writeStatus (BrailleDisplay *brl, const unsigned char *status) { - if (memcmp(statusArea, status, statusCells) != 0) { - memcpy(statusArea, status, statusCells); - /* refreshCells(); - * Not needed since writebrl will be called shortly. - */ - } - return 1; -} - static int getDecimalInteger (BrailleDisplay *brl, unsigned int *integer, unsigned int width, const char *description) { char buffer[width + 1]; memset(buffer, '0', width); buffer[width] = 0; for (;;) { - unsigned char character; + wchar_t character; char prompt[0X40]; snprintf(prompt, sizeof(prompt), "%s: %s", description, buffer); writePrompt(brl, prompt); - switch (character = getCharacter(brl)) { + switch ((character = getCharacter(brl))) { default: continue; - case '\r': + case WC_C('\r'): *integer = atoi(buffer); return 1; case '\b': return 0; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': + case WC_C('0'): + case WC_C('1'): + case WC_C('2'): + case WC_C('3'): + case WC_C('4'): + case WC_C('5'): + case WC_C('6'): + case WC_C('7'): + case WC_C('8'): + case WC_C('9'): memcpy(buffer, buffer+1, width-1); buffer[width-1] = character; break; @@ -545,56 +512,56 @@ getHexadecimalCharacter (BrailleDisplay *brl, unsigned char *character) { switch (getCharacter(brl)) { default: continue; - case '\r': + case WC_C('\r'): return 1; - case '\b': + case WC_C('\b'): return 0; - case '0': + case WC_C('0'): digit = 0X0; break; - case '1': + case WC_C('1'): digit = 0X1; break; - case '2': + case WC_C('2'): digit = 0X2; break; - case '3': + case WC_C('3'): digit = 0X3; break; - case '4': + case WC_C('4'): digit = 0X4; break; - case '5': + case WC_C('5'): digit = 0X5; break; - case '6': + case WC_C('6'): digit = 0X6; break; - case '7': + case WC_C('7'): digit = 0X7; break; - case '8': + case WC_C('8'): digit = 0X8; break; - case '9': + case WC_C('9'): digit = 0X9; break; - case 'a': + case WC_C('a'): digit = 0XA; break; - case 'b': + case WC_C('b'): digit = 0XB; break; - case 'c': + case WC_C('c'): digit = 0XC; break; - case 'd': + case WC_C('d'): digit = 0XD; break; - case 'e': + case WC_C('e'): digit = 0XE; break; - case 'f': + case WC_C('f'): digit = 0XF; break; } @@ -682,7 +649,6 @@ interpretNavigation (BrailleDisplay *brl, unsigned char dots, BRL_DriverCommandC static int interpretCharacter (BrailleDisplay *brl, unsigned char dots, BRL_DriverCommandContext context) { int mask = 0X00; - if (context != BRL_CTX_SCREEN) return interpretNavigation(brl, dots, context); switch (currentKeyboardMode) { case KBM_NAVIGATE: return interpretNavigation(brl, dots, context); @@ -703,6 +669,7 @@ interpretCharacter (BrailleDisplay *brl, unsigned char dots, BRL_DriverCommandCo static int interpretSpaceChord (BrailleDisplay *brl, unsigned char dots, BRL_DriverCommandContext context) { + if (context == BRL_CTX_CHORDS) return BRL_BLK_PASSDOTS | inputTable[dots] | BRL_DOTC; switch (dots) { default: /* These are overridden by the Braille Note itself. */ diff --git a/BrailleDrivers/BrailleNote/braille.h b/Drivers/Braille/BrailleNote/braille.h similarity index 95% rename from BrailleDrivers/BrailleNote/braille.h rename to Drivers/Braille/BrailleNote/braille.h index f3c8326a774bba753173fd01a6561475cf4fddbe..c38b6ab2384eeb92e3978a504c9f51299cc3377c 100644 --- a/BrailleDrivers/BrailleNote/braille.h +++ b/Drivers/Braille/BrailleNote/braille.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/BrailleNote/help-cmds.txt b/Drivers/Braille/BrailleNote/help-cmds.txt similarity index 99% rename from BrailleDrivers/BrailleNote/help-cmds.txt rename to Drivers/Braille/BrailleNote/help-cmds.txt index 49703edbd579f578d657b4e7aa950dd2c58cfb09..acb4d01a6e34315402f009772c723ea4286ff4bd 100644 --- a/BrailleDrivers/BrailleNote/help-cmds.txt +++ b/Drivers/Braille/BrailleNote/help-cmds.txt @@ -1,4 +1,4 @@ -Braille Note Commands +Help for All Models (commands) Design Considerations: Common navigations can be made with the four thumb keys on the front surface. They're named (from left to right): Previous, Back, Advance, Next. diff --git a/BrailleDrivers/BrailleNote/help-keys.txt b/Drivers/Braille/BrailleNote/help-keys.txt similarity index 99% rename from BrailleDrivers/BrailleNote/help-keys.txt rename to Drivers/Braille/BrailleNote/help-keys.txt index f4b6ee84184fb58cca25c32e0e416b046df4015b..ec259984532c203df8f87bd99f7c9ee22fd164de 100644 --- a/BrailleDrivers/BrailleNote/help-keys.txt +++ b/Drivers/Braille/BrailleNote/help-keys.txt @@ -1,4 +1,4 @@ -Braille Note Keys +Help for All Models (keys) Thumb Keys: Keys Description diff --git a/BrailleDrivers/BrailleNote/reldeps.mk b/Drivers/Braille/BrailleNote/reldeps.mk similarity index 92% rename from BrailleDrivers/BrailleNote/reldeps.mk rename to Drivers/Braille/BrailleNote/reldeps.mk index 903eb2dca65e1f23b63e5ab1a5f3642c1786a384..32c229bb77dea1050070729802e34f2d08f6e19e 100644 --- a/BrailleDrivers/BrailleNote/reldeps.mk +++ b/Drivers/Braille/BrailleNote/reldeps.mk @@ -8,7 +8,7 @@ braille.$O: $(SRC_TOP)Programs/brl_driver.h braille.$O: $(SRC_TOP)Programs/brldefs.h braille.$O: $(SRC_TOP)Programs/driver.h braille.$O: $(SRC_DIR)/braille.h -braille.$O: $(SRC_TOP)Programs/tbl.h +braille.$O: $(SRC_TOP)Programs/ttb.h braille.$O: $(SRC_TOP)Programs/io_defs.h braille.$O: $(SRC_TOP)Programs/io_serial.h diff --git a/BrailleDrivers/Braudi/Makefile.in b/Drivers/Braille/Braudi/Makefile.in similarity index 81% rename from BrailleDrivers/Braudi/Makefile.in rename to Drivers/Braille/Braudi/Makefile.in index 1c89bc901ca79ed709d609a0a23efae5ddd39893..322080455123368626ad94401e2b57d8353f4506 100644 --- a/BrailleDrivers/Braudi/Makefile.in +++ b/Drivers/Braille/Braudi/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/Braudi/braille.c b/Drivers/Braille/Braudi/braille.c similarity index 90% rename from BrailleDrivers/Braudi/braille.c rename to Drivers/Braille/Braudi/braille.c index 979d951ed08be381e7bd3c49b069caf1f8e5b265..5828866ee4560c61db6ccb334a737c964a65da09 100644 --- a/BrailleDrivers/Braudi/braille.c +++ b/Drivers/Braille/Braudi/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -75,7 +76,7 @@ static int writeCells (BrailleDisplay *brl) { static const unsigned char header[] = {'D'}; static const unsigned char trailer[] = {'\r'}; - unsigned char buffer[sizeof(header) + brl->x + sizeof(trailer)]; + unsigned char buffer[sizeof(header) + brl->textColumns + sizeof(trailer)]; unsigned char *byte = buffer; memcpy(byte, header, sizeof(header)); @@ -83,7 +84,7 @@ writeCells (BrailleDisplay *brl) { { int i; - for (i=0; ix; *byte++=outputTable[outputBuffer[i++]]); + for (i=0; itextColumns; *byte++=outputTable[outputBuffer[i++]]); } memcpy(byte, trailer, sizeof(trailer)); @@ -152,8 +153,8 @@ identifyDisplay (BrailleDisplay *brl) { if (!count) { LogPrint(LOG_INFO, "Detected: %.*s", (int)length, identity); - brl->x = cells; - brl->y = 1; + brl->textColumns = cells; + brl->textRows = 1; return 1; } @@ -192,9 +193,9 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { charactersPerSecond = baud / 10; if (serialRestartDevice(serialDevice, baud)) { if (identifyDisplay(brl)) { - if ((outputBuffer = malloc(brl->x))) { + if ((outputBuffer = malloc(brl->textColumns))) { if (setTable(brl, 0)) { - memset(outputBuffer, 0, brl->x); + memset(outputBuffer, 0, brl->textColumns); writeCells(brl); return 1; @@ -230,8 +231,8 @@ brl_destruct (BrailleDisplay *brl) { static int brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) { - if (memcmp(brl->buffer, outputBuffer, brl->x) != 0) { - memcpy(outputBuffer, brl->buffer, brl->x); + if (memcmp(brl->buffer, outputBuffer, brl->textColumns) != 0) { + memcpy(outputBuffer, brl->buffer, brl->textColumns); writeCells(brl); } return 1; @@ -283,7 +284,7 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { if (interpretNumber(&key, &bytes, &count)) { if (!count) { - if ((key > 0) && (key <= brl->x)) return BRL_BLK_ROUTE + (key - 1); + if ((key > 0) && (key <= brl->textColumns)) return BRL_BLK_ROUTE + (key - 1); } } diff --git a/BrailleDrivers/Braudi/help.txt b/Drivers/Braille/Braudi/help.txt similarity index 92% rename from BrailleDrivers/Braudi/help.txt rename to Drivers/Braille/Braudi/help.txt index e24ff17b6f0d28e25657be50e432bed1daf70f72..915fe3812cbb1f8017beac38a025d71a977dec09 100644 --- a/BrailleDrivers/Braudi/help.txt +++ b/Drivers/Braille/Braudi/help.txt @@ -1,4 +1,4 @@ -Help for Braudi Displays +Help for All Models 1: go to top-left corner 2: go left one window diff --git a/BrailleDrivers/Braudi/reldeps.mk b/Drivers/Braille/Braudi/reldeps.mk similarity index 100% rename from BrailleDrivers/Braudi/reldeps.mk rename to Drivers/Braille/Braudi/reldeps.mk diff --git a/BrailleDrivers/BrlAPI/Makefile.in b/Drivers/Braille/BrlAPI/Makefile.in similarity index 72% rename from BrailleDrivers/BrlAPI/Makefile.in rename to Drivers/Braille/BrlAPI/Makefile.in index 4a53079b181ccd3ed8996cab12aebf7f7d847d95..2cb9660ba6302fff5b2179bf11707c631bc09e21 100644 --- a/BrailleDrivers/BrlAPI/Makefile.in +++ b/Drivers/Braille/BrlAPI/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # @@ -19,7 +20,7 @@ DRIVER_CODE = ba DRIVER_NAME = BrlAPI DRIVER_COMMENT = DRIVER_VERSION = 0.1, 2005 -DRIVER_DEVELOPERS = Sebastien Hinderer , Samuel Thibault +DRIVER_DEVELOPERS = Sébastien Hinderer , Samuel Thibault HELP_DEPS = $(HELP_TEXT) BRL_OBJS = @braille_libraries_ba@ include $(SRC_TOP)braille.mk diff --git a/BrailleDrivers/BrlAPI/README b/Drivers/Braille/BrlAPI/README similarity index 100% rename from BrailleDrivers/BrlAPI/README rename to Drivers/Braille/BrlAPI/README diff --git a/BrailleDrivers/BrlAPI/braille.c b/Drivers/Braille/BrlAPI/braille.c similarity index 90% rename from BrailleDrivers/BrlAPI/braille.c rename to Drivers/Braille/BrlAPI/braille.c index 99e982877e305099efd007ef3ae53fedaaa8219c..d7e795cd7578c55c3cee8430b594af4c4ef7566d 100644 --- a/BrailleDrivers/BrlAPI/braille.c +++ b/Drivers/Braille/BrlAPI/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -63,9 +64,9 @@ static int brl_construct(BrailleDisplay *brl, char **parameters, const char *dev LogPrint(LOG_DEBUG, "Connected to %s using %s", settings.host, settings.auth); CHECK((brlapi_enterTtyModeWithPath(NULL, 0, NULL)>=0), out0); LogPrint(LOG_DEBUG, "Got tty successfully"); - CHECK((brlapi_getDisplaySize(&brl->x, &brl->y)==0), out1); - LogPrint(LOG_DEBUG,"Found out display size: %dx%d", brl->x, brl->y); - displaySize = brl->x*brl->y; + CHECK((brlapi_getDisplaySize(&brl->textColumns, &brl->textRows)==0), out1); + LogPrint(LOG_DEBUG,"Found out display size: %dx%d", brl->textColumns, brl->textRows); + displaySize = brl->textColumns*brl->textRows; prevData = malloc(displaySize); CHECK((prevData!=NULL), out1); prevText = malloc(displaySize * sizeof(wchar_t)); diff --git a/BrailleDrivers/BrlAPI/help.txt b/Drivers/Braille/BrlAPI/help.txt similarity index 50% rename from BrailleDrivers/BrlAPI/help.txt rename to Drivers/Braille/BrlAPI/help.txt index 3400be26f72779bd0eb417c71e7d0a9fc6f041d4..b17441ef9eb08c6c6b67a212e09c4ed49ebd6e82 100644 --- a/BrailleDrivers/BrlAPI/help.txt +++ b/Drivers/Braille/BrlAPI/help.txt @@ -1,3 +1,3 @@ -Help screen for the BrlAPI driver. +Help for BrlAPI Driver No help available for this driver. diff --git a/BrailleDrivers/BrlAPI/reldeps.mk b/Drivers/Braille/BrlAPI/reldeps.mk similarity index 100% rename from BrailleDrivers/BrlAPI/reldeps.mk rename to Drivers/Braille/BrlAPI/reldeps.mk diff --git a/BrailleDrivers/CombiBraille/Makefile.in b/Drivers/Braille/CombiBraille/Makefile.in similarity index 81% rename from BrailleDrivers/CombiBraille/Makefile.in rename to Drivers/Braille/CombiBraille/Makefile.in index 9b260705d29275b314d834cf14034885bce2b882..fa27aac06914c71b288c095547c8d79b53abba8f 100644 --- a/BrailleDrivers/CombiBraille/Makefile.in +++ b/Drivers/Braille/CombiBraille/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/CombiBraille/README b/Drivers/Braille/CombiBraille/README similarity index 98% rename from BrailleDrivers/CombiBraille/README rename to Drivers/Braille/CombiBraille/README index 0410d416c4c95383c9b74866e62f6f2afcacc4af..41736f1579534df5f3f2439df8eff08b348f31d8 100644 --- a/BrailleDrivers/CombiBraille/README +++ b/Drivers/Braille/CombiBraille/README @@ -4,7 +4,7 @@ Copyright (C) 1995, 1996 by Nikhil Nair. This driver is part of BRLTTY, and as such it is placed under the terms of the GNU General Public License, as published by the Free -Software Foundation. Please see the file COPYING in the top-level +Software Foundation. Please see the file LICENSE-GPL in the top-level directory for details. This driver was maintained by Nikhil Nair . diff --git a/BrailleDrivers/CombiBraille/braille.c b/Drivers/Braille/CombiBraille/braille.c similarity index 87% rename from BrailleDrivers/CombiBraille/braille.c rename to Drivers/Braille/CombiBraille/braille.c index ee1a1ad275367648871f12e439e8a4c00c5f30f2..40b73d94d45a2604e55150cd368df993d852d731 100644 --- a/BrailleDrivers/CombiBraille/braille.c +++ b/Drivers/Braille/CombiBraille/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -28,7 +29,7 @@ #include "misc.h" -#define BRLSTAT ST_TiemanStyle +#define BRL_STATUS_FIELDS sfCursorAndWindowColumn, sfCursorAndWindowRow, sfStateDots #define BRL_HAVE_STATUS_CELLS #include "brl_driver.h" #include "braille.h" @@ -111,15 +112,16 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) if (!serialSetFlowControl(CB_serialDevice, SERIAL_FLOW_HARDWARE)) goto failure; - brl->y = BRLROWS; - if ((brl->x = brl_cols = BRLCOLS(id)) == -1) - goto failure; + brl->textColumns = brl_cols = BRLCOLS(id); + brl->textRows = BRLROWS; + brl->statusColumns = 5; + brl->statusRows = 1; /* Allocate space for buffers */ - prevdata = mallocWrapper (brl->x * brl->y); + prevdata = mallocWrapper (brl->textColumns * brl->textRows); /* rawdata has to have room for the pre- and post-data sequences, * the status cells, and escaped 0x1b's: */ - rawdata = mallocWrapper (20 + brl->x * brl->y * 2); + rawdata = mallocWrapper (20 + brl->textColumns * brl->textRows * 2); return 1; failure: @@ -147,8 +149,8 @@ brl_destruct (BrailleDisplay *brl) rawlen += pre_data[0]; } /* Clear the five status cells and the main display: */ - memset (rawdata + rawlen, 0, 5 + brl->x * brl->y); - rawlen += 5 + brl->x * brl->y; + memset (rawdata + rawlen, 0, 5 + brl->textColumns * brl->textRows); + rawlen += 5 + brl->textColumns * brl->textRows; if (post_data[0]) { memcpy (rawdata + rawlen, post_data + 1, post_data[0]); @@ -189,14 +191,14 @@ brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) unsigned char *post_data = (unsigned char *)POST_DATA; /* Only refresh display if the data has changed: */ - if (memcmp (brl->buffer, prevdata, brl->x * brl->y) || \ + if (memcmp (brl->buffer, prevdata, brl->textColumns * brl->textRows) || \ memcmp (status, oldstatus, 5)) { /* Save new Braille data: */ - memcpy (prevdata, brl->buffer, brl->x * brl->y); + memcpy (prevdata, brl->buffer, brl->textColumns * brl->textRows); /* Dot mapping from standard to CombiBraille: */ - for (i = 0; i < brl->x * brl->y; brl->buffer[i] = outputTable[brl->buffer[i]], \ + for (i = 0; i < brl->textColumns * brl->textRows; brl->buffer[i] = outputTable[brl->buffer[i]], \ i++); rawlen = 0; @@ -211,7 +213,7 @@ brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) if (status[i] == 0x1b) /* CombiBraille hack */ rawdata[rawlen++] = 0x1b; } - for (i = 0; i < brl->x * brl->y; i++) + for (i = 0; i < brl->textColumns * brl->textRows; i++) { rawdata[rawlen++] = brl->buffer[i]; if (brl->buffer[i] == 0x1b) /* CombiBraille hack */ diff --git a/BrailleDrivers/CombiBraille/braille.h b/Drivers/Braille/CombiBraille/braille.h similarity index 91% rename from BrailleDrivers/CombiBraille/braille.h rename to Drivers/Braille/CombiBraille/braille.h index 5285d1b76c21d8727963a5a4b05ddf12c70262bb..b5c14d309854837b8f5b8ae7e47f82d9a3fab9b7 100644 --- a/BrailleDrivers/CombiBraille/braille.h +++ b/Drivers/Braille/CombiBraille/braille.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/CombiBraille/cmdtrans.h b/Drivers/Braille/CombiBraille/cmdtrans.h similarity index 98% rename from BrailleDrivers/CombiBraille/cmdtrans.h rename to Drivers/Braille/CombiBraille/cmdtrans.h index 9cf8c816dc5d27ebaa85a7369a19ea8b57bb92f0..ca03c70ce285947246619f87b3b8febbad4620d2 100644 --- a/BrailleDrivers/CombiBraille/cmdtrans.h +++ b/Drivers/Braille/CombiBraille/cmdtrans.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/CombiBraille/help.txt b/Drivers/Braille/CombiBraille/help.txt similarity index 97% rename from BrailleDrivers/CombiBraille/help.txt rename to Drivers/Braille/CombiBraille/help.txt index 25d8a88cfdb108170c546667da2d9e04c793ce3b..fb092f8ae4c3cece5b8a24e20bc60486da8fc093 100644 --- a/BrailleDrivers/CombiBraille/help.txt +++ b/Drivers/Braille/CombiBraille/help.txt @@ -1,4 +1,4 @@ -BRLTTY Help Screen (CombiBraille) +Help for All Models Movement keys: 321 (BC) top of screen diff --git a/BrailleDrivers/CombiBraille/reldeps.mk b/Drivers/Braille/CombiBraille/reldeps.mk similarity index 100% rename from BrailleDrivers/CombiBraille/reldeps.mk rename to Drivers/Braille/CombiBraille/reldeps.mk diff --git a/BrailleDrivers/EcoBraille/LEEME b/Drivers/Braille/EcoBraille/LEEME similarity index 94% rename from BrailleDrivers/EcoBraille/LEEME rename to Drivers/Braille/EcoBraille/LEEME index fbaa24b5cc641f34b855be370ba16cbea5adb9a9..d345f21cba578bf0e4e8f8a8c4b3a0341e7a316e 100644 --- a/BrailleDrivers/EcoBraille/LEEME +++ b/Drivers/Braille/EcoBraille/LEEME @@ -7,7 +7,7 @@ Licencia ======== Este driver tiene la licencia GNU publica. Este software es gratuito. -Lease el fichero '../COPYING' para mas detalles de la licencia. +Lease el fichero 'LICENSE-GPL' para mas detalles de la licencia. Mandeme sus comentarios o errores encontrados al e-mail ofa@once.es puede hacerlo en castellano, catalan o en ingles. diff --git a/BrailleDrivers/EcoBraille/Makefile.in b/Drivers/Braille/EcoBraille/Makefile.in similarity index 82% rename from BrailleDrivers/EcoBraille/Makefile.in rename to Drivers/Braille/EcoBraille/Makefile.in index b5cf2a9498e98506577926daae36226779043026..15aeedc738c452f79989a972f2342ab2fd586e1c 100644 --- a/BrailleDrivers/EcoBraille/Makefile.in +++ b/Drivers/Braille/EcoBraille/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/EcoBraille/README b/Drivers/Braille/EcoBraille/README similarity index 95% rename from BrailleDrivers/EcoBraille/README rename to Drivers/Braille/EcoBraille/README index b848dc3c29a7c783df0d9228d56200e7f917f618..c24d7dcddee6744d21a3ea366c78e8852836b54b 100644 --- a/BrailleDrivers/EcoBraille/README +++ b/Drivers/Braille/EcoBraille/README @@ -7,7 +7,7 @@ Copyright ========= This driver is copyrighted under the GNU Public License. It is free -software. See the file '../COPYING' for more details. Feel free to send +software. See the file 'LICENSE-GPL' for more details. Feel free to send your comments and to report bugs to me at ofa@once.es Can you write me in Spanish, catalonian or english. diff --git a/BrailleDrivers/EcoBraille/braille.c b/Drivers/Braille/EcoBraille/braille.c similarity index 95% rename from BrailleDrivers/EcoBraille/braille.c rename to Drivers/Braille/EcoBraille/braille.c index 8f084e7faf654257e144c884ccc26bfcb89ac9ae..233db2e9c0237211434476f0bae9f5e238bceaf2 100644 --- a/BrailleDrivers/EcoBraille/braille.c +++ b/Drivers/Braille/EcoBraille/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -17,7 +18,7 @@ /* EcoBraille/braille.c - Braille display library for ECO Braille series * Copyright (C) 1999 by Oscar Fernandez - * See the GNU Public license for details in the ../COPYING file + * See the GNU Public license for details in the LICENSE-GPL file * * For debuging define DEBUG variable */ @@ -229,11 +230,11 @@ static int brl_construct(BrailleDisplay *brl, char **parameters, const char *dev /* Set model params */ model = &Models[ModelID]; brl->helpPage = ModelID; - brl->x = model->Cols; /* initialise size of main display */ - brl->y = BRLROWS; /* ever is 1 in this type of braille lines */ + brl->textColumns = model->Cols; /* initialise size of main display */ + brl->textRows = BRLROWS; /* ever is 1 in this type of braille lines */ /* Need to calculate the size; Cols + Status + 1 (space between) */ - BrailleSize = brl->x + model->NbStCells + 1; + BrailleSize = brl->textColumns + model->NbStCells + 1; /* Allocate space for buffers */ rawdata = malloc(BrailleSize); /* Phisical size */ @@ -280,7 +281,7 @@ static int brl_writeWindow(BrailleDisplay *brl, const wchar_t *text) i++; /* step a phisical space with main cells */ /* Make main info to rawdata */ - for(j=0; j < brl->x; j++) + for(j=0; j < brl->textColumns; j++) rawdata[i++] = outputTable[brl->buffer[j]]; /* Write to Braille Display */ diff --git a/BrailleDrivers/EcoBraille/braille.h b/Drivers/Braille/EcoBraille/braille.h similarity index 87% rename from BrailleDrivers/EcoBraille/braille.h rename to Drivers/Braille/EcoBraille/braille.h index e79147424b47598a78e465c6c6c9961f57db5316..66346531d2ef43d1cecc394ff719ef85b8cffa21 100644 --- a/BrailleDrivers/EcoBraille/braille.h +++ b/Drivers/Braille/EcoBraille/braille.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/EcoBraille/help-es.txt b/Drivers/Braille/EcoBraille/help-es.txt similarity index 91% rename from BrailleDrivers/EcoBraille/help-es.txt rename to Drivers/Braille/EcoBraille/help-es.txt index b834f111de80be78145c5bb6b739e85438df2d93..11d18bee5389e430b701b6a201c6378b9eeb53d1 100644 --- a/BrailleDrivers/EcoBraille/help-es.txt +++ b/Drivers/Braille/EcoBraille/help-es.txt @@ -1,4 +1,4 @@ -Ayuda de BRLTTY (EcoBraille) +Help for All Models (Spanish) Teclado frontal de izquierda a derecha ARRIBA IZQUIERDA CENTRO DERECHA ABAJO @@ -22,4 +22,4 @@ Sensor de estado 4 coge la informacion de estado (Eco40 y Eco80) F2 sincroniza cursores F5 cursor visible F8 cambia modo 6 puntos -SHIFT + F8 cambia el seguimiento de cursor \ No newline at end of file +SHIFT + F8 cambia el seguimiento de cursor diff --git a/BrailleDrivers/EcoBraille/help.txt b/Drivers/Braille/EcoBraille/help.txt similarity index 96% rename from BrailleDrivers/EcoBraille/help.txt rename to Drivers/Braille/EcoBraille/help.txt index 83d482cd6ccd38466443d6786c3977a7731eef2d..01ed52e8e0e557e26e4d0ecd56c739d9e8f20444 100644 --- a/BrailleDrivers/EcoBraille/help.txt +++ b/Drivers/Braille/EcoBraille/help.txt @@ -1,4 +1,4 @@ -BRLTTY Help Screen (EcoBraille) +Help for All Models (English) From left to right, front keys are: UP LEFT CLICK RIGHT DOWN diff --git a/BrailleDrivers/EcoBraille/reldeps.mk b/Drivers/Braille/EcoBraille/reldeps.mk similarity index 100% rename from BrailleDrivers/EcoBraille/reldeps.mk rename to Drivers/Braille/EcoBraille/reldeps.mk diff --git a/BrailleDrivers/EuroBraille/Makefile.in b/Drivers/Braille/EuroBraille/Makefile.in similarity index 86% rename from BrailleDrivers/EuroBraille/Makefile.in rename to Drivers/Braille/EuroBraille/Makefile.in index 6b50d5c9513b4e9242581b8751da69f457af04a3..ba4628235088dc07ffc14153a1dfb3d53f769d10 100644 --- a/BrailleDrivers/EuroBraille/Makefile.in +++ b/Drivers/Braille/EuroBraille/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/EuroBraille/README b/Drivers/Braille/EuroBraille/README similarity index 96% rename from BrailleDrivers/EuroBraille/README rename to Drivers/Braille/EuroBraille/README index 71279eb1725a907a8baa02b69fb89c8a682da3fc..a32ab2756add93fa5e8be59c98868d2200eef0f8 100644 --- a/BrailleDrivers/EuroBraille/README +++ b/Drivers/Braille/EuroBraille/README @@ -3,7 +3,7 @@ This is the EuroBraille family driver for BRLTTY, version 2.0.0 Initial writing by Nicolas Pitre , Copyright 1997-1998. This code is copyrighted under the GNU Public License. See the file -COPYING included with BRLTTY for details. +LICENSE-GPL included with BRLTTY for details. This driver is currently maintained by * Yannick Plassiard @@ -18,7 +18,7 @@ on the following hardware: - an Azerbraille 40 and 80 display; - a Clio-PupiBraille display (80 cells) - an IRIS display (Iris-S20, Iris-S32 and Iris-40). - - An ESYS display (bluetooth only). + - An ESYS display. - The driver is also tested with a NoteBraille display in order to maintain backward compatibility. @@ -29,7 +29,7 @@ Version 2.0.0: - Complete rewrite of the whole driver to support new EsysIris protocol (serial and ethernet connection supported). - Support Iris (firmware 1.71 and later) - - Support ESYS 12/40 display (beta, bluetooth only). + - Support ESYS 12/40 display. - Ability to autodetect which protocol to use. Version 1.3.4: diff --git a/BrailleDrivers/EuroBraille/eu_bluetooth.c b/Drivers/Braille/EuroBraille/eu_bluetooth.c similarity index 85% rename from BrailleDrivers/EuroBraille/eu_bluetooth.c rename to Drivers/Braille/EuroBraille/eu_bluetooth.c index 2a7c85b7db9ec86992634acc0da575b8c6ceba20..3c40cbb22c4d4d713c66a46369f3a25ccf315033 100644 --- a/BrailleDrivers/EuroBraille/eu_bluetooth.c +++ b/Drivers/Braille/EuroBraille/eu_bluetooth.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -47,8 +48,7 @@ eubrl_bluetoothInit (BrailleDisplay *brl, char **parameters, const char *device) ssize_t eubrl_bluetoothRead (BrailleDisplay *brl, void *buffer, size_t length) { - const int timeout = 100; - return readData(bluetoothConnection, buffer, length, 0, timeout); + return readData(bluetoothConnection, buffer, length, 0, 10); } ssize_t @@ -63,8 +63,8 @@ eubrl_bluetoothWrite (BrailleDisplay *brl, const void *buf, size_t length) } else { - LogPrint(LOG_WARNING, "Trunccated bluetooth write: %d < %d", - count, length); + LogPrint(LOG_WARNING, "Trunccated bluetooth write: %d < %u", + (int)count, (unsigned int)length); } } return count; diff --git a/BrailleDrivers/EuroBraille/eu_braille.c b/Drivers/Braille/EuroBraille/eu_braille.c similarity index 95% rename from BrailleDrivers/EuroBraille/eu_braille.c rename to Drivers/Braille/EuroBraille/eu_braille.c index bc35f5b204c23676a210d4dfbc1b2a134130b249..4d2f3a9c23c2dcf03590c7c3a6ab1fdd435afe17 100644 --- a/BrailleDrivers/EuroBraille/eu_braille.c +++ b/Drivers/Braille/EuroBraille/eu_braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -68,7 +69,7 @@ static int brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { protocolp = NULL; - brl->x = 0; + brl->textColumns = 0; iop = NULL; { static const DotsTable dots = {0X01, 0X02, 0X04, 0X08, 0X10, 0X20, 0X40, 0X80}; @@ -186,7 +187,7 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) return (0); } } - LogPrint(LOG_INFO, "EuroBraille driver initialized: %d display length connected", brl->x); + LogPrint(LOG_INFO, "EuroBraille driver initialized: %d display length connected", brl->textColumns); brl->helpPage = 0; return (1); } diff --git a/BrailleDrivers/EuroBraille/eu_braille.h b/Drivers/Braille/EuroBraille/eu_braille.h similarity index 91% rename from BrailleDrivers/EuroBraille/eu_braille.h rename to Drivers/Braille/EuroBraille/eu_braille.h index 3c57aebaec1e464ce1bb9fd576b0eed4e722ffb8..6685a46a368532b1f2b65579905c90f31273f86e 100644 --- a/BrailleDrivers/EuroBraille/eu_braille.h +++ b/Drivers/Braille/EuroBraille/eu_braille.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/EuroBraille/eu_clio.c b/Drivers/Braille/EuroBraille/eu_clio.c similarity index 94% rename from BrailleDrivers/EuroBraille/eu_clio.c rename to Drivers/Braille/EuroBraille/eu_clio.c index 57ce4114585a832af3ba0bf33d8545c922208cd8..62a1e07388f9de62781815804606a22558da7b42 100644 --- a/BrailleDrivers/EuroBraille/eu_clio.c +++ b/Drivers/Braille/EuroBraille/eu_clio.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -202,12 +203,12 @@ static int clio_handleCommandKey(BrailleDisplay *brl, unsigned int key) if (key == CL_STAR && !flagLevel1) { flagLevel2 = !flagLevel2; - if (flagLevel2) message("Level 2 ...", MSG_NODELAY); + if (flagLevel2) message(NULL, "Level 2 ...", MSG_NODELAY); } else if (key == CL_SHARP && !flagLevel2) { flagLevel1 = !flagLevel1; - if (flagLevel1) message("Level 1 ...", MSG_NODELAY); + if (flagLevel1) message(NULL, "Level 1 ...", MSG_NODELAY); } if (flagLevel1) { @@ -308,7 +309,7 @@ int clio_init(BrailleDisplay *brl, t_eubrl_io *io) brlCols = 0; if (!io) { - LogPrint(LOG_ERR, "eu: Clio : Invalid IO Subsystem driver.\n"); + LogPrint(LOG_ERR, "eu: Clio : Invalid IO Subsystem driver."); return (-1); } memset(brlFirmwareVersion, 0, 21); @@ -321,8 +322,8 @@ int clio_init(BrailleDisplay *brl, t_eubrl_io *io) } if (brlCols > 0) { /* Succesfully identified hardware. */ - brl->y = 1; - brl->x = brlCols; + brl->textRows = 1; + brl->textColumns = brlCols; LogPrint(LOG_INFO, "eu: %s connected.", clioModels[brlModel].modelDesc); return (1); @@ -335,9 +336,9 @@ int clio_reset(BrailleDisplay *brl) static const unsigned char packet[] = {0X02, 'S', 'I'}; LogPrint(LOG_INFO, "eu Clio hardware reset requested"); - if (clio_writePacket(brl, (unsigned char *)packet, 3) == -1) + if (clio_writePacket(brl, packet, sizeof(packet)) == -1) { - LogPrint(LOG_WARNING, "Clio: Failed to send ident request.\n"); + LogPrint(LOG_WARNING, "Clio: Failed to send ident request."); return -1; } return 1; @@ -379,7 +380,7 @@ int clio_keyToCommand(BrailleDisplay *brl, unsigned int key, BRL_DriverCommandCo if (key & EUBRL_BRAILLE_KEY) { - res = protocol_handleBrailleKey(key); + res = protocol_handleBrailleKey(key, ctx); } if (key & EUBRL_ROUTING_KEY) { @@ -396,7 +397,7 @@ int clio_keyToCommand(BrailleDisplay *brl, unsigned int key, BRL_DriverCommandCo void clio_writeWindow(BrailleDisplay *brl) { static char previousBrailleWindow[80]; - int displaySize = brl->x * brl->y; + int displaySize = brl->textColumns * brl->textRows; unsigned char buf[displaySize + 3]; if ( displaySize > sizeof(previousBrailleWindow) ) { @@ -417,7 +418,7 @@ void clio_writeWindow(BrailleDisplay *brl) void clio_writeVisual(BrailleDisplay *brl, const wchar_t *text) { static wchar_t previousVisualDisplay[80]; - int displaySize = brl->x * brl->y; + int displaySize = brl->textColumns * brl->textRows; unsigned char buf[displaySize + 3]; int i; @@ -490,9 +491,9 @@ ssize_t clio_readPacket(BrailleDisplay *brl, void *packet, size_t size) return 0; /* ignoring packets received twice **/ - if ((needsEscape[((unsigned)buffer[end - 1])] != 1 + if ((needsEscape[((unsigned char)buffer[end - 1])] != 1 && buffer[end - 2] == prevPktNbr) - || (needsEscape[((unsigned)buffer[end - 1])] == 1 + || (needsEscape[((unsigned char)buffer[end - 1])] == 1 && buffer[end - 3] == prevPktNbr)) { memmove(buffer, buffer + end + 1, pos - framelen); @@ -500,14 +501,14 @@ ssize_t clio_readPacket(BrailleDisplay *brl, void *packet, size_t size) return 0; } /* Updating pprevPktNbr */ - if (needsEscape[((unsigned)buffer[end - 1])] != 1) + if (needsEscape[((unsigned char)buffer[end - 1])] != 1) prevPktNbr = buffer[end - 2]; else prevPktNbr = buffer[end - 3]; if ((tmpres = malloc(size + 1)) == NULL) { - LogPrint(LOG_ERR, "clio: Failed to allocate memory.\n"); + LogPrint(LOG_ERR, "clio: Failed to allocate memory."); return (-1); } if (start != -1 && end != -1 diff --git a/BrailleDrivers/EuroBraille/eu_esysiris.c b/Drivers/Braille/EuroBraille/eu_esysiris.c similarity index 72% rename from BrailleDrivers/EuroBraille/eu_esysiris.c rename to Drivers/Braille/EuroBraille/eu_esysiris.c index 2b953139d9413b9d9215ca3b312dae7f3f491b17..6dd88817889d38aa44a7f3b4ea30ca81ab42a4c0 100644 --- a/BrailleDrivers/EuroBraille/eu_esysiris.c +++ b/Drivers/Braille/EuroBraille/eu_esysiris.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -90,12 +91,12 @@ static int esysiris_handleCommandKey(BrailleDisplay *brl, unsigned int key) if (key == VK_FDB && !flagLevel1) { flagLevel2 = !flagLevel2; - if (flagLevel2) message("Level 2 ...", MSG_NODELAY); + if (flagLevel2) message(NULL, "Level 2 ...", MSG_NODELAY); } else if (key == VK_FGB && !flagLevel2) { flagLevel1 = !flagLevel1; - if (flagLevel1) message("Level 1 ...", MSG_NODELAY); + if (flagLevel1) message(NULL, "Level 1 ...", MSG_NODELAY); } if (flagLevel1) { @@ -156,6 +157,43 @@ static int esysiris_handleCommandKey(BrailleDisplay *brl, unsigned int key) } } } + if (brlType == ESYS_12 || brlType == ESYS_40) + { /** Esys models keys */ + if (key == VK_M1G || key == VK_M2G || key == VK_M3G || key == VK_M4G) res = BRL_CMD_FWINLT; + if (key == VK_M1D || key == VK_M2D || key == VK_M3D || key == VK_M4D) res = BRL_CMD_FWINRT; + if (key == VK_JDG) res = BRL_CMD_FWINLT; + if (key == VK_JDH) res = BRL_CMD_LNUP; + if (key == VK_JDD) res = BRL_CMD_FWINRT; + if (key == VK_JDB) res = BRL_CMD_LNDN; + + if (key == VK_JDM) res = BRL_CMD_HOME; + + if (key == VK_M1M || key == VK_M2M || key == VK_M3M || key == VK_M4M) res = BRL_CMD_FREEZE; + + if (key == VK_JGH) res = BRL_CMD_TOP_LEFT; + if (key == VK_JGB) res = BRL_CMD_BOT_LEFT; + + if (key == (VK_JGD | VK_JDG)) routingMode = BRL_BLK_CUTBEGIN; + if (key == (VK_JGD | VK_JDD)) routingMode = BRL_BLK_CUTLINE; + if (key == (VK_JGD | VK_JDM)) res = BRL_CMD_PASTE; + + if (key == (VK_JGG | VK_JDG)) res = BRL_CMD_SAY_SOFTER; + if (key == (VK_JGG | VK_JDH)) res = BRL_CMD_SAY_ABOVE; + if (key == (VK_JGG | VK_JDD)) res = BRL_CMD_SAY_LOUDER; + if (key == (VK_JGG | VK_JDB)) res = BRL_CMD_SAY_BELOW; + if (key == (VK_JGG | VK_JDM)) res = BRL_CMD_SAY_LINE; + if ((key == (VK_JGG | VK_M1G)) || (key == (VK_JGG | VK_M2G)) || (key == (VK_JGG | VK_M3G)) || (key == (VK_JGG | VK_M4G))) res = BRL_CMD_SAY_SLOWER; + if ((key == (VK_JGG | VK_M1D)) || (key == (VK_JGG | VK_M2D)) || (key == (VK_JGG | VK_M3D)) || (key == (VK_JGG | VK_M4D))) res = BRL_CMD_SAY_FASTER; + if ((key == (VK_JGG | VK_M1M)) || (key == (VK_JGG | VK_M2M)) || (key == (VK_JGG | VK_M3M)) || (key == (VK_JGG | VK_M4M))) res = BRL_CMD_MUTE; + + if ((key == (VK_JGD | VK_M1G)) || (key == (VK_JGD | VK_M2G)) || (key == (VK_JGD | VK_M3G)) || (key == (VK_JGD | VK_M4G))) res = BRL_CMD_LNBEG; + if ((key == (VK_JGD | VK_M1D)) || (key == (VK_JGD | VK_M2D)) || (key == (VK_JGD | VK_M3D)) || (key == (VK_JGD | VK_M4D))) res = BRL_CMD_LNEND; + + if (key == (VK_JGD | VK_JDH)) res = BRL_CMD_LEARN; + if (key == (VK_JGD | VK_JDB)) res = BRL_CMD_HELP; + if (key == (VK_JGD | VK_M1M)) res = BRL_CMD_PREFMENU; + if (key == (VK_JGD | VK_M4M)) res = BRL_CMD_CSRTRK; + } return res; } @@ -193,10 +231,7 @@ static int esysiris_KeyboardHandling(BrailleDisplay *brl, char *packet) { if (brlType == ESYS_12 || brlType == ESYS_40) { - unsigned char *buf = (unsigned char *)packet; - unsigned int scrolls = buf[1] * 1024 + buf[2] * 512 + buf[3] * 256 + buf[4]; - LogPrint(LOG_DEBUG, "eu: EsysIris: Scrolls: %x", scrolls); - + key = (packet[1] << 24) + (packet[2] << 16) + (packet[3] << 8) + packet[4]; } else { @@ -287,7 +322,7 @@ int esysiris_init(BrailleDisplay *brl, t_eubrl_io *io) } memset(brlFirmwareVersion, 0, 21); char outPacket[2] = {'S', 'I'}; - int leftTries = 2; + int leftTries = 24; iop = io; while (leftTries-- && brlCols == 0) @@ -298,13 +333,18 @@ int esysiris_init(BrailleDisplay *brl, t_eubrl_io *io) leftTries = 0; continue; } - approximateDelay(500); - esysiris_readCommand(brl, BRL_CTX_SCREEN); + int i=60; + while(i-- && brlCols==0) + { + esysiris_readCommand(brl, BRL_CTX_SCREEN); + approximateDelay(10); + } + approximateDelay(100); } if (brlCols > 0) { /* Succesfully identified hardware. */ - brl->y = 1; - brl->x = brlCols; + brl->textRows = 1; + brl->textColumns = brlCols; LogPrint(LOG_INFO, "eu: %s connected.", modelTable[brlType]); return (1); @@ -324,7 +364,7 @@ unsigned int esysiris_readKey(BrailleDisplay *brl) static unsigned char inPacket[2048]; unsigned int res = 0; - while (esysiris_readPacket(brl, inPacket, 2048) == 1) + if (esysiris_readPacket(brl, inPacket, 2048) == 1) { /* We got a packet */ switch (inPacket[3]) { @@ -358,7 +398,7 @@ int esysiris_keyToCommand(BrailleDisplay *brl, unsigned int key, BRL_DriverComma if (key & EUBRL_BRAILLE_KEY) { - res = protocol_handleBrailleKey(key); + res = protocol_handleBrailleKey(key, ctx); } if (key & EUBRL_ROUTING_KEY) { @@ -367,7 +407,8 @@ int esysiris_keyToCommand(BrailleDisplay *brl, unsigned int key, BRL_DriverComma } if (key & EUBRL_COMMAND_KEY) { - res = esysiris_handleCommandKey(brl, key & 0x00000fff); + if (brlType == ESYS_12 || brlType == ESYS_40) res = esysiris_handleCommandKey(brl, key & 0x7fffffff); + else res = esysiris_handleCommandKey(brl, key & 0x00000fff); } if (key & EUBRL_PC_KEY) { @@ -379,7 +420,7 @@ int esysiris_keyToCommand(BrailleDisplay *brl, unsigned int key, BRL_DriverComma void esysiris_writeWindow(BrailleDisplay *brl) { static unsigned char previousBrailleWindow[80]; - int displaySize = brl->x * brl->y; + int displaySize = brl->textColumns * brl->textRows; unsigned char buf[displaySize + 2]; if (displaySize > sizeof(previousBrailleWindow)) { @@ -406,47 +447,68 @@ void esysiris_writeVisual(BrailleDisplay *brl, const wchar_t *text) return; } - ssize_t esysiris_readPacket(BrailleDisplay *brl, void *packet, size_t size) { static char buffer[READ_BUFFER_LENGTH]; static int pos = 0; - int ret, i, start, end, framelen = 0; + + int i; + int end=-1; int start=-1; + int framelen = 0; + int ret = 0; + int bytesRead = 0; if (!iop || !packet || size < 4) return (-1); - ret = iop->read(brl, buffer + pos, READ_BUFFER_LENGTH - pos); - if (ret < 0) + + while( ((READ_BUFFER_LENGTH - pos)>0) ? ((ret = iop->read(brl, buffer + pos, READ_BUFFER_LENGTH - pos))>0) : 0) +// if ((READ_BUFFER_LENGTH - pos)>0) ret = iop->read(brl, buffer + pos, READ_BUFFER_LENGTH - pos); + { + bytesRead+=ret; + pos+=ret; + } + + + if (ret < 0 && pos==0) return (-1); - for (i = 0, start = -1, end = -1; i < pos + ret && (start == -1 || end == -1); i++) + + if(pos==0) { + return (0); + } + + for (i = 0; i < pos && start==-1; i++) { - if (buffer[i] == STX && start == -1) - { - start = i; - framelen = 0; - } - if (start > -1 && start + 2 < i) - { /* Catch our packet length */ - framelen = buffer[start + 1] * 256 + buffer[start + 2]; - } - if (start != -1 && buffer[i] == ETX) - if (i == (start + framelen + 1)) - { - end = i; - } + if (buffer[i] == STX) start = i; + } + if (start!=-1 && start+2 framelen + 2) + + if (start != -1 && end != -1 && size > framelen + 2) { memcpy(packet, buffer + start, framelen + 2); memmove(buffer, buffer + end + 1, pos - framelen - 2); pos -= (framelen + 2); return (1); } + else if(pos==bytesRead) + { + pos=0; + return (0); + } + else if(pos>bytesRead) + { + memmove(buffer,buffer+(pos-bytesRead),bytesRead); + pos = bytesRead; + return (0); + } return (0); } + ssize_t esysiris_writePacket(BrailleDisplay *brl, const void *packet, size_t size) { int packetSize = size + 2; diff --git a/BrailleDrivers/EuroBraille/eu_io.c b/Drivers/Braille/EuroBraille/eu_io.c similarity index 91% rename from BrailleDrivers/EuroBraille/eu_io.c rename to Drivers/Braille/EuroBraille/eu_io.c index d75e91b97e06a98dd10466c8fa6744fb9af9797d..d45fe9d719e50a8959e46eba6ddedc346f75ec35 100644 --- a/BrailleDrivers/EuroBraille/eu_io.c +++ b/Drivers/Braille/EuroBraille/eu_io.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/EuroBraille/eu_io.h b/Drivers/Braille/EuroBraille/eu_io.h similarity index 92% rename from BrailleDrivers/EuroBraille/eu_io.h rename to Drivers/Braille/EuroBraille/eu_io.h index 2f06f017e2cc2936edda5396d5b219bff6514e68..0d774197c93f27f1737df6e3f720ef63a25e49c0 100644 --- a/BrailleDrivers/EuroBraille/eu_io.h +++ b/Drivers/Braille/EuroBraille/eu_io.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/EuroBraille/eu_keys.h b/Drivers/Braille/EuroBraille/eu_keys.h similarity index 76% rename from BrailleDrivers/EuroBraille/eu_keys.h rename to Drivers/Braille/EuroBraille/eu_keys.h index 65febc07542d31f0ee23f9b3fe17226d845e491e..267eb9d257c650bc8ba8dbfe2e185fffec38c12e 100644 --- a/BrailleDrivers/EuroBraille/eu_keys.h +++ b/Drivers/Braille/EuroBraille/eu_keys.h @@ -2,19 +2,21 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * * This software is maintained by Dave Mielke . */ + /** EuroBraille/eu_keys.h '- Key defines for all models **/ #ifndef __EU_KEYS_H__ @@ -22,8 +24,8 @@ # define EUBRL_BRAILLE_KEY 0x10000000 # define EUBRL_ROUTING_KEY 0x20000000 -# define EUBRL_COMMAND_KEY 0x40000000 -# define EUBRL_PC_KEY 0x80000000 +# define EUBRL_COMMAND_KEY 0x80000000 +# define EUBRL_PC_KEY 0x40000000 /** IRIS models **/ @@ -57,7 +59,6 @@ #define VK_L23 (VK_L2 | VK_L3) #define VK_L24 (VK_L2 | VK_L4) #define VK_L34 (VK_L3 | VK_L4) - #define VK_L56 (VK_L5 | VK_L6) #define VK_L57 (VK_L5 | VK_L7) #define VK_L58 (VK_L5 | VK_L8) @@ -73,7 +74,6 @@ #define VK_L568 (VK_L5 | VK_L6 | VK_L8) #define VK_L578 (VK_L5 | VK_L7 | VK_L8) #define VK_L678 (VK_L6 | VK_L7 | VK_L8) - #define VK_L1234 (VK_L1 | VK_L2 | VK_L3 | VK_L4) #define VK_L5678 (VK_L5 | VK_L6 | VK_L7 | VK_L8) @@ -83,6 +83,29 @@ #define VK_FGH (VK_FG | VK_FH) #define VK_FBH (VK_FB | VK_FH) +/** Esys Model keys **/ +#define VK_JGG 0x00080000 +#define VK_JGH 0x00010000 +#define VK_JGD 0x00040000 +#define VK_JGB 0x00020000 +#define VK_JDG 0x08000000 +#define VK_JDH 0x01000000 +#define VK_JDD 0x04000000 +#define VK_JDB 0x02000000 +#define VK_JDM 0x10000000 +#define VK_M1G 0x000000002 +#define VK_M1D 0x000000001 +#define VK_M1M 0x000000003 +#define VK_M2G 0x000000002 +#define VK_M2D 0x000000001 +#define VK_M2M 0x000000030 +#define VK_M3G 0x000000002 +#define VK_M3D 0x000000001 +#define VK_M3M 0x0000000c0 +#define VK_M4G 0x000000002 +#define VK_M4D 0x000000001 +#define VK_M4M 0x00000000c + /* Old protocol keys : clio/scriba/iris <= 1.70 */ #define CL_NONE 0x0000 # define CL_1 '1' @@ -116,6 +139,6 @@ # define CL_FH '2' -/** Esys Model keys **/ + #endif /* __EU_KEYS_H__ */ diff --git a/BrailleDrivers/EuroBraille/eu_net.c b/Drivers/Braille/EuroBraille/eu_net.c similarity index 97% rename from BrailleDrivers/EuroBraille/eu_net.c rename to Drivers/Braille/EuroBraille/eu_net.c index e510bb312d19068de374fed0bb558933baf3f698..0c0fa25b743b965e98da0efe33bf938507915d01 100644 --- a/BrailleDrivers/EuroBraille/eu_net.c +++ b/Drivers/Braille/EuroBraille/eu_net.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/EuroBraille/eu_protocol.c b/Drivers/Braille/EuroBraille/eu_protocol.c similarity index 89% rename from BrailleDrivers/EuroBraille/eu_protocol.c rename to Drivers/Braille/EuroBraille/eu_protocol.c index 75450840293d1caaaaba80c9458cd187962d7472..715c5953cb3c474675ab31ca9b674d2c273818cb 100644 --- a/BrailleDrivers/EuroBraille/eu_protocol.c +++ b/Drivers/Braille/EuroBraille/eu_protocol.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -57,12 +58,19 @@ t_eubrl_protocol clioProtocol = { /* ** Handles a braille key : converts it to a BRLTTY Command */ -unsigned int protocol_handleBrailleKey(unsigned int key) +unsigned int protocol_handleBrailleKey(unsigned int key, BRL_DriverCommandContext ctx) { unsigned int res = EOF; unsigned int dots = key & 0x000003ff; static char altFlag = 0, controlFlag = 0, shiftFlag = 0; + if ((ctx == BRL_CTX_CHORDS) && !(dots & 0X100)) + { + res = BRL_BLK_PASSDOTS | (dots & 0XFF); + if (dots & 0X200) res |= BRL_DOTC; + return res; + } + switch (dots) { /** Alt, Control, and shift handling **/ @@ -87,7 +95,7 @@ unsigned int protocol_handleBrailleKey(unsigned int key) /** Space, backspace and enter handling */ case 0x200: - res = BRL_BLK_PASSCHAR | ' '; + res = BRL_BLK_PASSDOTS; break; case 0x100: res = BRL_BLK_PASSKEY + BRL_KEY_BACKSPACE; @@ -126,7 +134,7 @@ unsigned int protocol_handleBrailleKey(unsigned int key) case 0x107: res = BRL_BLK_PASSKEY + BRL_KEY_FUNCTION + 11; break; default: - res = BRL_BLK_PASSCHAR | untextTable[dots]; + if (!(dots & ~0XFF)) res = BRL_BLK_PASSDOTS | dots; break; } if (res != EOF) diff --git a/BrailleDrivers/EuroBraille/eu_protocol.h b/Drivers/Braille/EuroBraille/eu_protocol.h similarity index 92% rename from BrailleDrivers/EuroBraille/eu_protocol.h rename to Drivers/Braille/EuroBraille/eu_protocol.h index a8bda1be2677434180dc1fd7d8382443b0d2c4d6..4c4e266313794d0d533cc42a3d1278446747a4f4 100644 --- a/BrailleDrivers/EuroBraille/eu_protocol.h +++ b/Drivers/Braille/EuroBraille/eu_protocol.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -96,5 +97,5 @@ void esysiris_writeVisual(BrailleDisplay *brl, const wchar_t *text); ssize_t esysiris_readPacket(BrailleDisplay *brl, void *packet, size_t size); ssize_t esysiris_writePacket(BrailleDisplay *brl, const void *packet, size_t size); -unsigned int protocol_handleBrailleKey(unsigned int key); +unsigned int protocol_handleBrailleKey(unsigned int key, BRL_DriverCommandContext ctx); #endif /* __EU_PROTOCOL_H__ */ diff --git a/BrailleDrivers/EuroBraille/eu_serial.c b/Drivers/Braille/EuroBraille/eu_serial.c similarity index 85% rename from BrailleDrivers/EuroBraille/eu_serial.c rename to Drivers/Braille/EuroBraille/eu_serial.c index 32ede70a58c8ad3fb515645d3f5ad319e1b44961..19a7d21d58795b8c503f3ce7fd293a4c8ed946cf 100644 --- a/BrailleDrivers/EuroBraille/eu_serial.c +++ b/Drivers/Braille/EuroBraille/eu_serial.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -57,7 +58,7 @@ eubrl_serialClose (BrailleDisplay *brl) { ssize_t eubrl_serialRead (BrailleDisplay *brl, void *buf, size_t length) { - return serialReadData(serialDevice, buf, length, 0, 0); + return serialReadData(serialDevice, buf, length, 0, 20); } ssize_t diff --git a/BrailleDrivers/EuroBraille/eu_usb.c b/Drivers/Braille/EuroBraille/eu_usb.c similarity index 60% rename from BrailleDrivers/EuroBraille/eu_usb.c rename to Drivers/Braille/EuroBraille/eu_usb.c index fa6188d7febb1b663800ca7da3d471e053cd9e61..035d36359dbed7bce26459d75cbb4f1df2ea5ee5 100644 --- a/BrailleDrivers/EuroBraille/eu_usb.c +++ b/Drivers/Braille/EuroBraille/eu_usb.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -19,12 +20,19 @@ ** USB Specific low-level IO routines. */ +#include + #include "prologue.h" #include +#include "misc.h" + #include "eu_io.h" +#define USB_PACKET_SIZE 64 + + #ifdef ENABLE_USB_SUPPORT #include "io_usb.h" @@ -32,11 +40,18 @@ static UsbChannel *usb = NULL; int eubrl_usbInit (BrailleDisplay *brl, char **parameters, const char *device) { static const UsbChannelDefinition definitions[] = { - { /* ESYS 12/40 */ + { /* ESYS 12/40 (with SD-Card inserted) */ .vendor=0XC251, .product=0X1122, .configuration=1, .interface=0, .alternative=0, - .inputEndpoint=1, .outputEndpoint=1, - .disableAutosuspend=1 + .inputEndpoint=1, .outputEndpoint=0, + .disableAutosuspend=0 + } + , + { /* ESYS 12/40 (with SD-Card not inserted) */ + .vendor=0XC251, .product=0X1124, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=0, + .disableAutosuspend=0 } , { .vendor=0 } @@ -44,7 +59,6 @@ eubrl_usbInit (BrailleDisplay *brl, char **parameters, const char *device) { if ((usb = usbFindChannel(definitions, (void *)device))) { - usbBeginInput(usb->device, usb->definition.inputEndpoint, 8); return 1; } return 0; @@ -64,17 +78,25 @@ eubrl_usbClose (BrailleDisplay *brl) ssize_t eubrl_usbRead (BrailleDisplay *brl, void *buffer, size_t length) { - ssize_t count = usbReapInput(usb->device, usb->definition.inputEndpoint, buffer, length, 0, 0); - if (count == -1) - if (errno == EAGAIN) - count = 0; + ssize_t count=0; + + if(length>=USB_PACKET_SIZE) count = usbReapInput(usb->device, usb->definition.inputEndpoint, buffer, USB_PACKET_SIZE, 0,2); + if(count>0 && countdevice, usb->definition.outputEndpoint, buffer, length, 1000); + if(length>USB_PACKET_SIZE) return(-1); + char packetToSend[USB_PACKET_SIZE]; + memset(packetToSend,0x55,USB_PACKET_SIZE); + memcpy(packetToSend,buffer,length); + return usbHidSetReport(usb->device, usb->definition.interface, 0, packetToSend, USB_PACKET_SIZE, 10); } diff --git a/BrailleDrivers/EuroBraille/help.txt b/Drivers/Braille/EuroBraille/help.txt similarity index 88% rename from BrailleDrivers/EuroBraille/help.txt rename to Drivers/Braille/EuroBraille/help.txt index 7428a4c578f8592590fe59dd32f9e83c5660cf99..b233a0a89d643dcc273c4992ff9b25dab3ba70b7 100644 --- a/BrailleDrivers/EuroBraille/help.txt +++ b/Drivers/Braille/EuroBraille/help.txt @@ -1,9 +1,10 @@ -BRLTTY help screen for EuroBraille terminals +Help for All Models Driver developped by Yannick PLASSIARD and Olivier BERT To enter in the Learn-Mode press Layer1 key (alpha or # or FG+FB) depending on the model of display you have followed by "J" (for notebraille/clio), -L6 (for scriba) L5 (for iris). +L6 (for scriba) L5 (for iris). For Esys put LeftJoystick in the "Right" +position and RightJoystick in the "Up" position. Using Cut And Paste ------------------- diff --git a/BrailleDrivers/EuroBraille/reldeps.mk b/Drivers/Braille/EuroBraille/reldeps.mk similarity index 98% rename from BrailleDrivers/EuroBraille/reldeps.mk rename to Drivers/Braille/EuroBraille/reldeps.mk index d2e9ed3a691b27abe3b67f357b011103539777aa..75ac35fa018eec46145d5d1bd2f935aa3adb9ec8 100644 --- a/BrailleDrivers/EuroBraille/reldeps.mk +++ b/Drivers/Braille/EuroBraille/reldeps.mk @@ -82,6 +82,7 @@ eu_serial.$O: $(SRC_TOP)Programs/io_serial.h eu_usb.$O: $(SRC_DIR)/eu_usb.c eu_usb.$O: $(BLD_TOP)config.h eu_usb.$O: $(SRC_TOP)prologue.h +eu_usb.$O: $(SRC_TOP)Programs/misc.h eu_usb.$O: $(SRC_DIR)/eu_io.h eu_usb.$O: $(SRC_TOP)Programs/io_defs.h eu_usb.$O: $(SRC_TOP)Programs/io_usb.h diff --git a/BrailleDrivers/FreedomScientific/Makefile.in b/Drivers/Braille/FreedomScientific/Makefile.in similarity index 82% rename from BrailleDrivers/FreedomScientific/Makefile.in rename to Drivers/Braille/FreedomScientific/Makefile.in index 4019a183afcd3b8a9916bbe62458babbc73a0d2a..662b11e0ecd54ac5056758d076c11db2c3a9079e 100644 --- a/BrailleDrivers/FreedomScientific/Makefile.in +++ b/Drivers/Braille/FreedomScientific/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/FreedomScientific/README b/Drivers/Braille/FreedomScientific/README similarity index 70% rename from BrailleDrivers/FreedomScientific/README rename to Drivers/Braille/FreedomScientific/README index 218dc061a78ce3f084fb0fbf094663e1dfeec94b..b1e497e7c090c69ff3aed8e89a669c6e656428e7 100644 --- a/BrailleDrivers/FreedomScientific/README +++ b/Drivers/Braille/FreedomScientific/README @@ -1,4 +1,4 @@ -This directory contains the BRLTTY driver for the Focus and PacMate braille +This directory contains the BRLTTY driver for the Focus and PAC Mate braille displays from Freedom Scientific [http://www.freedomscientific.com]. It has been implemented, and is being maintained, by Dave Mielke . @@ -6,7 +6,7 @@ The serial and USB ports are both supported. The following models are recognized: * Focus: 44, 70, 84 * Focus 2: 40, 80 -* PAC Mate: 20, 40, 80 +* PAC Mate: 20, 40 If an unrecognized model is connected then the driver makes an attempt to determine its size and to provide generic capabilities. @@ -36,14 +36,4 @@ This driver recognizes the following parameters: Parameter Settings debugpackets no, yes - statuscells 0 (none), positive (left), negative (right) - -The "statuscells" parameter specifies how many of the braille cells are to be -reserved for status indicators. Specify 0 (zero) if you'd like all the cells to -be used for text, a positive number if you'd like the status cells to be on the -left, and a negative number if you'd like them to be on the right. The default -is that the Focus displays have 3 status cells on the left, and that the PAC -Mate displays have no status cells. An additional blank cell is reserved to -separate the text and status cells from one another. Use the "Status Style" -selector of the Preferences Menu to choose the format of the data presented via -the status cells. + diff --git a/BrailleDrivers/FreedomScientific/braille.c b/Drivers/Braille/FreedomScientific/braille.c similarity index 91% rename from BrailleDrivers/FreedomScientific/braille.c rename to Drivers/Braille/FreedomScientific/braille.c index 473f72a206d3630a4b9131cb04d2c8a648dfa5f5..0d33226a764d2a7f89da5a36c319d83a9fdbca00 100644 --- a/BrailleDrivers/FreedomScientific/braille.c +++ b/Drivers/Braille/FreedomScientific/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -29,13 +30,11 @@ #include "misc.h" typedef enum { - PARM_DEBUGPACKETS, - PARM_STATUSCELLS + PARM_DEBUGPACKETS } DriverParameter; -#define BRLPARMS "debugpackets", "statuscells" +#define BRLPARMS "debugpackets" #define BRLSTAT ST_AlvaStyle -#define BRL_HAVE_STATUS_CELLS #define BRL_HAVE_PACKET_IO #define BRL_HAVE_FIRMNESS #include "brl_driver.h" @@ -132,7 +131,6 @@ openUsbPort (char **parameters, const char *device) { }; if ((usb = usbFindChannel(definitions, (void *)device))) { - usbBeginInput(usb->device, usb->definition.inputEndpoint, 8); return 1; } return 0; @@ -240,8 +238,7 @@ typedef struct { typedef struct { const char *identifier; const DotsTable *dotsTable; - unsigned char totalCells; - unsigned char statusCells; + unsigned char cellCount; signed char hotkeysRow; } ModelEntry; @@ -249,26 +246,21 @@ static const DotsTable dots12345678 = {0X01, 0X02, 0X04, 0X08, 0X10, 0X20, 0X40, static const DotsTable dots12374568 = {0X01, 0X02, 0X04, 0X10, 0X20, 0X40, 0X08, 0X80}; static const ModelEntry modelTable[] = { - {"Focus 40" , &dots12345678, 40, 0, -1}, - {"Focus 44" , &dots12374568, 44, 3, -1}, - {"Focus 70" , &dots12374568, 70, 3, -1}, - {"Focus 80" , &dots12345678, 80, 0, -1}, - {"Focus 84" , &dots12374568, 84, 3, -1}, - {"pm display 20", &dots12345678, 20, 0, 1}, - {"pm display 40", &dots12345678, 40, 0, 1}, - {"pm display 80", &dots12345678, 80, 0, 1}, - {NULL , NULL , 0, 0, -1} + {"Focus 40" , &dots12345678, 40, -1}, + {"Focus 44" , &dots12374568, 44, -1}, + {"Focus 70" , &dots12374568, 70, -1}, + {"Focus 80" , &dots12345678, 80, -1}, + {"Focus 84" , &dots12374568, 84, -1}, + {"pm display 20", &dots12345678, 20, 1}, + {"pm display 40", &dots12345678, 40, 1}, + {"pm display 80", &dots12345678, 80, 1}, + {NULL , NULL , 0, -1} }; static const ModelEntry *model; static TranslationTable outputTable; static unsigned char outputBuffer[84]; -static unsigned char textOffset; -static unsigned char textCells; -static unsigned char statusOffset; -static unsigned char statusCells; - static int writeFrom; static int writeTo; static int writingFrom; @@ -605,8 +597,8 @@ getPacket (BrailleDisplay *brl, Packet *packet) { switch (packet->header.arg1) { case PKT_ERR_TIMEOUT: { int originalLimit = outputPayloadLimit; - if (outputPayloadLimit > model->totalCells) - outputPayloadLimit = model->totalCells; + if (outputPayloadLimit > model->cellCount) + outputPayloadLimit = model->cellCount; if (outputPayloadLimit > 1) outputPayloadLimit--; if (outputPayloadLimit != originalLimit) @@ -704,7 +696,7 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { memset(&generic, 0, sizeof(generic)); generic.identifier = "Generic"; - generic.totalCells = 20; + generic.cellCount = 20; generic.dotsTable = &dots12345678; generic.hotkeysRow = 1; @@ -733,9 +725,9 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { int size; if (isInteger(&size, ++word)) { static char identifier[sizeof(response.payload.info.model)]; - generic.totalCells = size; + generic.cellCount = size; snprintf(identifier, sizeof(identifier), "%s %d", - generic.identifier, generic.totalCells); + generic.identifier, generic.cellCount); generic.identifier = identifier; } } @@ -744,38 +736,10 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { if (model) { makeOutputTable(model->dotsTable[0], outputTable); - textCells = model->totalCells; - textOffset = statusOffset = 0; - - { - int cells = model->statusCells; - const char *word = parameters[PARM_STATUSCELLS]; - if (word && *word) { - int maximum = textCells / 2; - int minimum = -maximum; - int value; - if (validateInteger(&value, word, &minimum, &maximum)) { - cells = value; - } else { - LogPrint(LOG_WARNING, "%s: %s", "invalid status cells specification", word); - } - } - - if (cells) { - if (cells < 0) { - statusOffset = textCells + cells; - cells = -cells; - } else { - textOffset = cells + 1; - } - textCells -= cells + 1; - } - statusCells = cells; - } - memset(outputBuffer, 0, model->totalCells); + memset(outputBuffer, 0, model->cellCount); writeFrom = 0; - writeTo = model->totalCells - 1; + writeTo = model->cellCount - 1; acknowledgementHandler = NULL; acknowledgementsMissing = 0; @@ -787,9 +751,9 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { activeKeys = 0; wheelCounter = 0; - LogPrint(LOG_INFO, "Detected %s: text=%d, status=%d, firmware=%s", + LogPrint(LOG_INFO, "Detected %s: cells=%d, firmware=%s", model->identifier, - textCells, statusCells, + model->cellCount, response.payload.info.firmware); } break; @@ -807,8 +771,8 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { } if (acknowledged && model) { - brl->x = textCells; - brl->y = 1; + brl->textColumns = model->cellCount; + brl->textRows = 1; return 1; } } @@ -835,19 +799,13 @@ brl_destruct (BrailleDisplay *brl) { static int brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) { - updateCells(brl, brl->buffer, textCells, textOffset); + updateCells(brl, brl->buffer, model->cellCount, 0); writeRequest(brl); return 1; } static int -brl_writeStatus (BrailleDisplay *brl, const unsigned char *status) { - updateCells(brl, status, statusCells, statusOffset); - return 1; -} - -static int -interpretKeys (void) { +interpretKeys (BRL_DriverCommandContext context) { unsigned int keys = realKeys | virtualKeys; int press = (keys & pressedKeys) != keys; int command = BRL_CMD_NOOP; @@ -864,7 +822,10 @@ interpretKeys (void) { } { - if ((keys & DOT_KEYS) && !(keys & ~(DOT_KEYS | SHIFT_KEYS))) { + unsigned int dotKeys = DOT_KEYS; + if (context == BRL_CTX_CHORDS) dotKeys |= KEY_SPACE; + + if ((keys & dotKeys) && !(keys & ~(dotKeys | SHIFT_KEYS))) { command = BRL_BLK_PASSDOTS | flags; if (keys & KEY_DOT1) command |= BRL_DOT1; if (keys & KEY_DOT2) command |= BRL_DOT2; @@ -874,6 +835,7 @@ interpretKeys (void) { if (keys & KEY_DOT6) command |= BRL_DOT6; if (keys & KEY_DOT7) command |= BRL_DOT7; if (keys & KEY_DOT8) command |= BRL_DOT8; + if (keys & KEY_SPACE) command |= BRL_DOTC; if (keys & KEY_SHIFT_LEFT) command |= BRL_FLG_CHAR_UPPER; if (keys & KEY_SHIFT_RIGHT) command |= BRL_FLG_CHAR_CONTROL; return command; @@ -1081,7 +1043,7 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { realKeys = packet.header.arg1 | (packet.header.arg2 << 8) | (packet.header.arg3 << 16); - return interpretKeys(); + return interpretKeys(context); case PKT_BUTTON: { int button = packet.header.arg1; @@ -1099,7 +1061,7 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { static const int keyCount = ARRAY_COUNT(keys); unsigned int key; - button -= (model->totalCells - keyCount) / 2; + button -= (model->cellCount - keyCount) / 2; if (button < 0) { key = KEY_ADVANCE_LEFT; @@ -1114,13 +1076,12 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { } else { virtualKeys &= ~key; } - return interpretKeys(); + return interpretKeys(context); } activeKeys = 0; if (press) { - if ((button >= textOffset) && (button < (textOffset + textCells))) { - button -= textOffset; + if (button < model->cellCount) { switch (row) { default: break; @@ -1181,8 +1142,6 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { break; } if (command != BRL_CMD_NOOP) command += button; - } else if ((button >= statusOffset) && (button < (statusOffset + statusCells))) { - button -= statusOffset; } } diff --git a/BrailleDrivers/FreedomScientific/help0.txt b/Drivers/Braille/FreedomScientific/help0.txt similarity index 98% rename from BrailleDrivers/FreedomScientific/help0.txt rename to Drivers/Braille/FreedomScientific/help0.txt index a279651d02444c1cc2b53b81169b5fd196b5dea4..1db3e7b8312368ab95bb5e3ed415011030763e01 100644 --- a/BrailleDrivers/FreedomScientific/help0.txt +++ b/Drivers/Braille/FreedomScientific/help0.txt @@ -1,4 +1,4 @@ -Help Screen for Freedom Scientific Displays +Help for All Models Whiz Wheel Navigation: Left Wheel Away/Toward: diff --git a/BrailleDrivers/FreedomScientific/reldeps.mk b/Drivers/Braille/FreedomScientific/reldeps.mk similarity index 100% rename from BrailleDrivers/FreedomScientific/reldeps.mk rename to Drivers/Braille/FreedomScientific/reldeps.mk diff --git a/Drivers/Braille/HIMS/Makefile.in b/Drivers/Braille/HIMS/Makefile.in new file mode 100644 index 0000000000000000000000000000000000000000..921f6f2c046bd9125ecdcd70ac6f7628e69c6fca --- /dev/null +++ b/Drivers/Braille/HIMS/Makefile.in @@ -0,0 +1,29 @@ +############################################################################### +# 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-2009 by The BRLTTY Developers. +# +# BRLTTY comes with ABSOLUTELY NO WARRANTY. +# +# This is free software, placed under the terms of the +# GNU General Public License, as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. +# +# Web Page: http://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +DRIVER_CODE = hm +DRIVER_NAME = HIMS +DRIVER_COMMENT = Braille Sense, SyncBraille +DRIVER_VERSION = +DRIVER_DEVELOPERS = Dave Mielke +HELP_DEPS = $(HELP_TEXT) +include $(SRC_TOP)braille.mk + +braille.$O: + $(CC) $(BRL_CFLAGS) -c $(SRC_DIR)/braille.c + diff --git a/BrailleDrivers/BrailleSense/braille.c b/Drivers/Braille/HIMS/braille.c similarity index 54% rename from BrailleDrivers/BrailleSense/braille.c rename to Drivers/Braille/HIMS/braille.c index 48a1018abf2aeb98efbaebb7902f95c5550e385c..d88c8e7e8dae9e45c5b79b6059f61647da000219 100644 --- a/BrailleDrivers/BrailleSense/braille.c +++ b/Drivers/Braille/HIMS/braille.c @@ -2,13 +2,14 @@ * 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-2007 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -24,6 +25,33 @@ #include "brl_driver.h" +typedef enum { + /* braille dot keys */ + KEY_DOT1 = 0X0001, + KEY_DOT2 = 0X0002, + KEY_DOT3 = 0X0004, + KEY_DOT4 = 0X0008, + KEY_DOT5 = 0X0010, + KEY_DOT6 = 0X0020, + KEY_DOT7 = 0X0040, + KEY_DOT8 = 0X0080, + KEY_SPACE = 0X0100, + + /* Braille Sense keys */ + KEY_BS_F1 = 0X0200, + KEY_BS_F2 = 0X0400, + KEY_BS_F3 = 0X0800, + KEY_BS_F4 = 0X1000, + KEY_BS_SL = 0X2000, + KEY_BS_SR = 0X4000, + + /* Sync Braille keys */ + KEY_SB_LU = 0X1000, + KEY_SB_RU = 0X2000, + KEY_SB_RD = 0X4000, + KEY_SB_LD = 0X8000, +} BrailleKeys; + typedef struct { int (*openPort) (const char *device); int (*configurePort) (void); @@ -32,187 +60,11 @@ typedef struct { int (*readBytes) (unsigned char *buffer, int length, int wait); int (*writeBytes) (const unsigned char *buffer, int length); } InputOutputOperations; +static const InputOutputOperations *io; -/* Serial IO */ -#include "io_serial.h" - -static SerialDevice *serialDevice = NULL; -#define SERIAL_BAUD 115200 - -static int -openSerialPort (const char *device) { - if ((serialDevice = serialOpenDevice(device))) return 1; - return 0; -} - -static int -configureSerialPort (void) { - if (!serialRestartDevice(serialDevice, SERIAL_BAUD)) return 0; - return 1; -} - -static int -awaitSerialInput (int milliseconds) { - return serialAwaitInput(serialDevice, milliseconds); -} - -static int -readSerialBytes (unsigned char *buffer, int count, int wait) { - const int timeout = 100; - return serialReadData(serialDevice, buffer, count, - (wait? timeout: 0), timeout); -} - -static int -writeSerialBytes (const unsigned char *buffer, int length) { - return serialWriteData(serialDevice, buffer, length); -} - -static void -closeSerialPort (void) { - if (serialDevice) { - serialCloseDevice(serialDevice); - serialDevice = NULL; - } -} - -static const InputOutputOperations serialOperations = { - openSerialPort, configureSerialPort, closeSerialPort, - awaitSerialInput, readSerialBytes, writeSerialBytes -}; - -#ifdef ENABLE_USB_SUPPORT -/* USB IO */ -#include "io_usb.h" - -static UsbChannel *usbChannel = NULL; -static const UsbSerialOperations *usbSerial = NULL; - -static int -openUsbPort (const char *device) { - static const UsbChannelDefinition definitions[] = { - { /* Braille Sense */ - .vendor=0X045E, .product=0X930A, - .configuration=1, .interface=0, .alternative=0, - .inputEndpoint=1, .outputEndpoint=2 - } - , - { .vendor=0 } - }; - - if ((usbChannel = usbFindChannel(definitions, (void *)device))) { - usbSerial = usbGetSerialOperations(usbChannel->device); - usbBeginInput(usbChannel->device, - usbChannel->definition.inputEndpoint, - 8); - return 1; - } - return 0; -} - -static int -configureUsbPort (void) { - return 1; -} - -static int -awaitUsbInput (int milliseconds) { - return usbAwaitInput(usbChannel->device, - usbChannel->definition.inputEndpoint, - milliseconds); -} - -static int -readUsbBytes (unsigned char *buffer, int length, int wait) { - const int timeout = 100; - int count = usbReapInput(usbChannel->device, - usbChannel->definition.inputEndpoint, - buffer, length, - (wait? timeout: 0), timeout); - if (count != -1) return count; - if (errno == EAGAIN) return 0; - return -1; -} - -static int -writeUsbBytes (const unsigned char *buffer, int length) { - return usbWriteEndpoint(usbChannel->device, - usbChannel->definition.outputEndpoint, - buffer, length, 1000); -} - -static void -closeUsbPort (void) { - if (usbChannel) { - usbCloseChannel(usbChannel); - usbSerial = NULL; - usbChannel = NULL; - } -} - -static const InputOutputOperations usbOperations = { - openUsbPort, configureUsbPort, closeUsbPort, - awaitUsbInput, readUsbBytes, writeUsbBytes -}; -#endif /* ENABLE_USB_SUPPORT */ - -#ifdef ENABLE_BLUETOOTH_SUPPORT -/* Bluetooth IO */ -#include "io_bluetooth.h" -#include "io_misc.h" - -static int bluetoothConnection = -1; - -static int -openBluetoothPort (const char *device) { - return (bluetoothConnection = btOpenConnection(device, 1, 0)) != -1; -} - -static int -configureBluetoothPort (void) { - return 1; -} - -static int -awaitBluetoothInput (int milliseconds) { - return awaitInput(bluetoothConnection, milliseconds); -} - -static int -readBluetoothBytes (unsigned char *buffer, int length, int wait) { - const int timeout = 100; - size_t offset = 0; - return readChunk(bluetoothConnection, - buffer, &offset, length, - (wait? timeout: 0), timeout); -} - -static int -writeBluetoothBytes (const unsigned char *buffer, int length) { - int count = writeData(bluetoothConnection, buffer, length); - if (count != length) { - if (count == -1) { - LogError("Bluetooth write"); - } else { - LogPrint(LOG_WARNING, "Trunccated bluetooth write: %d < %d", count, length); - } - } - return count; -} - -static void -closeBluetoothPort (void) { - if (bluetoothConnection != -1) { - close(bluetoothConnection); - bluetoothConnection = -1; - } -} - -static const InputOutputOperations bluetoothOperations = { - openBluetoothPort, configureBluetoothPort, closeBluetoothPort, - awaitBluetoothInput, readBluetoothBytes, writeBluetoothBytes -}; -#endif /* ENABLE_BLUETOOTH_SUPPORT */ +static const int logInputPackets = 0; +static const int logOutputPackets = 0; +static int charactersPerSecond; typedef enum { IPT_CURSOR = 0X00, @@ -234,34 +86,6 @@ typedef union { } PACKED data; } PACKED InputPacket; -typedef enum { - KEY_DOT1 = 0X0001, - KEY_DOT2 = 0X0002, - KEY_DOT3 = 0X0004, - KEY_DOT4 = 0X0008, - KEY_DOT5 = 0X0010, - KEY_DOT6 = 0X0020, - KEY_DOT7 = 0X0040, - KEY_DOT8 = 0X0080, - KEY_SPACE = 0X0100, - KEY_F1 = 0X0200, - KEY_F2 = 0X0400, - KEY_F3 = 0X0800, - KEY_F4 = 0X1000, - KEY_LEFT = 0X2000, - KEY_RIGHT = 0X4000, -} BrailleKeys; - -static const int logInputPackets = 0; -static const int logOutputPackets = 0; - -static const InputOutputOperations *io = NULL; -static int inputMode; -static int routingCommand; -static int charactersPerSecond; -static TranslationTable outputTable; -static unsigned char previousCells[40]; - static int readByte (unsigned char *byte, int wait) { int count = io->readBytes(byte, 1, wait); @@ -401,9 +225,410 @@ writePacket ( return 1; } +typedef struct { + const char *modelName; + unsigned int helpPage; + int (*getCellCount) (BrailleDisplay *brl, unsigned int *count); + int (*interpretKeys) (BrailleKeys keys, BRL_DriverCommandContext context); +} ProtocolOperations; +static const ProtocolOperations *protocol; + +static int routingCommand; + +static int +getBrailleSenseCellCount (BrailleDisplay *brl, unsigned int *count) { + *count = 32; + return 1; +} + +static int +interpretBrailleSenseKeys (BrailleKeys keys, BRL_DriverCommandContext context) { + { + int command = BRL_BLK_PASSDOTS; + BrailleKeys originalKeys = keys; + +#define KEY(name,bit) if (keys & KEY_##name) { command |= (bit); keys &= ~KEY_##name; } + KEY(DOT1, BRL_DOT1); + KEY(DOT2, BRL_DOT2); + KEY(DOT3, BRL_DOT3); + KEY(DOT4, BRL_DOT4); + KEY(DOT5, BRL_DOT5); + KEY(DOT6, BRL_DOT6); + KEY(DOT7, BRL_DOT7); + KEY(DOT8, BRL_DOT8); + + if (context == BRL_CTX_CHORDS) { + KEY(SPACE, BRL_DOTC); + } else if (keys == originalKeys) { + keys &= ~KEY_SPACE; + } + + if (keys != originalKeys) { + KEY(BS_F2, BRL_FLG_CHAR_UPPER); + KEY(BS_F3, BRL_FLG_CHAR_CONTROL); + + if (!keys) return command; + keys = originalKeys; + } +#undef KEY + } + +#define CMD(keys,cmd) case (keys): return (cmd) +#define BLK(keys,blk) case (keys): routingCommand = (blk); return BRL_CMD_NOOP +#define KEY(keys,key) CMD((keys), BRL_BLK_PASSKEY + (key)) +#define TGL(keys,cmd) \ + CMD((keys) | KEY_DOT7, (cmd) | BRL_FLG_TOGGLE_OFF); \ + CMD((keys) | KEY_DOT8, (cmd) | BRL_FLG_TOGGLE_ON); \ + CMD((keys), (cmd)) + switch (keys) { + CMD(KEY_BS_F4, BRL_CMD_HOME); + CMD(KEY_BS_F1 | KEY_BS_F4, BRL_CMD_BACK); + CMD(KEY_BS_F2 | KEY_BS_F3, BRL_CMD_CSRJMP_VERT); + + CMD(KEY_BS_SL, BRL_CMD_FWINLT); + CMD(KEY_BS_SR, BRL_CMD_FWINRT); + CMD(KEY_BS_SL | KEY_BS_SR, BRL_CMD_LNBEG); + + CMD(KEY_BS_F2, BRL_CMD_LNUP); + CMD(KEY_BS_F3, BRL_CMD_LNDN); + + CMD(KEY_BS_F1 | KEY_BS_F2, BRL_CMD_FWINLTSKIP); + CMD(KEY_BS_F3 | KEY_BS_F4, BRL_CMD_FWINRTSKIP); + + CMD(KEY_BS_F1 | KEY_BS_SL, BRL_CMD_PRPROMPT); + CMD(KEY_BS_F1 | KEY_BS_SR, BRL_CMD_NXPROMPT); + + CMD(KEY_BS_F2 | KEY_BS_SL, BRL_CMD_PRDIFLN); + CMD(KEY_BS_F2 | KEY_BS_SR, BRL_CMD_NXDIFLN); + + CMD(KEY_BS_F3 | KEY_BS_SL, BRL_CMD_ATTRUP); + CMD(KEY_BS_F3 | KEY_BS_SR, BRL_CMD_ATTRDN); + + CMD(KEY_BS_F4 | KEY_BS_SL, BRL_CMD_PRPGRPH); + CMD(KEY_BS_F4 | KEY_BS_SR, BRL_CMD_NXPGRPH); + + CMD(KEY_BS_F1 | KEY_BS_F2 | KEY_BS_SL, BRL_CMD_TOP_LEFT); + CMD(KEY_BS_F1 | KEY_BS_F2 | KEY_BS_SR, BRL_CMD_BOT_LEFT); + + CMD(KEY_BS_F3 | KEY_BS_F4 | KEY_BS_SL, BRL_CMD_CHRLT); + CMD(KEY_BS_F3 | KEY_BS_F4 | KEY_BS_SR, BRL_CMD_CHRRT); + + BLK(KEY_BS_F1 | KEY_BS_F3 | KEY_BS_F4, BRL_BLK_CUTBEGIN); + BLK(KEY_BS_F2 | KEY_BS_F3 | KEY_BS_F4, BRL_BLK_CUTAPPEND); + BLK(KEY_BS_F1 | KEY_BS_F2 | KEY_BS_F3, BRL_BLK_CUTLINE); + BLK(KEY_BS_F1 | KEY_BS_F2 | KEY_BS_F4, BRL_BLK_CUTRECT); + CMD(KEY_BS_F1 | KEY_BS_F2 | KEY_BS_F3 | KEY_BS_F4, BRL_CMD_PASTE); + + BLK(KEY_BS_F1 | KEY_BS_F3, BRL_BLK_SETLEFT); + BLK(KEY_BS_F2 | KEY_BS_F4, BRL_BLK_DESCCHAR); + + TGL(KEY_SPACE | KEY_DOT1, BRL_CMD_DISPMD); + TGL(KEY_SPACE | KEY_DOT1 | KEY_DOT2, BRL_CMD_SKPBLNKWINS); + TGL(KEY_SPACE | KEY_DOT1 | KEY_DOT4, BRL_CMD_CSRVIS); + CMD(KEY_SPACE | KEY_DOT1 | KEY_DOT2 | KEY_DOT4, BRL_CMD_FREEZE); + CMD(KEY_SPACE | KEY_DOT1 | KEY_DOT2 | KEY_DOT5, BRL_CMD_HELP); + TGL(KEY_SPACE | KEY_DOT2 | KEY_DOT4, BRL_CMD_SKPIDLNS); + CMD(KEY_SPACE | KEY_DOT1 | KEY_DOT2 | KEY_DOT3, BRL_CMD_LEARN); + CMD(KEY_SPACE | KEY_DOT1 | KEY_DOT2 | KEY_DOT3 | KEY_DOT4, BRL_CMD_PREFMENU); + CMD(KEY_SPACE | KEY_DOT1 | KEY_DOT2 | KEY_DOT3 | KEY_DOT4 | KEY_DOT7, BRL_CMD_PREFLOAD); + CMD(KEY_SPACE | KEY_DOT1 | KEY_DOT2 | KEY_DOT3 | KEY_DOT4 | KEY_DOT8, BRL_CMD_PREFSAVE); + TGL(KEY_SPACE | KEY_DOT2 | KEY_DOT3 | KEY_DOT4, BRL_CMD_INFO); + TGL(KEY_SPACE | KEY_DOT2 | KEY_DOT3 | KEY_DOT4 | KEY_DOT5, BRL_CMD_CSRTRK); + TGL(KEY_SPACE | KEY_DOT1 | KEY_DOT3 | KEY_DOT6, BRL_CMD_ATTRVIS); + BLK(KEY_SPACE | KEY_DOT1 | KEY_DOT2 | KEY_DOT3 | KEY_DOT6, BRL_BLK_SWITCHVT); + CMD(KEY_SPACE | KEY_DOT1 | KEY_DOT2 | KEY_DOT3 | KEY_DOT6 | KEY_DOT7, BRL_CMD_SWITCHVT_PREV); + CMD(KEY_SPACE | KEY_DOT1 | KEY_DOT2 | KEY_DOT3 | KEY_DOT6 | KEY_DOT8, BRL_CMD_SWITCHVT_NEXT); + CMD(KEY_SPACE | KEY_DOT2 | KEY_DOT3 | KEY_DOT5, BRL_CMD_SIXDOTS | BRL_FLG_TOGGLE_ON); + CMD(KEY_SPACE | KEY_DOT2 | KEY_DOT3 | KEY_DOT6, BRL_CMD_SIXDOTS | BRL_FLG_TOGGLE_OFF); + + KEY(KEY_SPACE | KEY_DOT7, BRL_KEY_BACKSPACE); + KEY(KEY_SPACE | KEY_DOT8, BRL_KEY_ENTER); + KEY(KEY_SPACE | KEY_DOT7 | KEY_DOT8, BRL_KEY_TAB); + + KEY(KEY_SPACE | KEY_DOT2 | KEY_DOT3, BRL_KEY_CURSOR_LEFT); + KEY(KEY_SPACE | KEY_DOT5 | KEY_DOT6, BRL_KEY_CURSOR_RIGHT); + KEY(KEY_SPACE | KEY_DOT2 | KEY_DOT5, BRL_KEY_CURSOR_UP); + KEY(KEY_SPACE | KEY_DOT3 | KEY_DOT6, BRL_KEY_CURSOR_DOWN); + + KEY(KEY_SPACE | KEY_DOT5, BRL_KEY_PAGE_UP); + KEY(KEY_SPACE | KEY_DOT6, BRL_KEY_PAGE_DOWN); + KEY(KEY_SPACE | KEY_DOT2, BRL_KEY_HOME); + KEY(KEY_SPACE | KEY_DOT3, BRL_KEY_END); + + KEY(KEY_SPACE | KEY_DOT2 | KEY_DOT6, BRL_KEY_ESCAPE); + KEY(KEY_SPACE | KEY_DOT3 | KEY_DOT5, BRL_KEY_INSERT); + KEY(KEY_SPACE | KEY_DOT2 | KEY_DOT5 | KEY_DOT6, BRL_KEY_DELETE); + BLK(KEY_SPACE | KEY_DOT2 | KEY_DOT3 | KEY_DOT5 | KEY_DOT6, BRL_BLK_PASSKEY + BRL_KEY_FUNCTION); + + default: + break; + } +#undef TGL +#undef KEY +#undef BLK +#undef CMD + + return EOF; +} + +static const ProtocolOperations brailleSenseOperations = { + "Braille Sense", + 0, getBrailleSenseCellCount, interpretBrailleSenseKeys +}; + +static int +getSyncBrailleCellCount (BrailleDisplay *brl, unsigned int *count) { + static const unsigned char data[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + + if (writePacket(brl, 0XFB, 0X01, data, sizeof(data), NULL, 0)) { + InputPacket packet; + + while (io->awaitInput(1000)) { + if (readPacket(brl, &packet)) { + if (packet.data.type == IPT_CELLS) { + *count = packet.data.data; + return 1; + } + } + } + } + + return 0; +} + +static int +interpretSyncBrailleKeys (BrailleKeys keys, BRL_DriverCommandContext context) { +#define CMD(keys,cmd) case (keys): return (cmd) + switch (keys) { + CMD(KEY_SB_LU, BRL_CMD_LNUP); + CMD(KEY_SB_LD, BRL_CMD_LNDN); + CMD(KEY_SB_RU, BRL_CMD_FWINLT); + CMD(KEY_SB_RD, BRL_CMD_FWINRT); + CMD(KEY_SB_RU | KEY_SB_RD, BRL_CMD_RETURN); + + CMD(KEY_SB_LU | KEY_SB_LD, BRL_CMD_LNBEG); + CMD(KEY_SB_LU | KEY_SB_LD | KEY_SB_RU, BRL_CMD_TOP_LEFT); + CMD(KEY_SB_LU | KEY_SB_LD | KEY_SB_RD, BRL_CMD_BOT_LEFT); + + CMD(KEY_SB_LU | KEY_SB_RU, BRL_CMD_CSRTRK); + CMD(KEY_SB_LU | KEY_SB_RD, BRL_CMD_SIXDOTS); + CMD(KEY_SB_LD | KEY_SB_RU, BRL_CMD_FREEZE); + CMD(KEY_SB_LD | KEY_SB_RD, BRL_CMD_DISPMD); + + CMD(KEY_SB_LU | KEY_SB_RU | KEY_SB_RD, BRL_CMD_INFO); + CMD(KEY_SB_LD | KEY_SB_RU | KEY_SB_RD, BRL_CMD_PREFMENU); + CMD(KEY_SB_LU | KEY_SB_LD | KEY_SB_RU | KEY_SB_RD, BRL_CMD_HELP); + + default: + break; + } +#undef CMD + + return EOF; +} + +static const ProtocolOperations syncBrailleOperations = { + "SyncBraille", + 1, getSyncBrailleCellCount, interpretSyncBrailleKeys +}; + +/* Serial IO */ +#include "io_serial.h" + +static SerialDevice *serialDevice = NULL; +#define SERIAL_BAUD 115200 + +static int +openSerialPort (const char *device) { + if (!(serialDevice = serialOpenDevice(device))) return 0; + protocol = &brailleSenseOperations; + return 1; +} + +static int +configureSerialPort (void) { + if (!serialRestartDevice(serialDevice, SERIAL_BAUD)) return 0; + return 1; +} + +static void +closeSerialPort (void) { + if (serialDevice) { + serialCloseDevice(serialDevice); + serialDevice = NULL; + } +} + +static int +awaitSerialInput (int milliseconds) { + return serialAwaitInput(serialDevice, milliseconds); +} + +static int +readSerialBytes (unsigned char *buffer, int count, int wait) { + const int timeout = 100; + return serialReadData(serialDevice, buffer, count, + (wait? timeout: 0), timeout); +} + +static int +writeSerialBytes (const unsigned char *buffer, int length) { + return serialWriteData(serialDevice, buffer, length); +} + +static const InputOutputOperations serialOperations = { + openSerialPort, configureSerialPort, closeSerialPort, + awaitSerialInput, readSerialBytes, writeSerialBytes +}; + +#ifdef ENABLE_USB_SUPPORT +/* USB IO */ +#include "io_usb.h" + +static UsbChannel *usbChannel = NULL; + +static int +openUsbPort (const char *device) { + static const UsbChannelDefinition definitions[] = { + { /* Braille Sense */ + .vendor=0X045E, .product=0X930A, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=2, + .disableAutosuspend=1, + .data=&brailleSenseOperations + } + , + { /* Sync Braille */ + .vendor=0X0403, .product=0X6001, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=2, + .data=&syncBrailleOperations + } + , + { .vendor=0 } + }; + + if ((usbChannel = usbFindChannel(definitions, (void *)device))) { + protocol = usbChannel->definition.data; + return 1; + } + return 0; +} + +static int +configureUsbPort (void) { + return 1; +} + +static void +closeUsbPort (void) { + if (usbChannel) { + usbCloseChannel(usbChannel); + usbChannel = NULL; + } +} + +static int +awaitUsbInput (int milliseconds) { + return usbAwaitInput(usbChannel->device, + usbChannel->definition.inputEndpoint, + milliseconds); +} + +static int +readUsbBytes (unsigned char *buffer, int length, int wait) { + const int timeout = 100; + int count = usbReapInput(usbChannel->device, + usbChannel->definition.inputEndpoint, + buffer, length, + (wait? timeout: 0), timeout); + if (count != -1) return count; + if (errno == EAGAIN) return 0; + return -1; +} + +static int +writeUsbBytes (const unsigned char *buffer, int length) { + return usbWriteEndpoint(usbChannel->device, + usbChannel->definition.outputEndpoint, + buffer, length, 1000); +} + +static const InputOutputOperations usbOperations = { + openUsbPort, configureUsbPort, closeUsbPort, + awaitUsbInput, readUsbBytes, writeUsbBytes +}; +#endif /* ENABLE_USB_SUPPORT */ + +#ifdef ENABLE_BLUETOOTH_SUPPORT +/* Bluetooth IO */ +#include "io_bluetooth.h" +#include "io_misc.h" + +static int bluetoothConnection = -1; + +static int +openBluetoothPort (const char *device) { + if ((bluetoothConnection = btOpenConnection(device, 4, 0)) == -1) return 0; + protocol = &brailleSenseOperations; + return 1; +} + +static int +configureBluetoothPort (void) { + return 1; +} + +static void +closeBluetoothPort (void) { + if (bluetoothConnection != -1) { + close(bluetoothConnection); + bluetoothConnection = -1; + } +} + +static int +awaitBluetoothInput (int milliseconds) { + return awaitInput(bluetoothConnection, milliseconds); +} + +static int +readBluetoothBytes (unsigned char *buffer, int length, int wait) { + const int timeout = 100; + size_t offset = 0; + return readChunk(bluetoothConnection, + buffer, &offset, length, + (wait? timeout: 0), timeout); +} + +static int +writeBluetoothBytes (const unsigned char *buffer, int length) { + int count = writeData(bluetoothConnection, buffer, length); + if (count != length) { + if (count == -1) { + LogError("Bluetooth write"); + } else { + LogPrint(LOG_WARNING, "Trunccated bluetooth write: %d < %d", count, length); + } + } + return count; +} + +static const InputOutputOperations bluetoothOperations = { + openBluetoothPort, configureBluetoothPort, closeBluetoothPort, + awaitBluetoothInput, readBluetoothBytes, writeBluetoothBytes +}; +#endif /* ENABLE_BLUETOOTH_SUPPORT */ + +static TranslationTable outputTable; +static unsigned char previousCells[40]; + static int writeCells (BrailleDisplay *brl) { - size_t count = brl->x * brl->y; + size_t count = brl->textColumns * brl->textRows; unsigned char cells[count]; { @@ -416,7 +641,7 @@ writeCells (BrailleDisplay *brl) { static int clearCells (BrailleDisplay *brl) { - memset(previousCells, 0, brl->x*brl->y); + memset(previousCells, 0, brl->textColumns*brl->textRows); return writeCells(brl); } @@ -451,14 +676,17 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { if (io->openPort(device)) { if (io->configurePort()) { charactersPerSecond = SERIAL_BAUD / 10; + LogPrint(LOG_INFO, "detected: %s", protocol->modelName); + + if (protocol->getCellCount(brl, &brl->textColumns) || + protocol->getCellCount(brl, &brl->textColumns)) { + brl->textRows = 1; + brl->helpPage = protocol->helpPage; - brl->x = 32; - brl->y = 1; - brl->helpPage = 0; + routingCommand = BRL_BLK_ROUTE; - inputMode = 0; - routingCommand = BRL_BLK_ROUTE; - if (clearCells(brl)) return 1; + if (clearCells(brl)) return 1; + } } io->closePort(); @@ -474,7 +702,7 @@ brl_destruct (BrailleDisplay *brl) { static int brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) { - size_t count = brl->x * brl->y; + size_t count = brl->textColumns * brl->textRows; if (memcmp(brl->buffer, previousCells, count) != 0) { memcpy(previousCells, brl->buffer, count); @@ -503,192 +731,10 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { case IPT_KEYS: { BrailleKeys keys = packet.data.reserved[0] | (packet.data.reserved[1] << 8); + int command = protocol->interpretKeys(keys, context); - if (inputMode) { - const BrailleKeys dotKeys = KEY_DOT1 | KEY_DOT2 | KEY_DOT3 | KEY_DOT4 | KEY_DOT5 | KEY_DOT6 | KEY_DOT7 | KEY_DOT8; - - if (keys && !(keys & ~dotKeys)) { - int command = BRL_BLK_PASSDOTS; - if (keys & KEY_DOT1) command |= BRL_DOT1; - if (keys & KEY_DOT2) command |= BRL_DOT2; - if (keys & KEY_DOT3) command |= BRL_DOT3; - if (keys & KEY_DOT4) command |= BRL_DOT4; - if (keys & KEY_DOT5) command |= BRL_DOT5; - if (keys & KEY_DOT6) command |= BRL_DOT6; - if (keys & KEY_DOT7) command |= BRL_DOT7; - if (keys & KEY_DOT8) command |= BRL_DOT8; - return command; - } - - switch (keys) { - case KEY_SPACE: - return BRL_BLK_PASSDOTS; - - default: - break; - } - } - - switch (keys) { - case KEY_F4: - case KEY_SPACE: - return BRL_CMD_HOME; - case KEY_F4 | KEY_F1: - return BRL_CMD_BACK; - - case KEY_DOT1: - case KEY_LEFT: - return BRL_CMD_FWINLT; - case KEY_DOT4: - case KEY_RIGHT: - return BRL_CMD_FWINRT; - - case KEY_DOT2: - return BRL_CMD_FWINLTSKIP; - case KEY_DOT5: - return BRL_CMD_FWINRTSKIP; - - case KEY_DOT1 | KEY_DOT2: - return BRL_CMD_CHRLT; - case KEY_DOT4 | KEY_DOT5: - return BRL_CMD_CHRRT; - - case KEY_LEFT | KEY_F1: - case KEY_DOT1 | KEY_DOT2 | KEY_DOT3: - return BRL_CMD_LNBEG; - case KEY_RIGHT | KEY_F4: - case KEY_DOT4 | KEY_DOT5 | KEY_DOT6: - return BRL_CMD_LNEND; - - case KEY_F2 | KEY_F3: - return BRL_CMD_CSRJMP_VERT; - case KEY_F2: - case KEY_DOT3: - return BRL_CMD_LNUP; - case KEY_F3: - case KEY_DOT6: - return BRL_CMD_LNDN; - - case KEY_DOT7: - return BRL_CMD_PRDIFLN; - case KEY_DOT8: - return BRL_CMD_NXDIFLN; - - case KEY_DOT3 | KEY_DOT7: - return BRL_CMD_ATTRUP; - case KEY_DOT6 | KEY_DOT8: - return BRL_CMD_ATTRDN; - - case KEY_F2 | KEY_F1: - case KEY_DOT2 | KEY_DOT3: - return BRL_CMD_TOP; - case KEY_F3 | KEY_F4: - case KEY_DOT5 | KEY_DOT6: - return BRL_CMD_BOT; - - case KEY_DOT2 | KEY_DOT3 | KEY_DOT7: - return BRL_CMD_TOP_LEFT; - case KEY_DOT5 | KEY_DOT6 | KEY_DOT8: - return BRL_CMD_BOT_LEFT; - - case KEY_LEFT | KEY_F1 | KEY_F2: - case KEY_DOT1 | KEY_DOT3: - return BRL_CMD_PRPROMPT; - case KEY_RIGHT | KEY_F4 | KEY_F3: - case KEY_DOT4 | KEY_DOT6: - return BRL_CMD_NXPROMPT; - - case KEY_LEFT | KEY_F2: - case KEY_DOT2 | KEY_DOT7: - return BRL_CMD_PRPGRPH; - case KEY_RIGHT | KEY_F3: - case KEY_DOT5 | KEY_DOT8: - return BRL_CMD_NXPGRPH; - - case KEY_DOT1 | KEY_DOT7: - return BRL_CMD_PRSEARCH; - case KEY_DOT4 | KEY_DOT8: - return BRL_CMD_NXSEARCH; - - case KEY_SPACE | KEY_DOT2 | KEY_DOT4: - inputMode = 1; - return BRL_CMD_NOOP | BRL_FLG_TOGGLE_ON; - case KEY_SPACE | KEY_DOT1 | KEY_DOT3 | KEY_DOT4 | KEY_DOT5: - inputMode = 0; - return BRL_CMD_NOOP | BRL_FLG_TOGGLE_OFF; - - case KEY_SPACE | KEY_DOT1 | KEY_DOT2 | KEY_DOT5: - return BRL_CMD_HELP; - case KEY_SPACE | KEY_DOT1 | KEY_DOT2 | KEY_DOT3: - return BRL_CMD_LEARN; - case KEY_SPACE | KEY_DOT2 | KEY_DOT3 | KEY_DOT4: - return BRL_CMD_INFO; - - case KEY_SPACE | KEY_DOT1 | KEY_DOT3 | KEY_DOT4: - return BRL_CMD_PREFMENU; - case KEY_SPACE | KEY_DOT1 | KEY_DOT2 | KEY_DOT3 | KEY_DOT5: - return BRL_CMD_PREFLOAD; - case KEY_SPACE | KEY_DOT2 | KEY_DOT4 | KEY_DOT5 | KEY_DOT6: - return BRL_CMD_PREFSAVE; - - case KEY_SPACE | KEY_DOT2 | KEY_DOT3 | KEY_DOT5: - return BRL_CMD_SIXDOTS | BRL_FLG_TOGGLE_ON; - case KEY_SPACE | KEY_DOT2 | KEY_DOT3 | KEY_DOT6: - return BRL_CMD_SIXDOTS | BRL_FLG_TOGGLE_OFF; - - case KEY_SPACE | KEY_DOT1 | KEY_DOT4: - return BRL_CMD_CSRVIS; - case KEY_SPACE | KEY_DOT1 | KEY_DOT2 | KEY_DOT4: - return BRL_CMD_FREEZE; - case KEY_SPACE | KEY_DOT2 | KEY_DOT3 | KEY_DOT4 | KEY_DOT5: - return BRL_CMD_CSRTRK; - case KEY_SPACE | KEY_DOT1 | KEY_DOT3 | KEY_DOT6: - return BRL_CMD_ATTRVIS; - - case KEY_SPACE | KEY_DOT2: - return BRL_BLK_PASSKEY + BRL_KEY_HOME; - case KEY_SPACE | KEY_DOT3: - return BRL_BLK_PASSKEY + BRL_KEY_END; - case KEY_SPACE | KEY_DOT5: - return BRL_BLK_PASSKEY + BRL_KEY_PAGE_UP; - case KEY_SPACE | KEY_DOT6: - return BRL_BLK_PASSKEY + BRL_KEY_PAGE_DOWN; - case KEY_SPACE | KEY_DOT2 | KEY_DOT5: - return BRL_BLK_PASSKEY + BRL_KEY_CURSOR_UP; - case KEY_SPACE | KEY_DOT3 | KEY_DOT6: - return BRL_BLK_PASSKEY + BRL_KEY_CURSOR_DOWN; - case KEY_SPACE | KEY_DOT2 | KEY_DOT3: - return BRL_BLK_PASSKEY + BRL_KEY_CURSOR_LEFT; - case KEY_SPACE | KEY_DOT5 | KEY_DOT6: - return BRL_BLK_PASSKEY + BRL_KEY_CURSOR_RIGHT; - - case KEY_SPACE | KEY_F1: - routingCommand = BRL_BLK_CUTBEGIN; - return BRL_CMD_NOOP; - case KEY_SPACE | KEY_F2: - routingCommand = BRL_BLK_CUTAPPEND; - return BRL_CMD_NOOP; - case KEY_SPACE | KEY_F3: - routingCommand = BRL_BLK_CUTLINE; - return BRL_CMD_NOOP; - case KEY_SPACE | KEY_F4: - routingCommand = BRL_BLK_CUTRECT; - return BRL_CMD_NOOP; - case KEY_SPACE | KEY_DOT1 | KEY_DOT2 | KEY_DOT3 | KEY_DOT4: - return BRL_CMD_PASTE; - - case KEY_SPACE | KEY_LEFT: - routingCommand = BRL_BLK_SETLEFT; - return BRL_CMD_NOOP; - case KEY_SPACE | KEY_RIGHT: - routingCommand = BRL_BLK_DESCCHAR; - return BRL_CMD_NOOP; - - default: - break; - } - - return BRL_CMD_NOOP; + if (command == EOF) command = BRL_CMD_NOOP; + return command; } } diff --git a/Drivers/Braille/HIMS/help0.txt b/Drivers/Braille/HIMS/help0.txt new file mode 100644 index 0000000000000000000000000000000000000000..15c2de58d3e8a548a45abb9a795086e95703d4bd --- /dev/null +++ b/Drivers/Braille/HIMS/help0.txt @@ -0,0 +1,73 @@ +Help for Braille Sense + +General Navigation: +F1: (leave braille terminal) +F4: go to cursor +F4+F1: go back (undo unexpected cursor tracking motion) +LEFT/RIGHT: go left/right one window +LEFT+RIGHT: go to beginning of line +F2/F3: go up/down one line +F1+F2 / F3+F4: go to previous/next non-blank window +F1 + LEFT/RIGHT: go to previous/next command prompt +F2 + LEFT/RIGHT: go up/down to line with different content +F3 + LEFT/RIGHT: go up/down to line with different highlighting +F4 + LEFT/RIGHT: go to previous/next paragraph +F1+F2 + LEFT/RIGHT: go to beginning of top/bottom line +F3+F4 + LEFT/RIGHT: go left/right one character + +Cursor Routing: +Rn: bring cursor to character +F2+F3: bring cursor to line (no horizontal motion) + +Cut and Paste: +F1+F3+F4, Rn: start new cut buffer at character +F2+F3+F4, Rn: append to cut buffer from character +F1+F2+F3, Rn: linear cut to character +F1+F2+F4, Rn: rectangular cut to character +F1+F2+F3+F4: paste cut buffer at cursor + +Other Routing Key Functions: +F1+F3, Rn: position left end of window at character +F2+F4, Rn: describe character + +Chords (adding dot 7/8 forces toggles off/on): +SP+1: toggle displaying of (a)ttributes +SP+12: toggle skipping of (b)lank windows +SP+14: toggle (c)ursor visibility +SP+124: (f)reeze/unfreeze screen image +SP+125: switch to/from (h)elp page +SP+24: toggle skipping of (i)dentical lines +SP+123: enter/leave (l)earn mode +SP+1234: switch to/from (p)references menu +SP+1234 + 7/8: restore/save (p)references from/to disk +SP+234: toggle displaying of (s)tatus line +SP+2345: toggle cursor (t)racking +SP+136: toggle (u)nderlining of highlighted characters +SP+1236, Rn: switch to specific (v)irtual terminal +SP+1236 + 7/8: switch to previous/next (v)irtual terminal +SP+1356: (terminate braille terminal) +SP+235: switch to (6)-dot mode +SP+236: switch to (8)-dot mode + +Keyboard (spacebar and dot keys): +SP: space +D1-D8 + ...: braille character input +F2: uppercase +F3: control + +Special Key Entry: +SP+7: backspace key +SP+8: enter key +SP+78: tab key +SP+23: cursor left key +SP+56: cursor right key +SP+25: cursor up key +SP+36: cursor down key +SP+5: page up key +SP+6: page down key +SP+2: home key +SP+3: end key +SP+26: escape key +SP+35: insert key +SP+256: delete key +SP+2356, Rn: function key diff --git a/Drivers/Braille/HIMS/help1.txt b/Drivers/Braille/HIMS/help1.txt new file mode 100644 index 0000000000000000000000000000000000000000..7ba3e942dd451002ffd22132c7cfbf28150f5720 --- /dev/null +++ b/Drivers/Braille/HIMS/help1.txt @@ -0,0 +1,17 @@ +Help for SyncBraille + +lu/ld: go up/down one line +ru/rd: go left/right one window +RU+RD: go to cursor or undo last cursor tracking motion + +lu+ld: go to beginning of current line +lu+ld + ru/rd: go to beginning of top/bottom line + +lu+ru: toggle cursor tracking on/off +lu+rd: toggle 6/8-dot braille +ld+ru: freeze/unfreeze screen image +ld+rd: toggle attributes/text display + +lu+ru+rd: switch to/from status line +ld+ru+rd: switch to/from preferences menu +lu+ld+ru+rd: switch to/from help page diff --git a/BrailleDrivers/BrailleSense/reldeps.mk b/Drivers/Braille/HIMS/reldeps.mk similarity index 100% rename from BrailleDrivers/BrailleSense/reldeps.mk rename to Drivers/Braille/HIMS/reldeps.mk diff --git a/BrailleDrivers/HandyTech/Makefile.in b/Drivers/Braille/HandyTech/Makefile.in similarity index 84% rename from BrailleDrivers/HandyTech/Makefile.in rename to Drivers/Braille/HandyTech/Makefile.in index 84cba5010825a1f380c9cc4de6fb7698d46ad19f..f59ea720da8e37e03e4b64b3f74a712c8a782b9c 100644 --- a/BrailleDrivers/HandyTech/Makefile.in +++ b/Drivers/Braille/HandyTech/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/HandyTech/README b/Drivers/Braille/HandyTech/README similarity index 100% rename from BrailleDrivers/HandyTech/README rename to Drivers/Braille/HandyTech/README diff --git a/BrailleDrivers/HandyTech/braille.c b/Drivers/Braille/HandyTech/braille.c similarity index 98% rename from BrailleDrivers/HandyTech/braille.c rename to Drivers/Braille/HandyTech/braille.c index ed013fa2144ffd8e688f972261f11eef3910c9af..a3f67e6076ec1ef372bf957b807fabec504dcad4 100644 --- a/BrailleDrivers/HandyTech/braille.c +++ b/Drivers/Braille/HandyTech/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -115,8 +116,8 @@ static const ModelEntry modelTable[] = { , { .identifier = HT_Model_ModularEvolution64, .name = "Modular Evolution 64", - .textCells = 60, - .statusCells = 4, + .textCells = 64, + .statusCells = 0, .helpPage = 0, .interpretByte = interpretKeyByte, .interpretKeys = interpretBrailleStarKeys, @@ -126,8 +127,8 @@ static const ModelEntry modelTable[] = { , { .identifier = HT_Model_ModularEvolution88, .name = "Modular Evolution 88", - .textCells = 80, - .statusCells = 8, + .textCells = 88, + .statusCells = 0, .helpPage = 0, .interpretByte = interpretKeyByte, .interpretKeys = interpretBrailleStarKeys, @@ -319,7 +320,6 @@ openUsbPort (char **parameters, const char *device) { }; if ((usb = usbFindChannel(definitions, (void *)device))) { - usbBeginInput(usb->device, usb->definition.inputEndpoint, 8); return 1; } return 0; @@ -542,12 +542,14 @@ identifyModel (BrailleDisplay *brl, unsigned char identifier) { model->textCells, (model->textCells == 1)? "cell": "cells", model->statusCells, (model->statusCells == 1)? "cell": "cells"); + brl->textColumns = model->textCells; /* initialise size of display */ + brl->textRows = BRLROWS; + brl->statusColumns = model->statusCells; + brl->statusRows = 1; brl->helpPage = model->helpPage; /* position in the model list */ - brl->x = model->textCells; /* initialise size of display */ - brl->y = BRLROWS; - if (!reallocateBuffer(&rawData, brl->x*brl->y)) return 0; - if (!reallocateBuffer(&prevData, brl->x*brl->y)) return 0; + if (!reallocateBuffer(&rawData, brl->textColumns*brl->textRows)) return 0; + if (!reallocateBuffer(&prevData, brl->textColumns*brl->textRows)) return 0; currentKeys = pressedKeys = nullKeys; inputMode = 0; @@ -707,10 +709,9 @@ writeBookwormCells (BrailleDisplay *brl) { static int writeEvolutionCells (BrailleDisplay *brl) { - unsigned char buffer[model->textCells + model->statusCells]; + unsigned char buffer[model->textCells]; memcpy(buffer, rawData, model->textCells); - memcpy(buffer+model->textCells, rawStatus, model->statusCells); return writeExtendedPacket(brl, HT_EXTPKT_Braille, buffer, sizeof(buffer)); } @@ -1609,7 +1610,8 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { break; } - LogPrint(LOG_WARNING, "Unexpected Packet: %02X (state %d)", packet.fields.type, currentState); + LogBytes(LOG_WARNING, "Unexpected Packet", packet.bytes, size); + LogPrint(LOG_WARNING, "state %d", currentState); } if (noInput) { diff --git a/BrailleDrivers/HandyTech/braille.h b/Drivers/Braille/HandyTech/braille.h similarity index 84% rename from BrailleDrivers/HandyTech/braille.h rename to Drivers/Braille/HandyTech/braille.h index fe5164c1a1bb7beeac968515dd79c57954e2fd87..785c5d98fcea4363f31dbfe886ecf91908a60385 100644 --- a/BrailleDrivers/HandyTech/braille.h +++ b/Drivers/Braille/HandyTech/braille.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/HandyTech/brldefs-ht.h b/Drivers/Braille/HandyTech/brldefs-ht.h similarity index 86% rename from BrailleDrivers/HandyTech/brldefs-ht.h rename to Drivers/Braille/HandyTech/brldefs-ht.h index a76fb32889f6acd9a3af33d646058bfac1a4cecf..e969e33d5a31882794d19d99550f03d1244e3527 100644 --- a/BrailleDrivers/HandyTech/brldefs-ht.h +++ b/Drivers/Braille/HandyTech/brldefs-ht.h @@ -1,22 +1,21 @@ /* * libbrlapi - A library providing access to braille terminals for applications. * - * Copyright (C) 2002-2008 Sébastien Hinderer + * Copyright (C) 2002-2009 Sébastien Hinderer * * libbrlapi 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * * This software is maintained by Dave Mielke . */ -/* brldefs-ht.h : Useful definitions to handle HandyTech dispalys */ +/* brldefs-ht.h : Useful definitions to handle HandyTech displays */ #ifndef BRLTTY_INCLUDED_HT_BRLDEFS #define BRLTTY_INCLUDED_HT_BRLDEFS diff --git a/BrailleDrivers/HandyTech/help0.txt b/Drivers/Braille/HandyTech/help0.txt similarity index 98% rename from BrailleDrivers/HandyTech/help0.txt rename to Drivers/Braille/HandyTech/help0.txt index 0955c497b3d92c6578f02b31130c54cff9992315..780c66ab43c989828434118968eaa5b7ad4b5883 100644 --- a/BrailleDrivers/HandyTech/help0.txt +++ b/Drivers/Braille/HandyTech/help0.txt @@ -1,4 +1,4 @@ -BRLTTY Help for Handy Tech Modular Displays +Help for Modular Models From left to right, the front keys are: B1 B2 B3 B4 UP DN B5 B6 B7 B8 Movement Commands: diff --git a/BrailleDrivers/HandyTech/help1.txt b/Drivers/Braille/HandyTech/help1.txt similarity index 94% rename from BrailleDrivers/HandyTech/help1.txt rename to Drivers/Braille/HandyTech/help1.txt index 56fd3c614f75799d6d18b449300c4f358e38f1e8..71561097f8de75fb40d86b046639bee9537a9f41 100644 --- a/BrailleDrivers/HandyTech/help1.txt +++ b/Drivers/Braille/HandyTech/help1.txt @@ -1,4 +1,4 @@ -BRLTTY Help for Handy Tech Bookworm Display +Help for Bookworm Screen Review Keys: bak: left one window diff --git a/BrailleDrivers/HandyTech/help2.txt b/Drivers/Braille/HandyTech/help2.txt similarity index 98% rename from BrailleDrivers/HandyTech/help2.txt rename to Drivers/Braille/HandyTech/help2.txt index 9ba6237d8a92ec7a9853773b38cb3474308f2e07..ada1e49ef1656d8a727453bc22e5848ce12c2b60 100644 --- a/BrailleDrivers/HandyTech/help2.txt +++ b/Drivers/Braille/HandyTech/help2.txt @@ -1,4 +1,4 @@ -BRLTTY Help for Handy Tech Braille Star and Braillino Displays +Help for Braille Star and Braillino There are two navigation keys, one at the left end and one at the right end of the braille line. Each has a top, middle, and bottom position. These six diff --git a/BrailleDrivers/HandyTech/help3.txt b/Drivers/Braille/HandyTech/help3.txt similarity index 98% rename from BrailleDrivers/HandyTech/help3.txt rename to Drivers/Braille/HandyTech/help3.txt index 0b0311803964f3d71bd1b7844d2a083c19f9efaa..9c390a5b6732947606c9996c9931468a30fb6465 100644 --- a/BrailleDrivers/HandyTech/help3.txt +++ b/Drivers/Braille/HandyTech/help3.txt @@ -1,4 +1,4 @@ -BRLTTY Help for Handy Tech Braille Star 80 Display +Help for Braille Star 80 There are two navigation keys, one at the left end and one at the right end of the braille line. Each has a top, middle, and bottom position. These six diff --git a/BrailleDrivers/HandyTech/help4.txt b/Drivers/Braille/HandyTech/help4.txt similarity index 98% rename from BrailleDrivers/HandyTech/help4.txt rename to Drivers/Braille/HandyTech/help4.txt index 2757916a274d9a48ec84235c54c1374fe73fe318..ae65104b9bc785197380c79a1e0e4da240dd01cb 100644 --- a/BrailleDrivers/HandyTech/help4.txt +++ b/Drivers/Braille/HandyTech/help4.txt @@ -1,4 +1,4 @@ -BRLTTY Help for Handy Tech Easy Braille Displays +Help for Easy Braille From left to right, the front keys are: B1 B2 B3 B4 UP DN B5 B6 B7 B8 Movement Commands: diff --git a/BrailleDrivers/HandyTech/reldeps.mk b/Drivers/Braille/HandyTech/reldeps.mk similarity index 100% rename from BrailleDrivers/HandyTech/reldeps.mk rename to Drivers/Braille/HandyTech/reldeps.mk diff --git a/BrailleDrivers/IrisLinux/INSTALL b/Drivers/Braille/IrisLinux/INSTALL similarity index 100% rename from BrailleDrivers/IrisLinux/INSTALL rename to Drivers/Braille/IrisLinux/INSTALL diff --git a/BrailleDrivers/IrisLinux/Makefile.in b/Drivers/Braille/IrisLinux/Makefile.in similarity index 82% rename from BrailleDrivers/IrisLinux/Makefile.in rename to Drivers/Braille/IrisLinux/Makefile.in index 12e1e3fd734aa32fc1744a404278eb3d58f5d189..0156e89c37472edf9525392f069b8f6d43cd715c 100644 --- a/BrailleDrivers/IrisLinux/Makefile.in +++ b/Drivers/Braille/IrisLinux/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/IrisLinux/README b/Drivers/Braille/IrisLinux/README similarity index 94% rename from BrailleDrivers/IrisLinux/README rename to Drivers/Braille/IrisLinux/README index 9237b14516620a1f6cd204725c9e49dc0fe0169b..30e2fd6ace72b6e7b326694f5dd16cbb2a970575 100644 --- a/BrailleDrivers/IrisLinux/README +++ b/Drivers/Braille/IrisLinux/README @@ -1,9 +1,9 @@ This is the EuroBraille-IRIS specific driver for BRLTTY, version 0.3 -Copyright (C) 2004-2008 Yannick PLASSIARD (yan@mistigri.org). +Copyright (C) 2004-2009 Yannick PLASSIARD (yan@mistigri.org). This code is copyrighted under the GNU Public License. See the file -COPYING included with BRLTTY for details. +LICENSE-GPL included with BRLTTY for details. This driver is currently maintained by Yannick Plassiard diff --git a/BrailleDrivers/IrisLinux/braille.c b/Drivers/Braille/IrisLinux/braille.c similarity index 94% rename from BrailleDrivers/IrisLinux/braille.c rename to Drivers/Braille/IrisLinux/braille.c index e80fb28aa60afdec3c0bffb878ce1fe362a852ea..12af797aac1785bbe7651f6c8373b5cf0f85d5cf 100644 --- a/BrailleDrivers/IrisLinux/braille.c +++ b/Drivers/Braille/IrisLinux/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -18,7 +19,7 @@ /* EuroBraille/braille.c - Braille display library for the IRIS family. * Copyright (C) 2004 by Yannick Plassiard * and Nicolas Pitre - * See the GNU General Public License for details in the ../../COPYING file + * See the GNU General Public License for details in the LICENSE-GPL file * See the README file for details about copyrights and version informations */ @@ -280,7 +281,7 @@ static int brl_construct (BrailleDisplay *brl, char **parameters, const char *de if ((gio_fd = open("/dev/iris", O_RDWR)) == -1) { - LogPrint(LOG_INFO, "Cannot open Iris-GIO device.\n"); + LogPrint(LOG_INFO, "Cannot open Iris-GIO device."); return 0; } @@ -289,7 +290,7 @@ static int brl_construct (BrailleDisplay *brl, char **parameters, const char *de */ if (ioctl(gio_fd, IOCTL_SETBIT_FIRSTBYTE, IO_D0) == -1) { - LogPrint(LOG_INFO, "Cannot send ioctl to device.\n"); + LogPrint(LOG_INFO, "Cannot send ioctl to device."); return 0; } @@ -299,7 +300,7 @@ static int brl_construct (BrailleDisplay *brl, char **parameters, const char *de usleep(8500); if (ioctl(gio_fd, IOCTL_SETBIT_FIRSTBYTE, 0x00) == -1) { - LogPrint(LOG_INFO, "Cannot clear device bits.\n"); + LogPrint(LOG_INFO, "Cannot clear device bits."); return 0; } /* @@ -325,7 +326,7 @@ static int brl_construct (BrailleDisplay *brl, char **parameters, const char *de /* Set model params... */ brl->helpPage = 0; - brl->y = BRLROWS; + brl->textRows = BRLROWS; while (!NbCols) { int i = 0; @@ -373,10 +374,10 @@ static void brl_destruct (BrailleDisplay *brl) if (gio_fd == -1) return; if (ioctl(gio_fd, IOCTL_SETBIT_FIRSTBYTE, IO_D1) == -1) - LogPrint(LOG_INFO, "Cannot turn off braille power.\n"); + LogPrint(LOG_INFO, "Cannot turn off braille power."); usleep(8500); if (ioctl(gio_fd, IOCTL_SETBIT_FIRSTBYTE, 0x00) == -1) - LogPrint(LOG_INFO, "Cannot send ioctl().\n"); + LogPrint(LOG_INFO, "Cannot send ioctl()."); close(gio_fd); gio_fd = -1; } @@ -453,7 +454,7 @@ static int Program(BrailleDisplay *brl) if (p) { - message("Level 1 ...", MSG_NODELAY); + message(NULL, "Level 1 ...", MSG_NODELAY); while ((key = readbrlkey(brl, CTX_COMMANDS)) != VK_FGB) { for (i = 0; p[i].brl_key; i++) @@ -477,7 +478,7 @@ static int Program(BrailleDisplay *brl) static int SynthControl(BrailleDisplay *brl) { - message("Level 4 ...", MSG_NODELAY); + message(NULL, "Level 4 ...", MSG_NODELAY); context = IN_LEVEL4; return (EOF); } @@ -559,9 +560,9 @@ static int handle_routekey(BrailleDisplay *brl, int routekey) case 0x06: /* Console Switching */ context = 0; if (NbCols == 20) - message("switch:1 2 3 4 5 6 t", MSG_NODELAY); + message(NULL, "switch:1 2 3 4 5 6 t", MSG_NODELAY); else - message("switch:1 2 3 4 5 6 7 t", MSG_NODELAY); + message(NULL, "switch:1 2 3 4 5 6 7 t", MSG_NODELAY); context = 2; ReWrite = 0; res = BRL_CMD_NOOP; @@ -573,7 +574,7 @@ static int handle_routekey(BrailleDisplay *brl, int routekey) break; case 0x0F: /* version information */ context = 0; - message(IdentString, MSG_WAITKEY); + message(NULL, IdentString, MSG_WAITKEY); res = BRL_CMD_NOOP; break; } @@ -637,7 +638,7 @@ static int handle_routekey(BrailleDisplay *brl, int routekey) } if (flag == 1) { - message("i:tty hlp info t", MSG_NODELAY); + message(NULL, "i:tty hlp info t", MSG_NODELAY); context = 1; res = BRL_CMD_NOOP; } @@ -708,7 +709,7 @@ static int key_handle(BrailleDisplay *brl, unsigned char *buf, char key_context) } if (keys == 0x280 && !alt && !control) /* alt */ { - message("! alt", MSG_NODELAY); + message(NULL, "! alt", MSG_NODELAY); context = 4; ReWrite = 0; alt = 1; @@ -717,7 +718,7 @@ static int key_handle(BrailleDisplay *brl, unsigned char *buf, char key_context) if (alt && control) { context = 0; - message("! alt control", MSG_NODELAY); + message(NULL, "! alt control", MSG_NODELAY); context = 4; } if (keys == 0x2c0 && control) @@ -730,7 +731,7 @@ static int key_handle(BrailleDisplay *brl, unsigned char *buf, char key_context) if (keys == 0x2c0 && !control) /* control */ { control = 1; - message("! control ", MSG_NODELAY); + message(NULL, "! control ", MSG_NODELAY); context = 4; ReWrite = 0; res = BRL_CMD_NOOP; @@ -866,9 +867,9 @@ static int readbrlkey(BrailleDisplay *brl, char key_context) NbCols = 32; else NbCols = 40; - brl->x = NbCols; - prevdata = realloc(prevdata, brl->x * brl->y); - lcd_data = realloc(lcd_data, brl->x * brl->y * sizeof(*lcd_data)); + brl->textColumns = NbCols; + prevdata = realloc(prevdata, brl->textColumns * brl->textRows); + lcd_data = realloc(lcd_data, brl->textColumns * brl->textRows * sizeof(*lcd_data)); res = BRL_CMD_NOOP; break; } diff --git a/BrailleDrivers/IrisLinux/braille.h b/Drivers/Braille/IrisLinux/braille.h similarity index 94% rename from BrailleDrivers/IrisLinux/braille.h rename to Drivers/Braille/IrisLinux/braille.h index dd8fd5d987ed2f41fe0d68f6cab827d5dd7083c6..5a10afc7f84cdb17942e1a5c3934aa001934061c 100644 --- a/BrailleDrivers/IrisLinux/braille.h +++ b/Drivers/Braille/IrisLinux/braille.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/IrisLinux/gio_ioctl.h b/Drivers/Braille/IrisLinux/gio_ioctl.h similarity index 100% rename from BrailleDrivers/IrisLinux/gio_ioctl.h rename to Drivers/Braille/IrisLinux/gio_ioctl.h diff --git a/BrailleDrivers/IrisLinux/help.txt b/Drivers/Braille/IrisLinux/help.txt similarity index 94% rename from BrailleDrivers/IrisLinux/help.txt rename to Drivers/Braille/IrisLinux/help.txt index 4ef5bac0dbc16d1a3fded2623b91c4c74753f571..c29abdd12ba95b0315ed7cc777f723c1b499a1f5 100644 --- a/BrailleDrivers/IrisLinux/help.txt +++ b/Drivers/Braille/IrisLinux/help.txt @@ -1,4 +1,4 @@ -BRLTTY Help Screen for EuroBRAILLE-Iris embedded Linux driver. +Help for All Models To enter in the Learn-Mode, click on the "I Z" cell to enter in the internal diff --git a/BrailleDrivers/IrisLinux/iris-gio/ChangeLog b/Drivers/Braille/IrisLinux/iris-gio/ChangeLog similarity index 100% rename from BrailleDrivers/IrisLinux/iris-gio/ChangeLog rename to Drivers/Braille/IrisLinux/iris-gio/ChangeLog diff --git a/BrailleDrivers/IrisLinux/iris-gio/Makefile b/Drivers/Braille/IrisLinux/iris-gio/Makefile similarity index 100% rename from BrailleDrivers/IrisLinux/iris-gio/Makefile rename to Drivers/Braille/IrisLinux/iris-gio/Makefile diff --git a/BrailleDrivers/IrisLinux/iris-gio/build.sh b/Drivers/Braille/IrisLinux/iris-gio/build.sh similarity index 100% rename from BrailleDrivers/IrisLinux/iris-gio/build.sh rename to Drivers/Braille/IrisLinux/iris-gio/build.sh diff --git a/BrailleDrivers/IrisLinux/iris-gio/gio_ioctl.h b/Drivers/Braille/IrisLinux/iris-gio/gio_ioctl.h similarity index 100% rename from BrailleDrivers/IrisLinux/iris-gio/gio_ioctl.h rename to Drivers/Braille/IrisLinux/iris-gio/gio_ioctl.h diff --git a/BrailleDrivers/IrisLinux/iris-gio/iris_gio.c b/Drivers/Braille/IrisLinux/iris-gio/iris_gio.c similarity index 100% rename from BrailleDrivers/IrisLinux/iris-gio/iris_gio.c rename to Drivers/Braille/IrisLinux/iris-gio/iris_gio.c diff --git a/BrailleDrivers/IrisLinux/iris-gio/iris_gio.h b/Drivers/Braille/IrisLinux/iris-gio/iris_gio.h similarity index 100% rename from BrailleDrivers/IrisLinux/iris-gio/iris_gio.h rename to Drivers/Braille/IrisLinux/iris-gio/iris_gio.h diff --git a/BrailleDrivers/IrisLinux/reldeps.mk b/Drivers/Braille/IrisLinux/reldeps.mk similarity index 100% rename from BrailleDrivers/IrisLinux/reldeps.mk rename to Drivers/Braille/IrisLinux/reldeps.mk diff --git a/BrailleDrivers/Libbraille/Makefile.in b/Drivers/Braille/Libbraille/Makefile.in similarity index 83% rename from BrailleDrivers/Libbraille/Makefile.in rename to Drivers/Braille/Libbraille/Makefile.in index a885be72f1ab5aab4d809b44df639cf89be7fbf5..bc284205186f9b5410db8433f13b9517b08041ad 100644 --- a/BrailleDrivers/Libbraille/Makefile.in +++ b/Drivers/Braille/Libbraille/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/Libbraille/braille.c b/Drivers/Braille/Libbraille/braille.c similarity index 89% rename from BrailleDrivers/Libbraille/braille.c rename to Drivers/Braille/Libbraille/braille.c index 1bd7d81552bf99ae5642b4c412188b3a2bf76456..04b8545f0099d87c9b830ac3e603f67fb0a97b31 100644 --- a/BrailleDrivers/Libbraille/braille.c +++ b/Drivers/Braille/Libbraille/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -39,7 +40,6 @@ typedef enum { #define BRLPARMS "device", "driver", "table" #include "brl_driver.h" -#include "tbl.h" static TranslationTable outputTable; static TranslationTable inputTable; @@ -75,10 +75,21 @@ brl_construct(BrailleDisplay *brl, char **parameters, const char *device) { LogPrint(LOG_INFO, "Libbraille Version: %s", braille_info(BRL_VERSION)); +#ifdef BRL_PATH LogPrint(LOG_DEBUG, "Libbraille Installation Directory: %s", braille_info(BRL_PATH)); +#endif /* BRL_PATH */ + +#ifdef BRL_PATHCONF LogPrint(LOG_DEBUG, "Libbraille Configuration Directory: %s", braille_info(BRL_PATHCONF)); +#endif /* BRL_PATHCONF */ + +#ifdef BRL_PATHTBL LogPrint(LOG_DEBUG, "Libbraille Tables Directory: %s", braille_info(BRL_PATHTBL)); +#endif /* BRL_PATHTBL */ + +#ifdef BRL_PATHDRV LogPrint(LOG_DEBUG, "Libbraille Drivers Directory: %s", braille_info(BRL_PATHDRV)); +#endif /* BRL_PATHDRV */ LogPrint(LOG_INFO, "Libbraille Table: %s", braille_info(BRL_TABLE)); LogPrint(LOG_INFO, "Libbraille Driver: %s", braille_info(BRL_DRIVER)); @@ -87,8 +98,8 @@ brl_construct(BrailleDisplay *brl, char **parameters, const char *device) LogPrint(LOG_INFO, "Display Type: %s", braille_info(BRL_TERMINAL)); LogPrint(LOG_INFO, "Display Size: %d", braille_size()); - brl->x = braille_size(); /* initialise size of display */ - brl->y = 1; + brl->textColumns = braille_size(); /* initialise size of display */ + brl->textRows = 1; brl->helpPage = 0; braille_timeout(100); @@ -114,15 +125,15 @@ brl_writeWindow(BrailleDisplay *brl, const wchar_t *text) { if(text) { - char bytes[brl->x]; + char bytes[brl->textColumns]; int i; - for(i = 0; i < brl->x; ++i) + for(i = 0; i < brl->textColumns; ++i) { wchar_t character = text[i]; bytes[i] = iswLatin1(character)? character: '?'; } - braille_write(bytes, brl->x); + braille_write(bytes, brl->textColumns); if(brl->cursor >= 0) { diff --git a/Drivers/Braille/Libbraille/help.txt b/Drivers/Braille/Libbraille/help.txt new file mode 100644 index 0000000000000000000000000000000000000000..4c3d6b2eafa9502aebc1d5f0c9780ae646342903 --- /dev/null +++ b/Drivers/Braille/Libbraille/help.txt @@ -0,0 +1,3 @@ +Help for Libbraille Driver + +No help available for this driver. diff --git a/BrailleDrivers/Libbraille/reldeps.mk b/Drivers/Braille/Libbraille/reldeps.mk similarity index 82% rename from BrailleDrivers/Libbraille/reldeps.mk rename to Drivers/Braille/Libbraille/reldeps.mk index 7798c605354a4d35a890eb7e12387c0487458fc8..bdbfe6598acc448d28cdc45e4199bfb94a3930c8 100644 --- a/BrailleDrivers/Libbraille/reldeps.mk +++ b/Drivers/Braille/Libbraille/reldeps.mk @@ -3,6 +3,7 @@ braille.$O: $(SRC_DIR)/braille.c braille.$O: $(BLD_TOP)config.h braille.$O: $(SRC_TOP)prologue.h braille.$O: $(SRC_TOP)Programs/misc.h +braille.$O: $(SRC_TOP)Programs/bitmask.h braille.$O: $(SRC_TOP)Programs/brl.h braille.$O: $(BLD_TOP)Programs/brlapi_constants.h braille.$O: $(SRC_TOP)Programs/brlapi_keycodes.h @@ -11,7 +12,8 @@ braille.$O: $(SRC_TOP)Programs/brltty.h braille.$O: $(SRC_TOP)Programs/cmd.h braille.$O: $(SRC_TOP)Programs/ctb.h braille.$O: $(SRC_TOP)Programs/driver.h +braille.$O: $(SRC_TOP)Programs/keycodes.h +braille.$O: $(SRC_TOP)Programs/ktb.h braille.$O: $(SRC_TOP)Programs/spk.h braille.$O: $(SRC_TOP)Programs/brl_driver.h -braille.$O: $(SRC_TOP)Programs/tbl.h diff --git a/BrailleDrivers/LogText/DEVELOP b/Drivers/Braille/LogText/DEVELOP similarity index 100% rename from BrailleDrivers/LogText/DEVELOP rename to Drivers/Braille/LogText/DEVELOP diff --git a/BrailleDrivers/LogText/Makefile.in b/Drivers/Braille/LogText/Makefile.in similarity index 81% rename from BrailleDrivers/LogText/Makefile.in rename to Drivers/Braille/LogText/Makefile.in index 3b17f72581172666750082803e9a490969db5b4a..b669a5e4c89b0fb93fda296ebce0f81e2761050e 100644 --- a/BrailleDrivers/LogText/Makefile.in +++ b/Drivers/Braille/LogText/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/LogText/PICTURE b/Drivers/Braille/LogText/PICTURE similarity index 100% rename from BrailleDrivers/LogText/PICTURE rename to Drivers/Braille/LogText/PICTURE diff --git a/BrailleDrivers/LogText/PROTOCOL b/Drivers/Braille/LogText/PROTOCOL similarity index 100% rename from BrailleDrivers/LogText/PROTOCOL rename to Drivers/Braille/LogText/PROTOCOL diff --git a/BrailleDrivers/LogText/README b/Drivers/Braille/LogText/README similarity index 100% rename from BrailleDrivers/LogText/README rename to Drivers/Braille/LogText/README diff --git a/BrailleDrivers/LogText/braille.c b/Drivers/Braille/LogText/braille.c similarity index 99% rename from BrailleDrivers/LogText/braille.c rename to Drivers/Braille/LogText/braille.c index 26ae6909d321c9ae5112844953f0809b998c829d..88e46a36a32c45942682b85c5094fb107fbe3929 100644 --- a/BrailleDrivers/LogText/braille.c +++ b/Drivers/Braille/LogText/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -31,10 +32,9 @@ #include "misc.h" -#define BRLSTAT ST_Generic +#define BRL_STATUS_FIELDS sfGeneric #define BRL_HAVE_STATUS_CELLS #include "brl_driver.h" -#include "tbl.h" #include "braille.h" #include "io_serial.h" @@ -364,8 +364,8 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { makeDownloadFifo(); if ((serialDevice = serialOpenDevice(device))) { if (serialRestartDevice(serialDevice, 9600)) { - brl->y = screenHeight; - brl->x = screenWidth; + brl->textRows = screenHeight; + brl->textColumns = screenWidth; brl->buffer = &sourceImage[0][0]; memset(sourceImage, 0, sizeof(sourceImage)); deviceStatus = DEV_ONLINE; diff --git a/BrailleDrivers/LogText/braille.h b/Drivers/Braille/LogText/braille.h similarity index 97% rename from BrailleDrivers/LogText/braille.h rename to Drivers/Braille/LogText/braille.h index dfe552547ddfcb26f3956aca8e10c852305696bc..529ae19a76c5310f1919c59ddbad7bb195bc72aa 100644 --- a/BrailleDrivers/LogText/braille.h +++ b/Drivers/Braille/LogText/braille.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/LogText/help.txt b/Drivers/Braille/LogText/help.txt similarity index 96% rename from BrailleDrivers/LogText/help.txt rename to Drivers/Braille/LogText/help.txt index 58b6a949718f215cc457f13dc97a8ebf880a4b8d..6ef277243106702d95a79f2dea502ed99e8677bb 100644 --- a/BrailleDrivers/LogText/help.txt +++ b/Drivers/Braille/LogText/help.txt @@ -1,4 +1,4 @@ -LogText hjælp +Help for All Models (Danish) Specielle kommandoer til brltty startes med dot 37, efterfulgt af nedenstående koder. diff --git a/BrailleDrivers/MDV/reldeps.mk b/Drivers/Braille/LogText/reldeps.mk similarity index 100% rename from BrailleDrivers/MDV/reldeps.mk rename to Drivers/Braille/LogText/reldeps.mk diff --git a/BrailleDrivers/MDV/Makefile.in b/Drivers/Braille/MDV/Makefile.in similarity index 82% rename from BrailleDrivers/MDV/Makefile.in rename to Drivers/Braille/MDV/Makefile.in index 03619b2adc66ae1c1e5e6b99a3fea5bff224449d..e816092f5f88b188791e8ab56501a882080b24e1 100644 --- a/BrailleDrivers/MDV/Makefile.in +++ b/Drivers/Braille/MDV/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/MDV/README b/Drivers/Braille/MDV/README similarity index 100% rename from BrailleDrivers/MDV/README rename to Drivers/Braille/MDV/README diff --git a/BrailleDrivers/MDV/braille.c b/Drivers/Braille/MDV/braille.c similarity index 98% rename from BrailleDrivers/MDV/braille.c rename to Drivers/Braille/MDV/braille.c index 65f9a8bd621ef71b49c6dc55bbd84d4a7f994c4e..4d2049e5d047d7bff67bae332703e3eca65963d8 100644 --- a/BrailleDrivers/MDV/braille.c +++ b/Drivers/Braille/MDV/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -61,7 +62,7 @@ #include "misc.h" -#define BRLSTAT ST_MDVStyle +#define BRL_STATUS_FIELDS sfWindowCoordinates #define BRL_HAVE_STATUS_CELLS #include "brl_driver.h" #include "braille.h" @@ -370,8 +371,10 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) } brl->helpPage = 0; - brl->x = brl_cols; /* initialize size of display */ - brl->y = BRLROWS; /* always 1 */ + brl->textColumns = brl_cols; /* initialize size of display */ + brl->textRows = BRLROWS; /* always 1 */ + brl->statusColumns = nrstatcells; + brl->statusRows = 1; /* Allocate space for buffers */ /* For portability we want to avoid declarations such as char array[v] @@ -439,9 +442,6 @@ brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) int i; unsigned char *p; - if (brl->x != brl_cols || brl->y != BRLROWS) - return 1; - if(memcmp(prevdata, brl->buffer, brl_cols) == 0 && memcmp(prevstatbuf, statbuf, nrstatcells) == 0) return 1; diff --git a/BrailleDrivers/MDV/braille.h b/Drivers/Braille/MDV/braille.h similarity index 75% rename from BrailleDrivers/MDV/braille.h rename to Drivers/Braille/MDV/braille.h index ec3435860c38f2f44c55da23f8b7b3c779201bd0..0a8c9e8a3a8bc266f51dd07e318ffc2106c6fa0c 100644 --- a/BrailleDrivers/MDV/braille.h +++ b/Drivers/Braille/MDV/braille.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/MDV/help.txt b/Drivers/Braille/MDV/help.txt similarity index 97% rename from BrailleDrivers/MDV/help.txt rename to Drivers/Braille/MDV/help.txt index 16cb1240252e1be295e4ccdc0790871e0bf8a79c..c7076df5e836ede0dc9d1c06643c9d537a21a6b2 100644 --- a/BrailleDrivers/MDV/help.txt +++ b/Drivers/Braille/MDV/help.txt @@ -1,4 +1,4 @@ ----BRLTTY MDV Key Bindings help--- +Help for All Models "CR#" means cursor routing key over text cell number #. diff --git a/BrailleDrivers/LogText/reldeps.mk b/Drivers/Braille/MDV/reldeps.mk similarity index 92% rename from BrailleDrivers/LogText/reldeps.mk rename to Drivers/Braille/MDV/reldeps.mk index 1f55ff4808efe3e3b96edf7f58023e3fadb977dc..ea893c87ecc08d3757624b42360546469700ddd5 100644 --- a/BrailleDrivers/LogText/reldeps.mk +++ b/Drivers/Braille/MDV/reldeps.mk @@ -7,7 +7,6 @@ braille.$O: $(SRC_TOP)Programs/brl.h braille.$O: $(SRC_TOP)Programs/brl_driver.h braille.$O: $(SRC_TOP)Programs/brldefs.h braille.$O: $(SRC_TOP)Programs/driver.h -braille.$O: $(SRC_TOP)Programs/tbl.h braille.$O: $(SRC_DIR)/braille.h braille.$O: $(SRC_TOP)Programs/io_defs.h braille.$O: $(SRC_TOP)Programs/io_serial.h diff --git a/BrailleDrivers/MiniBraille/Makefile.in b/Drivers/Braille/MiniBraille/Makefile.in similarity index 82% rename from BrailleDrivers/MiniBraille/Makefile.in rename to Drivers/Braille/MiniBraille/Makefile.in index 3f2105e022c573b1a20bc9044f758ee2f35bf09d..d9b018420dc569f44626d9b12daba80bed025452 100644 --- a/BrailleDrivers/MiniBraille/Makefile.in +++ b/Drivers/Braille/MiniBraille/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/MiniBraille/README b/Drivers/Braille/MiniBraille/README similarity index 100% rename from BrailleDrivers/MiniBraille/README rename to Drivers/Braille/MiniBraille/README diff --git a/BrailleDrivers/MiniBraille/braille.c b/Drivers/Braille/MiniBraille/braille.c similarity index 95% rename from BrailleDrivers/MiniBraille/braille.c rename to Drivers/Braille/MiniBraille/braille.c index ad40a52561009168d61912d218e17ce95f113748..3a6a9f3dc1c39d8fdfa7d18e5d5b58e96c7e0a33 100644 --- a/BrailleDrivers/MiniBraille/braille.c +++ b/Drivers/Braille/MiniBraille/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -35,7 +36,7 @@ #include "misc.h" #include "message.h" -#define BRLSTAT ST_TiemanStyle +#define BRL_STATUS_FIELDS sfCursorAndWindowColumn, sfCursorAndWindowRow, sfStateDots #define BRL_HAVE_STATUS_CELLS #include "brl_driver.h" @@ -123,7 +124,7 @@ inputFunction_showTime (BrailleDisplay *brl) { const struct tm *local = localtime(&clock); char text[sizeof(textCells) + 1]; strftime(text, sizeof(text), "%Y-%m-%d %H:%M:%S", local); - message(text, 0); + message(NULL, text, 0); return BRL_CMD_NOOP; } @@ -332,7 +333,7 @@ setInputMode (const InputMode *mode) { if (mode->temporary) { char title[sizeof(textCells) + 1]; snprintf(title, sizeof(title), "%s Mode", mode->name); - message(title, MSG_NODELAY|MSG_SILENT); + message(NULL, title, MSG_NODELAY|MSG_SILENT); } inputMode = mode; @@ -374,8 +375,10 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { cursorDots = 0XFF; cursorOffset = sizeof(textCells) / 2; - brl->x = sizeof(textCells); - brl->y = 1; + brl->textColumns = sizeof(textCells); + brl->textRows = 1; + brl->statusColumns = sizeof(statusCells); + brl->statusRows = 1; beep(brl); return 1; diff --git a/BrailleDrivers/MiniBraille/help.txt b/Drivers/Braille/MiniBraille/help.txt similarity index 99% rename from BrailleDrivers/MiniBraille/help.txt rename to Drivers/Braille/MiniBraille/help.txt index 4ea5d3cb3fdabea8abda160dce894a62e8269ad1..33c6f542d84ebbc9ad81fee4051645828adea357 100644 --- a/BrailleDrivers/MiniBraille/help.txt +++ b/Drivers/Braille/MiniBraille/help.txt @@ -1,4 +1,4 @@ -MiniBraille Help +Help for All Models Keys (from left to right): F1 F2 Left Up Center Down Right diff --git a/BrailleDrivers/MiniBraille/reldeps.mk b/Drivers/Braille/MiniBraille/reldeps.mk similarity index 100% rename from BrailleDrivers/MiniBraille/reldeps.mk rename to Drivers/Braille/MiniBraille/reldeps.mk diff --git a/BrailleDrivers/MultiBraille/Makefile.in b/Drivers/Braille/MultiBraille/Makefile.in similarity index 82% rename from BrailleDrivers/MultiBraille/Makefile.in rename to Drivers/Braille/MultiBraille/Makefile.in index fb060457901813614fb937af85b9725cda53123e..2fc83bfa58690d54825d55d76695563bb0ba0d20 100644 --- a/BrailleDrivers/MultiBraille/Makefile.in +++ b/Drivers/Braille/MultiBraille/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/MultiBraille/README b/Drivers/Braille/MultiBraille/README similarity index 99% rename from BrailleDrivers/MultiBraille/README rename to Drivers/Braille/MultiBraille/README index 91af2bcb1ad4fae822a39b6cfba304ecabf36e8c..56b269ff3ffec16fa8028bb34536440a58cb0530 100644 --- a/BrailleDrivers/MultiBraille/README +++ b/Drivers/Braille/MultiBraille/README @@ -9,7 +9,7 @@ Copyright (C) 2000 by Wolfgang Astleitner. This driver is part of BRLTTY, and as such it is placed under the terms of the GNU General Public License, as published by the Free -Software Foundation. Please see the file COPYING in the top-level +Software Foundation. Please see the file LICENSE-GPL in the top-level directory for details. This driver is maintained by Wolfgang Astleitner . diff --git a/BrailleDrivers/MultiBraille/braille.c b/Drivers/Braille/MultiBraille/braille.c similarity index 91% rename from BrailleDrivers/MultiBraille/braille.c rename to Drivers/Braille/MultiBraille/braille.c index 900b32e46e877b9c6a550d726181079e6d576f3e..c54182021ea249039a30ccb66e3e2256bfa19ec1 100644 --- a/BrailleDrivers/MultiBraille/braille.c +++ b/Drivers/Braille/MultiBraille/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -58,7 +59,7 @@ #include "misc.h" -#define BRLSTAT ST_TiemanStyle +#define BRL_STATUS_FIELDS sfCursorAndWindowColumn, sfCursorAndWindowRow, sfStateDots #define BRL_HAVE_STATUS_CELLS #include "brl_driver.h" #include "braille.h" @@ -154,14 +155,16 @@ static int brl_construct (BrailleDisplay *brl, char **parameters, const char *de if (!serialSetFlowControl(MB_serialDevice, SERIAL_FLOW_HARDWARE)) goto failure; if (brlcols == 25) goto failure; /* MultiBraille Vertical uses a different protocol --> not supported */ - if ((brl->x = brlcols) == -1) goto failure; - brl->y = BRLROWS; + brl->textColumns = brlcols; + brl->textRows = BRLROWS; + brl->statusColumns = 5; + brl->statusRows = 1; /* Allocate space for buffers */ - prevdata = mallocWrapper (brl->x * brl->y); + prevdata = mallocWrapper (brl->textColumns * brl->textRows); /* rawdata has to have room for the pre- and post-data sequences, * the status cells, and escaped 0x1b's: */ - rawdata = mallocWrapper (20 + brl->x * brl->y * 2); + rawdata = mallocWrapper (20 + brl->textColumns * brl->textRows * 2); return 1; @@ -187,8 +190,8 @@ static void brl_destruct (BrailleDisplay *brl) { rawlen += pre_data[0]; } /* Clear the five status cells and the main display: */ - memset (rawdata + rawlen, 0, 5 + 1+ brl->x * brl->y); - rawlen += 5 + 1 + brl->x * brl->y; /* +1 is for dummy module */ + memset (rawdata + rawlen, 0, 5 + 1+ brl->textColumns * brl->textRows); + rawlen += 5 + 1 + brl->textColumns * brl->textRows; /* +1 is for dummy module */ if (post_data[0]) { memcpy (rawdata + rawlen, post_data + 1, post_data[0]); rawlen += post_data[0]; @@ -224,12 +227,12 @@ static int brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) { unsigned char *post_data = (unsigned char *)"\001\015"; /* Only refresh display if the data has changed: */ - if (memcmp (brl->buffer, prevdata, brl->x * brl->y) || memcmp (status, oldstatus, 5)) { + if (memcmp (brl->buffer, prevdata, brl->textColumns * brl->textRows) || memcmp (status, oldstatus, 5)) { /* Save new Braille data: */ - memcpy (prevdata, brl->buffer, brl->x * brl->y); + memcpy (prevdata, brl->buffer, brl->textColumns * brl->textRows); /* Dot mapping from standard to MultiBraille: */ - for (i = 0; i < brl->x * brl->y; brl->buffer[i] = outputTable[brl->buffer[i]], i++); + for (i = 0; i < brl->textColumns * brl->textRows; brl->buffer[i] = outputTable[brl->buffer[i]], i++); rawlen = 0; if (pre_data[0]) { @@ -250,7 +253,7 @@ static int brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) { /* write braille message itself */ - for (i = 0; i < brl->x * brl->y; i++) { + for (i = 0; i < brl->textColumns * brl->textRows; i++) { rawdata[rawlen++] = brl->buffer[i]; } @@ -341,11 +344,12 @@ static struct KeyStroke getbrlkey (void) { c_temp = c; keystroke.block = EOF; /* invalid / not supported keystroke */ serialReadData (MB_serialDevice, &c, 1, 0, 0); /* read keynumber */ - /* keystroke.key = c; */ + keystroke.key = 0; /* LogPrint(LOG_NOTICE, "MultiBraille.o: Ignored: Key=%d, Block=%c", keystroke.key, c_temp); */ return keystroke; } } keystroke.block = EOF; + keystroke.key = 0; return keystroke; } diff --git a/BrailleDrivers/MultiBraille/braille.h b/Drivers/Braille/MultiBraille/braille.h similarity index 90% rename from BrailleDrivers/MultiBraille/braille.h rename to Drivers/Braille/MultiBraille/braille.h index 18e80a676722325cc01f859b5f741215c5b877ef..2222d55ec4c9ab55990113f52a9815e25ac0780b 100644 --- a/BrailleDrivers/MultiBraille/braille.h +++ b/Drivers/Braille/MultiBraille/braille.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/MultiBraille/help.txt b/Drivers/Braille/MultiBraille/help.txt similarity index 97% rename from BrailleDrivers/MultiBraille/help.txt rename to Drivers/Braille/MultiBraille/help.txt index e0e1ee762e0b560d9b3ab4d047d7eacdc3214af4..51960ead23d3d9a8c7865195db19905aaf30ab94 100644 --- a/BrailleDrivers/MultiBraille/help.txt +++ b/Drivers/Braille/MultiBraille/help.txt @@ -1,4 +1,4 @@ -BRLTTY Help Screen (MultiBraille) +Help for All Models Movement keys: 321 top of screen diff --git a/BrailleDrivers/MultiBraille/reldeps.mk b/Drivers/Braille/MultiBraille/reldeps.mk similarity index 100% rename from BrailleDrivers/MultiBraille/reldeps.mk rename to Drivers/Braille/MultiBraille/reldeps.mk diff --git a/BrailleDrivers/MultiBraille/tables.h b/Drivers/Braille/MultiBraille/tables.h similarity index 97% rename from BrailleDrivers/MultiBraille/tables.h rename to Drivers/Braille/MultiBraille/tables.h index f61bc6ed1ee89dad566e39d523392dbf3f0eb14a..5364c131a8e1720481210e8396c75347f3165d89 100644 --- a/BrailleDrivers/MultiBraille/tables.h +++ b/Drivers/Braille/MultiBraille/tables.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/Papenmeier/Makefile.in b/Drivers/Braille/Papenmeier/Makefile.in similarity index 82% rename from BrailleDrivers/Papenmeier/Makefile.in rename to Drivers/Braille/Papenmeier/Makefile.in index fe3250d6e211f89eedafa682c5e53c83f93294a3..e6fc25dbdd5c39591bc30712147355928e14a04e 100644 --- a/BrailleDrivers/Papenmeier/Makefile.in +++ b/Drivers/Braille/Papenmeier/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # @@ -28,13 +29,16 @@ PM_CMD_SOURCES = $(SRC_TOP)$(PGM_DIR)/brldefs.h $(SRC_DIR)/brl-cfg.h braille.$O: $(CC) $(BRL_CFLAGS) $(YACC_CFLAGS) -c $(SRC_DIR)/braille.c -READ_CONFIG_OBJECTS = read_config.$O $(BLD_TOP)$(PGM_DIR)/cmd.$O $(BLD_TOP)$(PGM_DIR)/charset.$O $(BLD_TOP)$(PGM_DIR)/lock.$O $(BLD_TOP)$(PGM_DIR)/host_misc.$O $(BLD_TOP)$(PGM_DIR)/host_io_misc.$O $(BLD_TOP)$(PGM_DIR)/host_queue.$O $(BLD_TOP)$(PGM_DIR)/host_async.$O $(BLD_TOP)$(PGM_DIR)/host_keyboard.$O $(BLD_TOP)$(PGM_DIR)/host_$(SYSTEM_OBJECT) +READ_CONFIG_OBJECTS = read_config.$O $(BLD_TOP)$(PGM_DIR)/host_cmd.$O $(BLD_TOP)$(PGM_DIR)/host_ttb_translate.$O $(BLD_TOP)$(PGM_DIR)/host_charset.$O $(BLD_TOP)$(PGM_DIR)/host_lock.$O $(BLD_TOP)$(PGM_DIR)/host_misc.$O $(BLD_TOP)$(PGM_DIR)/host_io_misc.$O $(BLD_TOP)$(PGM_DIR)/host_queue.$O $(BLD_TOP)$(PGM_DIR)/host_async.$O $(BLD_TOP)$(PGM_DIR)/host_keycodes.$O $(BLD_TOP)$(PGM_DIR)/host_keyboard.$O $(BLD_TOP)$(PGM_DIR)/host_$(SYSTEM_OBJECT) read_config$X: $(READ_CONFIG_OBJECTS) $(HOSTCC) $(HOSTLDFLAGS) -o $@ $(READ_CONFIG_OBJECTS) $(LDLIBS) read_config.$O: $(HOSTCC) $(HOSTCFLAGS) $(YACC_CFLAGS) -c $(SRC_DIR)/read_config.c +$(BLD_TOP)$(PGM_DIR)/%.$O: + cd $(@D) && $(MAKE) $(@F) + config.tab.c: $(YACC) -b config -v $(SRC_DIR)/config.y diff --git a/BrailleDrivers/Papenmeier/README b/Drivers/Braille/Papenmeier/README similarity index 99% rename from BrailleDrivers/Papenmeier/README rename to Drivers/Braille/Papenmeier/README index 6108575eecdbd13352db3177adf2b656bef0fbe6..9e70d2218798494a84b58c9d583dfc85eb052569 100644 --- a/BrailleDrivers/Papenmeier/README +++ b/Drivers/Braille/Papenmeier/README @@ -7,7 +7,7 @@ Copyright ========= This driver is copyrighted under the GNU Public License. It is free -software. See the file '../../COPYING' for more details. Feel free to send +software. See the file 'LICENSE-GPL' for more details. Feel free to send your comments and to report bugs (if any :)) to us at august.hoerandl@gmx.at or heimo.schoen@gmx.at diff --git a/BrailleDrivers/Papenmeier/braille.c b/Drivers/Braille/Papenmeier/braille.c similarity index 99% rename from BrailleDrivers/Papenmeier/braille.c rename to Drivers/Braille/Papenmeier/braille.c index 302b8064ab7b61bb1f26260dbdecafb40da0014a..a481186e277f67fad1ea3a2bef6d992d0ad7be75 100644 --- a/BrailleDrivers/Papenmeier/braille.c +++ b/Drivers/Braille/Papenmeier/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -40,6 +41,7 @@ #include #include "misc.h" +#include "message.h" typedef enum { PARM_CONFIGFILE, @@ -49,7 +51,7 @@ typedef enum { } DriverParameter; #define BRLPARMS "configfile", "debugkeys", "debugreads", "debugwrites" -#define BRLSTAT ST_Generic +#define BRL_STATUS_FIELDS sfGeneric #define BRL_HAVE_STATUS_CELLS #define BRL_HAVE_FIRMNESS #define BRLCONST @@ -217,7 +219,7 @@ handleCommand (BrailleDisplay *brl, int cmd, int repeat) { const char *right = states[(currentModifiers >> 2) & 0X3]; char buffer[20]; snprintf(buffer, sizeof(buffer), "%-6s %-6s", left, right); - showBrailleString(brl, buffer, 2000); + message(NULL, buffer, MSG_SILENT); return BRL_CMD_NOOP; } } @@ -395,7 +397,6 @@ openUsbPort (char **parameters, const char *device) { }; if ((usb = usbFindChannel(definitions, (void *)device))) { - usbBeginInput(usb->device, usb->definition.inputEndpoint, 8); return 1; } return 0; @@ -543,8 +544,10 @@ interpretIdentity (BrailleDisplay *brl, unsigned char id, int major, int minor) terminal->modelName, terminal->textColumns, terminal->textRows, terminal->helpFile); - brl->x = terminal->textColumns; - brl->y = terminal->textRows; + brl->textColumns = terminal->textColumns; + brl->textRows = terminal->textRows; + brl->statusColumns = terminal->statusCount; + brl->statusRows = 1; /* TODO: ?? HACK */ BRLSYMBOL.helpFile = terminal->helpFile; diff --git a/BrailleDrivers/Papenmeier/braille.h b/Drivers/Braille/Papenmeier/braille.h similarity index 85% rename from BrailleDrivers/Papenmeier/braille.h rename to Drivers/Braille/Papenmeier/braille.h index b665a1595469fe6951dab70be1a761f62f384a96..eb330d840943630c5bf4dd924899ec18dcb4bc0d 100644 --- a/BrailleDrivers/Papenmeier/braille.h +++ b/Drivers/Braille/Papenmeier/braille.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/Papenmeier/brl-cfg.h b/Drivers/Braille/Papenmeier/brl-cfg.h similarity index 99% rename from BrailleDrivers/Papenmeier/brl-cfg.h rename to Drivers/Braille/Papenmeier/brl-cfg.h index 4a4186d3bef0a1931d41e9c02a53c70c9f920af3..564c64042f6f5d7c7807f5ecd83773fe2c15b486 100644 --- a/BrailleDrivers/Papenmeier/brl-cfg.h +++ b/Drivers/Braille/Papenmeier/brl-cfg.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/Papenmeier/cmd.awk b/Drivers/Braille/Papenmeier/cmd.awk similarity index 84% rename from BrailleDrivers/Papenmeier/cmd.awk rename to Drivers/Braille/Papenmeier/cmd.awk index 642f18c10f129b2d66a0e0fe8e9fb52fb8e70a5e..ede8357d1c8823835742ae559f28e00d75c877a3 100644 --- a/BrailleDrivers/Papenmeier/cmd.awk +++ b/Drivers/Braille/Papenmeier/cmd.awk @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/Papenmeier/config.y b/Drivers/Braille/Papenmeier/config.y similarity index 98% rename from BrailleDrivers/Papenmeier/config.y rename to Drivers/Braille/Papenmeier/config.y index 76406e650c9e4a8c56875110c425385a71632c10..3c15c1cb616af76521ec333294e54fd41fd7ef83 100644 --- a/BrailleDrivers/Papenmeier/config.y +++ b/Drivers/Braille/Papenmeier/config.y @@ -3,13 +3,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Drivers/Braille/Papenmeier/help.txt b/Drivers/Braille/Papenmeier/help.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/BrailleDrivers/Papenmeier/hlp.awk b/Drivers/Braille/Papenmeier/hlp.awk similarity index 80% rename from BrailleDrivers/Papenmeier/hlp.awk rename to Drivers/Braille/Papenmeier/hlp.awk index b63482e792e4a1c8557ee7ac191748cda3b2f28e..e113382db0f09adcf06e9962de2a8154197f5bca 100644 --- a/BrailleDrivers/Papenmeier/hlp.awk +++ b/Drivers/Braille/Papenmeier/hlp.awk @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/Papenmeier/read_config.c b/Drivers/Braille/Papenmeier/read_config.c similarity index 98% rename from BrailleDrivers/Papenmeier/read_config.c rename to Drivers/Braille/Papenmeier/read_config.c index e6343ea254d9f1f8b5529162713fc44b11ba6518..b4f5d39b38eeb3e75e856fd3fa1b94fe78551000 100644 --- a/BrailleDrivers/Papenmeier/read_config.c +++ b/Drivers/Braille/Papenmeier/read_config.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/Papenmeier/reldeps.mk b/Drivers/Braille/Papenmeier/reldeps.mk similarity index 96% rename from BrailleDrivers/Papenmeier/reldeps.mk rename to Drivers/Braille/Papenmeier/reldeps.mk index e6ff89a310af1871f6203d2564f3ec0fcd7b10f1..10ee8be9e271137c978fb0b99e0b6b18990ee129 100644 --- a/BrailleDrivers/Papenmeier/reldeps.mk +++ b/Drivers/Braille/Papenmeier/reldeps.mk @@ -3,6 +3,7 @@ braille.$O: $(SRC_DIR)/braille.c braille.$O: $(BLD_TOP)config.h braille.$O: $(SRC_TOP)prologue.h braille.$O: $(SRC_TOP)Programs/misc.h +braille.$O: $(SRC_TOP)Programs/message.h braille.$O: $(SRC_TOP)Programs/brl.h braille.$O: $(SRC_TOP)Programs/brl_driver.h braille.$O: $(SRC_TOP)Programs/brldefs.h diff --git a/BrailleDrivers/Papenmeier/test.1.in b/Drivers/Braille/Papenmeier/test.1.in similarity index 100% rename from BrailleDrivers/Papenmeier/test.1.in rename to Drivers/Braille/Papenmeier/test.1.in diff --git a/BrailleDrivers/Papenmeier/test.2.in b/Drivers/Braille/Papenmeier/test.2.in similarity index 100% rename from BrailleDrivers/Papenmeier/test.2.in rename to Drivers/Braille/Papenmeier/test.2.in diff --git a/BrailleDrivers/BrailleSense/Makefile.in b/Drivers/Braille/Pegasus/Makefile.in similarity index 75% rename from BrailleDrivers/BrailleSense/Makefile.in rename to Drivers/Braille/Pegasus/Makefile.in index 86a0057165c948f0c2c0d8d5bf06e07e54019b28..fe442a3b70b58bfa5451208f235444dbf4be1b54 100644 --- a/BrailleDrivers/BrailleSense/Makefile.in +++ b/Drivers/Braille/Pegasus/Makefile.in @@ -2,22 +2,23 @@ # 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-2007 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # # This software is maintained by Dave Mielke . ############################################################################### -DRIVER_CODE = bs -DRIVER_NAME = BrailleSense -DRIVER_COMMENT = BrailleSense, SyncBraille +DRIVER_CODE = pg +DRIVER_NAME = Pegasus +DRIVER_COMMENT = 20/27/40/80 DRIVER_VERSION = DRIVER_DEVELOPERS = Dave Mielke HELP_DEPS = $(HELP_TEXT) diff --git a/Drivers/Braille/Pegasus/braille.c b/Drivers/Braille/Pegasus/braille.c new file mode 100644 index 0000000000000000000000000000000000000000..d95e3f751014b310c7f0892e5823a6cb56dcd7ab --- /dev/null +++ b/Drivers/Braille/Pegasus/braille.c @@ -0,0 +1,636 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#include "prologue.h" + +#include +#include + +#include "misc.h" + +//#define BRL_STATUS_FIELDS sf... +#define BRL_HAVE_STATUS_CELLS +#include "brl_driver.h" + +static const int logInputPackets = 0; +static const int logOutputPackets = 0; + +static const char productPrefix[] = "PBC"; +static const unsigned char productPrefixLength = sizeof(productPrefix) - 1; + +static int routingCommand; +static int rewriteRequired; +static unsigned char textCells[80]; +static unsigned char statusCells[2]; +static TranslationTable outputTable; + +typedef struct { + int (*identifyModel) (BrailleDisplay *brl); + int (*writeCells) (BrailleDisplay *brl, const unsigned char *cells, unsigned int count); +} InputOutputMethods; + +typedef struct { + int (*openPort) (const char *device); + int (*configurePort) (void); + void (*closePort) (); + int (*awaitInput) (int milliseconds); + int (*readBytes) (unsigned char *buffer, int length, int wait); + int (*writeBytes) (const unsigned char *buffer, int length); + const InputOutputMethods *methods; +} InputOutputOperations; +static const InputOutputOperations *io; + +typedef enum { + IPT_KEY_NAVIGATION = 0X13, + IPT_KEY_SIMULATION = 0XFE, + IPT_KEY_ROUTING = 0XFF +} InputPacketType; + +typedef union { + unsigned char bytes[1]; + + char product[44 + 1]; + + struct { + unsigned char type; + + union { + struct { + unsigned char type; + unsigned char value; + unsigned char release; + } PACKED key; + } fields; + } PACKED data; +} PACKED InputPacket; + +static void +setCellCounts (BrailleDisplay *brl, int size) { + brl->statusColumns = ARRAY_COUNT(statusCells); + brl->statusRows = 1; + brl->textColumns = size - brl->statusColumns; + brl->textRows = 1; +} + +static int +getCellCounts (BrailleDisplay *brl, char *product) { + unsigned int length = strlen(product); + + { + static const unsigned char indexes[] = {3, 42, 0}; + const unsigned char *index = indexes; + + while (*index) { + if (*index < length) { + unsigned char size = product[*index]; + static const unsigned char sizes[] = {22, 29, 42, 82}; + + if (memchr(sizes, size, sizeof(sizes))) { + setCellCounts(brl, size); + return 1; + } + } + + index += 1; + } + } + + { + static const char delimiters[] = " "; + char *word; + + if ((word = strtok(product, delimiters))) { + if (strncmp(word, productPrefix, productPrefixLength) == 0) { + if ((word = strtok(NULL, delimiters))) { + int size; + + if (!(*word && isInteger(&size, word))) size = 0; + while (strtok(NULL, delimiters)); + + if ((size > ARRAY_COUNT(statusCells)) && + (size <= (ARRAY_COUNT(statusCells) + ARRAY_COUNT(textCells)))) { + setCellCounts(brl, size); + return 1; + } + } + } + } + } + + return 0; +} + +static int +readByte (unsigned char *byte, int wait) { + int count = io->readBytes(byte, 1, wait); + if (count > 0) return 1; + + if (count == 0) errno = EAGAIN; + return 0; +} + +static int +readPacket (BrailleDisplay *brl, InputPacket *packet) { + typedef enum { + IPG_PRODUCT, + IPG_KEY, + IPG_DEFAULT + } InputPacketGroup; + InputPacketGroup group = IPG_DEFAULT; + + int length = 1; + int offset = 0; + + while (1) { + unsigned char byte; + + { + int started = offset > 0; + if (!readByte(&byte, started)) { + if (started) LogBytes(LOG_WARNING, "Partial Packet", packet->bytes, offset); + return 0; + } + } + + gotByte: + if (!offset) { + switch (byte) { + case IPT_KEY_NAVIGATION: + case IPT_KEY_SIMULATION: + case IPT_KEY_ROUTING: + group = IPG_KEY; + length = 4; + break; + + default: + if (byte == productPrefix[0]) { + group = IPG_PRODUCT; + length = sizeof(packet->product) - 1; + } else { + LogBytes(LOG_WARNING, "Ignored Byte", &byte, 1); + continue; + } + break; + } + } else { + int unexpected = 0; + + switch (group) { + case IPG_PRODUCT: + if (offset < productPrefixLength) { + if (byte != productPrefix[offset]) unexpected = 1; + } else if (byte == '@') { + length = offset + 1; + } + break; + + case IPG_KEY: + if (offset == 1) { + if (byte != packet->bytes[0]) unexpected = 1; + } else if (offset == 3) { + if (byte != 0X19) unexpected = 1; + } + break; + + default: + break; + } + + if (unexpected) { + LogBytes(LOG_WARNING, "Short Packet", packet->bytes, offset); + group = IPG_DEFAULT; + offset = 0; + length = 1; + goto gotByte; + } + } + + packet->bytes[offset++] = byte; + if (offset == length) { + if (group == IPG_PRODUCT) { + packet->bytes[length] = 0; + } + + if (logInputPackets) LogBytes(LOG_DEBUG, "Input Packet", packet->bytes, offset); + return length; + } + } +} + +static int +writeBytes (BrailleDisplay *brl, const unsigned char *buffer, int count) { + if (logOutputPackets) LogBytes(LOG_DEBUG, "Output Packet", buffer, count); + if (io->writeBytes(buffer, count) != -1) return 1; + return 0; +} + +static int +writeCells (BrailleDisplay *brl) { + unsigned int textCount = brl->textColumns; + unsigned int statusCount = brl->statusColumns; + unsigned char cells[textCount + statusCount]; + unsigned char *cell = cells; + + while (textCount) *cell++ = outputTable[textCells[--textCount]]; + while (statusCount) *cell++ = outputTable[statusCells[--statusCount]]; + + return io->methods->writeCells(brl, cells, cell-cells); +} + +static void +updateCells (unsigned char *target, const unsigned char *source, int count) { + if (memcmp(target, source, count) != 0) { + memcpy(target, source, count); + rewriteRequired = 1; + } +} + +/* Serial IO */ +#include "io_serial.h" + +static SerialDevice *serialDevice = NULL; +#define SERIAL_BAUD 9600 + +static int +openSerialPort (const char *device) { + if ((serialDevice = serialOpenDevice(device))) { + if (serialRestartDevice(serialDevice, SERIAL_BAUD)) { + return 1; + } + + serialCloseDevice(serialDevice); + serialDevice = NULL; + } + + return 0; +} + +static int +configureSerialPort (void) { + if (!serialSetFlowControl(serialDevice, SERIAL_FLOW_HARDWARE)) return 0; + return 1; +} + +static void +closeSerialPort (void) { + if (serialDevice) { + serialCloseDevice(serialDevice); + serialDevice = NULL; + } +} + +static int +awaitSerialInput (int milliseconds) { + return serialAwaitInput(serialDevice, milliseconds); +} + +static int +readSerialBytes (unsigned char *buffer, int count, int wait) { + const int timeout = 100; + return serialReadData(serialDevice, buffer, count, + (wait? timeout: 0), timeout); +} + +static int +writeSerialBytes (const unsigned char *buffer, int length) { + return serialWriteData(serialDevice, buffer, length); +} + +static int +identifySerialModel (BrailleDisplay *brl) { + static const unsigned char request[] = {0X40, 0X50, 0X53}; + + if (writeBytes(brl, request, sizeof(request))) { + while (io->awaitInput(1000)) { + InputPacket response; + + while (readPacket(brl, &response)) { + if (response.data.type == productPrefix[0]) { + if (getCellCounts(brl, response.product)) { + brl->helpPage = 0; + return 1; + } + } + } + } + } + + return 0; +} + +static int +writeSerialCells (BrailleDisplay *brl, const unsigned char *cells, unsigned int count) { + static const unsigned char header[] = {0X40, 0X50, 0X4F}; + static const unsigned char trailer[] = {0X18, 0X20, 0X20}; + + unsigned char buffer[sizeof(header) + count + sizeof(trailer)]; + unsigned char *byte = buffer; + + memcpy(byte, header, sizeof(header)); + byte += sizeof(header); + + memcpy(byte, cells, count); + byte += count; + + memcpy(byte, trailer, sizeof(trailer)); + byte += sizeof(trailer); + + return writeBytes(brl, buffer, byte-buffer); +} + +static const InputOutputMethods serialMethods = { + identifySerialModel, writeSerialCells +}; + +static const InputOutputOperations serialOperations = { + openSerialPort, configureSerialPort, closeSerialPort, + awaitSerialInput, readSerialBytes, writeSerialBytes, + &serialMethods +}; + +#ifdef ENABLE_USB_SUPPORT +/* USB IO */ +#include "io_usb.h" + +static UsbChannel *usbChannel = NULL; + +static int +openUsbPort (const char *device) { + static const UsbChannelDefinition definitions[] = { + { + .vendor=0X4242, .product=0X0001, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=2 + } + , + { .vendor=0 } + }; + + if ((usbChannel = usbFindChannel(definitions, (void *)device))) { + return 1; + } + return 0; +} + +static int +configureUsbPort (void) { + return 1; +} + +static void +closeUsbPort (void) { + if (usbChannel) { + usbCloseChannel(usbChannel); + usbChannel = NULL; + } +} + +static int +awaitUsbInput (int milliseconds) { + return usbAwaitInput(usbChannel->device, + usbChannel->definition.inputEndpoint, + milliseconds); +} + +static int +readUsbBytes (unsigned char *buffer, int length, int wait) { + const int timeout = 100; + int count = usbReapInput(usbChannel->device, + usbChannel->definition.inputEndpoint, + buffer, length, + (wait? timeout: 0), timeout); + if (count != -1) return count; + if (errno == EAGAIN) return 0; + return -1; +} + +static int +writeUsbBytes (const unsigned char *buffer, int length) { + return usbWriteEndpoint(usbChannel->device, + usbChannel->definition.outputEndpoint, + buffer, length, 1000); +} + +static int +identifyUsbModel (BrailleDisplay *brl) { + int ok = 0; + char *product; + + if ((product = usbGetProduct(usbChannel->device, 1000))) { + if (getCellCounts(brl, product)) { + ok = 1; + } + + free(product); + } + + return ok; +} + +static int +writeUsbCells (BrailleDisplay *brl, const unsigned char *cells, unsigned int count) { + unsigned char buffer[1 + count]; + unsigned char *byte = buffer; + + *byte++ = 0X43; + + memcpy(byte, cells, count); + byte += count; + + return writeBytes(brl, buffer, byte-buffer); +} + +static const InputOutputMethods usbMethods = { + identifyUsbModel, writeUsbCells +}; + +static const InputOutputOperations usbOperations = { + openUsbPort, configureUsbPort, closeUsbPort, + awaitUsbInput, readUsbBytes, writeUsbBytes, + &usbMethods +}; +#endif /* ENABLE_USB_SUPPORT */ + +static int +brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { + { + static const DotsTable dots = {0X01, 0X02, 0X04, 0X08, 0X10, 0X20, 0X40, 0X80}; + makeOutputTable(dots, outputTable); + } + + if (isSerialDevice(&device)) { + io = &serialOperations; + } else + +#ifdef ENABLE_USB_SUPPORT + if (isUsbDevice(&device)) { + io = &usbOperations; + } else +#endif /* ENABLE_USB_SUPPORT */ + + { + unsupportedDevice(device); + return 0; + } + + if (io->openPort(device)) { + if (io->methods->identifyModel(brl)) { + routingCommand = BRL_BLK_ROUTE; + rewriteRequired = 1; + memset(textCells, 0, sizeof(textCells)); + memset(statusCells, 0, sizeof(statusCells)); + + if (io->configurePort()) return 1; + } + + io->closePort(); + } + + return 0; +} + +static void +brl_destruct (BrailleDisplay *brl) { + io->closePort(); +} + +static int +brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) { + updateCells(textCells, brl->buffer, brl->textColumns); + + if (rewriteRequired) { + if (!writeCells(brl)) return 0; + rewriteRequired = 0; + } + + return 1; +} + +static int +brl_writeStatus (BrailleDisplay *brl, const unsigned char *cells) { + updateCells(statusCells, cells, brl->statusColumns); + return 1; +} + +static int +interpretNavigationKey (unsigned char key) { +#define CMD(keys,cmd) case (keys): return (cmd) +#define BLK(keys,blk) case (keys): routingCommand = (blk); return BRL_CMD_NOOP + switch (key) { + CMD(0X15, BRL_CMD_FWINLT); /* left */ + CMD(0X4D, BRL_CMD_FWINRT); /* right */ + CMD(0X3D, BRL_CMD_LNUP); /* up */ + CMD(0X54, BRL_CMD_LNDN); /* down */ + + CMD(0X16, BRL_CMD_TOP_LEFT); /* home */ + CMD(0X1C, BRL_CMD_BOT_LEFT); /* enter */ + CMD(0X36, BRL_CMD_RETURN); /* end */ + CMD(0X2C, BRL_CMD_CSRTRK); /* escape */ + + CMD(0X27, BRL_CMD_ATTRUP); /* left-control + left */ + CMD(0X28, BRL_CMD_ATTRDN); /* left-control + right */ + CMD(0X21, BRL_CMD_PRDIFLN); /* left-control + up */ + CMD(0X22, BRL_CMD_NXDIFLN); /* left-control + down */ + + CMD(0X3F, BRL_CMD_FREEZE); /* left-control + enter */ + CMD(0X2F, BRL_CMD_PREFMENU); /* left-control + end */ + CMD(0X56, BRL_CMD_INFO); /* left-control + escape */ + + CMD(0X1F, BRL_CMD_DISPMD); /* left-shift + left */ + CMD(0X20, BRL_CMD_SIXDOTS); /* left-shift + right */ + CMD(0X5B, BRL_CMD_CSRJMP_VERT); /* left-shift + down */ + + CMD(0X17, BRL_CMD_PRPROMPT); /* left-shift + home */ + CMD(0X3A, BRL_CMD_NXPROMPT); /* left-shift + enter */ + CMD(0X3B, BRL_CMD_PRPGRPH); /* left-shift + end */ + CMD(0X18, BRL_CMD_NXPGRPH); /* left-shift + escape */ + + BLK(0X37, BRL_BLK_SETLEFT); /* right-shift + left */ + CMD(0X33, BRL_CMD_PASTE); /* right-shift + right */ + BLK(0X38, BRL_BLK_DESCCHAR); /* right-shift + down */ + + BLK(0X2A, BRL_BLK_CUTBEGIN); /* right-shift + home */ + BLK(0X31, BRL_BLK_CUTAPPEND); /* right-shift + enter */ + BLK(0X32, BRL_BLK_CUTLINE); /* right-shift + end */ + BLK(0X30, BRL_BLK_CUTRECT); /* right-shift + escape */ + + default: + break; + } +#undef BLK +#undef CMD + + return EOF; +} + +static int +interpretSimulationKey (unsigned char key) { + switch (key) { + default: + break; + } + + return interpretNavigationKey(key); +} + +static int +brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { + InputPacket packet; + int length; + + while ((length = readPacket(brl, &packet))) { + int routing = routingCommand; + + routingCommand = BRL_BLK_ROUTE; + + switch (packet.data.type) { + case IPT_KEY_NAVIGATION: { + int command = interpretNavigationKey(packet.data.fields.key.value); + if (command != EOF) return command; + break; + } + + case IPT_KEY_SIMULATION: { + int command = interpretSimulationKey(packet.data.fields.key.value); + if (command != EOF) return command; + break; + } + + case IPT_KEY_ROUTING: { + unsigned char key = packet.data.fields.key.value; + + switch (key) { + case 81: /* status 1 */ + return BRL_CMD_HELP; + case 82: /* status 2 */ + return BRL_CMD_LEARN; + + default: + if ((key > 0) && (key <= brl->textColumns)) return routing + key - 1; + break; + } + break; + } + } + + LogBytes(LOG_WARNING, "Unexpected Packet", packet.bytes, length); + } + + if (errno != EAGAIN) return BRL_CMD_RESTARTBRL; + return EOF; +} diff --git a/Drivers/Braille/Pegasus/help0.txt b/Drivers/Braille/Pegasus/help0.txt new file mode 100644 index 0000000000000000000000000000000000000000..fca45d8d60fe268191617e59afdc5679c6c54f27 --- /dev/null +++ b/Drivers/Braille/Pegasus/help0.txt @@ -0,0 +1,40 @@ +Help for Pegasus + +Legend: +Controls: ls: left-shift, lc: left-control, rc: right-control, rs: right-shift +Diamonds: left, right, up, down +Squares: tl: top-left, tr: top-right, bl: bottom-left, br: bottom-right +Top: rn: routing-key, sn: status-key + +left/right: go left/right one full window +up/down: go up/down one line +tl/bl: go to beginning of top/bottom line +tr: go to cursor or undo last cursor tracking motion +br: toggle cursor tracking + +lc + left/right: go to previous/next line with different highlighting +lc + up/down: go to previous/next line with different content +lc+tl: switch to internal menu +lc+bl: freeze/unfreeze screen image +lc+tr: switch to/from preferences menu +lc+br: switch to/from status line + +ls+left: toggle attributes/text display +ls+right: toggle 6/8-dot braille +ls+up: bring cursor to character +ls+down: bring cursor to line +ls + tl/bl: go to previous/next command prompt +ls + tr/br: go to last/first line of previous/next paragraph + +rs+left, rn: position left end of window at character +rs+right: paste cut buffer at cursor +rs+up: bring cursor to character +rs+down, rn: describe character +rs+tl, rn: start new cut buffer at character +rs+bl, rn: append to cut buffer from character +rs+tr, rn: Linear cut to character +rs+br, rn: rectangular cut to character + +rn: bring cursor to character +s1: switch to/from help page +s2: switch to/from learn mode diff --git a/BrailleDrivers/Voyager/reldeps.mk b/Drivers/Braille/Pegasus/reldeps.mk similarity index 92% rename from BrailleDrivers/Voyager/reldeps.mk rename to Drivers/Braille/Pegasus/reldeps.mk index 4ee9797c519c51e878139e8915e7ceecf91bbb03..ff75ccec62c9dba3bec9db773a5aed239ece3804 100644 --- a/BrailleDrivers/Voyager/reldeps.mk +++ b/Drivers/Braille/Pegasus/reldeps.mk @@ -7,7 +7,6 @@ braille.$O: $(SRC_TOP)Programs/brl.h braille.$O: $(SRC_TOP)Programs/brl_driver.h braille.$O: $(SRC_TOP)Programs/brldefs.h braille.$O: $(SRC_TOP)Programs/driver.h -braille.$O: $(SRC_TOP)Programs/tbl.h braille.$O: $(SRC_TOP)Programs/io_defs.h braille.$O: $(SRC_TOP)Programs/io_serial.h braille.$O: $(SRC_TOP)Programs/io_usb.h diff --git a/BrailleDrivers/Baum/Makefile.in b/Drivers/Braille/Seika/Makefile.in similarity index 76% rename from BrailleDrivers/Baum/Makefile.in rename to Drivers/Braille/Seika/Makefile.in index 770aa0d85f280fa932e0f72c9178a9e8abc17c0c..ff61d960f748a23d71bebf3fe8f9d7522945eee8 100644 --- a/BrailleDrivers/Baum/Makefile.in +++ b/Drivers/Braille/Seika/Makefile.in @@ -2,22 +2,23 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # # This software is maintained by Dave Mielke . ############################################################################### -DRIVER_CODE = bm -DRIVER_NAME = Baum -DRIVER_COMMENT = +DRIVER_CODE = sk +DRIVER_NAME = Seika +DRIVER_COMMENT = 40 DRIVER_VERSION = DRIVER_DEVELOPERS = Dave Mielke HELP_DEPS = $(HELP_TEXT) diff --git a/Drivers/Braille/Seika/braille.c b/Drivers/Braille/Seika/braille.c new file mode 100644 index 0000000000000000000000000000000000000000..b35ce47d717cc638d5c2049c690b3db95acaee25 --- /dev/null +++ b/Drivers/Braille/Seika/braille.c @@ -0,0 +1,874 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#include "prologue.h" + +#include +#include + +#include "misc.h" + +#include "brl_driver.h" + +typedef enum { + IPT_identity, + IPT_keys, + IPT_routing +} InputPacketType; + +typedef enum { + KEY_K1 = 0X0001, + KEY_K7 = 0X0002, + KEY_K8 = 0X0004, + KEY_K6 = 0X0008, + KEY_K5 = 0X0010, + KEY_K2 = 0X0200, + KEY_K3 = 0X0800, + KEY_K4 = 0X1000, +} BrailleKeys; + +typedef struct { + unsigned char bytes[24]; + unsigned char type; + + union { + BrailleKeys keys; + const unsigned char *routing; + + struct { + unsigned int version; + unsigned char model; + unsigned char size; + } identity; + } fields; +} InputPacket; + +typedef struct { + const char *name; + int (*readPacket) (BrailleDisplay *brl, InputPacket *packet); + int (*probeDisplay) (BrailleDisplay *brl, InputPacket *response); + int (*writeCells) (BrailleDisplay *brl); +} ProtocolOperations; +static const ProtocolOperations *protocol; + +typedef struct { + const ProtocolOperations *const *protocols; + int (*openPort) (const char *device); + void (*closePort) (); + int (*awaitInput) (int milliseconds); + int (*readBytes) (unsigned char *buffer, int length, int wait); + int (*writeBytes) (const unsigned char *buffer, int length); +} InputOutputOperations; +static const InputOutputOperations *io; + +static const int logInputPackets = 0; +static const int logOutputPackets = 0; + +#define SERIAL_BAUD 9600 +static const int charactersPerSecond = SERIAL_BAUD / 10; + +static int routingCommand; +static TranslationTable outputTable; +static unsigned char textCells[40]; + +static int +readByte (unsigned char *byte, int wait) { + int count = io->readBytes(byte, 1, wait); + if (count > 0) return 1; + + if (count == 0) errno = EAGAIN; + return 0; +} + +static int +writeBytes (BrailleDisplay *brl, const unsigned char *buffer, size_t length) { + if (logOutputPackets) LogBytes(LOG_DEBUG, "Output Packet", buffer, length); + if (io->writeBytes(buffer, length) == -1) return 0; + brl->writeDelay += (length * 1000 / charactersPerSecond) + 1; + return 1; +} + +static int +probeDisplay ( + BrailleDisplay *brl, InputPacket *response, + const unsigned char *requestAddress, size_t requestSize +) { + int probeCount = 0; + + do { + if (!writeBytes(brl, requestAddress, requestSize)) break; + + while (io->awaitInput(200)) { + if (!protocol->readPacket(NULL, response)) break; + if (response->type == IPT_identity) return 1; + } + if (errno != EAGAIN) break; + } while (++probeCount < 3); + + return 0; +} + +typedef enum { + TBT_ANY = 0X80, + TBT_DECIMAL, + TBT_KEYS +} TemplateByteType; + +typedef struct { + const unsigned char *bytes; + unsigned char length; + unsigned char type; +} TemplateEntry; + +#define TEMPLATE_ENTRY(name) { \ + .bytes=templateString_##name, \ + .length=sizeof(templateString_##name), \ + .type=IPT_##name \ +} + +static const unsigned char templateString_keys[] = { + TBT_KEYS, TBT_KEYS +}; +static const TemplateEntry templateEntry_keys = TEMPLATE_ENTRY(keys); + +static const unsigned char templateString_routing[] = { + 0X00, 0X08, 0X09, 0X00, 0X00, 0X00, 0X00, + TBT_ANY, TBT_ANY, TBT_ANY, TBT_ANY, TBT_ANY, + 0X00, 0X08, 0X09, 0X00, 0X00, 0X00, 0X00, + 0X00, 0X00, 0X00, 0X00, 0X00 +}; +static const TemplateEntry templateEntry_routing = TEMPLATE_ENTRY(routing); + +static int +readPacket_old ( + InputPacket *packet, + const TemplateEntry *identityTemplate, + const TemplateEntry *alternateTemplate, + void (*interpretIdentity) (InputPacket *packet) +) { + const TemplateEntry *const templateTable[] = { + identityTemplate, + &templateEntry_routing, + NULL + }; + + const TemplateEntry *template = NULL; + int offset = 0; + + while (1) { + unsigned char byte; + + { + int started = offset > 0; + if (!readByte(&byte, started)) { + if (started) LogBytes(LOG_WARNING, "Partial Packet", packet->bytes, offset); + return 0; + } + } + + gotByte: + if (!offset) { + const TemplateEntry *const *templateAddress = templateTable; + + while ((template = *templateAddress++)) + if (byte == *template->bytes) + break; + + if (!template) { + if ((byte & 0XE0) == 0X60) { + template = &templateEntry_keys; + } else { + LogBytes(LOG_WARNING, "Ignored Byte", &byte, 1); + template = NULL; + continue; + } + } + } else { + int unexpected = 0; + + switch (template->bytes[offset]) { + case TBT_ANY: + break; + + case TBT_DECIMAL: + if ((byte < '0') || (byte > '9')) unexpected = 1; + break; + + case TBT_KEYS: + if ((byte & 0XE0) != 0XE0) unexpected = 1; + break; + + default: + if (byte != template->bytes[offset]) unexpected = 1; + break; + } + + if (unexpected) { + if ((offset == 1) && (template->type == IPT_identity)) { + template = alternateTemplate; + } else { + LogBytes(LOG_WARNING, "Short Packet", packet->bytes, offset); + offset = 0; + template = NULL; + } + + goto gotByte; + } + } + + packet->bytes[offset++] = byte; + if (template && (offset == template->length)) { + if (logInputPackets) LogBytes(LOG_DEBUG, "Input Packet", packet->bytes, offset); + + switch ((packet->type = template->type)) { + case IPT_identity: + interpretIdentity(packet); + break; + + case IPT_keys: { + const unsigned char *byte = packet->bytes + offset; + packet->fields.keys = 0; + + do { + packet->fields.keys <<= 8; + packet->fields.keys |= *--byte & 0X1F; + } while (byte != packet->bytes); + + break; + } + + case IPT_routing: + packet->fields.routing = &packet->bytes[7]; + break; + } + + return offset; + } + } +} + +static void +interpretIdentity_330 (InputPacket *packet) { + packet->fields.identity.version = ((packet->bytes[5] - '0') << (4 * 2)) | + ((packet->bytes[7] - '0') << (4 * 1)); + packet->fields.identity.model = 0; + packet->fields.identity.size = packet->bytes[2]; +} + +static int +readPacket_330 (BrailleDisplay *brl, InputPacket *packet) { + static const unsigned char templateString_identity[] = { + 0X00, 0X05, 0X28, 0X08, + 0X76, TBT_DECIMAL, 0X2E, TBT_DECIMAL, + 0X01, 0X01, 0X01, 0X01 + }; + static const TemplateEntry identityTemplate = TEMPLATE_ENTRY(identity); + + return readPacket_old(packet, &identityTemplate, &templateEntry_routing, interpretIdentity_330); +} + +static int +probeDisplay_330 (BrailleDisplay *brl, InputPacket *response) { + static const unsigned char request[] = {0XFF, 0XFF, 0X0A}; + return probeDisplay(brl, response, request, sizeof(request)); +} + +static int +writeCells_330 (BrailleDisplay *brl) { + static const unsigned char header[] = { + 0XFF, 0XFF, 0X04, + 0X00, 0X63, 0X00 + }; + + unsigned char packet[sizeof(header) + 2 + (brl->textColumns * 2)]; + unsigned char *byte = packet; + + memcpy(byte, header, sizeof(header)); + byte += sizeof(header); + + *byte++ = brl->textColumns * 2; + *byte++ = 0; + + { + int i; + for (i=0; itextColumns; i+=1) { + *byte++ = 0; + *byte++ = outputTable[textCells[i]]; + } + } + + return writeBytes(brl, packet, byte-packet); +} + +static const ProtocolOperations protocolOperations_330 = { + "V3.30", + readPacket_330, + probeDisplay_330, + writeCells_330 +}; + +static void +interpretIdentity_331 (InputPacket *packet) { + packet->fields.identity.version = ((packet->bytes[8] - '0') << (4 * 2)) | + ((packet->bytes[10] - '0') << (4 * 1)) | + ((packet->bytes[11] - '0') << (4 * 0)); + packet->fields.identity.model = packet->bytes[5] - '0'; + packet->fields.identity.size = 40; +} + +static int +readPacket_331 (BrailleDisplay *brl, InputPacket *packet) { + static const unsigned char templateString_identity[] = { + 0X73, 0X65, 0X69, 0X6B, 0X61, TBT_DECIMAL, + 0X20, 0X76, TBT_DECIMAL, 0X2E, TBT_DECIMAL, TBT_DECIMAL + }; + static const TemplateEntry identityTemplate = TEMPLATE_ENTRY(identity); + + return readPacket_old(packet, &identityTemplate, &templateEntry_keys, interpretIdentity_331); +} + +static int +probeDisplay_331 (BrailleDisplay *brl, InputPacket *response) { + static const unsigned char request[] = {0XFF, 0XFF, 0X1C}; + return probeDisplay(brl, response, request, sizeof(request)); +} + +static int +writeCells_331 (BrailleDisplay *brl) { + static const unsigned char header[] = { + 0XFF, 0XFF, + 0X73, 0X65, 0X69, 0X6B, 0X61, + 0X00 + }; + + unsigned char packet[sizeof(header) + (brl->textColumns * 2)]; + unsigned char *byte = packet; + + memcpy(byte, header, sizeof(header)); + byte += sizeof(header); + + { + int i; + for (i=0; itextColumns; i+=1) { + *byte++ = 0; + *byte++ = outputTable[textCells[i]]; + } + } + + return writeBytes(brl, packet, byte-packet); +} + +static const ProtocolOperations protocolOperations_331 = { + "V3.31", + readPacket_331, + probeDisplay_331, + writeCells_331 +}; + +static inline int +routingBytes_332 (BrailleDisplay *brl) { + return (brl->textColumns + 7) / 8; +} + +static int +readPacket_332 (BrailleDisplay *brl, InputPacket *packet) { + int offset = 0; + int length = 0; + + while (1) { + unsigned char byte; + + { + int started = offset > 0; + if (!readByte(&byte, started)) { + if (started) LogBytes(LOG_WARNING, "Partial Packet", packet->bytes, offset); + return 0; + } + } + + gotByte: + if (!offset) { + switch (byte) { + case 0X1D: + length = 2; + break; + + default: + LogBytes(LOG_WARNING, "Ignored Byte", &byte, 1); + continue; + } + } else { + int unexpected = 0; + + if (offset == 1) { + switch (byte) { + case 0X02: + packet->type = IPT_identity; + length = 10; + break; + + case 0X04: + packet->type = IPT_routing; + length = 2; + if (brl) length += routingBytes_332(brl); + break; + + case 0X05: + packet->type = IPT_keys; + length = 4; + break; + + default: + unexpected = 1; + break; + } + } + + if (unexpected) { + LogBytes(LOG_WARNING, "Short Packet", packet->bytes, offset); + offset = 0; + length = 0; + goto gotByte; + } + } + + packet->bytes[offset++] = byte; + if (offset == length) { + if (logInputPackets) LogBytes(LOG_DEBUG, "Input Packet", packet->bytes, offset); + + switch (packet->type) { + case IPT_identity: + packet->fields.identity.version = 0; + packet->fields.identity.model = packet->bytes[9] - '0'; + packet->fields.identity.size = packet->bytes[3]; + break; + + case IPT_keys: { + const unsigned char *byte = packet->bytes + offset; + packet->fields.keys = 0; + + do { + packet->fields.keys <<= 8; + packet->fields.keys |= *--byte; + } while (byte != packet->bytes); + + break; + } + + case IPT_routing: + packet->fields.routing = &packet->bytes[2]; + break; + } + + return offset; + } + } +} + +static int +probeDisplay_332 (BrailleDisplay *brl, InputPacket *response) { + static const unsigned char request[] = {0XFF, 0XFF, 0X1D, 0X01}; + return probeDisplay(brl, response, request, sizeof(request)); +} + +static int +writeCells_332 (BrailleDisplay *brl) { + static const unsigned char header[] = {0XFF, 0XFF, 0X1D, 0X03}; + unsigned char packet[sizeof(header) + 1 + brl->textColumns]; + unsigned char *byte = packet; + + memcpy(byte, header, sizeof(header)); + byte += sizeof(header); + + *byte++ = brl->textColumns; + + { + int i; + for (i=0; itextColumns; i+=1) *byte++ = outputTable[textCells[i]]; + } + + return writeBytes(brl, packet, byte-packet); +} + +static const ProtocolOperations protocolOperations_332 = { + "V3.32", + readPacket_332, + probeDisplay_332, + writeCells_332 +}; + +static const ProtocolOperations *const allProtocols[] = { + &protocolOperations_332, + &protocolOperations_331, + &protocolOperations_330, + NULL +}; + +static const ProtocolOperations *const nativeProtocols[] = { + &protocolOperations_332, + &protocolOperations_331, + NULL +}; + +/* Serial IO */ +#include "io_serial.h" + +static SerialDevice *serialDevice = NULL; + +static int +openSerialPort (const char *device) { + if ((serialDevice = serialOpenDevice(device))) { + if (serialRestartDevice(serialDevice, SERIAL_BAUD)) return 1; + + serialCloseDevice(serialDevice); + serialDevice = NULL; + } + + return 0; +} + +static void +closeSerialPort (void) { + if (serialDevice) { + serialCloseDevice(serialDevice); + serialDevice = NULL; + } +} + +static int +awaitSerialInput (int milliseconds) { + return serialAwaitInput(serialDevice, milliseconds); +} + +static int +readSerialBytes (unsigned char *buffer, int count, int wait) { + const int timeout = 100; + return serialReadData(serialDevice, buffer, count, + (wait? timeout: 0), timeout); +} + +static int +writeSerialBytes (const unsigned char *buffer, int length) { + return serialWriteData(serialDevice, buffer, length); +} + +static const InputOutputOperations serialOperations = { + nativeProtocols, + openSerialPort, closeSerialPort, + awaitSerialInput, readSerialBytes, writeSerialBytes +}; + +#ifdef ENABLE_USB_SUPPORT +/* USB IO */ +#include "io_usb.h" + +static UsbChannel *usbChannel = NULL; + +static int +openUsbPort (const char *device) { + static const SerialParameters serial = { + .baud = SERIAL_BAUD, + .flow = SERIAL_FLOW_NONE, + .data = 8, + .stop = 1, + .parity = SERIAL_PARITY_NONE + }; + + static const UsbChannelDefinition definitions[] = { + { /* Seika */ + .vendor=0X10C4, .product=0XEA60, + .configuration=1, .interface=0, .alternative=0, + .inputEndpoint=1, .outputEndpoint=1, + .serial=&serial + } + , + { .vendor=0 } + }; + + if ((usbChannel = usbFindChannel(definitions, (void *)device))) { + return 1; + } + return 0; +} + +static void +closeUsbPort (void) { + if (usbChannel) { + usbCloseChannel(usbChannel); + usbChannel = NULL; + } +} + +static int +awaitUsbInput (int milliseconds) { + return usbAwaitInput(usbChannel->device, + usbChannel->definition.inputEndpoint, + milliseconds); +} + +static int +readUsbBytes (unsigned char *buffer, int length, int wait) { + const int timeout = 100; + int count = usbReapInput(usbChannel->device, + usbChannel->definition.inputEndpoint, + buffer, length, + (wait? timeout: 0), timeout); + if (count != -1) return count; + if (errno == EAGAIN) return 0; + return -1; +} + +static int +writeUsbBytes (const unsigned char *buffer, int length) { + return usbWriteEndpoint(usbChannel->device, + usbChannel->definition.outputEndpoint, + buffer, length, 1000); +} + +static const InputOutputOperations usbOperations = { + allProtocols, + openUsbPort, closeUsbPort, + awaitUsbInput, readUsbBytes, writeUsbBytes +}; +#endif /* ENABLE_USB_SUPPORT */ + +#ifdef ENABLE_BLUETOOTH_SUPPORT +/* Bluetooth IO */ +#include "io_bluetooth.h" +#include "io_misc.h" + +static int bluetoothConnection = -1; + +static int +openBluetoothPort (const char *device) { + if ((bluetoothConnection = btOpenConnection(device, 1, 0)) == -1) return 0; + return 1; +} + +static void +closeBluetoothPort (void) { + if (bluetoothConnection != -1) { + close(bluetoothConnection); + bluetoothConnection = -1; + } +} + +static int +awaitBluetoothInput (int milliseconds) { + return awaitInput(bluetoothConnection, milliseconds); +} + +static int +readBluetoothBytes (unsigned char *buffer, int length, int wait) { + const int timeout = 100; + size_t offset = 0; + return readChunk(bluetoothConnection, + buffer, &offset, length, + (wait? timeout: 0), timeout); +} + +static int +writeBluetoothBytes (const unsigned char *buffer, int length) { + int count = writeData(bluetoothConnection, buffer, length); + if (count != length) { + if (count == -1) { + LogError("Bluetooth write"); + } else { + LogPrint(LOG_WARNING, "Trunccated bluetooth write: %d < %d", count, length); + } + } + return count; +} + +static const InputOutputOperations bluetoothOperations = { + nativeProtocols, + openBluetoothPort, closeBluetoothPort, + awaitBluetoothInput, readBluetoothBytes, writeBluetoothBytes +}; +#endif /* ENABLE_BLUETOOTH_SUPPORT */ + +static int +brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { + { + static const DotsTable dots = {0X01, 0X02, 0X04, 0X08, 0X10, 0X20, 0X40, 0X80}; + makeOutputTable(dots, outputTable); + } + + if (isSerialDevice(&device)) { + io = &serialOperations; + } else + +#ifdef ENABLE_USB_SUPPORT + if (isUsbDevice(&device)) { + io = &usbOperations; + } else +#endif /* ENABLE_USB_SUPPORT */ + +#ifdef ENABLE_BLUETOOTH_SUPPORT + if (isBluetoothDevice(&device)) { + io = &bluetoothOperations; + } else +#endif /* ENABLE_BLUETOOTH_SUPPORT */ + + { + unsupportedDevice(device); + return 0; + } + + if (io->openPort(device)) { + const ProtocolOperations *const *protocolAddress = io->protocols; + + while ((protocol = *protocolAddress++)) { + InputPacket response; + + LogPrint(LOG_DEBUG, "trying protocol %s", protocol->name); + if (protocol->probeDisplay(brl, &response)) { + LogPrint(LOG_DEBUG, "Seika Protocol: %s", protocol->name); + LogPrint(LOG_DEBUG, "Seika Model: %u", response.fields.identity.model); + LogPrint(LOG_DEBUG, "Seika Size: %u", response.fields.identity.size); + + brl->textColumns = response.fields.identity.size; + brl->textRows = 1; + brl->helpPage = 0; + + routingCommand = BRL_BLK_ROUTE; + memset(textCells, 0XFF, brl->textColumns); + + return 1; + } + } + + io->closePort(); + } + + return 0; +} + +static void +brl_destruct (BrailleDisplay *brl) { + io->closePort(); +} + +static int +brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) { + if (memcmp(textCells, brl->buffer, brl->textColumns) != 0) { + memcpy(textCells, brl->buffer, brl->textColumns); + if (!protocol->writeCells(brl)) return 0; + } + + return 1; +} + +static int +brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { + InputPacket packet; + size_t length; + + while ((length = protocol->readPacket(brl, &packet))) { + int routing = routingCommand; + routingCommand = BRL_BLK_ROUTE; + + switch (packet.type) { + case IPT_keys: +#define CMD(keys,cmd) case (keys): return (cmd) +#define BLK(keys,blk) case (keys): routingCommand = (blk); return BRL_CMD_NOOP + switch (packet.fields.keys) { + CMD(KEY_K1, BRL_CMD_FWINLT); + CMD(KEY_K8, BRL_CMD_FWINRT); + + CMD(KEY_K2, BRL_CMD_LNUP); + CMD(KEY_K3, BRL_CMD_LNDN); + CMD(KEY_K2 | KEY_K3, BRL_CMD_LNBEG); + + CMD(KEY_K6, BRL_CMD_FWINLTSKIP); + CMD(KEY_K7, BRL_CMD_FWINRTSKIP); + CMD(KEY_K6 | KEY_K7, BRL_CMD_PASTE); + + CMD(KEY_K4, BRL_CMD_CSRTRK); + CMD(KEY_K5, BRL_CMD_RETURN); + CMD(KEY_K4 | KEY_K5, BRL_CMD_CSRJMP_VERT); + + CMD(KEY_K6 | KEY_K2, BRL_CMD_TOP_LEFT); + CMD(KEY_K6 | KEY_K3, BRL_CMD_BOT_LEFT); + CMD(KEY_K7 | KEY_K2, BRL_CMD_TOP); + CMD(KEY_K7 | KEY_K3, BRL_CMD_BOT); + + CMD(KEY_K4 | KEY_K2, BRL_CMD_ATTRUP); + CMD(KEY_K4 | KEY_K3, BRL_CMD_ATTRDN); + CMD(KEY_K5 | KEY_K2, BRL_CMD_PRDIFLN); + CMD(KEY_K5 | KEY_K3, BRL_CMD_NXDIFLN); + CMD(KEY_K4 | KEY_K6, BRL_CMD_PRPROMPT); + CMD(KEY_K4 | KEY_K7, BRL_CMD_NXPROMPT); + CMD(KEY_K5 | KEY_K6, BRL_CMD_PRPGRPH); + CMD(KEY_K5 | KEY_K7, BRL_CMD_NXPGRPH); + + BLK(KEY_K1 | KEY_K8 | KEY_K2, BRL_BLK_PRINDENT); + BLK(KEY_K1 | KEY_K8 | KEY_K3, BRL_BLK_NXINDENT); + BLK(KEY_K1 | KEY_K8 | KEY_K4, BRL_BLK_SETLEFT); + BLK(KEY_K1 | KEY_K8 | KEY_K5, BRL_BLK_DESCCHAR); + BLK(KEY_K1 | KEY_K8 | KEY_K6, BRL_BLK_PRDIFCHAR); + BLK(KEY_K1 | KEY_K8 | KEY_K7, BRL_BLK_NXDIFCHAR); + + BLK(KEY_K1 | KEY_K8 | KEY_K2 | KEY_K6, BRL_BLK_CUTBEGIN); + BLK(KEY_K1 | KEY_K8 | KEY_K2 | KEY_K7, BRL_BLK_CUTAPPEND); + BLK(KEY_K1 | KEY_K8 | KEY_K3 | KEY_K6, BRL_BLK_CUTLINE); + BLK(KEY_K1 | KEY_K8 | KEY_K3 | KEY_K7, BRL_BLK_CUTRECT); + + CMD(KEY_K1 | KEY_K2, BRL_CMD_HELP); + CMD(KEY_K1 | KEY_K3, BRL_CMD_LEARN); + CMD(KEY_K1 | KEY_K4, BRL_CMD_PREFLOAD); + CMD(KEY_K1 | KEY_K5, BRL_CMD_PREFSAVE); + CMD(KEY_K1 | KEY_K6, BRL_CMD_PREFMENU); + CMD(KEY_K1 | KEY_K7, BRL_CMD_INFO); + + CMD(KEY_K8 | KEY_K2, BRL_CMD_DISPMD); + CMD(KEY_K8 | KEY_K3, BRL_CMD_FREEZE); + CMD(KEY_K8 | KEY_K6, BRL_CMD_SIXDOTS); + CMD(KEY_K8 | KEY_K7, BRL_CMD_SKPIDLNS); + + default: + break; + } +#undef BLK +#undef CMD + break; + + case IPT_routing: { + const unsigned char *byte = packet.fields.routing; + unsigned char bit = 0X1; + unsigned char key; + + for (key=0; keytextColumns; key+=1) { + if (*byte & bit) return routing + key; + + if (!(bit <<= 1)) { + bit = 0X1; + byte += 1; + } + } + + break; + } + } + + LogBytes(LOG_WARNING, "Unexpected Packet", packet.bytes, length); + } + if (errno != EAGAIN) return BRL_CMD_RESTARTBRL; + + return EOF; +} diff --git a/Drivers/Braille/Seika/help0.txt b/Drivers/Braille/Seika/help0.txt new file mode 100644 index 0000000000000000000000000000000000000000..4c1bca64eeda0ab879b1cae8aac5471b62c18abf --- /dev/null +++ b/Drivers/Braille/Seika/help0.txt @@ -0,0 +1,53 @@ +Help for Seika + +Legend: +k1/k8: the round key to the left/right of the braille cells +k2/k3: the left/right end of the left rocker +k4/k5: the long key left/right of the center +k6/k7: the left/right end of the right rocker +cr: any cursor routing key + +Basic Navigation: +k1/k8: go left/right one window +k6/k7: go to previous/next non-blank window +k2+k3: go to beginning of line +k2/k3: go up/down one line +k6 + k2/k3: go to beginning of top/bottom line +k7 + k2/k3: go to top/bottom line + +Cursor-based Navigation: +k4: toggle cursor tracking +k5: go to cursor or undo last cursor tracking motion +k4+k5: bring cursor to line +cr: bring cursor to character + +Advanced Navigation: +k4 + k2/k3: go to previous/next line with different highlighting +k5 + k2/k3: go to previous/next line with different content +k4 + k6/k7: go to previous/next command prompt +k5 + k6/k7: go to last/first line of previous/next paragraph +k1+k8 + k2/k3, cr: go up/down to line without greater indent +k1+k8+k4, cr: position left end of window at character +k1+k8+k5, cr: describe character +k1+k8 + k6/k7, cr: go up/down to line with different character + +Cut and Paste: +k1+k8+k2+k6, cr: start new cut buffer at character +k1+k8+k2+k7, cr: append to cut buffer from character +k1+k8+k3+k6, cr: linear cut to character +k1+k8+k3+k7, cr: rectangular cut to character +k6+k7: paste cut buffer at cursor + +Mode Selection: +k1+k2: switch to/from help page +k1+k3: switch to/from learn mode +k1+k4: restore preferences from disk +k1+k5: save preferences to disk +k1+k6: switch to/from preferences menu +k1+k7: switch to/from status line + +Feature Activation: +k8+k2: toggle displaying of attributes +k8+k3: freeze/unfreeze screen image +k8+k6: toggle 6-dot braille mode +k8+k7: toggle skipping of identical lines diff --git a/Drivers/Braille/Seika/reldeps.mk b/Drivers/Braille/Seika/reldeps.mk new file mode 100644 index 0000000000000000000000000000000000000000..b43c0a8442cb77aecb08471c35917eb0e2ce5422 --- /dev/null +++ b/Drivers/Braille/Seika/reldeps.mk @@ -0,0 +1,15 @@ +# Dependencies for braille.$O: +braille.$O: $(SRC_DIR)/braille.c +braille.$O: $(BLD_TOP)config.h +braille.$O: $(SRC_TOP)prologue.h +braille.$O: $(SRC_TOP)Programs/misc.h +braille.$O: $(SRC_TOP)Programs/brl.h +braille.$O: $(SRC_TOP)Programs/brl_driver.h +braille.$O: $(SRC_TOP)Programs/brldefs.h +braille.$O: $(SRC_TOP)Programs/driver.h +braille.$O: $(SRC_TOP)Programs/io_defs.h +braille.$O: $(SRC_TOP)Programs/io_serial.h +braille.$O: $(SRC_TOP)Programs/io_usb.h +braille.$O: $(SRC_TOP)Programs/io_bluetooth.h +braille.$O: $(SRC_TOP)Programs/io_misc.h + diff --git a/BrailleDrivers/Skeleton/Makefile.in b/Drivers/Braille/Skeleton/Makefile.in similarity index 81% rename from BrailleDrivers/Skeleton/Makefile.in rename to Drivers/Braille/Skeleton/Makefile.in index 1313ff34bb8baac9421599a46de90cd4871eeed8..86c8ecabcbd3ab6a3c5dac2a7210bfcafc8e068e 100644 --- a/BrailleDrivers/Skeleton/Makefile.in +++ b/Drivers/Braille/Skeleton/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/Skeleton/braille.c b/Drivers/Braille/Skeleton/braille.c similarity index 90% rename from BrailleDrivers/Skeleton/braille.c rename to Drivers/Braille/Skeleton/braille.c index fe758895b0989ff8f776df3911a945710e1109c9..670fc39d353334c7ab9d210331d118f9aeae18b8 100644 --- a/BrailleDrivers/Skeleton/braille.c +++ b/Drivers/Braille/Skeleton/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -21,6 +22,7 @@ #include "misc.h" +//#define BRL_STATUS_FIELDS sf... //#define BRL_HAVE_STATUS_CELLS //#define BRL_HAVE_PACKET_IO //#define BRL_HAVE_KEY_CODES diff --git a/BrailleDrivers/Skeleton/reldeps.mk b/Drivers/Braille/Skeleton/reldeps.mk similarity index 100% rename from BrailleDrivers/Skeleton/reldeps.mk rename to Drivers/Braille/Skeleton/reldeps.mk diff --git a/BrailleDrivers/TSI/Makefile.in b/Drivers/Braille/TSI/Makefile.in similarity index 82% rename from BrailleDrivers/TSI/Makefile.in rename to Drivers/Braille/TSI/Makefile.in index 91b81c9fee577d0f1ea340ac94aa2c22271c2b67..396cc2de1665de842c9f76c1b1711b6a1526837b 100644 --- a/BrailleDrivers/TSI/Makefile.in +++ b/Drivers/Braille/TSI/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/TSI/README b/Drivers/Braille/TSI/README similarity index 100% rename from BrailleDrivers/TSI/README rename to Drivers/Braille/TSI/README diff --git a/BrailleDrivers/TSI/TODO b/Drivers/Braille/TSI/TODO similarity index 100% rename from BrailleDrivers/TSI/TODO rename to Drivers/Braille/TSI/TODO diff --git a/BrailleDrivers/TSI/braille.c b/Drivers/Braille/TSI/braille.c similarity index 93% rename from BrailleDrivers/TSI/braille.c rename to Drivers/Braille/TSI/braille.c index 456e339aa7834993342772fbc5c53e732e49edd7..802d2c2e61f23dc40d7a7d9264136f99aa1dcbeb 100644 --- a/BrailleDrivers/TSI/braille.c +++ b/Drivers/Braille/TSI/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -84,8 +85,6 @@ #include "misc.h" #include "message.h" -#define BRLSTAT ST_PB80Style -#define BRL_HAVE_STATUS_CELLS #include "brl_driver.h" #include "braille.h" #include "io_serial.h" @@ -102,8 +101,9 @@ static int no_multiple_updates; /* We periodicaly refresh the display even if nothing has changed, will clear out any garble... */ -#define FULL_FRESHEN_EVERY 12 /* every 12 writebrl, do a full update. This +#define FULL_FRESHEN_EVERY 12 /* do a full update every nth writeWindow(). This should be a little over every 0.5secs. */ +static int fullFreshenEvery; /* A query is sent if we don't get any keys in a certain time, to detect if the display was turned off. */ @@ -155,7 +155,7 @@ static unsigned char BRL_UART_HANDSHAK[] = {0xFF, 0xFF, 0x05, 0x01}; #define DIM_BRL_UART_HANDSHAK 4 #endif /* 0 */ /* Normal header for sending dots, with cursor always off */ -static unsigned char BRL_SEND_HEAD[] = {0xFF, 0xFF, 0x04, 0x00, 0x00, 0x01}; +static unsigned char BRL_SEND_HEAD[] = {0XFF, 0XFF, 0X04, 0X00, 0X99, 0X00}; #define DIM_BRL_SEND_FIXED 6 #define DIM_BRL_SEND 8 /* Two extra bytes for lenght and offset */ @@ -284,6 +284,8 @@ static struct inbytedesc pb_key_desc[PB_KEY_LEN] = /* Global variables */ static SerialDevice *serialDevice; /* file descriptor for comm port */ +static int serialBaud; +static int charactersPerSecond; static unsigned char *rawdata, /* translated data to send to display */ *prevdata, /* previous data sent */ *dispbuf; @@ -314,7 +316,7 @@ QueryDisplay(unsigned char *reply) if (serialAwaitInput(serialDevice, 100)) { if ((count = myread(reply, Q_REPLY_LENGTH)) != -1) { if ((count == Q_REPLY_LENGTH) && (memcmp(reply, Q_HEADER, Q_HEADER_LENGTH) == 0)) { - LogPrint(LOG_DEBUG, "Valid reply received."); + LogBytes(LOG_DEBUG, "TSI Reply", reply, count); return 1; } else { LogBytes(LOG_WARNING, "Unexpected Response", reply, count); @@ -366,13 +368,13 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) if (!(serialDevice = serialOpenDevice(device))) goto failure; /* Try to detect display by sending query */ LogPrint(LOG_DEBUG,"Sending query at 9600bps"); - if(!serialRestartDevice(serialDevice, 9600)) goto failure; + if(!serialRestartDevice(serialDevice, serialBaud=9600)) goto failure; if(!QueryDisplay(reply)){ #ifdef HIGHBAUD /* Then send the query at 19200bps, in case a PB was left ON at that speed */ LogPrint(LOG_DEBUG,"Sending query at 19200bps"); - if(!serialSetBaud(serialDevice, 19200)) goto failure; + if(!serialSetBaud(serialDevice, serialBaud=19200)) goto failure; if(!QueryDisplay(reply)) goto failure; #endif /* HIGHBAUD */ } @@ -435,8 +437,7 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) displayType = PB65_80; has_sw = 1; sw_bcnt = SW_CNT81; - sw_lastkey = 79; - brl_cols = 80; + sw_lastkey = 80; speed = 2; slow_update = 2; LogPrint(LOG_INFO, "Detected PowerBraille 80"); @@ -459,24 +460,26 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) #endif /* NO_MULTIPLE_UPDATES */ if(slow_update == 2) no_multiple_updates = 1; + fullFreshenEvery = FULL_FRESHEN_EVERY; #ifdef HIGHBAUD if(speed == 2){ /* if supported (PB) go to 19.2Kbps */ serialWriteData (serialDevice, BRL_UART192, DIM_BRL_UART192); serialDrainOutput(serialDevice); approximateDelay(BAUD_DELAY); - if(!serialSetBaud(serialDevice, 19200)) goto failure; + if(!serialSetBaud(serialDevice, serialBaud=19200)) goto failure; LogPrint(LOG_DEBUG,"Switched to 19200bps. Checking if display followed."); if(QueryDisplay(reply)) LogPrint(LOG_DEBUG,"Display responded at 19200bps."); else{ LogPrint(LOG_INFO,"Display did not respond at 19200bps, " "falling back to 9600bps."); - if(!serialSetBaud(serialDevice, 9600)) goto failure; + if(!serialSetBaud(serialDevice, serialBaud=9600)) goto failure; serialDrainOutput(serialDevice); approximateDelay(BAUD_DELAY); /* just to be safe */ if(QueryDisplay(reply)) { LogPrint(LOG_INFO,"Found display again at 9600bps."); LogPrint(LOG_INFO, "Must be a TSI emulator."); + fullFreshenEvery = 1; }else{ LogPrint(LOG_ERR,"Display lost after baud switching"); goto failure; @@ -485,6 +488,8 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) } #endif /* HIGHBAUD */ + charactersPerSecond = serialBaud / serialGetCharacterBits(serialDevice); + /* Mark time of last command to initialize typematic watch */ gettimeofday (&last_ping, NULL); memcpy(&last_readbrl_time, &last_ping, sizeof(struct timeval)); @@ -495,8 +500,8 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) ResetTypematic (); - brl->x = brl_cols; /* initialise size of display */ - brl->y = BRLROWS; /* always 1 */ + brl->textColumns = brl_cols; /* initialise size of display */ + brl->textRows = BRLROWS; /* always 1 */ /* Allocate space for buffers */ dispbuf = malloc(ncells); @@ -548,7 +553,8 @@ brl_destruct (BrailleDisplay *brl) } static void -display (const unsigned char *pattern, +display (BrailleDisplay *brl, + const unsigned char *pattern, unsigned start, unsigned stop) /* display a given dot pattern. We process only part of the pattern, from byte (cell) start to byte stop. That pattern should be shown at position @@ -596,52 +602,18 @@ display (const unsigned char *pattern, I no longer have access to a Nav40 and PB80 for testing: I only have a PB40. */ - serialWriteData (serialDevice, rawdata, DIM_BRL_SEND + 2 * length); - - /* First a drain after the write helps make sure we don't fill up the - buffer with info that will be overwritten immediately. This is not needed - on pb40, but it might be good on nav40 (which runs only at 9600bps). - - Then for pb80 (and probably also needed for nav80 though untested) as - well as for some TSI emulators we add a supplementary delay: drain - probably waits until the bytes are in the UART, but we still need a few - ms to send them out. This delay will combine with the sleep for this - BRLTTY cycle (delay in the main program loop of 40ms). Keeping the delay - in the main brltty loop low keeps the response time good, but SEND_DELAY - gives the display time to show what we're sending. - - I found experimentally that a delay of 30ms seems best (at least for - pb80). A longer delay, or using approximateDelay() instead of - accurateDelay() is too much. This makes the pb a little bit sluggish, - but prevents any communication problems. */ - - switch(slow_update){ - /* 0 does nothing */ - case 1: /* nav 40 */ - serialDrainOutput(serialDevice); break; - case 2: /* nav80, pb80, some emulators */ - serialDrainOutput(serialDevice); - accurateDelay(SEND_DELAY); - break; - }; -} - -static int -brl_writeStatus (BrailleDisplay *brl, const unsigned char *s) -/* Only the PB80, which actually has 81cells, can be considered to have status - cells, and it has only one. We could also decide to devote some of - the cells of the PB65? */ -{ - if(ncells == 81) - dispbuf[80] = s[0]; - return 1; + { + int count = DIM_BRL_SEND + 2 * length; + serialWriteData (serialDevice, rawdata, count); + brl->writeDelay += (count * 1000 / charactersPerSecond) + (slow_update * 20); + } } - static void -display_all (unsigned char *pattern) +display_all (BrailleDisplay *brl, + unsigned char *pattern) { - display (pattern, 0, ncells - 1); + display (brl, pattern, 0, ncells - 1); } @@ -650,16 +622,16 @@ brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) { static int count = 0; - /* assert: brl->x == brl_cols */ + /* assert: brl->textColumns == brl_cols */ memcpy(dispbuf, brl->buffer, brl_cols); if (--count<=0) { /* Force an update of the whole display every now and then to clear any garble. */ - count = FULL_FRESHEN_EVERY; + count = fullFreshenEvery; memcpy(prevdata, dispbuf, ncells); - display_all (dispbuf); + display_all (brl, dispbuf); }else if(no_multiple_updates){ int start, stop; @@ -670,7 +642,7 @@ brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) if(dispbuf[stop] != prevdata[stop]) break; memcpy(prevdata+start, dispbuf+start, stop-start+1); - display (dispbuf, start, stop); + display (brl, dispbuf, start, stop); }else{ int base = 0, i = 0, collecting = 0, simil = 0; @@ -680,7 +652,7 @@ brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) simil++; if (collecting && 2 * simil > DIM_BRL_SEND) { - display (dispbuf, base, i - simil); + display (brl, dispbuf, base, i - simil); base = i; collecting = 0; simil = 0; @@ -698,7 +670,7 @@ brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) } if (collecting) - display (dispbuf, base, i - simil - 1); + display (brl, dispbuf, base, i - simil - 1); } return 1; } @@ -716,7 +688,7 @@ is_repeat_cmd (int cmd) static void -flicker () +flicker (BrailleDisplay *brl) { unsigned char *buf; @@ -726,11 +698,11 @@ flicker () { memset (buf, FLICKER_CHAR, ncells); - display_all (buf); + display_all (brl, buf); accurateDelay (FLICKER_DELAY); - display_all (prevdata); + display_all (brl, prevdata); accurateDelay (FLICKER_DELAY); - display_all (buf); + display_all (brl, buf); accurateDelay (FLICKER_DELAY); /* Note that we don't put prevdata back on the display, since flicker() normally preceeds the displaying of a special message. */ @@ -781,7 +753,7 @@ cut_cursor (BrailleDisplay *brl) pos = brl_cols - 1; } - flicker (); + flicker (brl); while (res == 0) { @@ -792,7 +764,7 @@ cut_cursor (BrailleDisplay *brl) pos = brl_cols - 1; oldchar = prevdata[pos]; prevdata[pos] |= CUT_CSR_CHAR; - display_all (prevdata); + display_all (brl, prevdata); prevdata[pos] = oldchar; while ((key = brl_readCommand (brl, BRL_CTX_SCREEN)) == EOF) approximateDelay(1); /* just yield */ @@ -840,7 +812,7 @@ cut_cursor (BrailleDisplay *brl) } } - display_all (prevdata); + display_all (brl, prevdata); running = 0; return (res); } @@ -1011,7 +983,7 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) if(packtype == K_BATTERY){ const char *text = "-><- Display battery is low"; if(brl_cols < strlen(text)) text = "Display battery low"; - message(text, MSG_WAITKEY); + message(NULL, text, MSG_WAITKEY); return (EOF); }else if(packtype == K_QUERYREP){ /* flush the last 10bytes of the reply. */ @@ -1155,7 +1127,7 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) && sw_which[1] == sw_lastkey - 1) { ResetTypematic (); - display_all (prevdata); + display_all (brl, prevdata); /* Special: No res code... */ } #endif /* 0 */ @@ -1282,7 +1254,7 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) #if 0 /* typematic reset */ KEYSPECIAL (KEY_CLEFT | KEY_BRIGHT, ResetTypematic (); - display_all (prevdata); + display_all (brl, prevdata); ); #endif /* 0 */ }; diff --git a/BrailleDrivers/TSI/braille.h b/Drivers/Braille/TSI/braille.h similarity index 96% rename from BrailleDrivers/TSI/braille.h rename to Drivers/Braille/TSI/braille.h index 6df403fb42936aa2ccfd19be230b98de0c2524b6..c8531568bd1111f4a0aee1e26182443269636f6e 100644 --- a/BrailleDrivers/TSI/braille.h +++ b/Drivers/Braille/TSI/braille.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/TSI/help0.txt b/Drivers/Braille/TSI/help0.txt similarity index 98% rename from BrailleDrivers/TSI/help0.txt rename to Drivers/Braille/TSI/help0.txt index 3f8df11b26b6dc8a828f6b6c83cd86171132c6ed..a2a1fcff7332326c268bbc472d0a0c33f6c5ae4b 100644 --- a/BrailleDrivers/TSI/help0.txt +++ b/Drivers/Braille/TSI/help0.txt @@ -1,4 +1,4 @@ ----BRLTTY Navigator 20/40 Help Screen--- +Help for Navigator 20/40 "L-" means left keypad and "R-" mean right keypad (as in "Rdn" which means the "down" button from the right keypad). diff --git a/BrailleDrivers/TSI/help1.txt b/Drivers/Braille/TSI/help1.txt similarity index 98% rename from BrailleDrivers/TSI/help1.txt rename to Drivers/Braille/TSI/help1.txt index 374a15bb4e175740cc469d3d4a31c6e8ee0ff577..d96a38f3d45b7f9053044cc1d27f9162af302cb8 100644 --- a/BrailleDrivers/TSI/help1.txt +++ b/Drivers/Braille/TSI/help1.txt @@ -1,4 +1,4 @@ ----BRLTTY Navigator 80 Help Screen--- +Help for Navigator 80 "c-" means cursor, "d-" means display. "dn" means down, "rt" is right, "lt" is left. diff --git a/BrailleDrivers/TSI/help2.txt b/Drivers/Braille/TSI/help2.txt similarity index 97% rename from BrailleDrivers/TSI/help2.txt rename to Drivers/Braille/TSI/help2.txt index 787dc3d04cbfdba04a568cfb27c3cb6464f3612f..0510f73563579052420bac2450335e1cffbb8147 100644 --- a/BrailleDrivers/TSI/help2.txt +++ b/Drivers/Braille/TSI/help2.txt @@ -1,4 +1,4 @@ ----BRLTTY PowerBraille 40 Help Screen--- +Help for PowerBraille 40 "Lup" / "Ldn" means left rocker up/down. "Rup" / "Rdn" for the right rocker. "lt" is the left top square button, "rt" is the right button. @@ -32,7 +32,7 @@ Simulation of keyboard arrow keys: Special modes This help: CR1+CR40 - Key describer (learn mode): CR1+CR2+CR79+CR40 + Key describer (learn mode): CR1+CR2+CR39+CR40 Freeze/unfreeze screen: cnvx+cncv (toggle) Attribute underlining on/off: Ldn+Rup (toggle) Show attribute representations: Ldn+Rup+cnvx (toggle) diff --git a/BrailleDrivers/TSI/help3.txt b/Drivers/Braille/TSI/help3.txt similarity index 98% rename from BrailleDrivers/TSI/help3.txt rename to Drivers/Braille/TSI/help3.txt index 595f91f1fcea4d8a1511c01c63d3f4380e344cd8..bffacf115021ce9c972a31e0f5f9f5a803e68c94 100644 --- a/BrailleDrivers/TSI/help3.txt +++ b/Drivers/Braille/TSI/help3.txt @@ -1,4 +1,4 @@ ----BRLTTY PowerBraille 65/80 Help Screen--- +Help for PowerBraille 65/80 "Lup" / "Ldn" means left rocker up/down. "Rup" / "Rdn" for the right rocker. "but1" and "but2" are the two top square buttons on the left of the display, diff --git a/BrailleDrivers/TSI/reldeps.mk b/Drivers/Braille/TSI/reldeps.mk similarity index 100% rename from BrailleDrivers/TSI/reldeps.mk rename to Drivers/Braille/TSI/reldeps.mk diff --git a/BrailleDrivers/TTY/Makefile.in b/Drivers/Braille/TTY/Makefile.in similarity index 82% rename from BrailleDrivers/TTY/Makefile.in rename to Drivers/Braille/TTY/Makefile.in index 890810090f08e0d9a9ea9e3a6c7eb7e4c096b438..966214860c8512efe7d2aad279ed946387d72808 100644 --- a/BrailleDrivers/TTY/Makefile.in +++ b/Drivers/Braille/TTY/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/TTY/README b/Drivers/Braille/TTY/README similarity index 100% rename from BrailleDrivers/TTY/README rename to Drivers/Braille/TTY/README diff --git a/BrailleDrivers/TTY/braille.c b/Drivers/Braille/TTY/braille.c similarity index 90% rename from BrailleDrivers/TTY/braille.c rename to Drivers/Braille/TTY/braille.c index e756aaecc354ecf9581b963a147765139760c999..7501e277e75cb216f406affb2afd3494083326b0 100644 --- a/BrailleDrivers/TTY/braille.c +++ b/Drivers/Braille/TTY/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -41,7 +42,7 @@ static iconv_t conversionDescriptor = NULL; #include #elif defined(HAVE_PKG_NCURSESW) #define USE_CURSES -#include +#include #else /* HAVE_PKG_ */ #warning curses package either unspecified or unsupported #define addstr(string) serialWriteData(ttyDevice, string, strlen(string)) @@ -183,8 +184,8 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { refresh(); #endif /* USE_CURSES */ - brl->x = windowColumns; - brl->y = windowLines; + brl->textColumns = windowColumns; + brl->textRows = windowLines; LogPrint(LOG_INFO, "TTY: type=%s baud=%d size=%dx%d", ttyType, ttyBaud, windowColumns, windowLines); @@ -219,7 +220,9 @@ brl_destruct (BrailleDisplay *brl) { #ifdef USE_CURSES if (ttyScreen) { endwin(); +#ifndef __MINGW32__ delscreen(ttyScreen); +#endif /* __MINGW32__ */ ttyScreen = NULL; } #endif /* USE_CURSES */ @@ -264,10 +267,10 @@ brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) { static int previousCursor = -1; char *previousLocale; - if ((memcmp(previousContent, brl->buffer, brl->x*brl->y) == 0) && + if ((memcmp(previousContent, brl->buffer, brl->textColumns*brl->textRows) == 0) && (brl->cursor == previousCursor)) return 1; - memcpy(previousContent, brl->buffer, brl->x*brl->y); + memcpy(previousContent, brl->buffer, brl->textColumns*brl->textRows); previousCursor = brl->cursor; if (classificationLocale) { @@ -285,21 +288,21 @@ brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) { { int row; - for (row=0; rowy; row++) { - writeText(&text[row*brl->x], brl->x); - if (row < brl->y-1) + for (row=0; rowtextRows; row++) { + writeText(&text[row*brl->textColumns], brl->textColumns); + if (row < brl->textRows-1) addstr("\r\n"); } } #ifdef USE_CURSES - if ((brl->cursor >= 0) && (brl->cursor < (brl->x * brl->y))) - move(brl->cursor/brl->x, brl->cursor%brl->x); + if ((brl->cursor >= 0) && (brl->cursor < (brl->textColumns * brl->textRows))) + move(brl->cursor/brl->textColumns, brl->cursor%brl->textColumns); else - move(brl->y, 0); + move(brl->textRows, 0); refresh(); #else /* USE_CURSES */ - if ((brl->y == 1) && (brl->cursor >= 0) && (brl->cursor < brl->x)) { + if ((brl->textRows == 1) && (brl->cursor >= 0) && (brl->cursor < brl->textColumns)) { addch('\r'); writeText(text, brl->cursor); } else { diff --git a/BrailleDrivers/TTY/braille.h b/Drivers/Braille/TTY/braille.h similarity index 70% rename from BrailleDrivers/TTY/braille.h rename to Drivers/Braille/TTY/braille.h index 9e976c623568da4400de31b512dcfc1034141d21..e0bc631f9d91f03eacc605dfcf6ca767bcd19191 100644 --- a/BrailleDrivers/TTY/braille.h +++ b/Drivers/Braille/TTY/braille.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/TTY/help.txt b/Drivers/Braille/TTY/help.txt similarity index 96% rename from BrailleDrivers/TTY/help.txt rename to Drivers/Braille/TTY/help.txt index 5b194df13adbfa6fcdaf2d46c9ee7673b164c50a..24f45c17de1297e6660b818bc0e67a74053b473e 100644 --- a/BrailleDrivers/TTY/help.txt +++ b/Drivers/Braille/TTY/help.txt @@ -1,4 +1,4 @@ -Help Screen for TTY Driver: +Help for All Models Basic Navigation: Left/Right Arrow: Go left/right one window. diff --git a/BrailleDrivers/TTY/reldeps.mk b/Drivers/Braille/TTY/reldeps.mk similarity index 100% rename from BrailleDrivers/TTY/reldeps.mk rename to Drivers/Braille/TTY/reldeps.mk diff --git a/BrailleDrivers/TechniBraille/Makefile.in b/Drivers/Braille/TechniBraille/Makefile.in similarity index 82% rename from BrailleDrivers/TechniBraille/Makefile.in rename to Drivers/Braille/TechniBraille/Makefile.in index 63f3278826786b4b5e8ebd18261b108bf573b51d..ede857264806c41a650eee0e44bef7effe65dfee 100644 --- a/BrailleDrivers/TechniBraille/Makefile.in +++ b/Drivers/Braille/TechniBraille/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/TechniBraille/braille.c b/Drivers/Braille/TechniBraille/braille.c similarity index 89% rename from BrailleDrivers/TechniBraille/braille.c rename to Drivers/Braille/TechniBraille/braille.c index b7c5c22f3380c6afeb88f7a6d4fa100ece9b9345..9a2a471f212605e9528fa631dbfb459bd766df1b 100644 --- a/BrailleDrivers/TechniBraille/braille.c +++ b/Drivers/Braille/TechniBraille/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -24,7 +25,6 @@ #include "misc.h" #include "brl_driver.h" -#include "tbl.h" static TranslationTable outputTable; static TranslationTable inputTable; @@ -109,34 +109,34 @@ writePacket (BrailleDisplay *brl, unsigned char function, unsigned char *data, u static int writeBrailleCells (BrailleDisplay *brl) { - unsigned char cells[brl->x]; + unsigned char cells[brl->textColumns]; int i; - for (i=0; ix; ++i) cells[i] = outputTable[brailleCells[i]]; - return writePacket(brl, 1, cells, brl->x); + for (i=0; itextColumns; ++i) cells[i] = outputTable[brailleCells[i]]; + return writePacket(brl, 1, cells, brl->textColumns); } static int clearBrailleCells (BrailleDisplay *brl) { - memset(brailleCells, 0, brl->x); + memset(brailleCells, 0, brl->textColumns); return writeBrailleCells(brl); } static int writeVisualText (BrailleDisplay *brl) { - unsigned char bytes[brl->x]; + unsigned char bytes[brl->textColumns]; int i; - for (i=0; ix; ++i) { + for (i=0; itextColumns; ++i) { wchar_t character = visualText[i]; bytes[i] = iswLatin1(character)? character: '?'; } - return writePacket(brl, 2, bytes, brl->x); + return writePacket(brl, 2, bytes, brl->textColumns); } static int clearVisualText (BrailleDisplay *brl) { - wmemset(visualText, WC_C(' '), brl->x); + wmemset(visualText, WC_C(' '), brl->textColumns); return writeVisualText(brl); } @@ -166,8 +166,8 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { if (size <= 0) break; if (response[1] == 4) { - brl->x = response[2]; - brl->y = 1; + brl->textColumns = response[2]; + brl->textRows = 1; brl->helpPage = 0; if (!clearBrailleCells(brl)) break; @@ -199,14 +199,14 @@ brl_destruct (BrailleDisplay *brl) { static int brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) { if (text) { - if (wmemcmp(text, visualText, brl->x) != 0) { - wmemcpy(visualText, text, brl->x); + if (wmemcmp(text, visualText, brl->textColumns) != 0) { + wmemcpy(visualText, text, brl->textColumns); if (!writeVisualText(brl)) return 0; } } - if (memcmp(brl->buffer, brailleCells, brl->x) != 0) { - memcpy(brailleCells, brl->buffer, brl->x); + if (memcmp(brl->buffer, brailleCells, brl->textColumns) != 0) { + memcpy(brailleCells, brl->buffer, brl->textColumns); if (!writeBrailleCells(brl)) return 0; } return 1; @@ -229,7 +229,7 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { case 2: { unsigned char column = packet[2]; - if (column && (column <= brl->x)) return BRL_BLK_ROUTE + (column - 1); + if (column && (column <= brl->textColumns)) return BRL_BLK_ROUTE + (column - 1); break; } diff --git a/BrailleDrivers/TechniBraille/help.txt b/Drivers/Braille/TechniBraille/help.txt similarity index 97% rename from BrailleDrivers/TechniBraille/help.txt rename to Drivers/Braille/TechniBraille/help.txt index 81309c941869cf09aa3f5850266cfd246c312b2e..b135a6662b62f691cf00b0b71ec31e0eb470d99b 100644 --- a/BrailleDrivers/TechniBraille/help.txt +++ b/Drivers/Braille/TechniBraille/help.txt @@ -1,4 +1,4 @@ -Help for TechniBraille Displays +Help for All Models Combinations of dots 1-8: Keyboard input. Key below dot 7: Escape key. diff --git a/BrailleDrivers/TechniBraille/reldeps.mk b/Drivers/Braille/TechniBraille/reldeps.mk similarity index 91% rename from BrailleDrivers/TechniBraille/reldeps.mk rename to Drivers/Braille/TechniBraille/reldeps.mk index 39d73a0ac448ea77e42f30ccaa111528b6ff0e64..842cc062c537c7d756a217d6c7bac6ab136dbca1 100644 --- a/BrailleDrivers/TechniBraille/reldeps.mk +++ b/Drivers/Braille/TechniBraille/reldeps.mk @@ -7,7 +7,6 @@ braille.$O: $(SRC_TOP)Programs/brl.h braille.$O: $(SRC_TOP)Programs/brl_driver.h braille.$O: $(SRC_TOP)Programs/brldefs.h braille.$O: $(SRC_TOP)Programs/driver.h -braille.$O: $(SRC_TOP)Programs/tbl.h braille.$O: $(SRC_TOP)Programs/io_defs.h braille.$O: $(SRC_TOP)Programs/io_serial.h diff --git a/BrailleDrivers/VideoBraille/Makefile.in b/Drivers/Braille/VideoBraille/Makefile.in similarity index 83% rename from BrailleDrivers/VideoBraille/Makefile.in rename to Drivers/Braille/VideoBraille/Makefile.in index af0c1d0ca55e6c069382d5b82b40874dad8c076f..7cf3a0aa02b157cb20b0baf25a27473812ad8b16 100644 --- a/BrailleDrivers/VideoBraille/Makefile.in +++ b/Drivers/Braille/VideoBraille/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/VideoBraille/README b/Drivers/Braille/VideoBraille/README similarity index 100% rename from BrailleDrivers/VideoBraille/README rename to Drivers/Braille/VideoBraille/README diff --git a/BrailleDrivers/VideoBraille/README.it b/Drivers/Braille/VideoBraille/README.it similarity index 100% rename from BrailleDrivers/VideoBraille/README.it rename to Drivers/Braille/VideoBraille/README.it diff --git a/BrailleDrivers/VideoBraille/braille.h b/Drivers/Braille/VideoBraille/braille.h similarity index 79% rename from BrailleDrivers/VideoBraille/braille.h rename to Drivers/Braille/VideoBraille/braille.h index 6b5e253b51b2d2a86a6674f54abb40398b4f73a7..89acf282ffa01074932c84c1fad9ef2acc38be2c 100644 --- a/BrailleDrivers/VideoBraille/braille.h +++ b/Drivers/Braille/VideoBraille/braille.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/VideoBraille/help.txt b/Drivers/Braille/VideoBraille/help.txt similarity index 95% rename from BrailleDrivers/VideoBraille/help.txt rename to Drivers/Braille/VideoBraille/help.txt index ac9238e8ca143073b3a64571a43586b30f43eb20..182fa90f9cd8bfee56c6d439694ebe96b82e68e2 100644 --- a/BrailleDrivers/VideoBraille/help.txt +++ b/Drivers/Braille/VideoBraille/help.txt @@ -1,4 +1,4 @@ -BRLTTY Help Screen (VideoBraille) +Help for All Models Movement keys: Up Up one line diff --git a/BrailleDrivers/VideoBraille/reldeps.mk b/Drivers/Braille/VideoBraille/reldeps.mk similarity index 90% rename from BrailleDrivers/VideoBraille/reldeps.mk rename to Drivers/Braille/VideoBraille/reldeps.mk index 88228cc16ebb245b9e22cd63f5309ddc4517000e..8cfb0d5bec22cfabe5442f76f1cd96759d18d7a3 100644 --- a/BrailleDrivers/VideoBraille/reldeps.mk +++ b/Drivers/Braille/VideoBraille/reldeps.mk @@ -15,7 +15,9 @@ vblow.$O: $(SRC_DIR)/vblow.c vblow.$O: $(BLD_TOP)config.h vblow.$O: $(SRC_TOP)prologue.h vblow.$O: $(SRC_TOP)Programs/misc.h +vblow.$O: $(SRC_TOP)Programs/bitmask.h vblow.$O: $(SRC_TOP)Programs/keyboard.h +vblow.$O: $(SRC_TOP)Programs/keycodes.h vblow.$O: $(SRC_TOP)Programs/system.h vblow.$O: $(SRC_TOP)Programs/brl.h vblow.$O: $(SRC_TOP)Programs/brldefs.h diff --git a/BrailleDrivers/VideoBraille/vb.c b/Drivers/Braille/VideoBraille/vb.c similarity index 94% rename from BrailleDrivers/VideoBraille/vb.c rename to Drivers/Braille/VideoBraille/vb.c index f7bb3055935877d0d53fe904b59dafb753f5d976..4d5ac8796b07423c2cb37d3ad1a9bc22adfd764f 100644 --- a/BrailleDrivers/VideoBraille/vb.c +++ b/Drivers/Braille/VideoBraille/vb.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -36,8 +37,8 @@ static int brl_construct(BrailleDisplay *brl, char **parameters, const char *dev /* Seems to signal en error */ if (!vbinit()) { /* Theese are pretty static */ - brl->x=40; - brl->y=1; + brl->textColumns=40; + brl->textRows=1; return 1; } return 0; diff --git a/BrailleDrivers/VideoBraille/vblow.c b/Drivers/Braille/VideoBraille/vblow.c similarity index 93% rename from BrailleDrivers/VideoBraille/vblow.c rename to Drivers/Braille/VideoBraille/vblow.c index f9e485ef132eb8f049d5b22f294fa957b6cff88e..5ad0f4099d60de9c11a88346df1a82ef41e77c28 100644 --- a/BrailleDrivers/VideoBraille/vblow.c +++ b/Drivers/Braille/VideoBraille/vblow.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/VideoBraille/vblow.h b/Drivers/Braille/VideoBraille/vblow.h similarity index 83% rename from BrailleDrivers/VideoBraille/vblow.h rename to Drivers/Braille/VideoBraille/vblow.h index 6e51d704dfa2038549758e12cf2068b9bb99508c..219dcd0d000a269f8be8d704292e3fd2f7a4cdad 100644 --- a/BrailleDrivers/VideoBraille/vblow.h +++ b/Drivers/Braille/VideoBraille/vblow.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/Virtual/Makefile.in b/Drivers/Braille/Virtual/Makefile.in similarity index 82% rename from BrailleDrivers/Virtual/Makefile.in rename to Drivers/Braille/Virtual/Makefile.in index 41567d09cae8a459086f31fd5ecbc9bd0ee75a89..a94d44d999eb964834095c72128c459cb321cd9a 100644 --- a/BrailleDrivers/Virtual/Makefile.in +++ b/Drivers/Braille/Virtual/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/Virtual/README b/Drivers/Braille/Virtual/README similarity index 100% rename from BrailleDrivers/Virtual/README rename to Drivers/Braille/Virtual/README diff --git a/BrailleDrivers/Virtual/braille.c b/Drivers/Braille/Virtual/braille.c similarity index 87% rename from BrailleDrivers/Virtual/braille.c rename to Drivers/Braille/Virtual/braille.c index c7de2303b8cf4e70ab8d7a938c284e2864880850..8f59adb0bfab9a2d12b237dbdc5f86252deab4f6 100644 --- a/BrailleDrivers/Virtual/braille.c +++ b/Drivers/Braille/Virtual/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -64,7 +65,7 @@ #include "charset.h" #include "cmd.h" -#define BRLSTAT ST_Generic +#define BRL_STATUS_FIELDS sfGeneric #define BRL_HAVE_STATUS_CELLS #include "brl_driver.h" #include "braille.h" @@ -93,10 +94,15 @@ static size_t commandCount; static int brailleColumns; static int brailleRows; -static int brailleCells; -static unsigned char *previousBraille = NULL; -static wchar_t *previousText = NULL; -static unsigned char previousStatus[BRL_MAX_STATUS_CELL_COUNT]; +static int brailleCount; +static unsigned char *brailleCells = NULL; +static wchar_t *textCharacters = NULL; + +static int statusColumns; +static int statusRows; +static int statusCount; +static unsigned char *statusCells = NULL; +static unsigned char genericCells[BRL_genericStatusCellCount]; typedef struct { #ifdef AF_LOCAL @@ -829,55 +835,90 @@ findCommand (const char *name) { static int dimensionsChanged (BrailleDisplay *brl) { - int ok = 0; - int columns; - int rows; + int ok = 1; const char *word; + int columns1; + int rows1; + + int columns2 = 0; + int rows2 = 0; + if ((word = nextWord())) { - if (isInteger(&columns, word) && (columns > 0)) { - ok = 1; + if (isInteger(&columns1, word) && (columns1 > 0)) { + rows1 = 1; if ((word = nextWord())) { - if (!isInteger(&rows, word) || (rows < 1)) { - LogPrint(LOG_WARNING, "Invalid row count."); + if (isInteger(&rows1, word) && (rows1 > 0)) { + if ((word = nextWord())) { + if (isInteger(&columns2, word) && (columns2 > 0)) { + rows2 = 0; + + if ((word = nextWord())) { + if (isInteger(&rows2, word) && (rows2 > 0)) { + } else { + LogPrint(LOG_WARNING, "invalid status row count: %s", word); + ok = 0; + } + } + } else { + LogPrint(LOG_WARNING, "invalid status column count: %s", word); + ok = 0; + } + } + } else { + LogPrint(LOG_WARNING, "invalid text row count: %s", word); ok = 0; } - } else { - rows = 1; } } else { - LogPrint(LOG_WARNING, "Invalid column count."); + LogPrint(LOG_WARNING, "invalid text column count: %s", word); + ok = 0; } } else { - LogPrint(LOG_WARNING, "Missing column count."); + LogPrint(LOG_WARNING, "missing text column count"); } if (ok) { - int cells = columns * rows; + int count1 = columns1 * rows1; + int count2 = columns2 * rows2; unsigned char *braille; wchar_t *text; + unsigned char *status; + + if ((braille = calloc(count1, sizeof(*braille)))) { + if ((text = calloc(count1, sizeof(*text)))) { + if ((status = calloc(count2, sizeof(*status)))) { + brailleColumns = columns1; + brailleRows = rows1; + brailleCount = count1; + + statusColumns = columns2; + statusRows = rows2; + statusCount = count2; + + if (brailleCells) free(brailleCells); + brailleCells = braille; + memset(brailleCells, 0, count1); + + if (textCharacters) free(textCharacters); + textCharacters = text; + wmemset(textCharacters, WC_C(' '), count1); + + if (statusCells) free(statusCells); + statusCells = status; + memset(statusCells, 0, count2); + memset(genericCells, 0, BRL_genericStatusCellCount); + + brl->textColumns = brailleColumns; + brl->textRows = brailleRows; + brl->statusColumns = statusColumns; + brl->statusRows = statusRows; + brl->helpPage = 0; + return 1; + } - if ((braille = malloc(cells))) { - if ((text = calloc(cells, sizeof(*text)))) { - brailleColumns = columns; - brailleRows = rows; - brailleCells = cells; - - memset(braille, 0, cells); - if (previousBraille) free(previousBraille); - previousBraille = braille; - - wmemset(text, WC_C(' '), cells); - if (previousText) free(previousText); - previousText = text; - - memset(previousStatus, 0, sizeof(previousStatus)); - - brl->x = columns; - brl->y = rows; - brl->helpPage = 0; - return 1; + free(text); } free(braille); @@ -994,14 +1035,19 @@ failed: static void brl_destruct (BrailleDisplay *brl) { - if (previousText) { - free(previousText); - previousText = NULL; + if (statusCells) { + free(statusCells); + statusCells = NULL; } - if (previousBraille) { - free(previousBraille); - previousBraille = NULL; + if (textCharacters) { + free(textCharacters); + textCharacters = NULL; + } + + if (brailleCells) { + free(brailleCells); + brailleCells = NULL; } if (fileDescriptor != -1) { @@ -1015,13 +1061,13 @@ brl_destruct (BrailleDisplay *brl) { static int brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) { if (text) { - if (wmemcmp(text, previousText, brailleCells) != 0) { + if (wmemcmp(text, textCharacters, brailleCount) != 0) { const wchar_t *address = text; - int cells = brailleCells; + int count = brailleCount; writeString("Visual \""); - while (cells-- > 0) { + while (count-- > 0) { wchar_t character = *address++; switch (character) { @@ -1037,34 +1083,44 @@ brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) { writeString("\""); writeLine(); - wmemcpy(previousText, text, brailleCells); + wmemcpy(textCharacters, text, brailleCount); } } - if (memcmp(brl->buffer, previousBraille, brailleCells) != 0) { + if (memcmp(brl->buffer, brailleCells, brailleCount) != 0) { writeString("Braille \""); - writeDots(brl->buffer, brailleCells); + writeDots(brl->buffer, brailleCount); writeString("\""); writeLine(); - memcpy(previousBraille, brl->buffer, brailleCells); + memcpy(brailleCells, brl->buffer, brailleCount); } + return 1; } static int -brl_writeStatus (BrailleDisplay *brl, const unsigned char *st) { - int generic = st[BRL_firstStatusCell] == BRL_STATUS_CELLS_GENERIC; - int cells = BRL_MAX_STATUS_CELL_COUNT; +brl_writeStatus (BrailleDisplay *brl, const unsigned char *status) { + int generic = status[BRL_firstStatusCell] == BRL_STATUS_CELLS_GENERIC; + unsigned char *cells; + int count; + + if (generic) { + cells = genericCells; + count = BRL_genericStatusCellCount; + } else { + cells = statusCells; + count = statusCount; + } - if (memcmp(st, previousStatus, cells) != 0) { + if (memcmp(status, cells, count) != 0) { if (generic) { - int all = previousStatus[BRL_firstStatusCell] != BRL_STATUS_CELLS_GENERIC; + int all = cells[BRL_firstStatusCell] != BRL_STATUS_CELLS_GENERIC; int i; - for (i=1; i +DRIVER_DEVELOPERS = Sébastien Hinderer HELP_DEPS = $(HELP_TEXT) include $(SRC_TOP)braille.mk @@ -31,7 +32,7 @@ braille.$O: VSTP_OBJECTS = vstp_main.$O vstp_transfer.$O vstp$X: $(VSTP_OBJECTS) brlapi - $(CC) $(LDFLAGS) -o $@ $(VSTP_OBJECTS) -L$(BLD_TOP)$(PGM_DIR) -lbrlapi $(LDLIBS) + $(CC) $(LDFLAGS) -o $@ $(VSTP_OBJECTS) $(API_LIBS) $(LDLIBS) vstp_main.$O: $(CC) $(CFLAGS) -c $(SRC_DIR)/vstp_main.c @@ -39,10 +40,15 @@ vstp_main.$O: vstp_transfer.$O: $(CC) $(CFLAGS) -c $(SRC_DIR)/vstp_transfer.c +api: vstp$X +braille-all:: $(BUILD_API) + clean:: -rm -f vstp$X -install:: vstp$X install-program-directory install-man1-directory +install-api:: install-vstp + +install-vstp: vstp$X install-program-directory install-man1-directory $(INSTALL_PROGRAM) vstp$X $(INSTALL_PROGRAM_DIRECTORY) $(INSTALL_DATA) vstp.1 $(INSTALL_MAN1_DIRECTORY) diff --git a/Drivers/Braille/VisioBraille/README b/Drivers/Braille/VisioBraille/README new file mode 100644 index 0000000000000000000000000000000000000000..fe8aec4cd364510c2bddbda97e14239e2aed28ff --- /dev/null +++ b/Drivers/Braille/VisioBraille/README @@ -0,0 +1,101 @@ +Ceci est le fichier README relatif à la version 0.2 du pilote VisioBraille +pour BRLTTY. + +Ce pilote a été testé avec succès avec les terminaux équipés de PROMs 0.0g et +5.0q-fr. Il est vraisemblable que toutes les PROMs de version >=4 +soient supportées par le présent pilote. + +Auteur et mainteneur actuel: +Sébastien Hinderer + +Bien que ce pilote soit utilisé de manière intensive, il n'est pas impossible +que certaines erreurs subsistent. +Si vous en trouvez, ou si vous avez des commentaires/suggestions quant à +l'évolution de ce pilote, n'hésitez surtout pas à me contacter. + +Notes pour l'installation et Paramètres +======================================= + +Une table braille compatible avec celle fournie en standard dans le TVB +(basée sur la table SAGEM) est disponible, dans le fichier text.visiob.tbl du +répertoire ../../BrailleTables + +Paramètres acceptés par ce pilote : + +- displaysize : permet de spécifier la taille de la plage tactile. + +- promversion: permet de spécifier la version de PROM utilisée. +Ce paramètre n'est nécessaire que pour des PROMs de version inférieure ou +égale à 3. Le support de ces PROMs n'étant disponible que pour Linux, et +moyennant une modification du noyau, merci de contacter directement l'auteur +si vous souhaitez utiliser une telle PROM. + +- baud: permet de spécifier la vitesse de la communication série. +Ce parmètre n'est pas nécessaire pour les terminaux VisioBraille et +n'est fourni que pour permettre l'utilisation d'émulateurs de terminaux qui +ne pourraient pas communiquer à une vitesse suffisante. Par conséquent, +n'utilisez pas ce paramètre, à moins de savoir ce que vous faites. + +Pour des informations sur la manière de passer des paramètres au pilote, ou +pour toute autre précision concernant l'installation et l'utilisation de +brltty, merci de consulter la documentation du répertoire ../../Documents + +Notes pour l'utilisation. +========================= + + Voici la description des fonctions attachées aux touches des claviers +auxiliaires ainsi qu'aux commandes ploc-ploc. + +~~a Active l'aide de BRLTTY +~~b Active/désactive les bips +~~c Menu de configuration BRLTTY (~~c pour le quitter) +~~d page down +~~e end +~~h home +~~i Active/désactive le mode info (Cf le manuel BRLTTY pour en savoir plus) +~~r Réinitialise les paramètres de BRLTTY +~~s Sauvegarde la configuration des paramètres BRLTTY +~~u page up + +Clavier auxiliaire: +Sous Linux, les touches A1,A2,A3,A6,A7,A8 permettent d'activer les +6 premières consoles virtuelles (correspond à alt-f1 à alt-f6). +L'action de ces touches n'est pas définie sur les autres systèmes +d'exploitation. +B6 coin supérieur gauche de l'écran +D6 coin inférieur gauche de l'écran +A4 fenêtre non vide précédente +A5 fenêtre non vide suivante +B7 ligne précédente +D7 ligne suivante +C6 fenêtre précédente +C8 fenêtre suivante +C7 fenêtre contenant le curseur +C1 flèche gauche +C3 flèche droite +B2 flèche haut +D2 flèche bas +B3 curseur on/off +D1 delete + + En outre, les touches backspace, tab, ctrl, alt... sont siulées de la même +manière que sous DOS et Windows. + +Autres liens +============ + +Un programme permettant le transfert de visiobases entre PC et TVB est +disponible à l'adresse suivante : + +http://brl.thefreecat.org + +Ce qu'il reste à faire +====================== + + Pour les prochaines versions du driver, il serait peut-être souhaitable +d'inclure la possibilité de reprohrammer les touches, un peu comme cela se +fait sous DOS avec la commande ~~f. + + +-- +Sébastien Hinderer diff --git a/BrailleDrivers/VisioBraille/braille.c b/Drivers/Braille/VisioBraille/braille.c similarity index 97% rename from BrailleDrivers/VisioBraille/braille.c rename to Drivers/Braille/VisioBraille/braille.c index 3bf14d6c19fe863162ce80ef467ea51a17e0fda1..24c3a282ab764aac3101811bb9b8aa202544a3c7 100644 --- a/BrailleDrivers/VisioBraille/braille.c +++ b/Drivers/Braille/VisioBraille/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -166,10 +167,10 @@ static int brl_reset(BrailleDisplay *brl) /* Function : brl_construct */ /* Opens and configures the serial port properly */ -/* if brl->x <= 0 when brl_construct is called, then brl->x is initialized */ +/* if brl->textColumns <= 0 when brl_construct is called, then brl->textColumns is initialized */ /* either with the BRAILLEDISPLAYSIZE constant, defined in braille.h */ /* or with the size got through identification request if it succeeds */ -/* Else, brl->x is left unmodified by brl_construct, so that */ +/* Else, brl->textColumns is left unmodified by brl_construct, so that */ /* the braille display can be resized without reloading the driver */ static int brl_construct(BrailleDisplay *brl, char **parameters, const char *device) { @@ -220,7 +221,7 @@ static int brl_construct(BrailleDisplay *brl, char **parameters, const char *dev } if (i==0) { LogPrint(LOG_WARNING,"Unable to identify terminal properly"); - if (!brl->x) brl->x = BRAILLEDISPLAYSIZE; + if (!brl->textColumns) brl->textColumns = BRAILLEDISPLAYSIZE; } else { LogPrint(LOG_INFO,"Braille terminal description:"); LogPrint(LOG_INFO," version=%c%c%c",terminfo.version[0],terminfo.version[1],terminfo.version[2]); @@ -233,12 +234,12 @@ static int brl_construct(BrailleDisplay *brl, char **parameters, const char *dev LogPrint(LOG_INFO," prog=%c",terminfo.prog); LogPrint(LOG_INFO," lcd=%c",terminfo.lcd); LogPrint(LOG_INFO," f2=%s",terminfo.f2); - if (brl->x<=0) brl->x = (terminfo.size[0]-'0')*10 + (terminfo.size[1]-'0'); + if (brl->textColumns<=0) brl->textColumns = (terminfo.size[0]-'0')*10 + (terminfo.size[1]-'0'); } #else /* SendIdReq */ - brl->x = ds; + brl->textColumns = ds; #endif /* SendIdReq */ - brl->y=1; + brl->textRows=1; return 1; } @@ -521,10 +522,10 @@ static int brl_writeWindow(BrailleDisplay *brl, const wchar_t *text) static unsigned char brailleDisplay[81]= { 0x3e }; /* should be large enough for everyone */ static unsigned char prevData[80]; int i; - if (memcmp(&prevData,brl->buffer,brl->x)==0) return 1; - for (i=0; ix; i++) brailleDisplay[i+1] = outputTable[*(brl->buffer+i)]; - if (brl_writePacket(brl,(unsigned char *) &brailleDisplay,brl->x+1)==0) { - memcpy(&prevData,brl->buffer,brl->x); + if (memcmp(&prevData,brl->buffer,brl->textColumns)==0) return 1; + for (i=0; itextColumns; i++) brailleDisplay[i+1] = outputTable[*(brl->buffer+i)]; + if (brl_writePacket(brl,(unsigned char *) &brailleDisplay,brl->textColumns+1)==0) { + memcpy(&prevData,brl->buffer,brl->textColumns); } return 1; } @@ -647,7 +648,7 @@ static int brl_readKey(BrailleDisplay *brl) char buf [100]; sprintf(buf,"Keycode: 0x%x",ch); printcode = 0; /* MUST BE DONE BEFORE THE CALL TO MESSAGE */ - message(buf,MSG_WAITKEY | MSG_NODELAY); + message(NULL,buf,MSG_WAITKEY | MSG_NODELAY); return EOF; } if (routing) { diff --git a/BrailleDrivers/VisioBraille/braille.h b/Drivers/Braille/VisioBraille/braille.h similarity index 77% rename from BrailleDrivers/VisioBraille/braille.h rename to Drivers/Braille/VisioBraille/braille.h index f89169b3856e6c56b5aad82acf9af6030599d885..188f4c24e396668f0d843814d31d37af03900ff8 100644 --- a/BrailleDrivers/VisioBraille/braille.h +++ b/Drivers/Braille/VisioBraille/braille.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/BrailleDrivers/VisioBraille/brldefs-vs.h b/Drivers/Braille/VisioBraille/brldefs-vs.h similarity index 92% rename from BrailleDrivers/VisioBraille/brldefs-vs.h rename to Drivers/Braille/VisioBraille/brldefs-vs.h index 40377dfb7a8da6911ee5e46e1057cddbbdf1e790..1fda3144a73339db257c4568db9bdd7235bf9f81 100644 --- a/BrailleDrivers/VisioBraille/brldefs-vs.h +++ b/Drivers/Braille/VisioBraille/brldefs-vs.h @@ -1,15 +1,14 @@ /* * libbrlapi - A library providing access to braille terminals for applications. * - * Copyright (C) 2002-2008 Sébastien Hinderer + * Copyright (C) 2002-2009 Sébastien Hinderer * * libbrlapi 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * diff --git a/BrailleDrivers/VisioBraille/help.txt b/Drivers/Braille/VisioBraille/help.txt similarity index 85% rename from BrailleDrivers/VisioBraille/help.txt rename to Drivers/Braille/VisioBraille/help.txt index ae4b63f33b2261ae46c1c3fa1fa5a1afe38b60b2..b2340dda70f4417499d9e42e3c60f6ded747f4b8 100644 --- a/BrailleDrivers/VisioBraille/help.txt +++ b/Drivers/Braille/VisioBraille/help.txt @@ -1,4 +1,4 @@ -Ecran d'aide pour VisioBraille (~~a pour sortir de l'aide) +Help for All Models Les touches du clavier auxiliaire s'utilisent comme sous DOS/Windows. Les opérations de changement de mode d'affichage (6-8 points), de simulation de @@ -6,4 +6,4 @@ touches... se font En outre, quelques commandes ~~ suivi d'une lettre sont disponibles, reportez-vous au fichier README du répertoire VisioBraille pour en savoir plus. - \ No newline at end of file + diff --git a/BrailleDrivers/VisioBraille/reldeps.mk b/Drivers/Braille/VisioBraille/reldeps.mk similarity index 100% rename from BrailleDrivers/VisioBraille/reldeps.mk rename to Drivers/Braille/VisioBraille/reldeps.mk diff --git a/Documents/vstp.1 b/Drivers/Braille/VisioBraille/vstp.1 similarity index 100% rename from Documents/vstp.1 rename to Drivers/Braille/VisioBraille/vstp.1 diff --git a/BrailleDrivers/VisioBraille/vstp.h b/Drivers/Braille/VisioBraille/vstp.h similarity index 96% rename from BrailleDrivers/VisioBraille/vstp.h rename to Drivers/Braille/VisioBraille/vstp.h index 05801ae16f20bb84b47224173a5c2551e6641fca..8e833535cfaab0dab148ca6e4eea4ac2abcb34c7 100644 --- a/BrailleDrivers/VisioBraille/vstp.h +++ b/Drivers/Braille/VisioBraille/vstp.h @@ -1,7 +1,7 @@ /* - * Copyright (C) 2006-2008 S&S + * Copyright (C) 2006-2009 S&S * Samuel Thibault - * Sébastien Hinderer + * Sébastien Hinderer * * This program is free software ; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/BrailleDrivers/VisioBraille/vstp_main.c b/Drivers/Braille/VisioBraille/vstp_main.c similarity index 96% rename from BrailleDrivers/VisioBraille/vstp_main.c rename to Drivers/Braille/VisioBraille/vstp_main.c index f69d1a22b972664ea9a5a1c379ccafe715e05a64..247523ee3e18d619669def94e75f3d20afa97b7c 100644 --- a/BrailleDrivers/VisioBraille/vstp_main.c +++ b/Drivers/Braille/VisioBraille/vstp_main.c @@ -1,7 +1,7 @@ /* - * Copyright (C) 2006-2008 S&S + * Copyright (C) 2006-2009 S&S * Samuel Thibault - * Sébastien Hinderer + * Sébastien Hinderer * * This program is free software ; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -220,10 +220,22 @@ int main(int argc, char *argv[]) { signal(SIGINT,handleint); signal(SIGTERM,handleint); + +#ifdef SIGHUP signal(SIGHUP,handleint); +#endif /* SIGHUP */ + +#ifdef SIGQUIT signal(SIGQUIT,handleint); +#endif /* SIGQUIT */ + +#ifdef SIGPIPE signal(SIGPIPE,handleint); +#endif /* SIGPIPE */ + +#ifdef SIGALRM signal(SIGALRM,transfer_timeout); +#endif /* SIGALRM */ if (visiobases_dir && chdir(visiobases_dir)<0) { perror(visiobases_dir); diff --git a/BrailleDrivers/VisioBraille/vstp_transfer.c b/Drivers/Braille/VisioBraille/vstp_transfer.c similarity index 98% rename from BrailleDrivers/VisioBraille/vstp_transfer.c rename to Drivers/Braille/VisioBraille/vstp_transfer.c index b74bfd7dbcb698125e125511cfc1e6f29603e282..fbc743c976f744cb21157d3ffb04be7407fd47ed 100644 --- a/BrailleDrivers/VisioBraille/vstp_transfer.c +++ b/Drivers/Braille/VisioBraille/vstp_transfer.c @@ -1,7 +1,7 @@ /* - * Copyright (C) 2006-2008 S&S + * Copyright (C) 2006-2009 S&S * Samuel Thibault - * Sébastien Hinderer + * Sébastien Hinderer * * This program is free software ; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -38,6 +38,10 @@ #include "vstp.h" +#ifdef __MINGW32__ +#define alarm(t) (void)0 +#endif + /* SEND */ /* tries to send a message */ #define SEND(buf,size) \ diff --git a/BrailleDrivers/Voyager/Makefile.in b/Drivers/Braille/Voyager/Makefile.in similarity index 85% rename from BrailleDrivers/Voyager/Makefile.in rename to Drivers/Braille/Voyager/Makefile.in index 9ccd8f82445e3d6ad0bbf3711a53a71dd8d94df3..676bd2376f87e509769a375b7c99082b615db2d1 100644 --- a/BrailleDrivers/Voyager/Makefile.in +++ b/Drivers/Braille/Voyager/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/Voyager/README b/Drivers/Braille/Voyager/README similarity index 88% rename from BrailleDrivers/Voyager/README rename to Drivers/Braille/Voyager/README index 86a66211cec3a6e56b97134434d24f14b6b87dde..2a3c6bee84c796c18214979db59602cc643234c6 100644 --- a/BrailleDrivers/Voyager/README +++ b/Drivers/Braille/Voyager/README @@ -72,16 +72,6 @@ functions. When set to yes", they function as an 8-dot braille keyboard. If B, C, or B+C is pressed along with any top key combination then it's as if this parameter were set to "no". -StatusCells: This parameter specifies how many cells are to be -reserved -for status indicators. It may be an integer with an absolute value no -greater than half the size of the display. If it's positive then the -status cells are on the left, if it's negative then they're on the -right, and if it's 0 then there are no status cells. The default is 3, -i.e. three status cells on the left. If there's at least one status cell -then an additional blank cell is reserved between the status and the -text cells. - There are only a handful of BRLTTY users, so if you are trying out this driver, please drop us a note, even if you have no problems! diff --git a/BrailleDrivers/Voyager/TODO b/Drivers/Braille/Voyager/TODO similarity index 100% rename from BrailleDrivers/Voyager/TODO rename to Drivers/Braille/Voyager/TODO diff --git a/BrailleDrivers/Voyager/braille.c b/Drivers/Braille/Voyager/braille.c similarity index 87% rename from BrailleDrivers/Voyager/braille.c rename to Drivers/Braille/Voyager/braille.c index c4cfa83cb726114dcd9616c3f85f7dd09f254b33..c53604c7b5d27c55c1859d7faccf4259f51b4fb2 100644 --- a/BrailleDrivers/Voyager/braille.c +++ b/Drivers/Braille/Voyager/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -49,16 +50,13 @@ #include "misc.h" typedef enum { - PARM_INPUTMODE, - PARM_STATUSCELLS + PARM_INPUTMODE } DriverParameter; -#define BRLPARMS "inputmode", "statuscells" +#define BRLPARMS "inputmode" #define BRLSTAT ST_VoyagerStyle -#define BRL_HAVE_STATUS_CELLS #define BRL_HAVE_FIRMNESS #include "brl_driver.h" -#include "tbl.h" typedef struct { int (*openPort) (char **parameters, const char *device); @@ -388,19 +386,11 @@ openUsbPort (char **parameters, const char *device) { { .vendor=0 } }; - if (!(usb = usbFindChannel(definitions, (void *)device))) return 0; - - /* start the input packet monitor */ - { - int retry = 0; - while (1) { - int ret = usbBeginInput(usb->device, usb->definition.inputEndpoint, 8); - if ((ret != 0) || (errno != EPIPE) || (retry == USB_RETRIES)) break; - LogPrint(LOG_WARNING, "begin input retry #%d.", ++retry); - } + if ((usb = usbFindChannel(definitions, (void *)device))) { + return 1; } - return 1; + return 0; } static int @@ -524,14 +514,9 @@ static unsigned char *currentCells = NULL; /* buffer to prepare new pattern */ static unsigned char *previousCells = NULL; /* previous pattern displayed */ #define MAXIMUM_CELLS 70 /* arbitrary max for allocations */ -static unsigned char totalCells; -static unsigned char textOffset; -static unsigned char textCells; -static unsigned char statusOffset; -static unsigned char statusCells; -#define IS_TEXT_RANGE(key1,key2) (((key1) >= textOffset) && ((key2) < (textOffset + textCells))) +static unsigned char cellCount; +#define IS_TEXT_RANGE(key1,key2) (((key1) <= (key2)) && ((key2) < cellCount)) #define IS_TEXT_KEY(key) IS_TEXT_RANGE((key), (key)) -#define IS_STATUS_KEY(key) (((key) >= statusOffset) && ((key) < (statusOffset + statusCells))) static int brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { @@ -552,18 +537,18 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { if (io->openPort(parameters, device)) { /* find out how big the display is */ - totalCells = 0; + cellCount = 0; { unsigned char count; if (io->getCellCount(&count)) { switch (count) { case 48: - totalCells = 44; + cellCount = 44; brl->helpPage = 0; break; case 72: - totalCells = 70; + cellCount = 70; brl->helpPage = 1; break; @@ -574,38 +559,8 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { } } - if (totalCells) { - LogPrint(LOG_INFO, "Voyager Cell Count: %u", totalCells); - - /* position the text and status cells */ - textCells = totalCells; - textOffset = statusOffset = 0; - { - int cells = 3; - const char *word = parameters[PARM_STATUSCELLS]; - - { - int maximum = textCells / 2; - int minimum = -maximum; - int value = cells; - if (validateInteger(&value, word, &minimum, &maximum)) { - cells = value; - } else { - LogPrint(LOG_WARNING, "%s: %s", "invalid status cells specification", word); - } - } - - if (cells) { - if (cells < 0) { - statusOffset = textCells + cells; - cells = -cells; - } else { - textOffset = cells + 1; - } - textCells -= cells + 1; - } - statusCells = cells; - } + if (cellCount) { + LogPrint(LOG_INFO, "Voyager Cell Count: %u", cellCount); /* log information about the display */ io->logSerialNumber(); @@ -615,14 +570,14 @@ brl_construct (BrailleDisplay *brl, char **parameters, const char *device) { /* currentCells holds the status cells and the text cells. * We export directly to BRLTTY only the text cells. */ - brl->x = textCells; /* initialize size of display */ - brl->y = 1; /* always 1 */ + brl->textColumns = cellCount; /* initialize size of display */ + brl->textRows = 1; /* always 1 */ - if ((currentCells = malloc(totalCells))) { - if ((previousCells = malloc(totalCells))) { + if ((currentCells = malloc(cellCount))) { + if ((previousCells = malloc(cellCount))) { /* Force rewrite of display */ - memset(currentCells, 0, totalCells); /* no dots */ - memset(previousCells, 0XFF, totalCells); /* all dots */ + memset(currentCells, 0, cellCount); /* no dots */ + memset(previousCells, 0XFF, cellCount); /* all dots */ if (io->setDisplayState(1)) { io->soundBeep(200); @@ -670,35 +625,29 @@ brl_destruct (BrailleDisplay *brl) { } } -static int -brl_writeStatus (BrailleDisplay *brl, const unsigned char *cells) { - memcpy(currentCells+statusOffset, cells, statusCells); - return 1; -} - static int brl_writeWindow (BrailleDisplay *brl, const wchar_t *text) { - unsigned char buffer[totalCells]; + unsigned char buffer[cellCount]; - memcpy(currentCells+textOffset, brl->buffer, textCells); + memcpy(currentCells, brl->buffer, cellCount); /* If content hasn't changed, do nothing. */ - if (memcmp(previousCells, currentCells, totalCells) == 0) return 1; + if (memcmp(previousCells, currentCells, cellCount) == 0) return 1; /* remember current content */ - memcpy(previousCells, currentCells, totalCells); + memcpy(previousCells, currentCells, cellCount); /* translate to voyager dot pattern coding */ { int i; - for (i=0; i totalCells)) { + if ((key < 1) || (key > cellCount)) { LogPrint(LOG_NOTICE, "Invalid routing key number: %u", key); continue; } @@ -898,7 +847,7 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { { int key; - for (key=0; key/CRa", "Switch to previous/next virtual console") - if (routingKeys[0] == totalCells-1) { + if (routingKeys[0] == cellCount-1) { cmd = BRL_CMD_SWITCHVT_NEXT; - } else if (routingKeys[0] == totalCells-2) { + } else if (routingKeys[0] == cellCount-2) { cmd = BRL_CMD_SWITCHVT_PREV; } else { HLP(691, "UP+CRa#", "Switch to virtual console #") @@ -1097,23 +1022,23 @@ brl_readCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { /* One text routing key with some other keys */ switch (activeKeys.control) { PHKEY(501, "CRt#", K_DOWN, - BRL_BLK_SETLEFT + routingKeys[0] - textOffset, + BRL_BLK_SETLEFT + routingKeys[0], "Go right # cells"); PHKEY(401, "CRt#", K_A, - BRL_BLK_CUTBEGIN + routingKeys[0] - textOffset, + BRL_BLK_CUTBEGIN + routingKeys[0], "Mark beginning of region to cut"); - PHKEY(401, "CRt#", K_A|K_B, - BRL_BLK_CUTAPPEND + routingKeys[0] - textOffset, + PHKEY(401, "CRt#", K_B, + BRL_BLK_CUTAPPEND + routingKeys[0], "Mark beginning of cut region for append"); PHKEY(401, "CRt#", K_D, - BRL_BLK_CUTRECT + routingKeys[0] - textOffset, + BRL_BLK_CUTRECT + routingKeys[0], "Mark bottom-right of rectangular region and cut"); - PHKEY(401, "CRt#", K_D|K_C, - BRL_BLK_CUTLINE + routingKeys[0] - textOffset, + PHKEY(401, "CRt#", K_C, + BRL_BLK_CUTLINE + routingKeys[0], "Mark end of linear region and cut"); - PHKEY2(501, "CRt#", K_B, K_C, - BRL_BLK_PRINDENT + routingKeys[0] - textOffset, - BRL_BLK_NXINDENT + routingKeys[0] - textOffset, + PHKEY2(501, "CRt#", K_A|K_B, K_D|K_C, + BRL_BLK_PRINDENT + routingKeys[0], + BRL_BLK_NXINDENT + routingKeys[0], "Go to previous/next line indented no more than #"); } } diff --git a/BrailleDrivers/Voyager/help.template b/Drivers/Braille/Voyager/help.template similarity index 88% rename from BrailleDrivers/Voyager/help.template rename to Drivers/Braille/Voyager/help.template index 864f4504f4614307afa8c4312439d2a59ed6eb53..6e63009b745c3dfce8c87323c41ae7b84d1bf191 100644 --- a/BrailleDrivers/Voyager/help.template +++ b/Drivers/Braille/Voyager/help.template @@ -1,4 +1,4 @@ -000:---BRLTTY Voyager Help Screen--- +000:Help for -cell Models 000: 010:Key Names: 011: Front Panel Keys: @@ -12,7 +12,6 @@ 012: On the right (from left to right): 4 5 6 8 013: Cursor Routing Keys: 013: CRa1 to CRa: all routing keys (numbered from left to right). -013: CRs1 to CRs4: routing keys over status cells (numbered from the end inward). 013: CRt1 to CRt: routing keys over text cells (numbered from left to right). 020:Chords: 021: The prefix "Chord-" means that the space bar (B+C) must be pressed @@ -34,8 +33,6 @@ 689: 690:Virtual Console Selection 699: -880:Status Key Shortcuts -889: 890:When in Preferences Menu 899: 999:-----End of help screen----- diff --git a/BrailleDrivers/Voyager/help0.txt b/Drivers/Braille/Voyager/help0.txt similarity index 88% rename from BrailleDrivers/Voyager/help0.txt rename to Drivers/Braille/Voyager/help0.txt index 80b319bdd6a6161d836e872f6b9988513e65f39f..21316aca9238826ef3009df4a313cf721516c8c3 100644 --- a/BrailleDrivers/Voyager/help0.txt +++ b/Drivers/Braille/Voyager/help0.txt @@ -1,4 +1,4 @@ ----BRLTTY Voyager 44 Help Screen--- +Help for 44-cell Models Key Names: Front Panel Keys: @@ -12,7 +12,6 @@ Key Names: On the right (from left to right): 4 5 6 8 Cursor Routing Keys: CRa1 to CRa44: all routing keys (numbered from left to right). - CRs1 to CRs4: routing keys over status cells (numbered from the end inward). CRt1 to CRt40: routing keys over text cells (numbered from left to right). Chords: The prefix "Chord-" means that the space bar (B+C) must be pressed @@ -51,9 +50,9 @@ A+D: Route cursor to current line Cut and Paste CRt#+A: Mark beginning of region to cut -CRt#+A+B: Mark beginning of cut region for append +CRt#+B: Mark beginning of cut region for append CRt#+D: Mark bottom-right of rectangular region and cut -CRt#+D+C: Mark end of linear region and cut +CRt#+C: Mark end of linear region and cut CRtx+CRty: Cut text from x through y Chord-1234: Paste cut text @@ -69,7 +68,7 @@ DOWN+ B/C: Go to previous/next prompt (same prompt as current line) CRa#+RL: Remember current position as mark # CRa#+RR: Go to mark # CRt#+DOWN: Go right # cells -CRt#+ B/C: Go to previous/next line indented no more than # +CRt#+ A+B/D+C: Go to previous/next line indented no more than # Typing in Braille Chord-1478: Input mode (toggle) @@ -91,12 +90,6 @@ Virtual Console Selection UP+CRa#: Switch to virtual console # UP+ CRa43/CRa44: Switch to previous/next virtual console -Status Key Shortcuts -CRs1: Help screen (toggle) -CRs2: Preferences menu (toggle) -CRs3: Learn mode (toggle) -CRs4: Route cursor to current line - When in Preferences Menu DOWN/UP: Select previous/next setting RL+RR: Exit menu diff --git a/BrailleDrivers/Voyager/help1.txt b/Drivers/Braille/Voyager/help1.txt similarity index 88% rename from BrailleDrivers/Voyager/help1.txt rename to Drivers/Braille/Voyager/help1.txt index 91d6ad4ead9c0ce37bdfb0b7363688110bd9d908..717a84737a86192f000dbbf94f3e04e59dc5c6e8 100644 --- a/BrailleDrivers/Voyager/help1.txt +++ b/Drivers/Braille/Voyager/help1.txt @@ -1,4 +1,4 @@ ----BRLTTY Voyager 70 Help Screen--- +Help for 70-cell Models Key Names: Front Panel Keys: @@ -12,7 +12,6 @@ Key Names: On the right (from left to right): 4 5 6 8 Cursor Routing Keys: CRa1 to CRa70: all routing keys (numbered from left to right). - CRs1 to CRs4: routing keys over status cells (numbered from the end inward). CRt1 to CRt66: routing keys over text cells (numbered from left to right). Chords: The prefix "Chord-" means that the space bar (B+C) must be pressed @@ -51,9 +50,9 @@ A+D: Route cursor to current line Cut and Paste CRt#+A: Mark beginning of region to cut -CRt#+A+B: Mark beginning of cut region for append +CRt#+B: Mark beginning of cut region for append CRt#+D: Mark bottom-right of rectangular region and cut -CRt#+D+C: Mark end of linear region and cut +CRt#+C: Mark end of linear region and cut CRtx+CRty: Cut text from x through y Chord-1234: Paste cut text @@ -69,7 +68,7 @@ DOWN+ B/C: Go to previous/next prompt (same prompt as current line) CRa#+RL: Remember current position as mark # CRa#+RR: Go to mark # CRt#+DOWN: Go right # cells -CRt#+ B/C: Go to previous/next line indented no more than # +CRt#+ A+B/D+C: Go to previous/next line indented no more than # Typing in Braille Chord-1478: Input mode (toggle) @@ -91,12 +90,6 @@ Virtual Console Selection UP+CRa#: Switch to virtual console # UP+ CRa69/CRa70: Switch to previous/next virtual console -Status Key Shortcuts -CRs1: Help screen (toggle) -CRs2: Preferences menu (toggle) -CRs3: Learn mode (toggle) -CRs4: Route cursor to current line - When in Preferences Menu DOWN/UP: Select previous/next setting RL+RR: Exit menu diff --git a/Drivers/Braille/Voyager/mkhlp b/Drivers/Braille/Voyager/mkhlp new file mode 100644 index 0000000000000000000000000000000000000000..96f2d61d482a440bbef790bab66b2f94eab8b449 --- /dev/null +++ b/Drivers/Braille/Voyager/mkhlp @@ -0,0 +1,45 @@ +#!/bin/sh +############################################################################### +# 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-2009 by The BRLTTY Developers. +# +# BRLTTY comes with ABSOLUTELY NO WARRANTY. +# +# This is free software, placed under the terms of the +# GNU General Public License, as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. +# +# Web Page: http://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +SRC_DIR='.' +SRC_TOP='../../../' +BLD_DIR='.' +BLD_TOP='../../../' + +mkhlpfile() +{ + fno=$1 + cols=$2 + cells=$3 + cells_m_1=`expr $cells - 1` + + gcc -DHAVE_CONFIG_H -DGENHLP -I${BLD_DIR} -I${SRC_DIR} -I${BLD_TOP}/Programs -I${SRC_TOP}/Programs -I${BLD_TOP} -I${SRC_TOP} -E ${SRC_DIR}/braille.c | + ${SRC_DIR}/trhlp | + cat "${SRC_DIR}/help.template" - | + sort -t: -s -k 1,1 | + cut -d: -f 2- | + sed \ + -e "s//${cols}/g" \ + -e "s//${cells_m_1}/g" \ + -e "s//${cells}/g" \ + >${SRC_DIR}/help${fno}.txt +} + +mkhlpfile 0 40 44 +mkhlpfile 1 66 70 diff --git a/BrailleDrivers/Voyager/mkhlp.in b/Drivers/Braille/Voyager/mkhlp.in similarity index 76% rename from BrailleDrivers/Voyager/mkhlp.in rename to Drivers/Braille/Voyager/mkhlp.in index cfbd1ac1ff0e8e6d816ac1c38ea44dfab16852f8..b5fb4e4b61179bc00df385594402530391683381 100755 --- a/BrailleDrivers/Voyager/mkhlp.in +++ b/Drivers/Braille/Voyager/mkhlp.in @@ -3,13 +3,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # @@ -28,7 +29,7 @@ mkhlpfile() cells=$3 cells_m_1=`expr $cells - 1` - gcc -DHAVE_CONFIG_H -DGENHLP -I${SRC_DIR} -I${BLD_DIR} -I${SRC_TOP} -I${BLD_TOP} -E ${SRC_DIR}/braille.c | + gcc -DHAVE_CONFIG_H -DGENHLP -I${BLD_DIR} -I${SRC_DIR} -I${BLD_TOP}/Programs -I${SRC_TOP}/Programs -I${BLD_TOP} -I${SRC_TOP} -E ${SRC_DIR}/braille.c | ${SRC_DIR}/trhlp | cat "${SRC_DIR}/help.template" - | sort -t: -s -k 1,1 | diff --git a/Drivers/Braille/Voyager/reldeps.mk b/Drivers/Braille/Voyager/reldeps.mk new file mode 100644 index 0000000000000000000000000000000000000000..ff75ccec62c9dba3bec9db773a5aed239ece3804 --- /dev/null +++ b/Drivers/Braille/Voyager/reldeps.mk @@ -0,0 +1,13 @@ +# Dependencies for braille.$O: +braille.$O: $(SRC_DIR)/braille.c +braille.$O: $(BLD_TOP)config.h +braille.$O: $(SRC_TOP)prologue.h +braille.$O: $(SRC_TOP)Programs/misc.h +braille.$O: $(SRC_TOP)Programs/brl.h +braille.$O: $(SRC_TOP)Programs/brl_driver.h +braille.$O: $(SRC_TOP)Programs/brldefs.h +braille.$O: $(SRC_TOP)Programs/driver.h +braille.$O: $(SRC_TOP)Programs/io_defs.h +braille.$O: $(SRC_TOP)Programs/io_serial.h +braille.$O: $(SRC_TOP)Programs/io_usb.h + diff --git a/BrailleDrivers/Voyager/trhlp b/Drivers/Braille/Voyager/trhlp similarity index 92% rename from BrailleDrivers/Voyager/trhlp rename to Drivers/Braille/Voyager/trhlp index 54b2c9889af6787fc434889b1a7c79092fb86066..fbe983e2298364dccaab66ac8a09eba6115ff687 100755 --- a/BrailleDrivers/Voyager/trhlp +++ b/Drivers/Braille/Voyager/trhlp @@ -3,13 +3,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/XWindow/Makefile.in b/Drivers/Braille/XWindow/Makefile.in similarity index 83% rename from BrailleDrivers/XWindow/Makefile.in rename to Drivers/Braille/XWindow/Makefile.in index 353dbe560672f128a96896de130a99cdceafb4ca..d9ef3edbd11a05b08feb82a786c6dedefa077c94 100644 --- a/BrailleDrivers/XWindow/Makefile.in +++ b/Drivers/Braille/XWindow/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/BrailleDrivers/XWindow/README b/Drivers/Braille/XWindow/README similarity index 100% rename from BrailleDrivers/XWindow/README rename to Drivers/Braille/XWindow/README diff --git a/BrailleDrivers/XWindow/braille.c b/Drivers/Braille/XWindow/braille.c similarity index 94% rename from BrailleDrivers/XWindow/braille.c rename to Drivers/Braille/XWindow/braille.c index fd1efc6833f24944ca765a77dcadf63fa7e062f1..910889de1fb4c1e2f2da10e65e10d004f4ce36a0 100644 --- a/BrailleDrivers/XWindow/braille.c +++ b/Drivers/Braille/XWindow/braille.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -20,9 +21,11 @@ #include #include #include +#include #include "misc.h" #include "charset.h" +#include "unicode.h" #if defined(WINDOWS) #define USE_WINDOWS @@ -192,9 +195,10 @@ typedef enum { PARM_LINES, PARM_COLUMNS, PARM_MODEL, - PARM_INPUT + PARM_INPUT, + PARM_FONT } DriverParameter; -#define BRLPARMS "tkparms", "lines", "columns", "model", "input" +#define BRLPARMS "tkparms", "lines", "columns", "model", "input", "font" #include "brl_driver.h" #include "braille.h" @@ -205,6 +209,7 @@ typedef enum { static int cols,lines; static int input; static char *model = "simple"; +static const char *fontname = "-*-clearlyu-*-r-*-*-17-*-*-*-*-*-iso10646-1,-*-fixed-*-r-*-*-17-*-*-*-*-*-iso10646-1,-*-unifont-*-r-*-*-17-*-*-*-*-*-iso10646-1"; static int xtArgc = 1; static char *xtDefArgv[]= { "brltty", NULL }; static char **xtArgv = xtDefArgv; @@ -229,6 +234,7 @@ static Pixmap check; #endif /* USE_XAW */ static int lastcursor = -1; #ifdef USE_XT +static Atom wm_delete_window; static Widget vbox,keybox; static Pixel displayForeground,displayBackground; static XtAppContext app_con; @@ -237,7 +243,7 @@ static XmString display_cs; #endif /* USE_XAW */ #endif /* USE_XT */ #ifdef USE_XAW -static XFontSet fontset, fontsetb; +static XFontSet fontset; #elif defined(USE_WINDOWS) static HFONT font; static int totlines; @@ -273,7 +279,7 @@ static void keypress(Widget w, XEvent *event, String *params, Cardinal *num_para if ((keysym & 0x1f000000) == 0x1000000) { /* unicode */ - if ((keysym & 0xffff00) == BRL_UC_ROW) + if ((keysym & ~UNICODE_CELL_MASK) == UNICODE_BRAILLE_ROW) keypressed = BRL_BLK_PASSDOTS | (keysym & 0xff); else { int c = convertWcharToChar(keysym & 0xffffff); @@ -407,6 +413,11 @@ static void route(Widget w, XEvent *event, String *params, Cardinal *num_params) LogPrint(LOG_DEBUG,"route(%u)", index); keypressed = BRL_BLK_ROUTE | (index&BRL_MSK_ARG); } + +static void quit(Widget w, XEvent *event, String *params, Cardinal *num_params) +{ + XtAppSetExitFlag(app_con); +} #endif /* USE_XT */ static inline Widget crKeyBut(char *name, long keycode, int repeat, @@ -637,7 +648,7 @@ int CALLBACK fontEnumProc(ENUMLOGFONTEX *lpelfe, NEWTEXTMETRICEX *lpntme, DWORD LogPrint(LOG_ERR,"font %s", lpelfe->elfFullName); return 1; } - LogPrint(LOG_INFO, "Using braille font `%s\'\n",lpelfe->elfFullName); + LogPrint(LOG_INFO, "Using braille font `%s\'",lpelfe->elfFullName); return 0; } #endif /* USE_WINDOWS */ @@ -648,12 +659,16 @@ static int brl_readCommand(BrailleDisplay *brl, BRL_DriverCommandContext context #if defined(USE_XT) while (XtAppPending(app_con)) { XtAppProcessEvent(app_con,XtIMAll); + if (XtAppGetExitFlag(app_con)) + raise(SIGTERM); #elif defined(USE_WINDOWS) MSG msg; while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { - if (msg.message == WM_QUIT) - return BRL_CMD_SHUTDOWN; + if (msg.message == WM_QUIT + || msg.message == WM_DESTROY + || msg.message == WM_CLOSE) + raise(SIGTERM); else { TranslateMessage(&msg); DispatchMessage(&msg); @@ -665,8 +680,8 @@ static int brl_readCommand(BrailleDisplay *brl, BRL_DriverCommandContext context regenerate = 0; destroyToplevel(); generateToplevel(); - brl->x = cols; - brl->y = lines; + brl->textColumns = cols; + brl->textRows = lines; brl->resizeRequired = 1; } if (keypressed!=EOF) { @@ -718,11 +733,20 @@ static void generateToplevel(void) #ifdef USE_XM { "popup", popup }, #endif /* USE_XM */ + { "Quit", quit }, }; - char topActions[] = "\ + char translations[] = "WM_PROTOCOLS: Quit()"; + char inputActions[] = "\ :: keypress()\n\ :: keypress()\n"; - XtTranslations topTransl; + char popupAction[] = + "None: " +#if defined(USE_XAW) + "XawPositionSimpleMenu(menu) MenuPopup(menu)" +#elif defined(USE_XM) + "popup()" +#endif /* USE_ */ + "\n"; Widget tmp_vbox; char *disp; #ifdef USE_XAW @@ -754,6 +778,7 @@ static void generateToplevel(void) free(argv); XtAppAddActions(app_con,actions,XtNumber(actions)); + XtOverrideTranslations(toplevel,XtParseTranslationTable(translations)); #elif defined(USE_WINDOWS) { @@ -809,7 +834,6 @@ static void generateToplevel(void) /* vertical separation */ #ifdef USE_XT - topTransl = XtParseTranslationTable(input?topActions:""); vbox = XtVaCreateManagedWidget("vbox",panedWidgetClass,toplevel, #ifdef USE_XM XmNmarginHeight, 0, @@ -817,25 +841,19 @@ static void generateToplevel(void) XmNspacing, 1, #endif /* USE_XM */ XtNresize, True, - XtNtranslations, topTransl, + XtNtranslations, XtParseTranslationTable(popupAction), NULL); + if (input) + XtAugmentTranslations(vbox, XtParseTranslationTable(inputActions)); #endif /* USE_XT */ #ifdef USE_XAW - if (!(fontsetb = XCreateFontSet(XtDisplay(toplevel),"-*-clearlyu-*-r-*-*-17-*-*-*-*-*-iso10646-1", &missing_charset_list_return, &missing_charset_count_return, &def_string_return))) - LogPrint(LOG_ERR,"Error while loading braille font"); - if (missing_charset_count_return) { - int i; - for (i=0; i: " -#if defined(USE_XAW) - "XawPositionSimpleMenu(menu) MenuPopup(menu)" -#elif defined(USE_XM) - "popup()" -#else /* USE_ */ -#error Toolkit menu popup unspecified -#endif /* USE_ */ - ), NULL); -#endif /* USE_XT */ - /* go go go */ #if defined(USE_XT) XtRealizeWidget(toplevel); + if (!wm_delete_window) + wm_delete_window = XInternAtom(XtDisplay(toplevel), "WM_DELETE_WINDOW", False); + XSetWMProtocols(XtDisplay(toplevel),XtWindow(toplevel),&wm_delete_window,1); #elif defined(USE_WINDOWS) ShowWindow(toplevel, SW_SHOWDEFAULT); UpdateWindow(toplevel); @@ -1097,14 +1108,18 @@ static int brl_construct(BrailleDisplay *brl, char **parameters, const char *dev for (keyModel = models; keyModel < &models[XtNumber(models)] && strcmp(keyModel->name,model); keyModel++); if (keyModel == &models[XtNumber(models)]) keyModel = NULL; } - + + if (*parameters[PARM_FONT]) { + fontname = parameters[PARM_FONT]; + } + #if defined(USE_XT) XtToolkitThreadInitialize(); XtSetLanguageProc(NULL, NULL, NULL); #endif /* USE_XT */ - brl->x=cols; - brl->y=lines; + brl->textColumns=cols; + brl->textRows=lines; generateToplevel(); @@ -1114,10 +1129,6 @@ static void destroyToplevel(void) { #if defined(USE_XT) #ifdef USE_XAW - if (fontsetb) { - XFreeFontSet(XtDisplay(toplevel),fontsetb); - fontsetb = NULL; - } if (fontset) { XFreeFontSet(XtDisplay(toplevel),fontset); fontset = NULL; @@ -1184,8 +1195,8 @@ static int brl_writeWindow(BrailleDisplay *brl, const wchar_t *text) } } - if (text && wmemcmp(text,displayedVisual,brl->y*brl->x)) { - for (i=0;iy*brl->x;i++) { + if (text && wmemcmp(text,displayedVisual,brl->textRows*brl->textColumns)) { + for (i=0;itextRows*brl->textColumns;i++) { if (displayedVisual[i] != text[i]) { wc = text[i]; if (wc == 0) wc = WC_C(' '); @@ -1233,9 +1244,9 @@ static int brl_writeWindow(BrailleDisplay *brl, const wchar_t *text) } #if defined(USE_XAW) || defined(USE_WINDOWS) - if (!displayb[0] || (memcmp(brl->buffer,displayedWindow,brl->y*brl->x) == 0)) return 1; + if (!displayb[0] || (memcmp(brl->buffer,displayedWindow,brl->textRows*brl->textColumns) == 0)) return 1; - for (i=0;iy*brl->x;i++) + for (i=0;itextRows*brl->textColumns;i++) if (displayedWindow[i] != brl->buffer[i]) { unsigned char c = brl->buffer[i]; c = @@ -1248,11 +1259,11 @@ static int brl_writeWindow(BrailleDisplay *brl, const wchar_t *text) |(!!(c&BRL_DOT7))<<6 |(!!(c&BRL_DOT8))<<7; #ifdef USE_XAW - convertWcharToUtf8(BRL_UC_ROW | c, utf8); + convertWcharToUtf8(UNICODE_BRAILLE_ROW | c, utf8); XtVaSetValues(displayb[i], XtNlabel, utf8, NULL); #elif defined(USE_WINDOWS) - data[0] = BRL_UC_ROW | c; + data[0] = UNICODE_BRAILLE_ROW | c; data[1] = 0; SetWindowTextW(displayb[i],data); #endif /* USE_WINDOWS */ diff --git a/BrailleDrivers/XWindow/braille.h b/Drivers/Braille/XWindow/braille.h similarity index 70% rename from BrailleDrivers/XWindow/braille.h rename to Drivers/Braille/XWindow/braille.h index 9e976c623568da4400de31b512dcfc1034141d21..e0bc631f9d91f03eacc605dfcf6ca767bcd19191 100644 --- a/BrailleDrivers/XWindow/braille.h +++ b/Drivers/Braille/XWindow/braille.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Drivers/Braille/XWindow/help.txt b/Drivers/Braille/XWindow/help.txt new file mode 100644 index 0000000000000000000000000000000000000000..1b7f2bd438cac5a114af1a9c390b776fbb6485fc --- /dev/null +++ b/Drivers/Braille/XWindow/help.txt @@ -0,0 +1,3 @@ +Help for GUI Client + +No help available for this driver. diff --git a/BrailleDrivers/XWindow/reldeps.mk b/Drivers/Braille/XWindow/reldeps.mk similarity index 91% rename from BrailleDrivers/XWindow/reldeps.mk rename to Drivers/Braille/XWindow/reldeps.mk index ab5e3a609062d41ea7f806c0b6a09dbbbfa87d88..9159a3bae5d4967eedba180795f53000b5b8daaf 100644 --- a/BrailleDrivers/XWindow/reldeps.mk +++ b/Drivers/Braille/XWindow/reldeps.mk @@ -5,6 +5,7 @@ braille.$O: $(SRC_TOP)prologue.h braille.$O: $(SRC_TOP)Programs/misc.h braille.$O: $(SRC_TOP)Programs/charset.h braille.$O: $(SRC_TOP)Programs/lock.h +braille.$O: $(SRC_TOP)Programs/unicode.h braille.$O: $(SRC_TOP)Programs/brl.h braille.$O: $(SRC_TOP)Programs/brl_driver.h braille.$O: $(SRC_TOP)Programs/brldefs.h diff --git a/ScreenDrivers/AtSpi/Makefile.in b/Drivers/Screen/AtSpi/Makefile.in similarity index 81% rename from ScreenDrivers/AtSpi/Makefile.in rename to Drivers/Screen/AtSpi/Makefile.in index 61fef139fcffe9a4b7083939e92bc6d51f98119a..d3ccc849089bfce74fb804eb4947ef0c5b71a51b 100644 --- a/ScreenDrivers/AtSpi/Makefile.in +++ b/Drivers/Screen/AtSpi/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/ScreenDrivers/AtSpi/reldeps.mk b/Drivers/Screen/AtSpi/reldeps.mk similarity index 100% rename from ScreenDrivers/AtSpi/reldeps.mk rename to Drivers/Screen/AtSpi/reldeps.mk diff --git a/ScreenDrivers/AtSpi/screen.c b/Drivers/Screen/AtSpi/screen.c similarity index 99% rename from ScreenDrivers/AtSpi/screen.c rename to Drivers/Screen/AtSpi/screen.c index b24d066c12da260895ed4f36c23cf7cd2ab28cf9..cf307e8590c70d3dc2c321639565911552a82ea1 100644 --- a/ScreenDrivers/AtSpi/screen.c +++ b/Drivers/Screen/AtSpi/screen.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/ScreenDrivers/Hurd/Makefile.in b/Drivers/Screen/Hurd/Makefile.in similarity index 80% rename from ScreenDrivers/Hurd/Makefile.in rename to Drivers/Screen/Hurd/Makefile.in index c7d6c118065a6cd069ec3bfe4dcb54597c165e93..20918f032392ccbec1b8c8d41c11547fb7c3c405 100644 --- a/ScreenDrivers/Hurd/Makefile.in +++ b/Drivers/Screen/Hurd/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/ScreenDrivers/Hurd/reldeps.mk b/Drivers/Screen/Hurd/reldeps.mk similarity index 100% rename from ScreenDrivers/Hurd/reldeps.mk rename to Drivers/Screen/Hurd/reldeps.mk diff --git a/ScreenDrivers/Hurd/screen.c b/Drivers/Screen/Hurd/screen.c similarity index 98% rename from ScreenDrivers/Hurd/screen.c rename to Drivers/Screen/Hurd/screen.c index 2cb6663943eacd91fa6389f8f672145d79fd0ed1..e61623f39b2994ff65429c7f38c44cefe63147d9 100644 --- a/ScreenDrivers/Hurd/screen.c +++ b/Drivers/Screen/Hurd/screen.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/ScreenDrivers/Hurd/screen.h b/Drivers/Screen/Hurd/screen.h similarity index 82% rename from ScreenDrivers/Hurd/screen.h rename to Drivers/Screen/Hurd/screen.h index 3ede1e5c1171cf4d86342da1479b9578d415d4c3..1f9d2d61b833a7820aabee9de2c87e9742685f31 100644 --- a/ScreenDrivers/Hurd/screen.h +++ b/Drivers/Screen/Hurd/screen.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/ScreenDrivers/Linux/Makefile.in b/Drivers/Screen/Linux/Makefile.in similarity index 80% rename from ScreenDrivers/Linux/Makefile.in rename to Drivers/Screen/Linux/Makefile.in index 79787637b7f3f37ec2378c3b271dd4296b6f5be2..7c4e1d086d6a312a1e7635475e812470ad583bf9 100644 --- a/ScreenDrivers/Linux/Makefile.in +++ b/Drivers/Screen/Linux/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/ScreenDrivers/Linux/reldeps.mk b/Drivers/Screen/Linux/reldeps.mk similarity index 89% rename from ScreenDrivers/Linux/reldeps.mk rename to Drivers/Screen/Linux/reldeps.mk index cc54c405e17e019823338bff2e0518c1e0864f4d..99c46a0aa3b37a566dd906b8eaacff2309862388 100644 --- a/ScreenDrivers/Linux/reldeps.mk +++ b/Drivers/Screen/Linux/reldeps.mk @@ -3,7 +3,9 @@ screen.$O: $(SRC_DIR)/screen.c screen.$O: $(BLD_TOP)config.h screen.$O: $(SRC_TOP)prologue.h screen.$O: $(SRC_TOP)Programs/misc.h +screen.$O: $(SRC_TOP)Programs/bitmask.h screen.$O: $(SRC_TOP)Programs/keyboard.h +screen.$O: $(SRC_TOP)Programs/keycodes.h screen.$O: $(SRC_TOP)Programs/system.h screen.$O: $(SRC_TOP)Programs/sys_linux.h screen.$O: $(SRC_TOP)Programs/charset.h diff --git a/ScreenDrivers/Linux/screen.c b/Drivers/Screen/Linux/screen.c similarity index 97% rename from ScreenDrivers/Linux/screen.c rename to Drivers/Screen/Linux/screen.c index 966a6c4137125cc8a8de4ca4f8a6ccc89a65831b..8defa40fb64a2c3660fe5255ebffa47a41adb463 100644 --- a/ScreenDrivers/Linux/screen.c +++ b/Drivers/Screen/Linux/screen.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -20,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -660,6 +662,7 @@ static const At2KeyTable at2KeysOriginal = { [0X0C] = KEY_F4, [0X03] = KEY_F5, [0X0B] = KEY_F6, + [0X02] = KEY_F7, [0X83] = KEY_F7, [0X0A] = KEY_F8, [0X01] = KEY_F9, @@ -744,27 +747,80 @@ static const At2KeyTable at2KeysOriginal = { [0X74] = KEY_KP6, [0X6C] = KEY_KP7, [0X75] = KEY_KP8, - [0X7D] = KEY_KP9 + [0X7D] = KEY_KP9, + + [0X5F] = KEY_ZENKAKUHANKAKU, + [0X51] = KEY_RO, + [0X62] = KEY_HIRAGANA, + [0X63] = KEY_KATAKANA, + [0X64] = KEY_HENKAN, + [0X67] = KEY_MUHENKAN, + + [0X0F] = KEY_KPEQUAL, + [0X13] = KEY_KATAKANAHIRAGANA, + [0X27] = KEY_KPJPCOMMA, + [0X7F] = KEY_SYSRQ, + [0X84] = KEY_SYSRQ, + + [0X6D] = KEY_KPCOMMA, + [0X6A] = KEY_YEN, + + [0X2F] = KEY_F13, + [0X37] = KEY_F14, + [0X3F] = KEY_F15 }; static const At2KeyTable at2KeysE0 = { - [0X1F] = KEY_LEFTMETA, + [0X10] = KEY_SEARCH, [0X11] = KEY_RIGHTALT, + [0X14] = KEY_RIGHTCTRL, + [0X15] = KEY_PREVIOUSSONG, + [0X18] = KEY_BOOKMARKS, + [0X1F] = KEY_LEFTMETA, + + [0X20] = KEY_REFRESH, + [0X21] = KEY_VOLUMEDOWN, + [0X23] = KEY_MUTE, [0X27] = KEY_RIGHTMETA, + [0X28] = KEY_STOP, + [0X2B] = KEY_CALC, [0X2F] = KEY_COMPOSE, - [0X14] = KEY_RIGHTCTRL, - [0X70] = KEY_INSERT, - [0X71] = KEY_DELETE, - [0X6C] = KEY_HOME, + + [0X30] = KEY_FORWARD, + [0X32] = KEY_VOLUMEUP, + [0X34] = KEY_PLAYPAUSE, + [0X37] = KEY_POWER, + [0X38] = KEY_BACK, + [0X3A] = KEY_HOMEPAGE, + [0X3B] = KEY_STOPCD, + [0X3F] = KEY_SLEEP, + + [0X40] = KEY_COMPUTER, + [0X48] = KEY_MAIL, + [0X4A] = KEY_KPSLASH, + [0X4D] = KEY_NEXTSONG, + + [0X50] = KEY_MEDIA, + [0X5A] = KEY_KPENTER, + [0X5E] = KEY_WAKEUP, + [0X69] = KEY_END, - [0X7D] = KEY_PAGEUP, - [0X7A] = KEY_PAGEDOWN, - [0X75] = KEY_UP, [0X6B] = KEY_LEFT, + [0X6C] = KEY_HOME, + [0X6F] = KEY_MACRO, + + [0X70] = KEY_INSERT, + [0X71] = KEY_DELETE, [0X72] = KEY_DOWN, + [0X73] = KEY_MACRO, [0X74] = KEY_RIGHT, - [0X4A] = KEY_KPSLASH, - [0X5A] = KEY_KPENTER + [0X75] = KEY_UP, + [0X77] = KEY_PAUSE, + [0X79] = KEY_KPPLUSMINUS, + [0X7A] = KEY_PAGEDOWN, + [0X7C] = KEY_SYSRQ, + [0X7D] = KEY_PAGEUP, + [0X7E] = KEY_PAUSE }; static const At2KeyTable at2KeysE1 = { @@ -819,14 +875,14 @@ readScreenDevice (off_t offset, void *buffer, size_t size) { if (lseek(screenDescriptor, offset, SEEK_SET) == -1) { LogError("screen seek"); } else { - int count = read(screenDescriptor, buffer, size); + ssize_t count = read(screenDescriptor, buffer, size); if (count == size) return 1; if (count == -1) { LogError("screen read"); } else { - LogPrint(LOG_ERR, "truncated screen data: expected %d bytes, read %d", - size, count); + LogPrint(LOG_ERR, "truncated screen data: expected %u bytes, read %d", + (unsigned int)size, (int)count); } } return 0; diff --git a/ScreenDrivers/Linux/screen.h b/Drivers/Screen/Linux/screen.h similarity index 80% rename from ScreenDrivers/Linux/screen.h rename to Drivers/Screen/Linux/screen.h index 1fdadb3db8cf9ee4712501dd485f757815a89aa9..1d2e349b12a566d4d6982d9459eac049bfce112e 100644 --- a/ScreenDrivers/Linux/screen.h +++ b/Drivers/Screen/Linux/screen.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/ScreenDrivers/PcBios/Makefile.in b/Drivers/Screen/PcBios/Makefile.in similarity index 80% rename from ScreenDrivers/PcBios/Makefile.in rename to Drivers/Screen/PcBios/Makefile.in index f8edada2e1ab33ab380548475cb14ffad4e598aa..4feb750e77dd4c3a843a4ce63a6db0ceffc793a4 100644 --- a/ScreenDrivers/PcBios/Makefile.in +++ b/Drivers/Screen/PcBios/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/ScreenDrivers/PcBios/reldeps.mk b/Drivers/Screen/PcBios/reldeps.mk similarity index 92% rename from ScreenDrivers/PcBios/reldeps.mk rename to Drivers/Screen/PcBios/reldeps.mk index 2be0a67b749b6ee0cbee7aae6da0d54db7f9fe4f..d6c31b27f2cda599138aecf8986c25ff03d8ec36 100644 --- a/ScreenDrivers/PcBios/reldeps.mk +++ b/Drivers/Screen/PcBios/reldeps.mk @@ -6,6 +6,7 @@ screen.$O: $(SRC_TOP)Programs/misc.h screen.$O: $(SRC_TOP)Programs/brldefs.h screen.$O: $(SRC_TOP)Programs/charset.h screen.$O: $(SRC_TOP)Programs/lock.h +screen.$O: $(SRC_TOP)Programs/scancodes.h screen.$O: $(SRC_TOP)Programs/driver.h screen.$O: $(SRC_TOP)Programs/scr.h screen.$O: $(SRC_TOP)Programs/scr_base.h diff --git a/ScreenDrivers/PcBios/screen.c b/Drivers/Screen/PcBios/screen.c similarity index 86% rename from ScreenDrivers/PcBios/screen.c rename to Drivers/Screen/PcBios/screen.c index 785e25574243916cc2a5810dc59cefac56dee288..65640eec8e44684c6f173c5ce4ed29ba8ff4844b 100644 --- a/ScreenDrivers/PcBios/screen.c +++ b/Drivers/Screen/PcBios/screen.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -27,6 +28,7 @@ #include "misc.h" #include "brldefs.h" #include "charset.h" +#include "scancodes.h" #include "scr_driver.h" @@ -188,8 +190,39 @@ currentVirtualTerminal_PcBiosScreen (void) { static int executeCommand_PcBiosScreen (int command) { - if ((command & BRL_MSK_BLK) == BRL_BLK_PASSXT) - return simulateKey(command & BRL_MSK_ARG, 0); + int blk = command & BRL_MSK_BLK; + int arg = command & BRL_MSK_ARG; + int press = 0; + + switch (blk) { + case BRL_BLK_PASSXT: + press = !(arg & 0X80); + arg &= 0X7F; + /* fallthrough */ + case BRL_BLK_PASSAT: { + press |= !(command & BRL_FLG_KBD_RELEASE); + + if (arg >= 0X80) + return 0; + + if (command & BRL_FLG_KBD_EMUL0) { + if (!simulateKey(0XE0, 0)) + return 0; + } else if (command & BRL_FLG_KBD_EMUL1) { + if (!simulateKey(0XE1, 0)) + return 0; + } + + if (blk == BRL_BLK_PASSAT) + arg = at2Xt[arg]; + + if (!press) + arg |= 0x80; + + return simulateKey(arg, 0); + } + } + return 0; } diff --git a/ScreenDrivers/Screen/Makefile.in b/Drivers/Screen/Screen/Makefile.in similarity index 80% rename from ScreenDrivers/Screen/Makefile.in rename to Drivers/Screen/Screen/Makefile.in index 57713eec3368a571f5e89afa48fe49cbbbad1d40..9b064d2a2e0835539b4c3e05e8f67af01cdcc39d 100644 --- a/ScreenDrivers/Screen/Makefile.in +++ b/Drivers/Screen/Screen/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/ScreenDrivers/Screen/reldeps.mk b/Drivers/Screen/Screen/reldeps.mk similarity index 87% rename from ScreenDrivers/Screen/reldeps.mk rename to Drivers/Screen/Screen/reldeps.mk index 14335ba075eb8adaffc21aa3bd8b29e69c889a59..b65a9444fb7044cd89363001fa7dcfb50b14c744 100644 --- a/ScreenDrivers/Screen/reldeps.mk +++ b/Drivers/Screen/Screen/reldeps.mk @@ -3,7 +3,9 @@ screen.$O: $(SRC_DIR)/screen.c screen.$O: $(BLD_TOP)config.h screen.$O: $(SRC_TOP)prologue.h screen.$O: $(SRC_TOP)Programs/misc.h +screen.$O: $(SRC_TOP)Programs/bitmask.h screen.$O: $(SRC_TOP)Programs/keyboard.h +screen.$O: $(SRC_TOP)Programs/keycodes.h screen.$O: $(SRC_TOP)Programs/system.h screen.$O: $(SRC_TOP)Programs/charset.h screen.$O: $(SRC_TOP)Programs/lock.h diff --git a/ScreenDrivers/Screen/screen.c b/Drivers/Screen/Screen/screen.c similarity index 97% rename from ScreenDrivers/Screen/screen.c rename to Drivers/Screen/Screen/screen.c index 60d9bb8c431dfa61b0fd734548d656b23ccd1342..60749bbed3fb3cc5c1327919166dc392942540b9 100644 --- a/ScreenDrivers/Screen/screen.c +++ b/Drivers/Screen/Screen/screen.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/ScreenDrivers/Screen/screen.h b/Drivers/Screen/Screen/screen.h similarity index 77% rename from ScreenDrivers/Screen/screen.h rename to Drivers/Screen/Screen/screen.h index 69593bad9cdccfe1be295bd2531cacd22dedcc72..66aae3f7a2db7a499fdb07f48d6ca8f3a42feac1 100644 --- a/ScreenDrivers/Screen/screen.h +++ b/Drivers/Screen/Screen/screen.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/ScreenDrivers/Skeleton/Makefile.in b/Drivers/Screen/Skeleton/Makefile.in similarity index 80% rename from ScreenDrivers/Skeleton/Makefile.in rename to Drivers/Screen/Skeleton/Makefile.in index 91dc57576be2b5bbae3a1d6c49ff4cb742c36690..7cc1e3aa10f8cc44db2115239f4d920bef690cc2 100644 --- a/ScreenDrivers/Skeleton/Makefile.in +++ b/Drivers/Screen/Skeleton/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/ScreenDrivers/Skeleton/reldeps.mk b/Drivers/Screen/Skeleton/reldeps.mk similarity index 100% rename from ScreenDrivers/Skeleton/reldeps.mk rename to Drivers/Screen/Skeleton/reldeps.mk diff --git a/ScreenDrivers/Skeleton/screen.c b/Drivers/Screen/Skeleton/screen.c similarity index 76% rename from ScreenDrivers/Skeleton/screen.c rename to Drivers/Screen/Skeleton/screen.c index b69dfe885515627316b09cd1ce0bb4f0b2a012ae..5f9508e4d7bd446158165e94b2447b6b5bfa446a 100644 --- a/ScreenDrivers/Skeleton/screen.c +++ b/Drivers/Screen/Skeleton/screen.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/ScreenDrivers/Windows/Makefile.in b/Drivers/Screen/Windows/Makefile.in similarity index 80% rename from ScreenDrivers/Windows/Makefile.in rename to Drivers/Screen/Windows/Makefile.in index b6d22f5f5b1fbf57bb348cf466a8becc924293d7..80ab6678f60073bd774c749253aeb3d56add6cb5 100644 --- a/ScreenDrivers/Windows/Makefile.in +++ b/Drivers/Screen/Windows/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/ScreenDrivers/Windows/reldeps.mk b/Drivers/Screen/Windows/reldeps.mk similarity index 92% rename from ScreenDrivers/Windows/reldeps.mk rename to Drivers/Screen/Windows/reldeps.mk index 00f18cc2896e6c3bff93c957c7b050ae7b5ca736..b9fb8f069c347564acdd29d7fd5904ebf927b57f 100644 --- a/ScreenDrivers/Windows/reldeps.mk +++ b/Drivers/Screen/Windows/reldeps.mk @@ -5,6 +5,7 @@ screen.$O: $(SRC_TOP)prologue.h screen.$O: $(SRC_TOP)Programs/misc.h screen.$O: $(SRC_TOP)Programs/brldefs.h screen.$O: $(SRC_TOP)Programs/sys_windows.h +screen.$O: $(SRC_TOP)Programs/scancodes.h screen.$O: $(SRC_TOP)Programs/driver.h screen.$O: $(SRC_TOP)Programs/scr.h screen.$O: $(SRC_TOP)Programs/scr_base.h diff --git a/ScreenDrivers/Windows/screen.c b/Drivers/Screen/Windows/screen.c similarity index 86% rename from ScreenDrivers/Windows/screen.c rename to Drivers/Screen/Windows/screen.c index 9111a4a2ef2af473b202819bbc8e913d18362d1d..fd8181a1a84a77790eb09ef7dc25686eff3f3a5d 100644 --- a/ScreenDrivers/Windows/screen.c +++ b/Drivers/Screen/Windows/screen.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -20,13 +21,14 @@ #include "misc.h" #include "brldefs.h" #include "sys_windows.h" +#include "scancodes.h" typedef enum { PARM_ROOT, PARM_FOLLOWFOCUS } ScreenParameters; #define SCRPARMS "root", "followfocus" -static unsigned int root, followfocus; +static unsigned int root, followFocus; #include "scr_driver.h" @@ -35,18 +37,19 @@ static HANDLE consoleInput = INVALID_HANDLE_VALUE; static int processParameters_WindowsScreen (char **parameters) { - if (*parameters[PARM_ROOT]) { - if (AttachConsoleProc) - LogPrint(LOG_WARNING, "No need for root BRLTTY on systems that support AttachConsole()"); + root = 0; + if (*parameters[PARM_ROOT]) if (!validateYesNo(&root, parameters[PARM_ROOT])) LogPrint(LOG_WARNING, "%s: %s", "invalid root setting", parameters[PARM_ROOT]); - } - if (*parameters[PARM_FOLLOWFOCUS]) { - if (!AttachConsoleProc) - LogPrint(LOG_WARNING, "No need for followfocus BRLTTY on systems that do not support AttachConsole()"); - if (!validateYesNo(&followfocus, parameters[PARM_FOLLOWFOCUS])) - LogPrint(LOG_WARNING, "%s: %s", "invalid followfocus setting", parameters[PARM_ROOT]); - } + if (root && AttachConsoleProc) + LogPrint(LOG_WARNING, "No need for root BRLTTY on newer (XP or later) systems"); + + followFocus = 1; + if (*parameters[PARM_FOLLOWFOCUS]) + if (!validateYesNo(&followFocus, parameters[PARM_FOLLOWFOCUS])) + LogPrint(LOG_WARNING, "%s: %s", "invalid follow focus setting", parameters[PARM_FOLLOWFOCUS]); + if (followFocus && !AttachConsoleProc) + LogPrint(LOG_WARNING, "Cannot follow focus on older (pre-XP) systems"); return 1; } @@ -89,7 +92,7 @@ tryToAttach (HWND win) { static int construct_WindowsScreen (void) { - if (followfocus && (AttachConsoleProc || root)) { + if (followFocus && (AttachConsoleProc || root)) { /* disable ^C */ SetConsoleCtrlHandler(NULL,TRUE); if (!FreeConsole() && GetLastError() != ERROR_INVALID_PARAMETER) @@ -135,7 +138,7 @@ static int currentVirtualTerminal_WindowsScreen (void) { HWND win; altTab = NULL; - if (followfocus && (AttachConsoleProc || root) && GetAltTabInfoAProc) { + if (followFocus && (AttachConsoleProc || root) && GetAltTabInfoAProc) { altTabInfo.cbSize = sizeof(altTabInfo); EnumWindows(findAltTab, 0); if (altTab) { @@ -153,7 +156,7 @@ currentVirtualTerminal_WindowsScreen (void) { unreadable = "root BRLTTY"; goto error; } - if (followfocus && AttachConsoleProc && !tryToAttach(win)) { + if (followFocus && AttachConsoleProc && !tryToAttach(win)) { unreadable = "no terminal to read"; goto error; } @@ -341,7 +344,7 @@ doInsertWriteConsoleInput (BOOL down, WCHAR wchar, WORD vk, WORD scancode, DWORD } static int -doInsertSendInput (BOOL down, WCHAR wchar, WORD vk, WORD scancode) { +doInsertSendInput (BOOL down, WCHAR wchar, WORD vk, WORD scancode, DWORD flags) { if (SendInputProc) { UINT num; INPUT input; @@ -349,6 +352,7 @@ doInsertSendInput (BOOL down, WCHAR wchar, WORD vk, WORD scancode) { input.type = INPUT_KEYBOARD; memset(ki, 0, sizeof(*ki)); + ki->dwFlags = flags; if (wchar) { ki->wVk = 0; ki->wScan = wchar; @@ -364,12 +368,12 @@ doInsertSendInput (BOOL down, WCHAR wchar, WORD vk, WORD scancode) { num = SendInput(1, &input, sizeof(INPUT)); switch (num) { case 1: return 1; - case 0: LogWindowsError("WriteConsoleInput"); break; + case 0: LogWindowsError("SendInput"); break; default: LogPrint(LOG_ERR, "inserted %d keys, expected 1", num); break; } return 0; } else { - keybd_event(vk, scancode, down ? 0 : KEYEVENTF_KEYUP, 0); + keybd_event(vk, scancode, flags | (down ? 0 : KEYEVENTF_KEYUP), 0); return 1; } } @@ -472,32 +476,32 @@ insertKey_WindowsScreen (ScreenKey key) { } else { LogPrint(LOG_DEBUG, "using SendInput"); if (controlKeyState & LEFT_CTRL_PRESSED) - if (!doInsertSendInput(TRUE, 0, VK_CONTROL, 0)) + if (!doInsertSendInput(TRUE, 0, VK_CONTROL, 0, 0)) return 0; if (controlKeyState & SHIFT_PRESSED) - if (!doInsertSendInput(TRUE, 0, VK_SHIFT, 0)) + if (!doInsertSendInput(TRUE, 0, VK_SHIFT, 0, 0)) return 0; if (controlKeyState & LEFT_ALT_PRESSED) - if (!doInsertSendInput(TRUE, 0, VK_MENU, 0)) + if (!doInsertSendInput(TRUE, 0, VK_MENU, 0, 0)) return 0; if (controlKeyState & RIGHT_ALT_PRESSED) - if (!doInsertSendInput(TRUE, 0, VK_RMENU, 0)) + if (!doInsertSendInput(TRUE, 0, VK_RMENU, 0, 0)) return 0; - if (!doInsertSendInput(TRUE, wchar, vk, scancode)) + if (!doInsertSendInput(TRUE, wchar, vk, scancode, 0)) return 0; - if (!doInsertSendInput(FALSE, wchar, vk, scancode)) + if (!doInsertSendInput(FALSE, wchar, vk, scancode, 0)) return 0; if (controlKeyState & RIGHT_ALT_PRESSED) - if (!doInsertSendInput(FALSE, 0, VK_RMENU, 0)) + if (!doInsertSendInput(FALSE, 0, VK_RMENU, 0, 0)) return 0; if (controlKeyState & LEFT_ALT_PRESSED) - if (!doInsertSendInput(FALSE, 0, VK_MENU, 0)) + if (!doInsertSendInput(FALSE, 0, VK_MENU, 0, 0)) return 0; if (controlKeyState & SHIFT_PRESSED) - if (!doInsertSendInput(FALSE, 0, VK_SHIFT, 0)) + if (!doInsertSendInput(FALSE, 0, VK_SHIFT, 0, 0)) return 0; if (controlKeyState & LEFT_CTRL_PRESSED) - if (!doInsertSendInput(FALSE, 0, VK_CONTROL, 0)) + if (!doInsertSendInput(FALSE, 0, VK_CONTROL, 0, 0)) return 0; return 1; } @@ -506,8 +510,31 @@ insertKey_WindowsScreen (ScreenKey key) { static int executeCommand_WindowsScreen (int command) { - int blk UNUSED = command & BRL_MSK_BLK; - int arg UNUSED = command & BRL_MSK_ARG; + int blk = command & BRL_MSK_BLK; + int arg = command & BRL_MSK_ARG; + int press = 0; + + switch (blk) { + case BRL_BLK_PASSXT: + press = !(arg & 0X80); + arg &= 0X7F; + /* fallthrough */ + case BRL_BLK_PASSAT: { + press |= !(command & BRL_FLG_KBD_RELEASE); + + if (arg >= 0X80) + return 0; + + if (command & BRL_FLG_KBD_EMUL1) + return 0; + + if (blk == BRL_BLK_PASSAT) + arg = at2Xt[arg]; + + return doInsertSendInput (press, 0, 0, arg, + command & BRL_FLG_KBD_EMUL0 ? KEYEVENTF_EXTENDEDKEY : 0); + } + } return 0; } diff --git a/SpeechDrivers/Alva/Makefile.in b/Drivers/Speech/Alva/Makefile.in similarity index 80% rename from SpeechDrivers/Alva/Makefile.in rename to Drivers/Speech/Alva/Makefile.in index 09f752198dc6cc331a01325be7d0bdb49f90e9d8..245bf518259b0a57ce4942f86b5b0a4e44ecf4f9 100644 --- a/SpeechDrivers/Alva/Makefile.in +++ b/Drivers/Speech/Alva/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/SpeechDrivers/Alva/reldeps.mk b/Drivers/Speech/Alva/reldeps.mk similarity index 85% rename from SpeechDrivers/Alva/reldeps.mk rename to Drivers/Speech/Alva/reldeps.mk index 236ee73c68f323a6d837813f1df717c77b912100..a32ba4fdd41785e31595d12400cfea37c816293c 100644 --- a/SpeechDrivers/Alva/reldeps.mk +++ b/Drivers/Speech/Alva/reldeps.mk @@ -7,5 +7,5 @@ speech.$O: $(SRC_TOP)Programs/driver.h speech.$O: $(SRC_TOP)Programs/spk.h speech.$O: $(SRC_TOP)Programs/spk_driver.h speech.$O: $(SRC_DIR)/speech.h -speech.$O: $(SRC_TOP)BrailleDrivers/Alva/braille.h +speech.$O: $(SRC_TOP)Drivers/Braille/Alva/braille.h diff --git a/SpeechDrivers/Alva/speech.c b/Drivers/Speech/Alva/speech.c similarity index 92% rename from SpeechDrivers/Alva/speech.c rename to Drivers/Speech/Alva/speech.c index 7bd99e7b0590f72518a6a6a7344017e5efda291e..e6ddd4d1bb770c3c1e85289c1d13ba8a366ae40b 100644 --- a/SpeechDrivers/Alva/speech.c +++ b/Drivers/Speech/Alva/speech.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -29,7 +30,7 @@ #include "spk_driver.h" #include "speech.h" /* for speech definitions */ -#include "BrailleDrivers/Alva/braille.h" +#include "Drivers/Braille/Alva/braille.h" /* charset conversion table from iso latin-1 == iso 8859-1 to cp437==ibmpc * for chars >=128. diff --git a/SpeechDrivers/Alva/speech.h b/Drivers/Speech/Alva/speech.h similarity index 91% rename from SpeechDrivers/Alva/speech.h rename to Drivers/Speech/Alva/speech.h index c098b741c5bd5126280380e2615c2030897c6afb..06cbf34510fd2e43609cfe5f733439a8242ba952 100644 --- a/SpeechDrivers/Alva/speech.h +++ b/Drivers/Speech/Alva/speech.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/SpeechDrivers/BrailleLite/Makefile.in b/Drivers/Speech/BrailleLite/Makefile.in similarity index 80% rename from SpeechDrivers/BrailleLite/Makefile.in rename to Drivers/Speech/BrailleLite/Makefile.in index 5aad7eccddb8a51a7aaf978b24b47393032201a2..6d47dacfaf4f9a056ad635df2f455b42c57d718c 100644 --- a/SpeechDrivers/BrailleLite/Makefile.in +++ b/Drivers/Speech/BrailleLite/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/SpeechDrivers/CombiBraille/reldeps.mk b/Drivers/Speech/BrailleLite/reldeps.mk similarity index 86% rename from SpeechDrivers/CombiBraille/reldeps.mk rename to Drivers/Speech/BrailleLite/reldeps.mk index d0c471f592103033196cc50018b9407ea4fceb5d..85380761241c2b717e765f88b66f082aefbfcb16 100644 --- a/SpeechDrivers/CombiBraille/reldeps.mk +++ b/Drivers/Speech/BrailleLite/reldeps.mk @@ -7,7 +7,7 @@ speech.$O: $(SRC_TOP)Programs/driver.h speech.$O: $(SRC_TOP)Programs/spk.h speech.$O: $(SRC_TOP)Programs/spk_driver.h speech.$O: $(SRC_DIR)/speech.h -speech.$O: $(SRC_TOP)BrailleDrivers/CombiBraille/braille.h +speech.$O: $(SRC_TOP)Drivers/Braille/BrailleLite/braille.h speech.$O: $(SRC_TOP)Programs/io_defs.h speech.$O: $(SRC_TOP)Programs/io_serial.h diff --git a/SpeechDrivers/BrailleLite/speech.c b/Drivers/Speech/BrailleLite/speech.c similarity index 92% rename from SpeechDrivers/BrailleLite/speech.c rename to Drivers/Speech/BrailleLite/speech.c index b91af13d76ad474fdc154fda8b8649fe315528b0..f033107570d75bfef56af17af734b07a526a0e91 100644 --- a/SpeechDrivers/BrailleLite/speech.c +++ b/Drivers/Speech/BrailleLite/speech.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -30,7 +31,7 @@ #include "spk_driver.h" #include "speech.h" /* for BLite speech definitions */ -#include "BrailleDrivers/BrailleLite/braille.h" /* for BLite speech definitions */ +#include "Drivers/Braille/BrailleLite/braille.h" /* for BLite speech definitions */ #if 0 diff --git a/SpeechDrivers/BrailleLite/speech.h b/Drivers/Speech/BrailleLite/speech.h similarity index 92% rename from SpeechDrivers/BrailleLite/speech.h rename to Drivers/Speech/BrailleLite/speech.h index ae046902071c91d5f39add63789536ebabbee57f..e2a8b4416f971ec581ecbdaceda9c390d1ec784a 100644 --- a/SpeechDrivers/BrailleLite/speech.h +++ b/Drivers/Speech/BrailleLite/speech.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/SpeechDrivers/CombiBraille/Makefile.in b/Drivers/Speech/CombiBraille/Makefile.in similarity index 80% rename from SpeechDrivers/CombiBraille/Makefile.in rename to Drivers/Speech/CombiBraille/Makefile.in index 8f7100c9f123cfac024b488538d37e6617cd36df..fdb47bf11fed7edd7b0f5cc686ef22dd31984e24 100644 --- a/SpeechDrivers/CombiBraille/Makefile.in +++ b/Drivers/Speech/CombiBraille/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/SpeechDrivers/BrailleLite/reldeps.mk b/Drivers/Speech/CombiBraille/reldeps.mk similarity index 86% rename from SpeechDrivers/BrailleLite/reldeps.mk rename to Drivers/Speech/CombiBraille/reldeps.mk index 0e920c0f1d051369815ab225a894e42ecdb04e94..f1c19c9465884151db6503c7640c178e0e530922 100644 --- a/SpeechDrivers/BrailleLite/reldeps.mk +++ b/Drivers/Speech/CombiBraille/reldeps.mk @@ -7,7 +7,7 @@ speech.$O: $(SRC_TOP)Programs/driver.h speech.$O: $(SRC_TOP)Programs/spk.h speech.$O: $(SRC_TOP)Programs/spk_driver.h speech.$O: $(SRC_DIR)/speech.h -speech.$O: $(SRC_TOP)BrailleDrivers/BrailleLite/braille.h +speech.$O: $(SRC_TOP)Drivers/Braille/CombiBraille/braille.h speech.$O: $(SRC_TOP)Programs/io_defs.h speech.$O: $(SRC_TOP)Programs/io_serial.h diff --git a/SpeechDrivers/CombiBraille/speech.c b/Drivers/Speech/CombiBraille/speech.c similarity index 93% rename from SpeechDrivers/CombiBraille/speech.c rename to Drivers/Speech/CombiBraille/speech.c index 13a04e929b0e6e550ab55cecfcd3396e8c6f5af2..57252d1b3e6b20fa43c7c8e418087a403feae2b4 100644 --- a/SpeechDrivers/CombiBraille/speech.c +++ b/Drivers/Speech/CombiBraille/speech.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -31,7 +32,7 @@ #include "spk_driver.h" #include "speech.h" /* for speech definitions */ -#include "BrailleDrivers/CombiBraille/braille.h" +#include "Drivers/Braille/CombiBraille/braille.h" static size_t spk_size = 0X1000; static unsigned char *spk_buffer = NULL; diff --git a/SpeechDrivers/CombiBraille/speech.h b/Drivers/Speech/CombiBraille/speech.h similarity index 92% rename from SpeechDrivers/CombiBraille/speech.h rename to Drivers/Speech/CombiBraille/speech.h index d75448dd7e4d22f11ee4c6507eaa7a0420e98946..2aa213ded3d2e59e15709975df136bf3ae478eaf 100644 --- a/SpeechDrivers/CombiBraille/speech.h +++ b/Drivers/Speech/CombiBraille/speech.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/SpeechDrivers/ExternalSpeech/Makefile.in b/Drivers/Speech/ExternalSpeech/Makefile.in similarity index 82% rename from SpeechDrivers/ExternalSpeech/Makefile.in rename to Drivers/Speech/ExternalSpeech/Makefile.in index 15eb831af3d4f191295a9cc29006cd9ba74d4ca4..3fbd480b5da04be873bd0401e43f6375e1a8d7c6 100644 --- a/SpeechDrivers/ExternalSpeech/Makefile.in +++ b/Drivers/Speech/ExternalSpeech/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/SpeechDrivers/ExternalSpeech/README b/Drivers/Speech/ExternalSpeech/README similarity index 100% rename from SpeechDrivers/ExternalSpeech/README rename to Drivers/Speech/ExternalSpeech/README diff --git a/SpeechDrivers/ExternalSpeech/reldeps.mk b/Drivers/Speech/ExternalSpeech/reldeps.mk similarity index 100% rename from SpeechDrivers/ExternalSpeech/reldeps.mk rename to Drivers/Speech/ExternalSpeech/reldeps.mk diff --git a/SpeechDrivers/ExternalSpeech/speech.c b/Drivers/Speech/ExternalSpeech/speech.c similarity index 97% rename from SpeechDrivers/ExternalSpeech/speech.c rename to Drivers/Speech/ExternalSpeech/speech.c index 4cf7b4c3edd9530c2f1cdad31c987584c3d644d5..4bdf424d648cb8cc71920fb5b49e4fa5b502535d 100644 --- a/SpeechDrivers/ExternalSpeech/speech.c +++ b/Drivers/Speech/ExternalSpeech/speech.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/SpeechDrivers/ExternalSpeech/speech.h b/Drivers/Speech/ExternalSpeech/speech.h similarity index 82% rename from SpeechDrivers/ExternalSpeech/speech.h rename to Drivers/Speech/ExternalSpeech/speech.h index 0cc7e39eac0b3d279530e7541cc3ac59986ef844..21ba556aaa5a08a5b93026b334bc409ea4b2e30f 100644 --- a/SpeechDrivers/ExternalSpeech/speech.h +++ b/Drivers/Speech/ExternalSpeech/speech.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/SpeechDrivers/Festival/Makefile.in b/Drivers/Speech/Festival/Makefile.in similarity index 81% rename from SpeechDrivers/Festival/Makefile.in rename to Drivers/Speech/Festival/Makefile.in index fcfae1ed0ad0740bde909e9e78f5f51c2adf2fdc..4da26e07942f5e0cd7b29d2efffe109e89e99a44 100644 --- a/SpeechDrivers/Festival/Makefile.in +++ b/Drivers/Speech/Festival/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/SpeechDrivers/Festival/README b/Drivers/Speech/Festival/README similarity index 100% rename from SpeechDrivers/Festival/README rename to Drivers/Speech/Festival/README diff --git a/SpeechDrivers/Festival/reldeps.mk b/Drivers/Speech/Festival/reldeps.mk similarity index 100% rename from SpeechDrivers/Festival/reldeps.mk rename to Drivers/Speech/Festival/reldeps.mk diff --git a/SpeechDrivers/Festival/speech.c b/Drivers/Speech/Festival/speech.c similarity index 98% rename from SpeechDrivers/Festival/speech.c rename to Drivers/Speech/Festival/speech.c index 1fe25ea42a90b825699f101a7f0eb173e2548dfd..c7eb78f458884b55c57a9dfd074f6ec4d08639f6 100644 --- a/SpeechDrivers/Festival/speech.c +++ b/Drivers/Speech/Festival/speech.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/SpeechDrivers/Festival/speech.h b/Drivers/Speech/Festival/speech.h similarity index 78% rename from SpeechDrivers/Festival/speech.h rename to Drivers/Speech/Festival/speech.h index 45d9daf9d04d49cbd87de305b62e89917aaed12e..843660354446e8138343eb5e379cdd68a62053ef 100644 --- a/SpeechDrivers/Festival/speech.h +++ b/Drivers/Speech/Festival/speech.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/SpeechDrivers/FestivalLite/Makefile.in b/Drivers/Speech/FestivalLite/Makefile.in similarity index 83% rename from SpeechDrivers/FestivalLite/Makefile.in rename to Drivers/Speech/FestivalLite/Makefile.in index b46e6db3b70f73bfd81526028cd98bace24d543d..85001f8966bd1df97dda56c08ceadf93b2bc22ee 100644 --- a/SpeechDrivers/FestivalLite/Makefile.in +++ b/Drivers/Speech/FestivalLite/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/SpeechDrivers/FestivalLite/README b/Drivers/Speech/FestivalLite/README similarity index 100% rename from SpeechDrivers/FestivalLite/README rename to Drivers/Speech/FestivalLite/README diff --git a/SpeechDrivers/FestivalLite/reldeps.mk b/Drivers/Speech/FestivalLite/reldeps.mk similarity index 100% rename from SpeechDrivers/FestivalLite/reldeps.mk rename to Drivers/Speech/FestivalLite/reldeps.mk diff --git a/SpeechDrivers/FestivalLite/speech.c b/Drivers/Speech/FestivalLite/speech.c similarity index 94% rename from SpeechDrivers/FestivalLite/speech.c rename to Drivers/Speech/FestivalLite/speech.c index 5e7504bdb7566ba70d6f9839542f4704249ce22e..6db05674745abddf364954daa31c525d14b5298e 100644 --- a/SpeechDrivers/FestivalLite/speech.c +++ b/Drivers/Speech/FestivalLite/speech.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/SpeechDrivers/GenericSay/Makefile.in b/Drivers/Speech/GenericSay/Makefile.in similarity index 81% rename from SpeechDrivers/GenericSay/Makefile.in rename to Drivers/Speech/GenericSay/Makefile.in index af433ba2e3741da94ab786fac9ff99ea69343680..a60cbfd7e3ba80986589ba36fe1d1748ede90760 100644 --- a/SpeechDrivers/GenericSay/Makefile.in +++ b/Drivers/Speech/GenericSay/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/SpeechDrivers/GenericSay/README b/Drivers/Speech/GenericSay/README similarity index 100% rename from SpeechDrivers/GenericSay/README rename to Drivers/Speech/GenericSay/README diff --git a/SpeechDrivers/GenericSay/commands/AccentSA b/Drivers/Speech/GenericSay/commands/AccentSA similarity index 100% rename from SpeechDrivers/GenericSay/commands/AccentSA rename to Drivers/Speech/GenericSay/commands/AccentSA diff --git a/SpeechDrivers/GenericSay/commands/say b/Drivers/Speech/GenericSay/commands/say similarity index 100% rename from SpeechDrivers/GenericSay/commands/say rename to Drivers/Speech/GenericSay/commands/say diff --git a/SpeechDrivers/GenericSay/reldeps.mk b/Drivers/Speech/GenericSay/reldeps.mk similarity index 100% rename from SpeechDrivers/GenericSay/reldeps.mk rename to Drivers/Speech/GenericSay/reldeps.mk diff --git a/SpeechDrivers/GenericSay/speech.c b/Drivers/Speech/GenericSay/speech.c similarity index 90% rename from SpeechDrivers/GenericSay/speech.c rename to Drivers/Speech/GenericSay/speech.c index b7b896b54fb982d8e2e02a65de5a4084826d7ae6..6a51c202d74985a4cba2411fe54307017896e3e8 100644 --- a/SpeechDrivers/GenericSay/speech.c +++ b/Drivers/Speech/GenericSay/speech.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/SpeechDrivers/GenericSay/speech.h b/Drivers/Speech/GenericSay/speech.h similarity index 76% rename from SpeechDrivers/GenericSay/speech.h rename to Drivers/Speech/GenericSay/speech.h index eaf90e53ad57a706ca2c45d1ef2a7566cabcdffc..83115fc6329517e2cbd67543f3e55cf1492a800b 100644 --- a/SpeechDrivers/GenericSay/speech.h +++ b/Drivers/Speech/GenericSay/speech.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/SpeechDrivers/Mikropuhe/Makefile.in b/Drivers/Speech/Mikropuhe/Makefile.in similarity index 82% rename from SpeechDrivers/Mikropuhe/Makefile.in rename to Drivers/Speech/Mikropuhe/Makefile.in index 69c46a39eba228c87823e000f014e09126844cf8..d035044a9acf90fbb9589030fb0c77bf0e8a729e 100644 --- a/SpeechDrivers/Mikropuhe/Makefile.in +++ b/Drivers/Speech/Mikropuhe/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/SpeechDrivers/Mikropuhe/README b/Drivers/Speech/Mikropuhe/README similarity index 100% rename from SpeechDrivers/Mikropuhe/README rename to Drivers/Speech/Mikropuhe/README diff --git a/SpeechDrivers/Mikropuhe/reldeps.mk b/Drivers/Speech/Mikropuhe/reldeps.mk similarity index 86% rename from SpeechDrivers/Mikropuhe/reldeps.mk rename to Drivers/Speech/Mikropuhe/reldeps.mk index 7800fbfaa84065ae832308188bb78ee8f89370a1..83165e3a5119fe25341c0652a359fd217bb0173e 100644 --- a/SpeechDrivers/Mikropuhe/reldeps.mk +++ b/Drivers/Speech/Mikropuhe/reldeps.mk @@ -4,7 +4,9 @@ speech.$O: $(BLD_TOP)config.h speech.$O: $(SRC_TOP)prologue.h speech.$O: $(SRC_TOP)Programs/misc.h speech.$O: $(SRC_TOP)Programs/win_pthread.h +speech.$O: $(SRC_TOP)Programs/bitmask.h speech.$O: $(SRC_TOP)Programs/keyboard.h +speech.$O: $(SRC_TOP)Programs/keycodes.h speech.$O: $(SRC_TOP)Programs/system.h speech.$O: $(SRC_TOP)Programs/queue.h speech.$O: $(SRC_TOP)Programs/brl.h @@ -15,6 +17,7 @@ speech.$O: $(SRC_TOP)Programs/brltty.h speech.$O: $(SRC_TOP)Programs/cmd.h speech.$O: $(SRC_TOP)Programs/ctb.h speech.$O: $(SRC_TOP)Programs/driver.h +speech.$O: $(SRC_TOP)Programs/ktb.h speech.$O: $(SRC_TOP)Programs/spk.h speech.$O: $(SRC_TOP)Programs/spk_driver.h diff --git a/SpeechDrivers/Mikropuhe/speech.c b/Drivers/Speech/Mikropuhe/speech.c similarity index 98% rename from SpeechDrivers/Mikropuhe/speech.c rename to Drivers/Speech/Mikropuhe/speech.c index 1377de8f4a8f4a81e7163bc6506f1d7c9da13fbe..f77989f7e63ab01f8fe33014444d0df21083e53e 100644 --- a/SpeechDrivers/Mikropuhe/speech.c +++ b/Drivers/Speech/Mikropuhe/speech.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/SpeechDrivers/MultiBraille/Makefile.in b/Drivers/Speech/MultiBraille/Makefile.in similarity index 80% rename from SpeechDrivers/MultiBraille/Makefile.in rename to Drivers/Speech/MultiBraille/Makefile.in index c168ca17750584f724e64560e1cf8648f28f3891..1c21b95f7ae5d9877a70eef5150034cfbc7bec31 100644 --- a/SpeechDrivers/MultiBraille/Makefile.in +++ b/Drivers/Speech/MultiBraille/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/SpeechDrivers/MultiBraille/reldeps.mk b/Drivers/Speech/MultiBraille/reldeps.mk similarity index 86% rename from SpeechDrivers/MultiBraille/reldeps.mk rename to Drivers/Speech/MultiBraille/reldeps.mk index 491cf928d7549cfe5f4fb4151da7f599e72c61a7..aba1a01fd846bc5d5db96cc2642df30ce04765dc 100644 --- a/SpeechDrivers/MultiBraille/reldeps.mk +++ b/Drivers/Speech/MultiBraille/reldeps.mk @@ -7,7 +7,7 @@ speech.$O: $(SRC_TOP)Programs/driver.h speech.$O: $(SRC_TOP)Programs/spk.h speech.$O: $(SRC_TOP)Programs/spk_driver.h speech.$O: $(SRC_DIR)/speech.h -speech.$O: $(SRC_TOP)BrailleDrivers/MultiBraille/braille.h +speech.$O: $(SRC_TOP)Drivers/Braille/MultiBraille/braille.h speech.$O: $(SRC_TOP)Programs/io_defs.h speech.$O: $(SRC_TOP)Programs/io_serial.h diff --git a/SpeechDrivers/MultiBraille/speech.c b/Drivers/Speech/MultiBraille/speech.c similarity index 92% rename from SpeechDrivers/MultiBraille/speech.c rename to Drivers/Speech/MultiBraille/speech.c index 35dddf1f56b226e84d348ae209e43b252bc28566..91dae12bfc899288dbbafb0613123c49d1bff5e6 100644 --- a/SpeechDrivers/MultiBraille/speech.c +++ b/Drivers/Speech/MultiBraille/speech.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -31,7 +32,7 @@ #include "spk_driver.h" #include "speech.h" /* for speech definitions */ -#include "BrailleDrivers/MultiBraille/braille.h" +#include "Drivers/Braille/MultiBraille/braille.h" /* charset conversion table from iso latin-1 == iso 8859-1 to cp437==ibmpc * for chars >=128. diff --git a/SpeechDrivers/MultiBraille/speech.h b/Drivers/Speech/MultiBraille/speech.h similarity index 92% rename from SpeechDrivers/MultiBraille/speech.h rename to Drivers/Speech/MultiBraille/speech.h index 370a76dc623e197f6965edd0eac1c3f709750514..3cdd1f4282431e5b95deac417a5ceb1c09b6eb9f 100644 --- a/SpeechDrivers/MultiBraille/speech.h +++ b/Drivers/Speech/MultiBraille/speech.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/SpeechDrivers/Skeleton/Makefile.in b/Drivers/Speech/Skeleton/Makefile.in similarity index 81% rename from SpeechDrivers/Skeleton/Makefile.in rename to Drivers/Speech/Skeleton/Makefile.in index f6c80ddba1dccb6232541be1ba5d39229165aeb9..d9a014033abcc2d54bca3f0a64cb143e35b89880 100644 --- a/SpeechDrivers/Skeleton/Makefile.in +++ b/Drivers/Speech/Skeleton/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/SpeechDrivers/Skeleton/reldeps.mk b/Drivers/Speech/Skeleton/reldeps.mk similarity index 100% rename from SpeechDrivers/Skeleton/reldeps.mk rename to Drivers/Speech/Skeleton/reldeps.mk diff --git a/SpeechDrivers/Skeleton/speech.c b/Drivers/Speech/Skeleton/speech.c similarity index 82% rename from SpeechDrivers/Skeleton/speech.c rename to Drivers/Speech/Skeleton/speech.c index 94f5cd37991142e2f4e90bfe72539adf31c03b60..c87cd12cc352494e512f2b285cb39ee91cf195ca 100644 --- a/SpeechDrivers/Skeleton/speech.c +++ b/Drivers/Speech/Skeleton/speech.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -24,6 +25,7 @@ //#define SPK_HAVE_TRACK //#define SPK_HAVE_RATE //#define SPK_HAVE_VOLUME +//#define SPK_HAVE_PITCH //#define SPK_HAVE_PUNCTUATION #include "spk_driver.h" @@ -72,6 +74,12 @@ spk_volume (SpeechSynthesizer *spk, unsigned char setting) { } #endif /* SPK_HAVE_VOLUME */ +#ifdef SPK_HAVE_PITCH +static void +spk_pitch (SpeechSynthesizer *spk, unsigned char setting) { +} +#endif /* SPK_HAVE_PITCH */ + #ifdef SPK_HAVE_PUNCTUATION static void spk_punctuation (SpeechSynthesizer *spk, SpeechPunctuation setting) { diff --git a/SpeechDrivers/SpeechDispatcher/Makefile.in b/Drivers/Speech/SpeechDispatcher/Makefile.in similarity index 82% rename from SpeechDrivers/SpeechDispatcher/Makefile.in rename to Drivers/Speech/SpeechDispatcher/Makefile.in index a9a3155fc2cbf7dd466df16686ed24544a03a9bb..6bf5ca92e1822aba3cec462690646e6577a2e3c4 100644 --- a/SpeechDrivers/SpeechDispatcher/Makefile.in +++ b/Drivers/Speech/SpeechDispatcher/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/SpeechDrivers/SpeechDispatcher/README b/Drivers/Speech/SpeechDispatcher/README similarity index 100% rename from SpeechDrivers/SpeechDispatcher/README rename to Drivers/Speech/SpeechDispatcher/README diff --git a/SpeechDrivers/SpeechDispatcher/reldeps.mk b/Drivers/Speech/SpeechDispatcher/reldeps.mk similarity index 100% rename from SpeechDrivers/SpeechDispatcher/reldeps.mk rename to Drivers/Speech/SpeechDispatcher/reldeps.mk diff --git a/SpeechDrivers/SpeechDispatcher/speech.c b/Drivers/Speech/SpeechDispatcher/speech.c similarity index 94% rename from SpeechDrivers/SpeechDispatcher/speech.c rename to Drivers/Speech/SpeechDispatcher/speech.c index 0cbff2059d62c0d91ab1daf5665b3f84ff689cfa..8ee5493c46a5215b6545aa96931160fe2b527670 100644 --- a/SpeechDrivers/SpeechDispatcher/speech.c +++ b/Drivers/Speech/SpeechDispatcher/speech.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -18,6 +19,7 @@ #include "prologue.h" #include +#include #include "misc.h" @@ -214,7 +216,10 @@ sayText (const void *data) { const SayData *say = data; if (say->count == 1) { - spd_char(connectionHandle, say->priority, (const char *)say->text); + char string[say->length + 1]; + memcpy(string, say->text, say->length); + string[say->length] = 0; + spd_char(connectionHandle, say->priority, string); } else { spd_sayf(connectionHandle, say->priority, "%.*s", say->length, say->text); } diff --git a/SpeechDrivers/Swift/Makefile.in b/Drivers/Speech/Swift/Makefile.in similarity index 75% rename from SpeechDrivers/Swift/Makefile.in rename to Drivers/Speech/Swift/Makefile.in index 795922744109f4cf48ec384f6544b711d224a64e..44514899eb118ac2fcc9da54f267227aaf9e268a 100644 --- a/SpeechDrivers/Swift/Makefile.in +++ b/Drivers/Speech/Swift/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # @@ -24,5 +25,5 @@ SPK_OBJS = @speech_libraries_sw@ include $(SRC_TOP)speech.mk speech.$O: - $(CXX) $(SPK_CXXFLAGS) -I$(SWIFT_ROOT)/include -c $(SRC_DIR)/speech.c + $(CC) $(SPK_CFLAGS) -I$(SWIFT_ROOT)/include -c $(SRC_DIR)/speech.c diff --git a/SpeechDrivers/Swift/README b/Drivers/Speech/Swift/README similarity index 100% rename from SpeechDrivers/Swift/README rename to Drivers/Speech/Swift/README diff --git a/SpeechDrivers/Swift/reldeps.mk b/Drivers/Speech/Swift/reldeps.mk similarity index 100% rename from SpeechDrivers/Swift/reldeps.mk rename to Drivers/Speech/Swift/reldeps.mk diff --git a/SpeechDrivers/Swift/speech.c b/Drivers/Speech/Swift/speech.c similarity index 96% rename from SpeechDrivers/Swift/speech.c rename to Drivers/Speech/Swift/speech.c index a9ee327151dac007c5f2622c8e77ce6c6b905ac4..03c037b0f476dd01fc63c850f54a7b2dbe702fc6 100644 --- a/SpeechDrivers/Swift/speech.c +++ b/Drivers/Speech/Swift/speech.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/SpeechDrivers/Theta/Makefile.in b/Drivers/Speech/Theta/Makefile.in similarity index 82% rename from SpeechDrivers/Theta/Makefile.in rename to Drivers/Speech/Theta/Makefile.in index 39447dd9e9b8aa5b41973885bcb4698b4c54a2ad..9f319e6fd88a05ef2a5c76381884490863abc4c0 100644 --- a/SpeechDrivers/Theta/Makefile.in +++ b/Drivers/Speech/Theta/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/SpeechDrivers/Theta/README b/Drivers/Speech/Theta/README similarity index 100% rename from SpeechDrivers/Theta/README rename to Drivers/Speech/Theta/README diff --git a/SpeechDrivers/Theta/reldeps.mk b/Drivers/Speech/Theta/reldeps.mk similarity index 100% rename from SpeechDrivers/Theta/reldeps.mk rename to Drivers/Speech/Theta/reldeps.mk diff --git a/SpeechDrivers/Theta/speech.c b/Drivers/Speech/Theta/speech.c similarity index 96% rename from SpeechDrivers/Theta/speech.c rename to Drivers/Speech/Theta/speech.c index 294542d76a4b3f7fc49cf2cd9c9bd01e42568c94..5e7f7ed8af44df6e9e9fb4ae771ac9fdbb6e8927 100644 --- a/SpeechDrivers/Theta/speech.c +++ b/Drivers/Speech/Theta/speech.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/SpeechDrivers/ViaVoice/Makefile.in b/Drivers/Speech/ViaVoice/Makefile.in similarity index 82% rename from SpeechDrivers/ViaVoice/Makefile.in rename to Drivers/Speech/ViaVoice/Makefile.in index 0e40628c9efd79cb23ec01636269b7c3bb3e9b7f..27f86662fc1c617853c0ae069169b0901e6ac87c 100644 --- a/SpeechDrivers/ViaVoice/Makefile.in +++ b/Drivers/Speech/ViaVoice/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/SpeechDrivers/ViaVoice/README b/Drivers/Speech/ViaVoice/README similarity index 100% rename from SpeechDrivers/ViaVoice/README rename to Drivers/Speech/ViaVoice/README diff --git a/SpeechDrivers/ViaVoice/reldeps.mk b/Drivers/Speech/ViaVoice/reldeps.mk similarity index 100% rename from SpeechDrivers/ViaVoice/reldeps.mk rename to Drivers/Speech/ViaVoice/reldeps.mk diff --git a/SpeechDrivers/ViaVoice/speech.c b/Drivers/Speech/ViaVoice/speech.c similarity index 99% rename from SpeechDrivers/ViaVoice/speech.c rename to Drivers/Speech/ViaVoice/speech.c index 89342aeb91e03ebd4dd6d34ab82aef7caa7f3cdd..afa4503714adc905359c16159a671046560f80c5 100644 --- a/SpeechDrivers/ViaVoice/speech.c +++ b/Drivers/Speech/ViaVoice/speech.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/SpeechDrivers/ViaVoice/speech.h b/Drivers/Speech/ViaVoice/speech.h similarity index 76% rename from SpeechDrivers/ViaVoice/speech.h rename to Drivers/Speech/ViaVoice/speech.h index 87216e943ed8f8ee400a4d47764de39b283b33d7..0ab9ca584984a3f48518f1e3561ff852b76facab 100644 --- a/SpeechDrivers/ViaVoice/speech.h +++ b/Drivers/Speech/ViaVoice/speech.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Hotplug/brltty b/Hotplug/brltty index e164f69a859d248cab1b9d78d057cf58dd6ce783..4bb8220431d77d87efbff67ee05d194cf116d7fe 100755 --- a/Hotplug/brltty +++ b/Hotplug/brltty @@ -3,13 +3,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # @@ -30,10 +31,9 @@ case "${ACTION}" in add) driver="${programName#*-}" + device="usb:" - device=usb: - - echo -b"${driver}" -d"${device}" && { + brltty -b"${driver}" -d"${device}" && { [ -n "${REMOVER}" ] && ln -s -f -- "${0}" "${REMOVER}" } ;; diff --git a/Hotplug/brltty-eu b/Hotplug/brltty-eu new file mode 120000 index 0000000000000000000000000000000000000000..a32c7c356db0734471a728015247a5f0c7eb29fd --- /dev/null +++ b/Hotplug/brltty-eu @@ -0,0 +1 @@ +brltty \ No newline at end of file diff --git a/Hotplug/brltty-hm b/Hotplug/brltty-hm new file mode 120000 index 0000000000000000000000000000000000000000..a32c7c356db0734471a728015247a5f0c7eb29fd --- /dev/null +++ b/Hotplug/brltty-hm @@ -0,0 +1 @@ +brltty \ No newline at end of file diff --git a/Hotplug/brltty-pg b/Hotplug/brltty-pg new file mode 120000 index 0000000000000000000000000000000000000000..a32c7c356db0734471a728015247a5f0c7eb29fd --- /dev/null +++ b/Hotplug/brltty-pg @@ -0,0 +1 @@ +brltty \ No newline at end of file diff --git a/Hotplug/brltty-sk b/Hotplug/brltty-sk new file mode 120000 index 0000000000000000000000000000000000000000..a32c7c356db0734471a728015247a5f0c7eb29fd --- /dev/null +++ b/Hotplug/brltty-sk @@ -0,0 +1 @@ +brltty \ No newline at end of file diff --git a/Hotplug/brltty.inf b/Hotplug/brltty.inf new file mode 100644 index 0000000000000000000000000000000000000000..e3a23e4e4155881706c0c1b460b9913eb587f462 --- /dev/null +++ b/Hotplug/brltty.inf @@ -0,0 +1,267 @@ +[Version] +Signature = "$Chicago$" +provider = %manufacturer% +DriverVer = 01/01/1995,0.1.12.1 +CatalogFile = brltty.cat +CatalogFile.NT = brltty.cat +CatalogFile.NTAMD64 = brltty_x64.cat + +Class = LibUsbDevices +ClassGUID = {EB781AAF-9C70-4523-A5DF-642A87ECA567} + +[ClassInstall] +AddReg=libusb_class_install_add_reg + +[ClassInstall32] +AddReg=libusb_class_install_add_reg + +[libusb_class_install_add_reg] +HKR,,,,"LibUSB-Win32 Devices" +HKR,,Icon,,"-20" + +[Manufacturer] +%manufacturer%=Devices,NT,NTAMD64 + +;-------------------------------------------------------------------------- +; Files +;-------------------------------------------------------------------------- + +[SourceDisksNames] +1 = "Libusb-Win32 Driver Installation Disk",, + +[SourceDisksFiles] +libusb0.sys = 1,, +libusb0.dll = 1,, +libusb0_x64.sys = 1,, +libusb0_x64.dll = 1,, + +[DestinationDirs] +libusb_files_sys = 10,system32\drivers +libusb_files_sys_x64 = 10,system32\drivers +libusb_files_dll = 10,system32 +libusb_files_dll_wow64 = 10,syswow64 +libusb_files_dll_x64 = 10,system32 + +[libusb_files_sys] +libusb0.sys + +[libusb_files_sys_x64] +libusb0.sys,libusb0_x64.sys + +[libusb_files_dll] +libusb0.dll + +[libusb_files_dll_wow64] +libusb0.dll + +[libusb_files_dll_x64] +libusb0.dll,libusb0_x64.dll + +;-------------------------------------------------------------------------- +; Device driver +;-------------------------------------------------------------------------- + +[LIBUSB_DEV] +CopyFiles = libusb_files_sys, libusb_files_dll +AddReg = libusb_add_reg + +[LIBUSB_DEV.NT] +CopyFiles = libusb_files_sys, libusb_files_dll + +[LIBUSB_DEV.NTAMD64] +CopyFiles = libusb_files_sys_x64, libusb_files_dll_wow64, libusb_files_dll_x64 + +[LIBUSB_DEV.HW] +DelReg = libusb_del_reg_hw +AddReg = libusb_add_reg_hw + +[LIBUSB_DEV.NT.HW] +DelReg = libusb_del_reg_hw +AddReg = libusb_add_reg_hw + +[LIBUSB_DEV.NTAMD64.HW] +DelReg = libusb_del_reg_hw +AddReg = libusb_add_reg_hw + +[LIBUSB_DEV.NT.Services] +AddService = libusb0, 0x00000002, libusb_add_service + +[LIBUSB_DEV.NTAMD64.Services] +AddService = libusb0, 0x00000002, libusb_add_service + +[libusb_add_reg] +HKR,,DevLoader,,*ntkern +HKR,,NTMPDriver,,libusb0.sys + +; Older versions of this .inf file installed filter drivers. They are not +; needed any more and must be removed +[libusb_del_reg_hw] +HKR,,LowerFilters +HKR,,UpperFilters + +; Device properties +[libusb_add_reg_hw] +HKR,,SurpriseRemovalOK, 0x00010001, 1 + +;-------------------------------------------------------------------------- +; Services +;-------------------------------------------------------------------------- + +[libusb_add_service] +DisplayName = "LibUsb-Win32 - Kernel Driver 03/31/2007, 0.1.12.1" +ServiceType = 1 +StartType = 3 +ErrorControl = 0 +ServiceBinary = %12%\libusb0.sys + +;-------------------------------------------------------------------------- +; Devices +;-------------------------------------------------------------------------- + +[Devices] + +"LibUsb-Win32 ALVA Satellite"=LIBUSB_DEV, USB\VID_06B0&PID_0001 +"LibUsb-Win32 ALVA BC640"=LIBUSB_DEV, USB\VID_0798&PID_0640 +"LibUsb-Win32 ALVA BC680"=LIBUSB_DEV, USB\VID_0798&PID_0680 + +"LibUsb-Win32 Baum Vario40"=LIBUSB_DEV, USB\VID_0403&PID_FE70 +"LibUsb-Win32 Baum PocketVario 24"=LIBUSB_DEV, USB\VID_0403&PID_FE71 +"LibUsb-Win32 Baum SuperVario 40"=LIBUSB_DEV, USB\VID_0403&PID_FE72 +"LibUsb-Win32 Baum SuperVario 32"=LIBUSB_DEV, USB\VID_0403&PID_FE73 +"LibUsb-Win32 Baum SuperVario 64"=LIBUSB_DEV, USB\VID_0403&PID_FE74 +"LibUsb-Win32 Baum SuperVario 80"=LIBUSB_DEV, USB\VID_0403&PID_FE75 +"LibUsb-Win32 Baum VarioPro 80"=LIBUSB_DEV, USB\VID_0403&PID_FE76 +"LibUsb-Win32 Baum VarioPro 64"=LIBUSB_DEV, USB\VID_0403&PID_FE77 +"LibUsb-Win32 Baum VarioPro 40"=LIBUSB_DEV, USB\VID_0904&PID_2000 +"LibUsb-Win32 Baum EcoVario 24"=LIBUSB_DEV, USB\VID_0904&PID_2001 +"LibUsb-Win32 Baum EcoVario 40"=LIBUSB_DEV, USB\VID_0904&PID_2002 +"LibUsb-Win32 Baum VarioConnect 40"=LIBUSB_DEV, USB\VID_0904&PID_2007 +"LibUsb-Win32 Baum VarioConnect 32"=LIBUSB_DEV, USB\VID_0904&PID_2008 +"LibUsb-Win32 Baum VarioConnect 24"=LIBUSB_DEV, USB\VID_0904&PID_2009 +"LibUsb-Win32 Baum VarioConnect 64"=LIBUSB_DEV, USB\VID_0904&PID_2010 +"LibUsb-Win32 Baum VarioConnect 80"=LIBUSB_DEV, USB\VID_0904&PID_2011 +"LibUsb-Win32 Baum EcoVario 32"=LIBUSB_DEV, USB\VID_0904&PID_2014 +"LibUsb-Win32 Baum EcoVario 64"=LIBUSB_DEV, USB\VID_0904&PID_2015 +"LibUsb-Win32 Baum EcoVario 80"=LIBUSB_DEV, USB\VID_0904&PID_2016 +"LibUsb-Win32 Baum Refreshabraille 18"=LIBUSB_DEV, USB\VID_0904&PID_3000 + +"LibUsb-Win32 Braille Sense"=LIBUSB_DEV, USB\VID_045E&PID_930A + +"LibUsb-Win32 EuroBraille ESYS 12/40"=LIBUSB_DEV, USB\VID_C251&PID_1122 +"LibUsb-Win32 EuroBraille ESYS 12/40"=LIBUSB_DEV, USB\VID_C251&PID_1124 + +"LibUsb-Win32 FreedomScientific Focus"=LIBUSB_DEV, USB\VID_0F4E&PID_0100 +"LibUsb-Win32 FreedomScientific PAC Mate"=LIBUSB_DEV, USB\VID_0F4E&PID_0111 +"LibUsb-Win32 FreedomScientific Focus 2"=LIBUSB_DEV, USB\VID_0F4E&PID_0112 + +"LibUsb-Win32 HandyTech (GoHubs)"=LIBUSB_DEV, USB\VID_0921&PID_1200 +"LibUsb-Win32 HandyTech (FTDI)"=LIBUSB_DEV, USB\VID_0403&PID_6001 + +"LibUsb-Win32 Papenmeier"=LIBUSB_DEV, USB\VID_0403&PID_F208 + +"LibUsb-Win32 Pegasus"=LIBUSB_DEV, USB\VID_4242&PID_0001 + +"LibUsb-Win32 Seika"=LIBUSB_DEV, USB\VID_10C4&PID_EA60 + +"LibUsb-Win32 Voyager"=LIBUSB_DEV, USB\VID_0798&PID_0001 + +[Devices.NT] + +"LibUsb-Win32 ALVA Satellite"=LIBUSB_DEV, USB\VID_06B0&PID_0001 +"LibUsb-Win32 ALVA BC640"=LIBUSB_DEV, USB\VID_0798&PID_0640 +"LibUsb-Win32 ALVA BC680"=LIBUSB_DEV, USB\VID_0798&PID_0680 + +"LibUsb-Win32 Baum Vario40"=LIBUSB_DEV, USB\VID_0403&PID_FE70 +"LibUsb-Win32 Baum PocketVario 24"=LIBUSB_DEV, USB\VID_0403&PID_FE71 +"LibUsb-Win32 Baum SuperVario 40"=LIBUSB_DEV, USB\VID_0403&PID_FE72 +"LibUsb-Win32 Baum SuperVario 32"=LIBUSB_DEV, USB\VID_0403&PID_FE73 +"LibUsb-Win32 Baum SuperVario 64"=LIBUSB_DEV, USB\VID_0403&PID_FE74 +"LibUsb-Win32 Baum SuperVario 80"=LIBUSB_DEV, USB\VID_0403&PID_FE75 +"LibUsb-Win32 Baum VarioPro 80"=LIBUSB_DEV, USB\VID_0403&PID_FE76 +"LibUsb-Win32 Baum VarioPro 64"=LIBUSB_DEV, USB\VID_0403&PID_FE77 +"LibUsb-Win32 Baum VarioPro 40"=LIBUSB_DEV, USB\VID_0904&PID_2000 +"LibUsb-Win32 Baum EcoVario 24"=LIBUSB_DEV, USB\VID_0904&PID_2001 +"LibUsb-Win32 Baum EcoVario 40"=LIBUSB_DEV, USB\VID_0904&PID_2002 +"LibUsb-Win32 Baum VarioConnect 40"=LIBUSB_DEV, USB\VID_0904&PID_2007 +"LibUsb-Win32 Baum VarioConnect 32"=LIBUSB_DEV, USB\VID_0904&PID_2008 +"LibUsb-Win32 Baum VarioConnect 24"=LIBUSB_DEV, USB\VID_0904&PID_2009 +"LibUsb-Win32 Baum VarioConnect 64"=LIBUSB_DEV, USB\VID_0904&PID_2010 +"LibUsb-Win32 Baum VarioConnect 80"=LIBUSB_DEV, USB\VID_0904&PID_2011 +"LibUsb-Win32 Baum EcoVario 32"=LIBUSB_DEV, USB\VID_0904&PID_2014 +"LibUsb-Win32 Baum EcoVario 64"=LIBUSB_DEV, USB\VID_0904&PID_2015 +"LibUsb-Win32 Baum EcoVario 80"=LIBUSB_DEV, USB\VID_0904&PID_2016 +"LibUsb-Win32 Baum Refreshabraille 18"=LIBUSB_DEV, USB\VID_0904&PID_3000 + +"LibUsb-Win32 Braille Sense"=LIBUSB_DEV, USB\VID_045E&PID_930A + +"LibUsb-Win32 EuroBraille ESYS 12/40"=LIBUSB_DEV, USB\VID_C251&PID_1122 +"LibUsb-Win32 EuroBraille ESYS 12/40"=LIBUSB_DEV, USB\VID_C251&PID_1124 + +"LibUsb-Win32 FreedomScientific Focus"=LIBUSB_DEV, USB\VID_0F4E&PID_0100 +"LibUsb-Win32 FreedomScientific PAC Mate"=LIBUSB_DEV, USB\VID_0F4E&PID_0111 +"LibUsb-Win32 FreedomScientific Focus 2"=LIBUSB_DEV, USB\VID_0F4E&PID_0112 + +"LibUsb-Win32 HandyTech (GoHubs)"=LIBUSB_DEV, USB\VID_0921&PID_1200 +"LibUsb-Win32 HandyTech (FTDI)"=LIBUSB_DEV, USB\VID_0403&PID_6001 + +"LibUsb-Win32 Papenmeier"=LIBUSB_DEV, USB\VID_0403&PID_F208 + +"LibUsb-Win32 Pegasus"=LIBUSB_DEV, USB\VID_4242&PID_0001 + +"LibUsb-Win32 Seika"=LIBUSB_DEV, USB\VID_10C4&PID_EA60 + +"LibUsb-Win32 Voyager"=LIBUSB_DEV, USB\VID_0798&PID_0001 + +[Devices.NTAMD64] + +"LibUsb-Win32 ALVA Satellite"=LIBUSB_DEV, USB\VID_06B0&PID_0001 +"LibUsb-Win32 ALVA BC640"=LIBUSB_DEV, USB\VID_0798&PID_0640 +"LibUsb-Win32 ALVA BC680"=LIBUSB_DEV, USB\VID_0798&PID_0680 + +"LibUsb-Win32 Baum Vario40"=LIBUSB_DEV, USB\VID_0403&PID_FE70 +"LibUsb-Win32 Baum PocketVario 24"=LIBUSB_DEV, USB\VID_0403&PID_FE71 +"LibUsb-Win32 Baum SuperVario 40"=LIBUSB_DEV, USB\VID_0403&PID_FE72 +"LibUsb-Win32 Baum SuperVario 32"=LIBUSB_DEV, USB\VID_0403&PID_FE73 +"LibUsb-Win32 Baum SuperVario 64"=LIBUSB_DEV, USB\VID_0403&PID_FE74 +"LibUsb-Win32 Baum SuperVario 80"=LIBUSB_DEV, USB\VID_0403&PID_FE75 +"LibUsb-Win32 Baum VarioPro 80"=LIBUSB_DEV, USB\VID_0403&PID_FE76 +"LibUsb-Win32 Baum VarioPro 64"=LIBUSB_DEV, USB\VID_0403&PID_FE77 +"LibUsb-Win32 Baum VarioPro 40"=LIBUSB_DEV, USB\VID_0904&PID_2000 +"LibUsb-Win32 Baum EcoVario 24"=LIBUSB_DEV, USB\VID_0904&PID_2001 +"LibUsb-Win32 Baum EcoVario 40"=LIBUSB_DEV, USB\VID_0904&PID_2002 +"LibUsb-Win32 Baum VarioConnect 40"=LIBUSB_DEV, USB\VID_0904&PID_2007 +"LibUsb-Win32 Baum VarioConnect 32"=LIBUSB_DEV, USB\VID_0904&PID_2008 +"LibUsb-Win32 Baum VarioConnect 24"=LIBUSB_DEV, USB\VID_0904&PID_2009 +"LibUsb-Win32 Baum VarioConnect 64"=LIBUSB_DEV, USB\VID_0904&PID_2010 +"LibUsb-Win32 Baum VarioConnect 80"=LIBUSB_DEV, USB\VID_0904&PID_2011 +"LibUsb-Win32 Baum EcoVario 32"=LIBUSB_DEV, USB\VID_0904&PID_2014 +"LibUsb-Win32 Baum EcoVario 64"=LIBUSB_DEV, USB\VID_0904&PID_2015 +"LibUsb-Win32 Baum EcoVario 80"=LIBUSB_DEV, USB\VID_0904&PID_2016 +"LibUsb-Win32 Baum Refreshabraille 18"=LIBUSB_DEV, USB\VID_0904&PID_3000 + +"LibUsb-Win32 Braille Sense"=LIBUSB_DEV, USB\VID_045E&PID_930A + +"LibUsb-Win32 EuroBraille ESYS 12/40"=LIBUSB_DEV, USB\VID_C251&PID_1122 +"LibUsb-Win32 EuroBraille ESYS 12/40"=LIBUSB_DEV, USB\VID_C251&PID_1124 + +"LibUsb-Win32 FreedomScientific Focus"=LIBUSB_DEV, USB\VID_0F4E&PID_0100 +"LibUsb-Win32 FreedomScientific PAC Mate"=LIBUSB_DEV, USB\VID_0F4E&PID_0111 +"LibUsb-Win32 FreedomScientific Focus 2"=LIBUSB_DEV, USB\VID_0F4E&PID_0112 + +"LibUsb-Win32 HandyTech (GoHubs)"=LIBUSB_DEV, USB\VID_0921&PID_1200 +"LibUsb-Win32 HandyTech (FTDI)"=LIBUSB_DEV, USB\VID_0403&PID_6001 + +"LibUsb-Win32 Papenmeier"=LIBUSB_DEV, USB\VID_0403&PID_F208 + +"LibUsb-Win32 Pegasus"=LIBUSB_DEV, USB\VID_4242&PID_0001 + +"LibUsb-Win32 Seika"=LIBUSB_DEV, USB\VID_10C4&PID_EA60 + +"LibUsb-Win32 Voyager"=LIBUSB_DEV, USB\VID_0798&PID_0001 + +;-------------------------------------------------------------------------- +; Strings +;-------------------------------------------------------------------------- + +[Strings] +manufacturer = "BRLTTY" diff --git a/Hotplug/brltty.usermap b/Hotplug/brltty.usermap index 9afe0efded2c92c4143484dc430632b77c07167f..9284d6d1c5f09d45746970301c50b07124804296 100644 --- a/Hotplug/brltty.usermap +++ b/Hotplug/brltty.usermap @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # @@ -17,13 +18,34 @@ # Alva brltty-al 0x0003 0x06b0 0x0001 +brltty-al 0x0003 0x0798 0x0640 +brltty-al 0x0003 0x0798 0x0680 # Baum +brltty-bm 0x0003 0x0403 0xfe70 brltty-bm 0x0003 0x0403 0xfe71 brltty-bm 0x0003 0x0403 0xfe72 brltty-bm 0x0003 0x0403 0xfe73 brltty-bm 0x0003 0x0403 0xfe74 brltty-bm 0x0003 0x0403 0xfe75 +brltty-bm 0x0003 0x0403 0xfe76 +brltty-bm 0x0003 0x0403 0xfe77 +brltty-bm 0x0003 0x0904 0x2000 +brltty-bm 0x0003 0x0904 0x2001 +brltty-bm 0x0003 0x0904 0x2002 +brltty-bm 0x0003 0x0904 0x2007 +brltty-bm 0x0003 0x0904 0x2008 +brltty-bm 0x0003 0x0904 0x2009 +brltty-bm 0x0003 0x0904 0x2010 +brltty-bm 0x0003 0x0904 0x2011 +brltty-bm 0x0003 0x0904 0x2014 +brltty-bm 0x0003 0x0904 0x2015 +brltty-bm 0x0003 0x0904 0x2016 +brltty-bm 0x0003 0x0904 0x3000 + +# EuroBraille +brltty-eu 0x0003 0xc251 0x1122 +brltty-eu 0x0003 0xc251 0x1124 # FreedomScientific brltty-fs 0x0003 0x0f4e 0x0100 @@ -34,9 +56,18 @@ brltty-fs 0x0003 0x0f4e 0x0112 brltty-ht 0x0003 0x0921 0x1200 brltty-ht 0x0003 0x0403 0x6001 +# HIMS +brltty-hm 0x0003 0x045e 0x930a + # Papenmeier brltty-pm 0x0003 0x0403 0xf208 +# Pegasus +brltty-pg 0x0003 0x4242 0x0001 + +# Seika +brltty-sk 0x0003 0x10c4 0xea60 + # Voyager brltty-vo 0x0003 0x0798 0x0001 diff --git a/Hotplug/udev.rules b/Hotplug/udev.rules new file mode 100644 index 0000000000000000000000000000000000000000..aef611e9abd2de286b33194d951064e6953d9342 --- /dev/null +++ b/Hotplug/udev.rules @@ -0,0 +1,103 @@ +############################################################################### +# 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-2009 by The BRLTTY Developers. +# +# BRLTTY comes with ABSOLUTELY NO WARRANTY. +# +# This is free software, placed under the terms of the +# GNU General Public License, as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. +# +# Web Page: http://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# udev rules file for brltty + +SUBSYSTEM=="usb_device", GOTO="brltty_usb_begin" +SUBSYSTEM=="usb", KERNEL!="*:*", GOTO="brltty_usb_begin" +GOTO="brltty_end" + +LABEL="brltty_usb_begin" + +# Alva +ENV{PRODUCT}=="6b0/1/*", ENV{BRLTTY_DRIVER}="al", GOTO="brltty_usb_run" +ENV{PRODUCT}=="798/640/*", ENV{BRLTTY_DRIVER}="al", GOTO="brltty_usb_run" +ENV{PRODUCT}=="798/680/*", ENV{BRLTTY_DRIVER}="al", GOTO="brltty_usb_run" + +# Baum +ENV{PRODUCT}=="403/fe70/*", ENV{BRLTTY_DRIVER}="bm", GOTO="brltty_usb_run" +ENV{PRODUCT}=="403/fe71/*", ENV{BRLTTY_DRIVER}="bm", GOTO="brltty_usb_run" +ENV{PRODUCT}=="403/fe72/*", ENV{BRLTTY_DRIVER}="bm", GOTO="brltty_usb_run" +ENV{PRODUCT}=="403/fe73/*", ENV{BRLTTY_DRIVER}="bm", GOTO="brltty_usb_run" +ENV{PRODUCT}=="403/fe74/*", ENV{BRLTTY_DRIVER}="bm", GOTO="brltty_usb_run" +ENV{PRODUCT}=="403/fe75/*", ENV{BRLTTY_DRIVER}="bm", GOTO="brltty_usb_run" +ENV{PRODUCT}=="403/fe76/*", ENV{BRLTTY_DRIVER}="bm", GOTO="brltty_usb_run" +ENV{PRODUCT}=="403/fe77/*", ENV{BRLTTY_DRIVER}="bm", GOTO="brltty_usb_run" +ENV{PRODUCT}=="904/2000/*", ENV{BRLTTY_DRIVER}="bm", GOTO="brltty_usb_run" +ENV{PRODUCT}=="904/2001/*", ENV{BRLTTY_DRIVER}="bm", GOTO="brltty_usb_run" +ENV{PRODUCT}=="904/2002/*", ENV{BRLTTY_DRIVER}="bm", GOTO="brltty_usb_run" +ENV{PRODUCT}=="904/2007/*", ENV{BRLTTY_DRIVER}="bm", GOTO="brltty_usb_run" +ENV{PRODUCT}=="904/2008/*", ENV{BRLTTY_DRIVER}="bm", GOTO="brltty_usb_run" +ENV{PRODUCT}=="904/2009/*", ENV{BRLTTY_DRIVER}="bm", GOTO="brltty_usb_run" +ENV{PRODUCT}=="904/2010/*", ENV{BRLTTY_DRIVER}="bm", GOTO="brltty_usb_run" +ENV{PRODUCT}=="904/2011/*", ENV{BRLTTY_DRIVER}="bm", GOTO="brltty_usb_run" +ENV{PRODUCT}=="904/2014/*", ENV{BRLTTY_DRIVER}="bm", GOTO="brltty_usb_run" +ENV{PRODUCT}=="904/2015/*", ENV{BRLTTY_DRIVER}="bm", GOTO="brltty_usb_run" +ENV{PRODUCT}=="904/2016/*", ENV{BRLTTY_DRIVER}="bm", GOTO="brltty_usb_run" +ENV{PRODUCT}=="904/3000/*", ENV{BRLTTY_DRIVER}="bm", GOTO="brltty_usb_run" + +# EuroBraille +ENV{PRODUCT}=="c251/1122/*", ENV{BRLTTY_DRIVER}="eu", GOTO="brltty_usb_run" +ENV{PRODUCT}=="c251/1124/*", ENV{BRLTTY_DRIVER}="eu", GOTO="brltty_usb_run" + +# FreedomScientific +ENV{PRODUCT}=="f4e/100/*", ENV{BRLTTY_DRIVER}="fs", GOTO="brltty_usb_run" +ENV{PRODUCT}=="f4e/111/*", ENV{BRLTTY_DRIVER}="fs", GOTO="brltty_usb_run" +ENV{PRODUCT}=="f4e/112/*", ENV{BRLTTY_DRIVER}="fs", GOTO="brltty_usb_run" + +# HandyTech +ENV{PRODUCT}=="921/1200/*", ENV{BRLTTY_DRIVER}="ht", GOTO="brltty_usb_run" +ENV{PRODUCT}=="403/6001/*", ENV{BRLTTY_DRIVER}="ht", GOTO="brltty_usb_run" + +# HIMS +ENV{PRODUCT}=="45e/930a/*", ENV{BRLTTY_DRIVER}="hm", GOTO="brltty_usb_run" + +# Papenmeier +ENV{PRODUCT}=="403/f208/*", ENV{BRLTTY_DRIVER}="pm", GOTO="brltty_usb_run" + +# Pegasus +ENV{PRODUCT}=="4242/1/*", ENV{BRLTTY_DRIVER}="pg", GOTO="brltty_usb_run" + +# Seika +ENV{PRODUCT}=="10c4/ea60/*", ENV{BRLTTY_DRIVER}="sk", GOTO="brltty_usb_run" + +# Voyager +ENV{PRODUCT}=="798/1/*", ENV{BRLTTY_DRIVER}="vo", GOTO="brltty_usb_run" + +GOTO="brltty_end" + +LABEL="brltty_usb_run" +ENV{BRLTTY_DEVICE}="usb:$sysfs{serial}" +GOTO="brltty_run" + +LABEL="brltty_run" +ENV{BRLTTY_PID_FILE}="/var/run/brltty.$kernel.pid" +ACTION=="add", GOTO="brltty_add" +ACTION=="remove", GOTO="brltty_remove" +GOTO="brltty_end" + +LABEL="brltty_add" +SYMLINK+="brltty/$env{BRLTTY_DRIVER}-$env{BRLTTY_DEVICE}" +RUN+="/bin/brltty -E -P$env{BRLTTY_PID_FILE}" +GOTO="brltty_end" + +LABEL="brltty_remove" +RUN+="/bin/sh -c 'kill -TERM `cat $env{BRLTTY_PID_FILE}`'" +GOTO="brltty_end" + +LABEL="brltty_end" diff --git a/Hotplug/upstart.job b/Hotplug/upstart.job new file mode 100644 index 0000000000000000000000000000000000000000..5837b121f2d839a797b7ed01d486042d70b82554 --- /dev/null +++ b/Hotplug/upstart.job @@ -0,0 +1,16 @@ +# BRLTTY is a background process (daemon) providing access to the Linux/Unix +# console (when in text mode) for a blind person using a refreshable braille +# display. +# +# This service is started automatically by init so that braille output is +# available as soon as possible on system startup. +# +# This is an upstart job. Copy it into your distribution's upstart jobs +# directory as brltty. Possible locations for this directory include +# /etc/init/jobs.d/ and /etc/event.d/. Set permissions and ownership as per the +# other upstart jobs. + +start on startup +console output +respawn +exec /bin/brltty -n diff --git a/COPYING b/LICENSE-GPL similarity index 100% rename from COPYING rename to LICENSE-GPL diff --git a/COPYING-API b/LICENSE-LGPL similarity index 100% rename from COPYING-API rename to LICENSE-LGPL diff --git a/Makefile.in b/Makefile.in index ff2e13ecdd9235156aa6a351729119d067277210..b98dc721163e8ed41fffd34c42cd6369d6954203 100644 --- a/Makefile.in +++ b/Makefile.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/Patches/ttybrl.c b/Patches/ttybrl.c deleted file mode 100644 index 88c47bebbd11207fce8f2d6b80aa62df73375642..0000000000000000000000000000000000000000 --- a/Patches/ttybrl.c +++ /dev/null @@ -1,447 +0,0 @@ -/* ttybrl.c - * - * Copyright 2003, Mario Lang - * Copyright 2003, BAUM Retec A.G. - * Copyright 2003, Sun Microsystems Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* This file implements an interface to BRLTTY's BrlAPI - * - * BrlAPI implements generic display access. This means - * that every display supported by BRLTTY should work via this - * driver. - */ - -#include -#include -#include - -#include -#include -#include -#include - -#include -#include - -#include - -#include "braille.h" -#include "srintl.h" - -typedef struct -{ - gint x; - gint y; - guchar key_codes[512]; - guchar sensor_codes[32]; -} BRLTTYDeviceData; - -/* Globals */ -static GIOChannel *gioch = NULL; -static BRLDevCallback client_callback = NULL; -static BRLTTYDeviceData dd; - -/* Functions */ - - -/* Send array of dots of length count to brlapi. Argument blocking is ignored. */ -gint -brltty_brl_send_dots (guchar *dots, - gshort count, - gshort blocking) -{ - gint i, - len = dd.x * dd.y; - guchar sendbuff[256]; - - brlapi_writeArguments_t arguments = BRLAPI_WRITEARGUMENTS_INITIALIZER; - - if (count > len) - return 0; - - /* Gnopernicus's idea of how to arrange braille dots - * is slightly different from BRLTTY's representation. - */ - for (i = 0; i < count; i++) - { - guchar val = 0; - - if (dots[i] & 0x01 ) - val = val|BRL_DOT1; - if (dots[i] & 0x02 ) - val = val|BRL_DOT2; - if (dots[i] & 0x04 ) - val = val|BRL_DOT3; - if (dots[i] & 0x08 ) - val = val|BRL_DOT4; - if (dots[i] & 0x10 ) - val = val|BRL_DOT5; - if (dots[i] & 0x20 ) - val = val|BRL_DOT6; - if (dots[i] & 0x40 ) - val = val|BRL_DOT7; - if (dots[i] & 0x80 ) - val = val|BRL_DOT8; - - sendbuff[i] = val; - } - if (count < len) - { - memset (&sendbuff[count], 0, len-count); - } - - arguments.regionBegin = 1; - arguments.regionSize = len; - arguments.orMask = sendbuff; - if (brlapi_write(&arguments) == 0) - return 1; - else - { - brlapi_perror("brlapi_write"); - return 0; - } -} - -void -brltty_brl_close_device () -{ - brlapi_leaveTtyMode(); - brlapi_closeConnection(); -} - -static void -send_key (gint layer, - gint key) -{ - BRLEventData bed; - sprintf(&dd.key_codes[0], "L%02dK%02d", layer, key); - bed.key_codes = dd.key_codes; - client_callback(BRL_EVCODE_KEY_CODES, &bed); -} - -static gboolean -brltty_brl_glib_cb (GIOChannel *source, - GIOCondition condition, - gpointer data) -{ - brlapi_keyCode_t key; - - BRLEventCode bec; - BRLEventData bed; - - int result; - - while ((result = brlapi_readKey(0, &key)) == 1) - { - /* This code supports older versions of BrlAPI which don't support the - * autorepeat feature. It ensures that all of the autorepeat flags are - * cleared and makes this client behave as though the feature has been - * turned off. - */ - if (key & BRL_FLG_REPEAT_INITIAL) { - /* Key press for a command which is to begin repeating immediately. - * The corresponding key release will be a no-op so Just get rid of - * all the repeat flags. - */ - key &= ~(BRL_FLG_REPEAT_INITIAL | BRL_FLG_REPEAT_DELAY); - } else if (key & BRL_FLG_REPEAT_DELAY) { - /* Key press for a command which is to begin repeating aftger a - * delay. The corresponding key release will be the very same - * command with no repeat flags set so just ignore this key press. - */ - continue; - } - - /* This is an attempt to match as many BRLTTY commands - * to Gnopernicus equivalents as possible. - * Not all drivers will send all commands. - * If the user undefines the Gnopernicus key, the BRLTTY - * command will stop working. - */ - switch (key & BRL_MSK_CMD) - { - /*goto title*/ - case BRL_CMD_TOP_LEFT: - send_key(0, 7); - break; - - /*goto statusbar*/ - case BRL_CMD_BOT_LEFT: - send_key(0, 3); - break; - - /*goto menu*/ - case BRL_CMD_TOP: - send_key(0, 9); - break; - - /*goto toolbar*/ - case BRL_CMD_BOT: - send_key(0, 1); - break; - - /*goto focus*/ - case BRL_CMD_HOME: - case BRL_CMD_RETURN: - send_key(0, 12); - break; - - /*goto parent*/ - case BRL_CMD_PRPROMPT: - send_key(0, 8); - break; - - /*goto child*/ - case BRL_CMD_NXPROMPT: - send_key(0, 2); - break; - - /*goto first*/ - case BRL_CMD_PRPGRPH: - send_key(0, 15); - break; - - /*goto last*/ - case BRL_CMD_NXPGRPH: - send_key(0, 14); - break; - - /*goto previous*/ - case BRL_CMD_LNUP: - case BRL_CMD_PRDIFLN: - send_key(0, 4); - break; - - /*goto next*/ - case BRL_CMD_LNDN: - case BRL_CMD_NXDIFLN: - send_key(0, 6); - break; - - /*toggle FocusTracking/FlatReview mode*/ - case BRL_CMD_FREEZE: - send_key(0, 10); - break; - - /*display left*/ - case BRL_CMD_FWINLT: - case BRL_CMD_FWINLTSKIP: - send_key(9, 4); - break; - - /*display right*/ - case BRL_CMD_FWINRT: - case BRL_CMD_FWINRTSKIP: - send_key(9, 6); - break; - - /*char left*/ - case BRL_CMD_CHRLT: - send_key(9, 1); - break; - - /*char right*/ - case BRL_CMD_CHRRT: - send_key(9, 3); - break; - - /*decrease speech volume*/ - case BRL_CMD_SAY_SOFTER: - send_key(8, 1); - break; - - /*increase speech volume*/ - case BRL_CMD_SAY_LOUDER: - send_key(8, 3); - break; - - /*decrease speech rate*/ - case BRL_CMD_SAY_SLOWER: - send_key(8, 4); - break; - - /*increase speech rate*/ - case BRL_CMD_SAY_FASTER: - send_key(8, 6); - break; - - default: - { - gint blk = key & BRL_MSK_BLK; - gint arg = key & BRL_MSK_ARG; - - switch (blk) - { - case BRL_BLK_ROUTE: - sprintf(&dd.sensor_codes[0], "HMS%02d", arg); - bec = BRL_EVCODE_SENSOR; - bed.sensor.sensor_codes = dd.sensor_codes; - client_callback (bec, &bed); - break; - default: - //to be translated - fprintf(stderr, "BRLTTY command code not bound to Gnopernicus key code: 0X%04X\n", key); - break; - } - } - - case BRL_CMD_NOOP: - break; - } - } - - if (result == -1) - { - brlapi_perror("brlapi_readKey"); - return FALSE; - } - - return TRUE; -} - -static void -ignore_block (gint block) -{ - if (brlapi_ignoreKeyRange(block, block|BRL_MSK_ARG) == -1) { - brlapi_perror("brlapi_ignoreKeyRange"); - fprintf(stderr,"(block 0x%x)", block); - } -} - -gint -brltty_brl_open_device (gchar* device_name, - gshort port, - BRLDevCallback device_callback, - BRLDevice *device) -{ - gint fd; - brlapi_connectionSettings_t settings; - GdkWindow *root; - GdkAtom VTAtom, type; - guint VT = -1; - gint format, length; - unsigned char *buf; - - - if ((fd = brlapi_openConnection (NULL, &settings)) < 0) - { - brlapi_perror("Error opening brlapi connection"); //to be translated - fprintf(stderr,"Please check that\n\ - - %s exists and contains some data\n\ - - you have read permission on %s\n\ - - BRLTTY is running\n", settings.auth, settings.auth); //to be translated - return 0; - } - - if (brlapi_getDisplaySize (&dd.x, &dd.y) != 0) - { - brlapi_perror("Unable to get display size"); //to be translated - return 0; - } - - fprintf(stderr, "BrlAPI detected a %dx%d display\n", dd.x, dd.y); //to be translated - - device->cell_count = dd.x * dd.y; - device->display_count = 1; /* No status cells implemented yet */ - - device->displays[0].start_cell = 0; - device->displays[0].width = dd.x; - device->displays[0].type = BRL_DISP_MAIN; - - /* fill device functions for the upper level */ - device->send_dots = brltty_brl_send_dots; - device->close_device = brltty_brl_close_device; - - /* Setup glib polling for the socket fd of brlapi */ - gioch = g_io_channel_unix_new (fd); - g_io_add_watch (gioch, G_IO_IN | G_IO_PRI, brltty_brl_glib_cb, NULL); - - client_callback = device_callback; - - /* Determine the TTY where the X server is running. - - This only works with XFree86 starting from 4.3.99.903 and X.Org - starting from 6.8.0 - - If you have an older version, the tty will be kept to -1 so that the - brlapi_EnterTtyMode() function will look at the CONTROLVT environment variable. - So people having old versions should have something like this in their - .xsession, before launching gnopernicus: - - CONTROLVT="$(grep "using VT number" "/var/log/XFree86.$(echo "$DISPLAY" | sed -e "s/^.*::*\([0-9]*\).*$/\1/").log" | sed -e "s/^.*using VT number \([0-9]*\).*$/\1/")" - - for XFree86 - - CONTROLVT="$(grep "using VT number" "/var/log/Xorg.$(echo "$DISPLAY" | sed -e "s/^.*::*\([0-9]*\).*$/\1/").log" | sed -e "s/^.*using VT number \([0-9]*\).*$/\1/")" - - for X.Org - - */ - - root = gdk_get_default_root_window(); - if (!root) - goto enterTtyMode; - - VTAtom = gdk_atom_intern("XFree86_VT", TRUE); - if (VTAtom == None) - goto enterTtyMode; - - if (!(gdk_property_get(root, VTAtom, AnyPropertyType, 0, 1, FALSE, - &type, &format, &length, &buf))) - { - fprintf(stderr, "no XFree86_VT property\n"); //to be translated - goto enterTtyMode; - } - - if (length<1) - { - fprintf(stderr, "no item in XFree86_VT property\n"); //to be translated - goto enterTtyMode; - } - - switch ((guint)type) - { - case XA_CARDINAL: - case XA_INTEGER: - case XA_WINDOW: - switch (format) - { - case 8: VT = (*(guint8 *)buf); break; - case 16: VT = (*(guint16 *)buf); break; - case 32: VT = (*(guint32 *)buf); break; - default: fprintf(stderr, "Bad format for VT number\n"); break; //to be translated - } - break; - default: - fprintf(stderr, "Bad type for VT number\n"); //to be translated - } - -enterTtyMode: - if (brlapi_enterTtyMode (VT, NULL) == -1) - { - brlapi_perror("Unable to get Tty"); //to be translated - return 0; - } - - ignore_block(BRL_BLK_PASSCHAR); - ignore_block(BRL_BLK_PASSDOTS); - ignore_block(BRL_BLK_PASSKEY); - - return 1; -} diff --git a/Programs/Makefile.in b/Programs/Makefile.in index b4b4e08c2d8f948733197bf20fbd84471da064c1..4260a93e577c62b971e022983d6935ef81b4991d 100644 --- a/Programs/Makefile.in +++ b/Programs/Makefile.in @@ -2,21 +2,23 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # # This software is maintained by Dave Mielke . ############################################################################### -all: all-brltty all-brltest all-scrtest tbltest$X ctbtest$X tunetest$X $(ALL_API) -all-brltty: brltty$X $(BRAILLE_DRIVERS) $(BRAILLE_HELP) $(SPEECH_DRIVERS) $(SCREEN_DRIVERS) +all: all-brltty $(ALL_XBRLAPI) $(ALL_API_BINDINGS) +everything: all-brltty all-brltest all-scrtest all-spktest$X ttbtest$X ctbtest$X tunetest$X $(ALL_API) +all-brltty: brltty$X all-braille $(SPEECH_DRIVERS) $(SCREEN_DRIVERS) all-brltest: brltest$X $(BRAILLE_DRIVERS) all-spktest: spktest$X $(SPEECH_DRIVERS) all-scrtest: scrtest$X $(SCREEN_DRIVERS) @@ -33,9 +35,15 @@ program.$O: options.$O: $(CC) $(CFLAGS) -c $(SRC_DIR)/options.c +datafile.$O: + $(CC) $(CFLAGS) -c $(SRC_DIR)/datafile.c + +dataarea.$O: + $(CC) $(CFLAGS) -c $(SRC_DIR)/dataarea.c + ############################################################################### -BASE_OBJECTS = misc.$O io_misc.$O queue.$O async.$O keyboard.$O $(SYSTEM_OBJECT) +BASE_OBJECTS = misc.$O io_misc.$O queue.$O async.$O keycodes.$O keyboard.$O $(SYSTEM_OBJECT) misc.$O: $(CC) $(CFLAGS) -c $(SRC_DIR)/misc.c @@ -49,9 +57,18 @@ queue.$O: async.$O: $(CC) $(CFLAGS) -c $(SRC_DIR)/async.c +keycodes.$O: + $(CC) $(CFLAGS) -c $(SRC_DIR)/keycodes.c + keyboard.$O: $(CC) $(CFLAGS) -c $(SRC_DIR)/keyboard.c +ktb_compile.$O: + $(CC) $(CFLAGS) -c $(SRC_DIR)/ktb_compile.c + +ktb_translate.$O: + $(CC) $(CFLAGS) -c $(SRC_DIR)/ktb_translate.c + ############################################################################### sys_skeleton.$O: @@ -98,7 +115,7 @@ sys_msdos.$O: ############################################################################### -HOST_OBJECTS = host_program.$O host_options.$O host_misc.$O host_io_misc.$O host_queue.$O host_async.$O host_keyboard.$O host_$(SYSTEM_OBJECT) +HOST_OBJECTS = host_program.$O host_options.$O host_misc.$O host_io_misc.$O host_queue.$O host_async.$O host_keycodes.$O host_keyboard.$O host_$(SYSTEM_OBJECT) host_%.$O: %.$O $(HOSTCC) $(HOSTCFLAGS) -o $@ -c $(SRC_DIR)/$*.c @@ -113,22 +130,34 @@ charset.$O: ############################################################################### -tbl.$O: - $(CC) $(CFLAGS) -c $(SRC_DIR)/tbl.c +ttb_compile.$O: + $(CC) $(CFLAGS) -c $(SRC_DIR)/ttb_compile.c + +ttb_native.$O: + $(CC) $(CFLAGS) -c $(SRC_DIR)/ttb_native.c + +ttb_gnome.$O: + $(CC) $(CFLAGS) -c $(SRC_DIR)/ttb_gnome.c -tbl_native.$O: - $(CC) $(CFLAGS) -c $(SRC_DIR)/tbl_native.c +ttb_louis.$O: + $(CC) $(CFLAGS) -c $(SRC_DIR)/ttb_louis.c -tbl_gnome.$O: - $(CC) $(CFLAGS) -c $(SRC_DIR)/tbl_gnome.c +ttb_translate.$O: + $(CC) $(CFLAGS) -c $(SRC_DIR)/ttb_translate.c + +atb_compile.$O: + $(CC) $(CFLAGS) -c $(SRC_DIR)/atb_compile.c + +atb_translate.$O: + $(CC) $(CFLAGS) -c $(SRC_DIR)/atb_translate.c ############################################################################### ctb_compile.$O: - $(CC) $(CFLAGS) -c $(SRC_DIR)/ctb_compile.c + $(CC) $(CFLAGS) $(ICU_INCLUDES) -c $(SRC_DIR)/ctb_compile.c ctb_translate.$O: - $(CC) $(CFLAGS) -c $(SRC_DIR)/ctb_translate.c + $(CC) $(CFLAGS) $(ICU_INCLUDES) -c $(SRC_DIR)/ctb_translate.c ############################################################################### @@ -152,8 +181,8 @@ scr_main.$O: scr_real.$O: scr.auto.h $(CC) $(CFLAGS) -c $(SRC_DIR)/scr_real.c -route.$O: - $(CC) $(CFLAGS) -c $(SRC_DIR)/route.c +routing.$O: + $(CC) $(CFLAGS) -c $(SRC_DIR)/routing.c ############################################################################### @@ -243,13 +272,13 @@ uninstall-api-bindings: ############################################################################### -BRLTTY_OBJECTS = brltty.$O $(PROGRAM_OBJECTS) config.$O $(BASE_OBJECTS) mount.$O auth.$O cut.$O cmd.$O scancodes.$O lock.$O charset.$O $(TBL_OBJECTS) $(CTB_OBJECTS) touch.$O serial.$O $(USB_OBJECTS) $(BLUETOOTH_OBJECTS) drivers.$O $(SCREEN_OBJECTS) $(SCREEN_DRIVER_OBJECTS) route.$O brl.$O $(BRAILLE_DRIVER_OBJECTS) $(SPEECH_OBJECT) $(SPEECH_DRIVER_OBJECTS) $(TUNE_OBJECTS) $(API_OBJECTS) +BRLTTY_OBJECTS = brltty.$O $(PROGRAM_OBJECTS) config.$O $(BASE_OBJECTS) datafile.$O dataarea.$O mount.$O cut.$O cmd.$O scancodes.$O lock.$O charset.$O ttb_compile.$O ttb_native.$O ttb_translate.$O atb_compile.$O atb_translate.$O $(CTB_OBJECTS) ktb_compile.$O ktb_translate.$O touch.$O serial.$O $(USB_OBJECTS) $(BLUETOOTH_OBJECTS) drivers.$O $(SCREEN_OBJECTS) $(SCREEN_DRIVER_OBJECTS) routing.$O brl.$O $(BRAILLE_DRIVER_OBJECTS) $(SPEECH_OBJECT) $(SPEECH_DRIVER_OBJECTS) $(TUNE_OBJECTS) $(API_OBJECTS) brltty$X: $(BRLTTY_OBJECTS) - $(CC) $(LDFLAGS) -o $@ $(BRLTTY_OBJECTS) $(BRAILLE_DRIVER_LIBRARIES) $(SPEECH_DRIVER_LIBRARIES) $(SCREEN_DRIVER_LIBRARIES) $(LDLIBS) + $(CC) $(LDFLAGS) -o $@ $(BRLTTY_OBJECTS) $(BRAILLE_DRIVER_LIBRARIES) $(SPEECH_DRIVER_LIBRARIES) $(SCREEN_DRIVER_LIBRARIES) $(ICU_LIBRARIES) $(LDLIBS) brltty.$O: - $(CC) $(CFLAGS) -c $(SRC_DIR)/brltty.c + $(CC) $(CFLAGS) $(ICU_INCLUDES) -c $(SRC_DIR)/brltty.c config.$O: $(CC) $(CFLAGS) -c $(SRC_DIR)/config.c @@ -329,7 +358,7 @@ bluetooth_linux.$O: ############################################################################### -BRLTEST_OBJECTS = brltest.$O $(PROGRAM_OBJECTS) $(BASE_OBJECTS) mount.$O tbl.$O tbl_native.$O cmd.$O charset.$O lock.$O drivers.$O brl.$O $(BRAILLE_DRIVER_OBJECTS) touch.$O serial.$O $(USB_OBJECTS) $(BLUETOOTH_OBJECTS) +BRLTEST_OBJECTS = brltest.$O $(PROGRAM_OBJECTS) $(BASE_OBJECTS) mount.$O ttb_translate.$O cmd.$O charset.$O lock.$O drivers.$O brl.$O $(BRAILLE_DRIVER_OBJECTS) touch.$O serial.$O $(USB_OBJECTS) $(BLUETOOTH_OBJECTS) brltest$X: $(BRLTEST_OBJECTS) $(CC) $(LDFLAGS) -o $@ $(BRLTEST_OBJECTS) $(BRAILLE_DRIVER_LIBRARIES) $(LDLIBS) @@ -349,7 +378,7 @@ spktest.$O: ############################################################################### -SCRTEST_OBJECTS = scrtest.$O $(PROGRAM_OBJECTS) $(BASE_OBJECTS) drivers.$O $(SCREEN_OBJECTS) $(SCREEN_DRIVER_OBJECTS) route.$O charset.$O lock.$O +SCRTEST_OBJECTS = scrtest.$O $(PROGRAM_OBJECTS) $(BASE_OBJECTS) drivers.$O $(SCREEN_OBJECTS) $(SCREEN_DRIVER_OBJECTS) routing.$O charset.$O lock.$O scancodes.$O scrtest$X: $(SCRTEST_OBJECTS) $(CC) $(LDFLAGS) -o $@ $(SCRTEST_OBJECTS) $(SCREEN_DRIVER_LIBRARIES) $(LDLIBS) @@ -359,20 +388,20 @@ scrtest.$O: ############################################################################### -TBLTEST_OBJECTS = tbltest.$O $(PROGRAM_OBJECTS) $(BASE_OBJECTS) lock.$O charset.$O tbl.$O tbl_native.$O tbl_gnome.$O +TTBTEST_OBJECTS = ttbtest.$O $(PROGRAM_OBJECTS) $(BASE_OBJECTS) lock.$O charset.$O datafile.$O dataarea.$O ttb_compile.$O ttb_native.$O ttb_gnome.$O ttb_louis.$O -tbltest$X: $(TBLTEST_OBJECTS) api - $(CC) $(LDFLAGS) -o $@ $(TBLTEST_OBJECTS) -L. -lbrlapi $(CLIBS) $(LDLIBS) +ttbtest$X: $(TTBTEST_OBJECTS) $(BUILD_API) + $(CC) $(LDFLAGS) -o $@ $(TTBTEST_OBJECTS) $(API_REF) $(CLIBS) $(ICU_LIBRARIES) $(LDLIBS) -tbltest.$O: - $(CC) $(CFLAGS) -c $(SRC_DIR)/tbltest.c +ttbtest.$O: + $(CC) $(CFLAGS) $(ICU_INCLUDES) -c $(SRC_DIR)/ttbtest.c ############################################################################### -CTBTEST_OBJECTS = ctbtest.$O $(PROGRAM_OBJECTS) $(BASE_OBJECTS) ctb_compile.$O ctb_translate.$O lock.$O charset.$O tbl.$O tbl_native.$O +CTBTEST_OBJECTS = ctbtest.$O $(PROGRAM_OBJECTS) $(BASE_OBJECTS) datafile.$O dataarea.$O ttb_compile.$O ttb_native.$O ttb_translate.$O ctb_compile.$O ctb_translate.$O lock.$O charset.$O ctbtest$X: $(CTBTEST_OBJECTS) - $(CC) $(LDFLAGS) -o $@ $(CTBTEST_OBJECTS) $(LDLIBS) + $(CC) $(LDFLAGS) -o $@ $(CTBTEST_OBJECTS) $(ICU_LIBRARIES) $(LDLIBS) ctbtest.$O: $(CC) $(CFLAGS) -c $(SRC_DIR)/ctbtest.c @@ -389,24 +418,24 @@ tunetest.$O: ############################################################################### -APITEST_OBJECTS = apitest.$O $(PROGRAM_OBJECTS) $(BASE_OBJECTS) cmd.$O charset.$O lock.$O +APITEST_OBJECTS = apitest.$O $(PROGRAM_OBJECTS) $(BASE_OBJECTS) cmd.$O ttb_translate.$O charset.$O lock.$O apitest$X: $(APITEST_OBJECTS) api - $(CC) $(LDFLAGS) -o $@ $(APITEST_OBJECTS) -L$(BLD_DIR) -lbrlapi $(LDLIBS) + $(CC) $(LDFLAGS) -o $@ $(APITEST_OBJECTS) $(API_LIBS) $(LDLIBS) apitest.$O: $(CC) $(CFLAGS) -c $(SRC_DIR)/apitest.c ############################################################################### -braille-drivers: txt2hlp +braille-drivers: txt2hlp$X for driver in $(BRAILLE_EXTERNAL_DRIVER_NAMES); \ - do (cd $(BLD_TOP)$(BRL_DIR)/$$driver && $(MAKE) braille-driver braille-help) || exit 1; \ + do (cd $(BLD_TOP)$(BRL_DIR)/$$driver && $(MAKE) braille-driver braille-all) || exit 1; \ done -braille-help: txt2hlp - for driver in $(BRAILLE_INTERNAL_DRIVER_NAMES); \ - do (cd $(BLD_TOP)$(BRL_DIR)/$$driver && $(MAKE) braille-help) || exit 1; \ +all-braille: txt2hlp$X $(BRAILLE_DRIVERS) + for driver in $(BRAILLE_DRIVER_NAMES); \ + do (cd $(BLD_TOP)$(BRL_DIR)/$$driver && $(MAKE) braille-all) || exit 1; \ done ############################################################################### @@ -428,7 +457,7 @@ screen-drivers: text.auto.h: $(TEXT_TABLE) tbl2hex$X ./tbl2hex$X -- $(TEXT_TABLE) >$@ -attrib.auto.h: $(ATTRIBUTES_TABLE) tbl2hex$X +attr.auto.h: $(ATTRIBUTES_TABLE) tbl2hex$X ./tbl2hex$X -- $(ATTRIBUTES_TABLE) >$@ cmds.auto.h: $(SRC_DIR)/brldefs.h $(SRC_DIR)/brldefs.awk $(SRC_DIR)/cmds.awk @@ -447,7 +476,7 @@ scr.auto.h: $(SRC_DIR)/mkdrvtab TXT2HLP_OBJECTS = txt2hlp.$O $(HOST_OBJECTS) -txt2hlp: $(TXT2HLP_OBJECTS) +txt2hlp$X: $(TXT2HLP_OBJECTS) $(HOSTCC) $(HOSTLDFLAGS) -o $@ $(TXT2HLP_OBJECTS) $(LDLIBS) txt2hlp.$O: @@ -455,10 +484,10 @@ txt2hlp.$O: ############################################################################### -TBL2HEX_OBJECTS = tbl2hex.$O $(HOST_OBJECTS) host_lock.$O host_charset.$O host_tbl.$O host_tbl_native.$O +TBL2HEX_OBJECTS = tbl2hex.$O $(HOST_OBJECTS) host_lock.$O host_charset.$O host_datafile.$O host_dataarea.$O host_ttb_compile.$O host_ttb_native.$O host_atb_compile.$O host_ctb_compile.$O tbl2hex$X: $(TBL2HEX_OBJECTS) - $(HOSTCC) $(HOSTLDFLAGS) -o $@ $(TBL2HEX_OBJECTS) $(LDLIBS) + $(HOSTCC) $(HOSTLDFLAGS) -o $@ $(TBL2HEX_OBJECTS) $(ICU_LIBRARIES) $(LDLIBS) tbl2hex.$O: $(HOSTCC) $(HOSTCFLAGS) -c $(SRC_DIR)/tbl2hex.c @@ -468,28 +497,28 @@ tbl2hex.$O: XBRLAPI_OBJECTS = xbrlapi.$O $(PROGRAM_OBJECTS) $(BASE_OBJECTS) xbrlapi$X: $(XBRLAPI_OBJECTS) api - $(CC) $(LDFLAGS) -o $@ $(XBRLAPI_OBJECTS) -L. -lbrlapi $(XLIBS) $(LDLIBS) + $(CC) $(LDFLAGS) -o $@ $(XBRLAPI_OBJECTS) $(API_LIBS) $(XKB_LIBS) $(X_LIBS) $(LDLIBS) xbrlapi.$O: $(CC) $(CFLAGS) $(X_CFLAGS) -c $(SRC_DIR)/xbrlapi.c ############################################################################### -check-braille: brltty braille-drivers +check-braille: brltty$X braille-drivers for code in $(BRAILLE_DRIVER_CODES); \ do ls -l $(BLD_TOP)$(DRV_DIR)/libbrlttyb$$code.$(MOD_EXT) || exit 10; \ - ./brltty -v -q -N -e -f /dev/null -b $$code -s no -L "$(BLD_TOP)$(DRV_DIR)" -D "$(BLD_TOP)$(DAT_DIR)" -T "$(BLD_TOP)$(TBL_DIR)" -C "$(BLD_TOP)$(CTB_DIR)" 2>&1 || exit 11; \ + ./brltty -v -q -N -e -f /dev/null -b $$code -s no -L "$(BLD_TOP)$(DRV_DIR)" -D "$(BLD_TOP)$(DAT_DIR)" -T "$(BLD_TOP)$(TBL_DIR)" 2>&1 || exit 11; \ done check-speech: brltty speech-drivers for code in $(SPEECH_DRIVER_CODES); \ do ls -l $(BLD_TOP)$(DRV_DIR)/libbrlttys$$code.$(MOD_EXT) || exit 10; \ - ./brltty -v -q -N -e -f /dev/null -b no -s $$code -L "$(BLD_TOP)$(DRV_DIR)" -D "$(BLD_TOP)$(DAT_DIR)" -T "$(BLD_TOP)$(TBL_DIR)" -C "$(BLD_TOP)$(CTB_DIR)" 2>&1 || exit 11; \ + ./brltty -v -q -N -e -f /dev/null -b no -s $$code -L "$(BLD_TOP)$(DRV_DIR)" -D "$(BLD_TOP)$(DAT_DIR)" -T "$(BLD_TOP)$(TBL_DIR)" 2>&1 || exit 11; \ done ############################################################################### -install:: install-programs install-help install-tables $(INSTALL_DRIVERS) install-manpages $(INSTALL_API) +install:: install-programs install-data-files install-tables $(INSTALL_DRIVERS) install-manpages $(INSTALL_API) install-programs: brltty$X install-program-directory install-writable-directory $(INSTALL_PROGRAM) brltty$X $(INSTALL_PROGRAM_DIRECTORY) @@ -499,20 +528,22 @@ install-programs: brltty$X install-program-directory install-writable-directory install-xbrlapi: xbrlapi$X install-program-directory $(INSTALL_PROGRAM) xbrlapi$X $(INSTALL_PROGRAM_DIRECTORY) -install-help: $(BRAILLE_DRIVERS) $(BRAILLE_HELP) install-data-directory +install-data-files: all-braille install-data-directory $(INSTALL_DATA) $(BLD_TOP)$(DAT_DIR)/* $(INSTALL_DATA_DIRECTORY) -install-tables: $(INSTALL_TEXT_TABLES) $(INSTALL_ATTRIBUTES_TABLES) $(INSTALL_CONTRACTION_TABLES) +install-tables: $(INSTALL_TEXT_TABLES) $(INSTALL_ATTRIBUTES_TABLES) $(INSTALL_CONTRACTION_TABLES) install-key-tables install-text-tables: install-data-directory - $(INSTALL_DATA) $(SRC_TOP)$(TBL_DIR)/text.*.tbl $(INSTALL_DATA_DIRECTORY) + $(INSTALL_DATA) $(SRC_TOP)$(TBL_DIR)/*.tt[bi] $(INSTALL_DATA_DIRECTORY) install-attributes-tables: install-data-directory - $(INSTALL_DATA) $(SRC_TOP)$(TBL_DIR)/attr*.tbl $(INSTALL_DATA_DIRECTORY) + $(INSTALL_DATA) $(SRC_TOP)$(TBL_DIR)/*.at[bi] $(INSTALL_DATA_DIRECTORY) install-contraction-tables: install-data-directory - $(INSTALL_DATA) $(SRC_TOP)$(CTB_DIR)/*.ctb $(INSTALL_DATA_DIRECTORY) - $(INSTALL_DATA) $(SRC_TOP)$(CTB_DIR)/*.cti $(INSTALL_DATA_DIRECTORY) + $(INSTALL_DATA) $(SRC_TOP)$(TBL_DIR)/*.ct[bi] $(INSTALL_DATA_DIRECTORY) + +install-key-tables: install-data-directory + $(INSTALL_DATA) $(SRC_TOP)$(TBL_DIR)/*.kt[bi] $(INSTALL_DATA_DIRECTORY) install-drivers: $(BRAILLE_DRIVERS) $(SPEECH_DRIVERS) $(SCREEN_DRIVERS) install-library-directory $(INSTALL_PROGRAM) $(BLD_TOP)$(DRV_DIR)/*.$(MOD_EXT) $(INSTALL_LIBRARY_DIRECTORY) @@ -522,7 +553,7 @@ install-manpages: install-man1-directory install-api: $(INSTALL_API_LIBRARIES) install-api-headers install-api-manpages install-api-key $(INSTALL_XBRLAPI) $(INSTALL_API_BINDINGS) -install-api-libraries: $(API_LIB) $(API_ARC) install-apilib-directory +install-api-libraries: $(API_LIB) $(API_ARC) install-apilib-directory install-apisoc-directory $(INSTALL_PROGRAM) $(API_LIB) $(INSTALL_APILIB_DIRECTORY)/$(API_LIB).$(API_RELEASE) $(SYMLINK) -f $(API_LIB).$(API_RELEASE) $(INSTALL_APILIB_DIRECTORY)/$(API_LIB) $(SYMLINK) -f $(API_LIB).$(API_RELEASE) $(INSTALL_APILIB_DIRECTORY)/$(API_LIB).$(API_VERSION) @@ -565,19 +596,24 @@ uninstall-programs: -rm -f $(INSTALL_PROGRAM_DIRECTORY)/xbrlapi$X uninstall-data: - -rm -f $(INSTALL_DATA_DIRECTORY)/*.tbl - -rm -f $(INSTALL_DATA_DIRECTORY)/*.ctb - -rm -f $(INSTALL_DATA_DIRECTORY)/*.cti + -rm -f $(INSTALL_DATA_DIRECTORY)/*.[tack]t[bi] -rm -f $(INSTALL_DATA_DIRECTORY)/brltty* + -[ ! -d $(INSTALL_WRITABLE_DIRECTORY) ] || rmdir $(INSTALL_WRITABLE_DIRECTORY) -[ ! -d $(INSTALL_DATA_DIRECTORY) ] || rmdir $(INSTALL_DATA_DIRECTORY) -uninstall-libraries: +uninstall-libraries: $(UNINSTALL_API_LIBRARIES) -rm -f $(INSTALL_LIBRARY_DIRECTORY)/$(LIB_NAME)* -[ ! -d $(INSTALL_LIBRARY_DIRECTORY) ] || rmdir $(INSTALL_LIBRARY_DIRECTORY) + +uninstall-api-libraries: -rm -f $(INSTALL_APILIB_DIRECTORY)/$(API_LIB) -rm -f $(INSTALL_APILIB_DIRECTORY)/$(API_LIB).$(API_VERSION) -rm -f $(INSTALL_APILIB_DIRECTORY)/$(API_LIB).$(API_RELEASE) $(CONFLIBDIR) $(INSTALL_APILIB_DIRECTORY) + -rm -f $(INSTALL_APILIB_DIRECTORY)/$(API_ARC) + -rm -f -r $(API_SOCKET_DIRECTORY) + +uninstall-api-libraries-windows: -rm -f $(INSTALL_APILIB_DIRECTORY)/$(API_ARC) -rm -f $(INSTALL_APILIB_DIRECTORY)/$(API_IMPLIB) -rm -f $(INSTALL_APILIB_DIRECTORY)/$(API_IMPLIB_VERSIONED) diff --git a/Programs/adlib.c b/Programs/adlib.c index e1bf82a9a9eb759d4b33b70e0233afdaf3dc3d20..8cb097838fea5f647068a904c2fb19fdb64d7e7f 100644 --- a/Programs/adlib.c +++ b/Programs/adlib.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/adlib.h b/Programs/adlib.h index b3234b5f4ee5578c43150e4f2747b088d8ccd6d8..9a3870d1a9682570a9d27922bd632fb3094fa913 100644 --- a/Programs/adlib.h +++ b/Programs/adlib.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/api.h b/Programs/api.h index ded99982f890f1e3922b382787d656380a5fb99e..ac7d0ebec019fd4d7aab772187e67835e9d5551d 100644 --- a/Programs/api.h +++ b/Programs/api.h @@ -2,15 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * diff --git a/Programs/apitest.c b/Programs/apitest.c index 83f13e305e71a68ff5dc7c672a4a88702f860f7c..a5a491e1f017d20b8a7689b80f01522717c08ea6 100644 --- a/Programs/apitest.c +++ b/Programs/apitest.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/async.c b/Programs/async.c index ee92438e74efacd27959a4314ce5dd84b4a82c7d..dab5e3f422ccddc8f3a4c03cd7b2dbd798c27ace 100644 --- a/Programs/async.c +++ b/Programs/async.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -438,9 +439,13 @@ invokeInputCallback (OperationEntry *operation) { if (operation->error) return 0; if (extension->direction.input.end) return 0; - if (count) + operation->finished = 0; + if (count) { memmove(extension->buffer, &extension->buffer[count], extension->length -= count); + if (extension->length > 0) operation->finished = 1; + } + return 1; } @@ -448,7 +453,10 @@ static int invokeOutputCallback (OperationEntry *operation) { TransferExtension *extension = operation->extension; - if (!operation->error && (extension->length < extension->size)) return 1; + if (!operation->error && (extension->length < extension->size)) { + operation->finished = 0; + return 1; + } if (extension->direction.output.callback) { AsyncOutputResult result; @@ -873,7 +881,6 @@ asyncWait (int duration) { if (!operation->finished) finishOperation(operation); if (function->methods->invokeCallback(operation)) { - operation->finished = 0; operation->error = 0; } else { deleteElement(operationElement); @@ -881,7 +888,7 @@ asyncWait (int duration) { if ((operationElement = getQueueHead(function->operations))) { operation = getElementItem(operationElement); - startOperation(operation); + if (!operation->finished) startOperation(operation); requeueElement(functionElement); } else { deleteElement(functionElement); diff --git a/Programs/async.h b/Programs/async.h index a88ee50f46455f9758a440bce07b8730452563c3..af53ffe9e2b69c074b2be8796336b5c6e4a45412 100644 --- a/Programs/async.h +++ b/Programs/async.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/atb.h b/Programs/atb.h new file mode 100644 index 0000000000000000000000000000000000000000..7acb60aa7b38710f0ddd15a6647b7bbd1412747e --- /dev/null +++ b/Programs/atb.h @@ -0,0 +1,41 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#ifndef BRLTTY_INCLUDED_ATB +#define BRLTTY_INCLUDED_ATB + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +typedef struct AttributesTableStruct AttributesTable; + +extern AttributesTable *attributesTable; + +extern AttributesTable *compileAttributesTable (const char *name); +extern void destroyAttributesTable (AttributesTable *table); + +extern char *ensureAttributesTableExtension (const char *path); + +extern unsigned char convertAttributesToDots (AttributesTable *table, unsigned char attributes); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* BRLTTY_INCLUDED_ATB */ diff --git a/Programs/atb_compile.c b/Programs/atb_compile.c new file mode 100644 index 0000000000000000000000000000000000000000..ad552e9d517ac2f5cf43fa38b7425accca9574d2 --- /dev/null +++ b/Programs/atb_compile.c @@ -0,0 +1,204 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#include "prologue.h" + +#include + +#include "misc.h" +#include "datafile.h" +#include "dataarea.h" +#include "atb.h" +#include "atb_internal.h" + +typedef struct { + unsigned char attribute; + unsigned char operation; +} DotData; + +typedef struct { + DataArea *area; + DotData dots[8]; +} AttributesTableData; + +static inline AttributesTableHeader * +getAttributesTableHeader (AttributesTableData *atd) { + return getDataItem(atd->area, 0); +} + +static int +makeAttributesToDots (AttributesTableData *atd) { + unsigned char *table = getAttributesTableHeader(atd)->attributesToDots; + unsigned char bits = 0; + + do { + unsigned char *cell = &table[bits]; + unsigned char dotIndex; + + *cell = 0; + for (dotIndex=0; dotIndexdots[dotIndex]; + int isSet = bits & dot->attribute; + if (!isSet == !dot->operation) *cell |= brlDotBits[dotIndex]; + } + } while ((bits += 1)); + + return 1; +} + +static int +parseAttributeOperand (DataFile *file, unsigned char *bit, unsigned char *operation, const wchar_t *characters, int length) { + if (length > 1) { + static const wchar_t operators[] = {'~', '='}; + const wchar_t *operator = wmemchr(operators, characters[0], ARRAY_COUNT(operators)); + + if (operator) { + typedef struct { + const wchar_t *name; + unsigned char bit; + } AttributeEntry; + + static const AttributeEntry attributeTable[] = { + {WS_C("fg-blue") , 0X01}, + {WS_C("fg-green") , 0X02}, + {WS_C("fg-red") , 0X04}, + {WS_C("fg-bright"), 0X08}, + {WS_C("bg-blue") , 0X10}, + {WS_C("bg-green") , 0X20}, + {WS_C("bg-red") , 0X40}, + {WS_C("blink") , 0X80}, + + {WS_C("bit0"), 0X01}, + {WS_C("bit1"), 0X02}, + {WS_C("bit2"), 0X04}, + {WS_C("bit3"), 0X08}, + {WS_C("bit4"), 0X10}, + {WS_C("bit5"), 0X20}, + {WS_C("bit6"), 0X40}, + {WS_C("bit7"), 0X80}, + + {WS_C("bit01"), 0X01}, + {WS_C("bit02"), 0X02}, + {WS_C("bit04"), 0X04}, + {WS_C("bit08"), 0X08}, + {WS_C("bit10"), 0X10}, + {WS_C("bit20"), 0X20}, + {WS_C("bit40"), 0X40}, + {WS_C("bit80"), 0X80}, + + {NULL, 0X00} + }; + + const AttributeEntry *attribute = attributeTable; + + characters += 1, length -= 1; + + while (attribute->name) { + if ((length == wcslen(attribute->name)) && + (wmemcmp(characters, attribute->name, length) == 0)) { + *bit = attribute->bit; + *operation = operator - operators; + return 1; + } + + attribute += 1; + } + + reportDataError(file, "invalid attribute name: %.*" PRIws, length, characters); + } else { + reportDataError(file, "invalid attribute operator: %.1" PRIws, &characters[0]); + } + } + + return 0; +} + +static int +getAttributeOperand (DataFile *file, unsigned char *bit, unsigned char *operation) { + DataOperand attribute; + + if (getDataOperand(file, &attribute, "attribute")) + if (parseAttributeOperand(file, bit, operation, attribute.characters, attribute.length)) + return 1; + + return 0; +} + +static int +processDotOperands (DataFile *file, void *data) { + AttributesTableData *atd = data; + int dotIndex; + + if (getDotOperand(file, &dotIndex)) { + DotData *dot = &atd->dots[dotIndex]; + + if (getAttributeOperand(file, &dot->attribute, &dot->operation)) return 1; + } + + return 1; +} + +static int +processAttributesTableLine (DataFile *file, void *data) { + static const DataProperty properties[] = { + {.name=WS_C("dot"), .processor=processDotOperands}, + {.name=WS_C("include"), .processor=processIncludeOperands}, + {.name=NULL, .processor=NULL} + }; + + return processPropertyOperand(file, properties, "attributes table directive", data); +} + +AttributesTable * +compileAttributesTable (const char *name) { + AttributesTable *table = NULL; + AttributesTableData atd; + + memset(&atd, 0, sizeof(atd)); + + if ((atd.area = newDataArea())) { + if (allocateDataItem(atd.area, NULL, sizeof(AttributesTableHeader), __alignof__(AttributesTableHeader))) { + if (processDataFile(name, processAttributesTableLine, &atd)) { + if (makeAttributesToDots(&atd)) { + if ((table = malloc(sizeof(*table)))) { + table->header.fields = getAttributesTableHeader(&atd); + table->size = getDataSize(atd.area); + resetDataArea(atd.area); + } + } + } + } + + destroyDataArea(atd.area); + } + + return table; +} + +void +destroyAttributesTable (AttributesTable *table) { + if (table->size) { + free(table->header.fields); + free(table); + } +} + +char * +ensureAttributesTableExtension (const char *path) { + return ensureExtension(path, ATTRIBUTES_TABLE_EXTENSION); +} diff --git a/Programs/atb_internal.h b/Programs/atb_internal.h new file mode 100644 index 0000000000000000000000000000000000000000..77be2f78a8b8d308e7567b18d23f40a536ca4bcd --- /dev/null +++ b/Programs/atb_internal.h @@ -0,0 +1,45 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#ifndef BRLTTY_INCLUDED_ATB_INTERNAL +#define BRLTTY_INCLUDED_ATB_INTERNAL + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +typedef uint32_t AttributesTableOffset; + +typedef struct { + unsigned char attributesToDots[0X100]; +} AttributesTableHeader; + +struct AttributesTableStruct { + union { + AttributesTableHeader *fields; + const unsigned char *bytes; + } header; + + size_t size; +}; + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* BRLTTY_INCLUDED_ATB_INTERNAL */ diff --git a/Programs/atb_translate.c b/Programs/atb_translate.c new file mode 100644 index 0000000000000000000000000000000000000000..93f0a45ebb57e64b37174c3174958955e51dd26c --- /dev/null +++ b/Programs/atb_translate.c @@ -0,0 +1,38 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#include "prologue.h" + +#include "atb.h" +#include "atb_internal.h" + +static const unsigned char internalAttributesTableBytes[] = { +#include "attr.auto.h" +}; + +static AttributesTable internalAttributesTable = { + .header.bytes = internalAttributesTableBytes, + .size = 0 +}; + +AttributesTable *attributesTable = &internalAttributesTable; + +unsigned char +convertAttributesToDots (AttributesTable *table, unsigned char attributes) { + return table->header.fields->attributesToDots[attributes]; +} diff --git a/Programs/auth.c b/Programs/auth.c index 237b056f2f435486613eb60d0f908e4184dafc97..0d13945e7cb6c2536c2dc18dc32128c055d4a277 100644 --- a/Programs/auth.c +++ b/Programs/auth.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/auth.h b/Programs/auth.h index 3b855b658a03651f2fea78858949aed210ab2069..a145e72ffd5e4aa227beb1873a92900f373e8fa4 100644 --- a/Programs/auth.h +++ b/Programs/auth.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/beeper.c b/Programs/beeper.c index 22aae92aef21fe9452aef773058dd7efd78e1124..7a85567e5bc37453d5d91fde5b542d5af8db3925 100644 --- a/Programs/beeper.c +++ b/Programs/beeper.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/bitmask.h b/Programs/bitmask.h new file mode 100644 index 0000000000000000000000000000000000000000..79fc3b5627d46361e69c5bfa6ba6e282beae582e --- /dev/null +++ b/Programs/bitmask.h @@ -0,0 +1,45 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#ifndef BRLTTY_INCLUDED_BITMASK +#define BRLTTY_INCLUDED_BITMASK + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* These macros are meant for internal use only. */ +#define BITMASK_ELEMENT_SIZE(element) (sizeof(element) * 8) +#define BITMASK_INDEX(bit,size) ((bit) / (size)) +#define BITMASK_SHIFT(bit,size) ((bit) % (size)) +#define BITMASK_ELEMENT_COUNT(bits,size) (BITMASK_INDEX((bits)-1, (size)) + 1) +#define BITMASK_ELEMENT(name,bit) ((name)[BITMASK_INDEX((bit), BITMASK_ELEMENT_SIZE((name)[0]))]) +#define BITMASK_BIT(name,bit) (1 << BITMASK_SHIFT((bit), BITMASK_ELEMENT_SIZE((name)[0]))) + +/* These macros are for public use. */ +#define BITMASK(name,bits,type) unsigned type name[BITMASK_ELEMENT_COUNT((bits), BITMASK_ELEMENT_SIZE(type))] +#define BITMASK_SIZE(name) BITMASK_ELEMENT_SIZE((name)) +#define BITMASK_SET(name,bit) (BITMASK_ELEMENT((name), (bit)) |= BITMASK_BIT((name), (bit))) +#define BITMASK_CLEAR(name,bit) (BITMASK_ELEMENT((name), (bit)) &= ~BITMASK_BIT((name), (bit))) +#define BITMASK_TEST(name,bit) (BITMASK_ELEMENT((name), (bit)) & BITMASK_BIT((name), (bit))) + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* BRLTTY_INCLUDED_BITMASK */ diff --git a/Programs/bluetooth.c b/Programs/bluetooth.c index 8427b4555d6016190bd30e37b82535e80a30dea2..e19b0f1bd6d02d9cd6e0f029651d17817ae270fe 100644 --- a/Programs/bluetooth.c +++ b/Programs/bluetooth.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/bluetooth_internal.h b/Programs/bluetooth_internal.h index 8e39b1d772e25d24324d8d7aaf7714a8723cbebc..ac9343dc26e3dc6fc54d9e3d92e796f89d3083de 100644 --- a/Programs/bluetooth_internal.h +++ b/Programs/bluetooth_internal.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/bluetooth_linux.c b/Programs/bluetooth_linux.c index 3504916ece6520d71f1569a1297e5abac2cde860..5bc24d35b2f0772c3916e8de8b9d009a95a08d07 100644 --- a/Programs/bluetooth_linux.c +++ b/Programs/bluetooth_linux.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/bluetooth_skeleton.c b/Programs/bluetooth_skeleton.c index ad6084d09ef7e69ae81a89a583100671c8c44ec7..17bdad150c937c52add10c6b1771a850e93ebd2e 100644 --- a/Programs/bluetooth_skeleton.c +++ b/Programs/bluetooth_skeleton.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/brl.c b/Programs/brl.c index 9ef55f85c89398adafc1cb79fcc9d4ff6ecc9164..b561fea8dc6144de5f5ea46424e1410fe1ebb26e 100644 --- a/Programs/brl.c +++ b/Programs/brl.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -26,9 +27,10 @@ #include "async.h" #include "message.h" #include "charset.h" +#include "unicode.h" #include "drivers.h" #include "brl.h" -#include "tbl.h" +#include "ttb.h" #include "brl.auto.h" #include "cmd.h" @@ -66,15 +68,6 @@ const BrailleDriver *braille = &noBraille; * Output braille translation tables. * The files *.auto.h (the default tables) are generated at compile-time. */ -TranslationTable textTable = { - #include "text.auto.h" -}; -TranslationTable untextTable; - -TranslationTable attributesTable = { - #include "attrib.auto.h" -}; - int haveBrailleDriver (const char *code) { return haveDriver(code, BRAILLE_DRIVER_CODES, driverTable); @@ -109,8 +102,10 @@ identifyBrailleDrivers (int full) { void initializeBrailleDisplay (BrailleDisplay *brl) { - brl->x = 80; - brl->y = 1; + brl->textColumns = 80; + brl->textRows = 1; + brl->statusColumns = 0; + brl->statusRows = 0; brl->helpPage = 0; brl->buffer = NULL; brl->writeDelay = 0; @@ -130,91 +125,111 @@ drainBrailleOutput (BrailleDisplay *brl, int minimumDelay) { return duration; } -int -writeBrailleWindow (BrailleDisplay *brl, const wchar_t *text) { - brl->cursor = -1; - - { - int i; - /* Do Braille translation using text table. Six-dot mode is ignored - * since case can be important, and blinking caps won't work. - */ - for (i=0; ix*brl->y; ++i) brl->buffer[i] = convertWcharToDots(textTable, text[i]); - } - return braille->writeWindow(brl, text); -} - -int -writeBrailleText (BrailleDisplay *brl, const char *text, size_t length) { - size_t size = brl->x * brl->y; - wchar_t characters[size]; - - if (length > size) length = size; - { - int i; - for (i=0; i 0) { + unsigned int index = 0; + size_t amount = length; + if (amount > count) amount = count; + + while (index < amount) { + fill(&text[index], &dots[index], data); + index += 1; } + length -= amount; + + amount = count - index; + wmemset(&text[index], WC_C(' '), amount); + memset(&dots[index], 0, amount); + + text += columns; + dots += columns; + rows -= 1; } - wmemset(&characters[length], WC_C(' '), size-length); +} - return writeBrailleWindow(brl, characters); +static void +fillText (wchar_t *text, unsigned char *dots, void *data) { + wchar_t **character = data; + *dots = convertCharacterToDots(textTable, (*text = *(*character)++)); } -int -writeBrailleString (BrailleDisplay *brl, const char *string) { - return writeBrailleText(brl, string, strlen(string)); +void +fillTextRegion ( + wchar_t *text, unsigned char *dots, + unsigned int start, unsigned int count, + unsigned int columns, unsigned int rows, + const wchar_t *characters, size_t length +) { + fillRegion(text, dots, start, count, columns, rows, &characters, length, fillText); } -int -showBrailleString (BrailleDisplay *brl, const char *string, unsigned int duration) { - int ok = writeBrailleString(brl, string); - drainBrailleOutput(brl, duration); - return ok; +static void +fillDots (wchar_t *text, unsigned char *dots, void *data) { + unsigned char **cell = data; + *text = UNICODE_BRAILLE_ROW | (*dots = *(*cell)++); } -int -clearStatusCells (BrailleDisplay *brl) { - if (braille->writeStatus) { - unsigned char cells[BRL_MAX_STATUS_CELL_COUNT]; /* status cell buffer */ - memset(cells, 0, sizeof(cells)); - if (!braille->writeStatus(brl, cells)) return 0; - } - return 1; +void +fillDotsRegion ( + wchar_t *text, unsigned char *dots, + unsigned int start, unsigned int count, + unsigned int columns, unsigned int rows, + const unsigned char *cells, size_t length +) { + fillRegion(text, dots, start, count, columns, rows, &cells, length, fillDots); } + int setStatusText (BrailleDisplay *brl, const char *text) { - if (braille->writeStatus) { - unsigned char cells[BRL_MAX_STATUS_CELL_COUNT]; /* status cell buffer */ - memset(cells, 0, sizeof(cells)); + unsigned int length = brl->statusColumns * brl->statusRows; + + if (braille->writeStatus && (length > 0)) { + unsigned char cells[length]; { - int i; - for (i=0; iwriteStatus(brl, cells)) return 0; } + return 1; } +int +clearStatusCells (BrailleDisplay *brl) { + return setStatusText(brl, ""); +} + static void brailleBufferResized (BrailleDisplay *brl, int infoLevel) { - memset(brl->buffer, 0, brl->x*brl->y); + memset(brl->buffer, 0, brl->textColumns*brl->textRows); LogPrint(infoLevel, "Braille Display Dimensions: %d %s, %d %s", - brl->y, (brl->y == 1)? "row": "rows", - brl->x, (brl->x == 1)? "column": "columns"); - if (brl->bufferResized) brl->bufferResized(infoLevel, brl->y, brl->x); + brl->textRows, (brl->textRows == 1)? "row": "rows", + brl->textColumns, (brl->textColumns == 1)? "column": "columns"); + if (brl->bufferResized) brl->bufferResized(infoLevel, brl->textRows, brl->textColumns); } static int @@ -225,7 +240,7 @@ resizeBrailleBuffer (BrailleDisplay *brl, int infoLevel) { if (brl->isCoreBuffer) { static void *currentAddress = NULL; static size_t currentSize = 0; - size_t newSize = brl->x * brl->y; + size_t newSize = brl->textColumns * brl->textRows; if (newSize > currentSize) { void *newAddress = malloc(newSize); @@ -261,7 +276,8 @@ ensureBrailleBuffer (BrailleDisplay *brl, int infoLevel) { int readBrailleCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { - int command = braille->readCommand(brl, context); + int command = dequeueCommand(); + if (command == EOF) command = braille->readCommand(brl, context); resizeBrailleBuffer(brl, LOG_INFO); return command; } @@ -269,8 +285,10 @@ readBrailleCommand (BrailleDisplay *brl, BRL_DriverCommandContext context) { #ifdef ENABLE_LEARN_MODE int learnMode (BrailleDisplay *brl, int poll, int timeout) { - if (!setStatusText(brl, "lrn")) return 0; - if (!message("command learn mode", MSG_NODELAY)) return 0; + const char *mode = "lrn"; + + if (!setStatusText(brl, mode)) return 0; + if (!message(mode, "command learn mode", MSG_NODELAY)) return 0; hasTimedOut(0); do { @@ -289,7 +307,7 @@ learnMode (BrailleDisplay *brl, int poll, int timeout) { char buffer[0X100]; describeCommand(command, buffer, sizeof(buffer)); LogPrint(LOG_DEBUG, "Learn: %s", buffer); - if (!message(buffer, MSG_NODELAY|MSG_SILENT)) return 0; + if (!message(mode, buffer, MSG_NODELAY|MSG_SILENT)) return 0; } hasTimedOut(0); @@ -298,13 +316,15 @@ learnMode (BrailleDisplay *brl, int poll, int timeout) { drainBrailleOutput(brl, poll); } while (!hasTimedOut(timeout)); - return message("done", 0); + return message(mode, "done", 0); } #endif /* ENABLE_LEARN_MODE */ void -makeUntextTable (void) { - reverseTranslationTable(textTable, untextTable); +reverseTranslationTable (TranslationTable from, TranslationTable to) { + int byte; + memset(to, 0, sizeof(TranslationTable)); + for (byte=TRANSLATION_TABLE_SIZE-1; byte>=0; byte--) to[from[byte]] = byte; } void diff --git a/Programs/brl.h b/Programs/brl.h index cff49891b707c8fabe7ff2e2cd64c23c9caf0c32..b7c478629d201a86d7391fd8cee95355b13ba8c3 100644 --- a/Programs/brl.h +++ b/Programs/brl.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -27,42 +28,60 @@ extern "C" { #include "driver.h" #include "brldefs.h" -/* status cell styles */ typedef enum { - ST_None, - ST_AlvaStyle, - ST_TiemanStyle, - ST_PB80Style, - ST_Generic, - ST_MDVStyle, - ST_VoyagerStyle -} StatusCellsStyle; + sfEnd, + sfWindowCoordinates, + sfWindowColumn, + sfWindowRow, + sfCursorCoordinates, + sfCursorColumn, + sfCursorRow, + sfCursorAndWindowColumn, + sfCursorAndWindowRow, + sfScreenNumber, + sfStateDots, + sfStateLetter, + sfTime, + sfAlphabeticWindowCoordinates, + sfAlphabeticCursorCoordinates, + sfGeneric +} StatusField; typedef struct BrailleDataStruct BrailleData; typedef struct { - unsigned int x, y; /* the dimensions of the display */ - unsigned int helpPage; /* the page number within the help file */ - unsigned char *buffer; /* the contents of the display */ - int cursor; /* the position of the cursor within the display */ - unsigned isCoreBuffer:1; /* the core allocated the buffer */ - unsigned resizeRequired:1; /* the display size has changed */ + unsigned int textColumns, textRows; + unsigned int statusColumns, statusRows; + unsigned int helpPage; + unsigned char *buffer; + int cursor; + unsigned isCoreBuffer:1; + unsigned resizeRequired:1; unsigned int writeDelay; void (*bufferResized) (int infoLevel, int rows, int columns); const char *dataDirectory; unsigned touchEnabled:1; unsigned highlightWindow:1; BrailleData *data; -} BrailleDisplay; /* used for writing to a braille display */ +} BrailleDisplay; extern void initializeBrailleDisplay (BrailleDisplay *brl); extern unsigned int drainBrailleOutput (BrailleDisplay *brl, int minimumDelay); extern int ensureBrailleBuffer (BrailleDisplay *brl, int infoLevel); -extern int writeBrailleWindow (BrailleDisplay *brl, const wchar_t *text); -extern int writeBrailleText (BrailleDisplay *brl, const char *text, size_t length); -extern int writeBrailleString (BrailleDisplay *brl, const char *string); -extern int showBrailleString (BrailleDisplay *brl, const char *string, unsigned int); +extern void fillTextRegion ( + wchar_t *text, unsigned char *dots, + unsigned int start, unsigned int count, + unsigned int columns, unsigned int rows, + const wchar_t *characters, size_t length +); + +extern void fillDotsRegion ( + wchar_t *text, unsigned char *dots, + unsigned int start, unsigned int count, + unsigned int columns, unsigned int rows, + const unsigned char *cells, size_t length +); extern int clearStatusCells (BrailleDisplay *brl); extern int setStatusText (BrailleDisplay *brl, const char *text); @@ -76,6 +95,7 @@ typedef enum { BRL_FIRMNESS_HIGH, BRL_FIRMNESS_MAXIMUM } BrailleFirmness; +extern void setBrailleFirmness (BrailleDisplay *brl, BrailleFirmness setting); typedef enum { BRL_SENSITIVITY_MINIMUM, @@ -84,7 +104,6 @@ typedef enum { BRL_SENSITIVITY_HIGH, BRL_SENSITIVITY_MAXIMUM } BrailleSensitivity; -extern void setBrailleFirmness (BrailleDisplay *brl, BrailleFirmness setting); extern void setBrailleSensitivity (BrailleDisplay *brl, BrailleSensitivity setting); /* Routines provided by each braille driver. @@ -95,7 +114,7 @@ typedef struct { DRIVER_DEFINITION_DECLARATION; const char *const *parameters; const char *helpFile; - int statusStyle; + const unsigned char *statusFields; /* Routines provided by the braille driver library: */ int (*construct) (BrailleDisplay *brl, char **parameters, const char *device); @@ -132,11 +151,7 @@ extern const BrailleDriver noBraille; #define TRANSLATION_TABLE_SIZE 0X100 typedef unsigned char TranslationTable[TRANSLATION_TABLE_SIZE]; -extern TranslationTable textTable; /* current text to braille translation table */ -extern TranslationTable untextTable; /* current braille to text translation table */ -extern TranslationTable attributesTable; /* current attributes to braille translation table */ - -extern void makeUntextTable (void); +extern void reverseTranslationTable (TranslationTable from, TranslationTable to); #define DOTS_TABLE_SIZE 8 typedef unsigned char DotsTable[DOTS_TABLE_SIZE]; @@ -156,8 +171,6 @@ extern int portraitFlag (int number, int on); extern int learnMode (BrailleDisplay *brl, int poll, int timeout); -extern int showDotPattern (unsigned char dots, unsigned char duration); - #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/Programs/brl_driver.h b/Programs/brl_driver.h index 23c294d65b779c54e94697a26b3f6d02e89b8e89..a37898aebb68b0470cf2f64565578c410b2e2f7d 100644 --- a/Programs/brl_driver.h +++ b/Programs/brl_driver.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -61,9 +62,11 @@ static int brl_writeWindow (BrailleDisplay *brl, const wchar_t *characters); static const char *const brl_parameters[] = {BRLPARMS, NULL}; #endif /* BRLPARMS */ -#ifndef BRLSTAT -# define BRLSTAT ST_None -#endif /* BRLSTAT */ +#ifdef BRL_STATUS_FIELDS +static const unsigned char brl_statusFields[] = {BRL_STATUS_FIELDS, sfEnd}; +#else /* BRL_STATUS_FIELDS */ +#define brl_statusFields NULL +#endif /* BRL_STATUS_FIELDS */ #ifndef BRLSYMBOL # define BRLSYMBOL CONCATENATE(brl_driver_,DRIVER_CODE) @@ -84,7 +87,7 @@ BRLCONST BrailleDriver BRLSYMBOL = { #endif /* BRLPARMS */ BRLHELP, - BRLSTAT, + brl_statusFields, brl_construct, brl_destruct, diff --git a/Programs/brlapi.awk b/Programs/brlapi.awk index c2dd15851debe973ffea7f658e83e100e862ad03..5393d38c43501d8cdca9b23241ada64ee9b96211 100644 --- a/Programs/brlapi.awk +++ b/Programs/brlapi.awk @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/Programs/brlapi.h.in b/Programs/brlapi.h.in index b6bd7bf7c7af1a73e30e5ea2d2a57136568a3d57..a4648c06914af2d620d19701cdc228b39e140d89 100644 --- a/Programs/brlapi.h.in +++ b/Programs/brlapi.h.in @@ -1,17 +1,16 @@ /* * libbrlapi - A library providing access to braille terminals for applications. * - * Copyright (C) 2002-2008 by + * Copyright (C) 2002-2009 by * Samuel Thibault - * Sébastien Hinderer + * Sébastien Hinderer * * libbrlapi 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * @@ -119,11 +118,7 @@ size_t BRLAPI_STDCALL brlapi_getHandleSize(void); #define BRLAPI_SOCKETPORT "4101" /** Default unix path on which connections to \e BrlAPI can be established */ -#ifdef BRLAPI_WIN32 -#define BRLAPI_SOCKETPATH "\\\\.\\pipe\\BrlAPI" -#else /* BRLAPI_WIN32 */ -#define BRLAPI_SOCKETPATH "/var/lib/BrlAPI/" -#endif /* BRLAPI_WIN32 */ +#undef BRLAPI_SOCKETPATH /** \e brltty 's settings directory * @@ -339,13 +334,6 @@ int BRLAPI_STDCALL brlapi__getDisplaySize(brlapi_handle_t *handle, unsigned int * whereas a driver name means that raw key codes returned by this * driver are expected. * - * In an X window environment, WINDOWPATH might be useful. XFree86 >=4.4 defines - * an XFree86_VT root window property which exactly holds the used VT, so that - * it should be given to brlapi_enterTtyMode. If it isn't available, one may, - * right into .xsession and .xinitrc, grep X's log, for instance: - * - * WINDOWPATH="$(grep "using VT number" "/var/log/Xorg.$(echo "$DISPLAY" | sed -e "s/^.*::*\([0-9]*\).*$/\1/").log" | sed -e "s/^.*using VT number \([0-9]*\).*$/\1/")" - * * WINDOWPATH and WINDOWID should be propagated when running remote applications * via ssh, for instance, along with BRLAPI_HOST and the authorization key (see * SendEnv in ssh_config(5) and AcceptEnv in sshd_config(5)) diff --git a/Programs/brlapi_brldefs.awk b/Programs/brlapi_brldefs.awk index 5c2bdd63636c336786ce380cdc29e0cbb53ecfad..2b77abd30ab44843ba06f4e69cf9a3a6892f1786 100644 --- a/Programs/brlapi_brldefs.awk +++ b/Programs/brlapi_brldefs.awk @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/Programs/brlapi_client.c b/Programs/brlapi_client.c index d45e04ba2ef7d2fb54bdf6dc092f8d6bac399629..58843c8d890499856209b4ef613bcfb063962364 100644 --- a/Programs/brlapi_client.c +++ b/Programs/brlapi_client.c @@ -1,17 +1,16 @@ /* * libbrlapi - A library providing access to braille terminals for applications. * - * Copyright (C) 2002-2008 by + * Copyright (C) 2002-2009 by * Samuel Thibault - * Sébastien Hinderer + * Sébastien Hinderer * * libbrlapi 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * @@ -425,7 +424,7 @@ static int tryHost(brlapi_handle_t *handle, char *hostAndPort) { #else /* __MINGW32__ */ { struct sockaddr_un sa; - if (lpath+lport+1>sizeof(sa.sun_path)) { + if (lpath+1+lport+1>sizeof(sa.sun_path)) { brlapi_libcerrno=ENAMETOOLONG; brlapi_errfun="path"; brlapi_errno = BRLAPI_ERROR_LIBCERR; @@ -437,8 +436,8 @@ static int tryHost(brlapi_handle_t *handle, char *hostAndPort) { goto outlibc; } sa.sun_family = AF_LOCAL; - memcpy(sa.sun_path,BRLAPI_SOCKETPATH,lpath); - memcpy(sa.sun_path+lpath,port,lport+1); + memcpy(sa.sun_path,BRLAPI_SOCKETPATH "/",lpath+1); + memcpy(sa.sun_path+lpath+1,port,lport+1); if (connect(handle->fileDescriptor, (struct sockaddr *) &sa, sizeof(sa))<0) { brlapi_errfun="connect"; setSocketErrno(); @@ -1155,6 +1154,8 @@ int brlapi__writeText(brlapi_handle_t *handle, int cursor, const char *str) unsigned i; memset(&ps,0,sizeof(ps)); for (min=0;min - * Sébastien Hinderer + * Sébastien Hinderer * * libbrlapi 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * diff --git a/Programs/brlapi_constants.awk b/Programs/brlapi_constants.awk index 5429af3d46bdeff482b2ad840705c94a63e9e522..ad4175587e439056bda09a43c8939715128f2258 100644 --- a/Programs/brlapi_constants.awk +++ b/Programs/brlapi_constants.awk @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # @@ -88,4 +89,7 @@ function writeBrlapiDots() { } print "#define BRLAPI_DOTS(" arguments ") (\\\n" expression " \\\n)" + + print "" + writeMacroDefinition("BRLAPI_DOT_CHORD", 0X100, "space key") } diff --git a/Programs/brlapi_keycodes.h b/Programs/brlapi_keycodes.h index 45cf2ba51fd1959d59047eb1a8b02685df77af86..c26e804f98c48ac809afb9316d067cc9cb757864 100644 --- a/Programs/brlapi_keycodes.h +++ b/Programs/brlapi_keycodes.h @@ -1,17 +1,16 @@ /* * libbrlapi - A library providing access to braille terminals for applications. * - * Copyright (C) 2002-2008 by + * Copyright (C) 2002-2009 by * Samuel Thibault - * Sébastien Hinderer + * Sébastien Hinderer * * libbrlapi 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * @@ -54,20 +53,38 @@ extern "C" { * number part is 0x1000000 and the value part is 0xuvwxyz. Else, the command * part is held by bits 28-8 and the value part is held by bits 7-0. This * permits to easily handle usual cases like 0x00xy (latin1), 0x01xy (latin2), - * 0xff08 (backspace), 0xff09 (tab), ... + * XK_Backspace (0xff08, backspace), XK_Tab (0xff09, tab), ... * - * For instance, if key == 0x20010008, - * - key & BRLAPI_KEY_TYPE_MASK == BRLAPI_KEY_TYPE_CMD, so it's a braille + * For instance, if key == 0x0000000020010008, + * - (key & BRLAPI_KEY_TYPE_MASK) == BRLAPI_KEY_TYPE_CMD, so it's a braille * command - * - key & BRLAPI_KEY_CMD_BLK_MASK == BRLAPI_KEY_CMD_ROUTE, so it's the braille - * route command. - * - key & BRLAPI_KEY_CMD_ARG_MASK == 8, so the highlighted cell is the 9th one - * (cells are numbered from 0) - * - key & BRLAPI_KEY_FLAGS_MASK == 0, so no modifier key was pressed during the - * command, and no particular flag applies to the command. + * - (key & BRLAPI_KEY_CMD_BLK_MASK) == BRLAPI_KEY_CMD_ROUTE, so it's the + * braille route command. + * - (key & BRLAPI_KEY_CMD_ARG_MASK) == 8, so the highlighted cell is the 9th + * one (cells are numbered from 0) + * - (key & BRLAPI_KEY_FLAGS_MASK) == 0, so no modifier key was pressed during + * the command, and no particular flag applies to the command. + * + * if key == 0x000000010000FF09, + * - (key & BRLAPI_KEY_TYPE_MASK) == BRLAPI_KEY_TYPE_SYM, so it's a keysym + * - (key & BRLAPI_KEY_CODE_MASK) == XK_Tab, so it's the tab key. + * BRLAPI_KEY_SYM_TAB can also be used here, as well as a few other + * BRLAPI_KEY_SYM_* constants which are provided to avoid having to include + * X11/keysymdef.h + * - (key & BRLAPI_KEY_FLAGS_MASK) == BRLAPI_KEY_FLG_SHIFT, so the shift + * modifier was pressed during the command. + * + * in the X11 standard some keysyms are directly unicode, for instance if + * key == 0x0000000001001EA0, + * - (key & BRLAPI_KEY_TYPE_MASK) == BRLAPI_KEY_TYPE_SYM, so it's a keysym + * - (key & BRLAPI_KEY_SYM_UNICODE) != 0 so it's a unicode keysym, whose value + * is key & (BRLAPI_KEY_SYM_UNICODE-1). Of course, one can also consider + * (key & BRLAPI_KEY_CODE_MASK) == XK_Abelowdot + * - (key & BRLAPI_KEY_FLAGS_MASK) == 0, so no modifier key was pressed during + * the command, and no particular flag applies to the command. * * The brlapi_expandKeyCode() function may be used for splitting key codes into - * these 4 parts. + * these parts. * @{ */ typedef uint64_t brlapi_keyCode_t; diff --git a/Programs/brlapi_keyranges.c b/Programs/brlapi_keyranges.c index ab0f14d83922f13de9ae94ff0b1d37deebce3ef3..94e9a31452a5d42a13f1f888ec37027d5f27cf1b 100644 --- a/Programs/brlapi_keyranges.c +++ b/Programs/brlapi_keyranges.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/brlapi_keyranges.h b/Programs/brlapi_keyranges.h index 960b93e28eef0b464d5129ba46677e3de7f4fbe5..164984b54fb4e8aa1b0b4afd92cc0402b48d7e01 100644 --- a/Programs/brlapi_keyranges.h +++ b/Programs/brlapi_keyranges.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/brlapi_keytab.awk b/Programs/brlapi_keytab.awk index 14a7cbc9bfd764279f2aa0846c67134477247880..58804b408ff08e1c73d01dca35b42959d5d1b42d 100644 --- a/Programs/brlapi_keytab.awk +++ b/Programs/brlapi_keytab.awk @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/Programs/brlapi_protocol.h b/Programs/brlapi_protocol.h index 4879b5d225aebac3d54bf9b2a7051e668329c80b..050ff08ea7ee073eac53b3682bee29cb30ee9af7 100644 --- a/Programs/brlapi_protocol.h +++ b/Programs/brlapi_protocol.h @@ -1,17 +1,16 @@ /* * libbrlapi - A library providing access to braille terminals for applications. * - * Copyright (C) 2002-2008 by + * Copyright (C) 2002-2009 by * Samuel Thibault - * Sébastien Hinderer + * Sébastien Hinderer * * libbrlapi 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 COPYING-API for details. + * 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://mielke.cc/brltty/ * diff --git a/Programs/brlapi_server.c b/Programs/brlapi_server.c index 92f2b13bdecceda8ae2a6818bcdeb5735224fa9f..4ff8d9996ce567be99319fadc00f0889869fbabc 100644 --- a/Programs/brlapi_server.c +++ b/Programs/brlapi_server.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -60,7 +61,7 @@ #include "brlapi_keyranges.h" #include "cmd.h" #include "brl.h" -#include "tbl.h" +#include "ttb.h" #include "brltty.h" #include "misc.h" #include "auth.h" @@ -98,16 +99,16 @@ const char *const api_parameters[] = { "auth", "host", "stacksize", NULL }; static size_t stackSize; #define RELEASE "BrlAPI Server: release " BRLAPI_RELEASE -#define COPYRIGHT " Copyright (C) 2002-2008 by Sebastien Hinderer , \ +#define COPYRIGHT " Copyright (C) 2002-2009 by Sébastien Hinderer , \ Samuel Thibault " #define WERR(x, y, ...) do { \ - LogPrint(LOG_ERR, "writing error %d", y); \ + LogPrint(LOG_ERR, "writing error %d to %"PRIFD, y, x); \ LogPrint(LOG_ERR, __VA_ARGS__); \ writeError(x, y); \ } while(0) #define WEXC(x, y, type, packet, size, ...) do { \ - LogPrint(LOG_ERR, "writing exception %d", y); \ + LogPrint(LOG_ERR, "writing exception %d to %"PRIFD, y, x); \ LogPrint(LOG_ERR, __VA_ARGS__); \ writeException(x, y, type, packet, size); \ } while(0) @@ -154,7 +155,7 @@ typedef struct { unsigned char *orAttr; } BrailleWindow; -typedef enum { TODISPLAY, FULL, EMPTY } BrlBufState; +typedef enum { TODISPLAY, EMPTY } BrlBufState; typedef enum { #ifdef __MINGW32__ @@ -284,19 +285,20 @@ static RepeatState repeatState; static int coreActive; /* Whether core is active */ static int offline; /* Whether device is offline */ static int driverConstructed; /* Whether device is really opened, protected by driverMutex */ +static wchar_t *coreWindowText; /* Last text written by the core */ +static unsigned char *coreWindowDots; /* Last dots written by the core */ +static int coreWindowCursor; /* Last cursor position set by the core */ static pthread_mutex_t suspendMutex; /* Protects use of driverConstructed state */ static const char *auth = BRLAPI_DEFAUTH; static AuthDescriptor *authDescriptor; -static Connection *last_conn_write; -static int refresh; - #ifdef __MINGW32__ static WSADATA wsadata; #endif /* __MINGW32__ */ static unsigned char cursorShape; +static const int retainDots = 0; /****************************************************************************/ /** SOME PROTOTYPES **/ @@ -573,7 +575,7 @@ void getDots(const BrailleWindow *brailleWindow, unsigned char *buf) int i; unsigned char c; for (i=0; itext[i]); + c = convertCharacterToDots(textTable, brailleWindow->text[i]); buf[i] = (c & brailleWindow->andAttr[i]) | brailleWindow->orAttr[i]; } if (brailleWindow->cursor) buf[brailleWindow->cursor-1] |= cursorShape; @@ -628,7 +630,7 @@ out: /* Frees all resources associated to a connection */ static void freeConnection(Connection *c) { - if (c->fd>=0) { + if (c->fd != INVALID_FILE_DESCRIPTOR) { if (c->auth != 1) unauthConnections--; closeFileDescriptor(c->fd); } @@ -1664,8 +1666,8 @@ static FileDescriptor initializeLocalSocket(struct socketInfo *info) CloseHandle(info->overl.hEvent); #else /* __MINGW32__ */ struct sockaddr_un sa; - char tmppath[lpath+lport+3]; - char lockpath[lpath+lport+2]; + char tmppath[lpath+lport+4]; + char lockpath[lpath+lport+3]; struct stat st; char pids[16]; pid_t pid; @@ -1693,15 +1695,15 @@ static FileDescriptor initializeLocalSocket(struct socketInfo *info) /* read-only, or not mounted yet, wait */ approximateDelay(1000); } - memcpy(sa.sun_path,BRLAPI_SOCKETPATH,lpath); - memcpy(sa.sun_path+lpath,info->port,lport+1); - memcpy(tmppath, BRLAPI_SOCKETPATH, lpath); - tmppath[lpath]='.'; - memcpy(tmppath+lpath+1, info->port, lport); - memcpy(lockpath, tmppath, lpath+1+lport); - tmppath[lpath+lport+1]='_'; - tmppath[lpath+lport+2]=0; - lockpath[lpath+lport+1]=0; + memcpy(sa.sun_path,BRLAPI_SOCKETPATH "/",lpath+1); + memcpy(sa.sun_path+lpath+1,info->port,lport+1); + memcpy(tmppath, BRLAPI_SOCKETPATH "/", lpath+1); + tmppath[lpath+1]='.'; + memcpy(tmppath+lpath+2, info->port, lport); + memcpy(lockpath, tmppath, lpath+2+lport); + tmppath[lpath+2+lport]='_'; + tmppath[lpath+2+lport+1]=0; + lockpath[lpath+2+lport]=0; while ((lock = open(tmppath, O_WRONLY|O_CREAT|O_EXCL, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)) == -1) { if (errno == EROFS) { @@ -1714,7 +1716,7 @@ static FileDescriptor initializeLocalSocket(struct socketInfo *info) } if ((pid = readPid(tmppath)) && pid != getpid() && (kill(pid, 0) != -1 || errno != ESRCH)) { - LogPrint(LOG_ERR,"a BrlAPI server is already listening on %s (file %s exists)",info->port, tmppath); + LogPrint(LOG_ERR,"another BrlAPI server is already listening on %s (file %s exists)",info->port, tmppath); goto outmode; } /* bogus file, myself or non-existent process, remove */ @@ -1756,7 +1758,7 @@ static FileDescriptor initializeLocalSocket(struct socketInfo *info) /* failed to link */ if ((pid = readPid(lockpath)) && pid != getpid() && (kill(pid, 0) != -1 || errno != ESRCH)) { - LogPrint(LOG_ERR,"a BrlAPI server is already listening on %s (file %s exists)",info->port, lockpath); + LogPrint(LOG_ERR,"another BrlAPI server is already listening on %s (file %s exists)",info->port, lockpath); goto outtmp; } /* bogus file, myself or non-existent process, remove */ @@ -1852,13 +1854,13 @@ static void closeSockets(void *arg) if (info->addrfamily==PF_LOCAL) { char *path; int lpath=strlen(BRLAPI_SOCKETPATH),lport=strlen(info->port); - if ((path=malloc(lpath+lport+2))) { - memcpy(path,BRLAPI_SOCKETPATH,lpath); - memcpy(path+lpath,info->port,lport+1); + if ((path=malloc(lpath+lport+3))) { + memcpy(path,BRLAPI_SOCKETPATH "/",lpath+1); + memcpy(path+lpath+1,info->port,lport+1); if (unlink(path)) LogError("unlinking local socket"); - path[lpath]='.'; - memcpy(path+lpath+1,info->port,lport+1); + path[lpath+1]='.'; + memcpy(path+lpath+2,info->port,lport+1); if (unlink(path)) LogError("unlinking local socket lock"); free(path); @@ -2172,6 +2174,7 @@ static int initializeAcceptedKeys(Connection *c) if (c->how==BRL_KEYCODES) return 0; if (addKeyrange(0,BRLAPI_KEY_MAX,&c->acceptedKeys)==-1) return -1; if (removeKeyrange(BRLAPI_KEY_TYPE_CMD|BRLAPI_KEY_CMD_NOOP,BRLAPI_KEY_TYPE_CMD|BRLAPI_KEY_CMD_NOOP|BRLAPI_KEY_FLAGS_MASK,&c->acceptedKeys)==-1) return -1; + if (removeKeyrange(BRLAPI_KEY_TYPE_CMD|BRLAPI_KEY_CMD_OFFLINE,BRLAPI_KEY_TYPE_CMD|BRLAPI_KEY_CMD_OFFLINE|BRLAPI_KEY_FLAGS_MASK,&c->acceptedKeys)==-1) return -1; if (removeKeyrange(BRLAPI_KEY_TYPE_CMD|BRLAPI_KEY_CMD_SWITCHVT_PREV,BRLAPI_KEY_TYPE_CMD|BRLAPI_KEY_CMD_SWITCHVT_NEXT|BRLAPI_KEY_FLAGS_MASK,&c->acceptedKeys)==-1) return -1; if (removeKeyrange(BRLAPI_KEY_TYPE_CMD|BRLAPI_KEY_CMD_RESTARTBRL,BRLAPI_KEY_TYPE_CMD|BRLAPI_KEY_CMD_RESTARTSPEECH|BRLAPI_KEY_FLAGS_MASK,&c->acceptedKeys)==-1) return -1; if (removeKeyrange(BRLAPI_KEY_TYPE_CMD|BRLAPI_KEY_CMD_SWITCHVT,BRLAPI_KEY_TYPE_CMD|BRLAPI_KEY_CMD_SWITCHVT|BRLAPI_KEY_CMD_ARG_MASK|BRLAPI_KEY_FLAGS_MASK,&c->acceptedKeys)==-1) return -1; @@ -2232,11 +2235,13 @@ static inline void setCurrentRootTty(void) { static int api_writeWindow(BrailleDisplay *brl, const wchar_t *text) { int ok = 1; + memcpy(coreWindowText, text, displaySize * sizeof(*coreWindowText)); + memcpy(coreWindowDots, brl->buffer, displaySize * sizeof(*coreWindowDots)); + coreWindowCursor = brl->cursor; setCurrentRootTty(); pthread_mutex_lock(&connectionsMutex); pthread_mutex_lock(&rawMutex); if (!offline && !suspendConnection && !rawConnection && !whoFillsTty(&ttys)) { - last_conn_write=NULL; pthread_mutex_lock(&driverMutex); if (!trueBraille->writeWindow(brl, text)) ok = 0; pthread_mutex_unlock(&driverMutex); @@ -2269,8 +2274,23 @@ found: return c; } +/* Temporary function, until we implement proper generic support for variables. + */ +static void broadcastKey(Tty *tty, brlapi_keyCode_t code, unsigned int how) { + Connection *c; + Tty *t; + for (c=tty->connections->next; c!=tty->connections; c = c->next) { + pthread_mutex_lock(&c->acceptedKeysMutex); + if ((c->how==how) && (inKeyrangeList(c->acceptedKeys,code) != NULL)) + writeKey(c->fd,code); + pthread_mutex_unlock(&c->acceptedKeysMutex); + } + for (t = tty->subttys; t; t = t->next) + broadcastKey(t, code, how); +} + /* Function : api_readCommand */ -static int api_readCommand(BrailleDisplay *brl, BRL_DriverCommandContext caller) +static int api_readCommand(BrailleDisplay *brl, BRL_DriverCommandContext context) { int res; ssize_t size; @@ -2279,6 +2299,7 @@ static int api_readCommand(BrailleDisplay *brl, BRL_DriverCommandContext caller) int keycode, command = EOF; brlapi_keyCode_t clientCode; int ok = 1; + int drain = 0; unsigned char newCursorShape; pthread_mutex_lock(&connectionsMutex); @@ -2300,10 +2321,6 @@ static int api_readCommand(BrailleDisplay *brl, BRL_DriverCommandContext caller) } setCurrentRootTty(); c = whoFillsTty(&ttys); - if (c && last_conn_write!=c) { - last_conn_write=c; - refresh=1; - } if (!offline && c) { pthread_mutex_lock(&c->brlMutex); pthread_mutex_lock(&driverMutex); @@ -2314,34 +2331,39 @@ static int api_readCommand(BrailleDisplay *brl, BRL_DriverCommandContext caller) pthread_mutex_unlock(&rawMutex); goto out; } - refresh=1; } pthread_mutex_unlock(&driverMutex); newCursorShape = cursorDots(); if (newCursorShape!=cursorShape) { cursorShape = newCursorShape; - refresh = 1; } - if ((c->brlbufstate==TODISPLAY) || (refresh)) { + if ((c->brlbufstate==TODISPLAY)) { unsigned char *oldbuf = disp->buffer, buf[displaySize]; disp->buffer = buf; getDots(&c->brailleWindow, buf); pthread_mutex_lock(&driverMutex); brl->cursor = c->brailleWindow.cursor-1; ok = trueBraille->writeWindow(brl, c->brailleWindow.text); + drain = 1; pthread_mutex_unlock(&driverMutex); disp->buffer = oldbuf; - if (ok) { - c->brlbufstate = FULL; - refresh=0; - } } pthread_mutex_unlock(&c->brlMutex); } else { /* no RAW, no connection filling tty, hence suspend if needed */ pthread_mutex_lock(&driverMutex); if (!coreActive) { - if (driverConstructed) suspendDriver(brl); + if (driverConstructed) { + /* Put back core output before suspending */ + unsigned char *oldbuf = disp->buffer; + disp->buffer = coreWindowDots; + brl->cursor = coreWindowCursor; + pthread_mutex_lock(&driverMutex); + trueBraille->writeWindow(brl, coreWindowText); + pthread_mutex_unlock(&driverMutex); + disp->buffer = oldbuf; + suspendDriver(brl); + } pthread_mutex_unlock(&driverMutex); pthread_mutex_unlock(&rawMutex); goto out; @@ -2353,6 +2375,9 @@ static int api_readCommand(BrailleDisplay *brl, BRL_DriverCommandContext caller) command = BRL_CMD_RESTARTBRL; goto out; } + if (drain) + drainBrailleOutput(brl, 0); + if ((context == BRL_CTX_SCREEN) && retainDots) context = BRL_CTX_CHORDS; if (trueBraille->readKey) { pthread_mutex_lock(&driverMutex); res = trueBraille->readKey(brl); @@ -2361,12 +2386,12 @@ static int api_readCommand(BrailleDisplay *brl, BRL_DriverCommandContext caller) handleResize(brl); keycode = res; pthread_mutex_lock(&driverMutex); - command = trueBraille->keyToCommand(brl,caller,keycode); + command = trueBraille->keyToCommand(brl,context,keycode); pthread_mutex_unlock(&driverMutex); } else { /* we already ensured in ENTERTTYMODE that no connection has how == KEYCODES */ pthread_mutex_lock(&driverMutex); - res = trueBraille->readCommand(brl,caller); + res = trueBraille->readCommand(brl,context); pthread_mutex_unlock(&driverMutex); if (brl->resizeRequired) handleResize(brl); @@ -2383,14 +2408,20 @@ static int api_readCommand(BrailleDisplay *brl, BRL_DriverCommandContext caller) command = EOF; } else { if (command == BRL_CMD_OFFLINE) { - offline = 1; + if (!offline) { + broadcastKey(&ttys, BRLAPI_KEY_TYPE_CMD|BRLAPI_KEY_CMD_OFFLINE, BRL_COMMANDS); + offline = 1; + } pthread_mutex_unlock(&connectionsMutex); return BRL_CMD_OFFLINE; } - offline = 0; + if (offline) { + broadcastKey(&ttys, BRLAPI_KEY_TYPE_CMD|BRLAPI_KEY_CMD_NOOP, BRL_COMMANDS); + offline = 0; + } handleAutorepeat(&command, &repeatState); if (command != EOF) { - clientCode = cmdBrlttyToBrlapi(command); + clientCode = cmdBrlttyToBrlapi(command, retainDots); /* nobody needs the raw code */ if ((c = whoGetsKey(&ttys,clientCode,BRL_COMMANDS))) { LogPrint(LOG_DEBUG,"Transmitting accepted command %lx as client code %016"BRLAPI_PRIxKEYCODE,(unsigned long)command, clientCode); @@ -2404,8 +2435,9 @@ out: return command; } -void api_flush(BrailleDisplay *brl, BRL_DriverCommandContext caller) { - (void) api_readCommand(brl, caller); +void api_flush(BrailleDisplay *brl, BRL_DriverCommandContext context) { + if (disp && api_readCommand(brl, context) == BRL_CMD_RESTARTBRL) + restartBrailleDriver(); } int api_resume(BrailleDisplay *brl) { @@ -2417,9 +2449,11 @@ int api_resume(BrailleDisplay *brl) { resumeDriver(brl); if (driverConstructed) { /* TODO: handle clients' resize */ - displayDimensions[0] = htonl(brl->x); - displayDimensions[1] = htonl(brl->y); - displaySize = brl->x * brl->y; + displayDimensions[0] = htonl(brl->textColumns); + displayDimensions[1] = htonl(brl->textRows); + displaySize = brl->textColumns * brl->textRows; + coreWindowText = realloc(coreWindowText, displaySize * sizeof(*coreWindowText)); + coreWindowDots = realloc(coreWindowDots, displaySize * sizeof(*coreWindowDots)); disp = brl; } } @@ -2456,7 +2490,6 @@ void api_link(BrailleDisplay *brl) LogPrint(LOG_DEBUG, "api link"); resetRepeatState(&repeatState); trueBraille=braille; - refresh=1; memcpy(&ApiBraille,braille,sizeof(BrailleDriver)); ApiBraille.writeWindow=api_writeWindow; ApiBraille.readCommand=api_readCommand; @@ -2466,10 +2499,16 @@ void api_link(BrailleDisplay *brl) ApiBraille.writePacket = NULL; braille=&ApiBraille; /* TODO: handle clients' resize */ - displayDimensions[0] = htonl(brl->x); - displayDimensions[1] = htonl(brl->y); - displaySize = brl->x * brl->y; + displayDimensions[0] = htonl(brl->textColumns); + displayDimensions[1] = htonl(brl->textRows); + displaySize = brl->textColumns * brl->textRows; + coreWindowText = calloc(displaySize, sizeof(*coreWindowText)); + coreWindowDots = calloc(displaySize, sizeof(*coreWindowDots)); + coreWindowCursor = 0; disp = brl; + pthread_mutex_lock(&connectionsMutex); + broadcastKey(&ttys, BRLAPI_KEY_TYPE_CMD|BRLAPI_KEY_CMD_NOOP, BRL_COMMANDS); + pthread_mutex_unlock(&connectionsMutex); } /* Function : api_unlink */ @@ -2477,12 +2516,20 @@ void api_link(BrailleDisplay *brl) void api_unlink(BrailleDisplay *brl) { LogPrint(LOG_DEBUG, "api unlink"); + pthread_mutex_lock(&connectionsMutex); + broadcastKey(&ttys, BRLAPI_KEY_TYPE_CMD|BRLAPI_KEY_CMD_OFFLINE, BRL_COMMANDS); + pthread_mutex_unlock(&connectionsMutex); + free(coreWindowText); + coreWindowText = NULL; + free(coreWindowDots); + coreWindowDots = NULL; braille=trueBraille; trueBraille=&noBraille; pthread_mutex_lock(&driverMutex); if (!coreActive && driverConstructed) suspendDriver(disp); pthread_mutex_unlock(&driverMutex); + disp = NULL; } /* Function : api_identify */ diff --git a/Programs/brldefs.awk b/Programs/brldefs.awk index dec5342ec1785e551072d62fef24be8d3b011b1b..2667fa1173cd644e36f234abee268baabb362acb 100644 --- a/Programs/brldefs.awk +++ b/Programs/brldefs.awk @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # @@ -44,7 +45,10 @@ BEGIN { } /#define[ \t]*BRL_DOT/ { - brlDot(substr($2, 8), $2, getDefineValue(), getComment($0)) + value = getDefineValue() + sub("^.*\\(", "", value) + sub("\\).*$", "", value) + brlDot(substr($2, 8), $2, value, getComment($0)) next } diff --git a/Programs/brldefs.h b/Programs/brldefs.h index e00f291209b5be9bd4c6e60b6cff3c1bd2da7c91..301e47b90d48a4dbdbb776a4c7856695f5887b5b 100644 --- a/Programs/brldefs.h +++ b/Programs/brldefs.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -22,13 +23,42 @@ extern "C" { #endif /* __cplusplus */ +#define BRL_BITS_ARG 8 +#define BRL_BITS_BLK 8 +#define BRL_BITS_FLG 8 +#define BRL_BITS_EXT 8 + +#define BRL_SHIFT_ARG 0 +#define BRL_SHIFT_BLK (BRL_SHIFT_ARG + BRL_BITS_ARG) +#define BRL_SHIFT_FLG (BRL_SHIFT_BLK + BRL_BITS_BLK) +#define BRL_SHIFT_EXT (BRL_SHIFT_FLG + BRL_BITS_FLG) + +#define BRL_CODE_MASK(name) ((1 << BRL_BITS_##name) - 1) +#define BRL_CODE_GET(name,code) (((code) >> BRL_SHIFT_##name) & BRL_CODE_MASK(name)) +#define BRL_CODE_PUT(name,value) ((value) << BRL_SHIFT_##name) +#define BRL_CODE_SET(name,value) BRL_CODE_PUT(name, ((value) & BRL_CODE_MASK(name))) + +#define BRL_ARG(arg) BRL_CODE_PUT(ARG, (arg)) +#define BRL_BLK(blk) BRL_CODE_PUT(BLK, (blk)) +#define BRL_FLG(fLG) BRL_CODE_PUT(FLG, (flg)) +#define BRL_EXT(ext) BRL_CODE_PUT(EXT, (ext)) + +#define BRL_MSK(name) BRL_CODE_PUT(name, BRL_CODE_MASK(name)) +#define BRL_MSK_ARG BRL_MSK(ARG) +#define BRL_MSK_BLK BRL_MSK(BLK) +#define BRL_MSK_FLG BRL_MSK(FLG) +#define BRL_MSK_EXT BRL_MSK(EXT) +#define BRL_MSK_CMD (BRL_MSK_BLK | BRL_MSK_ARG) + +#define BRL_ARG_GET(code) (BRL_CODE_GET(ARG, (code)) | (BRL_CODE_GET(EXT, (code)) << BRL_BITS_ARG)) +#define BRL_ARG_SET(value) (BRL_CODE_SET(ARG, (value)) | BRL_CODE_SET(EXT, ((value) >> BRL_BITS_ARG))) + /* Argument for brl_readCommand() */ typedef enum { BRL_CTX_SCREEN, - BRL_CTX_HELP, - BRL_CTX_STATUS, BRL_CTX_PREFS, - BRL_CTX_MESSAGE + BRL_CTX_CHORDS, + BRL_CTX_WAITING } BRL_DriverCommandContext; /* The following command codes are return values for brl_readCommand(). @@ -145,16 +175,10 @@ typedef enum { BRL_CMD_RESTARTSPEECH /* reinitialize speech driver */, BRL_CMD_OFFLINE /* braille display temporarily unavailable */, - BRL_CMD_SHUTDOWN /* graceful program termination */, - + BRL_driverCommandCount /* must be last */ } BRL_DriverCommand; -#define BRL_MSK_ARG 0XFF -#define BRL_MSK_BLK 0XFF00 -#define BRL_MSK_FLG 0XFF0000 -#define BRL_MSK_CMD (BRL_MSK_BLK | BRL_MSK_ARG) - /* For explicitly setting toggles on/off. */ #define BRL_FLG_TOGGLE_ON 0X010000 /* enable feature */ #define BRL_FLG_TOGGLE_OFF 0X020000 /* disable feature */ @@ -220,6 +244,36 @@ typedef enum { #define BRL_FLG_CHAR_CONTROL 0X040000 /* control key pressed */ #define BRL_FLG_CHAR_META 0X080000 /* meta key pressed */ +/* The bits for each braille dot. + * + * This is the same dot-to-bit mapping which is: + * + specified by the ISO/TR 11548-1 standard + * + used within the Unicode braille row: + */ +/* + * From least- to most-significant octal digit: + * + the first contains dots 1-3 + * + the second contains dots 4-6 + * + the third contains dots 7-8 + * + * Here are a few ways to illustrate a braille cell: + * By Dot By Bit As Octal + * Number Number Digits + * 1 4 0 3 001 010 + * 2 5 1 4 002 020 + * 3 6 2 5 004 040 + * 7 8 6 7 100 200 + */ +#define BRL_DOT1 BRL_ARG_SET(0001) /* upper-left dot of standard braille cell */ +#define BRL_DOT2 BRL_ARG_SET(0002) /* middle-left dot of standard braille cell */ +#define BRL_DOT3 BRL_ARG_SET(0004) /* lower-left dot of standard braille cell */ +#define BRL_DOT4 BRL_ARG_SET(0010) /* upper-right dot of standard braille cell */ +#define BRL_DOT5 BRL_ARG_SET(0020) /* middle-right dot of standard braille cell */ +#define BRL_DOT6 BRL_ARG_SET(0040) /* lower-right dot of standard braille cell */ +#define BRL_DOT7 BRL_ARG_SET(0100) /* lower-left dot of computer braille cell */ +#define BRL_DOT8 BRL_ARG_SET(0200) /* lower-right dot of computer braille cell */ +#define BRL_DOTC BRL_ARG_SET(0400) /* space key pressed */ + #define BRL_BLK_PASSAT 0X2300 /* input AT (aka set 2) keyboard scan code */ #define BRL_BLK_PASSXT 0X2400 /* input XT (aka set 1) keyboard scan code */ #define BRL_BLK_PASSPS2 0X2500 /* input PS/2 (aka set 3) keyboard scan code */ @@ -265,37 +319,6 @@ typedef enum { BRL_genericStatusCellCount } BRL_GenericStatusCell; -#define BRL_MAX_STATUS_CELL_COUNT (MAX(22, BRL_genericStatusCellCount)) - -/* The bits for each braille dot. - * - * This is the same dot-to-bit mapping which is: - * + specified by the ISO/TR 11548-1 standard - * + used within the Unicode braille row: - */ -#define BRL_UC_ROW 0X2800 -/* - * From least- to most-significant octal digit: - * + the first contains dots 1-3 - * + the second contains dots 4-6 - * + the third contains dots 7-8 - * - * Here are a few ways to illustrate a braille cell: - * By Dot By Bit As Octal - * Number Number Digits - * 1 4 0 3 001 010 - * 2 5 1 4 002 020 - * 3 6 2 5 004 040 - * 7 8 6 7 100 200 - */ -#define BRL_DOT1 0001 /* upper-left dot of standard braille cell */ -#define BRL_DOT2 0002 /* middle-left dot of standard braille cell */ -#define BRL_DOT3 0004 /* lower-left dot of standard braille cell */ -#define BRL_DOT4 0010 /* upper-right dot of standard braille cell */ -#define BRL_DOT5 0020 /* middle-right dot of standard braille cell */ -#define BRL_DOT6 0040 /* lower-right dot of standard braille cell */ -#define BRL_DOT7 0100 /* lower-left dot of computer braille cell */ -#define BRL_DOT8 0200 /* lower-right dot of computer braille cell */ #ifdef __cplusplus } diff --git a/Programs/iso_11548-1.h b/Programs/brldots.h similarity index 84% rename from Programs/iso_11548-1.h rename to Programs/brldots.h index 56f6fe2aab1e6407c66fe214c7295a65fcababbb..c19a9bc63babe7384ae6ec98d70fc6b3ad92b5dd 100644 --- a/Programs/iso_11548-1.h +++ b/Programs/brldots.h @@ -2,26 +2,29 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * * This software is maintained by Dave Mielke . */ -#ifndef BRL_INCLUDED_ISO_11548_1 -#define BRL_INCLUDED_ISO_11548_1 +#ifndef BRL_INCLUDED_BRLDOTS +#define BRL_INCLUDED_BRLDOTS #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ +#include + /* The bits for each braille dot as defined by the ISO 11548-1 standard. * * From least- to most-significant octal digit: @@ -38,6 +41,8 @@ extern "C" { * 7 8 6 7 100 200 */ +#define BRL_DOT_COUNT 8 + #define BRL_DOT(number) (1 << ((number) - 1)) #define BRL_DOT1 BRL_DOT(1) /* upper-left dot of standard braille cell */ #define BRL_DOT2 BRL_DOT(2) /* middle-left dot of standard braille cell */ @@ -59,7 +64,9 @@ static inline char brlDotToNumber (BrlDots dot) { return shift? (shift + '0'): 0; } -typedef char BrlDotNumbersBuffer[9]; +typedef BrlDots BrlDotTable[BRL_DOT_COUNT]; + +typedef char BrlDotNumbersBuffer[BRL_DOT_COUNT + 1]; static inline unsigned int brlDotsToNumbers (BrlDots dots, BrlDotNumbersBuffer numbers) { char *number = numbers; @@ -79,4 +86,4 @@ static inline unsigned int brlDotsToNumbers (BrlDots dots, BrlDotNumbersBuffer n } #endif /* __cplusplus */ -#endif /* BRL_INCLUDED_ISO_11548_1 */ +#endif /* BRL_INCLUDED_BRLDOTS */ diff --git a/Programs/brltest.c b/Programs/brltest.c index 8eb790fe974b3358e68dba46d3a794a10ae8f6d1..4f0c0bbb2203586c08f10fa35aad392c3b9cbb07 100644 --- a/Programs/brltest.c +++ b/Programs/brltest.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -29,10 +30,9 @@ #include "program.h" #include "options.h" #include "brl.h" -#include "tbl.h" #include "misc.h" +#include "charset.h" #include "message.h" -#include "scr.h" #include "defaults.h" int updateInterval = DEFAULT_UPDATE_INTERVAL; @@ -81,9 +81,9 @@ BEGIN_OPTION_TABLE(programOptions) END_OPTION_TABLE int -message (const char *string, short flags) { +message (const char *mode, const char *string, short flags) { size_t length = strlen(string); - size_t size = brl.x * brl.y; + size_t size = brl.textColumns * brl.textRows; char buffer[size]; clearStatusCells(&brl); @@ -97,11 +97,18 @@ message (const char *string, short flags) { if (length -= count) { buffer[(count = size) - 1] = WC_C('-'); } - if (!writeBrailleText(&brl, buffer, count)) return 0; + + { + wchar_t characters[count]; + wchar_t text[brl.textColumns * brl.textRows]; + convertCharsToWchars(buffer, characters, count); + fillTextRegion(text, brl.buffer, 0, brl.textColumns, brl.textColumns, brl.textRows, characters, count); + if (!braille->writeWindow(&brl, text)) return 0; + } if (length) { int timer = 0; - while (braille->readCommand(&brl, BRL_CTX_MESSAGE) == EOF) { + while (braille->readCommand(&brl, BRL_CTX_WAITING) == EOF) { if (timer > 4000) break; approximateDelay(updateInterval); timer += updateInterval; @@ -192,7 +199,6 @@ main (int argc, char *argv[]) { } if (chdir(opt_dataDirectory) != -1) { - makeUntextTable(); initializeBrailleDisplay(&brl); brl.dataDirectory = opt_dataDirectory; identifyBrailleDriver(braille, 0); /* start-up messages */ @@ -225,10 +231,16 @@ main (int argc, char *argv[]) { return status; } -/* dummy function to allow brl.o to link... */ +/* dummy functions to allow drivers to link... */ +unsigned char +cursorDots (void) { + return (BRL_DOT7 | BRL_DOT8); +} + void setHelpPageNumber (short page) { } + int currentVirtualTerminal (void) { return 0; diff --git a/Programs/brltty-config.in b/Programs/brltty-config.in index 419d4fa1fe6b96c73738d7cab6a56f99379e4bf2..a6092ce157d820bc610a4c3456a5f0cf22fbec4d 100644 --- a/Programs/brltty-config.in +++ b/Programs/brltty-config.in @@ -3,13 +3,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/Programs/brltty-genkey b/Programs/brltty-genkey index 95baf2251f3649b5c83ccd139f8af52f47e3aa58..6a0831984cb1cc12446912fecc7a631b7631eeba 100755 --- a/Programs/brltty-genkey +++ b/Programs/brltty-genkey @@ -3,13 +3,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/Programs/brltty-install b/Programs/brltty-install index 3c8ff063bd933e01b152a1bea594db98667e874b..38853a4fb89ea0430e7262da65824343d676cd62 100755 --- a/Programs/brltty-install +++ b/Programs/brltty-install @@ -3,13 +3,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/Programs/brltty.c b/Programs/brltty.c index 637347e7dc6456095278046d3ba1dbef5796afba..e5e97cb4acb184dda58c062f6869a012338ba651 100644 --- a/Programs/brltty.c +++ b/Programs/brltty.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -19,27 +20,31 @@ #include #include -#include #include +#include +#include +#include #ifdef HAVE_SYS_WAIT_H #include #endif /* HAVE_SYS_WAIT_H */ -#ifdef HAVE_LIBICUUC +#ifdef HAVE_ICU #include -#endif /* HAVE_LIBICUUC */ +#endif /* HAVE_ICU */ #include "misc.h" #include "message.h" #include "tunes.h" -#include "tbl.h" +#include "ttb.h" +#include "atb.h" #include "ctb.h" -#include "route.h" +#include "routing.h" #include "cut.h" #include "touch.h" #include "cmd.h" #include "charset.h" +#include "unicode.h" #include "scancodes.h" #include "scr.h" #include "brl.h" @@ -62,9 +67,14 @@ Preferences prefs; /* environment (i.e. global) parameters */ static unsigned char infoMode = 0; /* display screen image or info */ BrailleDisplay brl; /* For the Braille routines */ -short fwinshift; /* Full window horizontal distance */ -short hwinshift; /* Half window horizontal distance */ -short vwinshift; /* Window vertical distance */ +unsigned int textStart; +unsigned int textCount; +unsigned char textMaximized = 0; +unsigned int statusStart; +unsigned int statusCount; +unsigned int fullWindowShift; /* Full window horizontal distance */ +unsigned int halfWindowShift; /* Half window horizontal distance */ +unsigned int verticalWindowShift; /* Window vertical distance */ #ifdef ENABLE_CONTRACTED_BRAILLE static int contracted = 0; @@ -111,7 +121,13 @@ static const ScreenState initialScreenState = { static ScreenState **screenStates = NULL; static int screenCount = 0; static ScreenState *p; -ScreenDescription scr; /* For screen state infos */ + +static ScreenDescription scr; /* For screen state infos */ +#define SCR_COORDINATE_OK(coordinate,limit) (((coordinate) >= 0) && ((coordinate) < (limit))) +#define SCR_COLUMN_OK(column) SCR_COORDINATE_OK((column), scr.cols) +#define SCR_ROW_OK(row) SCR_COORDINATE_OK((row), scr.rows) +#define SCR_COORDINATES_OK(column,row) (SCR_COLUMN_OK((column)) && SCR_ROW_OK((row))) +#define SCR_CURSOR_OK() SCR_COORDINATES_OK(scr.posx, scr.posy) static void getScreenAttributes (void) { @@ -143,7 +159,7 @@ updateScreenAttributes (void) { getScreenAttributes(); { - int maximum = MAX(scr.rows-(int)brl.y, 0); + int maximum = MAX(scr.rows-(int)brl.textRows, 0); int *table[] = {&p->winy, &p->moty, NULL}; int **value = table; while (*value) { @@ -212,163 +228,153 @@ terminationHandler (int signalNumber) { terminationSignal = signalNumber; } -#ifdef SIGCHLD static void -childDeathHandler (int signalNumber) { - pid_t process; - int status; - while ((process = waitpid(-1, &status, WNOHANG)) > 0) { - if (process == routingProcess) { - routingProcess = 0; - routingStatus = WIFEXITED(status)? WEXITSTATUS(status): ROUTE_ERROR; - } - } +checkRoutingStatus (RoutingStatus ok, int wait) { + RoutingStatus status = getRoutingStatus(wait); + if (status != ROUTING_NONE) + playTune((status > ok)? &tune_routing_failed: &tune_routing_succeeded); } -#endif /* SIGCHLD */ -static int -testRoutingStatus (RoutingStatus ok) { - if (routingStatus != ROUTE_NONE) { - playTune((routingStatus > ok)? &tune_routing_failed: &tune_routing_succeeded); - routingStatus = ROUTE_NONE; - return 1; - } - return 0; +static void +renderDigitUpper (unsigned char *cell, int digit) { + *cell |= portraitDigits[digit]; } static void -awaitRoutingStatus (RoutingStatus ok) { -#ifdef SIGCHLD - sigset_t newMask, oldMask; - sigemptyset(&newMask); - sigaddset(&newMask, SIGCHLD); - sigprocmask(SIG_BLOCK, &newMask, &oldMask); -#endif /* SIGCHLD */ - - while (!testRoutingStatus(ok)) { -#ifdef SIGCHLD - sigsuspend(&oldMask); -#else /* SIGCHLD */ - approximateDelay(100); -#endif /* SIGCHLD */ - } +renderDigitLower (unsigned char *cell, int digit) { + *cell |= lowerDigit(portraitDigits[digit]); +} -#ifdef SIGCHLD - sigprocmask(SIG_SETMASK, &oldMask, NULL); -#endif /* SIGCHLD */ +static void +renderNumberUpper (unsigned char *cells, int number) { + renderDigitUpper(&cells[0], (number / 10) % 10); + renderDigitUpper(&cells[1], number % 10); } static void -setDigitUpper (unsigned char *cell, int digit) { - *cell |= portraitDigits[digit]; +renderNumberLower (unsigned char *cells, int number) { + renderDigitLower(&cells[0], (number / 10) % 10); + renderDigitLower(&cells[1], number % 10); } static void -setDigitLower (unsigned char *cell, int digit) { - *cell |= lowerDigit(portraitDigits[digit]); +renderNumberVertical (unsigned char *cell, int number) { + renderDigitUpper(cell, (number / 10) % 10); + renderDigitLower(cell, number % 10); } static void -setNumberUpper (unsigned char *cells, int number) { - setDigitUpper(&cells[0], (number / 10) % 10); - setDigitUpper(&cells[1], number % 10); +renderCoordinatesVertical (unsigned char *cells, int column, int row) { + renderNumberUpper(&cells[0], row); + renderNumberLower(&cells[0], column); } static void -setNumberLower (unsigned char *cells, int number) { - setDigitLower(&cells[0], (number / 10) % 10); - setDigitLower(&cells[1], number % 10); +renderCoordinatesAlphabetic (unsigned char *cell, int column, int row) { + /* the coordinates are presented as an underlined letter as the Alva DOS TSR */ + *cell = !SCR_COORDINATES_OK(column, row)? convertCharacterToDots(textTable, WC_C('z')): + ((updateIntervals / 16) % (row / 25 + 1))? 0: + convertCharacterToDots(textTable, (row % 25 + WC_C('a'))) | + ((column / textCount) << 6); } +typedef void (*RenderStatusField) (unsigned char *cells); +#define SF_COLUMN_NUMBER(column) (SCR_COLUMN_OK((column))? (column)+1: 0) +#define SF_ROW_NUMBER(row) (SCR_ROW_OK((row))? (row)+1: 0) + static void -setNumberVertical (unsigned char *cell, int number) { - setDigitUpper(cell, (number / 10) % 10); - setDigitLower(cell, number % 10); +renderStatusField_windowCoordinates (unsigned char *cells) { + renderCoordinatesVertical(cells, SF_COLUMN_NUMBER(p->winx), SF_ROW_NUMBER(p->winy)); } static void -setCoordinateUpper (unsigned char *cells, int x, int y) { - setNumberUpper(&cells[0], x); - setNumberUpper(&cells[2], y); +renderStatusField_windowColumn (unsigned char *cells) { + renderNumberVertical(cells, SF_COLUMN_NUMBER(p->winx)); } static void -setCoordinateLower (unsigned char *cells, int x, int y) { - setNumberLower(&cells[0], x); - setNumberLower(&cells[2], y); +renderStatusField_windowRow (unsigned char *cells) { + renderNumberVertical(cells, SF_ROW_NUMBER(p->winy)); } static void -setCoordinateVertical (unsigned char *cells, int x, int y) { - setNumberUpper(&cells[0], y); - setNumberLower(&cells[0], x); +renderStatusField_cursorCoordinates (unsigned char *cells) { + renderCoordinatesVertical(cells, SF_COLUMN_NUMBER(scr.posx), SF_ROW_NUMBER(scr.posy)); } static void -setCoordinateAlphabetic (unsigned char *cell, int x, int y) { - /* The coords are given with letters as the DOS tsr */ - *cell = ((updateIntervals / 16) % (y / 25 + 1))? 0: - convertWcharToDots(textTable, (y % 25 + 'a')) | - ((x / brl.x) << 6); +renderStatusField_cursorColumn (unsigned char *cells) { + renderNumberVertical(cells, SF_COLUMN_NUMBER(scr.posx)); } static void -setStateLetter (unsigned char *cell) { - *cell = convertWcharToDots(textTable, - p->showAttributes? WC_C('a'): - isFrozenScreen()? WC_C('f'): - p->trackCursor? WC_C('t'): - WC_C(' ')); +renderStatusField_cursorRow (unsigned char *cells) { + renderNumberVertical(cells, SF_ROW_NUMBER(scr.posy)); } static void -setStateDots (unsigned char *cell) { - *cell = (isFrozenScreen() ? BRL_DOT1: 0) | - (prefs.showCursor ? BRL_DOT4: 0) | - (p->showAttributes ? BRL_DOT2: 0) | - (prefs.cursorStyle ? BRL_DOT5: 0) | - (prefs.alertTunes ? BRL_DOT3: 0) | - (prefs.blinkingCursor? BRL_DOT6: 0) | - (p->trackCursor ? BRL_DOT7: 0) | - (prefs.slidingWindow ? BRL_DOT8: 0); +renderStatusField_cursorAndWindowColumn (unsigned char *cells) { + renderNumberUpper(cells, SF_COLUMN_NUMBER(scr.posx)); + renderNumberLower(cells, SF_COLUMN_NUMBER(p->winx)); } static void -setStatusCellsNone (unsigned char *cells) { +renderStatusField_cursorAndWindowRow (unsigned char *cells) { + renderNumberUpper(cells, SF_ROW_NUMBER(scr.posy)); + renderNumberLower(cells, SF_ROW_NUMBER(p->winy)); } static void -setStatusCellsAlva (unsigned char *cells) { - if (isHelpScreen()) { - cells[0] = convertWcharToDots(textTable, WC_C('h')); - cells[1] = convertWcharToDots(textTable, WC_C('l')); - cells[2] = convertWcharToDots(textTable, WC_C('p')); - } else { - setCoordinateAlphabetic(&cells[0], scr.posx, scr.posy); - setCoordinateAlphabetic(&cells[1], p->winx, p->winy); - setStateLetter(&cells[2]); - } +renderStatusField_screenNumber (unsigned char *cells) { + renderNumberVertical(cells, scr.number); +} + +static void +renderStatusField_stateDots (unsigned char *cells) { + *cells = (isFrozenScreen() ? BRL_DOT1: 0) | + (prefs.showCursor ? BRL_DOT4: 0) | + (p->showAttributes ? BRL_DOT2: 0) | + (prefs.cursorStyle ? BRL_DOT5: 0) | + (prefs.alertTunes ? BRL_DOT3: 0) | + (prefs.blinkingCursor? BRL_DOT6: 0) | + (p->trackCursor ? BRL_DOT7: 0) | + (prefs.slidingWindow ? BRL_DOT8: 0); +} + +static void +renderStatusField_stateLetter (unsigned char *cells) { + *cells = convertCharacterToDots(textTable, + p->showAttributes? WC_C('a'): + isFrozenScreen()? WC_C('f'): + p->trackCursor? WC_C('t'): + WC_C(' ')); +} + +static void +renderStatusField_time (unsigned char *cells) { + time_t now = time(NULL); + struct tm *local = localtime(&now); + renderNumberUpper(cells, local->tm_hour); + renderNumberLower(cells, local->tm_min); } static void -setStatusCellsTieman (unsigned char *cells) { - setCoordinateUpper(&cells[0], scr.posx+1, scr.posy+1); - setCoordinateLower(&cells[0], p->winx+1, p->winy+1); - setStateDots(&cells[4]); +renderStatusField_alphabeticWindowCoordinates (unsigned char *cells) { + renderCoordinatesAlphabetic(cells, p->winx, p->winy); } static void -setStatusCellsPB80 (unsigned char *cells) { - setNumberVertical(&cells[0], p->winy+1); +renderStatusField_alphabeticCursorCoordinates (unsigned char *cells) { + renderCoordinatesAlphabetic(cells, scr.posx, scr.posy); } static void -setStatusCellsGeneric (unsigned char *cells) { +renderStatusField_generic (unsigned char *cells) { cells[BRL_firstStatusCell] = BRL_STATUS_CELLS_GENERIC; - cells[BRL_GSC_BRLCOL] = p->winx+1; - cells[BRL_GSC_BRLROW] = p->winy+1; - cells[BRL_GSC_CSRCOL] = scr.posx+1; - cells[BRL_GSC_CSRROW] = scr.posy+1; + cells[BRL_GSC_BRLCOL] = SF_COLUMN_NUMBER(p->winx); + cells[BRL_GSC_BRLROW] = SF_ROW_NUMBER(p->winy); + cells[BRL_GSC_CSRCOL] = SF_COLUMN_NUMBER(scr.posx); + cells[BRL_GSC_CSRROW] = SF_ROW_NUMBER(scr.posy); cells[BRL_GSC_SCRNUM] = scr.number; cells[BRL_GSC_FREEZE] = isFrozenScreen(); cells[BRL_GSC_DISPMD] = p->showAttributes; @@ -390,59 +396,188 @@ setStatusCellsGeneric (unsigned char *cells) { cells[BRL_GSC_AUTOREPEAT] = prefs.autorepeat; cells[BRL_GSC_AUTOSPEAK] = prefs.autospeak; } +typedef struct { + RenderStatusField render; + unsigned char length; +} StatusFieldEntry; + +static const StatusFieldEntry statusFieldTable[] = { + {NULL, 0}, + {renderStatusField_windowCoordinates, 2}, + {renderStatusField_windowColumn, 1}, + {renderStatusField_windowRow, 1}, + {renderStatusField_cursorCoordinates, 2}, + {renderStatusField_cursorColumn, 1}, + {renderStatusField_cursorRow, 1}, + {renderStatusField_cursorAndWindowColumn, 2}, + {renderStatusField_cursorAndWindowRow, 2}, + {renderStatusField_screenNumber, 1}, + {renderStatusField_stateDots, 1}, + {renderStatusField_stateLetter, 1}, + {renderStatusField_time, 2}, + {renderStatusField_alphabeticWindowCoordinates, 1}, + {renderStatusField_alphabeticCursorCoordinates, 1}, + {renderStatusField_generic, BRL_genericStatusCellCount} +}; +static const unsigned int statusFieldCount = ARRAY_COUNT(statusFieldTable); -static void -setStatusCellsMDV (unsigned char *cells) { - setCoordinateVertical(&cells[0], p->winx+1, p->winy+1); +unsigned int +getStatusFieldsLength (const unsigned char *fields) { + unsigned int length = 0; + while (*fields != sfEnd) length += statusFieldTable[*fields++].length; + return length; } static void -setStatusCellsVoyager (unsigned char *cells) { - setNumberVertical(&cells[0], p->winy+1); - setNumberVertical(&cells[1], scr.posy+1); - if (isFrozenScreen()) { - cells[2] = convertWcharToDots(textTable, WC_C('F')); - } else { - setNumberVertical(&cells[2], scr.posx+1); +renderStatusFields (const unsigned char *fields, unsigned char *cells) { + while (*fields != sfEnd) { + StatusField field = *fields++; + + if (field < statusFieldCount) { + const StatusFieldEntry *sf = &statusFieldTable[field]; + sf->render(cells); + cells += sf->length; + } } } -typedef void (*SetStatusCellsHandler) (unsigned char *cells); - -typedef struct { - SetStatusCellsHandler set; - unsigned char count; -} StatusStyleEntry; - -static const StatusStyleEntry statusStyleTable[] = { - {setStatusCellsNone, 0}, - {setStatusCellsAlva, 3}, - {setStatusCellsTieman, 5}, - {setStatusCellsPB80, 1}, - {setStatusCellsGeneric, 0}, - {setStatusCellsMDV, 2}, - {setStatusCellsVoyager, 3} -}; -static const int statusStyleCount = ARRAY_COUNT(statusStyleTable); - static int setStatusCells (void) { if (braille->writeStatus) { - unsigned char cells[BRL_MAX_STATUS_CELL_COUNT]; /* status cell buffer */ - memset(cells, 0, sizeof(cells)); - if (prefs.statusStyle < statusStyleCount) - statusStyleTable[prefs.statusStyle].set(cells); - if (!braille->writeStatus(&brl, cells)) return 0; + const unsigned char *fields = prefs.statusFields; + unsigned int length = getStatusFieldsLength(fields); + + if (length > 0) { + unsigned char cells[length]; /* status cell buffer */ + unsigned int count = brl.statusColumns * brl.statusRows; + + memset(cells, 0, length); + renderStatusFields(fields, cells); + + if (count > length) { + unsigned char buffer[count]; + memcpy(buffer, cells, length); + memset(&buffer[length], 0, count-length); + if (!braille->writeStatus(&brl, buffer)) return 0; + } else if (!braille->writeStatus(&brl, cells)) { + return 0; + } + } else if (!clearStatusCells(&brl)) { + return 0; + } } + return 1; } +static void +fillStatusSeparator (wchar_t *text, unsigned char *dots) { + if ((prefs.statusSeparator != ssNone) && (statusCount > 0)) { + int onRight = statusStart > 0; + unsigned int column = (onRight? statusStart: textStart) - 1; + + wchar_t textSeparator; +#ifdef HAVE_WCHAR_H + const wchar_t textSeparator_left = 0X23B8; /* LEFT VERTICAL BOX LINE */ + const wchar_t textSeparator_right = 0X23B9; /* RIGHT VERTICAL BOX LINE */ + const wchar_t textSeparator_block = 0X2503; /* BOX DRAWINGS HEAVY VERTICAL */ +#else /* HAVE_WCHAR_H */ + const wchar_t textSeparator_left = 0X5B; /* LEFT SQUARE BRACKET */ + const wchar_t textSeparator_right = 0X5D; /* RIGHT SQUARE BRACKET */ + const wchar_t textSeparator_block = 0X7C; /* VERTICAL LINE */ +#endif /* HAVE_WCHAR_H */ + + unsigned char dotsSeparator; + const unsigned char dotsSeparator_left = BRL_DOT1 | BRL_DOT2 | BRL_DOT3 | BRL_DOT7; + const unsigned char dotsSeparator_right = BRL_DOT4 | BRL_DOT5 | BRL_DOT6 | BRL_DOT8; + const unsigned char dotsSeparator_block = dotsSeparator_left | dotsSeparator_right; + + text += column; + dots += column; + + switch (prefs.statusSeparator) { + case ssBlock: + textSeparator = textSeparator_block; + dotsSeparator = dotsSeparator_block; + break; + + case ssStatusSide: + textSeparator = onRight? textSeparator_right: textSeparator_left; + dotsSeparator = onRight? dotsSeparator_right: dotsSeparator_left; + break; + + case ssTextSide: + textSeparator = onRight? textSeparator_left: textSeparator_right; + dotsSeparator = onRight? dotsSeparator_left: dotsSeparator_right; + break; + + default: + textSeparator = WC_C(' '); + dotsSeparator = 0; + break; + } + + { + int row; + for (row=0; rowwriteWindow(&brl, textBuffer); +} + +int +writeBrailleBytes (const char *mode, const char *bytes, size_t length) { + wchar_t characters[length]; + convertCharsToWchars(bytes, characters, length); + return writeBrailleCharacters(mode, characters, length); +} + +int +writeBrailleString (const char *mode, const char *string) { + return writeBrailleBytes(mode, string, strlen(string)); +} + +int +showBrailleString (const char *mode, const char *string, unsigned int duration) { + int ok = writeBrailleString(mode, string); + drainBrailleOutput(&brl, duration); + return ok; +} + static int showInfo (void) { - const size_t size = brl.x * brl.y; + const char *mode = "info"; + const size_t size = brl.textColumns * brl.textRows; char text[size + 1]; - if (!setStatusText(&brl, gettext("info"))) return 0; + if (!setStatusText(&brl, mode)) return 0; /* Here we must be careful. Some displays (e.g. Braille Lite 18) * are very small, and others (e.g. Bookworm) are even smaller. @@ -454,10 +589,14 @@ showInfo (void) { unsigned char cells[cellCount]; char prefix[cellCount]; - memset(cells, 0, cellCount); - setCoordinateUpper(&cells[0], scr.posx+1, scr.posy+1); - setCoordinateLower(&cells[0], p->winx+1, p->winy+1); - setStateDots(&cells[4]); + { + static const unsigned char fields[] = { + sfCursorAndWindowColumn, sfCursorAndWindowRow, sfStateDots, sfEnd + }; + + memset(cells, 0, cellCount); + renderStatusFields(fields, cells); + } memset(prefix, 'x', cellCount); snprintf(text, sizeof(text), "%.*s %02d %c%c%c%c%c%c%n", @@ -477,7 +616,7 @@ showInfo (void) { int i; for (i=0; iwinx+1, p->winy+1, scr.posx+1, scr.posy+1, scr.number, + SF_COLUMN_NUMBER(p->winx), SF_ROW_NUMBER(p->winy), + SF_COLUMN_NUMBER(scr.posx), SF_ROW_NUMBER(scr.posy), + scr.number, p->trackCursor? 't': ' ', prefs.showCursor? (prefs.blinkingCursor? 'B': 'v'): (prefs.blinkingCursor? 'b': ' '), @@ -500,7 +640,7 @@ showInfo (void) { isFrozenScreen()? 'f': ' ', prefs.textStyle? '6': '8', prefs.blinkingCapitals? 'B': ' '); - return writeBrailleString(&brl, text); + return writeBrailleString(mode, text); } } @@ -508,17 +648,19 @@ static void slideWindowVertically (int y) { if (y < p->winy) p->winy = y; - else if (y >= (p->winy + brl.y)) - p->winy = y - (brl.y - 1); + else if (y >= (p->winy + brl.textRows)) + p->winy = y - (brl.textRows - 1); } static void placeWindowHorizontally (int x) { - p->winx = x / brl.x * brl.x; + p->winx = x / textCount * textCount; } -static void +static int trackCursor (int place) { + if (!SCR_CURSOR_OK()) return 0; + #ifdef ENABLE_CONTRACTED_BRAILLE if (contracted) { p->winy = scr.posy; @@ -540,29 +682,30 @@ trackCursor (int place) { p->winx = length; } contractedTrack = 1; - return; + return 1; } #endif /* ENABLE_CONTRACTED_BRAILLE */ if (place) - if ((scr.posx < p->winx) || (scr.posx >= (p->winx + brl.x)) || - (scr.posy < p->winy) || (scr.posy >= (p->winy + brl.y))) + if ((scr.posx < p->winx) || (scr.posx >= (p->winx + textCount)) || + (scr.posy < p->winy) || (scr.posy >= (p->winy + brl.textRows))) placeWindowHorizontally(scr.posx); if (prefs.slidingWindow) { - int reset = brl.x * 3 / 10; - int trigger = prefs.eagerSlidingWindow? brl.x*3/20: 0; + int reset = textCount * 3 / 10; + int trigger = prefs.eagerSlidingWindow? textCount*3/20: 0; if (scr.posx < (p->winx + trigger)) p->winx = MAX(scr.posx-reset, 0); - else if (scr.posx >= (p->winx + brl.x - trigger)) - p->winx = MAX(MIN(scr.posx+reset+1, scr.cols)-(int)brl.x, 0); + else if (scr.posx >= (p->winx + textCount - trigger)) + p->winx = MAX(MIN(scr.posx+reset+1, scr.cols)-(int)textCount, 0); } else if (scr.posx < p->winx) { - p->winx -= ((p->winx - scr.posx - 1) / brl.x + 1) * brl.x; + p->winx -= ((p->winx - scr.posx - 1) / textCount + 1) * textCount; if (p->winx < 0) p->winx = 0; } else - p->winx += (scr.posx - p->winx) / brl.x * brl.x; + p->winx += (scr.posx - p->winx) / textCount * textCount; slideWindowVertically(scr.posy); + return 1; } #ifdef ENABLE_SPEECH_SUPPORT @@ -580,7 +723,7 @@ trackSpeech (int index) { static void sayScreenCharacters (const ScreenCharacter *characters, size_t count, int immediate) { - unsigned char text[count * MB_LEN_MAX]; + unsigned char text[count * UTF8_LEN_MAX]; unsigned char *t = text; unsigned char attributes[count]; @@ -672,7 +815,7 @@ canMoveUp (void) { static int canMoveDown (void) { - return p->winy < (scr.rows - brl.y); + return p->winy < (scr.rows - brl.textRows); } static inline int @@ -749,7 +892,7 @@ upOneLine (void) { static void downOneLine (void) { - if (p->winy < (scr.rows - brl.y)) { + if (p->winy < (scr.rows - brl.textRows)) { p->winy++; } else { playTune(&tune_bounce); @@ -778,7 +921,7 @@ typedef int (*RowTester) (int column, int row, void *data); static void findRow (int column, int increment, RowTester test, void *data) { int row = p->winy + increment; - while ((row >= 0) && (row <= scr.rows-(int)brl.y)) { + while ((row >= 0) && (row <= scr.rows-(int)brl.textRows)) { if (test(column, row, data)) { p->winy = row; return; @@ -795,7 +938,7 @@ testIndent (int column, int row, void *data) { readScreen(0, row, count, 1, characters); while (column >= 0) { wchar_t text = characters[column].text; - if ((text != ' ') && (text != 0)) return 1; + if (text != WC_C(' ')) return 1; --column; } return 0; @@ -840,14 +983,14 @@ isContracting (void) { static int getCursorOffset (int x, int y) { - if ((scr.posy == y) && (scr.posx >= x)) return scr.posx - x; + if ((scr.posy == y) && (scr.posx >= x) && (scr.posx < scr.cols)) return scr.posx - x; return -1; } static int getContractedLength (int x, int y) { int inputLength = scr.cols - x; - int outputLength = brl.x * brl.y; + int outputLength = textCount * brl.textRows; wchar_t inputBuffer[inputLength]; unsigned char outputBuffer[outputLength]; readScreenText(x, y, inputLength, 1, inputBuffer); @@ -873,7 +1016,7 @@ placeRightEdge (int column) { } else #endif /* ENABLE_CONTRACTED_BRAILLE */ { - p->winx = column / brl.x * brl.x; + p->winx = column / textCount * textCount; } } @@ -892,7 +1035,7 @@ shiftWindowLeft (void) { } else #endif /* ENABLE_CONTRACTED_BRAILLE */ { - p->winx -= MIN(fwinshift, p->winx); + p->winx -= MIN(fullWindowShift, p->winx); } return 1; @@ -908,7 +1051,7 @@ shiftWindowRight (void) { } else #endif /* ENABLE_CONTRACTED_BRAILLE */ { - shift = fwinshift; + shift = fullWindowShift; } if (p->winx >= (scr.cols - shift)) return 0; @@ -922,29 +1065,60 @@ getWindowLength (void) { if (isContracting()) return getContractedLength(p->winx, p->winy); #endif /* ENABLE_CONTRACTED_BRAILLE */ - return brl.x; + return textCount; } static int -getOffset (int arg, int end) { +isTextOffset (int *arg, int end, int relaxed) { + int value = *arg; + + if (value < textStart) return 0; + if ((value -= textStart) >= textCount) return 0; + + if ((p->winx + value) >= scr.cols) { + if (!relaxed) return 0; + value = scr.cols - 1; + } + #ifdef ENABLE_CONTRACTED_BRAILLE if (contracted) { int result = 0; int index; - for (index=0; index arg) { + if (offset > value) { if (end) result = index - 1; break; } + result = index; } } - return result; + if (end && (index == contractedLength)) result = contractedLength - 1; + + value = result; } #endif /* ENABLE_CONTRACTED_BRAILLE */ - return arg; + + *arg = value; + return 1; +} + +static int +getCharacterCoordinates (int arg, int *column, int *row, int end, int relaxed) { + if (arg == BRL_MSK_ARG) { + if (!SCR_CURSOR_OK()) return 0; + *column = scr.posx; + *row = scr.posy; + } else { + if (!isTextOffset(&arg, end, relaxed)) return 0; + *column = p->winx + arg; + *row = p->winy; + } + return 1; } static int cursorState; /* display cursor on (toggled during blink) */ @@ -1039,19 +1213,6 @@ insertKey (ScreenKey key, int flags) { return insertScreenKey(key); } -static int -insertCharacter (unsigned char character, int flags) { - ScreenKey key; - - { - wint_t wc = convertCharToWchar(character); - if (wc == WEOF) return 0; - key = wc; - } - - return insertKey(key, flags); -} - static RepeatState repeatState; void @@ -1090,14 +1251,14 @@ checkPointer (void) { if (moved) { if (column < p->winx) { p->winx = column; - } else if (column >= (p->winx + brl.x)) { - p->winx = column + 1 - brl.x; + } else if (column >= (p->winx + textCount)) { + p->winx = column + 1 - textCount; } if (row < p->winy) { p->winy = row; - } else if (row >= (p->winy + brl.y)) { - p->winy = row + 1 - brl.y; + } else if (row >= (p->winy + brl.textRows)) { + p->winy = row + 1 - brl.textRows; } } } else { @@ -1119,11 +1280,21 @@ highlightWindow (void) { right = left; bottom = top; } else if (!brl.touchEnabled) { - right = brl.x - 1; - bottom = brl.y - 1; - } else if (!touchGetRegion(&left, &right, &top, &bottom)) { - unhighlightScreenRegion(); - return; + right = textCount - 1; + bottom = brl.textRows - 1; + } else { + int clear = 1; + + if (touchGetRegion(&left, &right, &top, &bottom)) { + left = MAX(left, textStart); + right = MIN(right, textStart+textCount-1); + if (isTextOffset(&left, 0, 0) && isTextOffset(&right, 1, 1)) clear = 0; + } + + if (clear) { + unhighlightScreenRegion(); + return; + } } highlightScreenRegion(p->winx+left, p->winx+right, p->winy+top, p->winy+bottom); @@ -1152,11 +1323,6 @@ beginProgram (int argc, char *argv[]) { /* Setup everything required on startup */ startup(argc, argv); -#ifdef SIGCHLD - /* Install the handler which monitors the death of child processes. */ - handleSignal(SIGCHLD, childDeathHandler); -#endif /* SIGCHLD */ - return 0; } @@ -1176,7 +1342,7 @@ runProgram (void) { */ p->trkx = scr.posx; p->trky = scr.posy; - trackCursor(1); /* set initial window position */ + if (!trackCursor(1)) p->winx = p->winy = 0; /* set initial window position */ p->motx = p->winx; p->moty = p->winy; oldwinx = p->winx; oldwiny = p->winy; highlightWindow(); @@ -1191,19 +1357,24 @@ runProgram (void) { testProgramTermination(); closeTuneDevice(0); - testRoutingStatus(ROUTE_DONE); + checkRoutingStatus(ROUTING_DONE, 0); if (opt_releaseDevice) { if (scr.unreadable) { if (!suspended) { setStatusCells(); - writeBrailleString(&brl, scr.unreadable); + writeBrailleString("wrn", scr.unreadable); + #ifdef ENABLE_API - if (apiStarted) + if (apiStarted) { api_suspend(&brl); - else + } else #endif /* ENABLE_API */ + + { destructBrailleDriver(); + } + suspended = 1; } } else { @@ -1228,13 +1399,10 @@ runProgram (void) { while (1) { int oldmotx = p->winx; int oldmoty = p->winy; - BRL_DriverCommandContext context = infoMode? BRL_CTX_STATUS: - isHelpScreen()? BRL_CTX_HELP: - BRL_CTX_SCREEN; int command; testProgramTermination(); - command = writable? readBrailleCommand(&brl, context): BRL_CMD_RESTARTBRL; + command = writable? readBrailleCommand(&brl, BRL_CTX_SCREEN): BRL_CMD_RESTARTBRL; if (brl.highlightWindow) { brl.highlightWindow = 0; @@ -1279,10 +1447,6 @@ runProgram (void) { offline = 1; } goto isOffline; - - case BRL_CMD_SHUTDOWN: - LogPrint(LOG_NOTICE, "shutdown requested"); - exit(0); } } @@ -1312,18 +1476,18 @@ runProgram (void) { case BRL_CMD_BOT_LEFT: p->winx = 0; case BRL_CMD_BOT: - p->winy = scr.rows - brl.y; + p->winy = scr.rows - brl.textRows; break; case BRL_CMD_WINUP: if (p->winy == 0) playTune (&tune_bounce); - p->winy = MAX (p->winy - vwinshift, 0); + p->winy = MAX (p->winy - verticalWindowShift, 0); break; case BRL_CMD_WINDN: - if (p->winy == scr.rows - brl.y) + if (p->winy == scr.rows - brl.textRows) playTune (&tune_bounce); - p->winy = MIN (p->winy + vwinshift, scr.rows - brl.y); + p->winy = MIN (p->winy + verticalWindowShift, scr.rows - brl.textRows); break; case BRL_CMD_LNUP: @@ -1361,11 +1525,11 @@ runProgram (void) { int findBlank = 1; int line = p->winy; int i; - while ((line >= 0) && (line <= (scr.rows - brl.y))) { + while ((line >= 0) && (line <= (scr.rows - brl.textRows))) { readScreen(0, line, scr.cols, 1, characters); for (i=0; iwiny, scr.cols, 1, characters); while (length < scr.cols) { - if (characters[length].text == ' ') break; + if (characters[length].text == WC_C(' ')) break; ++length; } if (length < scr.cols) { @@ -1429,7 +1593,7 @@ runProgram (void) { for (i=0; i= 0) && (line <= (scr.rows - brl.y))) { + while ((line >= 0) && (line <= (scr.rows - brl.textRows))) { const wchar_t *address = buffer; size_t length = scr.cols; readScreenText(0, line, length, 1, buffer); @@ -1444,7 +1608,7 @@ runProgram (void) { int end = p->winx + count - 1; if (end < length) length = end; } else { - int start = p->winx + brl.x; + int start = p->winx + textCount; if (start > length) start = length; address += start; length -= start; @@ -1456,7 +1620,7 @@ runProgram (void) { ++address, --length; p->winy = line; - p->winx = (address - buffer) / brl.x * brl.x; + p->winx = (address - buffer) / textCount * textCount; found = 1; break; } @@ -1471,17 +1635,23 @@ runProgram (void) { } case BRL_CMD_LNBEG: - if (p->winx) + if (p->winx) { p->winx = 0; - else + } else { playTune(&tune_bounce); + } break; - case BRL_CMD_LNEND: - if (p->winx < (scr.cols - brl.x)) - p->winx = scr.cols - brl.x; - else + + case BRL_CMD_LNEND: { + int end = MAX(scr.cols, textCount) - textCount; + + if (p->winx < end) { + p->winx = end; + } else { playTune(&tune_bounce); + } break; + } case BRL_CMD_CHRLT: if (p->winx == 0) @@ -1499,11 +1669,11 @@ runProgram (void) { if (p->winx == 0) playTune(&tune_bounce); else - p->winx = MAX(p->winx-hwinshift, 0); + p->winx = MAX(p->winx-halfWindowShift, 0); break; case BRL_CMD_HWINRT: - if (p->winx < (scr.cols - hwinshift)) - p->winx += hwinshift; + if (p->winx < (scr.cols - halfWindowShift)) + p->winx += halfWindowShift; else playTune(&tune_bounce); break; @@ -1513,17 +1683,19 @@ runProgram (void) { int oldX = p->winx; if (shiftWindowLeft()) { if (prefs.skipBlankWindows) { + int charCount; if (prefs.blankWindowsSkipMode == sbwEndOfLine) goto skipEndOfLine; + charCount = MIN(scr.cols, p->winx+textCount); if (!showCursor() || (scr.posy != p->winy) || - (scr.posx >= (p->winx + brl.x))) { - int charCount = MIN(scr.cols, p->winx+brl.x); + (scr.posx < 0) || + (scr.posx >= charCount)) { int charIndex; ScreenCharacter characters[charCount]; readScreen(0, p->winy, charCount, 1, characters); for (charIndex=0; charIndexwiny, scr.cols, 1, characters); - for (charIndex=scr.cols-1; charIndex>=0; --charIndex) { + for (charIndex=scr.cols-1; charIndex>0; --charIndex) { wchar_t text = characters[charIndex].text; - if ((text != ' ') && (text != 0)) break; + if (text != WC_C(' ')) break; } - if (showCursor() && (scr.posy == p->winy)) + if (showCursor() && (scr.posy == p->winy) && SCR_COLUMN_OK(scr.posx)) { charIndex = MAX(charIndex, scr.posx); - charIndex = MAX(charIndex, 0); + } if (charIndex < p->winx) placeRightEdge(charIndex); } break; @@ -1577,14 +1749,16 @@ runProgram (void) { charCount = getWindowLength(); charCount = MIN(charCount, scr.cols-p->winx); readScreen(p->winx, p->winy, charCount, 1, characters); - for (charIndex=(charCount-1); charIndex>=0; charIndex--) { + for (charIndex=charCount-1; charIndex>=0; charIndex--) { wchar_t text = characters[charIndex].text; - if ((text != ' ') && (text != 0)) break; + if (text != WC_C(' ')) break; } if (showCursor() && (scr.posy == p->winy) && - (scr.posx < (p->winx + charCount))) + (scr.posx >= 0) && + (scr.posx < (p->winx + charCount))) { charIndex = MAX(charIndex, scr.posx-p->winx); + } if (charIndex >= 0) break; } break; @@ -1604,7 +1778,7 @@ runProgram (void) { readScreen(p->winx, p->winy, charCount, 1, characters); for (charIndex=0; charIndexwiny >= (scr.rows - brl.y)) { + if (p->winy >= (scr.rows - brl.textRows)) { playTune(&tune_bounce); p->winx = oldX; break; @@ -1631,7 +1805,7 @@ runProgram (void) { ScreenCharacter characters[scr.cols]; while (1) { if (!shiftWindowRight()) { - if (p->winy >= (scr.rows - brl.y)) { + if (p->winy >= (scr.rows - brl.textRows)) { playTune(&tune_bounce); p->winx = oldX; p->winy = oldY; @@ -1646,12 +1820,14 @@ runProgram (void) { readScreen(p->winx, p->winy, charCount, 1, characters); for (charIndex=0; charIndexwiny) && - (scr.posx >= p->winx)) + (scr.posx < scr.cols) && + (scr.posx >= p->winx)) { charIndex = MIN(charIndex, scr.posx-p->winx); + } if (charIndex < charCount) break; } break; @@ -1665,7 +1841,7 @@ runProgram (void) { break; } case BRL_CMD_HOME: - trackCursor(1); + if (!trackCursor(1)) playTune(&tune_command_rejected); break; case BRL_CMD_RESTARTBRL: @@ -1674,7 +1850,7 @@ runProgram (void) { writable = 1; break; case BRL_CMD_PASTE: - if (isLiveScreen() && !routingProcess) { + if (isLiveScreen() && !isRouting()) { if (cutPaste()) break; } playTune(&tune_command_rejected); @@ -1780,7 +1956,7 @@ runProgram (void) { break; #endif /* ENABLE_PREFERENCES_MENU */ case BRL_CMD_PREFLOAD: - if (loadPreferences(1)) { + if (loadPreferences()) { resetBlinkingStates(); playTune(&tune_command_done); } @@ -1791,11 +1967,16 @@ runProgram (void) { if (isHelpScreen()) { deactivateHelpScreen(); } else if (!activateHelpScreen()) { - message(gettext("help not available"), 0); + message(NULL, gettext("help not available"), 0); } break; case BRL_CMD_INFO: - TOGGLE_NOPLAY(infoMode); + if ((prefs.statusPosition == spNone) || haveStatusCells()) { + TOGGLE_NOPLAY(infoMode); + } else { + TOGGLE_NOPLAY(textMaximized); + reconfigureWindow(); + } break; #ifdef ENABLE_LEARN_MODE @@ -1937,12 +2118,16 @@ runProgram (void) { break; } - case BRL_BLK_PASSCHAR: - if (!insertCharacter(arg, flags)) playTune(&tune_command_rejected); + case BRL_BLK_PASSCHAR: { + wint_t character = convertCharToWchar(arg); + if ((character == WEOF) || + !insertKey(character, flags)) + playTune(&tune_command_rejected); break; + } case BRL_BLK_PASSDOTS: - if (!insertCharacter(untextTable[arg], flags)) playTune(&tune_command_rejected); + if (!insertKey(convertDotsToCharacter(textTable, arg), flags)) playTune(&tune_command_rejected); break; case BRL_BLK_PASSAT: @@ -1963,50 +2148,65 @@ runProgram (void) { playTune(&tune_command_rejected); break; - case BRL_BLK_ROUTE: - if (arg < brl.x) { - arg = getOffset(arg, 0); - if (routeCursor(MIN(p->winx+arg, scr.cols-1), p->winy, scr.number)) { + case BRL_BLK_ROUTE: { + int column, row; + + if (getCharacterCoordinates(arg, &column, &row, 0, 1)) { + if (routeCursor(column, row, scr.number)) { playTune(&tune_routing_started); break; } } playTune(&tune_command_rejected); break; + } - case BRL_BLK_CUTBEGIN: - if (arg < brl.x && p->winx+arg < scr.cols) { - arg = getOffset(arg, 0); - cutBegin(p->winx+arg, p->winy); - } else + case BRL_BLK_CUTBEGIN: { + int column, row; + + if (getCharacterCoordinates(arg, &column, &row, 0, 0)) { + cutBegin(column, row); + } else { playTune(&tune_command_rejected); + } break; - case BRL_BLK_CUTAPPEND: - if (arg < brl.x && p->winx+arg < scr.cols) { - arg = getOffset(arg, 0); - cutAppend(p->winx+arg, p->winy); - } else + } + + case BRL_BLK_CUTAPPEND: { + int column, row; + + if (getCharacterCoordinates(arg, &column, &row, 0, 0)) { + cutAppend(column, row); + } else { playTune(&tune_command_rejected); + } break; - case BRL_BLK_CUTRECT: - if (arg < brl.x) { - arg = getOffset(arg, 1); - if (cutRectangle(MIN(p->winx+arg, scr.cols-1), p->winy)) + } + + case BRL_BLK_CUTRECT: { + int column, row; + + if (getCharacterCoordinates(arg, &column, &row, 1, 1)) + if (cutRectangle(column, row)) break; - } playTune(&tune_command_rejected); break; - case BRL_BLK_CUTLINE: - if (arg < brl.x) { - arg = getOffset(arg, 1); - if (cutLine(MIN(p->winx+arg, scr.cols-1), p->winy)) + } + + case BRL_BLK_CUTLINE: { + int column, row; + + if (getCharacterCoordinates(arg, &column, &row, 1, 1)) + if (cutLine(column, row)) break; - } playTune(&tune_command_rejected); break; + } + + case BRL_BLK_DESCCHAR: { + int column, row; - case BRL_BLK_DESCCHAR: - if (arg < brl.x && p->winx+arg < scr.cols) { + if (getCharacterCoordinates(arg, &column, &row, 0, 0)) { static char *colours[] = { strtext("black"), strtext("blue"), @@ -2030,8 +2230,7 @@ runProgram (void) { int length = 0; ScreenCharacter character; - arg = getOffset(arg, 0); - readScreen(p->winx+arg, p->winy, 1, 1, &character); + readScreen(column, row, 1, 1, &character); { uint32_t text = character.text; @@ -2054,7 +2253,7 @@ runProgram (void) { length += count; } -#ifdef HAVE_LIBICUUC +#ifdef HAVE_ICU { char name[0X40]; UErrorCode error = U_ZERO_ERROR; @@ -2066,20 +2265,26 @@ runProgram (void) { length += count; } } -#endif /* HAVE_LIBICUUC */ +#endif /* HAVE_ICU */ - message(buffer, 0); + message(NULL, buffer, 0); } else playTune(&tune_command_rejected); break; + } - case BRL_BLK_SETLEFT: - if (arg < brl.x && p->winx+arg < scr.cols) { - arg = getOffset(arg, 0); - p->winx += arg; - } else + case BRL_BLK_SETLEFT: { + int column, row; + + if (getCharacterCoordinates(arg, &column, &row, 0, 0)) { + p->winx = column; + p->winy = row; + } else { playTune(&tune_command_rejected); + } break; + } + case BRL_BLK_GOTOLINE: if (flags & BRL_FLG_LINE_SCALED) arg = rescaleInteger(arg, BRL_MSK_ARG, scr.rows-1); @@ -2111,31 +2316,49 @@ runProgram (void) { break; { + int column, row; int increment; + case BRL_BLK_PRINDENT: increment = -1; goto findIndent; + case BRL_BLK_NXINDENT: increment = 1; + findIndent: - arg = getOffset(arg, 0); - findRow(MIN(p->winx+arg, scr.cols-1), - increment, testIndent, NULL); + if (getCharacterCoordinates(arg, &column, &row, 0, 0)) { + p->winy = row; + findRow(column, increment, testIndent, NULL); + } else { + playTune(&tune_command_rejected); + } break; } - case BRL_BLK_PRDIFCHAR: - if (arg < brl.x && p->winx+arg < scr.cols) - upDifferentCharacter(isSameText, getOffset(arg, 0)); - else + case BRL_BLK_PRDIFCHAR: { + int column, row; + + if (getCharacterCoordinates(arg, &column, &row, 0, 0)) { + p->winy = row; + upDifferentCharacter(isSameText, column); + } else { playTune(&tune_command_rejected); + } break; - case BRL_BLK_NXDIFCHAR: - if (arg < brl.x && p->winx+arg < scr.cols) - downDifferentCharacter(isSameText, getOffset(arg, 0)); - else + } + + case BRL_BLK_NXDIFCHAR: { + int column, row; + + if (getCharacterCoordinates(arg, &column, &row, 0, 0)) { + p->winy = row; + downDifferentCharacter(isSameText, column); + } else { playTune(&tune_command_rejected); + } break; + } default: playTune(&tune_command_rejected); @@ -2166,10 +2389,10 @@ runProgram (void) { if (!(command & BRL_MSK_BLK)) { if (command & BRL_FLG_ROUTE) { int left = p->winx; - int right = left + brl.x - 1; + int right = MIN(left+textCount, scr.cols) - 1; int top = p->winy; - int bottom = top + brl.y - 1; + int bottom = MIN(top+brl.textRows, scr.rows) - 1; if ((scr.posx < left) || (scr.posx > right) || (scr.posy < top) || (scr.posy > bottom)) { @@ -2177,7 +2400,7 @@ runProgram (void) { MIN(MAX(scr.posy, top), bottom), scr.number)) { playTune(&tune_routing_started); - awaitRoutingStatus(ROUTE_WRONG_COLUMN); + checkRoutingStatus(ROUTING_WRONG_COLUMN, 1); { ScreenDescription description; @@ -2238,7 +2461,7 @@ runProgram (void) { } } /* If the cursor moves in cursor tracking mode: */ - if (!routingProcess && (scr.posx != p->trkx || scr.posy != p->trky)) { + if (!isRouting() && (scr.posx != p->trkx || scr.posy != p->trky)) { trackCursor(0); p->trkx = scr.posx; p->trky = scr.posy; @@ -2271,42 +2494,27 @@ runProgram (void) { if (oldCharacters) { if ((newScreen == oldScreen) && (p->winy == oldwiny) && (newWidth == oldWidth)) { - if (!isSameRow(newCharacters, oldCharacters, newWidth, isSameText)) { - if ((newY == p->winy) && (newY == oldY)) { - if ((newX > oldX) && - isSameRow(newCharacters, oldCharacters, oldX, isSameText) && - isSameRow(newCharacters+newX, oldCharacters+oldX, newWidth-newX, isSameText)) { - column = oldX; - count = newX - oldX; - goto speak; - } - - if ((newX < oldX) && - isSameRow(newCharacters, oldCharacters, newX, isSameText) && - isSameRow(newCharacters+newX, oldCharacters+oldX, newWidth-oldX, isSameText)) { - column = newX; - count = oldX - newX; - characters = oldCharacters; - goto speak; - } + int onScreen = (newX >= 0) && (newX < newWidth); + if (!isSameRow(newCharacters, oldCharacters, newWidth, isSameText)) { + if ((newY == p->winy) && (newY == oldY) && onScreen) { if ((newX == oldX) && isSameRow(newCharacters, oldCharacters, newX, isSameText)) { int oldLength = oldWidth; int newLength = newWidth; - int x; + int x = newX + 1; while (oldLength > oldX) { - if (oldCharacters[oldLength-1].text != ' ') break; + if (oldCharacters[oldLength-1].text != WC_C(' ')) break; --oldLength; } while (newLength > newX) { - if (newCharacters[newLength-1].text != ' ') break; + if (newCharacters[newLength-1].text != WC_C(' ')) break; --newLength; } - for (x=newX+1; 1; ++x) { + while (1) { int done = 1; if (x < newLength) { @@ -2331,14 +2539,34 @@ runProgram (void) { } if (done) break; + x += 1; } } + if (oldX < 0) oldX = 0; + if ((newX > oldX) && + isSameRow(newCharacters, oldCharacters, oldX, isSameText) && + isSameRow(newCharacters+newX, oldCharacters+oldX, newWidth-newX, isSameText)) { + column = oldX; + count = newX - oldX; + goto speak; + } + + if (oldX >= oldWidth) oldX = oldWidth - 1; + if ((newX < oldX) && + isSameRow(newCharacters, oldCharacters, newX, isSameText) && + isSameRow(newCharacters+newX, oldCharacters+oldX, oldWidth-oldX, isSameText)) { + column = newX; + count = oldX - newX; + characters = oldCharacters; + goto speak; + } + while (newCharacters[column].text == oldCharacters[column].text) ++column; while (newCharacters[count-1].text == oldCharacters[count-1].text) --count; count -= column; } - } else if ((newY == p->winy) && ((newX != oldX) || (newY != oldY))) { + } else if ((newY == p->winy) && ((newX != oldX) || (newY != oldY)) && onScreen) { column = newX; count = 1; } else { @@ -2388,17 +2616,17 @@ runProgram (void) { if (infoMode) { if (!showInfo()) writable = 0; } else { - const int cellCount = brl.x * brl.y; - wchar_t textBuffer[cellCount]; + const unsigned int windowLength = brl.textColumns * brl.textRows; + const unsigned int textLength = textCount * brl.textRows; + wchar_t textBuffer[windowLength]; - wmemset(textBuffer, WC_C(' '), cellCount); + memset(brl.buffer, 0, windowLength); + wmemset(textBuffer, WC_C(' '), windowLength); brl.cursor = -1; #ifdef ENABLE_CONTRACTED_BRAILLE contracted = 0; if (isContracting()) { - int windowLength = cellCount; - while (1) { int cursorOffset = CTB_NO_CURSOR; @@ -2406,7 +2634,7 @@ runProgram (void) { ScreenCharacter inputCharacters[inputLength]; wchar_t inputText[inputLength]; - int outputLength = windowLength; + int outputLength = textLength; unsigned char outputBuffer[outputLength]; if ((scr.posy == p->winy) && (scr.posx >= p->winx)) cursorOffset = scr.posx - p->winx; @@ -2429,7 +2657,7 @@ runProgram (void) { int inputEnd = inputLength; if (contractedTrack) { - if (outputLength == windowLength) { + if (outputLength == textLength) { int inputIndex = inputEnd; while (inputIndex) { int offset = contractedOffsets[--inputIndex]; @@ -2463,14 +2691,11 @@ runProgram (void) { } } - memcpy(brl.buffer, outputBuffer, outputLength); - memset(brl.buffer+outputLength, 0, windowLength-outputLength); - if (cursorOffset < inputEnd) { while (cursorOffset >= 0) { int offset = contractedOffsets[cursorOffset]; - if (offset >= 0) { - if (offset < brl.x) brl.cursor = offset; + if (offset != CTB_NO_OFFSET) { + brl.cursor = ((offset / textCount) * brl.textColumns) + textStart + (offset % textCount); break; } --cursorOffset; @@ -2487,29 +2712,33 @@ runProgram (void) { int inputOffset; int outputOffset = 0; unsigned char attributes = 0; + unsigned char attributesBuffer[outputLength]; for (inputOffset=0; inputOffset= 0) { - while (outputOffset < offset) outputBuffer[outputOffset++] = attributes; + if (offset != CTB_NO_OFFSET) { + while (outputOffset < offset) attributesBuffer[outputOffset++] = attributes; attributes = 0; } attributes |= inputCharacters[inputOffset].attributes; } - while (outputOffset < outputLength) outputBuffer[outputOffset++] = attributes; + while (outputOffset < outputLength) attributesBuffer[outputOffset++] = attributes; if (p->showAttributes) { for (outputOffset=0; outputOffsetwinx); - ScreenCharacter characters[cellCount]; + int windowColumns = MIN(textCount, scr.cols-p->winx); + ScreenCharacter characters[textLength]; - readScreen(p->winx, p->winy, winlen, brl.y, characters); - if (winlen < brl.x) { + readScreen(p->winx, p->winy, windowColumns, brl.textRows, characters); + if (windowColumns < textCount) { /* We got a rectangular piece of text with readScreen but the display * is in an off-right position with some cells at the end blank * so we'll insert these cells and blank them. */ int i; - for (i=brl.y-1; i>0; i--) { - memmove(characters + (i * brl.x), - characters + (i * winlen), - winlen * sizeof(*characters)); + for (i=brl.textRows-1; i>0; i--) { + memmove(characters + (i * textCount), + characters + (i * windowColumns), + windowColumns * sizeof(*characters)); } - for (i=0; i= p->winx) && (scr.posx < (p->winx + brl.x)) && - (scr.posy >= p->winy) && (scr.posy < (p->winy + brl.y))) - brl.cursor = (scr.posy - p->winy) * brl.x + scr.posx - p->winx; + if ((scr.posx >= p->winx) && (scr.posx < (p->winx + textCount)) && + (scr.posy >= p->winy) && (scr.posy < (p->winy + brl.textRows)) && + (scr.posx < scr.cols) && (scr.posy < scr.rows)) + brl.cursor = ((scr.posy - p->winy) * brl.textColumns) + textStart + scr.posx - p->winx; /* blank out capital letters if they're blinking and should be off */ if (prefs.blinkingCapitals && !capitalsState) { int i; - for (i=0; itext)) character->text = WC_C(' '); } @@ -2558,28 +2788,39 @@ runProgram (void) { /* convert to dots using the current translation table */ if (p->showAttributes) { - int i; - for (i=0; i<(brl.x*brl.y); ++i) { - brl.buffer[i] = attributesTable[characters[i].attributes]; + int row; + + for (row=0; rowtext); - if (prefs.textStyle) brl.buffer[i] &= ~(BRL_DOT7 | BRL_DOT8); - textBuffer[i] = character->text; - } + int underline = showAttributesUnderline(); + int row; - /* Attribute underlining: if viewing text (not attributes), attribute - * underlining is active and visible and we're not in help, then we - * get the attributes for the current region and OR the underline. - */ - if (showAttributesUnderline()) { - int count = brl.x * brl.y; - int i; - for (i=0; itext); + if (prefs.textStyle) *dots &= ~(BRL_DOT7 | BRL_DOT8); + if (underline) overlayAttributesUnderline(dots, character->attributes); + + text[column] = character->text; } } } @@ -2591,6 +2832,22 @@ runProgram (void) { } } + if (statusCount > 0) { + const unsigned char *fields = prefs.statusFields; + unsigned int length = getStatusFieldsLength(fields); + + if (length > 0) { + unsigned char cells[length]; + memset(cells, 0, length); + renderStatusFields(fields, cells); + fillDotsRegion(textBuffer, brl.buffer, + statusStart, statusCount, brl.textColumns, brl.textRows, + cells, length); + } + + fillStatusSeparator(textBuffer, brl.buffer); + } + if (!(setStatusCells() && braille->writeWindow(&brl, textBuffer))) writable = 0; } #ifdef ENABLE_API @@ -2618,16 +2875,18 @@ runProgram (void) { } int -message (const char *string, short flags) { +message (const char *mode, const char *string, short flags) { int ok = 1; + if (!mode) mode = ""; + #ifdef ENABLE_SPEECH_SUPPORT - if (prefs.alertTunes && !(flags & MSG_SILENT)) sayString(&spk, string, 1); + if (prefs.autospeak && !(flags & MSG_SILENT)) sayString(&spk, string, 1); #endif /* ENABLE_SPEECH_SUPPORT */ if (braille && brl.buffer) { size_t length = strlen(string); - size_t size = brl.x * brl.y; + size_t size = textCount * brl.textRows; char text[size]; #ifdef ENABLE_API @@ -2658,14 +2917,14 @@ message (const char *string, short flags) { text[index - 1] = '>'; } - if (!writeBrailleText(&brl, text, index)) { + if (!writeBrailleBytes(mode, text, index)) { ok = 0; break; } if (flags & MSG_WAITKEY) { while (1) { - int command = readCommand(BRL_CTX_MESSAGE); + int command = readCommand(BRL_CTX_WAITING); testProgramTermination(); if (command == EOF) { drainBrailleOutput(&brl, updateInterval); @@ -2680,7 +2939,7 @@ message (const char *string, short flags) { int command; testProgramTermination(); drainBrailleOutput(&brl, updateInterval); - while ((command = readCommand(BRL_CTX_MESSAGE)) == BRL_CMD_NOOP); + while ((command = readCommand(BRL_CTX_WAITING)) == BRL_CMD_NOOP); if (command != EOF) break; } } @@ -2697,15 +2956,18 @@ message (const char *string, short flags) { int showDotPattern (unsigned char dots, unsigned char duration) { - if (braille->writeStatus) { - unsigned char cells[BRL_MAX_STATUS_CELL_COUNT]; /* status cell buffer */ - memset(cells, dots, sizeof(cells)); + if (braille->writeStatus && (brl.statusColumns > 0)) { + unsigned int length = brl.statusColumns * brl.statusRows; + unsigned char cells[length]; /* status cell buffer */ + memset(cells, dots, length); if (!braille->writeStatus(&brl, cells)) return 0; } - memset(brl.buffer, dots, brl.x*brl.y); - return braille->writeWindow(&brl, NULL); + memset(brl.buffer, dots, brl.textColumns*brl.textRows); + if (!braille->writeWindow(&brl, NULL)) return 0; + drainBrailleOutput(&brl, duration); + return 1; } #ifdef __MINGW32__ diff --git a/Programs/brltty.h b/Programs/brltty.h index 849651f6e9dca598c5168920cc8ec1e10022bcac..8d63cdc816f6b0b387f4aea1226a2141c7756718 100644 --- a/Programs/brltty.h +++ b/Programs/brltty.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -28,6 +29,7 @@ extern "C" { #include "brl.h" #include "spk.h" #include "ctb.h" +#include "ktb.h" typedef enum { sbwAll, @@ -40,6 +42,20 @@ typedef enum { sayEnqueue } SayMode; +typedef enum { + spNone, + spLeft, + spRight +} StatusPosition; + +typedef enum { + ssNone, + ssSpace, + ssBlock, + ssStatusSide, + ssTextSide +} StatusSeparator; + /* * Structure definition for preferences (settings which are saveable). * PREFS_MAGIC_NUMBER has to be bumped whenever the definition of @@ -86,17 +102,29 @@ typedef struct { unsigned char alertDots; unsigned char skipBlankWindows; unsigned char midiInstrument; - unsigned char statusStyle; + unsigned char spare1; unsigned char windowOverlap; unsigned char speechRate; unsigned char speechVolume; unsigned char brailleFirmness; unsigned char speechPunctuation; unsigned char speechPitch; + unsigned char statusPosition; + unsigned char statusCount; + unsigned char statusSeparator; + unsigned char statusFields[10]; } PACKED Preferences; + extern Preferences prefs; /* current preferences settings */ #define PREFERENCES_TIME(time) ((time) * 10) +extern unsigned int getStatusFieldsLength (const unsigned char *fields); + +extern int writeBrailleCharacters (const char *mode, const wchar_t *characters, size_t length); +extern int writeBrailleBytes (const char *mode, const char *bytes, size_t length); +extern int writeBrailleString (const char *mode, const char *string); +extern int showBrailleString (const char *mode, const char *string, unsigned int duration); + extern int opt_releaseDevice; extern char *opt_pcmDevice; extern char *opt_midiDevice; @@ -107,21 +135,29 @@ extern ContractionTable *contractionTable; extern void testProgramTermination (void); extern void startup (int argc, char *argv[]); -extern int loadPreferences (int change); +extern int loadPreferences (void); extern int savePreferences (void); extern int updatePreferences (void); extern unsigned char cursorDots (void); extern BrailleDisplay brl; /* braille driver reference */ -extern short fwinshift; /* Full window horizontal distance */ -extern short hwinshift; /* Half window horizontal distance */ -extern short vwinshift; /* Window vertical distance */ +extern unsigned int textStart; +extern unsigned int textCount; +extern unsigned char textMaximized; +extern unsigned int statusStart; +extern unsigned int statusCount; +extern unsigned int fullWindowShift; /* Full window horizontal distance */ +extern unsigned int halfWindowShift; /* Half window horizontal distance */ +extern unsigned int verticalWindowShift; /* Window vertical distance */ extern void restartBrailleDriver (void); extern int constructBrailleDriver (void); extern void destructBrailleDriver (void); +extern void reconfigureWindow (void); +extern int haveStatusCells (void); + #ifdef ENABLE_SPEECH_SUPPORT extern SpeechSynthesizer spk; diff --git a/Programs/charset.c b/Programs/charset.c index 95f376391a14aa05fb26b93d448844971a2d100b..a043723be2f7a682611e9380dd418a3d4e8451f3 100644 --- a/Programs/charset.c +++ b/Programs/charset.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -36,6 +37,7 @@ #include "misc.h" #include "lock.h" #include "charset.h" +#include "unicode.h" static char *currentCharset = NULL; @@ -216,9 +218,6 @@ static const CharacterSet characterSets[] = { }; static const CharacterSet *characterSet; -#define UNICODE_ROWS_PER_PLANE 0X100 -#define UNICODE_CELLS_PER_ROW 0X100 - static char *unicodeRows[UNICODE_ROWS_PER_PLANE]; static void @@ -306,6 +305,16 @@ convertWcharToChar (wchar_t wc) { } #endif /* conversions */ +void +convertCharsToWchars (const char *c, wchar_t *wc, size_t count) { + while (count > 0) { + wint_t wi = convertCharToWchar(*c++); + if (wi == WEOF) wi = UNICODE_REPLACEMENT_CHARACTER; + *wc++ = wi; + count -= 1; + } +} + size_t convertWcharToUtf8 (wchar_t wc, Utf8Buffer utf8) { size_t utfs; @@ -314,13 +323,14 @@ convertWcharToUtf8 (wchar_t wc, Utf8Buffer utf8) { *utf8 = wc; utfs = 1; } else { - char buffer[MB_LEN_MAX]; - char *end = buffer + sizeof(buffer); + Utf8Buffer buffer; + char *end = &buffer[0] + sizeof(buffer); char *byte = end; + static const wchar_t mask = (1 << ((sizeof(wchar_t) * 8) - 6)) - 1; do { *--byte = (wc & 0X3F) | 0X80; - } while (wc >>= 6); + } while ((wc = (wc >> 6) & mask)); utfs = end - byte; if ((*byte & 0X7F) >= (1 << (7 - utfs))) { @@ -463,7 +473,7 @@ setCharset (const char *name) { } else if (currentCharset) { return currentCharset; } else { - name = (MB_CUR_MAX == 1)? getLocaleCharset(): "ISO-8859-1"; + name = getLocaleCharset(); } if (!(charset = strdup(name))) return NULL; diff --git a/Programs/charset.h b/Programs/charset.h index fa585ff62bb1f5136a062a8011df604a0e9d36cb..e54caffabb1fc8a02591efa50cc11a12960e565b 100644 --- a/Programs/charset.h +++ b/Programs/charset.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -22,8 +23,6 @@ extern "C" { #endif /* __cplusplus */ -#include - #include "lock.h" extern const char *setCharset (const char *name); @@ -32,7 +31,9 @@ extern const char *getCharset (void); extern const char *getLocaleCharset (void); extern const char *getWcharCharset (void); -typedef char Utf8Buffer[MB_LEN_MAX+1]; +#define UTF8_SIZE(bits) (((bits) < 8)? 1: (((bits) + 3) / 5)) +#define UTF8_LEN_MAX UTF8_SIZE(sizeof(wchar_t) * 8) +typedef char Utf8Buffer[UTF8_LEN_MAX + 1]; extern size_t convertCharToUtf8 (char c, Utf8Buffer utf8); extern int convertUtf8ToChar (const char **utf8, size_t *utfs); @@ -42,6 +43,7 @@ extern wint_t convertUtf8ToWchar (const char **utf8, size_t *utfs); extern wint_t convertCharToWchar (char c); extern int convertWcharToChar (wchar_t wc); +extern void convertCharsToWchars (const char *c, wchar_t *wc, size_t count); extern int lockCharset (LockOptions options); extern void unlockCharset (void); diff --git a/Programs/cmd.c b/Programs/cmd.c index 77e94c9c5b18f9d32739a96c2463cde205545dac..fd0e0905a855092a5bd575b41f94fc6bebeb637e 100644 --- a/Programs/cmd.c +++ b/Programs/cmd.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -19,20 +20,62 @@ #include #include +#include #include "misc.h" #include "brldefs.h" #include "cmd.h" - +#include "ttb.h" #include "charset.h" +#include "queue.h" const CommandEntry commandTable[] = { -#ifdef ENABLE_LEARN_MODE #include "cmds.auto.h" -#endif /* ENABLE_LEARN_MODE */ {EOF, NULL, NULL} }; +static int +isTypedCommand (int code, const int *codes) { + while (*codes != EOF) { + if (code == *codes) return 1; + codes += 1; + } + + return 0; +} + +int +isBaseCommand (const CommandEntry *command) { + static const int codes[] = { + BRL_BLK_SWITCHVT, + BRL_BLK_SETMARK, BRL_BLK_GOTOMARK, + BRL_BLK_GOTOLINE, + BRL_BLK_PASSKEY + BRL_KEY_FUNCTION, + EOF + }; + return isTypedCommand(command->code, codes); +} + +int +isCharacterCommand (const CommandEntry *command) { + static const int codes[] = { + BRL_BLK_ROUTE, + BRL_BLK_CUTBEGIN, BRL_BLK_CUTAPPEND, + BRL_BLK_CUTRECT, BRL_BLK_CUTLINE, + BRL_BLK_PRINDENT, BRL_BLK_NXINDENT, + BRL_BLK_DESCCHAR, BRL_BLK_SETLEFT, + BRL_BLK_PRDIFCHAR, BRL_BLK_NXDIFCHAR, + EOF + }; + return isTypedCommand(command->code, codes); +} + +int +isToggleCommand (const CommandEntry *command) { + const char *prefix = "toggle "; + return strncasecmp(command->description, prefix, strlen(prefix)) == 0; +} + void describeCommand (int command, char *buffer, int size) { int blk = command & BRL_MSK_BLK; @@ -71,7 +114,7 @@ describeCommand (int command, char *buffer, int size) { break; case BRL_BLK_PASSDOTS: { - unsigned char dots[] = {BRL_DOT1, BRL_DOT2, BRL_DOT3, BRL_DOT4, BRL_DOT5, BRL_DOT6, BRL_DOT7, BRL_DOT8}; + static const unsigned char dots[] = {BRL_DOT1, BRL_DOT2, BRL_DOT3, BRL_DOT4, BRL_DOT5, BRL_DOT6, BRL_DOT7, BRL_DOT8}; int dot; number = 0; for (dot=0; dotcommand = command; + if (enqueueItem(queue, item)) return 1; + + free(item); + } + } + } + + return 0; +} + +int +dequeueCommand (void) { + int command = EOF; + Queue *queue = getCommandQueue(0); + + if (queue) { + CommandQueueItem *item = dequeueItem(queue); + + if (item) { + command = item->command; + free(item); + } + } + + return command; +} + void resetRepeatState (RepeatState *state) { state->command = EOF; @@ -214,23 +309,35 @@ handleRepeatFlags (int *command, RepeatState *state, int panning, int delay, int } } +static brlapi_keyCode_t +cmdWCharToBrlapi (wchar_t wc) { + if (iswLatin1(wc)) { + /* latin1 character */ + return BRLAPI_KEY_TYPE_SYM | wc; + } else { + /* unicode character */ + return BRLAPI_KEY_TYPE_SYM | BRLAPI_KEY_SYM_UNICODE | wc; + } +} + brlapi_keyCode_t -cmdBrlttyToBrlapi (int command) { +cmdBrlttyToBrlapi (int command, int retainDots) { brlapi_keyCode_t code; - switch (command & BRL_MSK_BLK) { - case BRL_BLK_PASSCHAR: { - wchar_t wc = convertCharToWchar(command & BRL_MSK_ARG); - if (iswLatin1(wc)) { - /* latin1 character */ - code = wc; - } else { - /* unicode character */ - code = BRLAPI_KEY_SYM_UNICODE | wc; + int arg = BRL_ARG_GET(command); + int blk = command & BRL_MSK_BLK; + switch (blk) { + case BRL_BLK_PASSCHAR: + code = cmdWCharToBrlapi(convertCharToWchar(arg)); + break; + case BRL_BLK_PASSDOTS: + if (retainDots) { + if (arg == (BRLAPI_DOTC >> BRLAPI_KEY_CMD_ARG_SHIFT)) arg = 0; + goto doDefault; } + code = cmdWCharToBrlapi(convertDotsToCharacter(textTable, arg)); break; - } case BRL_BLK_PASSKEY: - switch (command & BRL_MSK_ARG) { + switch (arg) { case BRL_KEY_ENTER: code = BRLAPI_KEY_SYM_LINEFEED; break; case BRL_KEY_TAB: code = BRLAPI_KEY_SYM_TAB; break; case BRL_KEY_BACKSPACE: code = BRLAPI_KEY_SYM_BACKSPACE; break; @@ -245,22 +352,25 @@ cmdBrlttyToBrlapi (int command) { case BRL_KEY_END: code = BRLAPI_KEY_SYM_END; break; case BRL_KEY_INSERT: code = BRLAPI_KEY_SYM_INSERT; break; case BRL_KEY_DELETE: code = BRLAPI_KEY_SYM_DELETE; break; - default: code = BRLAPI_KEY_SYM_FUNCTION + (command & BRL_MSK_ARG) - BRL_KEY_FUNCTION; break; + default: code = BRLAPI_KEY_SYM_FUNCTION + arg - BRL_KEY_FUNCTION; break; } break; default: + doDefault: code = BRLAPI_KEY_TYPE_CMD - | (((command & BRL_MSK_BLK) >> 8) << BRLAPI_KEY_CMD_BLK_SHIFT) - | (command & BRL_MSK_ARG); + | (blk >> BRL_SHIFT_BLK << BRLAPI_KEY_CMD_BLK_SHIFT) + | (arg << BRLAPI_KEY_CMD_ARG_SHIFT) + ; break; } - if ((command & BRL_MSK_BLK) == BRL_BLK_GOTOLINE) + if (blk == BRL_BLK_GOTOLINE) code = code | (command & BRL_FLG_LINE_SCALED ? BRLAPI_KEY_FLG_LINE_SCALED : 0) | (command & BRL_FLG_LINE_TOLEFT ? BRLAPI_KEY_FLG_LINE_TOLEFT : 0) ; - if ((command & BRL_MSK_BLK) == BRL_BLK_PASSCHAR - || (command & BRL_MSK_BLK) == BRL_BLK_PASSKEY) + if (blk == BRL_BLK_PASSCHAR + || blk == BRL_BLK_PASSKEY + || blk == BRL_BLK_PASSDOTS) code = code | (command & BRL_FLG_CHAR_CONTROL ? BRLAPI_KEY_FLG_CONTROL : 0) | (command & BRL_FLG_CHAR_META ? BRLAPI_KEY_FLG_META : 0) @@ -284,8 +394,8 @@ cmdBrlapiToBrltty (brlapi_keyCode_t code) { int cmd; switch (code & BRLAPI_KEY_TYPE_MASK) { case BRLAPI_KEY_TYPE_CMD: - cmd = (((code&BRLAPI_KEY_CMD_BLK_MASK)>>BRLAPI_KEY_CMD_BLK_SHIFT)<<8) - |(code&BRLAPI_KEY_CMD_ARG_MASK); + cmd = BRL_BLK((code&BRLAPI_KEY_CMD_BLK_MASK)>>BRLAPI_KEY_CMD_BLK_SHIFT) + | BRL_ARG_SET((code&BRLAPI_KEY_CMD_ARG_MASK)>>BRLAPI_KEY_CMD_ARG_SHIFT); break; case BRLAPI_KEY_TYPE_SYM: { unsigned long keysym; diff --git a/Programs/cmd.h b/Programs/cmd.h index 7cc5f960ea41c0ea8d95460afb6138588acd628d..e1e7375cb7b8655755db4599922907c7d64de8e9 100644 --- a/Programs/cmd.h +++ b/Programs/cmd.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -35,6 +36,12 @@ typedef struct { extern const CommandEntry commandTable[]; extern void describeCommand (int command, char *buffer, int size); +extern int isBaseCommand (const CommandEntry *command); +extern int isCharacterCommand (const CommandEntry *command); +extern int isToggleCommand (const CommandEntry *command); + +extern int enqueueCommand (int command); +extern int dequeueCommand (void); typedef struct { int command; @@ -45,7 +52,7 @@ typedef struct { extern void resetRepeatState (RepeatState *state); extern void handleRepeatFlags (int *command, RepeatState *state, int panning, int delay, int interval); -extern brlapi_keyCode_t cmdBrlttyToBrlapi (int command); +extern brlapi_keyCode_t cmdBrlttyToBrlapi (int command, int retainDots); extern int cmdBrlapiToBrltty (brlapi_keyCode_t code); #ifdef __cplusplus diff --git a/Programs/cmds.awk b/Programs/cmds.awk index 845fba5163493487a24227f432e7ce05e744d9f6..e675f9e14a50165e8fcaee2e247f6db42b90dd69 100644 --- a/Programs/cmds.awk +++ b/Programs/cmds.awk @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # @@ -32,7 +33,7 @@ function brlBlock(name, symbol, value, help) { } function brlKey(name, symbol, value, help) { - writeCommandEntry(name, "BRL_BLK_PASSKEY+" symbol, help) + writeCommandEntry("KEY_" name, "BRL_BLK_PASSKEY+" symbol, help) } function brlFlag(name, symbol, value, help) { diff --git a/Programs/config.c b/Programs/config.c index 8f42164da7a48ad21095ac54baa79bc7421be3e4..b0fef29a36dcbe0757c69b71141920e467bf6ebf 100644 --- a/Programs/config.c +++ b/Programs/config.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -24,7 +25,9 @@ #include #include #include +#include #include +#include #include #include #include @@ -50,8 +53,10 @@ #include "brl.h" #include "spk.h" #include "scr.h" -#include "tbl.h" +#include "ttb.h" +#include "atb.h" #include "ctb.h" +#include "ktb.h" #include "tunes.h" #include "message.h" #include "misc.h" @@ -131,11 +136,14 @@ static char *opt_textTable; static char *opt_attributesTable; #ifdef ENABLE_CONTRACTED_BRAILLE -static char *opt_contractionsDirectory; static char *opt_contractionTable; ContractionTable *contractionTable = NULL; #endif /* ENABLE_CONTRACTED_BRAILLE */ +static char *opt_keyTable; +static char *opt_keyboardProperties; +static KeyboardProperties keyboardProperties; + #ifdef ENABLE_API static int opt_noApi; static char *opt_apiParameters; @@ -336,6 +344,7 @@ BEGIN_OPTION_TABLE(programOptions) .flags = OPT_Config | OPT_Environ, .argument = strtext("file"), .setting.string = &opt_textTable, + .defaultSetting = "auto", .description = strtext("Path to text translation table file.") }, @@ -348,15 +357,6 @@ BEGIN_OPTION_TABLE(programOptions) }, #ifdef ENABLE_CONTRACTED_BRAILLE - { .letter = 'C', - .word = "contractions-directory", - .flags = OPT_Hidden | OPT_Config | OPT_Environ, - .argument = strtext("directory"), - .setting.string = &opt_contractionsDirectory, - .defaultSetting = DATA_DIRECTORY, - .description = strtext("Path to directory for contractions tables.") - }, - { .letter = 'c', .word = "contraction-table", .flags = OPT_Config | OPT_Environ, @@ -366,6 +366,22 @@ BEGIN_OPTION_TABLE(programOptions) }, #endif /* ENABLE_CONTRACTED_BRAILLE */ + { .letter = 'k', + .word = "key-table", + .flags = OPT_Config | OPT_Environ, + .argument = strtext("file"), + .setting.string = &opt_keyTable, + .description = strtext("Path to key table file.") + }, + + { .letter = 'K', + .word = "keyboard-properties", + .flags = OPT_Hidden | OPT_Extend | OPT_Config | OPT_Environ, + .argument = strtext("arg,..."), + .setting.string = &opt_keyboardProperties, + .description = strtext("Properties of the keyboard.") + }, + #ifdef ENABLE_SPEECH_SUPPORT { .letter = 's', .word = "speech-driver", @@ -493,27 +509,81 @@ BEGIN_OPTION_TABLE(programOptions) END_OPTION_TABLE static int -replaceTranslationTable (TranslationTable table, const char *file) { - int ok = 0; - char *path = makePath(opt_tablesDirectory, file); - if (path) { - if (loadTranslationTable(path, NULL, table, 0)) ok = 1; - free(path); +testTextTable (char *table) { + int exists = 0; + char *file; + + if ((file = ensureTextTableExtension(table))) { + char *path; + + LogPrint(LOG_DEBUG, "checking for text table: %s", file); + + if ((path = makePath(opt_tablesDirectory, file))) { + if (testPath(path)) exists = 1; + + free(path); + } + + free(file); } - if (!ok) LogPrint(LOG_ERR, "%s: %s", gettext("cannot load translation table"), file); - return ok; + + return exists; } static int -replaceTextTable (const char *file) { - if (!replaceTranslationTable(textTable, file)) return 0; - makeUntextTable(); - return 1; +replaceTextTable (const char *name) { + int ok = 0; + char *file; + + if ((file = ensureTextTableExtension(name))) { + char *path; + + if ((path = makePath(opt_tablesDirectory, file))) { + TextTable *newTable; + + if ((newTable = compileTextTable(path))) { + TextTable *oldTable = textTable; + textTable = newTable; + destroyTextTable(oldTable); + ok = 1; + } + + free(path); + } + + free(file); + } + + if (!ok) LogPrint(LOG_ERR, "%s: %s", gettext("cannot load text table"), name); + return ok; } static int -replaceAttributesTable (const char *file) { - return replaceTranslationTable(attributesTable, file); +replaceAttributesTable (const char *name) { + int ok = 0; + char *file; + + if ((file = ensureAttributesTableExtension(name))) { + char *path; + + if ((path = makePath(opt_tablesDirectory, file))) { + AttributesTable *newTable; + + if ((newTable = compileAttributesTable(path))) { + AttributesTable *oldTable = attributesTable; + attributesTable = newTable; + destroyAttributesTable(oldTable); + ok = 1; + } + + free(path); + } + + free(file); + } + + if (!ok) LogPrint(LOG_ERR, "%s: %s", gettext("cannot load attributes table"), name); + return ok; } int @@ -537,25 +607,173 @@ exitContractionTable (void) { } static int -loadContractionTable (const char *file) { +loadContractionTable (const char *name) { ContractionTable *table = NULL; - if (*file) { - char *path = makePath(opt_contractionsDirectory, file); - LogPrint(LOG_DEBUG, "compiling contraction table: %s", file); - if (path) { - if (!(table = compileContractionTable(path))) { - LogPrint(LOG_ERR, "%s: %s", gettext("cannot compile contraction table"), path); + + if (*name) { + char *file; + + if ((file = ensureContractionTableExtension(name))) { + char *path; + + if ((path = makePath(opt_tablesDirectory, file))) { + LogPrint(LOG_DEBUG, "compiling contraction table: %s", path); + + if (!(table = compileContractionTable(path))) { + LogPrint(LOG_ERR, "%s: %s", gettext("cannot compile contraction table"), path); + } + + free(path); } - free(path); + + free(file); } + if (!table) return 0; } + if (contractionTable) destroyContractionTable(contractionTable); contractionTable = table; return 1; } #endif /* ENABLE_CONTRACTED_BRAILLE */ +static void +exitKeyTable (void) { + if (keyTable) { + destroyKeyTable(keyTable); + keyTable = NULL; + } +} + +static int +loadKeyTable (const char *name) { + KeyTable *table = NULL; + + if (*name) { + char *file; + + if ((file = ensureKeyTableExtension(name))) { + char *path; + + if ((path = makePath(opt_tablesDirectory, file))) { + LogPrint(LOG_DEBUG, "compiling key table: %s", path); + + if (!(table = compileKeyTable(path))) { + LogPrint(LOG_ERR, "%s: %s", gettext("cannot compile key table"), path); + } + + free(path); + } + + free(file); + } + + if (!table) return 0; + } + + if (keyTable) destroyKeyTable(keyTable); + keyTable = table; + return 1; +} + +static PressedKeysState +handleKeyEvent (const KeyCodeSet *modifiers, KeyCode code, int press) { + { + static int lastCommand = EOF; + int command = getKeyCommand(keyTable, modifiers, code); + int bound = command != EOF; + + if (!press || !bound) { + if (lastCommand != EOF) { + lastCommand = EOF; + enqueueCommand(BRL_CMD_NOOP); + } + } else if (command != lastCommand) { + lastCommand = command; + enqueueCommand(command | BRL_FLG_REPEAT_INITIAL | BRL_FLG_REPEAT_DELAY); + } + + if (bound) return PKS_YES; + } + + { + KeyCodeSet keys = *modifiers; + addKeyCode(&keys, code); + if (isKeyModifiers(keyTable, &keys)) return PKS_MAYBE; + } + + return PKS_NO; +} + +static void scheduleKeyboardMonitor (int interval); + +static void +tryKeyboardMonitor (void *data) { + LogPrint(LOG_DEBUG, "starting keyboard monitor"); + if (!startKeyboardMonitor(&keyboardProperties, handleKeyEvent)) { + LogPrint(LOG_DEBUG, "keyboard monitor failed"); + scheduleKeyboardMonitor(5000); + } +} + +static void +scheduleKeyboardMonitor (int interval) { + asyncRelativeAlarm(interval, tryKeyboardMonitor, NULL); +} + +int +haveStatusCells (void) { + return brl.statusColumns > 0; +} + +static void +windowConfigurationChanged (int infoLevel, int rows, int columns) { + textStart = 0; + textCount = columns; + statusStart = 0; + statusCount = 0; + + if (!(textMaximized || haveStatusCells())) { + int separatorWidth = (prefs.statusSeparator == ssNone)? 0: 1; + int statusWidth = prefs.statusCount; + + if (!statusWidth) statusWidth = getStatusFieldsLength(prefs.statusFields); + statusWidth = MAX(MIN(statusWidth, brl.textColumns-1-separatorWidth), 0); + + if (statusWidth > 0) { + switch (prefs.statusPosition) { + case spLeft: + statusStart = 0; + statusCount = statusWidth; + textStart = statusCount + separatorWidth; + textCount = columns - textStart; + break; + + case spRight: + statusCount = statusWidth; + statusStart = columns - statusCount; + textCount = statusStart - separatorWidth; + textStart = 0; + break; + } + } + } + LogPrint(LOG_DEBUG, "regions: text=%u.%u status=%u.%u", + textStart, textCount, statusStart, statusCount); + + fullWindowShift = MAX(textCount-prefs.windowOverlap, 1); + halfWindowShift = textCount / 2; + verticalWindowShift = (rows > 1)? rows: 5; + LogPrint(LOG_DEBUG, "shifts: full=%u half=%u vertical=%u", + fullWindowShift, halfWindowShift, verticalWindowShift); +} + +void +reconfigureWindow (void) { + windowConfigurationChanged(LOG_INFO, brl.textRows, brl.textColumns); +} + static void applyBraillePreferences (void) { if (braille->firmness) braille->firmness(&brl, prefs.brailleFirmness); @@ -573,38 +791,165 @@ applySpeechPreferences (void) { #endif /* ENABLE_SPEECH_SUPPORT */ static void -dimensionsChanged (int infoLevel, int rows, int columns) { - fwinshift = MAX(columns-prefs.windowOverlap, 1); - hwinshift = columns / 2; - vwinshift = (rows > 1)? rows: 5; +applyPreferences (void) { + reconfigureWindow(); + setTuneDevice(prefs.tuneDevice); + applyBraillePreferences(); - LogPrint(LOG_DEBUG, "shifts: fwin=%d hwin=%d vwin=%d", - fwinshift, hwinshift, vwinshift); +#ifdef ENABLE_SPEECH_SUPPORT + applySpeechPreferences(); +#endif /* ENABLE_SPEECH_SUPPORT */ } -static int -changedWindowAttributes (void) { - dimensionsChanged(LOG_INFO, brl.y, brl.x); - return 1; +static void +resetStatusFields (const unsigned char *fields) { + unsigned int count = brl.statusColumns * brl.statusRows; + + prefs.statusPosition = spNone; + prefs.statusCount = 0; + prefs.statusSeparator = ssNone; + memset(prefs.statusFields, sfEnd, sizeof(prefs.statusFields)); + + if (!count && (brl.textColumns > 40)) { + count = (brl.textColumns % 20) * brl.textRows; + + if (count) { + prefs.statusPosition = spRight; + + if (count > 1) { + count -= 1; + prefs.statusSeparator = ssStatusSide; + } + } + } + + if (!fields) fields = braille->statusFields; + if (!fields && count) { + static const unsigned char fields1[] = { + sfWindowRow, sfEnd + }; + + static const unsigned char fields2[] = { + sfWindowRow, sfCursorRow, sfEnd + }; + + static const unsigned char fields3[] = { + sfWindowRow, sfCursorRow, sfCursorColumn, sfEnd + }; + + static const unsigned char fields4[] = { + sfWindowCoordinates, sfCursorCoordinates, sfEnd + }; + + static const unsigned char fields5[] = { + sfWindowCoordinates, sfCursorCoordinates, sfStateDots, sfEnd + }; + + static const unsigned char fields6[] = { + sfWindowCoordinates, sfCursorCoordinates, sfStateDots, sfScreenNumber, + sfEnd + }; + + static const unsigned char fields7[] = { + sfWindowCoordinates, sfCursorCoordinates, sfStateDots, sfTime, + sfEnd + }; + + static const unsigned char *const fieldsTable[] = { + fields1, fields2, fields3, fields4, fields5, fields6, fields7 + }; + static const unsigned char fieldsCount = ARRAY_COUNT(fieldsTable); + + if (count > fieldsCount) count = fieldsCount; + fields = fieldsTable[count - 1]; + } + + if (fields) { + unsigned int index = 0; + + while (index < (ARRAY_COUNT(prefs.statusFields) - 1)) { + unsigned char field = fields[index]; + if (field == sfEnd) break; + prefs.statusFields[index++] = field; + } + } } static void -changedPreferences (void) { - changedWindowAttributes(); - setTuneDevice(prefs.tuneDevice); - applyBraillePreferences(); -#ifdef ENABLE_SPEECH_SUPPORT - applySpeechPreferences(); -#endif /* ENABLE_SPEECH_SUPPORT */ +resetPreferences (void) { + memset(&prefs, 0, sizeof(prefs)); + + prefs.magic[0] = PREFS_MAGIC_NUMBER & 0XFF; + prefs.magic[1] = PREFS_MAGIC_NUMBER >> 8; + prefs.version = 4; + + prefs.autorepeat = DEFAULT_AUTOREPEAT; + prefs.autorepeatPanning = DEFAULT_AUTOREPEAT_PANNING; + prefs.autorepeatDelay = DEFAULT_AUTOREPEAT_DELAY; + prefs.autorepeatInterval = DEFAULT_AUTOREPEAT_INTERVAL; + + prefs.showCursor = DEFAULT_SHOW_CURSOR; + prefs.cursorStyle = DEFAULT_CURSOR_STYLE; + prefs.blinkingCursor = DEFAULT_BLINKING_CURSOR; + prefs.cursorVisibleTime = DEFAULT_CURSOR_VISIBLE_TIME; + prefs.cursorInvisibleTime = DEFAULT_CURSOR_INVISIBLE_TIME; + + prefs.showAttributes = DEFAULT_SHOW_ATTRIBUTES; + prefs.blinkingAttributes = DEFAULT_BLINKING_ATTRIBUTES; + prefs.attributesVisibleTime = DEFAULT_ATTRIBUTES_VISIBLE_TIME; + prefs.attributesInvisibleTime = DEFAULT_ATTRIBUTES_INVISIBLE_TIME; + + prefs.blinkingCapitals = DEFAULT_BLINKING_CAPITALS; + prefs.capitalsVisibleTime = DEFAULT_CAPITALS_VISIBLE_TIME; + prefs.capitalsInvisibleTime = DEFAULT_CAPITALS_INVISIBLE_TIME; + + prefs.windowFollowsPointer = DEFAULT_WINDOW_FOLLOWS_POINTER; + prefs.highlightWindow = DEFAULT_HIGHLIGHT_WINDOW; + + prefs.textStyle = DEFAULT_TEXT_STYLE; + prefs.brailleFirmness = DEFAULT_BRAILLE_FIRMNESS; + prefs.brailleSensitivity = DEFAULT_BRAILLE_SENSITIVITY; + + prefs.windowOverlap = DEFAULT_WINDOW_OVERLAP; + prefs.slidingWindow = DEFAULT_SLIDING_WINDOW; + prefs.eagerSlidingWindow = DEFAULT_EAGER_SLIDING_WINDOW; + + prefs.skipIdenticalLines = DEFAULT_SKIP_IDENTICAL_LINES; + prefs.skipBlankWindows = DEFAULT_SKIP_BLANK_WINDOWS; + prefs.blankWindowsSkipMode = DEFAULT_BLANK_WINDOWS_SKIP_MODE; + + prefs.alertMessages = DEFAULT_ALERT_MESSAGES; + prefs.alertDots = DEFAULT_ALERT_DOTS; + prefs.alertTunes = DEFAULT_ALERT_TUNES; + prefs.tuneDevice = getDefaultTuneDevice(); + prefs.pcmVolume = DEFAULT_PCM_VOLUME; + prefs.midiVolume = DEFAULT_MIDI_VOLUME; + prefs.midiInstrument = DEFAULT_MIDI_INSTRUMENT; + prefs.fmVolume = DEFAULT_FM_VOLUME; + + prefs.sayLineMode = DEFAULT_SAY_LINE_MODE; + prefs.autospeak = DEFAULT_AUTOSPEAK; + prefs.speechRate = DEFAULT_SPEECH_RATE; + prefs.speechVolume = DEFAULT_SPEECH_VOLUME; + prefs.speechPitch = DEFAULT_SPEECH_PITCH; + prefs.speechPunctuation = DEFAULT_SPEECH_PUNCTUATION; + + prefs.statusPosition = DEFAULT_STATUS_POSITION; + prefs.statusCount = DEFAULT_STATUS_COUNT; + prefs.statusSeparator = DEFAULT_STATUS_SEPARATOR; + resetStatusFields(NULL); + applyPreferences(); } int -loadPreferences (int change) { +loadPreferences (void) { int ok = 0; - FILE *file = openDataFile(preferencesFile, "rb"); + FILE *file = openDataFile(preferencesFile, "rb", 1); + if (file) { Preferences newPreferences; size_t length = fread(&newPreferences, 1, sizeof(newPreferences), file); + if (ferror(file)) { LogPrint(LOG_ERR, "%s: %s: %s", gettext("cannot read preferences file"), preferencesFile, strerror(errno)); @@ -678,78 +1023,87 @@ loadPreferences (int change) { prefs.brailleSensitivity = DEFAULT_BRAILLE_SENSITIVITY; } - if (change) changedPreferences(); - } - fclose(file); - } - return ok; -} + if (length == 45) { + length++; + prefs.statusPosition = DEFAULT_STATUS_POSITION; + } -static void -resetPreferences (void) { - memset(&prefs, 0, sizeof(prefs)); + if (length == 46) { + length++; + prefs.statusCount = DEFAULT_STATUS_COUNT; + } - prefs.magic[0] = PREFS_MAGIC_NUMBER & 0XFF; - prefs.magic[1] = PREFS_MAGIC_NUMBER >> 8; - prefs.version = 4; + if (length == 47) { + length++; + prefs.statusSeparator = DEFAULT_STATUS_SEPARATOR; + } - prefs.autorepeat = DEFAULT_AUTOREPEAT; - prefs.autorepeatPanning = DEFAULT_AUTOREPEAT_PANNING; - prefs.autorepeatDelay = DEFAULT_AUTOREPEAT_DELAY; - prefs.autorepeatInterval = DEFAULT_AUTOREPEAT_INTERVAL; + if (length < 58) { + const unsigned char *fields = NULL; - prefs.showCursor = DEFAULT_SHOW_CURSOR; - prefs.cursorStyle = DEFAULT_CURSOR_STYLE; - prefs.blinkingCursor = DEFAULT_BLINKING_CURSOR; - prefs.cursorVisibleTime = DEFAULT_CURSOR_VISIBLE_TIME; - prefs.cursorInvisibleTime = DEFAULT_CURSOR_INVISIBLE_TIME; + { + static const unsigned char styleNone[] = { + sfEnd + }; - prefs.showAttributes = DEFAULT_SHOW_ATTRIBUTES; - prefs.blinkingAttributes = DEFAULT_BLINKING_ATTRIBUTES; - prefs.attributesVisibleTime = DEFAULT_ATTRIBUTES_VISIBLE_TIME; - prefs.attributesInvisibleTime = DEFAULT_ATTRIBUTES_INVISIBLE_TIME; + static const unsigned char styleAlva[] = { + sfAlphabeticCursorCoordinates, sfAlphabeticWindowCoordinates, sfStateLetter, sfEnd + }; - prefs.blinkingCapitals = DEFAULT_BLINKING_CAPITALS; - prefs.capitalsVisibleTime = DEFAULT_CAPITALS_VISIBLE_TIME; - prefs.capitalsInvisibleTime = DEFAULT_CAPITALS_INVISIBLE_TIME; + static const unsigned char styleTieman[] = { + sfCursorAndWindowColumn, sfCursorAndWindowRow, sfStateDots, sfEnd + }; - prefs.windowFollowsPointer = DEFAULT_WINDOW_FOLLOWS_POINTER; - prefs.highlightWindow = DEFAULT_HIGHLIGHT_WINDOW; + static const unsigned char stylePB80[] = { + sfWindowRow, sfEnd + }; - prefs.textStyle = DEFAULT_TEXT_STYLE; - prefs.brailleFirmness = DEFAULT_BRAILLE_FIRMNESS; - prefs.brailleSensitivity = DEFAULT_BRAILLE_SENSITIVITY; + static const unsigned char styleConfigurable[] = { + sfGeneric, sfEnd + }; - prefs.windowOverlap = DEFAULT_WINDOW_OVERLAP; - prefs.slidingWindow = DEFAULT_SLIDING_WINDOW; - prefs.eagerSlidingWindow = DEFAULT_EAGER_SLIDING_WINDOW; + static const unsigned char styleMDV[] = { + sfWindowCoordinates, sfEnd + }; - prefs.skipIdenticalLines = DEFAULT_SKIP_IDENTICAL_LINES; - prefs.skipBlankWindows = DEFAULT_SKIP_BLANK_WINDOWS; - prefs.blankWindowsSkipMode = DEFAULT_BLANK_WINDOWS_SKIP_MODE; + static const unsigned char styleVoyager[] = { + sfWindowRow, sfCursorRow, sfCursorColumn, sfEnd + }; - prefs.alertMessages = DEFAULT_ALERT_MESSAGES; - prefs.alertDots = DEFAULT_ALERT_DOTS; - prefs.alertTunes = DEFAULT_ALERT_TUNES; - prefs.tuneDevice = getDefaultTuneDevice(); - prefs.pcmVolume = DEFAULT_PCM_VOLUME; - prefs.midiVolume = DEFAULT_MIDI_VOLUME; - prefs.midiInstrument = DEFAULT_MIDI_INSTRUMENT; - prefs.fmVolume = DEFAULT_FM_VOLUME; + static const unsigned char styleTime[] = { + sfTime, sfEnd + }; - prefs.sayLineMode = DEFAULT_SAY_LINE_MODE; - prefs.autospeak = DEFAULT_AUTOSPEAK; - prefs.speechRate = DEFAULT_SPEECH_RATE; - prefs.speechVolume = DEFAULT_SPEECH_VOLUME; - prefs.speechPitch = DEFAULT_SPEECH_PITCH; - prefs.speechPunctuation = DEFAULT_SPEECH_PUNCTUATION; + static const unsigned char *const styleTable[] = { + styleNone, styleAlva, styleTieman, stylePB80, + styleConfigurable, styleMDV, styleVoyager, styleTime + }; + static const unsigned char styleCount = ARRAY_COUNT(styleTable); + + unsigned char style = ((const unsigned char *)&prefs)[38]; + + if (style < styleCount) { + fields = styleTable[style]; + if (*fields == sfEnd) fields = NULL; + } + } + + length = 58; + resetStatusFields(fields); + } + + applyPreferences(); + } + + fclose(file); + } - prefs.statusStyle = braille->statusStyle; + return ok; } static void getPreferences (void) { - if (!loadPreferences(0)) resetPreferences(); + if (!loadPreferences()) resetPreferences(); setTuneDevice(prefs.tuneDevice); } @@ -757,7 +1111,7 @@ getPreferences (void) { int savePreferences (void) { int ok = 0; - FILE *file = openDataFile(preferencesFile, "w+b"); + FILE *file = openDataFile(preferencesFile, "w+b", 0); if (file) { size_t length = fwrite(&prefs, 1, sizeof(prefs), file); if (length == sizeof(prefs)) { @@ -769,7 +1123,7 @@ savePreferences (void) { } fclose(file); } - if (!ok) message(gettext("not saved"), 0); + if (!ok) message(NULL, gettext("not saved"), 0); return ok; } @@ -778,23 +1132,98 @@ testBrailleFirmness (void) { return braille->firmness != NULL; } +static int +changedBrailleFirmness (unsigned char setting) { + setBrailleFirmness(&brl, setting); + return 1; +} + static int testBrailleSensitivity (void) { return braille->sensitivity != NULL; } static int -changedBrailleFirmness (unsigned char setting) { - setBrailleFirmness(&brl, setting); +changedBrailleSensitivity (unsigned char setting) { + setBrailleSensitivity(&brl, setting); return 1; } static int -changedBrailleSensitivity (unsigned char setting) { - setBrailleSensitivity(&brl, setting); +testStatusPosition (void) { + return !haveStatusCells(); +} + +static int +changedStatusPosition (unsigned char setting) { + reconfigureWindow(); + return 1; +} + +static int +testStatusCount (void) { + return testStatusPosition() && (prefs.statusPosition != spNone); +} + +static int +changedStatusCount (unsigned char setting) { + reconfigureWindow(); + return 1; +} + +static int +testStatusSeparator (void) { + return testStatusCount(); +} + +static int +changedStatusSeparator (unsigned char setting) { + reconfigureWindow(); + return 1; +} + +static int +testStatusField (unsigned char index) { + return (haveStatusCells() || (prefs.statusPosition != spNone)) && + ((index == 0) || (prefs.statusFields[index-1] != sfEnd)); +} + +static int +changedStatusField (unsigned char index, unsigned char setting) { + switch (setting) { + case sfGeneric: + if (index > 0) return 0; + if (!haveStatusCells()) return 0; + if (!braille->statusFields) return 0; + if (*braille->statusFields != sfGeneric) return 0; + + case sfEnd: + if (prefs.statusFields[index+1] != sfEnd) return 0; + break; + + default: + if ((index > 0) && (prefs.statusFields[index-1] == sfGeneric)) return 0; + break; + } + + reconfigureWindow(); return 1; } +#define STATUS_FIELD_HANDLERS(n) \ + static int testStatusField##n (void) { return testStatusField(n-1); } \ + static int changedStatusField##n (unsigned char setting) { return changedStatusField(n-1, setting); } +STATUS_FIELD_HANDLERS(1) +STATUS_FIELD_HANDLERS(2) +STATUS_FIELD_HANDLERS(3) +STATUS_FIELD_HANDLERS(4) +STATUS_FIELD_HANDLERS(5) +STATUS_FIELD_HANDLERS(6) +STATUS_FIELD_HANDLERS(7) +STATUS_FIELD_HANDLERS(8) +STATUS_FIELD_HANDLERS(9) +#undef STATUS_FIELD_HANDLERS + #ifdef ENABLE_SPEECH_SUPPORT static int testSpeechRate (void) { @@ -875,15 +1304,17 @@ testTunesFm (void) { #ifdef ENABLE_TABLE_SELECTION typedef struct { const char *directory; + const char *extension; const char *pattern; - const char *initial; + char *initial; char *current; unsigned none:1; #if defined(HAVE_GLOB_H) glob_t glob; #elif defined(__MINGW32__) - long findHandle; + char **names; + int offset; #endif /* glob: paradigm-specific field declarations */ const char **paths; @@ -891,16 +1322,32 @@ typedef struct { unsigned char setting; const char *pathsArea[3]; } GlobData; + static GlobData glob_textTable; static GlobData glob_attributesTable; +static int +qsortCompare_fileNames (const void *element1, const void *element2) { + const char *const *name1 = element1; + const char *const *name2 = element2; + return strcmp(*name1, *name2); +} + static void -globPrepare (GlobData *data, const char *directory, const char *pattern, const char *initial, int none) { +globPrepare (GlobData *data, const char *directory, const char *extension, const char *initial, int none) { memset(data, 0, sizeof(*data)); + data->directory = directory; - data->pattern = pattern; - data->current = strdupWrapper(data->initial = initial); + data->extension = extension; data->none = (none != 0); + + { + const char *components[] = {"*", extension}; + data->pattern = joinStrings(components, ARRAY_COUNT(components)); + } + + data->initial = *initial? ensureExtension(initial, extension): strdup(""); + data->current = strdup(data->initial); } static void @@ -915,11 +1362,12 @@ globBegin (GlobData *data) { { #ifdef HAVE_FCHDIR int originalDirectory = open(".", O_RDONLY); - if (originalDirectory != -1) { + if (originalDirectory != -1) #else /* HAVE_FCHDIR */ char *originalDirectory = getWorkingDirectory(); - if (originalDirectory) { + if (originalDirectory) #endif /* HAVE_FCHDIR */ + { if (chdir(data->directory) != -1) { #if defined(HAVE_GLOB_H) memset(&data->glob, 0, sizeof(data->glob)); @@ -931,27 +1379,31 @@ globBegin (GlobData *data) { * include the leading NULL pointers and some don't. Let's just * figure it out the hard way by finding the trailing NULL. */ - while (data->paths[data->count]) ++data->count; + while (data->paths[data->count]) data->count += 1; } #elif defined(__MINGW32__) struct _finddata_t findData; + long findHandle = _findfirst(data->pattern, &findData); + int allocated = data->count | 0XF; - data->paths = NULL; - data->count = 0; - data->findHandle = _findfirst(data->pattern, &findData); - if (data->findHandle != -1) { - int allocated = 16; - data->paths = malloc(allocated * sizeof(char*)); + data->offset = data->count; + data->names = malloc(allocated * sizeof(*data->names)); + + if (findHandle != -1) { do { if (data->count >= allocated) { allocated = allocated * 2; - data->paths = realloc(data->paths, allocated * sizeof(char*)); + data->names = realloc(data->names, allocated * sizeof(*data->names)); } - data->paths[data->count++] = strdup(findData.name); - } while (_findnext(data->findHandle, &findData) == 0); - _findclose(data->findHandle); - data->paths = realloc(data->paths, data->count * sizeof(char*)); + + data->names[data->count++] = strdup(findData.name); + } while (_findnext(findHandle, &findData) == 0); + + _findclose(findHandle); } + + data->names = realloc(data->names, data->count * sizeof(*data->names)); + data->paths = data->names; #endif /* glob: paradigm-specific field initialization */ #ifdef HAVE_FCHDIR @@ -979,13 +1431,14 @@ globBegin (GlobData *data) { } } + qsort(&data->paths[index], data->count-index, sizeof(*data->paths), qsortCompare_fileNames); if (data->none) data->paths[--index] = ""; data->paths[--index] = data->initial; data->paths += index; data->count -= index; data->setting = 0; - for (index=1; indexcount; ++index) { + for (index=1; indexcount; index+=1) { if (strcmp(data->paths[index], data->initial) == 0) { data->paths += 1; data->count -= 1; @@ -993,7 +1446,7 @@ globBegin (GlobData *data) { } } - for (index=0; indexcount; ++index) { + for (index=0; indexcount; index+=1) { if (strcmp(data->paths[index], data->current) == 0) { data->setting = index; break; @@ -1005,16 +1458,15 @@ static void globEnd (GlobData *data) { #if defined(HAVE_GLOB_H) if (data->glob.gl_pathc) { - int index; - for (index=0; indexglob.gl_offs; ++index) - data->glob.gl_pathv[index] = NULL; + int i; + for (i=0; iglob.gl_offs; i+=1) data->glob.gl_pathv[i] = NULL; globfree(&data->glob); } #elif defined(__MINGW32__) - if (data->paths) { + if (data->names) { int i; - for (i=0; icount; i++) free(data->paths[i]); - free(data->paths); + for (i=data->offset; icount; i++) free(data->names[i]); + free(data->names); } #endif /* glob: paradigm-specific memory deallocation */ } @@ -1063,7 +1515,8 @@ testSlidingWindow (void) { static int changedWindowOverlap (unsigned char setting) { - return changedWindowAttributes(); + reconfigureWindow(); + return 1; } static int @@ -1126,6 +1579,7 @@ nextSetting (MenuItem *item) { int updatePreferences (void) { static unsigned char saveOnExit = 0; /* 1 == save preferences on exit */ + const char *mode = "prf"; int ok = 1; #ifdef ENABLE_TABLE_SELECTION @@ -1136,8 +1590,8 @@ updatePreferences (void) { #endif /* ENABLE_CONTRACTED_BRAILLE */ #endif /* ENABLE_TABLE_SELECTION */ - if (setStatusText(&brl, "prf") && - message(gettext("Preferences Menu"), 0)) { + if (setStatusText(&brl, mode) && + message(mode, gettext("Preferences Menu"), 0)) { static const char *booleanValues[] = { strtext("No"), strtext("Yes") @@ -1170,14 +1624,37 @@ updatePreferences (void) { strtext("Rest of Line") }; - static const char *statusStyles[] = { + static const char *statusPositions[] = { + strtext("None"), + strtext("Left"), + strtext("Right") + }; + + static const char *statusSeparators[] = { strtext("None"), - "Alva", - "Tieman", - "PowerBraille 80", - strtext("Generic"), - "MDV", - "Voyager" + strtext("Space"), + strtext("Block"), + strtext("Status Side"), + strtext("Text Side") + }; + + static const char *statusFields[] = { + strtext("End"), + strtext("Window Coordinates (2 cells)"), + strtext("Window Column (1 cell)"), + strtext("Window Row (1 cell)"), + strtext("Cursor Coordinates (2 cells)"), + strtext("Cursor Column (1 cell)"), + strtext("Cursor Row (1 cell)"), + strtext("Cursor and Window Column (2 cells)"), + strtext("Cursor and Window Row (2 cells)"), + strtext("Screen Number (1 cell)"), + strtext("State Dots (1 cell)"), + strtext("State Letter (1 cell)"), + strtext("Time (2 cells)"), + strtext("Alphabetic Window Coordinates (1 cell)"), + strtext("Alphabetic Cursor Coordinates (1 cell)"), + strtext("Generic") }; static const char *textStyles[] = { @@ -1244,6 +1721,7 @@ updatePreferences (void) { #define SYMBOLIC_ITEM(setting, changed, test, label, names) TEXT_ITEM(setting, changed, test, label, names, ARRAY_COUNT(names)) #define BOOLEAN_ITEM(setting, changed, test, label) SYMBOLIC_ITEM(setting, changed, test, label, booleanValues) #define GLOB_ITEM(data, changed, test, label) TEXT_ITEM(data.setting, changed, test, label, data.paths, data.count) + #define STATUS_FIELD_ITEM(number) SYMBOLIC_ITEM(prefs.statusFields[number-1], changedStatusField##number, testStatusField##number, strtext("Status Field ") #number, statusFields) MenuItem menu[] = { BOOLEAN_ITEM(saveOnExit, NULL, NULL, strtext("Save on Exit")), SYMBOLIC_ITEM(prefs.textStyle, NULL, NULL, strtext("Text Style"), textStyles), @@ -1297,7 +1775,18 @@ updatePreferences (void) { NUMERIC_ITEM(prefs.speechPitch, changedSpeechPitch, testSpeechPitch, strtext("Speech Pitch"), 0, SPK_PITCH_MAXIMUM, 1), SYMBOLIC_ITEM(prefs.speechPunctuation, changedSpeechPunctuation, testSpeechPunctuation, strtext("Speech Punctuation"), punctuationLevels), #endif /* ENABLE_SPEECH_SUPPORT */ - SYMBOLIC_ITEM(prefs.statusStyle, NULL, NULL, strtext("Status Style"), statusStyles), + SYMBOLIC_ITEM(prefs.statusPosition, changedStatusPosition, testStatusPosition, strtext("Status Position"), statusPositions), + NUMERIC_ITEM(prefs.statusCount, changedStatusCount, testStatusCount, strtext("Status Count"), 0, MAX((int)brl.textColumns/2-1, 0), 1), + SYMBOLIC_ITEM(prefs.statusSeparator, changedStatusSeparator, testStatusSeparator, strtext("Status Separator"), statusSeparators), + STATUS_FIELD_ITEM(1), + STATUS_FIELD_ITEM(2), + STATUS_FIELD_ITEM(3), + STATUS_FIELD_ITEM(4), + STATUS_FIELD_ITEM(5), + STATUS_FIELD_ITEM(6), + STATUS_FIELD_ITEM(7), + STATUS_FIELD_ITEM(8), + STATUS_FIELD_ITEM(9), #ifdef ENABLE_TABLE_SELECTION GLOB_ITEM(glob_textTable, changedTextTable, NULL, strtext("Text Table")), GLOB_ITEM(glob_attributesTable, changedAttributesTable, NULL, strtext("Attributes Table")), @@ -1309,7 +1798,7 @@ updatePreferences (void) { int menuSize = ARRAY_COUNT(menu); static int menuIndex = 0; /* current menu item */ - int lineIndent = 0; /* braille window pos in buffer */ + unsigned int lineIndent = 0; /* braille window pos in buffer */ int indexChanged = 1; int settingChanged = 0; /* 1 when item's value has changed */ @@ -1326,25 +1815,25 @@ updatePreferences (void) { testProgramTermination(); closeTuneDevice(0); - if (!item->names) { - snprintf(valueBuffer, sizeof(valueBuffer), "%d", *item->setting); - value = valueBuffer; - } else { + if (item->names) { if (!*(value = item->names[*item->setting - item->minimum])) value = strtext(""); value = gettext(value); + } else { + snprintf(valueBuffer, sizeof(valueBuffer), "%d", *item->setting); + value = valueBuffer; } { const char *label = gettext(item->label); const char *delimiter = ": "; - int settingIndent = strlen(label) + strlen(delimiter); - int valueLength = strlen(value); - int lineLength = settingIndent + valueLength; + unsigned int settingIndent = strlen(label) + strlen(delimiter); + unsigned int valueLength = strlen(value); + unsigned int lineLength = settingIndent + valueLength; char line[lineLength + 1]; + unsigned int textLength = textCount * brl.textRows; /* First we draw the current menu item in the buffer */ - snprintf(line, sizeof(line), "%s%s%s", - label, delimiter, value); + snprintf(line, sizeof(line), "%s%s%s", label, delimiter, value); #ifdef ENABLE_SPEECH_SUPPORT if (prefs.autospeak) { @@ -1362,13 +1851,14 @@ updatePreferences (void) { if (settingChanged) { settingChanged = 0; /* make sure the updated value is visible */ - if ((lineLength-lineIndent > brl.x*brl.y) && (lineIndent < settingIndent)) + if (((lineLength - lineIndent) > textLength) && + (lineIndent < settingIndent)) lineIndent = settingIndent; } indexChanged = 0; /* Then draw the braille window */ - if (!writeBrailleText(&brl, &line[lineIndent], MAX(0, lineLength-lineIndent))) ok = 0; + if (!writeBrailleBytes(mode, &line[lineIndent], MAX(0, lineLength-lineIndent))) ok = 0; drainBrailleOutput(&brl, updateInterval); if (!ok) break; @@ -1384,7 +1874,7 @@ updatePreferences (void) { /* This is quick and dirty... Something more intelligent * and friendly needs to be done here... */ - message( + message(mode, "Press UP and DOWN to select an item, " "HOME to toggle the setting. " "Routing keys are available too! " @@ -1394,8 +1884,8 @@ updatePreferences (void) { case BRL_BLK_PASSKEY+BRL_KEY_HOME: case BRL_CMD_PREFLOAD: prefs = oldPreferences; - changedPreferences(); - message(gettext("changes discarded"), 0); + applyPreferences(); + message(mode, gettext("changes discarded"), 0); break; case BRL_BLK_PASSKEY+BRL_KEY_ENTER: case BRL_CMD_PREFSAVE: @@ -1442,15 +1932,16 @@ updatePreferences (void) { case BRL_CMD_FWINLT: if (lineIndent > 0) - lineIndent -= MIN(brl.x*brl.y, lineIndent); + lineIndent -= MIN(textLength, lineIndent); else playTune(&tune_bounce); break; case BRL_CMD_FWINRT: - if (lineLength-lineIndent > brl.x*brl.y) - lineIndent += brl.x*brl.y; - else + if ((lineLength - lineIndent) > textLength) { + lineIndent += textLength; + } else { playTune(&tune_bounce); + } break; { @@ -1493,20 +1984,36 @@ updatePreferences (void) { #endif /* ENABLE_SPEECH_SUPPORT */ default: - if (command >= BRL_BLK_ROUTE && command < BRL_BLK_ROUTE+brl.x) { - unsigned char oldSetting = *item->setting; + if ((command >= BRL_BLK_ROUTE) && + (command < (BRL_BLK_ROUTE + brl.textColumns))) { int key = command - BRL_BLK_ROUTE; - if (item->names) { - *item->setting = key % (item->maximum + 1); + + if ((key >= textStart) && (key < (textStart + textCount))) { + unsigned char oldSetting = *item->setting; + key -= textStart; + + if (item->names) { + *item->setting = key % (item->maximum + 1); + } else { + *item->setting = rescaleInteger(key, textCount-1, item->maximum-item->minimum) + item->minimum; + } + + if (item->changed && !item->changed(*item->setting)) { + *item->setting = oldSetting; + playTune(&tune_command_rejected); + } else if (*item->setting != oldSetting) { + settingChanged = 1; + } + } else if ((key >= statusStart) && (key < (statusStart + statusCount))) { + switch (key - statusStart) { + default: + playTune(&tune_command_rejected); + break; + } } else { - *item->setting = rescaleInteger(key, brl.x-1, item->maximum-item->minimum) + item->minimum; - } - if (item->changed && !item->changed(*item->setting)) { - *item->setting = oldSetting; playTune(&tune_command_rejected); - } else if (*item->setting != oldSetting) { - settingChanged = 1; } + break; } @@ -1605,7 +2112,7 @@ unloadDriverObject (void **object) { void initializeBraille (void) { initializeBrailleDisplay(&brl); - brl.bufferResized = &dimensionsChanged; + brl.bufferResized = &windowConfigurationChanged; brl.dataDirectory = opt_dataDirectory; } @@ -1729,7 +2236,7 @@ activateBrailleDriver (int verify) { if (isSerialDevice(&dev)) { static const char *const serialDrivers[] = { - "md", "pm", "ts", "ht", "bn", "al", "bm", + "md", "pm", "ts", "ht", "bn", "al", "bm", "pg", "sk", NULL }; autodetectableDrivers = serialDrivers; @@ -1739,7 +2246,7 @@ activateBrailleDriver (int verify) { #ifdef ENABLE_USB_SUPPORT if (isUsbDevice(&dev)) { static const char *const usbDrivers[] = { - "al", "bm", "bs", "fs", "ht", "pm", "vo", + "al", "bm", "eu", "fs", "ht", "hm", "pg", "pm", "sk", "vo", NULL }; autodetectableDrivers = usbDrivers; @@ -1750,7 +2257,7 @@ activateBrailleDriver (int verify) { #ifdef ENABLE_BLUETOOTH_SUPPORT if (isBluetoothDevice(&dev)) { static const char *bluetoothDrivers[] = { - "ht", "bm", + "ht", "al", "bm", NULL }; autodetectableDrivers = bluetoothDrivers; @@ -1776,7 +2283,7 @@ activateBrailleDriver (int verify) { if (activateDriver(&data, verify)) return 1; } - ++device; + device += 1; } brailleDevice = NULL; @@ -1827,9 +2334,11 @@ startBrailleDriver (void) { if (opt_quiet) return 1; { + int flags = MSG_SILENT; char banner[0X100]; + makeProgramBanner(banner, sizeof(banner)); - if (message(banner, 0)) return 1; + if (message(NULL, banner, flags)) return 1; } } @@ -1872,7 +2381,7 @@ static void exitBrailleDriver (void) { if (brailleConstructed) { clearStatusCells(&brl); - message(gettext("BRLTTY terminated"), MSG_NODELAY|MSG_SILENT); + message(NULL, gettext("BRLTTY terminated"), MSG_NODELAY|MSG_SILENT); } stopBrailleDriver(); @@ -1992,6 +2501,13 @@ static int startSpeechDriver (void) { if (!activateSpeechDriver(0)) return 0; applySpeechPreferences(); + + if (!opt_quiet) { + char banner[0X100]; + makeProgramBanner(banner, sizeof(banner)); + sayString(&spk, banner, 1); + } + return 1; } @@ -2176,23 +2692,54 @@ createPidFile (void) { #if defined(__MINGW32__) static void background (void) { - LPTSTR cmdline = GetCommandLine(); - int len = strlen(cmdline); - char newcmdline[len+4]; - STARTUPINFO startupinfo; - PROCESS_INFORMATION processinfo; - - memset(&startupinfo, 0, sizeof(startupinfo)); - startupinfo.cb = sizeof(startupinfo); + char *variableName; + + { + const char *components[] = {programName, "_DAEMON"}; + variableName = joinStrings(components, ARRAY_COUNT(components)); + } + + { + int i; + for (i=0; variableName[i]; i+=1) { + char c = variableName[i]; + + if (c == '_') continue; + if (isdigit(c) && (i > 0)) continue; + + if (isalpha(c)) { + if (islower(c)) variableName[i] = toupper(c); + continue; + } - memcpy(newcmdline, cmdline, len); - memcpy(newcmdline+len, " -n", 4); + variableName[i] = '_'; + } + } - if (!CreateProcess(NULL, newcmdline, NULL, NULL, TRUE, CREATE_NEW_PROCESS_GROUP, NULL, NULL, &startupinfo, &processinfo)) { - LogWindowsError("CreateProcess"); - exit(10); + if (!getenv(variableName)) { + LPTSTR commandLine = GetCommandLine(); + STARTUPINFO startupInfo; + PROCESS_INFORMATION processInfo; + + memset(&startupInfo, 0, sizeof(startupInfo)); + startupInfo.cb = sizeof(startupInfo); + + if (!SetEnvironmentVariable(variableName, "")) { + LogWindowsError("SetEnvironmentVariable"); + exit(11); + } + + if (!CreateProcess(NULL, commandLine, NULL, NULL, TRUE, + CREATE_NEW_PROCESS_GROUP, + NULL, NULL, &startupInfo, &processInfo)) { + LogWindowsError("CreateProcess"); + exit(10); + } + + ExitProcess(0); } - ExitProcess(0); + + free(variableName); } #elif defined(__MSDOS__) @@ -2235,8 +2782,6 @@ validateInterval (int *value, const char *string) { void startup (int argc, char *argv[]) { - int problemCount; - { static const OptionsDescriptor descriptor = { OPTION_TABLE(programOptions), @@ -2245,7 +2790,7 @@ startup (int argc, char *argv[]) { .configurationFile = &opt_configurationFile, .applicationName = "brltty" }; - problemCount = processOptions(&descriptor, &argc, &argv); + processOptions(&descriptor, &argc, &argv); } { @@ -2254,11 +2799,6 @@ startup (int argc, char *argv[]) { &opt_writableDirectory, &opt_dataDirectory, &opt_tablesDirectory, - -#ifdef ENABLE_CONTRACTED_BRAILLE - &opt_contractionsDirectory, -#endif /* ENABLE_CONTRACTED_BRAILLE */ - NULL }; fixInstallPaths(paths); @@ -2266,17 +2806,14 @@ startup (int argc, char *argv[]) { if (argc) { LogPrint(LOG_ERR, "%s: %s", gettext("excess argument"), argv[0]); - ++problemCount; } if (!validateInterval(&updateInterval, opt_updateInterval)) { LogPrint(LOG_ERR, "%s: %s", gettext("invalid update interval"), opt_updateInterval); - ++problemCount; } if (!validateInterval(&messageDelay, opt_messageDelay)) { LogPrint(LOG_ERR, "%s: %s", gettext("invalid message delay"), opt_messageDelay); - ++problemCount; } /* Set logging levels. */ @@ -2311,7 +2848,6 @@ startup (int argc, char *argv[]) { } LogPrint(LOG_ERR, "%s: %s", gettext("invalid log level"), opt_logLevel); - ++problemCount; } setLevel: @@ -2455,57 +2991,87 @@ startup (int argc, char *argv[]) { LogPrint(LOG_INFO, "%s: %s", gettext("Library Directory"), opt_libraryDirectory); LogPrint(LOG_INFO, "%s: %s", gettext("Tables Directory"), opt_tablesDirectory); + /* handle text table option */ if (*opt_textTable) { - fixTextTablePath(&opt_textTable); - if (!replaceTextTable(opt_textTable)) opt_textTable = ""; - } - if (!*opt_textTable) { - opt_textTable = TEXT_TABLE; - makeUntextTable(); + if (strcmp(opt_textTable, "auto") == 0) { + const char *locale = setlocale(LC_CTYPE, NULL); + opt_textTable = ""; + + if (locale) { + char name[strlen(locale) + 1]; + + { + size_t length = strcspn(locale, ".@"); + strncpy(name, locale, length); + name[length] = 0; + } + + if (strcmp(name, "C") == 0) { + name[0] = 0; + } else if (!testTextTable(name)) { + char *delimiter = strchr(name, '_'); + + if (delimiter) { + *delimiter = 0; + if (!testTextTable(name)) name[0] = 0; + } + } + + if (name[0]) + if (replaceTextTable(name)) + opt_textTable = strdupWrapper(name); + } + } else { + if (!replaceTextTable(opt_textTable)) opt_textTable = ""; + } } + + if (!*opt_textTable) opt_textTable = TEXT_TABLE; LogPrint(LOG_INFO, "%s: %s", gettext("Text Table"), opt_textTable); + #ifdef ENABLE_PREFERENCES_MENU #ifdef ENABLE_TABLE_SELECTION - globPrepare(&glob_textTable, opt_tablesDirectory, - TEXT_TABLE_PREFIX "*" TRANSLATION_TABLE_EXTENSION, - opt_textTable, 0); + globPrepare(&glob_textTable, opt_tablesDirectory, TEXT_TABLE_EXTENSION, opt_textTable, 0); #endif /* ENABLE_TABLE_SELECTION */ #endif /* ENABLE_PREFERENCES_MENU */ - if (*opt_attributesTable) { - fixAttributesTablePath(&opt_attributesTable); - if (!replaceAttributesTable(opt_attributesTable)) opt_attributesTable = ""; - } - if (!*opt_attributesTable) { - opt_attributesTable = ATTRIBUTES_TABLE; - } + /* handle attributes table option */ + if (*opt_attributesTable) + if (!replaceAttributesTable(opt_attributesTable)) + opt_attributesTable = ""; + if (!*opt_attributesTable) opt_attributesTable = ATTRIBUTES_TABLE; LogPrint(LOG_INFO, "%s: %s", gettext("Attributes Table"), opt_attributesTable); + #ifdef ENABLE_PREFERENCES_MENU #ifdef ENABLE_TABLE_SELECTION - globPrepare(&glob_attributesTable, opt_tablesDirectory, - "attr*" TRANSLATION_TABLE_EXTENSION, - opt_attributesTable, 0); + globPrepare(&glob_attributesTable, opt_tablesDirectory, ATTRIBUTES_TABLE_EXTENSION, opt_attributesTable, 0); #endif /* ENABLE_TABLE_SELECTION */ #endif /* ENABLE_PREFERENCES_MENU */ #ifdef ENABLE_CONTRACTED_BRAILLE - LogPrint(LOG_INFO, "%s: %s", gettext("Contractions Directory"), opt_contractionsDirectory); - if (*opt_contractionTable) { - fixContractionTablePath(&opt_contractionTable); - loadContractionTable(opt_contractionTable); - } + /* handle contraction table option */ atexit(exitContractionTable); + if (*opt_contractionTable) loadContractionTable(opt_contractionTable); LogPrint(LOG_INFO, "%s: %s", gettext("Contraction Table"), *opt_contractionTable? opt_contractionTable: gettext("none")); + #ifdef ENABLE_PREFERENCES_MENU #ifdef ENABLE_TABLE_SELECTION - globPrepare(&glob_contractionTable, opt_contractionsDirectory, - CONTRACTION_TABLE_PREFIX "*" CONTRACTION_TABLE_EXTENSION, - opt_contractionTable, 1); + globPrepare(&glob_contractionTable, opt_tablesDirectory, CONTRACTION_TABLE_EXTENSION, opt_contractionTable, 1); #endif /* ENABLE_TABLE_SELECTION */ #endif /* ENABLE_PREFERENCES_MENU */ #endif /* ENABLE_CONTRACTED_BRAILLE */ + /* handle key table option */ + atexit(exitKeyTable); + if (*opt_keyTable) loadKeyTable(opt_keyTable); + LogPrint(LOG_INFO, "%s: %s", gettext("Key Table"), + *opt_keyTable? opt_keyTable: gettext("none")); + + if (parseKeyboardProperties(&keyboardProperties, opt_keyboardProperties)) + if (keyTable) + scheduleKeyboardMonitor(0); + /* initialize screen driver */ atexit(exitScreen); constructSpecialScreens(); @@ -2571,12 +3137,4 @@ startup (int argc, char *argv[]) { #endif /* ENABLE_SPEECH_SUPPORT */ if (opt_verify) exit(0); - - if (problemCount) { - char buffer[0X40]; - snprintf(buffer, sizeof(buffer), - ngettext("%d startup problem", "%d startup problems", problemCount), - problemCount); - message(buffer, MSG_WAITKEY); - } } diff --git a/Programs/ctb.h b/Programs/ctb.h index 7cd10ca6360143c167cc9110685dd118fe5d4981..0d60186248bf246fb91160d2de8d1bd8fe65019f 100644 --- a/Programs/ctb.h +++ b/Programs/ctb.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -28,7 +29,7 @@ typedef struct ContractionTableStruct ContractionTable; #define CTB_NO_CURSOR -1 extern ContractionTable *compileContractionTable (const char *fileName); -extern int destroyContractionTable (ContractionTable *contractionTable); +extern void destroyContractionTable (ContractionTable *table); extern int contractText ( ContractionTable *contractionTable, /* Pointer to translation table */ const wchar_t *inputBuffer, /* What is to be translated */ @@ -39,7 +40,7 @@ extern int contractText ( int cursorOffset /* Position of coursor in source */ ); -extern void fixContractionTablePath (char **path); +extern char *ensureContractionTableExtension (const char *path); #ifdef __cplusplus } diff --git a/Programs/ctb_compile.c b/Programs/ctb_compile.c index 36aeea46e0241f66fd0973b901794fbc74e65fc5..3bb3aebe7ae6e7411e6008a27d7dab49bfe9e144 100644 --- a/Programs/ctb_compile.c +++ b/Programs/ctb_compile.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -18,40 +19,19 @@ #include "prologue.h" #include -#include #include -#include -#include -#ifdef HAVE_LIBICUUC -#include -#endif /* HAVE_LIBICUUC */ - #include "misc.h" -#include "charset.h" #include "ctb.h" #include "ctb_internal.h" -#include "brl.h" - -typedef struct { - BYTE length; - wchar_t characters[0XFF]; -} CharacterString; +#include "datafile.h" +#include "dataarea.h" +#include "brldots.h" typedef struct { - BYTE length; - BYTE bytes[0XFF]; -} ByteString; - -static int errorCount; - -static ContractionTableHeader *tableHeader; -static ContractionTableOffset tableSize; -static ContractionTableOffset tableUsed; - -static ContractionTableCharacter *characterTable = NULL; -static int characterTableSize = 0; -static int characterEntryCount = 0; + unsigned char length; + unsigned char bytes[0XFF]; +} ByteOperand; static const wchar_t *const characterClassNames[] = { WS_C("space"), @@ -62,18 +42,15 @@ static const wchar_t *const characterClassNames[] = { WS_C("lowercase"), NULL }; + struct CharacterClass { struct CharacterClass *next; ContractionTableCharacterAttributes attribute; BYTE length; wchar_t name[1]; }; -static struct CharacterClass *characterClasses; -static ContractionTableCharacterAttributes characterClassAttribute; static const wchar_t *const opcodeNames[CTO_None] = { - WS_C("include"), - WS_C("capsign"), WS_C("begcaps"), WS_C("endcaps"), @@ -109,87 +86,37 @@ static const wchar_t *const opcodeNames[CTO_None] = { WS_C("class"), WS_C("after"), - WS_C("before") + WS_C("before"), + + WS_C("include") }; -static unsigned char opcodeLengths[CTO_None] = {0}; typedef struct { - const char *fileName; - int lineNumber; /*line number in table */ -} FileData; - -static void compileError (FileData *data, char *format, ...) PRINTF(2, 3); -static void -compileError (FileData *data, char *format, ...) { - char message[0X100]; - - { - const char *file = NULL; - const int *line = NULL; - va_list args; + DataArea *area; - if (data) { - file = data->fileName; - if (data->lineNumber) line = &data->lineNumber; - } + ContractionTableCharacter *characterTable; + int characterTableSize; + int characterEntryCount; - va_start(args, format); - formatInputError(message, sizeof(message), - file, line, - format, args); - va_end(args); - } + struct CharacterClass *characterClasses; + ContractionTableCharacterAttributes characterClassAttribute; - LogPrint(LOG_WARNING, "%s", message); - errorCount++; -} + unsigned char opcodeNameLengths[CTO_None]; +} ContractionTableData; -static int -allocateBytes (FileData *data, ContractionTableOffset *offset, int count, int alignment) { - int size = (tableUsed = (tableUsed + (alignment - 1)) / alignment * alignment) + count; - if (size > tableSize) { - void *table = realloc(tableHeader, size|=0XFFF); - if (!table) { - compileError(data, "Not enough memory for contraction table."); - return 0; - } - memset(((BYTE *)table)+tableSize, 0, size-tableSize); - tableHeader = (ContractionTableHeader *) table; - tableSize = size; - } - *offset = tableUsed; - tableUsed += count; - return 1; -} - -static int -saveBytes (FileData *data, ContractionTableOffset *offset, const void *bytes, int count, int alignment) { - if (allocateBytes(data, offset, count, alignment)) { - BYTE *address = getContractionTableItem(tableHeader, *offset); - memcpy(address, bytes, count); - return 1; - } - return 0; -} - -static int -saveSequence (FileData *data, ContractionTableOffset *offset, const ByteString *sequence) { - if (allocateBytes(data, offset, sequence->length+1, __alignof__(BYTE))) { - BYTE *address = getContractionTableItem(tableHeader, *offset); - memcpy(address+1, sequence->bytes, (*address = sequence->length)); - return 1; - } - return 0; +static inline ContractionTableHeader * +getContractionTableHeader (ContractionTableData *ctd) { + return getDataItem(ctd->area, 0); } static ContractionTableCharacter * -getCharacterEntry (wchar_t character) { +getCharacterEntry (wchar_t character, ContractionTableData *ctd) { int first = 0; - int last = characterEntryCount - 1; + int last = ctd->characterEntryCount - 1; while (first <= last) { int current = (first + last) / 2; - ContractionTableCharacter *entry = &characterTable[current]; + ContractionTableCharacter *entry = &ctd->characterTable[current]; if (entry->value < character) { first = current + 1; @@ -200,26 +127,26 @@ getCharacterEntry (wchar_t character) { } } - if (characterEntryCount == characterTableSize) { - int newSize = characterTableSize; + if (ctd->characterEntryCount == ctd->characterTableSize) { + int newSize = ctd->characterTableSize; newSize = newSize? newSize<<1: 0X80; { - ContractionTableCharacter *newTable = realloc(characterTable, (newSize * sizeof(*newTable))); + ContractionTableCharacter *newTable = realloc(ctd->characterTable, (newSize * sizeof(*newTable))); if (!newTable) return NULL; - characterTable = newTable; - characterTableSize = newSize; + ctd->characterTable = newTable; + ctd->characterTableSize = newSize; } } - memmove(&characterTable[first+1], - &characterTable[first], - (characterEntryCount - first) * sizeof(*characterTable)); - ++characterEntryCount; + memmove(&ctd->characterTable[first+1], + &ctd->characterTable[first], + (ctd->characterEntryCount - first) * sizeof(*ctd->characterTable)); + ctd->characterEntryCount += 1; { - ContractionTableCharacter *entry = &characterTable[first]; + ContractionTableCharacter *entry = &ctd->characterTable[first]; memset(entry, 0, sizeof(*entry)); entry->value = character; return entry; @@ -227,70 +154,88 @@ getCharacterEntry (wchar_t character) { } static int -saveCharacterTable (void) { - ContractionTableOffset offset; - if (!characterEntryCount) return 1; - if (!saveBytes(NULL, &offset, characterTable, - (tableHeader->characterCount = characterEntryCount) * sizeof(characterTable[0]), - __alignof__(characterTable[0]))) +saveCharacterTable (ContractionTableData *ctd) { + DataOffset offset; + if (!ctd->characterEntryCount) return 1; + if (!saveDataItem(ctd->area, &offset, ctd->characterTable, + ctd->characterEntryCount * sizeof(ctd->characterTable[0]), + __alignof__(ctd->characterTable[0]))) return 0; - tableHeader->characters = offset; + { + ContractionTableHeader *header = getContractionTableHeader(ctd); + header->characters = offset; + header->characterCount = ctd->characterEntryCount; + } + return 1; } static ContractionTableRule * addRule ( - FileData *data, + DataFile *file, ContractionTableOpcode opcode, - CharacterString *find, - ByteString *replace, + DataString *find, + ByteOperand *replace, ContractionTableCharacterAttributes after, - ContractionTableCharacterAttributes before + ContractionTableCharacterAttributes before, + ContractionTableData *ctd ) { - ContractionTableOffset ruleOffset; + DataOffset ruleOffset; int ruleSize = sizeof(ContractionTableRule) - sizeof(find->characters[0]); if (find) ruleSize += find->length * sizeof(find->characters[0]); if (replace) ruleSize += replace->length; - if (allocateBytes(data, &ruleOffset, ruleSize, __alignof__(ContractionTableRule))) { - ContractionTableRule *newRule = getContractionTableItem(tableHeader, ruleOffset); + if (allocateDataItem(ctd->area, &ruleOffset, ruleSize, __alignof__(ContractionTableRule))) { + ContractionTableRule *newRule = getDataItem(ctd->area, ruleOffset); newRule->opcode = opcode; newRule->after = after; newRule->before = before; - if (find) + if (find) { wmemcpy(&newRule->findrep[0], &find->characters[0], (newRule->findlen = find->length)); - else + } else { newRule->findlen = 0; + } - if (replace) + if (replace) { memcpy(&newRule->findrep[newRule->findlen], &replace->bytes[0], (newRule->replen = replace->length)); - else + } else { newRule->replen = 0; + } /*link new rule into table.*/ { ContractionTableOffset *offsetAddress; if (newRule->findlen == 1) { - ContractionTableCharacter *character = getCharacterEntry(newRule->findrep[0]); + ContractionTableCharacter *character = getCharacterEntry(newRule->findrep[0], ctd); if (!character) return NULL; if (newRule->opcode == CTO_Always) character->always = ruleOffset; offsetAddress = &character->rules; } else { - offsetAddress = &tableHeader->rules[CTH(newRule->findrep)]; + offsetAddress = &getContractionTableHeader(ctd)->rules[CTH(newRule->findrep)]; } while (*offsetAddress) { - ContractionTableRule *currentRule = getContractionTableItem(tableHeader, *offsetAddress); + ContractionTableRule *currentRule = getDataItem(ctd->area, *offsetAddress); + if (newRule->findlen > currentRule->findlen) break; + if (newRule->findlen == currentRule->findlen) { - if ((currentRule->opcode == CTO_Always) && (newRule->opcode != CTO_Always)) break; + if ((newRule->opcode == currentRule->opcode) && + (newRule->after == currentRule->after) && + (newRule->before == currentRule->before) && + (wmemcmp(newRule->findrep, currentRule->findrep, newRule->findlen) == 0)) + break; + + if ((currentRule->opcode == CTO_Always) && (newRule->opcode != CTO_Always)) + break; } + offsetAddress = ¤tRule->next; } @@ -300,58 +245,75 @@ addRule ( return newRule; } + return NULL; } static const struct CharacterClass * -findCharacterClass (const wchar_t *name, int length) { - const struct CharacterClass *class = characterClasses; +findCharacterClass (const wchar_t *name, int length, ContractionTableData *ctd) { + const struct CharacterClass *class = ctd->characterClasses; + while (class) { - if ((length == class->length) && - (wmemcmp(name, class->name, length) == 0)) - return class; + if (length == class->length) + if (wmemcmp(name, class->name, length) == 0) + return class; + class = class->next; } + return NULL; } static struct CharacterClass * -addCharacterClass (FileData *data, const wchar_t *name, int length) { +addCharacterClass (DataFile *file, const wchar_t *name, int length, ContractionTableData *ctd) { struct CharacterClass *class; - if (characterClassAttribute) { + + if (ctd->characterClassAttribute) { if ((class = malloc(sizeof(*class) + ((length - 1) * sizeof(class->name[0]))))) { memset(class, 0, sizeof(*class)); wmemcpy(class->name, name, (class->length = length)); - class->attribute = characterClassAttribute; - characterClassAttribute <<= 1; + class->attribute = ctd->characterClassAttribute; + ctd->characterClassAttribute <<= 1; - class->next = characterClasses; - characterClasses = class; + class->next = ctd->characterClasses; + ctd->characterClasses = class; return class; } } - compileError(data, "character class table overflow: %.*" PRIws, length, name); + + reportDataError(file, "character class table overflow: %.*" PRIws, length, name); return NULL; } +static int +getCharacterClass (DataFile *file, const struct CharacterClass **class, ContractionTableData *ctd) { + DataOperand operand; + + if (getDataOperand(file, &operand, "character class name")) { + if ((*class = findCharacterClass(operand.characters, operand.length, ctd))) return 1; + reportDataError(file, "character class not defined: %.*" PRIws, operand.length, operand.characters); + } + + return 0; +} + static void -deallocateCharacterClasses (void) { - while (characterClasses) { - struct CharacterClass *class = characterClasses; - characterClasses = characterClasses->next; +deallocateCharacterClasses (ContractionTableData *ctd) { + while (ctd->characterClasses) { + struct CharacterClass *class = ctd->characterClasses; + ctd->characterClasses = ctd->characterClasses->next; free(class); } } static int -allocateCharacterClasses (void) { +allocateCharacterClasses (ContractionTableData *ctd) { const wchar_t *const *name = characterClassNames; - characterClasses = NULL; - characterClassAttribute = 1; + while (*name) { - if (!addCharacterClass(NULL, *name, wcslen(*name))) { - deallocateCharacterClasses(); + if (!addCharacterClass(NULL, *name, wcslen(*name), ctd)) { + deallocateCharacterClasses(ctd); return 0; } ++name; @@ -360,620 +322,384 @@ allocateCharacterClasses (void) { } static ContractionTableOpcode -getOpcode (FileData *data, const wchar_t *token, int length) { - ContractionTableOpcode opcode; - for (opcode=0; opcode= WC_C('0') && digit <= WC_C('9')) - *value = digit - WC_C('0'); - else if (digit >= WC_C('a') && digit <= WC_C('f')) - *value = digit - WC_C('a') + 10; - else if (digit >= WC_C('A') && digit <= WC_C('F')) - *value = digit - WC_C('A') + 10; - else - return 0; - return 1; -} + for (opcode=0; opcodeopcodeNameLengths[opcode]) + if (wmemcmp(operand.characters, opcodeNames[opcode], operand.length) == 0) + return opcode; -static int -octalDigit (FileData *data, int *value, wchar_t digit) { - if (digit < WC_C('0') || digit > WC_C('7')) return 0; - *value = digit - WC_C('0'); - return 1; + reportDataError(file, "opcode not defined: %.*" PRIws, operand.length, operand.characters); + } + + return CTO_None; } static int -parseCharacters (FileData *data, CharacterString *result, const wchar_t *token, const int length) { /*interpret find string */ - int count = 0; /*loop counters */ - int index; /*loop counters */ - for (index = 0; index < length; index++) { - wchar_t character = token[index]; - if (character == WC_C('\\')) { /* escape sequence */ - int ok = 0; - int start = index; - if (++index < length) { - switch (character = token[index]) { - case WC_C('\\'): - ok = 1; - break; - - case WC_C('f'): - character = WC_C('\f'); - ok = 1; - break; - - case WC_C('n'): - character = WC_C('\n'); - ok = 1; - break; - - case WC_C('r'): - character = WC_C('\r'); - ok = 1; - break; - - case WC_C('s'): - character = WC_C(' '); - ok = 1; - break; - - case WC_C('t'): - character = WC_C('\t'); - ok = 1; - break; - - case WC_C('v'): - character = WC_C('\v'); - ok = 1; - break; - - { - int count; - - case WC_C('o'): - count = 3; - - if ((length - index) > count) { - character = 0; - ok = 1; - - do { - int octet; - if (!octalDigit(data, &octet, token[++index])) { - ok = 0; - break; - } - - character = (character << 3) | octet; - } while (--count); - } - break; - } - - { - int count; - - case WC_C('U'): - count = 8; - goto hexadecimal; - - case WC_C('u'): - count = 4; - goto hexadecimal; - - case WC_C('x'): - count = 2; - hexadecimal: - - if ((length - index) > count) { - character = 0; - ok = 1; - - do { - int nibble; - if (!hexadecimalDigit(data, &nibble, token[++index])) { - ok = 0; - break; - } - - character = (character << 4) | nibble; - } while (--count); - } - break; - } - - case WC_C('<'): { - const wchar_t *first = &token[++index]; - const wchar_t *end = wmemchr(first, WC_C('>'), length-index); - - if (end) { - int count = end - first; - index += count; - - { - char name[count+1]; - - { - int i; - for (i=0; icharacters[count++] = character; +saveCellsOperand (DataFile *file, DataOffset *offset, const ByteOperand *sequence, ContractionTableData *ctd) { + if (allocateDataItem(ctd->area, offset, sequence->length+1, __alignof__(BYTE))) { + BYTE *address = getDataItem(ctd->area, *offset); + memcpy(address+1, sequence->bytes, (*address = sequence->length)); + return 1; } - result->length = count; - return 1; -} /*find string interpreted */ + return 0; +} static int -parseDots (FileData *data, ByteString *cells, const wchar_t *token, const int length) { /*get dot patterns */ - BYTE cell = 0; /*assembly place for dots */ - int count = 0; /*loop counters */ - int index; /*loop counters */ +parseCellsOperand (DataFile *file, ByteOperand *cells, const wchar_t *characters, int length) { + BYTE cell = 0; int start = 0; + int index; + + cells->length = 0; - for (index = 0; index < length; index++) { + for (index=0; indexbytes[count++] = cell; + + cells->bytes[cells->length++] = cell; + + if (cells->length == ARRAY_COUNT(cells->bytes)) { + reportDataError(file, "cells operand too long"); + return 0; + } + cell = 0; start = index + 1; break; + default: invalid: - compileError(data, "invalid dot number: %.1" PRIws, &character); + reportDataError(file, "invalid dot number: %.1" PRIws, &character); return 0; } } + if (index == start) { - compileError(data, "missing cell specification."); + reportDataError(file, "missing cell specification"); return 0; } - cells->bytes[count++] = cell; /*last cell */ - cells->length = count; - return 1; -} /*end of function parseDots */ -static int -getCharacters (FileData *data, CharacterString *characters, const wchar_t **token, int *length) { - if (getToken(data, token, length, "characters")) - if (parseCharacters(data, characters, *token, *length)) - return 1; - return 0; + cells->bytes[cells->length++] = cell; /*last cell */ + return 1; } static int -getFindText (FileData *data, CharacterString *find, const wchar_t **token, int *length) { - if (getToken(data, token, length, "find text")) - if (parseCharacters(data, find, *token, *length)) +getCellsOperand (DataFile *file, ByteOperand *cells, const char *description) { + DataOperand operand; + + if (getDataOperand(file, &operand, description)) + if (parseCellsOperand(file, cells, operand.characters, operand.length)) return 1; + return 0; } static int -getReplacePattern (FileData *data, ByteString *replace, const wchar_t **token, int *length) { - if (getToken(data, token, length, "replacement pattern")) { - if (*length == 1 && **token == WC_C('=')) { +getReplacePattern (DataFile *file, ByteOperand *replace) { + DataOperand operand; + + if (getDataOperand(file, &operand, "replacement pattern")) { + if ((operand.length == 1) && (operand.characters[0] == WC_C('='))) { replace->length = 0; return 1; } - if (parseDots(data, replace, *token, *length)) - return 1; - } - return 0; -} -static int -getCharacterClass (FileData *data, const struct CharacterClass **class, const wchar_t **token, int *length) { - if (getToken(data, token, length, "character class name")) { - if ((*class = findCharacterClass(*token, *length))) return 1; - compileError(data, "character class not defined: %.*" PRIws, *length, *token); + if (parseCellsOperand(file, replace, operand.characters, operand.length)) return 1; } + return 0; } -static int processFile (const char *fileName); static int -includeFile (FileData *data, CharacterString *path) { - const char *prefixAddress = data->fileName; - int prefixLength = 0; - const wchar_t *suffixAddress = path->characters; - int suffixLength = path->length; - - if (*suffixAddress != WC_C('/')) { - const char *ptr = strrchr(prefixAddress, '/'); - if (ptr) prefixLength = ptr - prefixAddress + 1; - } - - { - char file[prefixLength + suffixLength + 1]; - snprintf(file, sizeof(file), "%.*s%.*" PRIws, - prefixLength, prefixAddress, suffixLength, suffixAddress); - return processFile(file); - } +getFindText (DataFile *file, DataString *find) { + return getDataString(file, find, 0, "find text"); } static int -processWcharLine (FileData *data, const wchar_t *line) { - int ok = 0; - const wchar_t *token = line; - int length = 0; /*length of token */ - ContractionTableOpcode opcode; +processContractionTableLine (DataFile *file, void *data) { + ContractionTableData *ctd = data; ContractionTableCharacterAttributes after = 0; ContractionTableCharacterAttributes before = 0; -doOpcode: - if (!getToken(data, &token, &length, NULL)) return 1; /*blank line */ - if (*token == WC_C('#')) return 1; - opcode = getOpcode(data, token, length); - - switch (opcode) { /*Carry out operations */ - case CTO_None: - break; - - case CTO_IncludeFile: { - CharacterString path; - if (getToken(data, &token, &length, "include file path")) - if (parseCharacters(data, &path, token, length)) - if (!includeFile(data, &path)) - goto failure; - break; - } + while (1) { + ContractionTableOpcode opcode; - case CTO_Always: - case CTO_LargeSign: - case CTO_LastLargeSign: - case CTO_WholeWord: - case CTO_JoinedWord: - case CTO_LowWord: - case CTO_SuffixableWord: - case CTO_PrefixableWord: - case CTO_BegWord: - case CTO_BegMidWord: - case CTO_MidWord: - case CTO_MidEndWord: - case CTO_EndWord: - case CTO_PrePunc: - case CTO_PostPunc: - case CTO_BegNum: - case CTO_MidNum: - case CTO_EndNum: - case CTO_Repeatable: { - CharacterString find; - ByteString replace; - if (getFindText(data, &find, &token, &length)) - if (getReplacePattern(data, &replace, &token, &length)) - if (!addRule(data, opcode, &find, &replace, after, before)) - goto failure; - break; - } + switch ((opcode = getOpcode(file, ctd))) { + case CTO_None: + break; - case CTO_Contraction: - case CTO_Literal: { - CharacterString find; - if (getFindText(data, &find, &token, &length)) - if (!addRule(data, opcode, &find, NULL, after, before)) - goto failure; - break; - } + case CTO_IncludeFile: + if (!processIncludeOperands(file, data)) return 0; + break; - case CTO_CapitalSign: { - ByteString cells; - if (getToken(data, &token, &length, "capital sign")) - if (parseDots(data, &cells, token, length)) { - ContractionTableOffset offset; - if (!saveSequence(data, &offset, &cells)) goto failure; - tableHeader->capitalSign = offset; - } - break; - } + case CTO_Always: + case CTO_LargeSign: + case CTO_LastLargeSign: + case CTO_WholeWord: + case CTO_JoinedWord: + case CTO_LowWord: + case CTO_SuffixableWord: + case CTO_PrefixableWord: + case CTO_BegWord: + case CTO_BegMidWord: + case CTO_MidWord: + case CTO_MidEndWord: + case CTO_EndWord: + case CTO_PrePunc: + case CTO_PostPunc: + case CTO_BegNum: + case CTO_MidNum: + case CTO_EndNum: + case CTO_Repeatable: { + DataString find; + ByteOperand replace; + if (getFindText(file, &find)) + if (getReplacePattern(file, &replace)) + if (!addRule(file, opcode, &find, &replace, after, before, ctd)) + return 0; + break; + } - case CTO_BeginCapitalSign: { - ByteString cells; - if (getToken(data, &token, &length, "begin capital sign")) - if (parseDots(data, &cells, token, length)) { - ContractionTableOffset offset; - if (!saveSequence(data, &offset, &cells)) goto failure; - tableHeader->beginCapitalSign = offset; - } - break; - } + case CTO_Contraction: + case CTO_Literal: { + DataString find; + if (getFindText(file, &find)) + if (!addRule(file, opcode, &find, NULL, after, before, ctd)) + return 0; + break; + } - case CTO_EndCapitalSign: { - ByteString cells; - if (getToken(data, &token, &length, "end capital sign")) - if (parseDots(data, &cells, token, length)) { - ContractionTableOffset offset; - if (!saveSequence(data, &offset, &cells)) goto failure; - tableHeader->endCapitalSign = offset; + case CTO_CapitalSign: { + ByteOperand cells; + if (getCellsOperand(file, &cells, "capital sign")) { + DataOffset offset; + if (!saveCellsOperand(file, &offset, &cells, ctd)) return 0; + getContractionTableHeader(ctd)->capitalSign = offset; } - break; - } + break; + } - case CTO_EnglishLetterSign: { - ByteString cells; - if (getToken(data, &token, &length, "letter sign")) - if (parseDots(data, &cells, token, length)) { - ContractionTableOffset offset; - if (!saveSequence(data, &offset, &cells)) goto failure; - tableHeader->englishLetterSign = offset; + case CTO_BeginCapitalSign: { + ByteOperand cells; + if (getCellsOperand(file, &cells, "begin capital sign")) { + DataOffset offset; + if (!saveCellsOperand(file, &offset, &cells, ctd)) return 0; + getContractionTableHeader(ctd)->beginCapitalSign = offset; } - break; - } + break; + } - case CTO_NumberSign: { - ByteString cells; - if (getToken(data, &token, &length, "number sign")) - if (parseDots(data, &cells, token, length)) { - ContractionTableOffset offset; - if (!saveSequence(data, &offset, &cells)) goto failure; - tableHeader->numberSign = offset; + case CTO_EndCapitalSign: { + ByteOperand cells; + if (getCellsOperand(file, &cells, "end capital sign")) { + DataOffset offset; + if (!saveCellsOperand(file, &offset, &cells, ctd)) return 0; + getContractionTableHeader(ctd)->endCapitalSign = offset; } - break; - } + break; + } - case CTO_Class: { - const struct CharacterClass *class; - CharacterString characters; - if (getToken(data, &token, &length, "character class name")) { - if ((class = findCharacterClass(token, length))) { - compileError(data, "character class already defined: %.*" PRIws, length, token); - } else if ((class = addCharacterClass(data, token, length))) { - if (getCharacters(data, &characters, &token, &length)) { - int index; - for (index=0; indexattributes |= class->attribute; - } - } + case CTO_EnglishLetterSign: { + ByteOperand cells; + if (getCellsOperand(file, &cells, "letter sign")) { + DataOffset offset; + if (!saveCellsOperand(file, &offset, &cells, ctd)) return 0; + getContractionTableHeader(ctd)->englishLetterSign = offset; } + break; } - break; - } - { - ContractionTableCharacterAttributes *attributes; - const struct CharacterClass *class; - - case CTO_After: - attributes = &after; - goto doClass; - case CTO_Before: - attributes = &before; - doClass: - - if (getCharacterClass(data, &class, &token, &length)) { - *attributes |= class->attribute; - goto doOpcode; + case CTO_NumberSign: { + ByteOperand cells; + if (getCellsOperand(file, &cells, "number sign")) { + DataOffset offset; + if (!saveCellsOperand(file, &offset, &cells, ctd)) return 0; + getContractionTableHeader(ctd)->numberSign = offset; + } + break; } - break; - } - default: - compileError(data, "unimplemented opcode: %.*" PRIws, length, token); - break; - } /*end of loop for processing tableStream */ - ok = 1; + case CTO_Class: { + DataOperand name; -failure: - return ok; -} + if (getDataOperand(file, &name, "character class name")) { + const struct CharacterClass *class; -static int -processUtf8Line (char *line, void *dataAddress) { - FileData *data = dataAddress; - size_t length = strlen(line); - const char *byte = line; - wchar_t characters[length+1]; - wchar_t *character = characters; + if ((class = findCharacterClass(name.characters, name.length, ctd))) { + reportDataError(file, "character class already defined: %.*" PRIws, + name.length, name.characters); + } else if ((class = addCharacterClass(file, name.characters, name.length, ctd))) { + DataString characters; + + if (getDataString(file, &characters, 0, "characters")) { + int index; - data->lineNumber++; + for (index=0; indexattributes |= class->attribute; + } + } + } + } + break; + } - while (length) { - const char *start = byte; - wint_t wc = convertUtf8ToWchar(&byte, &length); + { + ContractionTableCharacterAttributes *attributes; + const struct CharacterClass *class; + + case CTO_After: + attributes = &after; + goto doClass; + case CTO_Before: + attributes = &before; + doClass: + + if (getCharacterClass(file, &class, ctd)) { + *attributes |= class->attribute; + continue; + } + break; + } - if (wc == WEOF) { - compileError(data, "illegal UTF-8 character at offset %d", start-line); - return 1; + default: + reportDataError(file, "unimplemented opcode: %" PRIws, opcodeNames[opcode]); + break; } - *character++ = wc; + return 1; } - - *character = 0; - return processWcharLine(data, characters); } -static int -processFile (const char *fileName) { - int ok = 1; - FILE *stream; - - FileData data; - data.fileName = fileName; - data.lineNumber = 0; - LogPrint(LOG_DEBUG, "Including contraction table: %s", fileName); - - if ((stream = openDataFile(data.fileName, "r"))) { - if (!processLines(stream, processUtf8Line, &data)) return 0; - fclose(stream); - } else { - LogPrint(LOG_ERR, - "Cannot open contraction table '%s': %s", - data.fileName, strerror(errno)); - } - return ok; -} /*compilation completed */ - ContractionTable * compileContractionTable (const char *fileName) { - int ok = 0; - ContractionTableOffset headerOffset; - errorCount = 0; + ContractionTable *table = NULL; + ContractionTableData ctd; + + memset(&ctd, 0, sizeof(ctd)); - tableHeader = NULL; - tableSize = 0; - tableUsed = 0; + ctd.characterTable = NULL; + ctd.characterTableSize = 0; + ctd.characterEntryCount = 0; - characterTable = NULL; - characterTableSize = 0; - characterEntryCount = 0; + ctd.characterClasses = NULL; + ctd.characterClassAttribute = 1; - if (!opcodeLengths[0]) { + { ContractionTableOpcode opcode; - for (opcode=0; opcodeheader.fields = getContractionTableHeader(&ctd); + table->size = getDataSize(ctd.area); + resetDataArea(ctd.area); + + table->characters = NULL; + table->charactersSize = 0; + table->characterCount = 0; + } } } - deallocateCharacterClasses(); + deallocateCharacterClasses(&ctd); } - } else { - compileError(NULL, "contraction table header not allocated at offset 0."); } - } - if (characterTable) free(characterTable); - - if (errorCount) { - LogPrint(LOG_WARNING, "%d %s in contraction table '%s'.", - errorCount, ((errorCount == 1)? "error": "errors"), fileName); + destroyDataArea(ctd.area); } - if (ok) { - ContractionTable *table; + if (ctd.characterTable) free(ctd.characterTable); + return table; +} - if ((table = malloc(sizeof(*table)))) { - table->header = tableHeader; - table->characters = NULL; - table->charactersSize = 0; - table->characterCount = 0; - return table; - } +void +destroyContractionTable (ContractionTable *table) { + if (table->characters) { + free(table->characters); + table->characters = NULL; } - if (tableHeader) free(tableHeader); - return NULL; -} - -int -destroyContractionTable (ContractionTable *contractionTable) { - if (contractionTable->characters) free(contractionTable->characters); - if (contractionTable->header) free(contractionTable->header); - free(contractionTable); - return 1; + if (table->size) { + free(table->header.fields); + free(table); + } } -void -fixContractionTablePath (char **path) { - fixPath(path, CONTRACTION_TABLE_EXTENSION, CONTRACTION_TABLE_PREFIX); +char * +ensureContractionTableExtension (const char *path) { + return ensureExtension(path, CONTRACTION_TABLE_EXTENSION); } diff --git a/Programs/ctb_internal.h b/Programs/ctb_internal.h index 42372d7d0c855f6d12948894ff713bce7133b617..eae4fed9ddd196c1380149c3ca4822b756c3d605 100644 --- a/Programs/ctb_internal.h +++ b/Programs/ctb_internal.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -27,7 +28,7 @@ extern "C" { #define HASHNUM 1087 #define CTH(x) (((x[0]<<8)+x[1])%HASHNUM) -typedef unsigned long int ContractionTableOffset; +typedef uint32_t ContractionTableOffset; typedef enum { CTC_Space = 0X01, @@ -47,8 +48,6 @@ typedef struct { } ContractionTableCharacter; typedef enum { /*Op codes*/ - CTO_IncludeFile, /*include a file*/ - CTO_CapitalSign, /*dot pattern for capital sign*/ CTO_BeginCapitalSign, /*dot pattern for beginning capital block*/ CTO_EndCapitalSign, /*dot pattern for ending capital block*/ @@ -86,6 +85,7 @@ typedef enum { /*Op codes*/ CTO_After, /*only match if after character in class*/ CTO_Before, /*only match if before character in class*/ + CTO_IncludeFile, /*include a file*/ CTO_None /*For internal use only*/ } ContractionTableOpcode; @@ -110,11 +110,6 @@ typedef struct { /*translation table*/ ContractionTableOffset rules[HASHNUM]; /*locations of multi-character rules in table*/ } ContractionTableHeader; -static inline void * -getContractionTableItem (ContractionTableHeader *header, ContractionTableOffset offset) { - return (char *)header + offset; -} - typedef struct { wchar_t value; wchar_t uppercase; @@ -123,7 +118,12 @@ typedef struct { } CharacterEntry; struct ContractionTableStruct { - ContractionTableHeader *header; + union { + ContractionTableHeader *fields; + const unsigned char *bytes; + } header; + + size_t size; CharacterEntry *characters; int charactersSize; diff --git a/Programs/ctb_translate.c b/Programs/ctb_translate.c index 38ab8880c6721d56d6b4e8555318fc0781f25c96..b63197f306c91a70dd13dc6a89455e16147b6198 100644 --- a/Programs/ctb_translate.c +++ b/Programs/ctb_translate.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -19,14 +20,14 @@ #include -#ifdef HAVE_LIBICUUC +#ifdef HAVE_ICU #include -#endif /* HAVE_LIBICUUC */ +#endif /* HAVE_ICU */ -#include "tbl.h" #include "ctb.h" #include "ctb_internal.h" -#include "brl.h" +#include "unicode.h" +#include "brldots.h" static ContractionTable *table; static const wchar_t *src, *srcmin, *srcmax, *cursor; @@ -42,11 +43,16 @@ static const ContractionTableRule *currentRule; /*pointer to current rule in tab #define setOffset() assignOffset(dest-destmin) #define clearOffset() assignOffset(CTB_NO_OFFSET) +static inline const void * +getContractionTableItem (ContractionTableOffset offset) { + return &table->header.bytes[offset]; +} + static const ContractionTableCharacter * getContractionTableCharacter (wchar_t character) { - const ContractionTableCharacter *characters = getContractionTableItem(table->header, table->header->characters); + const ContractionTableCharacter *characters = getContractionTableItem(table->header.fields->characters); int first = 0; - int last = table->header->characterCount - 1; + int last = table->header.fields->characterCount - 1; while (first <= last) { int current = (first + last) / 2; @@ -213,12 +219,12 @@ selectRule (int length) { wchar_t characters[2]; characters[0] = toLowerCase(src[0]); characters[1] = toLowerCase(src[1]); - ruleOffset = table->header->rules[CTH(characters)]; + ruleOffset = table->header.fields->rules[CTH(characters)]; maximumLength = 0; } while (ruleOffset) { - currentRule = getContractionTableItem(table->header, ruleOffset); + currentRule = getContractionTableItem(ruleOffset); currentOpcode = currentRule->opcode; currentFindLength = currentRule->findlen; @@ -374,7 +380,7 @@ selectRule (int length) { break; } } - } /*Done with checking this rule */ + } ruleOffset = currentRule->next; } @@ -383,46 +389,68 @@ selectRule (int length) { } static int -putBytes (const BYTE *bytes, int count) { +putCells (const BYTE *cells, int count) { if (dest + count > destmax) return 0; - memcpy(dest, bytes, count); + memcpy(dest, cells, count); dest += count; return 1; } static int -putReplace (const ContractionTableRule *rule) { - return putBytes((BYTE *)&rule->findrep[rule->findlen], rule->replen); +putCell (BYTE byte) { + return putCells(&byte, 1); } static int -putComputerBraille (wchar_t character) { - BYTE cell = convertWcharToDots(textTable, character); - return putBytes(&cell, 1); +putReplace (const ContractionTableRule *rule) { + return putCells((BYTE *)&rule->findrep[rule->findlen], rule->replen); } -static int -putCharacter (wchar_t character) { +static const ContractionTableRule * +getAlwaysRule (wchar_t character) { const ContractionTableCharacter *ctc = getContractionTableCharacter(character); if (ctc) { ContractionTableOffset offset = ctc->always; if (offset) { - const ContractionTableRule *rule = getContractionTableItem(table->header, offset); - if (rule->replen) return putReplace(rule); + const ContractionTableRule *rule = getContractionTableItem(offset); + if (rule->replen) return rule; } } - return putComputerBraille(character); + return NULL; +} + +static int +putCharacter (wchar_t character) { + { + const ContractionTableRule *rule = getAlwaysRule(character); + if (rule) return putReplace(rule); + } + + { +#ifdef HAVE_WCHAR_H + const wchar_t substitute = UNICODE_REPLACEMENT_CHARACTER; +#else /* HAVE_WCHAR_H */ + const wchar_t substitute = 0X1A; /* ASCII SUB (CTRL-Z) */ +#endif /* HAVE_WCHAR_H */ + + if (character != substitute) { + const ContractionTableRule *rule = getAlwaysRule(substitute); + if (rule) return putReplace(rule); + } + } + + return putCell(BRL_DOT1 | BRL_DOT2 | BRL_DOT3 | BRL_DOT4 | BRL_DOT5 | BRL_DOT6 | BRL_DOT7 | BRL_DOT8); } static int putSequence (ContractionTableOffset offset) { - const BYTE *sequence = getContractionTableItem(table->header, offset); - return putBytes(sequence+1, *sequence); + const BYTE *sequence = getContractionTableItem(offset); + return putCells(sequence+1, *sequence); } static void findLineBreakOpportunities (unsigned char *opportunities, const wchar_t *characters, size_t length) { -#ifdef HAVE_LIBICUUC +#ifdef HAVE_ICU /* UAX #14: Line Breaking Properties * http://unicode.org/reports/tr14/ * Section 6: Line Breaking Algorithm @@ -819,7 +847,7 @@ findLineBreakOpportunities (unsigned char *opportunities, const wchar_t *charact } } } -#else /* HAVE_LIBICUUC */ +#else /* HAVE_ICU */ int wasSpace = 0; int index; @@ -828,7 +856,7 @@ findLineBreakOpportunities (unsigned char *opportunities, const wchar_t *charact opportunities[index] = wasSpace && !isSpace; wasSpace = isSpace; } -#endif /* HAVE_LIBICUUC */ +#endif /* HAVE_ICU */ } int @@ -888,10 +916,10 @@ contractText ( continue; } - if (table->header->numberSign && (previousOpcode != CTO_MidNum) && + if (table->header.fields->numberSign && (previousOpcode != CTO_MidNum) && !testCharacter(before, CTC_Digit) && testCharacter(*src, CTC_Digit)) { - if (!putSequence(table->header->numberSign)) break; - } else if (table->header->englishLetterSign && testCharacter(*src, CTC_Letter)) { + if (!putSequence(table->header.fields->numberSign)) break; + } else if (table->header.fields->englishLetterSign && testCharacter(*src, CTC_Letter)) { if ((currentOpcode == CTO_Contraction) || ((currentOpcode != CTO_EndNum) && testCharacter(before, CTC_Digit)) || (testCharacter(*src, CTC_Letter) && @@ -901,23 +929,23 @@ contractText ( (((src + 1) == srcmax) || testCharacter(src[1], CTC_Space) || (testCharacter(src[1], CTC_Punctuation) && (src[1] != '.') && (src[1] != '\''))))) { - if (!putSequence(table->header->englishLetterSign)) break; + if (!putSequence(table->header.fields->englishLetterSign)) break; } } if (testCharacter(*src, CTC_UpperCase)) { if (!testCharacter(before, CTC_UpperCase)) { - if (table->header->beginCapitalSign && + if (table->header.fields->beginCapitalSign && (src + 1 < srcmax) && testCharacter(src[1], CTC_UpperCase)) { - if (!putSequence(table->header->beginCapitalSign)) break; - } else if (table->header->capitalSign) { - if (!putSequence(table->header->capitalSign)) break; + if (!putSequence(table->header.fields->beginCapitalSign)) break; + } else if (table->header.fields->capitalSign) { + if (!putSequence(table->header.fields->capitalSign)) break; } } } else if (testCharacter(*src, CTC_LowerCase)) { - if (table->header->endCapitalSign && (src - 2 >= srcmin) && + if (table->header.fields->endCapitalSign && (src - 2 >= srcmin) && testCharacter(src[-1], CTC_UpperCase) && testCharacter(src[-2], CTC_UpperCase)) { - if (!putSequence(table->header->endCapitalSign)) break; + if (!putSequence(table->header.fields->endCapitalSign)) break; } } @@ -1009,7 +1037,8 @@ contractText ( } } } else { - if (!putComputerBraille(*src)) break; + currentOpcode = CTO_Always; + if (!putCharacter(*src)) break; src += 1; } @@ -1026,7 +1055,7 @@ contractText ( if ((dest == destmin) || dest[-1]) { previousOpcode = currentOpcode; } - } /*end of translation loop */ + } done: if (src < srcmax) { @@ -1065,4 +1094,4 @@ done: *inputLength = src - srcmin; *outputLength = dest - destmin; return 1; -} /*translation completed */ +} diff --git a/Programs/ctbtest.c b/Programs/ctbtest.c index 684093157aff4d79f0ffdaeb88a3e305cced32fe..7f1df583ebf63798bbfa03aeb65726bc9793ce3e 100644 --- a/Programs/ctbtest.c +++ b/Programs/ctbtest.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -29,42 +30,24 @@ #include "options.h" #include "misc.h" #include "charset.h" -#include "brl.h" +#include "unicode.h" +//#include "brl.h" +#include "ttb.h" #include "ctb.h" -#include "tbl.h" -static char *opt_dataDirectory; -static char *opt_contractionsDirectory; static char *opt_contractionTable; static char *opt_tablesDirectory; static char *opt_textTable; static char *opt_outputWidth; +static int opt_forceOutput; BEGIN_OPTION_TABLE(programOptions) - { .letter = 'D', - .word = "data-directory", - .flags = OPT_Hidden, - .argument = "file", - .setting.string = &opt_dataDirectory, - .defaultSetting = DATA_DIRECTORY, - .description = "Path to directory for configuration files." - }, - - { .letter = 'C', - .word = "contractions-directory", - .flags = OPT_Hidden, - .argument = strtext("directory"), - .setting.string = &opt_contractionsDirectory, - .defaultSetting = DATA_DIRECTORY, - .description = strtext("Path to directory for contractions tables.") - }, - { .letter = 'c', .word = "contraction-table", .argument = "file", .setting.string = &opt_contractionTable, .defaultSetting = "en-us-g2", - .description = "Path to contraction table file." + .description = "Contraction table." }, { .letter = 'T', @@ -73,15 +56,14 @@ BEGIN_OPTION_TABLE(programOptions) .argument = strtext("directory"), .setting.string = &opt_tablesDirectory, .defaultSetting = DATA_DIRECTORY, - .description = strtext("Path to directory for text and attributes tables.") + .description = strtext("Path to directory containing tables.") }, { .letter = 't', .word = "text-table", .argument = "file", .setting.string = &opt_textTable, - .defaultSetting = TEXT_TABLE, - .description = "Text translation table." + .description = "Text table." }, { .letter = 'w', @@ -91,16 +73,32 @@ BEGIN_OPTION_TABLE(programOptions) .defaultSetting = "", .description = "Maximum length of an output line." }, + + { .letter = 'f', + .word = "force-output", + .setting.flag = &opt_forceOutput, + .description = "Force immediate output." + }, END_OPTION_TABLE -TranslationTable textTable; -TranslationTable untextTable; static ContractionTable *contractionTable; static int outputWidth; static int outputExtend; static unsigned char *outputBuffer; +static void +writeLocalCharacter (FILE *stream, unsigned char cell) { + fputc(convertDotsToCharacter(textTable, cell), stream); +} + +static void +writeUtf8Braille (FILE *stream, unsigned char cell) { + Utf8Buffer utf8; + size_t utfs = convertWcharToUtf8(cell|UNICODE_BRAILLE_ROW, utf8); + fprintf(stream, "%.*s", utfs, utf8); +} + typedef struct { unsigned char status; } LineProcessingData; @@ -109,15 +107,15 @@ static int contractLine (char *line, void *data) { LineProcessingData *lpd = data; int lineLength = strlen(line); - wchar_t characters[lineLength]; - const wchar_t *inputBuffer = characters; + wchar_t inputCharacters[lineLength]; + const wchar_t *inputBuffer = inputCharacters; { int i; - for (i=0; istatus = 12; @@ -193,9 +194,7 @@ main (int argc, char *argv[]) { { char **const paths[] = { - &opt_dataDirectory, &opt_tablesDirectory, - &opt_contractionsDirectory, NULL }; fixInstallPaths(paths); @@ -213,18 +212,37 @@ main (int argc, char *argv[]) { outputBuffer = NULL; { - char *contractionTablePath; + char *contractionTableFile; + + if ((contractionTableFile = ensureContractionTableExtension(opt_contractionTable))) { + char *contractionTablePath; - fixContractionTablePath(&opt_contractionTable); - if ((contractionTablePath = makePath(opt_contractionsDirectory, opt_contractionTable))) { - if ((contractionTable = compileContractionTable(contractionTablePath))) { - char *textTablePath; + if ((contractionTablePath = makePath(opt_tablesDirectory, contractionTableFile))) { + if ((contractionTable = compileContractionTable(contractionTablePath))) { + if (*opt_textTable) { + char *textTableFile; - fixTextTablePath(&opt_textTable); - if ((textTablePath = makePath(opt_tablesDirectory, opt_textTable))) { - if (loadTranslationTable(textTablePath, NULL, textTable, 0)) { - reverseTranslationTable(textTable, untextTable); + if ((textTableFile = ensureTextTableExtension(opt_textTable))) { + char *textTablePath; + + if ((textTablePath = makePath(opt_tablesDirectory, textTableFile))) { + status = (textTable = compileTextTable(textTablePath))? 0: 4; + + free(textTablePath); + } else { + status = 4; + } + + free(textTableFile); + } else { + status = 4; + } + } else { + textTable = NULL; + status = 0; + } + if (!status) { if (argc) { do { char *path = *argv; @@ -245,20 +263,21 @@ main (int argc, char *argv[]) { } else { status = contractFile(stdin); } - } else { - status = 4; + + if (textTable) destroyTextTable(textTable); } - free(textTablePath); + + destroyContractionTable(contractionTable); } else { - status = 4; + status = 3; } - destroyContractionTable(contractionTable); + + free(contractionTablePath); } else { status = 3; } - free(contractionTablePath); - } else { - status = 3; + + free(contractionTableFile); } } diff --git a/Programs/cut.c b/Programs/cut.c index 84ba3e54a83d0da60ef3464ba66229ecbfe44329..3182ca383dafba12be8ed242e678063e3dfe648a 100644 --- a/Programs/cut.c +++ b/Programs/cut.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -23,7 +24,6 @@ #include "scr.h" #include "tunes.h" -#include "charset.h" #include "cut.h" /* Global state variables */ diff --git a/Programs/cut.h b/Programs/cut.h index 6771fb7f5100a7cb18fdb27ca8429f1c669e777f..ac63abd07a84a4d30f67c8d00f789b93d084a04c 100644 --- a/Programs/cut.h +++ b/Programs/cut.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/dataarea.c b/Programs/dataarea.c new file mode 100644 index 0000000000000000000000000000000000000000..779e70e3f8739a4b651b1627247761ceb84db2e8 --- /dev/null +++ b/Programs/dataarea.c @@ -0,0 +1,90 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#include "prologue.h" + +#include + +#include "misc.h" +#include "dataarea.h" + +struct DataAreaStruct { + unsigned char *address; + size_t size; + size_t used; +}; + +void +resetDataArea (DataArea *area) { + area->address = NULL; + area->size = 0; + area->used = 0; +} + +DataArea * +newDataArea (void) { + DataArea *area; + if ((area = malloc(sizeof(*area)))) resetDataArea(area); + return area; +} + +void +destroyDataArea (DataArea *area) { + if (area->address) free(area->address); + free(area); +} + +int +allocateDataItem (DataArea *area, DataOffset *offset, size_t size, unsigned int alignment) { + size_t newUsed = (area->used = (area->used + (alignment - 1)) / alignment * alignment) + size; + + if (newUsed > area->size) { + size_t newSize = newUsed | 0XFFF; + unsigned char *newAddress = realloc(area->address, newSize); + + if (!newAddress) { + LogPrint(LOG_ERR, "insufficient memory for data area"); + return 0; + } + + memset(newAddress+area->size, 0, newSize-area->size); + area->address = newAddress; + area->size = newSize; + } + + if (offset) *offset = area->used; + area->used = newUsed; + return 1; +} + +void * +getDataItem (DataArea *area, DataOffset offset) { + return area->address + offset; +} + +size_t +getDataSize (DataArea *area) { + return area->used; +} + +int +saveDataItem (DataArea *area, DataOffset *offset, const void *item, size_t size, int alignment) { + if (!allocateDataItem(area, offset, size, alignment)) return 0; + memcpy(getDataItem(area, *offset), item, size); + return 1; +} diff --git a/Programs/dataarea.h b/Programs/dataarea.h new file mode 100644 index 0000000000000000000000000000000000000000..308cdc4b29f753616ed1c936dcbe3faa97dd799d --- /dev/null +++ b/Programs/dataarea.h @@ -0,0 +1,41 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#ifndef BRLTTY_INCLUDED_DATAAREA +#define BRLTTY_INCLUDED_DATAAREA + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +typedef struct DataAreaStruct DataArea; +extern DataArea *newDataArea (void); +extern void destroyDataArea (DataArea *area); +extern void resetDataArea (DataArea *area); + +typedef unsigned long int DataOffset; +extern int allocateDataItem (DataArea *area, DataOffset *offset, size_t size, unsigned int alignment); +extern void *getDataItem (DataArea *area, DataOffset offset); +extern size_t getDataSize (DataArea *area); +extern int saveDataItem (DataArea *area, DataOffset *offset, const void *item, size_t size, int alignment); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* BRLTTY_INCLUDED_DATAAREA */ diff --git a/Programs/datafile.c b/Programs/datafile.c new file mode 100644 index 0000000000000000000000000000000000000000..9b948745fd0f7d04310ee1769d393e152562a1e7 --- /dev/null +++ b/Programs/datafile.c @@ -0,0 +1,484 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#include "prologue.h" + +#include +#include +#include + +#ifdef HAVE_ICU +#include +#endif /* HAVE_ICU */ + +#include "misc.h" +#include "datafile.h" +#include "charset.h" +#include "brldots.h" + +struct DataFileStruct { + const char *name; + int line; /*line number in table */ + DataProcessor *processor; + void *data; + + const wchar_t *start; + const wchar_t *end; +}; + +const wchar_t brlDotNumbers[BRL_DOT_COUNT] = WS_C("12345678"); +const unsigned char brlDotBits[BRL_DOT_COUNT] = { + BRL_DOT1, BRL_DOT2, BRL_DOT3, BRL_DOT4, + BRL_DOT5, BRL_DOT6, BRL_DOT7, BRL_DOT8 +}; + +int +brlDotNumberToIndex (wchar_t number, int *index) { + const wchar_t *character = wmemchr(brlDotNumbers, number, ARRAY_COUNT(brlDotNumbers)); + if (!character) return 0; + *index = character - brlDotNumbers; + return 1; +} + +int +brlDotBitToIndex (unsigned char bit, int *index) { + const unsigned char *cell = memchr(brlDotBits, bit, ARRAY_COUNT(brlDotBits)); + if (!cell) return 0; + *index = cell - brlDotBits; + return 1; +} + +void +reportDataError (DataFile *file, char *format, ...) { + char message[0X100]; + + { + const char *name = NULL; + const int *line = NULL; + va_list args; + + if (file) { + name = file->name; + if (file->line) line = &file->line; + } + + va_start(args, format); + formatInputError(message, sizeof(message), name, line, format, args); + va_end(args); + } + + LogPrint(LOG_WARNING, "%s", message); +} + +int +isKeyword (const wchar_t *keyword, const wchar_t *characters, int length) { + if (length != wcslen(keyword)) return 0; + + while (length > 0) { + if (towlower(*characters++) != towlower(*keyword++)) return 0; + length -= 1; + } + + return 1; +} + +int +isHexadecimalDigit (wchar_t character, int *value, int *shift) { + if ((character >= WC_C('0')) && (character <= WC_C('9'))) { + *value = character - WC_C('0'); + } else if ((character >= WC_C('a')) && (character <= WC_C('f'))) { + *value = character - WC_C('a') + 10; + } else if ((character >= WC_C('A')) && (character <= WC_C('F'))) { + *value = character - WC_C('A') + 10; + } else { + return 0; + } + + *shift = 4; + return 1; +} + +int +isOctalDigit (wchar_t character, int *value, int *shift) { + if ((character < WC_C('0')) || (character > WC_C('7'))) return 0; + *value = character - WC_C('0'); + *shift = 3; + return 1; +} + +int +findDataOperand (DataFile *file, const char *description) { + file->start = file->end; + + while (iswspace(file->start[0])) file->start += 1; + if (*(file->end = file->start)) return 1; + if (description) reportDataError(file, "%s not specified", description); + return 0; +} + +int +getDataCharacter (DataFile *file, wchar_t *character) { + if (!*file->end) return 0; + *character = *file->end++; + return 1; +} + +int +ungetDataCharacters (DataFile *file, unsigned int count) { + unsigned int maximum = file->end - file->start; + + if (count > maximum) { + reportDataError(file, "unget character count out of range: %u > %u", + count, maximum); + return 0; + } + + file->end -= count; + return 1; +} + +int +getDataOperand (DataFile *file, DataOperand *operand, const char *description) { + if (!findDataOperand(file, description)) return 0; + + do { + file->end += 1; + } while (file->end[0] && !iswspace(file->end[0])); + + operand->characters = file->start; + operand->length = file->end - file->start; + return 1; +} + +static int +parseDataString (DataFile *file, DataString *string, const wchar_t *characters, int length, int noUnicode) { + int index = 0; + + string->length = 0; + + while (index < length) { + wchar_t character = characters[index]; + + if (character == WC_C('\\')) { + int start = index; + int ok = 0; + + if (++index < length) { + switch ((character = characters[index])) { + case WC_C('#'): + case WC_C('\\'): + ok = 1; + break; + + case WC_C('b'): + character = WC_C('\b'); + ok = 1; + break; + + case WC_C('f'): + character = WC_C('\f'); + ok = 1; + break; + + case WC_C('n'): + character = WC_C('\n'); + ok = 1; + break; + + case WC_C('r'): + character = WC_C('\r'); + ok = 1; + break; + + case WC_C('s'): + character = WC_C(' '); + ok = 1; + break; + + case WC_C('t'): + character = WC_C('\t'); + ok = 1; + break; + + case WC_C('v'): + character = WC_C('\v'); + ok = 1; + break; + + { + int count; + int (*isDigit) (wchar_t character, int *value, int *shift); + + case WC_C('o'): + count = 3; + isDigit = isOctalDigit; + goto doNumber; + + case WC_C('U'): + if (noUnicode) break; + count = 8; + goto doHexadecimal; + + case WC_C('u'): + if (noUnicode) break; + count = 4; + goto doHexadecimal; + + case WC_C('X'): + case WC_C('x'): + count = 2; + goto doHexadecimal; + + doHexadecimal: + isDigit = isHexadecimalDigit; + goto doNumber; + + doNumber: + character = 0; + + while (++index < length) { + { + int value; + int shift; + + if (!isDigit(characters[index], &value, &shift)) break; + character = (character << shift) | value; + } + + if (!--count) { + ok = 1; + break; + } + } + + break; + } + + case WC_C('<'): { + const wchar_t *first = &characters[++index]; + const wchar_t *end = wmemchr(first, WC_C('>'), length-index); + + if (noUnicode) break; + + if (end) { + int count = end - first; + index += count; + + { + char name[count+1]; + + { + int i; + for (i=0; icharacters[string->length++] = character; + index += 1; + + /* there needs to be room for a trailing NUL */ + if (string->length == ARRAY_COUNT(string->characters)) { + reportDataError(file, "string operand too long"); + return 0; + } + } + string->characters[string->length] = 0; + + return 1; +} + +int +getDataString (DataFile *file, DataString *string, int noUnicode, const char *description) { + DataOperand operand; + + if (getDataOperand(file, &operand, description)) + if (parseDataString(file, string, operand.characters, operand.length, noUnicode)) + return 1; + + return 0; +} + +static int +parseDotOperand (DataFile *file, int *index, const wchar_t *characters, int length) { + if (length == 1) + if (brlDotNumberToIndex(characters[0], index)) + return 1; + + reportDataError(file, "invalid braille dot number: %.*" PRIws, length, characters); + return 0; +} + +int +getDotOperand (DataFile *file, int *index) { + DataOperand number; + + if (getDataOperand(file, &number, "dot number")) + if (parseDotOperand(file, index, number.characters, number.length)) + return 1; + + return 0; +} + +int +includeDataFile (DataFile *file, const wchar_t *name, unsigned int length) { + const char *prefixAddress = file->name; + unsigned int prefixLength = 0; + + if (*name != WC_C('/')) { + const char *prefixEnd = strrchr(prefixAddress, '/'); + if (prefixEnd) prefixLength = prefixEnd - prefixAddress + 1; + } + + { + char path[prefixLength + length + 1]; + snprintf(path, sizeof(path), "%.*s%.*" PRIws, + prefixLength, prefixAddress, length, name); + return processDataFile(path, file->processor, file->data); + } +} + +int +processIncludeOperands (DataFile *file, void *data) { + DataString path; + + if (getDataString(file, &path, 0, "include file path")) + if (!includeDataFile(file, path.characters, path.length)) + return 0; + + return 1; +} + +int +processPropertyOperand (DataFile *file, const DataProperty *properties, const char *description, void *data) { + DataOperand name; + + if (getDataOperand(file, &name, description)) { + { + const DataProperty *property = properties; + + while (property->name) { + if (isKeyword(property->name, name.characters, name.length)) + return property->processor(file, data); + + property += 1; + } + + if (property->processor) { + ungetDataCharacters(file, name.length); + return property->processor(file, data); + } + } + + reportDataError(file, "unknown %s: %.*" PRIws, + description, name.length, name.characters); + } + + return 1; +} + +static int +processWcharLine (DataFile *file, const wchar_t *line) { + file->end = file->start = line; + if (!findDataOperand(file, NULL)) return 1; /*blank line */ + if (file->start[0] == WC_C('#')) return 1; + return file->processor(file, file->data); +} + +static int +processUtf8Line (char *line, void *dataAddress) { + DataFile *file = dataAddress; + size_t length = strlen(line); + const char *byte = line; + wchar_t characters[length+1]; + wchar_t *character = characters; + + file->line += 1; + + while (length) { + const char *start = byte; + wint_t wc = convertUtf8ToWchar(&byte, &length); + + if (wc == WEOF) { + unsigned int offset = start - line; + reportDataError(file, "illegal UTF-8 character at offset %u", offset); + return 1; + } + + *character++ = wc; + } + + *character = 0; + return processWcharLine(file, characters); +} + +int +processDataStream (FILE *stream, const char *name, DataProcessor processor, void *data) { + DataFile file; + + file.name = name; + file.line = 0; + file.processor = processor; + file.data = data; + + LogPrint(LOG_DEBUG, "including data file: %s", file.name); + return processLines(stream, processUtf8Line, &file); +} + +int +processDataFile (const char *name, DataProcessor processor, void *data) { + int ok = 0; + FILE *stream; + + if ((stream = openDataFile(name, "r", 0))) { + if (processDataStream(stream, name, processor, data)) ok = 1; + fclose(stream); + } + + return ok; +} diff --git a/Programs/datafile.h b/Programs/datafile.h new file mode 100644 index 0000000000000000000000000000000000000000..a5cafc67f80c77d091d08e54ea4ab989894aae37 --- /dev/null +++ b/Programs/datafile.h @@ -0,0 +1,75 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#ifndef BRLTTY_INCLUDED_DATAFILE +#define BRLTTY_INCLUDED_DATAFILE + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +typedef struct DataFileStruct DataFile; + +typedef int DataProcessor (DataFile *file, void *data); + +extern int processDataFile (const char *name, DataProcessor processor, void *data); +extern int processDataStream (FILE *stream, const char *name, DataProcessor processor, void *data); +extern void reportDataError (DataFile *file, char *format, ...) PRINTF(2, 3); + +extern int isKeyword (const wchar_t *keyword, const wchar_t *characters, int length); +extern int isHexadecimalDigit (wchar_t character, int *value, int *shift); +extern int isOctalDigit (wchar_t character, int *value, int *shift); + +extern int findDataOperand (DataFile *file, const char *description); +extern int getDataCharacter (DataFile *file, wchar_t *character); +extern int ungetDataCharacters (DataFile *file, unsigned int count); + +typedef struct { + const wchar_t *characters; + unsigned int length; +} DataOperand; +extern int getDataOperand (DataFile *file, DataOperand *operand, const char *description); + +typedef struct { + unsigned char length; + wchar_t characters[0XFF]; +} DataString; +extern int getDataString (DataFile *file, DataString *string, int noUnicode, const char *description); + +typedef struct { + const wchar_t *name; + DataProcessor *processor; +} DataProperty; +extern int processPropertyOperand (DataFile *file, const DataProperty *properties, const char *description, void *data); + +extern int processIncludeOperands (DataFile *file, void *data); +extern int includeDataFile (DataFile *file, const wchar_t *name, unsigned int length); + +#define BRL_DOT_COUNT 8 +extern const wchar_t brlDotNumbers[BRL_DOT_COUNT]; +extern const unsigned char brlDotBits[BRL_DOT_COUNT]; +extern int brlDotNumberToIndex (wchar_t number, int *index); +extern int brlDotBitToIndex (unsigned char bit, int *index); + +extern int getDotOperand (DataFile *file, int *index); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* BRLTTY_INCLUDED_DATAFILE */ diff --git a/Programs/defaults.h b/Programs/defaults.h index 62d5585272fa7cf23111e606de6aa5f4d53bcbba..2affb8239711dbf2eba6726c6ab413299c4abe08 100644 --- a/Programs/defaults.h +++ b/Programs/defaults.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -90,6 +91,10 @@ extern "C" { #define DEFAULT_SPEECH_PITCH SPK_PITCH_DEFAULT #define DEFAULT_SPEECH_PUNCTUATION SPK_PUNCTUATION_SOME +#define DEFAULT_STATUS_POSITION spNone +#define DEFAULT_STATUS_COUNT 0 +#define DEFAULT_STATUS_SEPARATOR ssNone + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/Programs/driver.h b/Programs/driver.h index 6e3dd99e44d6abe2f361b6b238de62a45c975e17..6904d402a28b54978e8a8c2ebf6a4723e917c3f5 100644 --- a/Programs/driver.h +++ b/Programs/driver.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/drivers.c b/Programs/drivers.c index 2101f1c9b4c39a9acdf2eb673c2e09cd391b1f40..e10575aa56963f39c3c216b47f14916f66e9bbba 100644 --- a/Programs/drivers.c +++ b/Programs/drivers.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/drivers.h b/Programs/drivers.h index 6de08d6da81f888c0095bdb61c3f5c255b40aec8..f7471b3022c9cda99f5e0de15c08d6815c97013d 100644 --- a/Programs/drivers.h +++ b/Programs/drivers.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/fm.c b/Programs/fm.c index c0d674ff98d8a70ea883da3fe710dea2712453c5..7c35e665392ce846e97d20b794fa3217cedc25a0 100644 --- a/Programs/fm.c +++ b/Programs/fm.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/help.h b/Programs/help.h index cd8f55b64f74828ce8c2d380cdeb92064d0450b2..405d2ee16a49a629984a09aeaedf1496221c0596 100644 --- a/Programs/help.h +++ b/Programs/help.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/io_bluetooth.h b/Programs/io_bluetooth.h index 758717d0f739fb50d408df2e5646fca770f2b931..c6677a93ec759f90db99da2302295c694e4cc25e 100644 --- a/Programs/io_bluetooth.h +++ b/Programs/io_bluetooth.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/io_defs.h b/Programs/io_defs.h index 9253fc3ae7da1fec80aefba5908fffff1d43839b..c04eb1213e1b830a71d90b787c14b27f021a8e8b 100644 --- a/Programs/io_defs.h +++ b/Programs/io_defs.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/io_misc.c b/Programs/io_misc.c index 9ee369b106c69a153990826eb885cb9c6a5d6d38..1d21bc3ae8926ff6b9482b012dac402a7496d31d 100644 --- a/Programs/io_misc.c +++ b/Programs/io_misc.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/io_misc.h b/Programs/io_misc.h index e4c29cb7518ed9d07722d999ac0d9866c6f6c9c8..a869fb3d9474ce24ff4ce817bbde5a2a850b13e6 100644 --- a/Programs/io_misc.h +++ b/Programs/io_misc.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/io_serial.h b/Programs/io_serial.h index a34ffb78485fbdaf48fb0ac3ffb0cfe4da25189f..a3743c9a5b1da30a5b6aba475961bf29317e1e5b 100644 --- a/Programs/io_serial.h +++ b/Programs/io_serial.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/io_usb.h b/Programs/io_usb.h index 64dbc82cce22eeda4f24dd5720006bf24d623acb..3913c7f669dee7c53a41478b7fc900cf86614d5a 100644 --- a/Programs/io_usb.h +++ b/Programs/io_usb.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -252,6 +253,10 @@ extern const UsbInterfaceDescriptor *usbInterfaceDescriptor ( unsigned char interface, unsigned char alternative ); +extern unsigned int usbAlternativeCount ( + UsbDevice *device, + unsigned char interface +); extern const UsbEndpointDescriptor *usbEndpointDescriptor ( UsbDevice *device, unsigned char endpointAddress @@ -330,6 +335,10 @@ extern char *usbGetString ( int timeout ); extern char *usbDecodeString (const UsbStringDescriptor *descriptor); +extern char *usbGetManufacturer (UsbDevice *device, int timeout); +extern char *usbGetProduct (UsbDevice *device, int timeout); +extern char *usbGetSerialNumber (UsbDevice *device, int timeout); + extern void usbLogString ( UsbDevice *device, unsigned char number, @@ -389,11 +398,6 @@ extern void *usbReapResponse ( int wait ); -extern int usbBeginInput ( - UsbDevice *device, - unsigned char endpointNumber, - int count -); extern int usbAwaitInput ( UsbDevice *device, unsigned char endpointNumber, @@ -416,12 +420,55 @@ typedef struct { typedef int (*UsbInputFilter) (UsbInputFilterData *data); extern int usbAddInputFilter (UsbDevice *device, UsbInputFilter filter); +typedef enum { + UsbHidRequest_GetReport = 0X01, + UsbHidRequest_GetIdle = 0X02, + UsbHidRequest_GetProtocol = 0X03, + UsbHidRequest_SetReport = 0X09, + UsbHidRequest_SetIdle = 0X0A, + UsbHidRequest_SetProtocol = 0X0B +} UsbHidRequest; + +typedef enum { + UsbHidReportType_Input = 0X01, + UsbHidReportType_Output = 0X02, + UsbHidReportType_Feature = 0X03 +} UsbHidReportType; + +extern int usbHidSetReport ( + UsbDevice *device, + unsigned char interface, + unsigned char report, + const void *buffer, + int length, + int timeout +); + +extern int usbHidGetFeature ( + UsbDevice *device, + unsigned char interface, + unsigned char report, + void *buffer, + int length, + int timeout +); + +extern int usbHidSetFeature ( + UsbDevice *device, + unsigned char interface, + unsigned char report, + const void *buffer, + int length, + int timeout +); + typedef struct { int (*setBaud) (UsbDevice *device, int rate); int (*setFlowControl) (UsbDevice *device, SerialFlowControl flow); int (*setDataFormat) (UsbDevice *device, int dataBits, int stopBits, SerialParity parity); int (*setDtrState) (UsbDevice *device, int state); int (*setRtsState) (UsbDevice *device, int state); + int (*enableAdapter) (UsbDevice *device); } UsbSerialOperations; extern const UsbSerialOperations *usbGetSerialOperations (UsbDevice *device); @@ -437,6 +484,7 @@ typedef struct { unsigned char outputEndpoint; unsigned disableAutosuspend:1; const SerialParameters *serial; + const void *data; } UsbChannelDefinition; typedef struct { diff --git a/Programs/keyboard.c b/Programs/keyboard.c index eee559df8735c4a0c16466dd7bae1183df158464..5f3a46842599ce755947ce8a1fe3977b1a5c95cc 100644 --- a/Programs/keyboard.c +++ b/Programs/keyboard.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -23,7 +24,6 @@ #include "misc.h" const KeyboardProperties anyKeyboard = { - .device = NULL, .type = KBD_TYPE_Any, .vendor = 0, .product = 0 @@ -32,23 +32,18 @@ const KeyboardProperties anyKeyboard = { int parseKeyboardProperties (KeyboardProperties *properties, const char *string) { typedef enum { - KBD_PARM_DEVICE, KBD_PARM_TYPE, KBD_PARM_VENDOR, KBD_PARM_PRODUCT } KeyboardParameter; - static const char *const names[] = {"device", "type", "vendor", "product", NULL}; + static const char *const names[] = {"type", "vendor", "product", NULL}; char **parameters = getParameters(names, NULL, string); int ok = 1; logParameters(names, parameters, "Keyboard Property"); *properties = anyKeyboard; - if (*parameters[KBD_PARM_DEVICE]) { - properties->device = parameters[KBD_PARM_DEVICE]; - } - if (*parameters[KBD_PARM_TYPE]) { static const KeyboardType types[] = {KBD_TYPE_Any, KBD_TYPE_PS2, KBD_TYPE_USB, KBD_TYPE_Bluetooth}; static const char *choices[] = {"any", "ps2", "usb", "bluetooth", NULL}; @@ -64,7 +59,7 @@ parseKeyboardProperties (KeyboardProperties *properties, const char *string) { if (*parameters[KBD_PARM_VENDOR]) { static const int minimum = 0; - static const int maximum = 0xFFFF; + static const int maximum = 0XFFFF; int value; if (validateInteger(&value, parameters[KBD_PARM_VENDOR], &minimum, &maximum)) { @@ -77,7 +72,7 @@ parseKeyboardProperties (KeyboardProperties *properties, const char *string) { if (*parameters[KBD_PARM_PRODUCT]) { static const int minimum = 0; - static const int maximum = 0xFFFF; + static const int maximum = 0XFFFF; int value; if (validateInteger(&value, parameters[KBD_PARM_PRODUCT], &minimum, &maximum)) { @@ -97,12 +92,6 @@ checkKeyboardProperties (const KeyboardProperties *actual, const KeyboardPropert if (!required) return 1; if (!actual) actual = &anyKeyboard; - if (required->device) { - if (strcmp(required->device, actual->device) != 0) - if (strcmp(required->device, locatePathName(actual->device)) != 0) - return 0; - } - if (required->type != KBD_TYPE_Any) { if (required->type != actual->type) return 0; } diff --git a/Programs/keyboard.h b/Programs/keyboard.h index 51e4575a86e98509203f00564658831dcc95b65f..cc5f23fd64b976744607e7c17cf577bbff23ff05 100644 --- a/Programs/keyboard.h +++ b/Programs/keyboard.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -30,7 +31,6 @@ typedef enum { } KeyboardType; typedef struct { - const char *device; KeyboardType type; int vendor; int product; @@ -41,204 +41,6 @@ extern const KeyboardProperties anyKeyboard; extern int parseKeyboardProperties (KeyboardProperties *properties, const char *string); extern int checkKeyboardProperties (const KeyboardProperties *actual, const KeyboardProperties *required); -typedef enum { - KEY_ERROR_RollOver = 1, - KEY_ERROR_Post = 2, - KEY_ERROR_Undefined = 3, - KEY_LETTER_A = 4, - KEY_LETTER_B = 5, - KEY_LETTER_C = 6, - KEY_LETTER_D = 7, - KEY_LETTER_E = 8, - KEY_LETTER_F = 9, - KEY_LETTER_G = 10, - KEY_LETTER_H = 11, - KEY_LETTER_I = 12, - KEY_LETTER_J = 13, - KEY_LETTER_K = 14, - KEY_LETTER_L = 15, - KEY_LETTER_M = 16, - KEY_LETTER_N = 17, - KEY_LETTER_O = 18, - KEY_LETTER_P = 19, - KEY_LETTER_Q = 20, - KEY_LETTER_R = 21, - KEY_LETTER_S = 22, - KEY_LETTER_T = 23, - KEY_LETTER_U = 24, - KEY_LETTER_V = 25, - KEY_LETTER_W = 26, - KEY_LETTER_X = 27, - KEY_LETTER_Y = 28, - KEY_LETTER_Z = 29, - KEY_SYMBOL_One_Exclamation = 30, - KEY_SYMBOL_Two_At = 31, - KEY_SYMBOL_Three_Number = 32, - KEY_SYMBOL_Four_Dollar = 33, - KEY_SYMBOL_Five_Percent = 34, - KEY_SYMBOL_Six_Circumflex = 35, - KEY_SYMBOL_Seven_Ampersand = 36, - KEY_SYMBOL_Eight_Asterisk = 37, - KEY_SYMBOL_Nine_LeftParenthesis = 38, - KEY_SYMBOL_Zero_RightParenthesis = 39, - KEY_FUNCTION_Enter = 40, - KEY_FUNCTION_Escape = 41, - KEY_FUNCTION_DeleteBackward = 42, - KEY_FUNCTION_Tab = 43, - KEY_FUNCTION_Space = 44, - KEY_SYMBOL_Minus_Underscore = 45, - KEY_SYMBOL_Equals_Plus = 46, - KEY_SYMBOL_LeftBracket_LeftBrace = 47, - KEY_SYMBOL_RightBracket_RightBrace = 48, - KEY_SYMBOL_Backslash_Bar = 49, - KEY_SYMBOL_Semicolon_Colon = 51, - KEY_SYMBOL_Grave_Tilde = 53, - KEY_SYMBOL_Comma_Less = 54, - KEY_SYMBOL_Period_Greater = 55, - KEY_SYMBOL_Slash_Question = 56, - KEY_LOCK_Capitals = 57, - KEY_FUNCTION_F1 = 58, - KEY_FUNCTION_F2 = 59, - KEY_FUNCTION_F3 = 60, - KEY_FUNCTION_F4 = 61, - KEY_FUNCTION_F5 = 62, - KEY_FUNCTION_F6 = 63, - KEY_FUNCTION_F7 = 64, - KEY_FUNCTION_F8 = 65, - KEY_FUNCTION_F9 = 66, - KEY_FUNCTION_F10 = 67, - KEY_FUNCTION_F11 = 68, - KEY_FUNCTION_F12 = 69, - KEY_FUNCTION_PrintScreen = 70, - KEY_LOCK_Scroll = 71, - KEY_FUNCTION_Pause = 72, - KEY_FUNCTION_Insert = 73, - KEY_FUNCTION_Home = 74, - KEY_FUNCTION_PageUp = 75, - KEY_FUNCTION_DeleteForward = 76, - KEY_FUNCTION_End = 77, - KEY_FUNCTION_PageDown = 78, - KEY_FUNCTION_ArrowRight = 79, - KEY_FUNCTION_ArrowLeft = 80, - KEY_FUNCTION_ArrowDown = 81, - KEY_FUNCTION_ArrowUp = 82, - KEY_KEYPAD_NumLock_Clear = 83, - KEY_KEYPAD_Slash = 84, - KEY_KEYPAD_Asterisk = 85, - KEY_KEYPAD_Minus = 86, - KEY_KEYPAD_Plus = 87, - KEY_KEYPAD_Enter = 88, - KEY_KEYPAD_One_End = 89, - KEY_KEYPAD_Two_ArrowDown = 90, - KEY_KEYPAD_Three_PageDown = 91, - KEY_KEYPAD_Four_ArrowLeft = 92, - KEY_KEYPAD_Five = 93, - KEY_KEYPAD_Six_ArrowRight = 94, - KEY_KEYPAD_Seven_Home = 95, - KEY_KEYPAD_Eight_ArrowUp = 96, - KEY_KEYPAD_Nine_PageUp = 97, - KEY_KEYPAD_Zero_Insert = 98, - KEY_KEYPAD_Period_Delete = 99, - KEY_FUNCTION_Application = 101, - KEY_FUNCTION_Power = 102, - KEY_KEYPAD_Equals = 103, - KEY_FUNCTION_F13 = 104, - KEY_FUNCTION_F14 = 105, - KEY_FUNCTION_F15 = 106, - KEY_FUNCTION_F16 = 107, - KEY_FUNCTION_F17 = 108, - KEY_FUNCTION_F18 = 109, - KEY_FUNCTION_F19 = 110, - KEY_FUNCTION_F20 = 111, - KEY_FUNCTION_F21 = 112, - KEY_FUNCTION_F22 = 113, - KEY_FUNCTION_F23 = 114, - KEY_FUNCTION_F24 = 115, - KEY_FUNCTION_Execute = 116, - KEY_FUNCTION_Help = 117, - KEY_FUNCTION_Menu = 118, - KEY_FUNCTION_Select = 119, - KEY_FUNCTION_Stop = 120, - KEY_FUNCTION_Again = 121, - KEY_FUNCTION_Undo = 122, - KEY_FUNCTION_Cut = 123, - KEY_FUNCTION_Copy = 124, - KEY_FUNCTION_Paste = 125, - KEY_FUNCTION_Find = 126, - KEY_FUNCTION_Mute = 127, - KEY_FUNCTION_VolumeUp = 128, - KEY_FUNCTION_VolumeDown = 129, - KEY_LOCKING_Capitals = 130, - KEY_LOCKING_Numbers = 131, - KEY_LOCKING_Scroll = 132, - KEY_KEYPAD_Comma = 133, - KEY_FUNCTION_SystemRequest = 154, - KEY_FUNCTION_Cancel = 155, - KEY_FUNCTION_Clear = 156, - KEY_FUNCTION_Prior = 157, - KEY_FUNCTION_Return = 158, - KEY_FUNCTION_Separator = 159, - KEY_FUNCTION_Out = 160, - KEY_FUNCTION_Oper = 161, - KEY_FUNCTION_Clear_Again = 162, - KEY_FUNCTION_CrSel_Props = 163, - KEY_FUNCTION_ExSel = 164, - KEY_KEYPAD_00 = 176, - KEY_KEYPAD_000 = 177, - KEY_KEYPAD_ThousandsSeparator = 178, - KEY_KEYPAD_DecimalSeparator = 179, - KEY_KEYPAD_CurrencyUnit = 180, - KEY_KEYPAD_CurrencySubunit = 181, - KEY_KEYPAD_LeftParenthesis = 182, - KEY_KEYPAD_RightParenthesis = 183, - KEY_KEYPAD_LeftBrace = 184, - KEY_KEYPAD_RightBrace = 185, - KEY_KEYPAD_Tab = 186, - KEY_KEYPAD_Backspace = 187, - KEY_KEYPAD_A = 188, - KEY_KEYPAD_B = 189, - KEY_KEYPAD_C = 190, - KEY_KEYPAD_D = 191, - KEY_KEYPAD_E = 192, - KEY_KEYPAD_F = 193, - KEY_KEYPAD_BooleanXor = 194, - KEY_KEYPAD_BitwiseXor = 195, - KEY_KEYPAD_Modulo = 196, - KEY_KEYPAD_Less = 197, - KEY_KEYPAD_Greater = 198, - KEY_KEYPAD_BitwiseAnd = 199, - KEY_KEYPAD_BooleanAnd = 200, - KEY_KEYPAD_BitwiseOr = 201, - KEY_KEYPAD_BooleanOr = 202, - KEY_KEYPAD_Colon = 203, - KEY_KEYPAD_Number = 204, - KEY_KEYPAD_Space = 205, - KEY_KEYPAD_At = 206, - KEY_KEYPAD_BooleanNot = 207, - KEY_KEYPAD_MemoryStore = 208, - KEY_KEYPAD_MemoryRecall = 209, - KEY_KEYPAD_MemoryClear = 210, - KEY_KEYPAD_MemoryAdd = 211, - KEY_KEYPAD_MemorySubtract = 212, - KEY_KEYPAD_MemoryMultiply = 213, - KEY_KEYPAD_MemoryDivide = 214, - KEY_KEYPAD_PlusMinus = 215, - KEY_KEYPAD_Clear = 216, - KEY_KEYPAD_ClearEntry = 217, - KEY_KEYPAD_Binary = 218, - KEY_KEYPAD_Octal = 219, - KEY_KEYPAD_Decimal = 220, - KEY_KEYPAD_Hexadecimal = 221, - KEY_FUNCTION_ControlLeft = 224, - KEY_FUNCTION_ShiftLeft = 225, - KEY_FUNCTION_AltLeft = 226, - KEY_FUNCTION_GuiLeft = 227, - KEY_FUNCTION_ControlRight = 228, - KEY_FUNCTION_ShiftRight = 229, - KEY_FUNCTION_AltRight = 230, - KEY_FUNCTION_GuiRight = 231, -} KeyCode; - #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/Programs/keycodes.c b/Programs/keycodes.c new file mode 100644 index 0000000000000000000000000000000000000000..44db9c6d445d83d8d7be7a23bee9071283a57455 --- /dev/null +++ b/Programs/keycodes.c @@ -0,0 +1,72 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#include "prologue.h" + +#include + +#include "keycodes.h" + +void +copyKeyCodeMask (KeyCodeMask to, const KeyCodeMask from) { + memcpy(to, from, KEY_CODE_MASK_SIZE); +} + +int +sameKeyCodeMasks (const KeyCodeMask mask1, const KeyCodeMask mask2) { + return memcmp(mask1, mask2, KEY_CODE_MASK_SIZE) == 0; +} + +int +isKeySubset (const KeyCodeMask set, const KeyCodeMask subset) { + unsigned int count = KEY_CODE_MASK_ELEMENT_COUNT; + + while (count) { + if (~*set & *subset) return 0; + set += 1, subset += 1, count -= 1; + } + + return 1; +} + +int +addKeyCode (KeyCodeSet *set, KeyCode code) { + if (BITMASK_TEST(set->mask, code)) return 0; + BITMASK_SET(set->mask, code); + set->codes[set->count++] = code; + return 1; +} + +int +removeKeyCode (KeyCodeSet *set, KeyCode code) { + if (!BITMASK_TEST(set->mask, code)) return 0; + BITMASK_CLEAR(set->mask, code); + + { + int index; + for (index=0; indexcount; index+=1) { + if (set->codes[index] == code) { + memmove(&set->codes[index], &set->codes[index+1], + ((--set->count - index) * sizeof(set->codes[0]))); + break; + } + } + } + + return 1; +} diff --git a/Programs/keycodes.h b/Programs/keycodes.h new file mode 100644 index 0000000000000000000000000000000000000000..14a05736c672a6198c597c526dc4eebaf9f9bcbe --- /dev/null +++ b/Programs/keycodes.h @@ -0,0 +1,276 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#ifndef BRLTTY_INCLUDED_KEYCODES +#define BRLTTY_INCLUDED_KEYCODES + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include "bitmask.h" + +typedef enum { + KEY_SPECIAL_None = 0, + + KEY_LETTER_A, + KEY_LETTER_B, + KEY_LETTER_C, + KEY_LETTER_D, + KEY_LETTER_E, + KEY_LETTER_F, + KEY_LETTER_G, + KEY_LETTER_H, + KEY_LETTER_I, + KEY_LETTER_J, + KEY_LETTER_K, + KEY_LETTER_L, + KEY_LETTER_M, + KEY_LETTER_N, + KEY_LETTER_O, + KEY_LETTER_P, + KEY_LETTER_Q, + KEY_LETTER_R, + KEY_LETTER_S, + KEY_LETTER_T, + KEY_LETTER_U, + KEY_LETTER_V, + KEY_LETTER_W, + KEY_LETTER_X, + KEY_LETTER_Y, + KEY_LETTER_Z, + + KEY_SYMBOL_One_Exclamation, + KEY_SYMBOL_Two_At, + KEY_SYMBOL_Three_Number, + KEY_SYMBOL_Four_Dollar, + KEY_SYMBOL_Five_Percent, + KEY_SYMBOL_Six_Circumflex, + KEY_SYMBOL_Seven_Ampersand, + KEY_SYMBOL_Eight_Asterisk, + KEY_SYMBOL_Nine_LeftParenthesis, + KEY_SYMBOL_Zero_RightParenthesis, + + KEY_SYMBOL_Grave_Tilde, + KEY_SYMBOL_Backslash_Bar, + KEY_SYMBOL_Minus_Underscore, + KEY_SYMBOL_Equals_Plus, + KEY_SYMBOL_LeftBracket_LeftBrace, + KEY_SYMBOL_RightBracket_RightBrace, + KEY_SYMBOL_Semicolon_Colon, + KEY_SYMBOL_Apostrophe_Quote, + KEY_SYMBOL_Comma_Less, + KEY_SYMBOL_Period_Greater, + KEY_SYMBOL_Slash_Question, + + KEY_FUNCTION_Escape, + KEY_FUNCTION_Enter, + KEY_FUNCTION_Space, + KEY_FUNCTION_Tab, + KEY_FUNCTION_DeleteBackward, + + KEY_FUNCTION_F1, + KEY_FUNCTION_F2, + KEY_FUNCTION_F3, + KEY_FUNCTION_F4, + KEY_FUNCTION_F5, + KEY_FUNCTION_F6, + KEY_FUNCTION_F7, + KEY_FUNCTION_F8, + KEY_FUNCTION_F9, + KEY_FUNCTION_F10, + KEY_FUNCTION_F11, + KEY_FUNCTION_F12, + KEY_FUNCTION_F13, + KEY_FUNCTION_F14, + KEY_FUNCTION_F15, + KEY_FUNCTION_F16, + KEY_FUNCTION_F17, + KEY_FUNCTION_F18, + KEY_FUNCTION_F19, + KEY_FUNCTION_F20, + KEY_FUNCTION_F21, + KEY_FUNCTION_F22, + KEY_FUNCTION_F23, + KEY_FUNCTION_F24, + + KEY_FUNCTION_Insert, + KEY_FUNCTION_DeleteForward, + KEY_FUNCTION_Home, + KEY_FUNCTION_End, + KEY_FUNCTION_PageUp, + KEY_FUNCTION_PageDown, + + KEY_FUNCTION_ArrowUp, + KEY_FUNCTION_ArrowDown, + KEY_FUNCTION_ArrowLeft, + KEY_FUNCTION_ArrowRight, + + KEY_FUNCTION_PrintScreen, + KEY_FUNCTION_SystemRequest, + KEY_FUNCTION_Pause, + + KEY_FUNCTION_ShiftLeft, + KEY_FUNCTION_ShiftRight, + KEY_FUNCTION_ControlLeft, + KEY_FUNCTION_ControlRight, + KEY_FUNCTION_AltLeft, + KEY_FUNCTION_AltRight, + KEY_FUNCTION_GuiLeft, + KEY_FUNCTION_GuiRight, + KEY_FUNCTION_Application, + + KEY_LOCK_Capitals, + KEY_LOCK_Scroll, + + KEY_LOCKING_Capitals, + KEY_LOCKING_Scroll, + KEY_LOCKING_Numbers, + + KEY_KEYPAD_NumLock_Clear, + KEY_KEYPAD_Slash, + KEY_KEYPAD_Asterisk, + KEY_KEYPAD_Minus, + KEY_KEYPAD_Plus, + KEY_KEYPAD_Enter, + KEY_KEYPAD_One_End, + KEY_KEYPAD_Two_ArrowDown, + KEY_KEYPAD_Three_PageDown, + KEY_KEYPAD_Four_ArrowLeft, + KEY_KEYPAD_Five, + KEY_KEYPAD_Six_ArrowRight, + KEY_KEYPAD_Seven_Home, + KEY_KEYPAD_Eight_ArrowUp, + KEY_KEYPAD_Nine_PageUp, + KEY_KEYPAD_Zero_Insert, + KEY_KEYPAD_Period_Delete, + + KEY_KEYPAD_Equals, + KEY_KEYPAD_LeftParenthesis, + KEY_KEYPAD_RightParenthesis, + KEY_KEYPAD_LeftBrace, + KEY_KEYPAD_RightBrace, + KEY_KEYPAD_Modulo, + KEY_KEYPAD_BitwiseAnd, + KEY_KEYPAD_BitwiseOr, + KEY_KEYPAD_BitwiseXor, + KEY_KEYPAD_Less, + KEY_KEYPAD_Greater, + KEY_KEYPAD_BooleanAnd, + KEY_KEYPAD_BooleanOr, + KEY_KEYPAD_BooleanXor, + KEY_KEYPAD_BooleanNot, + + KEY_KEYPAD_Backspace, + KEY_KEYPAD_Space, + KEY_KEYPAD_Tab, + KEY_KEYPAD_Comma, + KEY_KEYPAD_Colon, + KEY_KEYPAD_Number, + KEY_KEYPAD_At, + + KEY_KEYPAD_A, + KEY_KEYPAD_B, + KEY_KEYPAD_C, + KEY_KEYPAD_D, + KEY_KEYPAD_E, + KEY_KEYPAD_F, + + KEY_KEYPAD_00, + KEY_KEYPAD_000, + KEY_KEYPAD_ThousandsSeparator, + KEY_KEYPAD_DecimalSeparator, + KEY_KEYPAD_CurrencyUnit, + KEY_KEYPAD_CurrencySubunit, + + KEY_FUNCTION_Power, + KEY_FUNCTION_Sleep, + KEY_FUNCTION_Wakeup, + KEY_FUNCTION_Stop, + + KEY_FUNCTION_Help, + KEY_FUNCTION_Find, + + KEY_FUNCTION_Menu, + KEY_FUNCTION_Select, + KEY_FUNCTION_Again, + KEY_FUNCTION_Execute, + + KEY_FUNCTION_Copy, + KEY_FUNCTION_Cut, + KEY_FUNCTION_Paste, + KEY_FUNCTION_Undo, + + KEY_FUNCTION_Mute, + KEY_FUNCTION_VolumeUp, + KEY_FUNCTION_VolumeDown, + + KEY_KEYPAD_Clear, + KEY_KEYPAD_ClearEntry, + KEY_KEYPAD_PlusMinus, + + KEY_KEYPAD_MemoryClear, + KEY_KEYPAD_MemoryStore, + KEY_KEYPAD_MemoryRecall, + KEY_KEYPAD_MemoryAdd, + KEY_KEYPAD_MemorySubtract, + KEY_KEYPAD_MemoryMultiply, + KEY_KEYPAD_MemoryDivide, + + KEY_KEYPAD_Binary, + KEY_KEYPAD_Octal, + KEY_KEYPAD_Decimal, + KEY_KEYPAD_Hexadecimal, + + KEY_FUNCTION_Cancel, + KEY_FUNCTION_Clear, + KEY_FUNCTION_Prior, + KEY_FUNCTION_Return, + KEY_FUNCTION_Separator, + KEY_FUNCTION_Out, + KEY_FUNCTION_Oper, + KEY_FUNCTION_Clear_Again, + KEY_FUNCTION_CrSel_Props, + KEY_FUNCTION_ExSel, + + KeyCodeCount +} KeyCode; + +#define KEY_CODE_MASK_ELEMENT_TYPE char +typedef BITMASK(KeyCodeMask, KeyCodeCount, KEY_CODE_MASK_ELEMENT_TYPE); +#define KEY_CODE_MASK_SIZE sizeof(KeyCodeMask) +#define KEY_CODE_MASK_ELEMENT_COUNT (KEY_CODE_MASK_SIZE / sizeof(KEY_CODE_MASK_ELEMENT_TYPE)) + +extern void copyKeyCodeMask (KeyCodeMask to, const KeyCodeMask from); +extern int sameKeyCodeMasks (const KeyCodeMask mask1, const KeyCodeMask mask2); +extern int isKeySubset (const KeyCodeMask set, const KeyCodeMask subset); + +typedef struct { + KeyCodeMask mask; + unsigned int count; + KeyCode codes[KeyCodeCount]; +} KeyCodeSet; + +extern int addKeyCode (KeyCodeSet *set, KeyCode code); +extern int removeKeyCode (KeyCodeSet *set, KeyCode code); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* BRLTTY_INCLUDED_KEYCODES */ diff --git a/Programs/ktb.h b/Programs/ktb.h new file mode 100644 index 0000000000000000000000000000000000000000..72117d394420c5ad1a6dd076f39551b9d73e3069 --- /dev/null +++ b/Programs/ktb.h @@ -0,0 +1,44 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#ifndef BRLTTY_INCLUDED_KTB +#define BRLTTY_INCLUDED_KTB + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include "keycodes.h" + +typedef struct KeyTableStruct KeyTable; + +extern KeyTable *keyTable; + +extern KeyTable *compileKeyTable (const char *name); +extern void destroyKeyTable (KeyTable *table); + +extern char *ensureKeyTableExtension (const char *path); + +extern int getKeyCommand (KeyTable *table, const KeyCodeSet *modifiers, KeyCode code); +extern int isKeyModifiers (KeyTable *table, const KeyCodeSet *modifiers); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* BRLTTY_INCLUDED_KTB */ diff --git a/Programs/ktb_compile.c b/Programs/ktb_compile.c new file mode 100644 index 0000000000000000000000000000000000000000..fffc303de6c4e8f271efb167f449026b10a6247e --- /dev/null +++ b/Programs/ktb_compile.c @@ -0,0 +1,411 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#include "prologue.h" + +#include +#include + +#include "misc.h" +#include "datafile.h" +#include "dataarea.h" +#include "cmd.h" +#include "brldefs.h" +#include "ktb.h" +#include "ktb_internal.h" + +typedef struct { + const char *name; + KeyCode code; +} KeyNameEntry; + +static const KeyNameEntry keyNameTable[] = { +#include "ktb_keynames.h" +{NULL, KEY_SPECIAL_None} +}; + +typedef struct { + DataArea *area; + + const KeyNameEntry **keyNameTable; + unsigned int keyNameCount; + + const CommandEntry **commandTable; + unsigned int commandCount; + + KeyBinding *bindingsTable; + unsigned int bindingsSize; + unsigned int bindingsCount; +} KeyTableData; + +static inline KeyTableHeader * +getKeyTableHeader (KeyTableData *ktd) { + return getDataItem(ktd->area, 0); +} + +static int +compareToName (const wchar_t *location1, int length1, const char *location2) { + const wchar_t *end1 = location1 + length1; + + while (1) { + if (location1 == end1) return *location2? -1: 0; + if (!*location2) return 1; + + { + wchar_t character1 = towlower(*location1); + char character2 = tolower(*location2); + + if (character1 < character2) return -1; + if (character1 > character2) return 1; + } + + location1 += 1; + location2 += 1; + } +} + +static int +compareToKeyName (const void *target, const void *element) { + const DataOperand *name = target; + const KeyNameEntry *const *key = element; + return compareToName(name->characters, name->length, (*key)->name); +} + +static int +parseKeyName (DataFile *file, KeyCode *code, const wchar_t *characters, int length, KeyTableData *ktd) { + const DataOperand name = { + .characters = characters, + .length = length + }; + const KeyNameEntry **key = bsearch(&name, ktd->keyNameTable, ktd->keyNameCount, sizeof(*ktd->keyNameTable), compareToKeyName); + + if (key) { + *code = (*key)->code; + return 1; + } + + reportDataError(file, "unknown key name: %.*" PRIws, length, characters); + return 0; +} + +static int +parseKeyCombination (DataFile *file, KeyCombination *key, const wchar_t *characters, int length, KeyTableData *ktd) { + while (1) { + const wchar_t *end = wmemchr(characters, WC_C('+'), length); + if (!end) break; + + { + int count = end - characters; + KeyCode code; + + if (!count) { + reportDataError(file, "missing modifier key name"); + return 0; + } + if (!parseKeyName(file, &code, characters, count,ktd)) return 0; + + if (BITMASK_TEST(key->modifiers, code)) { + reportDataError(file, "duplicate modifier key name: %.*" PRIws, count, characters); + return 0; + } + BITMASK_SET(key->modifiers, code); + + length -= count + 1; + characters = end + 1; + } + } + + if (!length) { + reportDataError(file, "missing key name"); + return 0; + } + if (!parseKeyName(file, &key->code, characters, length, ktd)) return 0; + + if (BITMASK_TEST(key->modifiers, key->code)) { + reportDataError(file, "duplicate key name: %.*" PRIws, length, characters); + return 0; + } + + return 1; +} + +static int +getKeyOperand (DataFile *file, KeyCombination *key, KeyTableData *ktd) { + DataOperand names; + + if (getDataOperand(file, &names, "key combination")) { + if (parseKeyCombination(file, key, names.characters, names.length,ktd)) return 1; + } + + return 0; +} + +static int +compareToCommandName (const void *target, const void *element) { + const DataOperand *name = target; + const CommandEntry *const *command = element; + return compareToName(name->characters, name->length, (*command)->name); +} + +static int +parseCommandName (DataFile *file, int *value, const wchar_t *characters, int length, KeyTableData *ktd) { + const wchar_t *end = wmemchr(characters, WC_C('+'), length); + const DataOperand name = { + .characters = characters, + .length = end? end-characters: length + }; + const CommandEntry **command = bsearch(&name, ktd->commandTable, ktd->commandCount, sizeof(*ktd->commandTable), compareToCommandName); + + if (command) { + *value = (*command)->code; + if (isCharacterCommand(*command)) *value |= BRL_MSK_ARG; + if (!end) return 1; + + if (!(length -= end - characters + 1)) { + reportDataError(file, "missing command modifier"); + return 0; + } + characters = end + 1; + + if (isToggleCommand(*command)) { + if (isKeyword(WS_C("on"), characters, length)) { + *value |= BRL_FLG_TOGGLE_ON; + return 1; + } + + if (isKeyword(WS_C("off"), characters, length)) { + *value |= BRL_FLG_TOGGLE_OFF; + return 1; + } + } else if (isBaseCommand(*command)) { + unsigned int maximum = BRL_MSK_ARG - ((*command)->code & BRL_MSK_ARG); + unsigned int offset = 0; + int index; + + for (index=0; index WC_C('9'))) { + reportDataError(file, "invalid command offset: %.*" PRIws, length, characters); + return 0; + } + + if ((offset = (offset * 10) + (character - WC_C('0'))) > maximum) { + reportDataError(file, "command offset too large: %.*" PRIws, length, characters); + return 0; + } + } + + *value += offset; + return 1; + } + + reportDataError(file, "unknown command modifier: %.*" PRIws, length, characters); + } else { + reportDataError(file, "unknown command name: %.*" PRIws, length, characters); + } + + return 0; +} + +static int +getCommandOperand (DataFile *file, int *value, KeyTableData *ktd) { + DataOperand name; + + if (getDataOperand(file, &name, "command name")) { + if (parseCommandName(file, value, name.characters, name.length, ktd)) return 1; + } + + return 0; +} + +static int +processBindOperands (DataFile *file, void *data) { + KeyTableData *ktd = data; + KeyBinding *binding; + + if (ktd->bindingsCount == ktd->bindingsSize) { + unsigned int newSize = ktd->bindingsSize? ktd->bindingsSize<<1: 0X10; + KeyBinding *newBindings = realloc(ktd->bindingsTable, (newSize * sizeof(*newBindings))); + + if (!newBindings) return 0; + ktd->bindingsTable = newBindings; + ktd->bindingsSize = newSize; + } + + binding = &ktd->bindingsTable[ktd->bindingsCount]; + memset(binding, 0, sizeof(*binding)); + + if (getKeyOperand(file, &binding->key, ktd)) { + if (getCommandOperand(file, &binding->command, ktd)) { + ktd->bindingsCount += 1; + } + } + + return 1; +} + +static int +processKeyTableLine (DataFile *file, void *data) { + static const DataProperty properties[] = { + {.name=WS_C("bind"), .processor=processBindOperands}, + {.name=WS_C("include"), .processor=processIncludeOperands}, + {.name=NULL, .processor=NULL} + }; + + return processPropertyOperand(file, properties, "key table directive", data); +} + +static int +compareKeyNames (const void *element1, const void *element2) { + const KeyNameEntry *const *key1 = element1; + const KeyNameEntry *const *key2 = element2; + return strcasecmp((*key1)->name, (*key2)->name); +} + +static int +allocateKeyNameTable (KeyTableData *ktd) { + { + const KeyNameEntry *key = keyNameTable; + + ktd->keyNameCount = 0; + while (key->name) { + ktd->keyNameCount += 1; + key += 1; + } + } + + if ((ktd->keyNameTable = malloc(ktd->keyNameCount * sizeof(*ktd->keyNameTable)))) { + { + const KeyNameEntry *key = keyNameTable; + const KeyNameEntry **address = ktd->keyNameTable; + while (key->name) *address++ = key++; + } + + qsort(ktd->keyNameTable, ktd->keyNameCount, sizeof(*ktd->keyNameTable), compareKeyNames); + return 1; + } + + return 0; +} + +static int +compareCommandNames (const void *element1, const void *element2) { + const CommandEntry *const *command1 = element1; + const CommandEntry *const *command2 = element2; + return strcasecmp((*command1)->name, (*command2)->name); +} + +static int +allocateCommandTable (KeyTableData *ktd) { + { + const CommandEntry *command = commandTable; + + ktd->commandCount = 0; + while (command->name) { + ktd->commandCount += 1; + command += 1; + } + } + + if ((ktd->commandTable = malloc(ktd->commandCount * sizeof(*ktd->commandTable)))) { + { + const CommandEntry *command = commandTable; + const CommandEntry **address = ktd->commandTable; + while (command->name) *address++ = command++; + } + + qsort(ktd->commandTable, ktd->commandCount, sizeof(*ktd->commandTable), compareCommandNames); + return 1; + } + + return 0; +} + +static int +saveKeyBindings (KeyTableData *ktd) { + KeyTableHeader *header = getKeyTableHeader(ktd); + + if ((header->bindingsCount = ktd->bindingsCount)) { + DataOffset offset; + + if (!saveDataItem(ktd->area, &offset, ktd->bindingsTable, + ktd->bindingsCount * sizeof(ktd->bindingsTable[0]), + __alignof__(ktd->bindingsTable[0]))) + return 0; + + header->bindingsTable = offset; + } else { + header->bindingsTable = 0; + } + + return 1; +} + +KeyTable * +compileKeyTable (const char *name) { + KeyTable *table = NULL; + KeyTableData ktd; + + memset(&ktd, 0, sizeof(ktd)); + + ktd.bindingsTable = NULL; + ktd.bindingsSize = 0; + ktd.bindingsCount = 0; + + if (allocateKeyNameTable(&ktd)) { + if (allocateCommandTable(&ktd)) { + if ((ktd.area = newDataArea())) { + if (allocateDataItem(ktd.area, NULL, sizeof(KeyTableHeader), __alignof__(KeyTableHeader))) { + if (processDataFile(name, processKeyTableLine, &ktd)) { + if (saveKeyBindings(&ktd)) { + if ((table = malloc(sizeof(*table)))) { + table->header.fields = getKeyTableHeader(&ktd); + table->size = getDataSize(ktd.area); + resetDataArea(ktd.area); + } + } + } + } + + destroyDataArea(ktd.area); + } + + free(ktd.commandTable); + } + + free(ktd.keyNameTable); + } + + if (ktd.bindingsTable) free(ktd.bindingsTable); + + return table; +} + +void +destroyKeyTable (KeyTable *table) { + if (table->size) { + free(table->header.fields); + free(table); + } +} + +char * +ensureKeyTableExtension (const char *path) { + return ensureExtension(path, KEY_TABLE_EXTENSION); +} diff --git a/Programs/ktb_internal.h b/Programs/ktb_internal.h new file mode 100644 index 0000000000000000000000000000000000000000..424f82b612831786ed56d887eb9216f9df75bf47 --- /dev/null +++ b/Programs/ktb_internal.h @@ -0,0 +1,56 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#ifndef BRLTTY_INCLUDED_KTB_INTERNAL +#define BRLTTY_INCLUDED_KTB_INTERNAL + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +typedef struct { + KeyCode code; + KeyCodeMask modifiers; +} KeyCombination; + +typedef struct { + KeyCombination key; + int command; +} KeyBinding; + +typedef uint32_t KeyTableOffset; + +typedef struct { + KeyTableOffset bindingsTable; + uint32_t bindingsCount; +} KeyTableHeader; + +struct KeyTableStruct { + union { + KeyTableHeader *fields; + const unsigned char *bytes; + } header; + + size_t size; +}; + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* BRLTTY_INCLUDED_KTB_INTERNAL */ diff --git a/Programs/ktb_keynames.h b/Programs/ktb_keynames.h new file mode 100644 index 0000000000000000000000000000000000000000..55bf701e038ff32550f79fba93fd1ff68fba8698 --- /dev/null +++ b/Programs/ktb_keynames.h @@ -0,0 +1,506 @@ +{.code=KEY_LETTER_A, .name="LETTER_A"}, +{.code=KEY_LETTER_A, .name="A"}, + +{.code=KEY_LETTER_B, .name="LETTER_B"}, +{.code=KEY_LETTER_B, .name="B"}, + +{.code=KEY_LETTER_C, .name="LETTER_C"}, +{.code=KEY_LETTER_C, .name="C"}, + +{.code=KEY_LETTER_D, .name="LETTER_D"}, +{.code=KEY_LETTER_D, .name="D"}, + +{.code=KEY_LETTER_E, .name="LETTER_E"}, +{.code=KEY_LETTER_E, .name="E"}, + +{.code=KEY_LETTER_F, .name="LETTER_F"}, +{.code=KEY_LETTER_F, .name="F"}, + +{.code=KEY_LETTER_G, .name="LETTER_G"}, +{.code=KEY_LETTER_G, .name="G"}, + +{.code=KEY_LETTER_H, .name="LETTER_H"}, +{.code=KEY_LETTER_H, .name="H"}, + +{.code=KEY_LETTER_I, .name="LETTER_I"}, +{.code=KEY_LETTER_I, .name="I"}, + +{.code=KEY_LETTER_J, .name="LETTER_J"}, +{.code=KEY_LETTER_J, .name="J"}, + +{.code=KEY_LETTER_K, .name="LETTER_K"}, +{.code=KEY_LETTER_K, .name="K"}, + +{.code=KEY_LETTER_L, .name="LETTER_L"}, +{.code=KEY_LETTER_L, .name="L"}, + +{.code=KEY_LETTER_M, .name="LETTER_M"}, +{.code=KEY_LETTER_M, .name="M"}, + +{.code=KEY_LETTER_N, .name="LETTER_N"}, +{.code=KEY_LETTER_N, .name="N"}, + +{.code=KEY_LETTER_O, .name="LETTER_O"}, +{.code=KEY_LETTER_O, .name="O"}, + +{.code=KEY_LETTER_P, .name="LETTER_P"}, +{.code=KEY_LETTER_P, .name="P"}, + +{.code=KEY_LETTER_Q, .name="LETTER_Q"}, +{.code=KEY_LETTER_Q, .name="Q"}, + +{.code=KEY_LETTER_R, .name="LETTER_R"}, +{.code=KEY_LETTER_R, .name="R"}, + +{.code=KEY_LETTER_S, .name="LETTER_S"}, +{.code=KEY_LETTER_S, .name="S"}, + +{.code=KEY_LETTER_T, .name="LETTER_T"}, +{.code=KEY_LETTER_T, .name="T"}, + +{.code=KEY_LETTER_U, .name="LETTER_U"}, +{.code=KEY_LETTER_U, .name="U"}, + +{.code=KEY_LETTER_V, .name="LETTER_V"}, +{.code=KEY_LETTER_V, .name="V"}, + +{.code=KEY_LETTER_W, .name="LETTER_W"}, +{.code=KEY_LETTER_W, .name="W"}, + +{.code=KEY_LETTER_X, .name="LETTER_X"}, +{.code=KEY_LETTER_X, .name="X"}, + +{.code=KEY_LETTER_Y, .name="LETTER_Y"}, +{.code=KEY_LETTER_Y, .name="Y"}, + +{.code=KEY_LETTER_Z, .name="LETTER_Z"}, +{.code=KEY_LETTER_Z, .name="Z"}, + +{.code=KEY_SYMBOL_One_Exclamation, .name="SYMBOL_One_Exclamation"}, +{.code=KEY_SYMBOL_One_Exclamation, .name="1"}, + +{.code=KEY_SYMBOL_Two_At, .name="SYMBOL_Two_At"}, +{.code=KEY_SYMBOL_Two_At, .name="2"}, + +{.code=KEY_SYMBOL_Three_Number, .name="SYMBOL_Three_Number"}, +{.code=KEY_SYMBOL_Three_Number, .name="3"}, + +{.code=KEY_SYMBOL_Four_Dollar, .name="SYMBOL_Four_Dollar"}, +{.code=KEY_SYMBOL_Four_Dollar, .name="4"}, + +{.code=KEY_SYMBOL_Five_Percent, .name="SYMBOL_Five_Percent"}, +{.code=KEY_SYMBOL_Five_Percent, .name="5"}, + +{.code=KEY_SYMBOL_Six_Circumflex, .name="SYMBOL_Six_Circumflex"}, +{.code=KEY_SYMBOL_Six_Circumflex, .name="6"}, + +{.code=KEY_SYMBOL_Seven_Ampersand, .name="SYMBOL_Seven_Ampersand"}, +{.code=KEY_SYMBOL_Seven_Ampersand, .name="7"}, + +{.code=KEY_SYMBOL_Eight_Asterisk, .name="SYMBOL_Eight_Asterisk"}, +{.code=KEY_SYMBOL_Eight_Asterisk, .name="8"}, + +{.code=KEY_SYMBOL_Nine_LeftParenthesis, .name="SYMBOL_Nine_LeftParenthesis"}, +{.code=KEY_SYMBOL_Nine_LeftParenthesis, .name="9"}, + +{.code=KEY_SYMBOL_Zero_RightParenthesis, .name="SYMBOL_Zero_RightParenthesis"}, +{.code=KEY_SYMBOL_Zero_RightParenthesis, .name="0"}, + +{.code=KEY_SYMBOL_Grave_Tilde, .name="SYMBOL_Grave_Tilde"}, + +{.code=KEY_SYMBOL_Backslash_Bar, .name="SYMBOL_Backslash_Bar"}, + +{.code=KEY_SYMBOL_Minus_Underscore, .name="SYMBOL_Minus_Underscore"}, + +{.code=KEY_SYMBOL_Equals_Plus, .name="SYMBOL_Equals_Plus"}, + +{.code=KEY_SYMBOL_LeftBracket_LeftBrace, .name="SYMBOL_LeftBracket_LeftBrace"}, + +{.code=KEY_SYMBOL_RightBracket_RightBrace, .name="SYMBOL_RightBracket_RightBrace"}, + +{.code=KEY_SYMBOL_Semicolon_Colon, .name="SYMBOL_Semicolon_Colon"}, + +{.code=KEY_SYMBOL_Apostrophe_Quote, .name="SYMBOL_Apostrophe_Quote"}, + +{.code=KEY_SYMBOL_Comma_Less, .name="SYMBOL_Comma_Less"}, + +{.code=KEY_SYMBOL_Period_Greater, .name="SYMBOL_Period_Greater"}, + +{.code=KEY_SYMBOL_Slash_Question, .name="SYMBOL_Slash_Question"}, + +{.code=KEY_FUNCTION_Escape, .name="FUNCTION_Escape"}, +{.code=KEY_FUNCTION_Escape, .name="Escape"}, + +{.code=KEY_FUNCTION_Enter, .name="FUNCTION_Enter"}, +{.code=KEY_FUNCTION_Enter, .name="Enter"}, + +{.code=KEY_FUNCTION_Space, .name="FUNCTION_Space"}, +{.code=KEY_FUNCTION_Space, .name="Space"}, + +{.code=KEY_FUNCTION_Tab, .name="FUNCTION_Tab"}, +{.code=KEY_FUNCTION_Tab, .name="Tab"}, + +{.code=KEY_FUNCTION_DeleteBackward, .name="FUNCTION_DeleteBackward"}, +{.code=KEY_FUNCTION_DeleteBackward, .name="DeleteBackward"}, + +{.code=KEY_FUNCTION_F1, .name="FUNCTION_F1"}, +{.code=KEY_FUNCTION_F1, .name="F1"}, + +{.code=KEY_FUNCTION_F2, .name="FUNCTION_F2"}, +{.code=KEY_FUNCTION_F2, .name="F2"}, + +{.code=KEY_FUNCTION_F3, .name="FUNCTION_F3"}, +{.code=KEY_FUNCTION_F3, .name="F3"}, + +{.code=KEY_FUNCTION_F4, .name="FUNCTION_F4"}, +{.code=KEY_FUNCTION_F4, .name="F4"}, + +{.code=KEY_FUNCTION_F5, .name="FUNCTION_F5"}, +{.code=KEY_FUNCTION_F5, .name="F5"}, + +{.code=KEY_FUNCTION_F6, .name="FUNCTION_F6"}, +{.code=KEY_FUNCTION_F6, .name="F6"}, + +{.code=KEY_FUNCTION_F7, .name="FUNCTION_F7"}, +{.code=KEY_FUNCTION_F7, .name="F7"}, + +{.code=KEY_FUNCTION_F8, .name="FUNCTION_F8"}, +{.code=KEY_FUNCTION_F8, .name="F8"}, + +{.code=KEY_FUNCTION_F9, .name="FUNCTION_F9"}, +{.code=KEY_FUNCTION_F9, .name="F9"}, + +{.code=KEY_FUNCTION_F10, .name="FUNCTION_F10"}, +{.code=KEY_FUNCTION_F10, .name="F10"}, + +{.code=KEY_FUNCTION_F11, .name="FUNCTION_F11"}, +{.code=KEY_FUNCTION_F11, .name="F11"}, + +{.code=KEY_FUNCTION_F12, .name="FUNCTION_F12"}, +{.code=KEY_FUNCTION_F12, .name="F12"}, + +{.code=KEY_FUNCTION_F13, .name="FUNCTION_F13"}, +{.code=KEY_FUNCTION_F13, .name="F13"}, + +{.code=KEY_FUNCTION_F14, .name="FUNCTION_F14"}, +{.code=KEY_FUNCTION_F14, .name="F14"}, + +{.code=KEY_FUNCTION_F15, .name="FUNCTION_F15"}, +{.code=KEY_FUNCTION_F15, .name="F15"}, + +{.code=KEY_FUNCTION_F16, .name="FUNCTION_F16"}, +{.code=KEY_FUNCTION_F16, .name="F16"}, + +{.code=KEY_FUNCTION_F17, .name="FUNCTION_F17"}, +{.code=KEY_FUNCTION_F17, .name="F17"}, + +{.code=KEY_FUNCTION_F18, .name="FUNCTION_F18"}, +{.code=KEY_FUNCTION_F18, .name="F18"}, + +{.code=KEY_FUNCTION_F19, .name="FUNCTION_F19"}, +{.code=KEY_FUNCTION_F19, .name="F19"}, + +{.code=KEY_FUNCTION_F20, .name="FUNCTION_F20"}, +{.code=KEY_FUNCTION_F20, .name="F20"}, + +{.code=KEY_FUNCTION_F21, .name="FUNCTION_F21"}, +{.code=KEY_FUNCTION_F21, .name="F21"}, + +{.code=KEY_FUNCTION_F22, .name="FUNCTION_F22"}, +{.code=KEY_FUNCTION_F22, .name="F22"}, + +{.code=KEY_FUNCTION_F23, .name="FUNCTION_F23"}, +{.code=KEY_FUNCTION_F23, .name="F23"}, + +{.code=KEY_FUNCTION_F24, .name="FUNCTION_F24"}, +{.code=KEY_FUNCTION_F24, .name="F24"}, + +{.code=KEY_FUNCTION_Insert, .name="FUNCTION_Insert"}, +{.code=KEY_FUNCTION_Insert, .name="Insert"}, + +{.code=KEY_FUNCTION_DeleteForward, .name="FUNCTION_DeleteForward"}, +{.code=KEY_FUNCTION_DeleteForward, .name="DeleteForward"}, + +{.code=KEY_FUNCTION_Home, .name="FUNCTION_Home"}, +{.code=KEY_FUNCTION_Home, .name="Home"}, + +{.code=KEY_FUNCTION_End, .name="FUNCTION_End"}, +{.code=KEY_FUNCTION_End, .name="End"}, + +{.code=KEY_FUNCTION_PageUp, .name="FUNCTION_PageUp"}, +{.code=KEY_FUNCTION_PageUp, .name="PageUp"}, + +{.code=KEY_FUNCTION_PageDown, .name="FUNCTION_PageDown"}, +{.code=KEY_FUNCTION_PageDown, .name="PageDown"}, + +{.code=KEY_FUNCTION_ArrowUp, .name="FUNCTION_ArrowUp"}, +{.code=KEY_FUNCTION_ArrowUp, .name="ArrowUp"}, + +{.code=KEY_FUNCTION_ArrowDown, .name="FUNCTION_ArrowDown"}, +{.code=KEY_FUNCTION_ArrowDown, .name="ArrowDown"}, + +{.code=KEY_FUNCTION_ArrowLeft, .name="FUNCTION_ArrowLeft"}, +{.code=KEY_FUNCTION_ArrowLeft, .name="ArrowLeft"}, + +{.code=KEY_FUNCTION_ArrowRight, .name="FUNCTION_ArrowRight"}, +{.code=KEY_FUNCTION_ArrowRight, .name="ArrowRight"}, + +{.code=KEY_FUNCTION_PrintScreen, .name="FUNCTION_PrintScreen"}, +{.code=KEY_FUNCTION_PrintScreen, .name="PrintScreen"}, + +{.code=KEY_FUNCTION_SystemRequest, .name="FUNCTION_SystemRequest"}, +{.code=KEY_FUNCTION_SystemRequest, .name="SystemRequest"}, + +{.code=KEY_FUNCTION_Pause, .name="FUNCTION_Pause"}, +{.code=KEY_FUNCTION_Pause, .name="Pause"}, + +{.code=KEY_FUNCTION_ShiftLeft, .name="FUNCTION_ShiftLeft"}, +{.code=KEY_FUNCTION_ShiftLeft, .name="ShiftLeft"}, + +{.code=KEY_FUNCTION_ShiftRight, .name="FUNCTION_ShiftRight"}, +{.code=KEY_FUNCTION_ShiftRight, .name="ShiftRight"}, + +{.code=KEY_FUNCTION_ControlLeft, .name="FUNCTION_ControlLeft"}, +{.code=KEY_FUNCTION_ControlLeft, .name="ControlLeft"}, + +{.code=KEY_FUNCTION_ControlRight, .name="FUNCTION_ControlRight"}, +{.code=KEY_FUNCTION_ControlRight, .name="ControlRight"}, + +{.code=KEY_FUNCTION_AltLeft, .name="FUNCTION_AltLeft"}, +{.code=KEY_FUNCTION_AltLeft, .name="AltLeft"}, + +{.code=KEY_FUNCTION_AltRight, .name="FUNCTION_AltRight"}, +{.code=KEY_FUNCTION_AltRight, .name="AltRight"}, + +{.code=KEY_FUNCTION_GuiLeft, .name="FUNCTION_GuiLeft"}, +{.code=KEY_FUNCTION_GuiLeft, .name="GuiLeft"}, + +{.code=KEY_FUNCTION_GuiRight, .name="FUNCTION_GuiRight"}, +{.code=KEY_FUNCTION_GuiRight, .name="GuiRight"}, + +{.code=KEY_FUNCTION_Application, .name="FUNCTION_Application"}, +{.code=KEY_FUNCTION_Application, .name="Application"}, + +{.code=KEY_LOCK_Capitals, .name="LOCK_Capitals"}, +{.code=KEY_LOCK_Capitals, .name="CapsLock"}, + +{.code=KEY_LOCK_Scroll, .name="LOCK_Scroll"}, +{.code=KEY_LOCK_Scroll, .name="ScrollLock"}, + +{.code=KEY_LOCKING_Capitals, .name="LOCKING_Capitals"}, + +{.code=KEY_LOCKING_Scroll, .name="LOCKING_Scroll"}, + +{.code=KEY_LOCKING_Numbers, .name="LOCKING_Numbers"}, + +{.code=KEY_KEYPAD_NumLock_Clear, .name="KEYPAD_NumLock_Clear"}, + +{.code=KEY_KEYPAD_Slash, .name="KEYPAD_Slash"}, +{.code=KEY_KEYPAD_Slash, .name="KPSlash"}, + +{.code=KEY_KEYPAD_Asterisk, .name="KEYPAD_Asterisk"}, +{.code=KEY_KEYPAD_Asterisk, .name="KPAsterisk"}, + +{.code=KEY_KEYPAD_Minus, .name="KEYPAD_Minus"}, +{.code=KEY_KEYPAD_Minus, .name="KPMinus"}, + +{.code=KEY_KEYPAD_Plus, .name="KEYPAD_Plus"}, +{.code=KEY_KEYPAD_Plus, .name="KPPlus"}, + +{.code=KEY_KEYPAD_Enter, .name="KEYPAD_Enter"}, +{.code=KEY_KEYPAD_Enter, .name="KPEnter"}, + +{.code=KEY_KEYPAD_One_End, .name="KEYPAD_One_End"}, +{.code=KEY_KEYPAD_One_End, .name="KP1"}, +{.code=KEY_KEYPAD_One_End, .name="KPEnd"}, + +{.code=KEY_KEYPAD_Two_ArrowDown, .name="KEYPAD_Two_ArrowDown"}, +{.code=KEY_KEYPAD_Two_ArrowDown, .name="KP2"}, +{.code=KEY_KEYPAD_Two_ArrowDown, .name="KPArrowDown"}, + +{.code=KEY_KEYPAD_Three_PageDown, .name="KEYPAD_Three_PageDown"}, +{.code=KEY_KEYPAD_Three_PageDown, .name="KP3"}, +{.code=KEY_KEYPAD_Three_PageDown, .name="KPPageDown"}, + +{.code=KEY_KEYPAD_Four_ArrowLeft, .name="KEYPAD_Four_ArrowLeft"}, +{.code=KEY_KEYPAD_Four_ArrowLeft, .name="KP4"}, +{.code=KEY_KEYPAD_Four_ArrowLeft, .name="KPArrowLeft"}, + +{.code=KEY_KEYPAD_Five, .name="KEYPAD_Five"}, +{.code=KEY_KEYPAD_Five, .name="KP5"}, + +{.code=KEY_KEYPAD_Six_ArrowRight, .name="KEYPAD_Six_ArrowRight"}, +{.code=KEY_KEYPAD_Six_ArrowRight, .name="KP6"}, +{.code=KEY_KEYPAD_Six_ArrowRight, .name="KPArrowRight"}, + +{.code=KEY_KEYPAD_Seven_Home, .name="KEYPAD_Seven_Home"}, +{.code=KEY_KEYPAD_Seven_Home, .name="KP7"}, +{.code=KEY_KEYPAD_Seven_Home, .name="KPHome"}, + +{.code=KEY_KEYPAD_Eight_ArrowUp, .name="KEYPAD_Eight_ArrowUp"}, +{.code=KEY_KEYPAD_Eight_ArrowUp, .name="KP8"}, +{.code=KEY_KEYPAD_Eight_ArrowUp, .name="KPArrowUp"}, + +{.code=KEY_KEYPAD_Nine_PageUp, .name="KEYPAD_Nine_PageUp"}, +{.code=KEY_KEYPAD_Nine_PageUp, .name="KP9"}, +{.code=KEY_KEYPAD_Nine_PageUp, .name="KPPageUp"}, + +{.code=KEY_KEYPAD_Zero_Insert, .name="KEYPAD_Zero_Insert"}, +{.code=KEY_KEYPAD_Zero_Insert, .name="KP0"}, +{.code=KEY_KEYPAD_Zero_Insert, .name="KPInsert"}, + +{.code=KEY_KEYPAD_Period_Delete, .name="KEYPAD_Period_Delete"}, +{.code=KEY_KEYPAD_Period_Delete, .name="KPPeriod"}, +{.code=KEY_KEYPAD_Period_Delete, .name="KPDelete"}, + +{.code=KEY_KEYPAD_Equals, .name="KEYPAD_Equals"}, +{.code=KEY_KEYPAD_Equals, .name="KPEquals"}, + +{.code=KEY_KEYPAD_LeftParenthesis, .name="KEYPAD_LeftParenthesis"}, + +{.code=KEY_KEYPAD_RightParenthesis, .name="KEYPAD_RightParenthesis"}, + +{.code=KEY_KEYPAD_LeftBrace, .name="KEYPAD_LeftBrace"}, + +{.code=KEY_KEYPAD_RightBrace, .name="KEYPAD_RightBrace"}, + +{.code=KEY_KEYPAD_Modulo, .name="KEYPAD_Modulo"}, + +{.code=KEY_KEYPAD_BitwiseAnd, .name="KEYPAD_BitwiseAnd"}, + +{.code=KEY_KEYPAD_BitwiseOr, .name="KEYPAD_BitwiseOr"}, + +{.code=KEY_KEYPAD_BitwiseXor, .name="KEYPAD_BitwiseXor"}, + +{.code=KEY_KEYPAD_Less, .name="KEYPAD_Less"}, + +{.code=KEY_KEYPAD_Greater, .name="KEYPAD_Greater"}, + +{.code=KEY_KEYPAD_BooleanAnd, .name="KEYPAD_BooleanAnd"}, + +{.code=KEY_KEYPAD_BooleanOr, .name="KEYPAD_BooleanOr"}, + +{.code=KEY_KEYPAD_BooleanXor, .name="KEYPAD_BooleanXor"}, + +{.code=KEY_KEYPAD_BooleanNot, .name="KEYPAD_BooleanNot"}, + +{.code=KEY_KEYPAD_Backspace, .name="KEYPAD_Backspace"}, + +{.code=KEY_KEYPAD_Space, .name="KEYPAD_Space"}, + +{.code=KEY_KEYPAD_Tab, .name="KEYPAD_Tab"}, + +{.code=KEY_KEYPAD_Comma, .name="KEYPAD_Comma"}, + +{.code=KEY_KEYPAD_Colon, .name="KEYPAD_Colon"}, + +{.code=KEY_KEYPAD_Number, .name="KEYPAD_Number"}, + +{.code=KEY_KEYPAD_At, .name="KEYPAD_At"}, + +{.code=KEY_KEYPAD_A, .name="KEYPAD_A"}, + +{.code=KEY_KEYPAD_B, .name="KEYPAD_B"}, + +{.code=KEY_KEYPAD_C, .name="KEYPAD_C"}, + +{.code=KEY_KEYPAD_D, .name="KEYPAD_D"}, + +{.code=KEY_KEYPAD_E, .name="KEYPAD_E"}, + +{.code=KEY_KEYPAD_F, .name="KEYPAD_F"}, + +{.code=KEY_KEYPAD_00, .name="KEYPAD_00"}, + +{.code=KEY_KEYPAD_000, .name="KEYPAD_000"}, + +{.code=KEY_KEYPAD_ThousandsSeparator, .name="KEYPAD_ThousandsSeparator"}, + +{.code=KEY_KEYPAD_DecimalSeparator, .name="KEYPAD_DecimalSeparator"}, + +{.code=KEY_KEYPAD_CurrencyUnit, .name="KEYPAD_CurrencyUnit"}, + +{.code=KEY_KEYPAD_CurrencySubunit, .name="KEYPAD_CurrencySubunit"}, + +{.code=KEY_FUNCTION_Power, .name="FUNCTION_Power"}, + +{.code=KEY_FUNCTION_Sleep, .name="FUNCTION_Sleep"}, + +{.code=KEY_FUNCTION_Wakeup, .name="FUNCTION_Wakeup"}, + +{.code=KEY_FUNCTION_Stop, .name="FUNCTION_Stop"}, + +{.code=KEY_FUNCTION_Help, .name="FUNCTION_Help"}, + +{.code=KEY_FUNCTION_Find, .name="FUNCTION_Find"}, + +{.code=KEY_FUNCTION_Menu, .name="FUNCTION_Menu"}, + +{.code=KEY_FUNCTION_Select, .name="FUNCTION_Select"}, + +{.code=KEY_FUNCTION_Again, .name="FUNCTION_Again"}, + +{.code=KEY_FUNCTION_Execute, .name="FUNCTION_Execute"}, + +{.code=KEY_FUNCTION_Copy, .name="FUNCTION_Copy"}, + +{.code=KEY_FUNCTION_Cut, .name="FUNCTION_Cut"}, + +{.code=KEY_FUNCTION_Paste, .name="FUNCTION_Paste"}, + +{.code=KEY_FUNCTION_Undo, .name="FUNCTION_Undo"}, + +{.code=KEY_FUNCTION_Mute, .name="FUNCTION_Mute"}, + +{.code=KEY_FUNCTION_VolumeUp, .name="FUNCTION_VolumeUp"}, + +{.code=KEY_FUNCTION_VolumeDown, .name="FUNCTION_VolumeDown"}, + +{.code=KEY_KEYPAD_Clear, .name="KEYPAD_Clear"}, + +{.code=KEY_KEYPAD_ClearEntry, .name="KEYPAD_ClearEntry"}, + +{.code=KEY_KEYPAD_PlusMinus, .name="KEYPAD_PlusMinus"}, + +{.code=KEY_KEYPAD_MemoryClear, .name="KEYPAD_MemoryClear"}, + +{.code=KEY_KEYPAD_MemoryStore, .name="KEYPAD_MemoryStore"}, + +{.code=KEY_KEYPAD_MemoryRecall, .name="KEYPAD_MemoryRecall"}, + +{.code=KEY_KEYPAD_MemoryAdd, .name="KEYPAD_MemoryAdd"}, + +{.code=KEY_KEYPAD_MemorySubtract, .name="KEYPAD_MemorySubtract"}, + +{.code=KEY_KEYPAD_MemoryMultiply, .name="KEYPAD_MemoryMultiply"}, + +{.code=KEY_KEYPAD_MemoryDivide, .name="KEYPAD_MemoryDivide"}, + +{.code=KEY_KEYPAD_Binary, .name="KEYPAD_Binary"}, + +{.code=KEY_KEYPAD_Octal, .name="KEYPAD_Octal"}, + +{.code=KEY_KEYPAD_Decimal, .name="KEYPAD_Decimal"}, + +{.code=KEY_KEYPAD_Hexadecimal, .name="KEYPAD_Hexadecimal"}, + +{.code=KEY_FUNCTION_Cancel, .name="FUNCTION_Cancel"}, + +{.code=KEY_FUNCTION_Clear, .name="FUNCTION_Clear"}, + +{.code=KEY_FUNCTION_Prior, .name="FUNCTION_Prior"}, + +{.code=KEY_FUNCTION_Return, .name="FUNCTION_Return"}, + +{.code=KEY_FUNCTION_Separator, .name="FUNCTION_Separator"}, + +{.code=KEY_FUNCTION_Out, .name="FUNCTION_Out"}, + +{.code=KEY_FUNCTION_Oper, .name="FUNCTION_Oper"}, + +{.code=KEY_FUNCTION_Clear_Again, .name="FUNCTION_Clear_Again"}, + +{.code=KEY_FUNCTION_CrSel_Props, .name="FUNCTION_CrSel_Props"}, + +{.code=KEY_FUNCTION_ExSel, .name="FUNCTION_ExSel"}, + diff --git a/Programs/ktb_translate.c b/Programs/ktb_translate.c new file mode 100644 index 0000000000000000000000000000000000000000..c9ebd43088bd7e2854d78ad9b2efb46e815f935c --- /dev/null +++ b/Programs/ktb_translate.c @@ -0,0 +1,62 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#include "prologue.h" + +#include + +#include "misc.h" +#include "ktb.h" +#include "ktb_internal.h" + +KeyTable *keyTable = NULL; + +static inline const void * +getKeyTableItem (KeyTable *table, KeyTableOffset offset) { + return &table->header.bytes[offset]; +} + +int +getKeyCommand (KeyTable *table, const KeyCodeSet *modifiers, KeyCode code) { + const KeyTableHeader *header = table->header.fields; + const KeyBinding *binding = getKeyTableItem(table, header->bindingsTable); + unsigned int count = header->bindingsCount; + + while (count) { + if ((code == binding->key.code) && + sameKeyCodeMasks(modifiers->mask, binding->key.modifiers)) + return binding->command; + binding += 1, count -= 1; + } + + return EOF; +} + +int +isKeyModifiers (KeyTable *table, const KeyCodeSet *modifiers) { + const KeyTableHeader *header = table->header.fields; + const KeyBinding *binding = getKeyTableItem(table, header->bindingsTable); + unsigned int count = header->bindingsCount; + + while (count) { + if (isKeySubset(binding->key.modifiers, modifiers->mask)) return 1; + binding += 1, count -= 1; + } + + return 0; +} diff --git a/Programs/lock.c b/Programs/lock.c index 4a2e7dd55fa716ef4cba12763580a7e52d111951..57a80b4822ee7a90a9d602f417a3588e5481be07 100644 --- a/Programs/lock.c +++ b/Programs/lock.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/lock.h b/Programs/lock.h index ea12c6a7ccd0732a25f50915ce26cd31cc9673ce..649ab03c5dbb89c96dcafdf9d1ffb070b82949ea 100644 --- a/Programs/lock.h +++ b/Programs/lock.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/message.h b/Programs/message.h index f83b02d1a559859db7444ca166c1ccfe126d02d5..b98164c78a3236d4911aeff58bf77b8999e57fdc 100644 --- a/Programs/message.h +++ b/Programs/message.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -25,7 +26,7 @@ extern "C" { /* message.h - send a message to Braille and speech */ /* Prototype: */ -extern int message (const char *string, short flags); +extern int message (const char *mode, const char *string, short flags); /* Flags for the second argument: */ diff --git a/Programs/midi.c b/Programs/midi.c index cc32ce12444c8461851f85744ce67c7879005e2c..e7a918c21ce244717be3438ccc496a42d35dc971 100644 --- a/Programs/midi.c +++ b/Programs/midi.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/misc.c b/Programs/misc.c index 855c3d1798cad17e7cb5b21a2b3e26cf8c59b627..b0bedfbc2f4a9591223d49ef7a59c2046223e4fd 100644 --- a/Programs/misc.c +++ b/Programs/misc.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -87,6 +88,32 @@ deallocateStrings (char **array) { free(array); } +char * +joinStrings (const char *const *strings, int count) { + char *string; + size_t length = 0; + size_t lengths[count]; + int index; + + for (index=0; index pathLength) { - buffer[length] = 0; - *path = strdupWrapper(buffer); - } + return joinStrings(components, count); +} + +int +testPath (const char *path) { + return access(path, F_OK) != -1; } int @@ -566,7 +568,7 @@ getDeviceDirectory (void) { const unsigned int rootLength = strlen(root); char path[rootLength + directoryLength + 1]; snprintf(path, sizeof(path), "%s%s", root, directory); - if (access(path, F_OK) != -1) { + if (testPath(path)) { deviceDirectory = strdupWrapper(path); goto found; } @@ -683,19 +685,19 @@ isDosDevice (const char *path, const char *prefix) { #endif /* ALLOW_DOS_DEVICE_NAMES */ FILE * -openFile (const char *path, const char *mode) { +openFile (const char *path, const char *mode, int optional) { FILE *file = fopen(path, mode); if (file) { LogPrint(LOG_DEBUG, "file opened: %s fd=%d", path, fileno(file)); } else { - LogPrint((errno == ENOENT)? LOG_DEBUG: LOG_ERR, + LogPrint((optional && (errno == ENOENT))? LOG_DEBUG: LOG_ERR, "cannot open file: %s: %s", path, strerror(errno)); } return file; } FILE * -openDataFile (const char *path, const char *mode) { +openDataFile (const char *path, const char *mode, int optional) { static const char *userDirectory = NULL; const char *name = locatePathName(path); char *userPath; @@ -713,15 +715,15 @@ openDataFile (const char *path, const char *mode) { if (!*userDirectory) { userPath = NULL; } else if ((userPath = makePath(userDirectory, name))) { - if (access(userPath, F_OK) != -1) { - file = openFile(userPath, mode); + if (testPath(userPath)) { + file = openFile(userPath, mode, optional); goto done; } } - if (!(file = openFile(path, mode))) { + if (!(file = openFile(path, mode, optional))) { if (((*mode == 'w') || (*mode == 'a')) && (errno == EACCES) && userPath) { - if (makeDirectory(userDirectory)) file = openFile(userPath, mode); + if (makeDirectory(userDirectory)) file = openFile(userPath, mode, optional); } } @@ -778,12 +780,21 @@ readLine (FILE *file, char **buffer, size_t *size) { */ int processLines (FILE *file, int (*handler) (char *line, void *data), void *data) { + unsigned int lineNumber = 0; char *buffer = NULL; size_t bufferSize = 0; - while (readLine(file, &buffer, &bufferSize)) - if (!handler(buffer, data)) - break; + while (readLine(file, &buffer, &bufferSize)) { + char *line = buffer; + + if (!lineNumber++) { + static const char utf8ByteOrderMark[] = {0XEF, 0XBB, 0XBF}; + static const unsigned int length = sizeof(utf8ByteOrderMark); + if (strncmp(line, utf8ByteOrderMark, length) == 0) line += length; + } + + if (!handler(line, data)) break; + } if (buffer) free(buffer); return !ferror(file); @@ -842,12 +853,14 @@ gettimeofday (struct timeval *tvp, void *tzp) { } #endif /* gettimeofday */ +#if (__MINGW32_MAJOR_VERSION < 3) || ((__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION < 15)) void usleep (int usec) { if (usec > 0) { approximateDelay((usec+999)/1000); } } +#endif /* usleep */ #endif /* __MINGW32__ */ long int diff --git a/Programs/misc.h b/Programs/misc.h index b6c653159eb1530440437ed30e58c0441b725b83..2611cca1c21ad5e1b30a525bc43d9ee351c3d70b 100644 --- a/Programs/misc.h +++ b/Programs/misc.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -28,21 +29,6 @@ extern "C" { #include #include -/* These macros are meant for internal use only. */ -#define BITMASK_ELEMENT_SIZE(element) (sizeof(element) * 8) -#define BITMASK_INDEX(bit,size) ((bit) / (size)) -#define BITMASK_SHIFT(bit,size) ((bit) % (size)) -#define BITMASK_ELEMENT_COUNT(bits,size) (BITMASK_INDEX((bits)-1, (size)) + 1) -#define BITMASK_ELEMENT(name,bit) ((name)[BITMASK_INDEX((bit), BITMASK_ELEMENT_SIZE((name)[0]))]) -#define BITMASK_BIT(name,bit) (1 << BITMASK_SHIFT((bit), BITMASK_ELEMENT_SIZE((name)[0]))) - -/* These macros are for public use. */ -#define BITMASK(name,bits,type) unsigned type name[BITMASK_ELEMENT_COUNT((bits), BITMASK_ELEMENT_SIZE(type))] -#define BITMASK_SIZE(name) BITMASK_ELEMENT_SIZE((name)) -#define BITMASK_SET(name,bit) (BITMASK_ELEMENT((name), (bit)) |= BITMASK_BIT((name), (bit))) -#define BITMASK_CLEAR(name,bit) (BITMASK_ELEMENT((name), (bit)) &= ~BITMASK_BIT((name), (bit))) -#define BITMASK_TEST(name,bit) (BITMASK_ELEMENT((name), (bit)) & BITMASK_BIT((name), (bit))) - #ifndef MIN #define MIN(a, b) (((a) < (b))? (a): (b)) #endif /* MIN */ @@ -97,9 +83,10 @@ extern "C" { extern char **splitString (const char *string, char delimiter, int *count); extern void deallocateStrings (char **array); +extern char *joinStrings (const char *const *strings, int count); -extern FILE *openFile (const char *path, const char *mode); -extern FILE *openDataFile (const char *path, const char *mode); +extern FILE *openFile (const char *path, const char *mode, int optional); +extern FILE *openDataFile (const char *path, const char *mode, int optional); extern int processLines ( FILE *file, @@ -121,8 +108,13 @@ extern void formatInputError ( ); #ifdef __MINGW32__ +#if (__MINGW32_MAJOR_VERSION < 3) || ((__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION < 10)) extern int gettimeofday (struct timeval *tvp, void *tzp); +#endif /* gettimeofday */ + +#if (__MINGW32_MAJOR_VERSION < 3) || ((__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION < 15)) extern void usleep (int usec); +#endif /* usleep */ #endif /* __MINGW32__ */ extern void approximateDelay (int milliseconds); /* sleep for `msec' milliseconds */ @@ -176,10 +168,12 @@ extern int isPathDelimiter (const char character); extern int isAbsolutePath (const char *path); extern char *getPathDirectory (const char *path); extern const char *locatePathName (const char *path); +extern const char *locatePathExtension (const char *path); extern int isExplicitPath (const char *path); extern char *makePath (const char *directory, const char *file); -extern void fixPath (char **path, const char *extension, const char *prefix); +extern char *ensureExtension (const char *path, const char *extension); +extern int testPath (const char *path); extern int makeDirectory (const char *path); extern const char *writableDirectory; diff --git a/Programs/mkdrvtab b/Programs/mkdrvtab index 0691b7a598a6cf98bee5a7f1f14b9c706ab5a8ee..679590c479c9217c859b74d48c26d16b05c2e773 100755 --- a/Programs/mkdrvtab +++ b/Programs/mkdrvtab @@ -3,13 +3,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/Programs/mount.c b/Programs/mount.c index ab81e9bc9ee6aa162286810dd9575e6e3baa6067..34879747374ae0b3981731e7b21f2c1c68ae1e88 100644 --- a/Programs/mount.c +++ b/Programs/mount.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/mount.h b/Programs/mount.h index 349750ade386e820945f3a69a7f986967b08e89c..3b8f87a7efe1faadbdb76c2d0e736d68566652de 100644 --- a/Programs/mount.h +++ b/Programs/mount.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/notes.h b/Programs/notes.h index addff73574d95badecb5a11e10277b9306e873b4..594534c8a2343feffb4dfde9a0da12c0d1a3d071 100644 --- a/Programs/notes.h +++ b/Programs/notes.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/options.c b/Programs/options.c index 48698a49ed95c42ac47c3ec7d57f0be44eb4c206..e422010bf2adc94f1ae97a667ae4732a609714d8 100644 --- a/Programs/options.c +++ b/Programs/options.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -521,8 +522,19 @@ processBootParameters ( for (optionIndex=0; optionIndexoptionCount; ++optionIndex) { const OptionEntry *option = &info->optionTable[optionIndex]; if ((option->bootParameter) && (option->bootParameter <= count)) { - const char *parameter = parameters[option->bootParameter-1]; - if (*parameter) ensureSetting(info, option, parameter); + char *parameter = parameters[option->bootParameter-1]; + + if (*parameter) { + { + char *byte = parameter; + + do { + if (*byte == '+') *byte = ','; + } while (*++byte); + } + + ensureSetting(info, option, parameter); + } } } @@ -649,7 +661,7 @@ processConfigurationFile ( const char *path, int optional ) { - FILE *file = openDataFile(path, "r"); + FILE *file = openDataFile(path, "r", optional); if (file != NULL) { /* The configuration file has been successfully opened. */ int processed; @@ -678,11 +690,7 @@ processConfigurationFile ( LogPrint(LOG_ERR, gettext("file '%s' processing error."), path); info->errorCount++; } else { - int ok = optional && (errno == ENOENT); - LogPrint((ok? LOG_DEBUG: LOG_ERR), "%s: %s: %s", - gettext("cannot open configuration file"), - path, strerror(errno)); - if (ok) return 1; + if (optional && (errno == ENOENT)) return 1; info->errorCount++; } return 0; diff --git a/Programs/options.h b/Programs/options.h index 898c7ec738dd96b976e4901031062ff99fc07a5f..867322b3216673b31c5b2dcd6660b22bd4ab43a2 100644 --- a/Programs/options.h +++ b/Programs/options.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/pcm.c b/Programs/pcm.c index 65c51c2e6693bbc93c7f930469d6dc798a60df66..f3c0a2a9cf2b1e42842a5b86108377d35fbeab51 100644 --- a/Programs/pcm.c +++ b/Programs/pcm.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/program.c b/Programs/program.c index cc45ed5c16b6ec4fad2590776d1dcc7fde73bbcb..12c45153a3ad0e949a7982ad5607f7e139498cf7 100644 --- a/Programs/program.c +++ b/Programs/program.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/program.h b/Programs/program.h index 00bf96d4837e2a3ff854d94a4e5f817362f8aa2d..72ef3144d92ba8d3e0d08d4ebbdf1feefe91aba4 100644 --- a/Programs/program.h +++ b/Programs/program.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/queue.c b/Programs/queue.c index 5fa2496752728d374307a292b6eeda5cb978c420..b6aad75c090b93654c257aa48afa811766a2adbb 100644 --- a/Programs/queue.c +++ b/Programs/queue.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/queue.h b/Programs/queue.h index f9a4d24a42dc205e4fed522dddf6bbfa990804b9..c2197cab410d037ae93768b69ab36b25e7a340eb 100644 --- a/Programs/queue.h +++ b/Programs/queue.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/reldeps.mk b/Programs/reldeps.mk index fff90d4888084fcfb60822db8615f9cb0281cec2..9c10f2445cda3e36c6d2eed785421359683aba49 100644 --- a/Programs/reldeps.mk +++ b/Programs/reldeps.mk @@ -3,7 +3,9 @@ adlib.$O: $(SRC_DIR)/adlib.c adlib.$O: $(BLD_TOP)config.h adlib.$O: $(SRC_TOP)prologue.h adlib.$O: $(SRC_DIR)/misc.h +adlib.$O: $(SRC_DIR)/bitmask.h adlib.$O: $(SRC_DIR)/keyboard.h +adlib.$O: $(SRC_DIR)/keycodes.h adlib.$O: $(SRC_DIR)/system.h adlib.$O: $(SRC_DIR)/adlib.h @@ -27,6 +29,24 @@ async.$O: $(SRC_DIR)/misc.h async.$O: $(SRC_DIR)/queue.h async.$O: $(SRC_DIR)/async.h +# Dependencies for atb_compile.$O: +atb_compile.$O: $(SRC_DIR)/atb_compile.c +atb_compile.$O: $(BLD_TOP)config.h +atb_compile.$O: $(SRC_TOP)prologue.h +atb_compile.$O: $(SRC_DIR)/misc.h +atb_compile.$O: $(SRC_DIR)/datafile.h +atb_compile.$O: $(SRC_DIR)/dataarea.h +atb_compile.$O: $(SRC_DIR)/atb.h +atb_compile.$O: $(SRC_DIR)/atb_internal.h + +# Dependencies for atb_translate.$O: +atb_translate.$O: $(SRC_DIR)/atb_translate.c +atb_translate.$O: $(BLD_TOP)config.h +atb_translate.$O: $(SRC_TOP)prologue.h +atb_translate.$O: $(SRC_DIR)/atb.h +atb_translate.$O: $(SRC_DIR)/atb_internal.h +atb_translate.$O: attr.auto.h + # Dependencies for auth.$O: auth.$O: $(SRC_DIR)/auth.c auth.$O: $(BLD_TOP)config.h @@ -39,7 +59,9 @@ beeper.$O: $(SRC_DIR)/beeper.c beeper.$O: $(BLD_TOP)config.h beeper.$O: $(SRC_TOP)prologue.h beeper.$O: $(SRC_DIR)/misc.h +beeper.$O: $(SRC_DIR)/bitmask.h beeper.$O: $(SRC_DIR)/keyboard.h +beeper.$O: $(SRC_DIR)/keycodes.h beeper.$O: $(SRC_DIR)/system.h beeper.$O: $(SRC_DIR)/notes.h @@ -78,18 +100,17 @@ brl.$O: $(SRC_DIR)/async.h brl.$O: $(SRC_DIR)/message.h brl.$O: $(SRC_DIR)/charset.h brl.$O: $(SRC_DIR)/lock.h +brl.$O: $(SRC_DIR)/unicode.h brl.$O: $(SRC_DIR)/driver.h brl.$O: $(SRC_DIR)/drivers.h brl.$O: $(SRC_DIR)/brl.h brl.$O: $(SRC_DIR)/brldefs.h -brl.$O: $(SRC_DIR)/tbl.h +brl.$O: $(SRC_DIR)/ttb.h brl.$O: brl.auto.h brl.$O: brlapi_constants.h brl.$O: $(SRC_DIR)/brlapi_keycodes.h brl.$O: $(SRC_DIR)/cmd.h brl.$O: $(SRC_DIR)/brl_driver.h -brl.$O: text.auto.h -brl.$O: attrib.auto.h # Dependencies for brlapi_client.$O: brlapi_client.$O: $(SRC_DIR)/brlapi_client.c @@ -127,9 +148,12 @@ brlapi_server.$O: $(SRC_DIR)/cmd.h brlapi_server.$O: $(SRC_DIR)/brl.h brlapi_server.$O: $(SRC_DIR)/brldefs.h brlapi_server.$O: $(SRC_DIR)/driver.h -brlapi_server.$O: $(SRC_DIR)/tbl.h +brlapi_server.$O: $(SRC_DIR)/ttb.h +brlapi_server.$O: $(SRC_DIR)/bitmask.h brlapi_server.$O: $(SRC_DIR)/brltty.h brlapi_server.$O: $(SRC_DIR)/ctb.h +brlapi_server.$O: $(SRC_DIR)/keycodes.h +brlapi_server.$O: $(SRC_DIR)/ktb.h brlapi_server.$O: $(SRC_DIR)/spk.h brlapi_server.$O: $(SRC_DIR)/auth.h brlapi_server.$O: $(SRC_DIR)/io_misc.h @@ -148,10 +172,10 @@ brltest.$O: $(SRC_DIR)/options.h brltest.$O: $(SRC_DIR)/brl.h brltest.$O: $(SRC_DIR)/brldefs.h brltest.$O: $(SRC_DIR)/driver.h -brltest.$O: $(SRC_DIR)/tbl.h brltest.$O: $(SRC_DIR)/misc.h +brltest.$O: $(SRC_DIR)/charset.h +brltest.$O: $(SRC_DIR)/lock.h brltest.$O: $(SRC_DIR)/message.h -brltest.$O: $(SRC_DIR)/scr.h brltest.$O: $(SRC_DIR)/defaults.h # Dependencies for brltty.$O: @@ -161,22 +185,27 @@ brltty.$O: $(SRC_TOP)prologue.h brltty.$O: $(SRC_DIR)/misc.h brltty.$O: $(SRC_DIR)/message.h brltty.$O: $(SRC_DIR)/tunes.h +brltty.$O: $(SRC_DIR)/ttb.h +brltty.$O: $(SRC_DIR)/atb.h +brltty.$O: $(SRC_DIR)/ctb.h +brltty.$O: $(SRC_DIR)/routing.h +brltty.$O: $(SRC_DIR)/cut.h brltty.$O: $(SRC_DIR)/brl.h brltty.$O: $(SRC_DIR)/brldefs.h brltty.$O: $(SRC_DIR)/driver.h -brltty.$O: $(SRC_DIR)/tbl.h -brltty.$O: $(SRC_DIR)/ctb.h -brltty.$O: $(SRC_DIR)/route.h -brltty.$O: $(SRC_DIR)/cut.h brltty.$O: $(SRC_DIR)/touch.h brltty.$O: brlapi_constants.h brltty.$O: $(SRC_DIR)/brlapi_keycodes.h brltty.$O: $(SRC_DIR)/cmd.h brltty.$O: $(SRC_DIR)/charset.h brltty.$O: $(SRC_DIR)/lock.h +brltty.$O: $(SRC_DIR)/unicode.h brltty.$O: $(SRC_DIR)/scancodes.h brltty.$O: $(SRC_DIR)/scr.h +brltty.$O: $(SRC_DIR)/bitmask.h brltty.$O: $(SRC_DIR)/brltty.h +brltty.$O: $(SRC_DIR)/keycodes.h +brltty.$O: $(SRC_DIR)/ktb.h brltty.$O: $(SRC_DIR)/spk.h brltty.$O: $(SRC_DIR)/defaults.h @@ -188,6 +217,7 @@ charset.$O: $(SRC_DIR)/sys_msdos.h charset.$O: $(SRC_DIR)/misc.h charset.$O: $(SRC_DIR)/lock.h charset.$O: $(SRC_DIR)/charset.h +charset.$O: $(SRC_DIR)/unicode.h # Dependencies for cmd.$O: cmd.$O: $(SRC_DIR)/cmd.c @@ -198,8 +228,10 @@ cmd.$O: $(SRC_DIR)/brldefs.h cmd.$O: brlapi_constants.h cmd.$O: $(SRC_DIR)/brlapi_keycodes.h cmd.$O: $(SRC_DIR)/cmd.h +cmd.$O: $(SRC_DIR)/ttb.h cmd.$O: $(SRC_DIR)/charset.h cmd.$O: $(SRC_DIR)/lock.h +cmd.$O: $(SRC_DIR)/queue.h cmd.$O: cmds.auto.h # Dependencies for config.$O: @@ -214,8 +246,12 @@ config.$O: $(SRC_DIR)/brldefs.h config.$O: $(SRC_DIR)/driver.h config.$O: $(SRC_DIR)/spk.h config.$O: $(SRC_DIR)/scr.h -config.$O: $(SRC_DIR)/tbl.h +config.$O: $(SRC_DIR)/ttb.h +config.$O: $(SRC_DIR)/atb.h config.$O: $(SRC_DIR)/ctb.h +config.$O: $(SRC_DIR)/bitmask.h +config.$O: $(SRC_DIR)/keycodes.h +config.$O: $(SRC_DIR)/ktb.h config.$O: $(SRC_DIR)/tunes.h config.$O: $(SRC_DIR)/message.h config.$O: $(SRC_DIR)/misc.h @@ -238,24 +274,20 @@ ctb_compile.$O: $(SRC_DIR)/ctb_compile.c ctb_compile.$O: $(BLD_TOP)config.h ctb_compile.$O: $(SRC_TOP)prologue.h ctb_compile.$O: $(SRC_DIR)/misc.h -ctb_compile.$O: $(SRC_DIR)/charset.h -ctb_compile.$O: $(SRC_DIR)/lock.h ctb_compile.$O: $(SRC_DIR)/ctb.h ctb_compile.$O: $(SRC_DIR)/ctb_internal.h -ctb_compile.$O: $(SRC_DIR)/brl.h -ctb_compile.$O: $(SRC_DIR)/brldefs.h -ctb_compile.$O: $(SRC_DIR)/driver.h +ctb_compile.$O: $(SRC_DIR)/datafile.h +ctb_compile.$O: $(SRC_DIR)/dataarea.h +ctb_compile.$O: $(SRC_DIR)/brldots.h # Dependencies for ctb_translate.$O: ctb_translate.$O: $(SRC_DIR)/ctb_translate.c ctb_translate.$O: $(BLD_TOP)config.h ctb_translate.$O: $(SRC_TOP)prologue.h -ctb_translate.$O: $(SRC_DIR)/brl.h -ctb_translate.$O: $(SRC_DIR)/brldefs.h -ctb_translate.$O: $(SRC_DIR)/driver.h -ctb_translate.$O: $(SRC_DIR)/tbl.h ctb_translate.$O: $(SRC_DIR)/ctb.h ctb_translate.$O: $(SRC_DIR)/ctb_internal.h +ctb_translate.$O: $(SRC_DIR)/unicode.h +ctb_translate.$O: $(SRC_DIR)/brldots.h # Dependencies for ctbtest.$O: ctbtest.$O: $(SRC_DIR)/ctbtest.c @@ -266,11 +298,9 @@ ctbtest.$O: $(SRC_DIR)/options.h ctbtest.$O: $(SRC_DIR)/misc.h ctbtest.$O: $(SRC_DIR)/charset.h ctbtest.$O: $(SRC_DIR)/lock.h -ctbtest.$O: $(SRC_DIR)/brl.h -ctbtest.$O: $(SRC_DIR)/brldefs.h -ctbtest.$O: $(SRC_DIR)/driver.h +ctbtest.$O: $(SRC_DIR)/unicode.h +ctbtest.$O: $(SRC_DIR)/ttb.h ctbtest.$O: $(SRC_DIR)/ctb.h -ctbtest.$O: $(SRC_DIR)/tbl.h # Dependencies for cut.$O: cut.$O: $(SRC_DIR)/cut.c @@ -279,16 +309,33 @@ cut.$O: $(SRC_TOP)prologue.h cut.$O: $(SRC_DIR)/driver.h cut.$O: $(SRC_DIR)/scr.h cut.$O: $(SRC_DIR)/tunes.h -cut.$O: $(SRC_DIR)/charset.h -cut.$O: $(SRC_DIR)/lock.h cut.$O: $(SRC_DIR)/cut.h +# Dependencies for dataarea.$O: +dataarea.$O: $(SRC_DIR)/dataarea.c +dataarea.$O: $(BLD_TOP)config.h +dataarea.$O: $(SRC_TOP)prologue.h +dataarea.$O: $(SRC_DIR)/misc.h +dataarea.$O: $(SRC_DIR)/dataarea.h + +# Dependencies for datafile.$O: +datafile.$O: $(SRC_DIR)/datafile.c +datafile.$O: $(BLD_TOP)config.h +datafile.$O: $(SRC_TOP)prologue.h +datafile.$O: $(SRC_DIR)/misc.h +datafile.$O: $(SRC_DIR)/datafile.h +datafile.$O: $(SRC_DIR)/charset.h +datafile.$O: $(SRC_DIR)/lock.h +datafile.$O: $(SRC_DIR)/brldots.h + # Dependencies for drivers.$O: drivers.$O: $(SRC_DIR)/drivers.c drivers.$O: $(BLD_TOP)config.h drivers.$O: $(SRC_TOP)prologue.h drivers.$O: $(SRC_DIR)/misc.h +drivers.$O: $(SRC_DIR)/bitmask.h drivers.$O: $(SRC_DIR)/keyboard.h +drivers.$O: $(SRC_DIR)/keycodes.h drivers.$O: $(SRC_DIR)/system.h drivers.$O: $(SRC_DIR)/driver.h drivers.$O: $(SRC_DIR)/drivers.h @@ -297,6 +344,7 @@ drivers.$O: $(SRC_DIR)/drivers.h fm.$O: $(SRC_DIR)/fm.c fm.$O: $(BLD_TOP)config.h fm.$O: $(SRC_TOP)prologue.h +fm.$O: $(SRC_DIR)/bitmask.h fm.$O: $(SRC_DIR)/brl.h fm.$O: brlapi_constants.h fm.$O: $(SRC_DIR)/brlapi_keycodes.h @@ -305,6 +353,8 @@ fm.$O: $(SRC_DIR)/brltty.h fm.$O: $(SRC_DIR)/cmd.h fm.$O: $(SRC_DIR)/ctb.h fm.$O: $(SRC_DIR)/driver.h +fm.$O: $(SRC_DIR)/keycodes.h +fm.$O: $(SRC_DIR)/ktb.h fm.$O: $(SRC_DIR)/spk.h fm.$O: $(SRC_DIR)/misc.h fm.$O: $(SRC_DIR)/notes.h @@ -325,6 +375,40 @@ keyboard.$O: $(SRC_TOP)prologue.h keyboard.$O: $(SRC_DIR)/keyboard.h keyboard.$O: $(SRC_DIR)/misc.h +# Dependencies for keycodes.$O: +keycodes.$O: $(SRC_DIR)/keycodes.c +keycodes.$O: $(BLD_TOP)config.h +keycodes.$O: $(SRC_TOP)prologue.h +keycodes.$O: $(SRC_DIR)/bitmask.h +keycodes.$O: $(SRC_DIR)/keycodes.h + +# Dependencies for ktb_compile.$O: +ktb_compile.$O: $(SRC_DIR)/ktb_compile.c +ktb_compile.$O: $(BLD_TOP)config.h +ktb_compile.$O: $(SRC_TOP)prologue.h +ktb_compile.$O: $(SRC_DIR)/misc.h +ktb_compile.$O: $(SRC_DIR)/datafile.h +ktb_compile.$O: $(SRC_DIR)/dataarea.h +ktb_compile.$O: brlapi_constants.h +ktb_compile.$O: $(SRC_DIR)/brlapi_keycodes.h +ktb_compile.$O: $(SRC_DIR)/cmd.h +ktb_compile.$O: $(SRC_DIR)/brldefs.h +ktb_compile.$O: $(SRC_DIR)/bitmask.h +ktb_compile.$O: $(SRC_DIR)/keycodes.h +ktb_compile.$O: $(SRC_DIR)/ktb.h +ktb_compile.$O: $(SRC_DIR)/ktb_internal.h +ktb_compile.$O: $(SRC_DIR)/ktb_keynames.h + +# Dependencies for ktb_translate.$O: +ktb_translate.$O: $(SRC_DIR)/ktb_translate.c +ktb_translate.$O: $(BLD_TOP)config.h +ktb_translate.$O: $(SRC_TOP)prologue.h +ktb_translate.$O: $(SRC_DIR)/misc.h +ktb_translate.$O: $(SRC_DIR)/bitmask.h +ktb_translate.$O: $(SRC_DIR)/keycodes.h +ktb_translate.$O: $(SRC_DIR)/ktb.h +ktb_translate.$O: $(SRC_DIR)/ktb_internal.h + # Dependencies for lock.$O: lock.$O: $(SRC_DIR)/lock.c lock.$O: $(BLD_TOP)config.h @@ -337,6 +421,7 @@ lock.$O: $(SRC_DIR)/lock.h midi.$O: $(SRC_DIR)/midi.c midi.$O: $(BLD_TOP)config.h midi.$O: $(SRC_TOP)prologue.h +midi.$O: $(SRC_DIR)/bitmask.h midi.$O: $(SRC_DIR)/brl.h midi.$O: brlapi_constants.h midi.$O: $(SRC_DIR)/brlapi_keycodes.h @@ -345,6 +430,8 @@ midi.$O: $(SRC_DIR)/brltty.h midi.$O: $(SRC_DIR)/cmd.h midi.$O: $(SRC_DIR)/ctb.h midi.$O: $(SRC_DIR)/driver.h +midi.$O: $(SRC_DIR)/keycodes.h +midi.$O: $(SRC_DIR)/ktb.h midi.$O: $(SRC_DIR)/spk.h midi.$O: $(SRC_DIR)/misc.h midi.$O: $(SRC_DIR)/keyboard.h @@ -363,7 +450,9 @@ mount.$O: $(SRC_DIR)/mount.c mount.$O: $(BLD_TOP)config.h mount.$O: $(SRC_TOP)prologue.h mount.$O: $(SRC_DIR)/misc.h +mount.$O: $(SRC_DIR)/bitmask.h mount.$O: $(SRC_DIR)/keyboard.h +mount.$O: $(SRC_DIR)/keycodes.h mount.$O: $(SRC_DIR)/system.h mount.$O: $(SRC_DIR)/async.h mount.$O: $(SRC_DIR)/mount.h @@ -375,13 +464,16 @@ options.$O: $(SRC_TOP)prologue.h options.$O: $(SRC_DIR)/program.h options.$O: $(SRC_DIR)/options.h options.$O: $(SRC_DIR)/misc.h +options.$O: $(SRC_DIR)/bitmask.h options.$O: $(SRC_DIR)/keyboard.h +options.$O: $(SRC_DIR)/keycodes.h options.$O: $(SRC_DIR)/system.h # Dependencies for pcm.$O: pcm.$O: $(SRC_DIR)/pcm.c pcm.$O: $(BLD_TOP)config.h pcm.$O: $(SRC_TOP)prologue.h +pcm.$O: $(SRC_DIR)/bitmask.h pcm.$O: $(SRC_DIR)/brl.h pcm.$O: brlapi_constants.h pcm.$O: $(SRC_DIR)/brlapi_keycodes.h @@ -390,6 +482,8 @@ pcm.$O: $(SRC_DIR)/brltty.h pcm.$O: $(SRC_DIR)/cmd.h pcm.$O: $(SRC_DIR)/ctb.h pcm.$O: $(SRC_DIR)/driver.h +pcm.$O: $(SRC_DIR)/keycodes.h +pcm.$O: $(SRC_DIR)/ktb.h pcm.$O: $(SRC_DIR)/spk.h pcm.$O: $(SRC_DIR)/misc.h pcm.$O: $(SRC_DIR)/keyboard.h @@ -402,7 +496,9 @@ program.$O: $(BLD_TOP)config.h program.$O: $(SRC_TOP)prologue.h program.$O: $(SRC_DIR)/program.h program.$O: $(SRC_DIR)/misc.h +program.$O: $(SRC_DIR)/bitmask.h program.$O: $(SRC_DIR)/keyboard.h +program.$O: $(SRC_DIR)/keycodes.h program.$O: $(SRC_DIR)/system.h program.$O: $(SRC_DIR)/sys_windows.h @@ -413,14 +509,14 @@ queue.$O: $(SRC_TOP)prologue.h queue.$O: $(SRC_DIR)/misc.h queue.$O: $(SRC_DIR)/queue.h -# Dependencies for route.$O: -route.$O: $(SRC_DIR)/route.c -route.$O: $(BLD_TOP)config.h -route.$O: $(SRC_TOP)prologue.h -route.$O: $(SRC_DIR)/misc.h -route.$O: $(SRC_DIR)/driver.h -route.$O: $(SRC_DIR)/scr.h -route.$O: $(SRC_DIR)/route.h +# Dependencies for routing.$O: +routing.$O: $(SRC_DIR)/routing.c +routing.$O: $(BLD_TOP)config.h +routing.$O: $(SRC_TOP)prologue.h +routing.$O: $(SRC_DIR)/misc.h +routing.$O: $(SRC_DIR)/driver.h +routing.$O: $(SRC_DIR)/scr.h +routing.$O: $(SRC_DIR)/routing.h # Dependencies for scancodes.$O: scancodes.$O: $(SRC_DIR)/scancodes.c @@ -434,7 +530,9 @@ scr.$O: $(SRC_DIR)/scr.c scr.$O: $(BLD_TOP)config.h scr.$O: $(SRC_TOP)prologue.h scr.$O: $(SRC_DIR)/misc.h +scr.$O: $(SRC_DIR)/bitmask.h scr.$O: $(SRC_DIR)/keyboard.h +scr.$O: $(SRC_DIR)/keycodes.h scr.$O: $(SRC_DIR)/system.h scr.$O: $(SRC_DIR)/driver.h scr.$O: $(SRC_DIR)/drivers.h @@ -499,7 +597,7 @@ scr_real.$O: $(SRC_DIR)/scr.h scr_real.$O: $(SRC_DIR)/scr_base.h scr_real.$O: $(SRC_DIR)/scr_main.h scr_real.$O: $(SRC_DIR)/scr_real.h -scr_real.$O: $(SRC_DIR)/route.h +scr_real.$O: $(SRC_DIR)/routing.h # Dependencies for scrtest.$O: scrtest.$O: $(SRC_DIR)/scrtest.c @@ -517,7 +615,9 @@ serial.$O: $(BLD_TOP)config.h serial.$O: $(SRC_TOP)prologue.h serial.$O: $(SRC_DIR)/misc.h serial.$O: $(SRC_DIR)/win_pthread.h +serial.$O: $(SRC_DIR)/bitmask.h serial.$O: $(SRC_DIR)/keyboard.h +serial.$O: $(SRC_DIR)/keycodes.h serial.$O: $(SRC_DIR)/system.h serial.$O: $(SRC_DIR)/io_defs.h serial.$O: $(SRC_DIR)/io_serial.h @@ -551,7 +651,9 @@ sys_darwin.$O: $(SRC_DIR)/sys_darwin.c sys_darwin.$O: $(BLD_TOP)config.h sys_darwin.$O: $(SRC_TOP)prologue.h sys_darwin.$O: $(SRC_DIR)/misc.h +sys_darwin.$O: $(SRC_DIR)/bitmask.h sys_darwin.$O: $(SRC_DIR)/keyboard.h +sys_darwin.$O: $(SRC_DIR)/keycodes.h sys_darwin.$O: $(SRC_DIR)/system.h sys_darwin.$O: $(SRC_DIR)/sys_prog_none.h sys_darwin.$O: $(SRC_DIR)/sys_boot_none.h @@ -569,7 +671,9 @@ sys_freebsd.$O: $(SRC_DIR)/sys_freebsd.c sys_freebsd.$O: $(BLD_TOP)config.h sys_freebsd.$O: $(SRC_TOP)prologue.h sys_freebsd.$O: $(SRC_DIR)/misc.h +sys_freebsd.$O: $(SRC_DIR)/bitmask.h sys_freebsd.$O: $(SRC_DIR)/keyboard.h +sys_freebsd.$O: $(SRC_DIR)/keycodes.h sys_freebsd.$O: $(SRC_DIR)/system.h sys_freebsd.$O: $(SRC_DIR)/sys_prog_none.h sys_freebsd.$O: $(SRC_DIR)/sys_boot_none.h @@ -588,7 +692,9 @@ sys_hpux.$O: $(SRC_DIR)/sys_hpux.c sys_hpux.$O: $(BLD_TOP)config.h sys_hpux.$O: $(SRC_TOP)prologue.h sys_hpux.$O: $(SRC_DIR)/misc.h +sys_hpux.$O: $(SRC_DIR)/bitmask.h sys_hpux.$O: $(SRC_DIR)/keyboard.h +sys_hpux.$O: $(SRC_DIR)/keycodes.h sys_hpux.$O: $(SRC_DIR)/system.h sys_hpux.$O: $(SRC_DIR)/sys_prog_none.h sys_hpux.$O: $(SRC_DIR)/sys_boot_none.h @@ -604,7 +710,9 @@ sys_hurd.$O: $(SRC_DIR)/sys_hurd.c sys_hurd.$O: $(BLD_TOP)config.h sys_hurd.$O: $(SRC_TOP)prologue.h sys_hurd.$O: $(SRC_DIR)/misc.h +sys_hurd.$O: $(SRC_DIR)/bitmask.h sys_hurd.$O: $(SRC_DIR)/keyboard.h +sys_hurd.$O: $(SRC_DIR)/keycodes.h sys_hurd.$O: $(SRC_DIR)/system.h sys_hurd.$O: $(SRC_DIR)/sys_prog_none.h sys_hurd.$O: $(SRC_DIR)/sys_boot_none.h @@ -622,7 +730,9 @@ sys_kfreebsd.$O: $(SRC_DIR)/sys_kfreebsd.c sys_kfreebsd.$O: $(BLD_TOP)config.h sys_kfreebsd.$O: $(SRC_TOP)prologue.h sys_kfreebsd.$O: $(SRC_DIR)/misc.h +sys_kfreebsd.$O: $(SRC_DIR)/bitmask.h sys_kfreebsd.$O: $(SRC_DIR)/keyboard.h +sys_kfreebsd.$O: $(SRC_DIR)/keycodes.h sys_kfreebsd.$O: $(SRC_DIR)/system.h sys_kfreebsd.$O: $(SRC_DIR)/sys_prog_none.h sys_kfreebsd.$O: $(SRC_DIR)/sys_boot_none.h @@ -641,7 +751,9 @@ sys_linux.$O: $(SRC_DIR)/sys_linux.c sys_linux.$O: $(BLD_TOP)config.h sys_linux.$O: $(SRC_TOP)prologue.h sys_linux.$O: $(SRC_DIR)/misc.h +sys_linux.$O: $(SRC_DIR)/bitmask.h sys_linux.$O: $(SRC_DIR)/keyboard.h +sys_linux.$O: $(SRC_DIR)/keycodes.h sys_linux.$O: $(SRC_DIR)/system.h sys_linux.$O: $(SRC_DIR)/sys_linux.h sys_linux.$O: $(SRC_DIR)/sys_exec_unix.h @@ -663,7 +775,9 @@ sys_msdos.$O: $(SRC_DIR)/sys_msdos.c sys_msdos.$O: $(BLD_TOP)config.h sys_msdos.$O: $(SRC_TOP)prologue.h sys_msdos.$O: $(SRC_DIR)/misc.h +sys_msdos.$O: $(SRC_DIR)/bitmask.h sys_msdos.$O: $(SRC_DIR)/keyboard.h +sys_msdos.$O: $(SRC_DIR)/keycodes.h sys_msdos.$O: $(SRC_DIR)/system.h sys_msdos.$O: $(SRC_DIR)/sys_prog_none.h sys_msdos.$O: $(SRC_DIR)/sys_boot_none.h @@ -682,7 +796,9 @@ sys_netbsd.$O: $(SRC_DIR)/sys_netbsd.c sys_netbsd.$O: $(BLD_TOP)config.h sys_netbsd.$O: $(SRC_TOP)prologue.h sys_netbsd.$O: $(SRC_DIR)/misc.h +sys_netbsd.$O: $(SRC_DIR)/bitmask.h sys_netbsd.$O: $(SRC_DIR)/keyboard.h +sys_netbsd.$O: $(SRC_DIR)/keycodes.h sys_netbsd.$O: $(SRC_DIR)/system.h sys_netbsd.$O: $(SRC_DIR)/sys_prog_none.h sys_netbsd.$O: $(SRC_DIR)/sys_boot_none.h @@ -701,7 +817,9 @@ sys_openbsd.$O: $(SRC_DIR)/sys_openbsd.c sys_openbsd.$O: $(BLD_TOP)config.h sys_openbsd.$O: $(SRC_TOP)prologue.h sys_openbsd.$O: $(SRC_DIR)/misc.h +sys_openbsd.$O: $(SRC_DIR)/bitmask.h sys_openbsd.$O: $(SRC_DIR)/keyboard.h +sys_openbsd.$O: $(SRC_DIR)/keycodes.h sys_openbsd.$O: $(SRC_DIR)/system.h sys_openbsd.$O: $(SRC_DIR)/sys_prog_none.h sys_openbsd.$O: $(SRC_DIR)/sys_boot_none.h @@ -720,7 +838,9 @@ sys_osf.$O: $(SRC_DIR)/sys_osf.c sys_osf.$O: $(BLD_TOP)config.h sys_osf.$O: $(SRC_TOP)prologue.h sys_osf.$O: $(SRC_DIR)/misc.h +sys_osf.$O: $(SRC_DIR)/bitmask.h sys_osf.$O: $(SRC_DIR)/keyboard.h +sys_osf.$O: $(SRC_DIR)/keycodes.h sys_osf.$O: $(SRC_DIR)/system.h sys_osf.$O: $(SRC_DIR)/sys_prog_none.h sys_osf.$O: $(SRC_DIR)/sys_boot_none.h @@ -738,7 +858,9 @@ sys_qnx.$O: $(SRC_DIR)/sys_qnx.c sys_qnx.$O: $(BLD_TOP)config.h sys_qnx.$O: $(SRC_TOP)prologue.h sys_qnx.$O: $(SRC_DIR)/misc.h +sys_qnx.$O: $(SRC_DIR)/bitmask.h sys_qnx.$O: $(SRC_DIR)/keyboard.h +sys_qnx.$O: $(SRC_DIR)/keycodes.h sys_qnx.$O: $(SRC_DIR)/system.h sys_qnx.$O: $(SRC_DIR)/sys_prog_none.h sys_qnx.$O: $(SRC_DIR)/sys_boot_none.h @@ -757,7 +879,9 @@ sys_skeleton.$O: $(SRC_DIR)/sys_skeleton.c sys_skeleton.$O: $(BLD_TOP)config.h sys_skeleton.$O: $(SRC_TOP)prologue.h sys_skeleton.$O: $(SRC_DIR)/misc.h +sys_skeleton.$O: $(SRC_DIR)/bitmask.h sys_skeleton.$O: $(SRC_DIR)/keyboard.h +sys_skeleton.$O: $(SRC_DIR)/keycodes.h sys_skeleton.$O: $(SRC_DIR)/system.h sys_skeleton.$O: $(SRC_DIR)/sys_prog_none.h sys_skeleton.$O: $(SRC_DIR)/sys_boot_none.h @@ -775,7 +899,9 @@ sys_solaris.$O: $(SRC_DIR)/sys_solaris.c sys_solaris.$O: $(BLD_TOP)config.h sys_solaris.$O: $(SRC_TOP)prologue.h sys_solaris.$O: $(SRC_DIR)/misc.h +sys_solaris.$O: $(SRC_DIR)/bitmask.h sys_solaris.$O: $(SRC_DIR)/keyboard.h +sys_solaris.$O: $(SRC_DIR)/keycodes.h sys_solaris.$O: $(SRC_DIR)/system.h sys_solaris.$O: $(SRC_DIR)/sys_boot_none.h sys_solaris.$O: $(SRC_DIR)/sys_exec_unix.h @@ -793,7 +919,9 @@ sys_windows.$O: $(SRC_DIR)/sys_windows.c sys_windows.$O: $(BLD_TOP)config.h sys_windows.$O: $(SRC_TOP)prologue.h sys_windows.$O: $(SRC_DIR)/misc.h +sys_windows.$O: $(SRC_DIR)/bitmask.h sys_windows.$O: $(SRC_DIR)/keyboard.h +sys_windows.$O: $(SRC_DIR)/keycodes.h sys_windows.$O: $(SRC_DIR)/system.h sys_windows.$O: $(SRC_DIR)/sys_windows.h sys_windows.$O: $(SRC_DIR)/sys_prog_windows.h @@ -814,70 +942,20 @@ sys_windows.$O: $(SRC_DIR)/sys_shlib_windows.h sys_windows.$O: $(SRC_DIR)/sys_pcm_windows.h sys_windows.$O: $(SRC_DIR)/sys_midi_windows.h -# Dependencies for tbl.$O: -tbl.$O: $(SRC_DIR)/tbl.c -tbl.$O: $(BLD_TOP)config.h -tbl.$O: $(SRC_TOP)prologue.h -tbl.$O: $(SRC_DIR)/misc.h -tbl.$O: $(SRC_DIR)/charset.h -tbl.$O: $(SRC_DIR)/lock.h -tbl.$O: $(SRC_DIR)/brl.h -tbl.$O: $(SRC_DIR)/brldefs.h -tbl.$O: $(SRC_DIR)/driver.h -tbl.$O: $(SRC_DIR)/tbl.h -tbl.$O: $(SRC_DIR)/tbl_internal.h - # Dependencies for tbl2hex.$O: tbl2hex.$O: $(SRC_DIR)/tbl2hex.c tbl2hex.$O: $(BLD_TOP)config.h tbl2hex.$O: $(SRC_TOP)prologue.h tbl2hex.$O: $(SRC_DIR)/options.h tbl2hex.$O: $(SRC_DIR)/misc.h -tbl2hex.$O: $(SRC_DIR)/brl.h -tbl2hex.$O: $(SRC_DIR)/brldefs.h -tbl2hex.$O: $(SRC_DIR)/driver.h -tbl2hex.$O: $(SRC_DIR)/tbl.h - -# Dependencies for tbl_gnome.$O: -tbl_gnome.$O: $(SRC_DIR)/tbl_gnome.c -tbl_gnome.$O: $(BLD_TOP)config.h -tbl_gnome.$O: $(SRC_TOP)prologue.h -tbl_gnome.$O: $(SRC_DIR)/misc.h -tbl_gnome.$O: $(SRC_DIR)/charset.h -tbl_gnome.$O: $(SRC_DIR)/lock.h -tbl_gnome.$O: $(SRC_DIR)/brl.h -tbl_gnome.$O: $(SRC_DIR)/brldefs.h -tbl_gnome.$O: $(SRC_DIR)/driver.h -tbl_gnome.$O: $(SRC_DIR)/tbl.h -tbl_gnome.$O: $(SRC_DIR)/tbl_internal.h - -# Dependencies for tbl_native.$O: -tbl_native.$O: $(SRC_DIR)/tbl_native.c -tbl_native.$O: $(BLD_TOP)config.h -tbl_native.$O: $(SRC_TOP)prologue.h -tbl_native.$O: $(SRC_DIR)/brl.h -tbl_native.$O: $(SRC_DIR)/brldefs.h -tbl_native.$O: $(SRC_DIR)/driver.h -tbl_native.$O: $(SRC_DIR)/tbl.h -tbl_native.$O: $(SRC_DIR)/tbl_internal.h - -# Dependencies for tbltest.$O: -tbltest.$O: $(SRC_DIR)/tbltest.c -tbltest.$O: $(BLD_TOP)config.h -tbltest.$O: $(SRC_TOP)prologue.h -tbltest.$O: $(SRC_DIR)/program.h -tbltest.$O: $(SRC_DIR)/options.h -tbltest.$O: $(SRC_DIR)/misc.h -tbltest.$O: $(SRC_DIR)/brl.h -tbltest.$O: $(SRC_DIR)/brldefs.h -tbltest.$O: $(SRC_DIR)/driver.h -tbltest.$O: $(SRC_DIR)/charset.h -tbltest.$O: $(SRC_DIR)/lock.h -tbltest.$O: $(SRC_DIR)/tbl.h -tbltest.$O: $(SRC_DIR)/tbl_internal.h -tbltest.$O: brlapi.h -tbltest.$O: brlapi_constants.h -tbltest.$O: $(SRC_DIR)/brlapi_keycodes.h +tbl2hex.$O: $(SRC_DIR)/ttb.h +tbl2hex.$O: $(SRC_DIR)/bitmask.h +tbl2hex.$O: $(SRC_DIR)/ttb_internal.h +tbl2hex.$O: $(SRC_DIR)/unicode.h +tbl2hex.$O: $(SRC_DIR)/atb.h +tbl2hex.$O: $(SRC_DIR)/atb_internal.h +tbl2hex.$O: $(SRC_DIR)/ctb.h +tbl2hex.$O: $(SRC_DIR)/ctb_internal.h # Dependencies for touch.$O: touch.$O: $(SRC_DIR)/touch.c @@ -888,13 +966,106 @@ touch.$O: $(SRC_DIR)/brl.h touch.$O: $(SRC_DIR)/brldefs.h touch.$O: $(SRC_DIR)/driver.h touch.$O: $(SRC_DIR)/touch.h +touch.$O: $(SRC_DIR)/bitmask.h +touch.$O: brlapi_constants.h +touch.$O: $(SRC_DIR)/brlapi_keycodes.h +touch.$O: $(SRC_DIR)/brltty.h +touch.$O: $(SRC_DIR)/cmd.h +touch.$O: $(SRC_DIR)/ctb.h +touch.$O: $(SRC_DIR)/keycodes.h +touch.$O: $(SRC_DIR)/ktb.h +touch.$O: $(SRC_DIR)/spk.h + +# Dependencies for ttb_compile.$O: +ttb_compile.$O: $(SRC_DIR)/ttb_compile.c +ttb_compile.$O: $(BLD_TOP)config.h +ttb_compile.$O: $(SRC_TOP)prologue.h +ttb_compile.$O: $(SRC_DIR)/misc.h +ttb_compile.$O: $(SRC_DIR)/datafile.h +ttb_compile.$O: $(SRC_DIR)/dataarea.h +ttb_compile.$O: $(SRC_DIR)/charset.h +ttb_compile.$O: $(SRC_DIR)/lock.h +ttb_compile.$O: $(SRC_DIR)/ttb.h +ttb_compile.$O: $(SRC_DIR)/bitmask.h +ttb_compile.$O: $(SRC_DIR)/ttb_internal.h +ttb_compile.$O: $(SRC_DIR)/unicode.h +ttb_compile.$O: $(SRC_DIR)/ttb_compile.h + +# Dependencies for ttb_gnome.$O: +ttb_gnome.$O: $(SRC_DIR)/ttb_gnome.c +ttb_gnome.$O: $(BLD_TOP)config.h +ttb_gnome.$O: $(SRC_TOP)prologue.h +ttb_gnome.$O: $(SRC_DIR)/ttb.h +ttb_gnome.$O: $(SRC_DIR)/bitmask.h +ttb_gnome.$O: $(SRC_DIR)/ttb_internal.h +ttb_gnome.$O: $(SRC_DIR)/unicode.h +ttb_gnome.$O: $(SRC_DIR)/datafile.h +ttb_gnome.$O: $(SRC_DIR)/ttb_compile.h + +# Dependencies for ttb_louis.$O: +ttb_louis.$O: $(SRC_DIR)/ttb_louis.c +ttb_louis.$O: $(BLD_TOP)config.h +ttb_louis.$O: $(SRC_TOP)prologue.h +ttb_louis.$O: $(SRC_DIR)/ttb.h +ttb_louis.$O: $(SRC_DIR)/bitmask.h +ttb_louis.$O: $(SRC_DIR)/ttb_internal.h +ttb_louis.$O: $(SRC_DIR)/unicode.h +ttb_louis.$O: $(SRC_DIR)/datafile.h +ttb_louis.$O: $(SRC_DIR)/ttb_compile.h + +# Dependencies for ttb_native.$O: +ttb_native.$O: $(SRC_DIR)/ttb_native.c +ttb_native.$O: $(BLD_TOP)config.h +ttb_native.$O: $(SRC_TOP)prologue.h +ttb_native.$O: $(SRC_DIR)/misc.h +ttb_native.$O: $(SRC_DIR)/ttb.h +ttb_native.$O: $(SRC_DIR)/bitmask.h +ttb_native.$O: $(SRC_DIR)/ttb_internal.h +ttb_native.$O: $(SRC_DIR)/unicode.h +ttb_native.$O: $(SRC_DIR)/datafile.h +ttb_native.$O: $(SRC_DIR)/ttb_compile.h + +# Dependencies for ttb_translate.$O: +ttb_translate.$O: $(SRC_DIR)/ttb_translate.c +ttb_translate.$O: $(BLD_TOP)config.h +ttb_translate.$O: $(SRC_TOP)prologue.h +ttb_translate.$O: $(SRC_DIR)/charset.h +ttb_translate.$O: $(SRC_DIR)/lock.h +ttb_translate.$O: $(SRC_DIR)/ttb.h +ttb_translate.$O: $(SRC_DIR)/bitmask.h +ttb_translate.$O: $(SRC_DIR)/ttb_internal.h +ttb_translate.$O: $(SRC_DIR)/unicode.h +ttb_translate.$O: $(SRC_DIR)/brldots.h +ttb_translate.$O: text.auto.h + +# Dependencies for ttbtest.$O: +ttbtest.$O: $(SRC_DIR)/ttbtest.c +ttbtest.$O: $(BLD_TOP)config.h +ttbtest.$O: $(SRC_TOP)prologue.h +ttbtest.$O: $(SRC_DIR)/program.h +ttbtest.$O: $(SRC_DIR)/options.h +ttbtest.$O: $(SRC_DIR)/misc.h +ttbtest.$O: $(SRC_DIR)/brldots.h +ttbtest.$O: $(SRC_DIR)/charset.h +ttbtest.$O: $(SRC_DIR)/lock.h +ttbtest.$O: $(SRC_DIR)/ttb.h +ttbtest.$O: $(SRC_DIR)/bitmask.h +ttbtest.$O: $(SRC_DIR)/ttb_internal.h +ttbtest.$O: $(SRC_DIR)/unicode.h +ttbtest.$O: $(SRC_DIR)/datafile.h +ttbtest.$O: $(SRC_DIR)/ttb_compile.h +ttbtest.$O: brlapi.h +ttbtest.$O: brlapi_constants.h +ttbtest.$O: $(SRC_DIR)/brlapi_keycodes.h # Dependencies for tunes.$O: tunes.$O: $(SRC_DIR)/tunes.c tunes.$O: $(BLD_TOP)config.h tunes.$O: $(SRC_TOP)prologue.h tunes.$O: $(SRC_DIR)/misc.h +tunes.$O: $(SRC_DIR)/bitmask.h tunes.$O: $(SRC_DIR)/keyboard.h +tunes.$O: $(SRC_DIR)/keycodes.h tunes.$O: $(SRC_DIR)/system.h tunes.$O: $(SRC_DIR)/message.h tunes.$O: $(SRC_DIR)/brl.h @@ -905,6 +1076,7 @@ tunes.$O: $(SRC_DIR)/brlapi_keycodes.h tunes.$O: $(SRC_DIR)/brltty.h tunes.$O: $(SRC_DIR)/cmd.h tunes.$O: $(SRC_DIR)/ctb.h +tunes.$O: $(SRC_DIR)/ktb.h tunes.$O: $(SRC_DIR)/spk.h tunes.$O: $(SRC_DIR)/tunes.h tunes.$O: $(SRC_DIR)/notes.h @@ -917,6 +1089,7 @@ tunetest.$O: $(SRC_DIR)/options.h tunetest.$O: $(SRC_DIR)/tunes.h tunetest.$O: $(SRC_DIR)/misc.h tunetest.$O: $(SRC_DIR)/defaults.h +tunetest.$O: $(SRC_DIR)/bitmask.h tunetest.$O: $(SRC_DIR)/brl.h tunetest.$O: brlapi_constants.h tunetest.$O: $(SRC_DIR)/brlapi_keycodes.h @@ -925,6 +1098,8 @@ tunetest.$O: $(SRC_DIR)/brltty.h tunetest.$O: $(SRC_DIR)/cmd.h tunetest.$O: $(SRC_DIR)/ctb.h tunetest.$O: $(SRC_DIR)/driver.h +tunetest.$O: $(SRC_DIR)/keycodes.h +tunetest.$O: $(SRC_DIR)/ktb.h tunetest.$O: $(SRC_DIR)/spk.h tunetest.$O: $(SRC_DIR)/message.h diff --git a/Programs/route.c b/Programs/route.c deleted file mode 100644 index 78538990ccaf94c922ab8f7ac4680044ad9a4d6f..0000000000000000000000000000000000000000 --- a/Programs/route.c +++ /dev/null @@ -1,368 +0,0 @@ -/* - * 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-2008 by The BRLTTY Developers. - * - * BRLTTY comes with ABSOLUTELY NO WARRANTY. - * - * This is free software, placed under the terms of the - * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. - * - * Web Page: http://mielke.cc/brltty/ - * - * This software is maintained by Dave Mielke . - */ - -#include "prologue.h" - -#include -#include -#include - -#include "misc.h" -#include "scr.h" -#include "route.h" - -/* - * These control the performance of cursor routing. The optimal settings - * will depend heavily on system load, etc. See the documentation for - * further details. - * NOTE: if you try to route the cursor to an invalid place, BRLTTY won't - * give up until the timeout has elapsed! - */ -#define CURSOR_ROUTING_NICENESS 10 /* niceness of cursor routing subprocess */ -#define CURSOR_ROUTING_INTERVAL 0 /* how often to check for response */ -#define CURSOR_ROUTING_TIMEOUT 2000 /* max wait for response to key press */ - -volatile pid_t routingProcess = 0; -volatile RoutingStatus routingStatus = ROUTE_NONE; - -typedef enum { - CRR_DONE, - CRR_NEAR, - CRR_FAIL -} CursorRoutingResult; - -typedef struct { - sigset_t signalMask; - - int screenNumber; - int screenRows; - int screenColumns; - - int verticalDelta; - ScreenCharacter *rowBuffer; - - int cury, curx; - int oldy, oldx; - - long timeSum; - int timeCount; -} CursorRoutingData; - -static int -readRow (CursorRoutingData *crd, ScreenCharacter *buffer, int row) { - if (!buffer) buffer = crd->rowBuffer; - return readScreen(0, row, crd->screenColumns, 1, buffer); -} - -static int -getCurrentPosition (CursorRoutingData *crd) { - ScreenDescription description; - describeScreen(&description); - - if (description.number != crd->screenNumber) { - crd->screenNumber = description.number; - return 0; - } - - if (!crd->rowBuffer) { - crd->screenRows = description.rows; - crd->screenColumns = description.cols; - crd->verticalDelta = 0; - if (!(crd->rowBuffer = calloc(crd->screenColumns, sizeof(*crd->rowBuffer)))) goto error; - } else if ((crd->screenRows != description.rows) || - (crd->screenColumns != description.cols)) { - goto error; - } - - crd->cury = description.posy - crd->verticalDelta; - crd->curx = description.posx; - if (readRow(crd, NULL, description.posy)) return 1; - -error: - crd->screenNumber = -1; - return 0; -} - -static void -insertCursorKey (CursorRoutingData *crd, ScreenKey key) { -#ifdef SIGCHLD - sigset_t oldMask; - sigprocmask(SIG_BLOCK, &crd->signalMask, &oldMask); -#endif /* SIGCHLD */ - - insertScreenKey(key); - -#ifdef SIGCHLD - sigprocmask(SIG_SETMASK, &oldMask, NULL); -#endif /* SIGCHLD */ -} - -static int -awaitCursorMotion (CursorRoutingData *crd, int direction) { - long timeout = crd->timeSum / crd->timeCount; - struct timeval start; - gettimeofday(&start, NULL); - - while (1) { - long time; - approximateDelay(CURSOR_ROUTING_INTERVAL); - time = millisecondsSince(&start) + 1; - - { - int row = crd->cury + crd->verticalDelta; - int bestRow = row; - int bestLength = 0; - - do { - ScreenCharacter buffer[crd->screenColumns]; - if (!readRow(crd, buffer, row)) break; - - { - int before = crd->curx; - int after = before; - - while (buffer[before].text == crd->rowBuffer[before].text) - if (--before < 0) - break; - - while (buffer[after].text == crd->rowBuffer[after].text) - if (++after >= crd->screenColumns) - break; - - { - int length = after - before - 1; - if (length > bestLength) { - bestRow = row; - if ((bestLength = length) == crd->screenColumns) break; - } - } - } - - row -= direction; - } while ((row >= 0) && (row < crd->screenRows)); - - crd->verticalDelta = bestRow - crd->cury; - } - - crd->oldy = crd->cury; - crd->oldx = crd->curx; - if (!getCurrentPosition(crd)) return 0; - - if ((crd->cury != crd->oldy) || (crd->curx != crd->oldx)) { - crd->timeSum += time * 8; - crd->timeCount += 1; - break; - } - - if (time > timeout) break; - } - - return 1; -} - -static CursorRoutingResult -adjustCursorPosition (CursorRoutingData *crd, int where, int trgy, int trgx, ScreenKey forward, ScreenKey backward) { - while (1) { - int dify = trgy - crd->cury; - int difx = (trgx < 0)? 0: (trgx - crd->curx); - int dir; - - /* determine which direction the cursor needs to move in */ - if (dify) { - dir = (dify > 0)? 1: -1; - } else if (difx) { - dir = (difx > 0)? 1: -1; - } else { - return CRR_DONE; - } - - /* tell the cursor to move in the needed direction */ - insertCursorKey(crd, ((dir > 0)? forward: backward)); - if (!awaitCursorMotion(crd, dir)) return CRR_FAIL; - - if (crd->cury != crd->oldy) { - if (crd->oldy != trgy) { - if (((crd->cury - crd->oldy) * dir) > 0) { - int dif = trgy - crd->cury; - if ((dif * dify) >= 0) continue; - if (where > 0) { - if (crd->cury > trgy) return CRR_NEAR; - } else if (where < 0) { - if (crd->cury < trgy) return CRR_NEAR; - } else { - if ((dif * dif) < (dify * dify)) return CRR_NEAR; - } - } - } - } else if (crd->curx != crd->oldx) { - if (((crd->curx - crd->oldx) * dir) > 0) { - int dif = trgx - crd->curx; - if (crd->cury != trgy) continue; - if ((dif * difx) >= 0) continue; - if (where > 0) { - if (crd->curx > trgx) return CRR_NEAR; - } else if (where < 0) { - if (crd->curx < trgx) return CRR_NEAR; - } else { - if ((dif * dif) < (difx * difx)) return CRR_NEAR; - } - } - } else { - return CRR_NEAR; - } - - /* We're getting farther from our target. Before giving up, let's - * try going back to the previous position since it was obviously - * the nearest ever reached. - */ - insertCursorKey(crd, ((dir > 0)? backward: forward)); - return awaitCursorMotion(crd, -dir)? CRR_NEAR: CRR_FAIL; - } -} - -static CursorRoutingResult -adjustCursorHorizontally (CursorRoutingData *crd, int where, int row, int column) { - return adjustCursorPosition(crd, where, row, column, SCR_KEY_CURSOR_RIGHT, SCR_KEY_CURSOR_LEFT); -} - -static CursorRoutingResult -adjustCursorVertically (CursorRoutingData *crd, int where, int row) { - return adjustCursorPosition(crd, where, row, -1, SCR_KEY_CURSOR_DOWN, SCR_KEY_CURSOR_UP); -} - -static RoutingStatus -doCursorRouting (int column, int row, int screen) { - CursorRoutingData crd; - -#ifdef SIGCHLD - /* Set up the signal mask. */ - sigemptyset(&crd.signalMask); - sigaddset(&crd.signalMask, SIGUSR1); - sigprocmask(SIG_UNBLOCK, &crd.signalMask, NULL); -#endif /* SIGCHLD */ - - /* initialize the routing data structure */ - crd.screenNumber = screen; - crd.rowBuffer = NULL; - crd.timeSum = CURSOR_ROUTING_TIMEOUT; - crd.timeCount = 1; - - if (getCurrentPosition(&crd)) { - if (column < 0) { - adjustCursorVertically(&crd, 0, row); - } else { - if (adjustCursorVertically(&crd, -1, row) != CRR_FAIL) - if (adjustCursorHorizontally(&crd, 0, row, column) == CRR_NEAR) - if (crd.cury < row) - if (adjustCursorVertically(&crd, 1, crd.cury+1) != CRR_FAIL) - adjustCursorHorizontally(&crd, 0, row, column); - } - } - - if (crd.rowBuffer) free(crd.rowBuffer); - - if (crd.screenNumber != screen) return ROUTE_ERROR; - if (crd.cury != row) return ROUTE_WRONG_ROW; - if ((column >= 0) && (crd.curx != column)) return ROUTE_WRONG_COLUMN; - return ROUTE_DONE; -} - -#ifdef SIGCHLD -static void -preCursorRouting (sigset_t *oldMask) { - sigset_t newMask; - - sigemptyset(&newMask); - sigaddset(&newMask, SIGCHLD); - sigprocmask(SIG_BLOCK, &newMask, oldMask); - - /* - * First, we must check if a subprocess is already running. - * If so, we send it a SIGUSR1 and wait for it to die. - * - * N.B. According to man 2 wait, setting SIGCHLD handler to SIG_IGN may mean - * that wait can't catch the dying child. - */ - if (routingProcess) { - kill(routingProcess, SIGUSR1); - do { - sigsuspend(oldMask); - } while (routingProcess); - routingStatus = ROUTE_NONE; - } -} - -static void -postCursorRouting (const sigset_t *oldMask) { - sigprocmask(SIG_SETMASK, oldMask, NULL); /* unblock SIGCHLD */ -} - -static void -stopCursorRouting (void) { - sigset_t originalSignalMask; - preCursorRouting(&originalSignalMask); - postCursorRouting(&originalSignalMask); -} - -static void -exitCursorRouting (void) { - stopCursorRouting(); -} -#endif /* SIGCHLD */ - -int -startCursorRouting (int column, int row, int screen) { -#ifdef SIGCHLD - int started = 0; - sigset_t originalSignalMask; - - preCursorRouting(&originalSignalMask); - switch (routingProcess = fork()) { - case 0: { /* child: cursor routing subprocess */ - int result = ROUTE_ERROR; - nice(CURSOR_ROUTING_NICENESS); - if (constructRoutingScreen()) - result = doCursorRouting(column, row, screen); /* terminate child process */ - destructRoutingScreen(); /* close second thread of screen reading */ - _exit(result); /* terminate child process */ - } - - case -1: /* error: fork() failed */ - LogError("fork"); - routingProcess = 0; - break; - - default: /* parent: continue while cursor is being routed */ - { - static int first = 1; - if (first) { - first = 0; - atexit(exitCursorRouting); - } - } - - started = 1; - break; - } - postCursorRouting(&originalSignalMask); - - return started; -#else /* SIGCHLD */ - routingStatus = doCursorRouting(column, row, screen); - return 1; -#endif /* SIGCHLD */ -} diff --git a/Programs/routing.c b/Programs/routing.c new file mode 100644 index 0000000000000000000000000000000000000000..cde2998eac64934026520190ca8d3907c0e56047 --- /dev/null +++ b/Programs/routing.c @@ -0,0 +1,397 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#include "prologue.h" + +#include +#include +#include +#include + +#ifdef SIGUSR1 +#include +#endif /* SIGUSR1 */ + +#include "misc.h" +#include "scr.h" +#include "routing.h" + +/* + * These control the performance of cursor routing. The optimal settings + * will depend heavily on system load, etc. See the documentation for + * further details. + * NOTE: if you try to route the cursor to an invalid place, BRLTTY won't + * give up until the timeout has elapsed! + */ +#define ROUTING_NICENESS 10 /* niceness of cursor routing subprocess */ +#define ROUTING_INTERVAL 0 /* how often to check for response */ +#define ROUTING_TIMEOUT 2000 /* max wait for response to key press */ + +typedef enum { + CRR_DONE, + CRR_NEAR, + CRR_FAIL +} RoutingResult; + +typedef struct { + sigset_t signalMask; + + int screenNumber; + int screenRows; + int screenColumns; + + int verticalDelta; + ScreenCharacter *rowBuffer; + + int cury, curx; + int oldy, oldx; + + long timeSum; + int timeCount; +} RoutingData; + +static int +readScreenRow (RoutingData *routing, ScreenCharacter *buffer, int row) { + if (!buffer) buffer = routing->rowBuffer; + return readScreen(0, row, routing->screenColumns, 1, buffer); +} + +static int +getCurrentPosition (RoutingData *routing) { + ScreenDescription description; + describeScreen(&description); + + if (description.number != routing->screenNumber) { + routing->screenNumber = description.number; + return 0; + } + + if (!routing->rowBuffer) { + routing->screenRows = description.rows; + routing->screenColumns = description.cols; + routing->verticalDelta = 0; + if (!(routing->rowBuffer = calloc(routing->screenColumns, sizeof(*routing->rowBuffer)))) goto error; + } else if ((routing->screenRows != description.rows) || + (routing->screenColumns != description.cols)) { + goto error; + } + + routing->cury = description.posy - routing->verticalDelta; + routing->curx = description.posx; + if (readScreenRow(routing, NULL, description.posy)) return 1; + +error: + routing->screenNumber = -1; + return 0; +} + +static void +insertCursorKey (RoutingData *routing, ScreenKey key) { +#ifdef SIGUSR1 + sigset_t oldMask; + sigprocmask(SIG_BLOCK, &routing->signalMask, &oldMask); +#endif /* SIGUSR1 */ + + insertScreenKey(key); + +#ifdef SIGUSR1 + sigprocmask(SIG_SETMASK, &oldMask, NULL); +#endif /* SIGUSR1 */ +} + +static int +awaitCursorMotion (RoutingData *routing, int direction) { + long timeout = routing->timeSum / routing->timeCount; + struct timeval start; + gettimeofday(&start, NULL); + + while (1) { + long time; + approximateDelay(ROUTING_INTERVAL); + time = millisecondsSince(&start) + 1; + + { + int row = routing->cury + routing->verticalDelta; + int bestRow = row; + int bestLength = 0; + + do { + ScreenCharacter buffer[routing->screenColumns]; + if (!readScreenRow(routing, buffer, row)) break; + + { + int before = routing->curx; + int after = before; + + while (buffer[before].text == routing->rowBuffer[before].text) + if (--before < 0) + break; + + while (buffer[after].text == routing->rowBuffer[after].text) + if (++after >= routing->screenColumns) + break; + + { + int length = after - before - 1; + if (length > bestLength) { + bestRow = row; + if ((bestLength = length) == routing->screenColumns) break; + } + } + } + + row -= direction; + } while ((row >= 0) && (row < routing->screenRows)); + + routing->verticalDelta = bestRow - routing->cury; + } + + routing->oldy = routing->cury; + routing->oldx = routing->curx; + if (!getCurrentPosition(routing)) return 0; + + if ((routing->cury != routing->oldy) || (routing->curx != routing->oldx)) { + routing->timeSum += time * 8; + routing->timeCount += 1; + break; + } + + if (time > timeout) break; + } + + return 1; +} + +static RoutingResult +adjustCursorPosition (RoutingData *routing, int where, int trgy, int trgx, ScreenKey forward, ScreenKey backward) { + while (1) { + int dify = trgy - routing->cury; + int difx = (trgx < 0)? 0: (trgx - routing->curx); + int dir; + + /* determine which direction the cursor needs to move in */ + if (dify) { + dir = (dify > 0)? 1: -1; + } else if (difx) { + dir = (difx > 0)? 1: -1; + } else { + return CRR_DONE; + } + + /* tell the cursor to move in the needed direction */ + insertCursorKey(routing, ((dir > 0)? forward: backward)); + if (!awaitCursorMotion(routing, dir)) return CRR_FAIL; + + if (routing->cury != routing->oldy) { + if (routing->oldy != trgy) { + if (((routing->cury - routing->oldy) * dir) > 0) { + int dif = trgy - routing->cury; + if ((dif * dify) >= 0) continue; + if (where > 0) { + if (routing->cury > trgy) return CRR_NEAR; + } else if (where < 0) { + if (routing->cury < trgy) return CRR_NEAR; + } else { + if ((dif * dif) < (dify * dify)) return CRR_NEAR; + } + } + } + } else if (routing->curx != routing->oldx) { + if (((routing->curx - routing->oldx) * dir) > 0) { + int dif = trgx - routing->curx; + if (routing->cury != trgy) continue; + if ((dif * difx) >= 0) continue; + if (where > 0) { + if (routing->curx > trgx) return CRR_NEAR; + } else if (where < 0) { + if (routing->curx < trgx) return CRR_NEAR; + } else { + if ((dif * dif) < (difx * difx)) return CRR_NEAR; + } + } + } else { + return CRR_NEAR; + } + + /* We're getting farther from our target. Before giving up, let's + * try going back to the previous position since it was obviously + * the nearest ever reached. + */ + insertCursorKey(routing, ((dir > 0)? backward: forward)); + return awaitCursorMotion(routing, -dir)? CRR_NEAR: CRR_FAIL; + } +} + +static RoutingResult +adjustCursorHorizontally (RoutingData *routing, int where, int row, int column) { + return adjustCursorPosition(routing, where, row, column, SCR_KEY_CURSOR_RIGHT, SCR_KEY_CURSOR_LEFT); +} + +static RoutingResult +adjustCursorVertically (RoutingData *routing, int where, int row) { + return adjustCursorPosition(routing, where, row, -1, SCR_KEY_CURSOR_DOWN, SCR_KEY_CURSOR_UP); +} + +static RoutingStatus +doRouting (int column, int row, int screen) { + RoutingData routing; + +#ifdef SIGUSR1 + /* Set up the signal mask. */ + sigemptyset(&routing.signalMask); + sigaddset(&routing.signalMask, SIGUSR1); + sigprocmask(SIG_UNBLOCK, &routing.signalMask, NULL); +#endif /* SIGUSR1 */ + + /* initialize the routing data structure */ + routing.screenNumber = screen; + routing.rowBuffer = NULL; + routing.timeSum = ROUTING_TIMEOUT; + routing.timeCount = 1; + + if (getCurrentPosition(&routing)) { + if (column < 0) { + adjustCursorVertically(&routing, 0, row); + } else { + if (adjustCursorVertically(&routing, -1, row) != CRR_FAIL) + if (adjustCursorHorizontally(&routing, 0, row, column) == CRR_NEAR) + if (routing.cury < row) + if (adjustCursorVertically(&routing, 1, routing.cury+1) != CRR_FAIL) + adjustCursorHorizontally(&routing, 0, row, column); + } + } + + if (routing.rowBuffer) free(routing.rowBuffer); + + if (routing.screenNumber != screen) return ROUTING_ERROR; + if (routing.cury != row) return ROUTING_WRONG_ROW; + if ((column >= 0) && (routing.curx != column)) return ROUTING_WRONG_COLUMN; + return ROUTING_DONE; +} + +#ifdef SIGUSR1 +#define NOT_ROUTING 0 + +static pid_t routingProcess = NOT_ROUTING; + +int +isRouting (void) { + return routingProcess != NOT_ROUTING; +} + +RoutingStatus +getRoutingStatus (int wait) { + if (isRouting()) { + int options = 0; + if (!wait) options |= WNOHANG; + + doWait: + { + int status; + pid_t process = waitpid(routingProcess, &status, options); + + if (process == routingProcess) { + routingProcess = NOT_ROUTING; + return WIFEXITED(status)? WEXITSTATUS(status): ROUTING_ERROR; + } + + if (process == -1) { + if (errno == EINTR) goto doWait; + + if (errno == ECHILD) { + routingProcess = NOT_ROUTING; + return ROUTING_ERROR; + } + + LogError("waitpid"); + } + } + } + + return ROUTING_NONE; +} + +static void +stopRouting (void) { + if (isRouting()) { + kill(routingProcess, SIGUSR1); + getRoutingStatus(1); + } +} + +static void +exitRouting (void) { + stopRouting(); +} +#else /* SIGUSR1 */ +static RoutingStatus routingStatus = ROUTING_NONE; + +RoutingStatus +getRoutingStatus (int wait) { + RoutingStatus status = routingStatus; + routingStatus = ROUTING_NONE; + return status; +} + +int +isRouting (void) { + return 0; +} +#endif /* SIGUSR1 */ + +int +startRouting (int column, int row, int screen) { +#ifdef SIGUSR1 + int started = 0; + + stopRouting(); + + switch (routingProcess = fork()) { + case 0: { /* child: cursor routing subprocess */ + int result = ROUTING_ERROR; + nice(ROUTING_NICENESS); + if (constructRoutingScreen()) + result = doRouting(column, row, screen); /* terminate child process */ + destructRoutingScreen(); /* close second thread of screen reading */ + _exit(result); /* terminate child process */ + } + + case -1: /* error: fork() failed */ + LogError("fork"); + routingProcess = NOT_ROUTING; + break; + + default: /* parent: continue while cursor is being routed */ + { + static int first = 1; + if (first) { + first = 0; + atexit(exitRouting); + } + } + + started = 1; + break; + } + + return started; +#else /* SIGUSR1 */ + routingStatus = doRouting(column, row, screen); + return 1; +#endif /* SIGUSR1 */ +} diff --git a/Programs/route.h b/Programs/routing.h similarity index 53% rename from Programs/route.h rename to Programs/routing.h index b94f339b7da069551407a29734dba7a1300e5e04..42b30e038d8042a3c1acf15c5fbd4956ce184f5b 100644 --- a/Programs/route.h +++ b/Programs/routing.h @@ -2,41 +2,41 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * * This software is maintained by Dave Mielke . */ -#ifndef BRLTTY_INCLUDED_ROUTE -#define BRLTTY_INCLUDED_ROUTE +#ifndef BRLTTY_INCLUDED_ROUTING +#define BRLTTY_INCLUDED_ROUTING #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ typedef enum { - ROUTE_NONE, - ROUTE_DONE, - ROUTE_WRONG_COLUMN, - ROUTE_WRONG_ROW, - ROUTE_ERROR + ROUTING_NONE, + ROUTING_DONE, + ROUTING_WRONG_COLUMN, + ROUTING_WRONG_ROW, + ROUTING_ERROR } RoutingStatus; -extern int startCursorRouting (int column, int row, int screen); - -extern volatile pid_t routingProcess; -extern volatile RoutingStatus routingStatus; +extern int startRouting (int column, int row, int screen); +extern int isRouting (void); +extern RoutingStatus getRoutingStatus (int wait); #ifdef __cplusplus } #endif /* __cplusplus */ -#endif /* BRLTTY_INCLUDED_ROUTE */ +#endif /* BRLTTY_INCLUDED_ROUTING */ diff --git a/Programs/scancodes.c b/Programs/scancodes.c index 3789685096ca2b176ebeccbb5ee63895adde8ebb..df84c009b08f760bf38b714dd38d4fec55ca7287 100644 --- a/Programs/scancodes.c +++ b/Programs/scancodes.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -20,6 +21,136 @@ #include "scancodes.h" #include "brldefs.h" +const unsigned char at2Xt[0X80] = { + [0X76] = 0X01, + [0X16] = 0X02, + [0X1E] = 0X03, + [0X26] = 0X04, + [0X25] = 0X05, + [0X2E] = 0X06, + [0X36] = 0X07, + [0X3D] = 0X08, + [0X3E] = 0X09, + [0X46] = 0X0A, + [0X45] = 0X0B, + [0X4E] = 0X0C, + [0X55] = 0X0D, + [0X66] = 0X0E, + [0X0D] = 0X0F, + [0X15] = 0X10, + [0X1D] = 0X11, + [0X24] = 0X12, + [0X2D] = 0X13, + [0X2C] = 0X14, + [0X35] = 0X15, + [0X3C] = 0X16, + [0X43] = 0X17, + [0X44] = 0X18, + [0X4D] = 0X19, + [0X54] = 0X1A, + [0X5B] = 0X1B, + [0X5A] = 0X1C, + [0X14] = 0X1D, + [0X1C] = 0X1E, + [0X1B] = 0X1F, + [0X23] = 0X20, + [0X2B] = 0X21, + [0X34] = 0X22, + [0X33] = 0X23, + [0X3B] = 0X24, + [0X42] = 0X25, + [0X4B] = 0X26, + [0X4C] = 0X27, + [0X52] = 0X28, + [0X0E] = 0X29, + [0X12] = 0X2A, + [0X5D] = 0X2B, + [0X1A] = 0X2C, + [0X22] = 0X2D, + [0X21] = 0X2E, + [0X2A] = 0X2F, + [0X32] = 0X30, + [0X31] = 0X31, + [0X3A] = 0X32, + [0X41] = 0X33, + [0X49] = 0X34, + [0X4A] = 0X35, + [0X59] = 0X36, + [0X7C] = 0X37, + [0X11] = 0X38, + [0X29] = 0X39, + [0X58] = 0X3A, + [0X05] = 0X3B, + [0X06] = 0X3C, + [0X04] = 0X3D, + [0X0C] = 0X3E, + [0X03] = 0X3F, + [0X0B] = 0X40, + [0X02] = 0X41, + [0X0A] = 0X42, + [0X01] = 0X43, + [0X09] = 0X44, + [0X77] = 0X45, + [0X7E] = 0X46, + [0X6C] = 0X47, + [0X75] = 0X48, + [0X7D] = 0X49, + [0X7B] = 0X4A, + [0X6B] = 0X4B, + [0X73] = 0X4C, + [0X74] = 0X4D, + [0X79] = 0X4E, + [0X69] = 0X4F, + [0X72] = 0X50, + [0X7A] = 0X51, + [0X70] = 0X52, + [0X71] = 0X53, + [0X7F] = 0X54, + [0X60] = 0X55, + [0X61] = 0X56, + [0X78] = 0X57, + [0X07] = 0X58, + [0X0F] = 0X59, + [0X17] = 0X5A, + [0X1F] = 0X5B, + [0X27] = 0X5C, + [0X2F] = 0X5D, + [0X37] = 0X5E, + [0X3F] = 0X5F, + [0X47] = 0X60, + [0X4F] = 0X61, + [0X56] = 0X62, + [0X5E] = 0X63, + [0X08] = 0X64, + [0X10] = 0X65, + [0X18] = 0X66, + [0X20] = 0X67, + [0X28] = 0X68, + [0X30] = 0X69, + [0X38] = 0X6A, + [0X40] = 0X6B, + [0X48] = 0X6C, + [0X50] = 0X6D, + [0X57] = 0X6E, + [0X6F] = 0X6F, + [0X13] = 0X70, + [0X19] = 0X71, + [0X39] = 0X72, + [0X51] = 0X73, + [0X53] = 0X74, + [0X5C] = 0X75, + [0X5F] = 0X76, + [0X62] = 0X77, + [0X63] = 0X78, + [0X64] = 0X79, + [0X65] = 0X7A, + [0X67] = 0X7B, + [0X68] = 0X7C, + [0X6A] = 0X7D, + [0X6D] = 0X7E, + [0X6E] = 0X7F +}; + typedef enum { MOD_RELEASE = 0, /* must be first */ MOD_WINDOWS_LEFT, diff --git a/Programs/scancodes.h b/Programs/scancodes.h index 241f99f4189191a8e782503e52c59530a42c3fd7..9fc3918565fcf49249d5645b6fb97e4b4d54940f 100644 --- a/Programs/scancodes.h +++ b/Programs/scancodes.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -22,6 +23,8 @@ extern "C" { #endif /* __cplusplus */ +extern const unsigned char at2Xt[0X80]; + extern void resetScanCodes (void); extern int atInterpretScanCode (int *command, unsigned char byte); extern int xtInterpretScanCode (int *command, unsigned char byte); diff --git a/Programs/scr.c b/Programs/scr.c index aed900bdee4bbfdb710a7a7197270f84835489ae..4599efc470cecdacd5b08f00cc82d9712ebd7259 100644 --- a/Programs/scr.c +++ b/Programs/scr.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/scr.h b/Programs/scr.h index 8714c622de34c8f2591e56c80a79b10b75ec0777..23080b83728e0ba853e81df86fbea31a08d95e5f 100644 --- a/Programs/scr.h +++ b/Programs/scr.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/scr_base.c b/Programs/scr_base.c index c44a2dcac893940349dbdf67cea797f16b83cb0d..614e317a5585a4127d23e8e0886da9eadc229ed3 100644 --- a/Programs/scr_base.c +++ b/Programs/scr_base.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/scr_base.h b/Programs/scr_base.h index 8fb43db01647084f5bba792c02ae15e2e7b7d750..1cd7e2ddaaeb3221208b93a7850cd090ebced498 100644 --- a/Programs/scr_base.h +++ b/Programs/scr_base.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/scr_driver.h b/Programs/scr_driver.h index cec32de77d5473ba562218d6c9911a10a9d82431..2434c57c32a81c19c5a8cffacdfd01e13fb2acd1 100644 --- a/Programs/scr_driver.h +++ b/Programs/scr_driver.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/scr_frozen.c b/Programs/scr_frozen.c index e5ffd3072055962994459a96c13b20a749308f71..3a643aa53bee4cf10db2d54148ddb0dc35fdb14b 100644 --- a/Programs/scr_frozen.c +++ b/Programs/scr_frozen.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/scr_frozen.h b/Programs/scr_frozen.h index 1847a8f4e359090c9c155fe29eae584e02797dad..e52cb41aaed698689e1d3edf1e4a294b66f12426 100644 --- a/Programs/scr_frozen.h +++ b/Programs/scr_frozen.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/scr_help.c b/Programs/scr_help.c index 20130c6af4204ffb994fc539eeace27d3e73f8ed..d1e9e850190d681340fb44bdc345ddd33e846e99 100644 --- a/Programs/scr_help.c +++ b/Programs/scr_help.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/scr_help.h b/Programs/scr_help.h index 728062cbe64712c3a1ad79110790e9dcbc281ece..c792205575063cf73888b728a5152974b922b718 100644 --- a/Programs/scr_help.h +++ b/Programs/scr_help.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/scr_main.c b/Programs/scr_main.c index 885951398684fbe57d34e7d5d1c7ac65bba424f3..22d7f609e50b25c38907506021651fa393b33c8c 100644 --- a/Programs/scr_main.c +++ b/Programs/scr_main.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/scr_main.h b/Programs/scr_main.h index 675b53a354491cb8c14b1d17cc2685086b3b8f3b..198b3ccd0e7913de45e1502d23f85ecddf751131 100644 --- a/Programs/scr_main.h +++ b/Programs/scr_main.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/scr_real.c b/Programs/scr_real.c index ae2fc32f0e475a09a2e389ea972c14c0abb4374e..32ef06863b656ca534c6770b2e7bbfd693ecd134 100644 --- a/Programs/scr_real.c +++ b/Programs/scr_real.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -31,7 +32,7 @@ #include "async.h" #include "scr.h" #include "scr_real.h" -#include "route.h" +#include "routing.h" #ifdef HAVE_LIBGPM #include @@ -96,7 +97,7 @@ gpmCloseConnection (int alreadyClosed) { static int routeCursor_RealScreen (int column, int row, int screen) { - return startCursorRouting(column, row, screen); + return startRouting(column, row, screen); } static int diff --git a/Programs/scr_real.h b/Programs/scr_real.h index 3d9b97c2ed4f5e77799b1160c967f8e6a3c4609d..de59003f859bdaf1b18184535a93e86720d9de57 100644 --- a/Programs/scr_real.h +++ b/Programs/scr_real.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/scrtest.c b/Programs/scrtest.c index 260579a770d62cc7efeffea9e8444feb268e8a13..8c71de80c9da03eec74358f1aad3f5506e5c2f1e 100644 --- a/Programs/scrtest.c +++ b/Programs/scrtest.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/serial.c b/Programs/serial.c index f523f06befa7ebb61072bc2e3c22af26d28859b4..77085df201cf2ec6941a91c4ea32ff821d4d2415 100644 --- a/Programs/serial.c +++ b/Programs/serial.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -162,6 +163,7 @@ struct SerialDeviceStruct { #ifdef __MINGW32__ HANDLE fileHandle; + int pending; #endif /* __MINGW32__ */ #ifdef __MSDOS__ @@ -922,6 +924,7 @@ serialCompareAttributes (const SerialAttributes *attributes, const SerialAttribu static int serialReadAttributes (SerialDevice *serial) { #if defined(__MINGW32__) + serial->currentAttributes.DCBlength = sizeof(serial->currentAttributes); if (GetCommState(serial->fileHandle, &serial->currentAttributes)) return 1; LogWindowsError("GetCommState"); #elif defined(__MSDOS__) @@ -1024,19 +1027,33 @@ serialAwaitInput (SerialDevice *serial, int timeout) { if (!serialFlushAttributes(serial)) return 0; #ifdef __MINGW32__ - COMMTIMEOUTS timeouts = {MAXDWORD, 0, timeout, 0, 0}; - DWORD bytesRead; - int ret; - char c; - if (!(SetCommTimeouts(serial->fileHandle, &timeouts))) { - LogWindowsError("SetCommTimeouts serialAwaitInput"); - return 0; + if (serial->pending != -1) return 1; + + { + COMMTIMEOUTS timeouts = {MAXDWORD, 0, timeout, 0, 0}; + DWORD bytesRead; + char c; + + if (!(SetCommTimeouts(serial->fileHandle, &timeouts))) { + LogWindowsError("SetCommTimeouts serialAwaitInput"); + setSystemErrno(); + return 0; + } + + if (!ReadFile(serial->fileHandle, &c, 1, &bytesRead, NULL)) { + LogWindowsError("ReadFile"); + setSystemErrno(); + return 0; + } + + if (bytesRead) { + serial->pending = (unsigned char)c; + return 1; + } } + errno = EAGAIN; - ret = ReadFile(serial->fileHandle, &c, 0, &bytesRead, NULL); - if (!ret) - LogWindowsError("ReadFile"); - return ret; + return 0; #else /* __MINGW32__ */ return awaitInput(serial->fileDescriptor, timeout); #endif /* __MINGW32__ */ @@ -1054,25 +1071,31 @@ serialReadChunk ( COMMTIMEOUTS timeouts = {MAXDWORD, 0, initialTimeout, 0, 0}; DWORD bytesRead; - if (!(SetCommTimeouts(serial->fileHandle, &timeouts))) { - LogWindowsError("SetCommTimeouts serialReadChunk1"); - setSystemErrno(); - return 0; - } + if (serial->pending != -1) { + * (unsigned char *) buffer = serial->pending; + serial->pending = -1; + bytesRead = 1; + } else { + if (!(SetCommTimeouts(serial->fileHandle, &timeouts))) { + LogWindowsError("SetCommTimeouts serialReadChunk1"); + setSystemErrno(); + return 0; + } - if (!ReadFile(serial->fileHandle, buffer+*offset, count, &bytesRead, NULL)) { - LogWindowsError("ReadFile"); - setSystemErrno(); - return 0; - } + if (!ReadFile(serial->fileHandle, buffer+*offset, count, &bytesRead, NULL)) { + LogWindowsError("ReadFile"); + setSystemErrno(); + return 0; + } - if (!bytesRead) { - errno = EAGAIN; - return 0; + if (!bytesRead) { + errno = EAGAIN; + return 0; + } } count -= bytesRead; - offset += bytesRead; + *offset += bytesRead; timeouts.ReadTotalTimeoutConstant = subsequentTimeout; if (!(SetCommTimeouts(serial->fileHandle, &timeouts))) { LogWindowsError("SetCommTimeouts serialReadChunk2"); @@ -1087,7 +1110,7 @@ serialReadChunk ( } count -= bytesRead; - offset += bytesRead; + *offset += bytesRead; } if (!count) return 1; @@ -1134,7 +1157,7 @@ serialWriteData ( } while (left && WriteFile(serial->fileHandle, data, left, &bytesWritten, NULL)) { - if (!bytesWritten) return size; + if (!bytesWritten) break; left -= bytesWritten; data += bytesWritten; } @@ -1152,10 +1175,20 @@ serialWriteData ( static int serialGetLines (SerialDevice *serial, SerialLines *lines) { #if defined(__MINGW32__) + DCB dcb; if (!GetCommModemStatus(serial->fileHandle, &serial->linesState)) { LogWindowsError("GetCommModemStatus"); return 0; } + dcb.DCBlength = sizeof(dcb); + if (!GetCommState(serial->fileHandle, &dcb)) { + LogWindowsError("GetCommState"); + return 0; + } + if (dcb.fRtsControl == RTS_CONTROL_ENABLE) + serial->linesState |= SERIAL_LINE_RTS; + if (dcb.fDtrControl == DTR_CONTROL_ENABLE) + serial->linesState |= SERIAL_LINE_DTR; #elif defined(__MSDOS__) serial->linesState = serialReadPort(serial, SERIAL_PORT_MSR) & 0XF0; #elif defined(TIOCMGET) @@ -1165,7 +1198,7 @@ serialGetLines (SerialDevice *serial, SerialLines *lines) { } #else /* get lines */ #warning getting modem lines not supported on this platform - serial->linesState = SERIAL_LINE_CTS | SERIAL_LINE_DSR | SERIAL_LINE_CAR; + serial->linesState = SERIAL_LINE_RTS | SERIAL_LINE_CTS | SERIAL_LINE_DTR | SERIAL_LINE_DSR | SERIAL_LINE_CAR; #endif /* get lines */ *lines = serial->linesState; @@ -1176,6 +1209,7 @@ static int serialSetLines (SerialDevice *serial, SerialLines high, SerialLines low) { #if defined(__MINGW32__) DCB dcb; + dcb.DCBlength = sizeof(dcb); if (GetCommState(serial->fileHandle, &dcb)) { if (low & SERIAL_LINE_RTS) dcb.fRtsControl = RTS_CONTROL_DISABLE; @@ -1377,6 +1411,10 @@ serialOpenDevice (const char *path) { serial->flowControlRunning = 0; #endif /* HAVE_POSIX_THREADS */ +#ifdef __MINGW32__ + serial->pending = -1; +#endif /* __MINGW32__ */ + LogPrint(LOG_DEBUG, "serial device opened: %s: fd=%d", device, #ifdef __MINGW32__ @@ -1407,7 +1445,12 @@ serialOpenDevice (const char *path) { close(serial->fileDescriptor); #endif /* __MINGW32__ */ } else { +#ifdef __MINGW32__ + LogWindowsError("CreateFile"); + LogPrint(LOG_ERR, "cannot open serial device: %s", device); +#else /* __MINGW32__ */ LogPrint(LOG_ERR, "cannot open serial device: %s: %s", device, strerror(errno)); +#endif /* __MINGW32__ */ } free(device); @@ -1547,6 +1590,10 @@ isSerialDevice (const char **path) { if (isDosDevice(*path, "COM")) return 1; #endif /* ALLOW_DOS_DEVICE_NAMES */ - if (isQualifiedDevice(path, "serial")) return 1; - return !isQualifiedDevice(path, NULL); + if (!isQualifiedDevice(path, "serial")) + if (isQualifiedDevice(path, NULL)) + return 0; + + if (!**path) *path = FIRST_SERIAL_DEVICE; + return 1; } diff --git a/Programs/spk.c b/Programs/spk.c index a847b1e8adc6fa8bed827f3e53ccddf86698a134..7a447d7032d9cf8a0da55bc56e8d4ab0b18b5333 100644 --- a/Programs/spk.c +++ b/Programs/spk.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -96,7 +97,7 @@ initializeSpeechSynthesizer (SpeechSynthesizer *spk) { void sayCharacters (SpeechSynthesizer *spk, const char *characters, size_t count, int mute) { if (count) { - unsigned char bytes[count * MB_LEN_MAX]; + unsigned char bytes[count * UTF8_LEN_MAX]; unsigned char *b = bytes; { diff --git a/Programs/spk.h b/Programs/spk.h index f525ddfdf22412cefd41800dace1ebf100bbc560..22a87dc9219ab2f81b4a2ed8d0163630008d771e 100644 --- a/Programs/spk.h +++ b/Programs/spk.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/spk_driver.h b/Programs/spk_driver.h index 1cd8f098402b2780bd8674a70356cab9a8bc4e26..7863ea341adfd4b571412e581bc9af95702b592d 100644 --- a/Programs/spk_driver.h +++ b/Programs/spk_driver.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/spktest.c b/Programs/spktest.c index 98aacc618e1e2ce80d9b36b4797e08e32d7857fa..2d9ebf64f0748ed1c99264ea74d6f01870d253fe 100644 --- a/Programs/spktest.c +++ b/Programs/spktest.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -197,7 +198,7 @@ main (int argc, char *argv[]) { if (speech->rate) speech->rate(&spk, speechRate); if (speech->volume) speech->volume(&spk, speechVolume); - if (opt_textString) { + if (opt_textString && *opt_textString) { sayString(&spk, opt_textString, 0); } else { processLines(stdin, sayLine, NULL); diff --git a/Programs/sys_beep_msdos.h b/Programs/sys_beep_msdos.h index 756830a593b14f9b4be33b6675b0d6f8b67eab44..455849825f15f4e422f30ff618f1fb4a55b997c8 100644 --- a/Programs/sys_beep_msdos.h +++ b/Programs/sys_beep_msdos.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_beep_none.h b/Programs/sys_beep_none.h index 93c18e1f1fcc370da4a95c5a00793ea8525661c8..35de8e3653898439f3cbda619ed74ba07ac62a1e 100644 --- a/Programs/sys_beep_none.h +++ b/Programs/sys_beep_none.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_beep_spkr.h b/Programs/sys_beep_spkr.h index f7d8e22ad088e77180b051dae1efdf867aea9c5b..79c04d9075a69ac9f2d687bb0737e2e5e8ac2a05 100644 --- a/Programs/sys_beep_spkr.h +++ b/Programs/sys_beep_spkr.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_beep_windows.h b/Programs/sys_beep_windows.h index 42a9cf1abefc67a83fda569f78ff1dc31861a80d..77c9856119323475b26a2c93d984bde36105fded 100644 --- a/Programs/sys_beep_windows.h +++ b/Programs/sys_beep_windows.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_beep_wskbd.h b/Programs/sys_beep_wskbd.h index 07821d413e6a5b9545f77f057b38992c9a424798..a87f42b09552301eb2beda01e4df55ea29043861 100644 --- a/Programs/sys_beep_wskbd.h +++ b/Programs/sys_beep_wskbd.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_boot_none.h b/Programs/sys_boot_none.h index c79cb005201d794bd98ec9cb2a5fd674c2f9b6fe..6ee4d79cb4895ad772cbd9d507b721f87bb3b000 100644 --- a/Programs/sys_boot_none.h +++ b/Programs/sys_boot_none.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_darwin.c b/Programs/sys_darwin.c index 20fe0e0ed08046b05534e8ec68a9c002a7c9e4db..eec93279f5dce82e8fbb91c28905165c883ef770 100644 --- a/Programs/sys_darwin.c +++ b/Programs/sys_darwin.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_exec_none.h b/Programs/sys_exec_none.h index a358c66e645f010c45ed7fc12ac3a193db243b8e..8445bcf9465738d4c780c75c09c7a03400a916c7 100644 --- a/Programs/sys_exec_none.h +++ b/Programs/sys_exec_none.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_exec_unix.h b/Programs/sys_exec_unix.h index 168b755caf091cbc83bfc2af4494c887cd1fcf6f..a12df14205bba57510812877de501b6e796245ee 100644 --- a/Programs/sys_exec_unix.h +++ b/Programs/sys_exec_unix.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_exec_windows.h b/Programs/sys_exec_windows.h index a5c553c105076d0d94cc27d2a3d5c4bb774b0277..e523a4b04643afaea79d2d25f46a61e88c7bf8ca 100644 --- a/Programs/sys_exec_windows.h +++ b/Programs/sys_exec_windows.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_freebsd.c b/Programs/sys_freebsd.c index 49235093c087b26b4dcff9fd589842a39701f6f9..5b41a28d3ed8e67314240a25fdc2a83638068c02 100644 --- a/Programs/sys_freebsd.c +++ b/Programs/sys_freebsd.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_hpux.c b/Programs/sys_hpux.c index e3f0bf6d848e0e2e310db6bc77593d11a362156c..28cf40e8c5a8ebc54d09a7e0af2f6d2314f38e70 100644 --- a/Programs/sys_hpux.c +++ b/Programs/sys_hpux.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_hurd.c b/Programs/sys_hurd.c index bcbb2975a42375536b563c2e6f84c9ea524390c1..e53ea8bf4e163519e590de163a5743133e0c6bf3 100644 --- a/Programs/sys_hurd.c +++ b/Programs/sys_hurd.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_kbd_linux.h b/Programs/sys_kbd_linux.h index 2db97f9a7854fb58ef3dbf206a50a52ac098afa7..74f00cc04687155aafd2452f1e61e2e6a85eab96 100644 --- a/Programs/sys_kbd_linux.h +++ b/Programs/sys_kbd_linux.h @@ -2,166 +2,870 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * * This software is maintained by Dave Mielke . */ +#ifdef HAVE_LINUX_INPUT_H #include #include #include #include - -#ifdef HAVE_LINUX_INPUT_H +#include +#include #include -#endif /* HAVE_LINUX_INPUT_H */ #include "async.h" -static int -getKeyboardDevice (const KeyboardProperties *requiredProperties) { - static int keyboardDevice = -1; +typedef struct { + KeyEventHandler *handleKeyEvent; + KeyboardProperties requiredProperties; +} KeyboardCommonData; -#ifdef HAVE_LINUX_INPUT_H - if (keyboardDevice == -1) { - const char root[] = "/dev/input"; - const size_t rootLength = strlen(root); - DIR *directory; +typedef struct { + KeyboardCommonData *kcd; + int fileDescriptor; + KeyboardProperties actualProperties; + + KeyCodeSet pressedKeys; + BITMASK(handledKeys, KEY_MAX+1, char); + unsigned justModifiers:1; - if ((directory = opendir(root))) { - struct dirent *entry; + struct input_event *keyEventBuffer; + unsigned int keyEventLimit; + unsigned int keyEventCount; +} KeyboardPrivateData; - while ((entry = readdir(directory))) { - const size_t nameLength = strlen(entry->d_name); - char path[rootLength + 1 + nameLength + 1]; - snprintf(path, sizeof(path), "%s/%s", root, entry->d_name); +static void +closeKeyboard (KeyboardPrivateData *kpd) { + close(kpd->fileDescriptor); + free(kpd); +} + +static size_t +handleKeyboardEvent (const AsyncInputResult *result) { + KeyboardPrivateData *kpd = result->data; + + if (result->error) { + LogPrint(LOG_DEBUG, "keyboard read error: fd=%d: %s", + kpd->fileDescriptor, strerror(result->error)); + closeKeyboard(kpd); + } else if (result->end) { + LogPrint(LOG_DEBUG, "keyboard end-of-file: fd=%d", kpd->fileDescriptor); + closeKeyboard(kpd); + } else { + const struct input_event *event = result->buffer; + + if (result->length >= sizeof(*event)) { + if (event->type == EV_KEY) { + int press = event->value != 0; + PressedKeysState state; { - struct stat status; - if (stat(path, &status) == -1) continue; - if (!S_ISCHR(status.st_mode)) continue; + static const KeyCode map[KEY_MAX] = { + [KEY_ESC] = KEY_FUNCTION_Escape, + [KEY_1] = KEY_SYMBOL_One_Exclamation, + [KEY_2] = KEY_SYMBOL_Two_At, + [KEY_3] = KEY_SYMBOL_Three_Number, + [KEY_4] = KEY_SYMBOL_Four_Dollar, + [KEY_5] = KEY_SYMBOL_Five_Percent, + [KEY_6] = KEY_SYMBOL_Six_Circumflex, + [KEY_7] = KEY_SYMBOL_Seven_Ampersand, + [KEY_8] = KEY_SYMBOL_Eight_Asterisk, + [KEY_9] = KEY_SYMBOL_Nine_LeftParenthesis, + [KEY_0] = KEY_SYMBOL_Zero_RightParenthesis, + [KEY_MINUS] = KEY_SYMBOL_Minus_Underscore, + [KEY_EQUAL] = KEY_SYMBOL_Equals_Plus, + [KEY_BACKSPACE] = KEY_FUNCTION_DeleteBackward, + [KEY_TAB] = KEY_FUNCTION_Tab, + [KEY_Q] = KEY_LETTER_Q, + [KEY_W] = KEY_LETTER_W, + [KEY_E] = KEY_LETTER_E, + [KEY_R] = KEY_LETTER_R, + [KEY_T] = KEY_LETTER_T, + [KEY_Y] = KEY_LETTER_Y, + [KEY_U] = KEY_LETTER_U, + [KEY_I] = KEY_LETTER_I, + [KEY_O] = KEY_LETTER_O, + [KEY_P] = KEY_LETTER_P, + [KEY_LEFTBRACE] = KEY_SYMBOL_LeftBracket_LeftBrace, + [KEY_RIGHTBRACE] = KEY_SYMBOL_RightBracket_RightBrace, + [KEY_ENTER] = KEY_FUNCTION_Enter, + [KEY_LEFTCTRL] = KEY_FUNCTION_ControlLeft, + [KEY_A] = KEY_LETTER_A, + [KEY_S] = KEY_LETTER_S, + [KEY_D] = KEY_LETTER_D, + [KEY_F] = KEY_LETTER_F, + [KEY_G] = KEY_LETTER_G, + [KEY_H] = KEY_LETTER_H, + [KEY_J] = KEY_LETTER_J, + [KEY_K] = KEY_LETTER_K, + [KEY_L] = KEY_LETTER_L, + [KEY_SEMICOLON] = KEY_SYMBOL_Semicolon_Colon, + [KEY_APOSTROPHE] = KEY_SYMBOL_Apostrophe_Quote, + [KEY_GRAVE] = KEY_SYMBOL_Grave_Tilde, + [KEY_LEFTSHIFT] = KEY_FUNCTION_ShiftLeft, + [KEY_BACKSLASH] = KEY_SYMBOL_Backslash_Bar, + [KEY_Z] = KEY_LETTER_Z, + [KEY_X] = KEY_LETTER_X, + [KEY_C] = KEY_LETTER_C, + [KEY_V] = KEY_LETTER_V, + [KEY_B] = KEY_LETTER_B, + [KEY_N] = KEY_LETTER_N, + [KEY_M] = KEY_LETTER_M, + [KEY_COMMA] = KEY_SYMBOL_Comma_Less, + [KEY_DOT] = KEY_SYMBOL_Period_Greater, + [KEY_SLASH] = KEY_SYMBOL_Slash_Question, + [KEY_RIGHTSHIFT] = KEY_FUNCTION_ShiftRight, + [KEY_KPASTERISK] = KEY_KEYPAD_Asterisk, + [KEY_LEFTALT] = KEY_FUNCTION_AltLeft, + [KEY_SPACE] = KEY_FUNCTION_Space, + [KEY_CAPSLOCK] = KEY_LOCK_Capitals, + [KEY_F1] = KEY_FUNCTION_F1, + [KEY_F2] = KEY_FUNCTION_F2, + [KEY_F3] = KEY_FUNCTION_F3, + [KEY_F4] = KEY_FUNCTION_F4, + [KEY_F5] = KEY_FUNCTION_F5, + [KEY_F6] = KEY_FUNCTION_F6, + [KEY_F7] = KEY_FUNCTION_F7, + [KEY_F8] = KEY_FUNCTION_F8, + [KEY_F9] = KEY_FUNCTION_F9, + [KEY_F10] = KEY_FUNCTION_F10, + [KEY_NUMLOCK] = KEY_LOCKING_Numbers, + [KEY_SCROLLLOCK] = KEY_LOCKING_Scroll, + [KEY_KP7] = KEY_KEYPAD_Seven_Home, + [KEY_KP8] = KEY_KEYPAD_Eight_ArrowUp, + [KEY_KP9] = KEY_KEYPAD_Nine_PageUp, + [KEY_KPMINUS] = KEY_KEYPAD_Minus, + [KEY_KP4] = KEY_KEYPAD_Four_ArrowLeft, + [KEY_KP5] = KEY_KEYPAD_Five, + [KEY_KP6] = KEY_KEYPAD_Six_ArrowRight, + [KEY_KPPLUS] = KEY_KEYPAD_Plus, + [KEY_KP1] = KEY_KEYPAD_One_End, + [KEY_KP2] = KEY_KEYPAD_Two_ArrowDown, + [KEY_KP3] = KEY_KEYPAD_Three_PageDown, + [KEY_KP0] = KEY_KEYPAD_Zero_Insert, + [KEY_KPDOT] = KEY_KEYPAD_Period_Delete, + /* [KEY_ZENKAKUHANKAKU] = KEY_..., */ + /* [KEY_102ND] = KEY_..., */ + [KEY_F11] = KEY_FUNCTION_F11, + [KEY_F12] = KEY_FUNCTION_F12, + /* [KEY_RO] = KEY_..., + [KEY_KATAKANA] = KEY_..., + [KEY_HIRAGANA] = KEY_..., + [KEY_HENKAN] = KEY_..., + [KEY_KATAKANAHIRAGANA] = KEY_..., + [KEY_MUHENKAN] = KEY_..., + [KEY_KPJPCOMMA] = KEY_..., */ + [KEY_KPENTER] = KEY_KEYPAD_Enter, + [KEY_RIGHTCTRL] = KEY_FUNCTION_ControlRight, + [KEY_KPSLASH] = KEY_KEYPAD_Slash, + [KEY_SYSRQ] = KEY_FUNCTION_SystemRequest, + [KEY_RIGHTALT] = KEY_FUNCTION_AltRight, + /* [KEY_LINEFEED] = KEY_..., */ + [KEY_HOME] = KEY_FUNCTION_Home, + [KEY_UP] = KEY_FUNCTION_ArrowUp, + [KEY_PAGEUP] = KEY_FUNCTION_PageUp, + [KEY_LEFT] = KEY_FUNCTION_ArrowLeft, + [KEY_RIGHT] = KEY_FUNCTION_ArrowRight, + [KEY_END] = KEY_FUNCTION_End, + [KEY_DOWN] = KEY_FUNCTION_ArrowDown, + [KEY_PAGEDOWN] = KEY_FUNCTION_PageDown, + [KEY_INSERT] = KEY_FUNCTION_Insert, + [KEY_DELETE] = KEY_FUNCTION_DeleteForward, + /* [KEY_MACRO] = KEY_..., */ + [KEY_MUTE] = KEY_FUNCTION_Mute, + [KEY_VOLUMEDOWN] = KEY_FUNCTION_VolumeDown, + [KEY_VOLUMEUP] = KEY_FUNCTION_VolumeUp, + [KEY_POWER] = KEY_FUNCTION_Power, + [KEY_KPEQUAL] = KEY_KEYPAD_Equals, + [KEY_KPPLUSMINUS] = KEY_KEYPAD_PlusMinus, + [KEY_PAUSE] = KEY_FUNCTION_Pause, + [KEY_KPCOMMA] = KEY_KEYPAD_Comma, + /* [KEY_HANGEUL] = KEY_..., + [KEY_HANGUEL] = KEY_..., + [KEY_HANJA] = KEY_..., + [KEY_YEN] = KEY_..., + [KEY_LEFTMETA] = KEY_..., + [KEY_RIGHTMETA] = KEY_..., + [KEY_COMPOSE] = KEY_..., */ + [KEY_STOP] = KEY_FUNCTION_Stop, + [KEY_AGAIN] = KEY_FUNCTION_Again, + /* [KEY_PROPS] = KEY_, */ + [KEY_UNDO] = KEY_FUNCTION_Undo, + /* [KEY_FRONT] = KEY_..., */ + [KEY_COPY] = KEY_FUNCTION_Copy, + [KEY_OPEN] = KEY_FUNCTION_Execute, + [KEY_PASTE] = KEY_FUNCTION_Paste, + [KEY_FIND] = KEY_FUNCTION_Find, + [KEY_CUT] = KEY_FUNCTION_Cut, + [KEY_HELP] = KEY_FUNCTION_Help, + [KEY_MENU] = KEY_FUNCTION_Menu, + /* [KEY_CALC] = KEY_..., + [KEY_SETUP] = KEY_..., + [KEY_SLEEP] = KEY_..., + [KEY_WAKEUP] = KEY_..., + [KEY_FILE] = KEY_..., + [KEY_SENDFILE] = KEY_..., + [KEY_DELETEFILE] = KEY_..., + [KEY_XFER] = KEY_..., + [KEY_PROG1] = KEY_..., + [KEY_PROG2] = KEY_..., + [KEY_WWW] = KEY_..., + [KEY_MSDOS] = KEY_..., + [KEY_COFFEE] = KEY_..., + [KEY_SCREENLOCK] = KEY_..., + [KEY_DIRECTION] = KEY_..., + [KEY_CYCLEWINDOWS] = KEY_..., + [KEY_MAIL] = KEY_..., + [KEY_BOOKMARKS] = KEY_..., + [KEY_COMPUTER] = KEY_..., + [KEY_BACK] = KEY_..., + [KEY_FORWARD] = KEY_..., + [KEY_CLOSECD] = KEY_..., + [KEY_EJECTCD] = KEY_..., + [KEY_EJECTCLOSECD] = KEY_..., + [KEY_NEXTSONG] = KEY_..., + [KEY_PLAYPAUSE] = KEY_..., + [KEY_PREVIOUSSONG] = KEY_..., + [KEY_STOPCD] = KEY_..., + [KEY_RECORD] = KEY_..., + [KEY_REWIND] = KEY_..., + [KEY_PHONE] = KEY_..., + [KEY_ISO] = KEY_..., + [KEY_CONFIG] = KEY_..., + [KEY_HOMEPAGE] = KEY_..., + [KEY_REFRESH] = KEY_..., + [KEY_EXIT] = KEY_..., + [KEY_MOVE] = KEY_..., + [KEY_EDIT] = KEY_..., + [KEY_SCROLLUP] = KEY_..., + [KEY_SCROLLDOWN] = KEY_..., */ + [KEY_KPLEFTPAREN] = KEY_KEYPAD_LeftParenthesis, + [KEY_KPRIGHTPAREN] = KEY_KEYPAD_RightParenthesis, + /* [KEY_NEW] = KEY_..., + [KEY_REDO] = KEY_..., */ + [KEY_F13] = KEY_FUNCTION_F13, + [KEY_F14] = KEY_FUNCTION_F14, + [KEY_F15] = KEY_FUNCTION_F15, + [KEY_F16] = KEY_FUNCTION_F16, + [KEY_F17] = KEY_FUNCTION_F17, + [KEY_F18] = KEY_FUNCTION_F18, + [KEY_F19] = KEY_FUNCTION_F19, + [KEY_F20] = KEY_FUNCTION_F20, + [KEY_F21] = KEY_FUNCTION_F21, + [KEY_F22] = KEY_FUNCTION_F22, + [KEY_F23] = KEY_FUNCTION_F23, + [KEY_F24] = KEY_FUNCTION_F24, + /* [KEY_PLAYCD] = KEY_..., + [KEY_PAUSECD] = KEY_..., + [KEY_PROG3] = KEY_..., + [KEY_PROG4] = KEY_..., + [KEY_SUSPEND] = KEY_..., + [KEY_CLOSE] = KEY_..., + [KEY_PLAY] = KEY_..., + [KEY_FASTFORWARD] = KEY_..., + [KEY_BASSBOOST] = KEY_..., + [KEY_PRINT] = KEY_..., + [KEY_HP] = KEY_..., + [KEY_CAMERA] = KEY_..., + [KEY_SOUND] = KEY_..., + [KEY_QUESTION] = KEY_..., + [KEY_EMAIL] = KEY_..., + [KEY_CHAT] = KEY_..., + [KEY_SEARCH] = KEY_..., + [KEY_CONNECT] = KEY_..., + [KEY_FINANCE] = KEY_..., + [KEY_SPORT] = KEY_..., + [KEY_SHOP] = KEY_..., + [KEY_ALTERASE] = KEY_..., + [KEY_CANCEL] = KEY_..., + [KEY_BRIGHTNESSDOWN] = KEY_..., + [KEY_BRIGHTNESSUP] = KEY_..., + [KEY_MEDIA] = KEY_..., + [KEY_SWITCHVIDEOMODE] = KEY_..., + [KEY_KBDILLUMTOGGLE] = KEY_..., + [KEY_KBDILLUMDOWN] = KEY_..., + [KEY_KBDILLUMUP] = KEY_..., + [KEY_SEND] = KEY_..., + [KEY_REPLY] = KEY_..., + [KEY_FORWARDMAIL] = KEY_..., + [KEY_SAVE] = KEY_..., + [KEY_DOCUMENTS] = KEY_..., + [KEY_BATTERY] = KEY_..., + [KEY_BLUETOOTH] = KEY_..., + [KEY_WLAN] = KEY_..., + [KEY_UWB] = KEY_..., + [KEY_UNKNOWN] = KEY_..., + [KEY_VIDEO_NEXT] = KEY_..., + [KEY_VIDEO_PREV] = KEY_..., + [KEY_BRIGHTNESS_CYCLE] = KEY_..., + [KEY_BRIGHTNESS_ZERO] = KEY_..., + [KEY_DISPLAY_OFF] = KEY_..., + [KEY_WIMAX] = KEY_..., + [BTN_MISC] = KEY_..., + [BTN_0] = KEY_..., + [BTN_1] = KEY_..., + [BTN_2] = KEY_..., + [BTN_3] = KEY_..., + [BTN_4] = KEY_..., + [BTN_5] = KEY_..., + [BTN_6] = KEY_..., + [BTN_7] = KEY_..., + [BTN_8] = KEY_..., + [BTN_9] = KEY_..., + [BTN_MOUSE] = KEY_..., + [BTN_LEFT] = KEY_..., + [BTN_RIGHT] = KEY_..., + [BTN_MIDDLE] = KEY_..., + [BTN_SIDE] = KEY_..., + [BTN_EXTRA] = KEY_..., + [BTN_FORWARD] = KEY_..., + [BTN_BACK] = KEY_..., + [BTN_TASK] = KEY_..., + [BTN_JOYSTICK] = KEY_..., + [BTN_TRIGGER] = KEY_..., + [BTN_THUMB] = KEY_..., + [BTN_THUMB2] = KEY_..., + [BTN_TOP] = KEY_..., + [BTN_TOP2] = KEY_..., + [BTN_PINKIE] = KEY_..., + [BTN_BASE] = KEY_..., + [BTN_BASE2] = KEY_..., + [BTN_BASE3] = KEY_..., + [BTN_BASE4] = KEY_..., + [BTN_BASE5] = KEY_..., + [BTN_BASE6] = KEY_..., + [BTN_DEAD] = KEY_..., + [BTN_GAMEPAD] = KEY_..., + [BTN_A] = KEY_..., + [BTN_B] = KEY_..., + [BTN_C] = KEY_..., + [BTN_X] = KEY_..., + [BTN_Y] = KEY_..., + [BTN_Z] = KEY_..., + [BTN_TL] = KEY_..., + [BTN_TR] = KEY_..., + [BTN_TL2] = KEY_..., + [BTN_TR2] = KEY_..., + [BTN_SELECT] = KEY_..., + [BTN_START] = KEY_..., + [BTN_MODE] = KEY_..., + [BTN_THUMBL] = KEY_..., + [BTN_THUMBR] = KEY_..., + [BTN_DIGI] = KEY_..., + [BTN_TOOL_PEN] = KEY_..., + [BTN_TOOL_RUBBER] = KEY_..., + [BTN_TOOL_BRUSH] = KEY_..., + [BTN_TOOL_PENCIL] = KEY_..., + [BTN_TOOL_AIRBRUSH] = KEY_..., + [BTN_TOOL_FINGER] = KEY_..., + [BTN_TOOL_MOUSE] = KEY_..., + [BTN_TOOL_LENS] = KEY_..., + [BTN_TOUCH] = KEY_..., + [BTN_STYLUS] = KEY_..., + [BTN_STYLUS2] = KEY_..., + [BTN_TOOL_DOUBLETAP] = KEY_..., + [BTN_TOOL_TRIPLETAP] = KEY_..., + [BTN_WHEEL] = KEY_..., + [BTN_GEAR_DOWN] = KEY_..., + [BTN_GEAR_UP] = KEY_..., + [KEY_OK] = KEY_..., */ + [KEY_SELECT] = KEY_FUNCTION_Select, + /* [KEY_GOTO] = KEY_..., */ + [KEY_CLEAR] = KEY_FUNCTION_Clear, + /* [KEY_POWER2] = KEY_..., + [KEY_OPTION] = KEY_..., + [KEY_INFO] = KEY_..., + [KEY_TIME] = KEY_..., + [KEY_VENDOR] = KEY_..., + [KEY_ARCHIVE] = KEY_..., + [KEY_PROGRAM] = KEY_..., + [KEY_CHANNEL] = KEY_..., + [KEY_FAVORITES] = KEY_..., + [KEY_EPG] = KEY_..., + [KEY_PVR] = KEY_..., + [KEY_MHP] = KEY_..., + [KEY_LANGUAGE] = KEY_..., + [KEY_TITLE] = KEY_..., + [KEY_SUBTITLE] = KEY_..., + [KEY_ANGLE] = KEY_..., + [KEY_ZOOM] = KEY_..., + [KEY_MODE] = KEY_..., + [KEY_KEYBOARD] = KEY_..., + [KEY_SCREEN] = KEY_..., + [KEY_PC] = KEY_..., + [KEY_TV] = KEY_..., + [KEY_TV2] = KEY_..., + [KEY_VCR] = KEY_..., + [KEY_VCR2] = KEY_..., + [KEY_SAT] = KEY_..., + [KEY_SAT2] = KEY_..., + [KEY_CD] = KEY_..., + [KEY_TAPE] = KEY_..., + [KEY_RADIO] = KEY_..., + [KEY_TUNER] = KEY_..., + [KEY_PLAYER] = KEY_..., + [KEY_TEXT] = KEY_..., + [KEY_DVD] = KEY_..., + [KEY_AUX] = KEY_..., + [KEY_MP3] = KEY_..., + [KEY_AUDIO] = KEY_..., + [KEY_VIDEO] = KEY_..., + [KEY_DIRECTORY] = KEY_..., + [KEY_LIST] = KEY_..., + [KEY_MEMO] = KEY_..., + [KEY_CALENDAR] = KEY_..., + [KEY_RED] = KEY_..., + [KEY_GREEN] = KEY_..., + [KEY_YELLOW] = KEY_..., + [KEY_BLUE] = KEY_..., + [KEY_CHANNELUP] = KEY_..., + [KEY_CHANNELDOWN] = KEY_..., + [KEY_FIRST] = KEY_..., + [KEY_LAST] = KEY_..., + [KEY_AB] = KEY_..., + [KEY_NEXT] = KEY_..., + [KEY_RESTART] = KEY_..., + [KEY_SLOW] = KEY_..., + [KEY_SHUFFLE] = KEY_..., + [KEY_BREAK] = KEY_..., + [KEY_PREVIOUS] = KEY_..., + [KEY_DIGITS] = KEY_..., + [KEY_TEEN] = KEY_..., + [KEY_TWEN] = KEY_..., + [KEY_VIDEOPHONE] = KEY_..., + [KEY_GAMES] = KEY_..., + [KEY_ZOOMIN] = KEY_..., + [KEY_ZOOMOUT] = KEY_..., + [KEY_ZOOMRESET] = KEY_..., + [KEY_WORDPROCESSOR] = KEY_..., + [KEY_EDITOR] = KEY_..., + [KEY_SPREADSHEET] = KEY_..., + [KEY_GRAPHICSEDITOR] = KEY_..., + [KEY_PRESENTATION] = KEY_..., + [KEY_DATABASE] = KEY_..., + [KEY_NEWS] = KEY_..., + [KEY_VOICEMAIL] = KEY_..., + [KEY_ADDRESSBOOK] = KEY_..., + [KEY_MESSENGER] = KEY_..., + [KEY_DISPLAYTOGGLE] = KEY_..., + [KEY_SPELLCHECK] = KEY_..., + [KEY_LOGOFF] = KEY_..., + [KEY_DOLLAR] = KEY_..., + [KEY_EURO] = KEY_..., + [KEY_FRAMEBACK] = KEY_..., + [KEY_FRAMEFORWARD] = KEY_..., + [KEY_CONTEXT_MENU] = KEY_..., + [KEY_MEDIA_REPEAT] = KEY_..., + [KEY_DEL_EOL] = KEY_..., + [KEY_DEL_EOS] = KEY_..., + [KEY_INS_LINE] = KEY_..., + [KEY_DEL_LINE] = KEY_..., + [KEY_FN] = KEY_..., + [KEY_FN_ESC] = KEY_..., + [KEY_FN_F1] = KEY_..., + [KEY_FN_F2] = KEY_..., + [KEY_FN_F3] = KEY_..., + [KEY_FN_F4] = KEY_..., + [KEY_FN_F5] = KEY_..., + [KEY_FN_F6] = KEY_..., + [KEY_FN_F7] = KEY_..., + [KEY_FN_F8] = KEY_..., + [KEY_FN_F9] = KEY_..., + [KEY_FN_F10] = KEY_..., + [KEY_FN_F11] = KEY_..., + [KEY_FN_F12] = KEY_..., + [KEY_FN_1] = KEY_..., + [KEY_FN_2] = KEY_..., + [KEY_FN_D] = KEY_..., + [KEY_FN_E] = KEY_..., + [KEY_FN_F] = KEY_..., + [KEY_FN_S] = KEY_..., + [KEY_FN_B] = KEY_..., + [KEY_BRL_DOT1] = KEY_..., + [KEY_BRL_DOT2] = KEY_..., + [KEY_BRL_DOT3] = KEY_..., + [KEY_BRL_DOT4] = KEY_..., + [KEY_BRL_DOT5] = KEY_..., + [KEY_BRL_DOT6] = KEY_..., + [KEY_BRL_DOT7] = KEY_..., + [KEY_BRL_DOT8] = KEY_..., + [KEY_BRL_DOT9] = KEY_..., + [KEY_BRL_DOT10] = KEY_..., + [KEY_MIN_INTERESTING] = KEY_... */ + }; + KeyCode code = map[event->code]; + + if (code) { + removeKeyCode(&kpd->pressedKeys, code); + state = kpd->kcd->handleKeyEvent(&kpd->pressedKeys, code, press); + if (press) addKeyCode(&kpd->pressedKeys, code); + } else { + state = PKS_NO; + LogPrint(LOG_INFO, "unmapped Linux keycode: %d", event->code); + } } { - int device; + typedef enum { + WKA_NONE, + WKA_CURRENT, + WKA_ALL + } WriteKeysAction; + WriteKeysAction action = WKA_NONE; + + if (press) { + kpd->justModifiers = state == PKS_MAYBE; + + switch (state) { + case PKS_NO: + action = WKA_ALL; + break; + + default: + if (kpd->keyEventCount == kpd->keyEventLimit) { + unsigned int newLimit = kpd->keyEventLimit? kpd->keyEventLimit<<1: 0X1; + struct input_event *newBuffer = realloc(kpd->keyEventBuffer, (newLimit * sizeof(*newBuffer))); + + if (newBuffer) { + kpd->keyEventBuffer = newBuffer; + kpd->keyEventLimit = newLimit; + } + } + + if (kpd->keyEventCount < kpd->keyEventLimit) { + kpd->keyEventBuffer[kpd->keyEventCount++] = *event; + BITMASK_SET(kpd->handledKeys, event->code); + } + + break; + } + } else if (kpd->justModifiers) { + kpd->justModifiers = 0; + action = WKA_ALL; + } else if (BITMASK_TEST(kpd->handledKeys, event->code)) { + struct input_event *to = kpd->keyEventBuffer; + const struct input_event *from = to; + unsigned int count = kpd->keyEventCount; + + while (count) { + if (from->code != event->code) + if (to != from) + *to++ = *from; + + from += 1, count -= 1; + } + + kpd->keyEventCount = to - kpd->keyEventBuffer; + BITMASK_CLEAR(kpd->handledKeys, event->code); + } else { + action = WKA_CURRENT; + } + + switch (action) { + case WKA_ALL: { + const struct input_event *keyEvent = kpd->keyEventBuffer; + + while (kpd->keyEventCount) { + writeKeyEvent(keyEvent->code, keyEvent->value); + keyEvent += 1, kpd->keyEventCount -= 1; + } + + memset(kpd->handledKeys, 0, sizeof(kpd->handledKeys)); + } + + case WKA_CURRENT: + writeKeyEvent(event->code, event->value); - LogPrint(LOG_DEBUG, "checking device: %s", path); - if ((device = open(path, O_RDONLY)) != -1) { - KeyboardProperties actualProperties = anyKeyboard; - actualProperties.device = path; + case WKA_NONE: + break; + } + } + } else { + writeInputEvent(event); + } + + return sizeof(*event); + } + } + + return 0; +} + +static int +monitorKeyboard (int device, KeyboardCommonData *kcd) { + struct stat status; + + if (fstat(device, &status) != -1) { + if (S_ISCHR(status.st_mode)) { + KeyboardPrivateData *kpd; + + if ((kpd = malloc(sizeof(*kpd)))) { + memset(kpd, 0, sizeof(*kpd)); + kpd->kcd = kcd; + kpd->fileDescriptor = device; + + kpd->keyEventBuffer = NULL; + kpd->keyEventLimit = 0; + kpd->keyEventCount = 0; + + kpd->actualProperties = anyKeyboard; + { + struct input_id identity; + if (ioctl(device, EVIOCGID, &identity) != -1) { + LogPrint(LOG_DEBUG, "input device identity: fd=%d: type=%04X vendor=%04X product=%04X version=%04X", + device, identity.bustype, identity.vendor, identity.product, identity.version); { - struct input_id identity; - if (ioctl(device, EVIOCGID, &identity) != -1) { - LogPrint(LOG_DEBUG, "device identity: %s type=%04X vendor=%04X product=%04X version=%04X", - path, identity.bustype, - identity.vendor, identity.product, identity.version); - - { - static const KeyboardType typeTable[] = { + static const KeyboardType typeTable[] = { #ifdef BUS_I8042 - [BUS_I8042] = KBD_TYPE_PS2, + [BUS_I8042] = KBD_TYPE_PS2, #endif /* BUS_I8042 */ #ifdef BUS_USB - [BUS_USB] = KBD_TYPE_USB, + [BUS_USB] = KBD_TYPE_USB, #endif /* BUS_USB */ #ifdef BUS_BLUETOOTH - [BUS_BLUETOOTH] = KBD_TYPE_Bluetooth, + [BUS_BLUETOOTH] = KBD_TYPE_Bluetooth, #endif /* BUS_BLUETOOTH */ - }; - - if (identity.bustype < ARRAY_COUNT(typeTable)) - actualProperties.type = typeTable[identity.bustype]; - } + }; - actualProperties.vendor = identity.vendor; - actualProperties.product = identity.product; - } else { - LogPrint(LOG_DEBUG, "cannot get device identity: %s: %s", path, strerror(errno)); - } - } - - if (checkKeyboardProperties(&actualProperties, requiredProperties)) { - LogPrint(LOG_DEBUG, "testing device: %s", path); - - if (hasInputEvent(device, EV_KEY, KEY_ENTER, KEY_MAX)) { - LogPrint(LOG_DEBUG, "keyboard opened: %s fd=%d", path, device); - keyboardDevice = device; - break; - } + if (identity.bustype < ARRAY_COUNT(typeTable)) + kpd->actualProperties.type = typeTable[identity.bustype]; } - close(device); + kpd->actualProperties.vendor = identity.vendor; + kpd->actualProperties.product = identity.product; } else { - LogPrint(LOG_DEBUG, "cannot open device: %s: %s", path, strerror(errno)); + LogPrint(LOG_DEBUG, "cannot get input device identity: fd=%d: %s", + device, strerror(errno)); + } + } + + if (checkKeyboardProperties(&kpd->actualProperties, &kcd->requiredProperties)) { + if (hasInputEvent(device, EV_KEY, KEY_ENTER, KEY_MAX)) { + if (asyncRead(device, sizeof(struct input_event), handleKeyboardEvent, kpd)) { +#ifdef EVIOCGRAB + ioctl(device, EVIOCGRAB, 1); +#endif /* EVIOCGRAB */ + + LogPrint(LOG_DEBUG, "keyboard found: fd=%d", device); + return 1; + } } } + + free(kpd); } + } + } else { + LogPrint(LOG_DEBUG, "cannot stat input device: fd=%d: %s", device, strerror(errno)); + } - closedir(directory); - } else { - LogPrint(LOG_DEBUG, "cannot open directory: %s", root); + return 0; +} + +static void +monitorCurrentKeyboards (KeyboardCommonData *kcd) { + const char *root = "/dev/input"; + const size_t rootLength = strlen(root); + DIR *directory; + + LogPrint(LOG_DEBUG, "searching for keyboards"); + if ((directory = opendir(root))) { + struct dirent *entry; + + while ((entry = readdir(directory))) { + const size_t nameLength = strlen(entry->d_name); + char path[rootLength + 1 + nameLength + 1]; + int device; + + snprintf(path, sizeof(path), "%s/%s", root, entry->d_name); + if ((device = open(path, O_RDONLY)) != -1) { + LogPrint(LOG_DEBUG, "input device opened: %s: fd=%d", path, device); + if (monitorKeyboard(device, kcd)) continue; + + close(device); + LogPrint(LOG_DEBUG, "input device closed: %s: fd=%d", path, device); + } else { + LogPrint(LOG_DEBUG, "cannot open input device: %s: %s", path, strerror(errno)); + } } + + closedir(directory); + } else { + LogPrint(LOG_DEBUG, "cannot open directory: %s: %s", root, strerror(errno)); } -#endif /* HAVE_LINUX_INPUT_H */ + LogPrint(LOG_DEBUG, "keyboard search complete"); +} + +#ifdef NETLINK_KOBJECT_UEVENT +typedef struct { + char *name; + int major; + int minor; + KeyboardCommonData *kcd; +} InputDeviceData; + +static void +doOpenInputDevice (void *data) { + InputDeviceData *idd = data; + int device = openCharacterDevice(idd->name, O_RDONLY, idd->major, idd->minor); - return keyboardDevice; + if (device != -1) { + LogPrint(LOG_DEBUG, "input device opened: %s: fd=%d", idd->name, device); + if (!monitorKeyboard(device, idd->kcd)) { + close(device); + LogPrint(LOG_DEBUG, "input device closed: %s: fd=%d", idd->name, device); + } + } else { + LogPrint(LOG_DEBUG, "cannot open input device: %s: %s", idd->name, strerror(errno)); + } + + free(idd->name); + free(idd); } static size_t -handleKeyEvent (const AsyncInputResult *result) { +handleKobjectUeventString (const AsyncInputResult *result) { if (result->error) { - LogPrint(LOG_DEBUG, "keyboard read error: %s", strerror(result->error)); + LogPrint(LOG_DEBUG, "netlink read error: %s", strerror(result->error)); } else if (result->end) { - LogPrint(LOG_DEBUG, "keyboard end-of-file"); + LogPrint(LOG_DEBUG, "netlink end-of-file"); } else { -#ifdef HAVE_LINUX_INPUT_H - const struct input_event *event = result->buffer; + const char *buffer = result->buffer; + const char *end = memchr(buffer, 0, result->length); - if (result->length >= sizeof(*event)) { - if (event->type == EV_KEY) { - writeKeyEvent(event->code, event->value); - } else { - writeInputEvent(event); + if (end) { + char *path = strchr(buffer, '@'); + + if (path) { + const char *action = buffer; + int actionLength = path++ - action; + + LogPrint(LOG_DEBUG, "OBJECT_UEVENT: %.*s %s", actionLength, action, path); + if (strncmp(action, "add", actionLength) == 0) { + int inputNumber, eventNumber; + + if (sscanf(path, "/class/input/input%d/event%d", &inputNumber, &eventNumber) == 2) { + static const char sysfsRoot[] = "/sys"; + static const char devName[] = "/dev"; + char sysfsPath[strlen(sysfsRoot) + strlen(path) + sizeof(devName)]; + int descriptor; + + snprintf(sysfsPath, sizeof(sysfsPath), "%s%s%s", sysfsRoot, path, devName); + if ((descriptor = open(sysfsPath, O_RDONLY)) != -1) { + char stringBuffer[0X10]; + int stringLength; + + if ((stringLength = read(descriptor, stringBuffer, sizeof(stringBuffer))) > 0) { + InputDeviceData *idd; + int ok = 0; + + if ((idd = malloc(sizeof(*idd)))) { + if (sscanf(stringBuffer, "%d:%d", &idd->major, &idd->minor) == 2) { + char eventDevice[0X40]; + snprintf(eventDevice, sizeof(eventDevice), "input/event%d", eventNumber); + + if ((idd->name = strdup(eventDevice))) { + idd->kcd = result->data; + if (asyncRelativeAlarm(1000, doOpenInputDevice, idd)) ok = 1; + + if (!ok) free(idd->name); + } + } + + if (!ok) free(idd); + } + } + + close(descriptor); + } + } + } } - return sizeof(*event); + return end - buffer + 1; } -#else /* HAVE_LINUX_INPUT_H */ - return result->length; -#endif /* HAVE_LINUX_INPUT_H */ } return 0; } -int -startKeyboardMonitor (const KeyboardProperties *keyboardProperties) { - int uinput = getUinputDevice(); +static int +getKobjectUeventSocket (void) { + static int netlinkSocket = -1; - if (uinput != -1) { - int keyboard = getKeyboardDevice(keyboardProperties); + if (netlinkSocket == -1) { + const struct sockaddr_nl socketAddress = { + .nl_family = AF_NETLINK, + .nl_pid = getpid(), + .nl_groups = 0XFFFFFFFF + }; - if (keyboard != -1) { - if (asyncRead(keyboard, sizeof(struct input_event), handleKeyEvent, NULL)) { -#ifdef EVIOCGRAB - ioctl(keyboard, EVIOCGRAB, 1); -#endif /* EVIOCGRAB */ - - return 1; + if ((netlinkSocket = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT)) != -1) { + if (bind(netlinkSocket, (const struct sockaddr *)&socketAddress, sizeof(socketAddress)) == -1) { + LogError("bind"); + close(netlinkSocket); + netlinkSocket = -1; } + } else { + LogError("socket"); } } + return netlinkSocket; +} +#endif /* NETLINK_KOBJECT_UEVENT */ + +static int +monitorKeyboardAdditions (KeyboardCommonData *kcd) { +#ifdef NETLINK_KOBJECT_UEVENT + int kobjectEventSocket = getKobjectUeventSocket(); + + if (kobjectEventSocket != -1) { + if (asyncRead(kobjectEventSocket, + 6+1+PATH_MAX+1, + handleKobjectUeventString, kcd)) + return 1; + + close(kobjectEventSocket); + } +#endif /* NETLINK_KOBJECT_UEVENT */ + + return 0; +} +#endif /* HAVE_LINUX_INPUT_H */ + +int +startKeyboardMonitor (const KeyboardProperties *properties, KeyEventHandler handleKeyEvent) { +#ifdef HAVE_LINUX_INPUT_H + if (getUinputDevice() != -1) { + KeyboardCommonData *kcd; + + if ((kcd = malloc(sizeof(*kcd)))) { + memset(kcd, 0, sizeof(*kcd)); + kcd->handleKeyEvent = handleKeyEvent; + kcd->requiredProperties = *properties; + + monitorCurrentKeyboards(kcd); + monitorKeyboardAdditions(kcd); + return 1; + } + } +#endif /* HAVE_LINUX_INPUT_H */ + return 0; } diff --git a/Programs/sys_kbd_none.h b/Programs/sys_kbd_none.h index b2377d5f6599a6f0e1d360e650674791384915eb..82ac402523104e958c13e9eb48a9d96dca0fe024 100644 --- a/Programs/sys_kbd_none.h +++ b/Programs/sys_kbd_none.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -18,6 +19,6 @@ #warning keyboard monitor support not available on this platform int -startKeyboardMonitor (const KeyboardProperties *keyboardProperties) { +startKeyboardMonitor (const KeyboardProperties *properties, KeyEventHandler handleKeyEvent) { return 0; } diff --git a/Programs/sys_kfreebsd.c b/Programs/sys_kfreebsd.c index 3521d5e0ed7afec6ce71aec68b3352f2868d11af..a6fdff05cea08cb9683e756fcfb9b71e8ff99358 100644 --- a/Programs/sys_kfreebsd.c +++ b/Programs/sys_kfreebsd.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_linux.c b/Programs/sys_linux.c index c87206f1db92ff97872c15b7d9e0ccfeccce5c1c..7b6c20fd90403dbd48c1b96f118f28e2b2dae82e 100644 --- a/Programs/sys_linux.c +++ b/Programs/sys_linux.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -26,6 +27,7 @@ #include "misc.h" #include "system.h" #include "sys_linux.h" +#include "bitmask.h" #ifdef HAVE_LINUX_INPUT_H #include @@ -34,7 +36,7 @@ static int hasInputEvent (int device, uint16_t type, uint16_t code, uint16_t max) { BITMASK(mask, max+1, long); - if (ioctl(device, EVIOCGBIT(type, max), mask) != -1) + if (ioctl(device, EVIOCGBIT(type, sizeof(mask)), mask) != -1) if (BITMASK_TEST(mask, code)) return 1; @@ -264,7 +266,7 @@ openCharacterDevice (const char *name, int flags, int major, int minor) { if (errno == ENOENT) { free(path); - if ((path = makeWritablePath(name))) { + if ((path = makeWritablePath(locatePathName(name)))) { if ((descriptor = open(path, flags)) != -1) { LogPrint(LOG_DEBUG, "device opened: %s: fd=%d", path, descriptor); } else { @@ -379,7 +381,9 @@ getUinputDevice (void) { return uinputDevice; } +#ifdef HAVE_LINUX_INPUT_H static BITMASK(pressedKeys, KEY_MAX+1, char); +#endif /* HAVE_LINUX_INPUT_H */ int writeKeyEvent (int key, int press) { @@ -406,10 +410,12 @@ writeKeyEvent (int key, int press) { void releaseAllKeys (void) { +#ifdef HAVE_LINUX_INPUT_H int key; for (key=0; key<=KEY_MAX; ++key) { if (BITMASK_TEST(pressedKeys, key)) { if (!writeKeyEvent(key, 0)) break; } } +#endif /* HAVE_LINUX_INPUT_H */ } diff --git a/Programs/sys_linux.h b/Programs/sys_linux.h index 6f37a7d874d7e682ad08c3516c496d7aab97e48f..911e0992ccfa718b01a929a43747b673ab628d76 100644 --- a/Programs/sys_linux.h +++ b/Programs/sys_linux.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_midi_alsa.h b/Programs/sys_midi_alsa.h index 15327e23ab02580389e475a5de1228a000ae7bff..18876b46350cfa301979f5a3d27accc440ac0a6e 100644 --- a/Programs/sys_midi_alsa.h +++ b/Programs/sys_midi_alsa.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_midi_darwin.h b/Programs/sys_midi_darwin.h index 39543c8b92976bfb43f18ab5a1ed755f55bd336a..7594c95ae50147189f6e80c26d48967be528a6f1 100644 --- a/Programs/sys_midi_darwin.h +++ b/Programs/sys_midi_darwin.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_midi_none.h b/Programs/sys_midi_none.h index 5661eb163e4fe9fb6e6b83f98ae5bc2e1f0cc7e3..7405af40aedc0b37fe429922661df5bd1340be56 100644 --- a/Programs/sys_midi_none.h +++ b/Programs/sys_midi_none.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_midi_oss.h b/Programs/sys_midi_oss.h index edd032611dae6d137c43a352ce46686c8a707ed7..0317ac86c7984f341bed67d868162b456698679d 100644 --- a/Programs/sys_midi_oss.h +++ b/Programs/sys_midi_oss.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_midi_windows.h b/Programs/sys_midi_windows.h index d68fd95ba10656865989e4e3704f53f6deec59bc..44aa0443d7aa1f3cd73ebfad21d0621b0e14ba56 100644 --- a/Programs/sys_midi_windows.h +++ b/Programs/sys_midi_windows.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_mount_linux.h b/Programs/sys_mount_linux.h index a0bfa2966f0193689ffeb2cc25a747b3233e499e..bd6910c98a660537f8b8e042faf3c1c537877990 100644 --- a/Programs/sys_mount_linux.h +++ b/Programs/sys_mount_linux.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_mount_none.h b/Programs/sys_mount_none.h index 04ae686cf2fe4403f12d81d7a21b478432a09c2a..534cfbadf6a8937e382ea954ab5d90bfc7cf5f45 100644 --- a/Programs/sys_mount_none.h +++ b/Programs/sys_mount_none.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_msdos.c b/Programs/sys_msdos.c index c8c86f0dd45a4c5539d249ef302161f0dc843ccc..86fe2693822e882d55702c32e61104f91187672f 100644 --- a/Programs/sys_msdos.c +++ b/Programs/sys_msdos.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -282,7 +283,7 @@ background(void) { __dpmi_int(DOS_INT, ®s); /* shouldn't be reached */ - LogPrint(LOG_ERR,"Installation failed\n"); + LogPrint(LOG_ERR,"Installation failed"); backgrounded = 0; } saveState(&intState); diff --git a/Programs/sys_msdos.h b/Programs/sys_msdos.h index 16672b36352b745edf8546ba84c9f9fe515c6556..b0328c1c9fa0ffe89d17a1c98bb373911df83a45 100644 --- a/Programs/sys_msdos.h +++ b/Programs/sys_msdos.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_netbsd.c b/Programs/sys_netbsd.c index 04fbf532c5f5f608971c3ed86e7414e8e00465f9..45ead4b61c4de0854e3a7d79426b6147acc35a69 100644 --- a/Programs/sys_netbsd.c +++ b/Programs/sys_netbsd.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_openbsd.c b/Programs/sys_openbsd.c index 04fbf532c5f5f608971c3ed86e7414e8e00465f9..45ead4b61c4de0854e3a7d79426b6147acc35a69 100644 --- a/Programs/sys_openbsd.c +++ b/Programs/sys_openbsd.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_osf.c b/Programs/sys_osf.c index e59620362871e3e6d18cd1871e2612715d12a8d5..8c4e477a8c178efb3bd6f860cc8b4b2965b5c179 100644 --- a/Programs/sys_osf.c +++ b/Programs/sys_osf.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_pcm_alsa.h b/Programs/sys_pcm_alsa.h index 2dbedc931a31d75fbbbc689643789525cf90824d..833d5dbb13b7fc1b575db3a24ea00a812fa72d1a 100644 --- a/Programs/sys_pcm_alsa.h +++ b/Programs/sys_pcm_alsa.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_pcm_audio.h b/Programs/sys_pcm_audio.h index 54f0db65b00df41e72c8b8444e0f896ed2085321..c1a5fa0e05af7f330025cb219bc122434e902eab 100644 --- a/Programs/sys_pcm_audio.h +++ b/Programs/sys_pcm_audio.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_pcm_none.h b/Programs/sys_pcm_none.h index ca8836415f2fbb249f8fbf0d633fcd899f2ad512..f3f60139169ee1fa3d83518f51a20a1514ba3a58 100644 --- a/Programs/sys_pcm_none.h +++ b/Programs/sys_pcm_none.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_pcm_oss.h b/Programs/sys_pcm_oss.h index 18a17745e9704dd6ebdd117347a1e83204af7145..e9f0a166b49daa1b7a3479f13b8f344696deab76 100644 --- a/Programs/sys_pcm_oss.h +++ b/Programs/sys_pcm_oss.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_pcm_qsa.h b/Programs/sys_pcm_qsa.h index 6ec1badfe24a529cf50f52360cd233dda9243263..f82de3d9da79ed761e0fb1bc241c4b68ec22a7ac 100644 --- a/Programs/sys_pcm_qsa.h +++ b/Programs/sys_pcm_qsa.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_pcm_windows.h b/Programs/sys_pcm_windows.h index 8d16a82b0b0ab7fbd13da091e22d8c650b3a4566..5ff2c65c008333260aba634196464c3e61275d9f 100644 --- a/Programs/sys_pcm_windows.h +++ b/Programs/sys_pcm_windows.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_ports_always.h b/Programs/sys_ports_always.h index 7ead5c2c851c53cd8d8e2c0a85138d3a4189e134..f397d765332b74dbc9c184628bd989a41db9d579 100644 --- a/Programs/sys_ports_always.h +++ b/Programs/sys_ports_always.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_ports_glibc.h b/Programs/sys_ports_glibc.h index 8ecd9b756c536797da1d233fa7bff2528f9a8784..4b9b7f6c96e9c6e5f51616b0e04eb802a801e0d7 100644 --- a/Programs/sys_ports_glibc.h +++ b/Programs/sys_ports_glibc.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_ports_kfreebsd.h b/Programs/sys_ports_kfreebsd.h index 917e63d6d623d50f03ab4c13aff1736579ae492e..15ccf1333ebe50e21cdef9ce9597eaee6afd6949 100644 --- a/Programs/sys_ports_kfreebsd.h +++ b/Programs/sys_ports_kfreebsd.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_ports_none.h b/Programs/sys_ports_none.h index b529d39fa212a7e4ade9b34dc7fea9de3f68063d..514ff9ea44c1b67e6f97833cc354c0608e3828fe 100644 --- a/Programs/sys_ports_none.h +++ b/Programs/sys_ports_none.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_ports_windows.h b/Programs/sys_ports_windows.h index c483c7d20c57c3620487fa64385541a49fec32f3..0a6bdd8afc999f1f26763c634d095efca4937e4e 100644 --- a/Programs/sys_ports_windows.h +++ b/Programs/sys_ports_windows.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_ports_x86.h b/Programs/sys_ports_x86.h index 3f867344db2a7e4ffa4036ae783e9b05df855674..18052c5d09a9f69900bae9819af52b437c46df0d 100644 --- a/Programs/sys_ports_x86.h +++ b/Programs/sys_ports_x86.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_prog_none.h b/Programs/sys_prog_none.h index 82f40d0bf2366e78974dc59d6df9d8be5104173f..21d036c6f75abc89320acc678deef1d93efa8d7b 100644 --- a/Programs/sys_prog_none.h +++ b/Programs/sys_prog_none.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_prog_windows.h b/Programs/sys_prog_windows.h index f7f45020c5b839819ab0bfa795b4663dbd0a4a5c..272f164deb634af8087bf269d0e7e62831098fe9 100644 --- a/Programs/sys_prog_windows.h +++ b/Programs/sys_prog_windows.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_qnx.c b/Programs/sys_qnx.c index 03235fd23435727b4f8fd1e2afec7f389f8df126..338a356fc58ea4b6767d9e44387d6f88f319468c 100644 --- a/Programs/sys_qnx.c +++ b/Programs/sys_qnx.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_shlib_dlfcn.h b/Programs/sys_shlib_dlfcn.h index 778eb87f02a84614d061d67ed47535fe1ed2875f..048d59c0165fdb8a2e825bb84b9bdc7acb844ed8 100644 --- a/Programs/sys_shlib_dlfcn.h +++ b/Programs/sys_shlib_dlfcn.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -42,6 +43,8 @@ int findSharedSymbol (void *object, const char *symbol, void *pointerAddress) { #ifdef HAVE_DLOPEN void **address = pointerAddress; + + dlerror(); /* clear any previous error condition */ *address = dlsym(object, symbol); { diff --git a/Programs/sys_shlib_dyld.h b/Programs/sys_shlib_dyld.h index 9ec01b74e71b140a90823cebd65ab569f00156fb..0bea2c0c20b0ac1f6a796632ddbaf9714c1b6992 100644 --- a/Programs/sys_shlib_dyld.h +++ b/Programs/sys_shlib_dyld.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_shlib_none.h b/Programs/sys_shlib_none.h index bb5ddf9750853b51b5fb35d8bf1bc1fda138449c..ebf3bdd70aaa09384318ff37e6a3300b6acfb22c 100644 --- a/Programs/sys_shlib_none.h +++ b/Programs/sys_shlib_none.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_shlib_windows.h b/Programs/sys_shlib_windows.h index 49068d945b217cb4fb60bfff025cd17436472a9e..081d3a7e323173eb8f4d9651d07ceeadefbbf89c 100644 --- a/Programs/sys_shlib_windows.h +++ b/Programs/sys_shlib_windows.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_skeleton.c b/Programs/sys_skeleton.c index 9ce5e65028b15a20df18aa18645cefc0d2b5dc63..a59c052175f59b95d280fa044fa17f70225e3b1f 100644 --- a/Programs/sys_skeleton.c +++ b/Programs/sys_skeleton.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_solaris.c b/Programs/sys_solaris.c index 3304827441a5f443d3891a8cc2fa6243c7295025..dd961ab37bfcaf60af9c4fd65fc5094ffc98e4d1 100644 --- a/Programs/sys_solaris.c +++ b/Programs/sys_solaris.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_windows.c b/Programs/sys_windows.c index acade369f522343b6e34a733cb695700e21630c7..f54326ae26e86cd4822c3526a13efa654f51d87a 100644 --- a/Programs/sys_windows.c +++ b/Programs/sys_windows.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/sys_windows.h b/Programs/sys_windows.h index 8e90a8fe67f12940543fd9870e22ae13b9e95588..d5e1b31aa1562f60a86be2239ca8363780c29b6c 100644 --- a/Programs/sys_windows.h +++ b/Programs/sys_windows.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/system.h b/Programs/system.h index 10ba71789841090f85fa3724633ff39eb907ceb7..016578cb172b300bd927e471a20c239aaab7701d 100644 --- a/Programs/system.h +++ b/Programs/system.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -98,8 +99,17 @@ extern void writePort1 (unsigned short int port, unsigned char value); #include "keyboard.h" +#include "keycodes.h" -extern int startKeyboardMonitor (const KeyboardProperties *keyboardProperties); +typedef enum { + PKS_NO, + PKS_MAYBE, + PKS_YES +} PressedKeysState; + +typedef PressedKeysState KeyEventHandler (const KeyCodeSet *modifiers, KeyCode code, int press); + +extern int startKeyboardMonitor (const KeyboardProperties *properties, KeyEventHandler handleKeyEvent); #ifdef __cplusplus diff --git a/Programs/tbl.c b/Programs/tbl.c deleted file mode 100644 index 5665e74e1794f78b2a92ba1bc17bb7df4b41dc16..0000000000000000000000000000000000000000 --- a/Programs/tbl.c +++ /dev/null @@ -1,267 +0,0 @@ -/* - * 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-2008 by The BRLTTY Developers. - * - * BRLTTY comes with ABSOLUTELY NO WARRANTY. - * - * This is free software, placed under the terms of the - * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. - * - * Web Page: http://mielke.cc/brltty/ - * - * This software is maintained by Dave Mielke . - */ - -#include "prologue.h" - -#include -#include -#include -#include -#include -#include - -#include "misc.h" -#include "charset.h" -#include "tbl.h" -#include "tbl_internal.h" - -const unsigned char tblDotBits[TBL_DOT_COUNT] = {BRL_DOT1, BRL_DOT2, BRL_DOT3, BRL_DOT4, BRL_DOT5, BRL_DOT6, BRL_DOT7, BRL_DOT8}; -const unsigned char tblDotNumbers[TBL_DOT_COUNT] = {'1', '2', '3', '4', '5', '6', '7', '8'}; -const unsigned char tblNoDots[] = {'0'}; -const unsigned char tblNoDotsSize = sizeof(tblNoDots); - -static void -tblReportProblem (TblInputData *input, int level, const char *format, va_list args) { - char message[0X100]; - formatInputError(message, sizeof(message), - input->file, (input->line? &input->line: NULL), - format, args); - LogPrint(level, "%s", message); -} - -void -tblReportError (TblInputData *input, const char *format, ...) { - va_list args; - va_start(args, format); - tblReportProblem(input, LOG_ERR, format, args); - va_end(args); - input->ok = 0; -} - -void -tblReportWarning (TblInputData *input, const char *format, ...) { - va_list args; - va_start(args, format); - tblReportProblem(input, LOG_WARNING, format, args); - va_end(args); -} - -int -tblIsEndOfLine (TblInputData *input) { - return !(*input->location && (*input->location != '#')); -} - -void -tblSkipSpace (TblInputData *input) { - while (*input->location && isspace(*input->location)) ++input->location; -} - -const unsigned char * -tblFindSpace (TblInputData *input) { - const unsigned char *location = input->location; - while (*location && !isspace(*location)) ++location; - return location; -} - -int -tblTestWord (const unsigned char *location, int length, const char *word) { - return (length == strlen(word)) && (strncasecmp((const char *)location, word, length) == 0); -} - -void -tblSetByte (TblInputData *input, unsigned char index, unsigned char cell) { - TblByteEntry *byte = &input->bytes[index]; - if (!byte->defined) { - byte->cell = cell; - byte->defined = 1; - } else { - tblReportError(input, "duplicate byte"); - } -} - -size_t -tblPutDots (unsigned char dots, TblDotsBuffer buffer) { - size_t count = 0; - if (dots) { - int dot; - for (dot=0; dotbytes[byteIndex]; - unsigned char *cell = &table[byteIndex]; - if (byte->defined) { - *cell = byte->cell; - - if (!dotsDefined[byte->cell]) { - dotsDefined[byte->cell] = 1; - } else if (input->options & TBL_DUPLICATE) { - TblDotsBuffer dotsBuffer; - tblPutDots(byte->cell, dotsBuffer); - tblReportWarning(input, "duplicate dots: %s [\\X%02X]", dotsBuffer, byteIndex); - } - } else { - int dotIndex; - *cell = input->undefined; - - for (dotIndex=0; dotIndexmasks[dotIndex]) { - unsigned char bit = tblDotBit(dotIndex); - if (input->undefined & bit) { - *cell &= ~bit; - } else { - *cell |= bit; - } - } - } - - if (input->options & TBL_UNDEFINED) { - tblReportWarning(input, "undefined byte: \\X%02X", byteIndex); - } - } - } - } - - if (input->options & TBL_UNUSED) { - int cell; - for (cell=0; cellinput; - - input->line++; - input->location = (const unsigned char *)line; - - return pld->process(input); -} - -int -tblProcessLines ( - const char *path, - FILE *file, - TranslationTable table, - TblLineProcessor process, - int options -) { - int ok = 0; - TblInputData input; - TblProcessLineData pld; - int opened = file != NULL; - - memset(&input, 0, sizeof(input)); - input.options = options; - input.ok = 1; - input.file = path; - input.line = 0; - input.undefined = 0XFF; - - memset(&pld, 0, sizeof(pld)); - pld.input = &input; - pld.process = process; - - if (opened || (file = openDataFile(path, "r"))) { - if (processLines(file, tblProcessLine, &pld)) { - input.line = 0; - - if (input.ok) { - tblSetTable(&input, table); - ok = 1; - } - } - - if (!opened) fclose(file); - } else { - tblReportError(&input, "open error: %s", strerror(errno)); - } - - return ok; -} - -int -loadTranslationTable (const char *path, FILE *file, TranslationTable table, int options) { - return tblLoad_Native(path, file, table, options); -} - -unsigned char -convertWcharToDots (TranslationTable table, wchar_t character) { - const wchar_t cellMask = 0XFF; - - switch (character & ~cellMask) { - case BRL_UC_ROW: - return character & cellMask; - - case 0XF000: - return table[character & cellMask]; - - default: { - int byte = convertWcharToChar(character); - if (byte == EOF) byte = '?'; - return table[byte]; - } - } -} - -void -reverseTranslationTable (TranslationTable from, TranslationTable to) { - int byte; - memset(to, 0, sizeof(TranslationTable)); - for (byte=TRANSLATION_TABLE_SIZE-1; byte>=0; byte--) to[from[byte]] = byte; -} - -static void -fixTranslationTablePath (char **path, const char *prefix) { - fixPath(path, TRANSLATION_TABLE_EXTENSION, prefix); -} - -void -fixTextTablePath (char **path) { - fixTranslationTablePath(path, TEXT_TABLE_PREFIX); -} - -void -fixAttributesTablePath (char **path) { - fixTranslationTablePath(path, ATTRIBUTES_TABLE_PREFIX); -} diff --git a/Programs/tbl.h b/Programs/tbl.h deleted file mode 100644 index ce3ab5d72053cd46ee4ae630e95bde60def00620..0000000000000000000000000000000000000000 --- a/Programs/tbl.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * 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-2008 by The BRLTTY Developers. - * - * BRLTTY comes with ABSOLUTELY NO WARRANTY. - * - * This is free software, placed under the terms of the - * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. - * - * Web Page: http://mielke.cc/brltty/ - * - * This software is maintained by Dave Mielke . - */ - -#ifndef BRLTTY_INCLUDED_TBL -#define BRLTTY_INCLUDED_TBL - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#include - -#include "brl.h" - -#define TBL_UNDEFINED 0X1 -#define TBL_DUPLICATE 0X2 -#define TBL_UNUSED 0X4 - -extern int loadTranslationTable ( - const char *path, - FILE *file, - TranslationTable table, - int options -); - -extern unsigned char convertWcharToDots (TranslationTable table, wchar_t character); - -extern void reverseTranslationTable (TranslationTable from, TranslationTable to); - -extern void fixTextTablePath (char **path); -extern void fixAttributesTablePath (char **path); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* BRLTTY_INCLUDED_TBL */ diff --git a/Programs/tbl2hex.c b/Programs/tbl2hex.c index b3b149d8c27121a4f3b44aec61741c1b5b5c982a..6800551b3fe9d1c2e12848b5f8aec9303d564b84 100644 --- a/Programs/tbl2hex.c +++ b/Programs/tbl2hex.c @@ -2,86 +2,244 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * * This software is maintained by Dave Mielke . */ -/* tbl2hex.c - filter to compile 256-byte table file into C code - * $Id: tbl2hex.c,v 1.3 1996/09/24 01:04:25 nn201 Exp $ - */ - #include "prologue.h" #include +#include +#include #include "options.h" #include "misc.h" -#include "brl.h" -#include "tbl.h" + +#include "ttb.h" +#include "ttb_internal.h" + +#include "atb.h" +#include "atb_internal.h" + +#include "ctb.h" +#include "ctb_internal.h" BEGIN_OPTION_TABLE(programOptions) END_OPTION_TABLE +typedef struct { + void *object; + const unsigned char *bytes; + size_t size; +} TableData; + +typedef struct { + const char *extension; + int (*load) (const char *path, TableData *data); + void (*unload) (TableData *data); +} TableEntry; + +static int +loadTextTable (const char *path, TableData *data) { + TextTable *table = compileTextTable(path); + if (!table) return 0; + + data->object = table; + data->bytes = table->header.bytes; + data->size = table->size; + return 1; +} + +static void +unloadTextTable (TableData *data) { + destroyTextTable(data->object); +} + +static int +loadAttributesTable (const char *path, TableData *data) { + AttributesTable *table = compileAttributesTable(path); + if (!table) return 0; + + data->object = table; + data->bytes = table->header.bytes; + data->size = table->size; + return 1; +} + +static void +unloadAttributesTable (TableData *data) { + destroyAttributesTable(data->object); +} + +static int +loadContractionTable (const char *path, TableData *data) { + ContractionTable *table = compileContractionTable(path); + if (!table) return 0; + + data->object = table; + data->bytes = table->header.bytes; + data->size = table->size; + return 1; +} + +static void +unloadContractionTable (TableData *data) { + destroyContractionTable(data->object); +} + +static const TableEntry tableEntries[] = { + { + .extension = TEXT_TABLE_EXTENSION, + .load = loadTextTable, + .unload = unloadTextTable + } + , + { + .extension = ATTRIBUTES_TABLE_EXTENSION, + .load = loadAttributesTable, + .unload = unloadAttributesTable + } + , + { + .extension = CONTRACTION_TABLE_EXTENSION, + .load = loadContractionTable, + .unload = unloadContractionTable + } + , + { + .extension = NULL + } +}; + +static const TableEntry * +findTableEntry (const char *extension) { + const TableEntry *entry = tableEntries; + + while (entry->extension) { + if (strcmp(entry->extension, extension) == 0) return entry; + entry += 1; + } + + LogPrint(LOG_ERR, "unrecognized file extension: %s", extension); + return NULL; +} + +int +dumpBytes (FILE *stream, const unsigned char *bytes, size_t count) { + const unsigned char *byte = bytes; + const unsigned char *end = byte + count; + int first = 1; + int digits; + + if (count) { + char buffer[0X10]; + snprintf(buffer, sizeof(buffer), "%X%n", (unsigned int)count-1, &digits); + } else { + digits = 1; + } + + while (byte < end) { + while (!*byte && (byte < (end - 1))) byte += 1; + + { + unsigned int counter = 0; + unsigned int maximum = 8; + + if ((byte + maximum) != end) { + while (maximum > 1) { + if (byte[maximum-1]) break; + maximum -= 1; + } + } + + while (byte < end) { + if (first) { + first = 0; + } else { + fprintf(stream, ","); + if (ferror(stream)) goto outputError; + + if (!counter) { + fprintf(stream, "\n"); + if (ferror(stream)) goto outputError; + } + } + + if (!counter) { + fprintf(stream, "[0X%0*X] =", digits, (unsigned int)(byte-bytes)); + if (ferror(stream)) goto outputError; + } + + fprintf(stream, " 0X%02X", *byte++); + if (ferror(stdout)) goto outputError; + + if (++counter == maximum) break; + } + } + } + + if (!first) { + fprintf(stream, "\n"); + if (ferror(stream)) goto outputError; + } + + return 1; + +outputError: + LogPrint(LOG_ERR, "table write error: %s", strerror(errno)); + return 0; +} + int main (int argc, char *argv[]) { int status; char *path; - TranslationTable table; { static const OptionsDescriptor descriptor = { OPTION_TABLE(programOptions), .applicationName = "tbl2hex", - .argumentsSummary = "translation-table" + .argumentsSummary = "table-file" }; processOptions(&descriptor, &argc, &argv); } if (argc == 0) { - LogPrint(LOG_ERR, "missing translation table."); + LogPrint(LOG_ERR, "missing table file."); exit(2); } path = *argv++, argc--; - if (loadTranslationTable(path, NULL, table, 0)) { - unsigned int columns = 8; - unsigned int rows = 0X100 / columns; - unsigned int row; - - for (row=0; rowload(path, &data)) { + if (dumpBytes(stdout, data.bytes, data.size)) { + status = 0; + } else { + status = 4; } - putchar(newline? '\n': ' '); - if (ferror(stdout)) break; + entry->unload(&data); + } else { + status = 3; } - - if (!ferror(stdout)) fflush(stdout); - status = ferror(stdout)? 4: 0; + } else { + status = 5; } - } else { - status = 3; } + return status; } diff --git a/Programs/tbl_gnome.c b/Programs/tbl_gnome.c deleted file mode 100644 index 1b7f49bf8b126a4974469bac25a4c2cccf42c946..0000000000000000000000000000000000000000 --- a/Programs/tbl_gnome.c +++ /dev/null @@ -1,223 +0,0 @@ -/* - * 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-2008 by The BRLTTY Developers. - * - * BRLTTY comes with ABSOLUTELY NO WARRANTY. - * - * This is free software, placed under the terms of the - * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. - * - * Web Page: http://mielke.cc/brltty/ - * - * This software is maintained by Dave Mielke . - */ - -#include "prologue.h" - -#include -#include -#include - -#include "misc.h" -#include "charset.h" -#include "tbl.h" -#include "tbl_internal.h" - -#ifdef HAVE_ICONV_H -static int gbInUcsBlock; - -static int -gbProcessEncodingDirective (TblInputData *input) { - tblSkipSpace(input); - if (!tblTestWord(input->location, tblFindSpace(input) - input->location, "UTF-8")) { - tblReportError(input, "non-supported charset %s", input->location); - return 0; - } - return 1; -} - -static int -gbProcessUcsBlockDirective (TblInputData *input) { - int length; - tblSkipSpace(input); - length = tblFindSpace(input) - input->location; - if (!tblTestWord(input->location, length, "START")) { - tblReportError(input, "expected START in %s", input->location); - return 0; - } else { - gbInUcsBlock = 1; - } - return 1; -} - -static int -gbProcessUcsCharDirective (TblInputData *input) { - size_t length; - int c; - wint_t wcdots; - const unsigned char *pos; - - tblSkipSpace(input); - - pos = input->location; - length = strlen((const char *) input->location); - if ((c = convertUtf8ToChar((void *)&input->location, &length)) == EOF) { - tblReportWarning(input, "while converting UTF-8 character %s into %s", pos, getCharset()); - return 1; - } - - if (!(*input->location)) { - tblReportError(input, "expected dot pattern in %s", input->location); - return 1; - } - if (!isspace(*input->location)) { - tblReportError(input, "can't handle multi-character translations: %s", input->location); - return 1; - } - - pos = input->location; - tblSkipSpace(input); - length -= input->location - pos; - if ((wcdots = convertUtf8ToWchar((void *)&input->location, &length)) == EOF - || (wcdots & ~0xffu) != BRL_UC_ROW) { - tblReportError(input, "expected dot pattern in %s", input->location); - return 1; - } - - input->bytes[(unsigned char) c].cell = wcdots & 0xffu; - input->bytes[(unsigned char) c].defined = 1; - - return 1; -} - -static int -gbProcessUcsBlockLine (TblInputData *input) { - int length; - - tblSkipSpace(input); - length = tblFindSpace(input) - input->location; - if (tblTestWord(input->location, length, "UCS-BLOCK")) { - input->location += length; - tblSkipSpace(input); - if (!tblTestWord(input->location, tblFindSpace(input) - input->location, "END")) - tblReportError(input, "expected END in %s", input->location); - gbInUcsBlock = 0; - return 0; - } - if (tblIsEndOfLine(input)) return 1; - - gbProcessUcsCharDirective(input); - return 1; -} - -static int -gbProcessUnicodeCharDirective (TblInputData *input) { - unsigned char *err; - wchar_t wcdots; - wint_t wc; - int c; - - tblSkipSpace(input); - if (input->location[0] != 'U' || input->location[1] != '+') { - tblReportError(input, "expected 'U+' at %s", input->location); - return 1; - } - input->location += 2; - wc = strtol((char*) input->location, (void*) &err, 16); - if (err == input->location) { - tblReportError(input, "expected character number at %s", input->location); - return 1; - } - input->location = err; - - tblSkipSpace(input); - if (input->location[0] != 'U' || input->location[1] != '+') { - tblReportError(input, "expected 'U+' at %s", input->location); - return 1; - } - input->location += 2; - wcdots = strtol((char*) input->location, (void*) &err, 16); - if (err == input->location) { - tblReportError(input, "expected dot pattern number at %s", input->location); - return 1; - } - - if ((wcdots & ~0xfful) != BRL_UC_ROW) { - tblReportError(input, "%s is not a dot pattern", input->location); - return 1; - } - - if ((c = convertWcharToChar(wc)) == EOF) - return 1; - - input->bytes[(unsigned char) c].cell = wcdots & 0xffu; - input->bytes[(unsigned char) c].defined = 1; - return 1; -} - -static int -gbSkipDirectiveWarn (TblInputData *input) { - tblReportError(input, "skipping directive %s", input->location); - return 1; -} - -static int -gbSkipDirective (TblInputData *input) { - return 1; -} - -static int -gbProcessLine (TblInputData *input) { - tblSkipSpace(input); - if (tblIsEndOfLine(input)) return 1; - if (gbInUcsBlock) { - gbProcessUcsBlockLine(input); - } else { - typedef struct { - const char *name; - int (*handler) (TblInputData *input); - } DirectiveEntry; - static const DirectiveEntry directiveTable[] = { - {"encoding", gbProcessEncodingDirective}, - {"name", gbSkipDirective}, - {"locales", gbSkipDirective}, - {"ucs-suffix", gbSkipDirective}, - {"delegate", gbSkipDirective}, - {"utf8-string", gbSkipDirectiveWarn}, - {"ucs-block", gbProcessUcsBlockDirective}, - {"ucs-char", gbProcessUcsCharDirective}, - {"unicode-char", gbProcessUnicodeCharDirective}, - {"unknown-char", gbSkipDirective}, - }; - const DirectiveEntry *directive = directiveTable; - int length = tblFindSpace(input) - input->location; - - while (directive->name) { - if (tblTestWord(input->location, length, directive->name)) { - input->location += length; - break; - } - ++directive; - } - - if (!directive->handler(input)) return 0; - } - return 1; -} - -int -tblLoad_Gnome (const char *path, FILE *file, TranslationTable table, int options) { - int ok = 0; - gbInUcsBlock = 0; - if (tblProcessLines(path, file, table, gbProcessLine, options)) ok = 1; - return ok; -} -#else -int -tblLoad_Gnome (const char *path, FILE *file, TranslationTable table, int options) { - return 0; -} -#endif diff --git a/Programs/tbl_internal.h b/Programs/tbl_internal.h deleted file mode 100644 index 56bb39e04fc360bf10bf02d3b2d29203217bf387..0000000000000000000000000000000000000000 --- a/Programs/tbl_internal.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * 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-2008 by The BRLTTY Developers. - * - * BRLTTY comes with ABSOLUTELY NO WARRANTY. - * - * This is free software, placed under the terms of the - * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. - * - * Web Page: http://mielke.cc/brltty/ - * - * This software is maintained by Dave Mielke . - */ - -#ifndef BRLTTY_INCLUDED_TBL_INTERNAL -#define BRLTTY_INCLUDED_TBL_INTERNAL - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#define TBL_DOT_COUNT 8 - -extern const unsigned char tblDotBits[TBL_DOT_COUNT]; -#define tblDotBit(dot) (tblDotBits[(dot)]) - -extern const unsigned char tblDotNumbers[TBL_DOT_COUNT]; -extern const unsigned char tblNoDots[]; -extern const unsigned char tblNoDotsSize; - -typedef char TblDotsBuffer[TBL_DOT_COUNT + 1]; -extern size_t tblPutDots (unsigned char dots, TblDotsBuffer buffer); - -typedef struct { - unsigned char cell; - unsigned char defined; -} TblByteEntry; - -typedef struct { - int options; - unsigned ok:1; - const char *file; - int line; - const unsigned char *location; - TblByteEntry bytes[0X100]; - unsigned char undefined; - unsigned char masks[TBL_DOT_COUNT]; -} TblInputData; - -typedef int (*TblLineProcessor) (TblInputData *input); -extern int tblProcessLines ( - const char *path, - FILE *file, - TranslationTable table, - TblLineProcessor process, - int options -); - -extern void tblReportError (TblInputData *input, const char *format, ...); -extern void tblReportWarning (TblInputData *input, const char *format, ...); - -extern int tblIsEndOfLine (TblInputData *input); -extern void tblSkipSpace (TblInputData *input); -extern const unsigned char *tblFindSpace (TblInputData *input); - -extern int tblTestWord (const unsigned char *location, int length, const char *word); - -extern void tblSetByte (TblInputData *input, unsigned char index, unsigned char cell); -extern void tblSetTable (TblInputData *input, TranslationTable table); - -typedef int TblLoader (const char *path, FILE *file, TranslationTable table, int options); -extern TblLoader tblLoad_Native; -extern TblLoader tblLoad_Gnome; - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* BRLTTY_INCLUDED_TBL_INTERNAL */ diff --git a/Programs/tbl_native.c b/Programs/tbl_native.c deleted file mode 100644 index 7ae9d2515227af2071c5ebc0e90f14e3e7fb1bcc..0000000000000000000000000000000000000000 --- a/Programs/tbl_native.c +++ /dev/null @@ -1,315 +0,0 @@ -/* - * 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-2008 by The BRLTTY Developers. - * - * BRLTTY comes with ABSOLUTELY NO WARRANTY. - * - * This is free software, placed under the terms of the - * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. - * - * Web Page: http://mielke.cc/brltty/ - * - * This software is maintained by Dave Mielke . - */ - -#include "prologue.h" - -#include -#include -#include - -#include "tbl.h" -#include "tbl_internal.h" - -static int -testCharacter (unsigned char character, unsigned char *index, const unsigned char *characters, unsigned char count) { - const unsigned char *address = memchr(characters, character, count); - if (!address) return 0; - *index = address - characters; - return 1; -} - -static int -testDotNumber (unsigned char character, unsigned char *index) { - return testCharacter(character, index, tblDotNumbers, sizeof(tblDotNumbers)); -} - -static int -testHexadecimalDigit (unsigned char character, unsigned char *index) { - static const unsigned char digits[] = { - '0', '1', '2', '3', '4', '5', '6', '7', - '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' - }; - return testCharacter(character, index, digits, sizeof(digits)); -} - -static int -getBit (TblInputData *input, unsigned char *set, unsigned char *mask) { - const unsigned char *location = input->location; - int length = tblFindSpace(input) - location; - - if (!*location) { - tblReportError(input, "missing bit state"); - return 0; - } - - *mask = 0; - if (tblTestWord(location, length, "on")) { - *set = 1; - } else if (tblTestWord(location, length, "off")) { - *set = 0; - } else { - static const unsigned char operators[] = {'=', '~'}; - if (testCharacter(*input->location, set, operators, sizeof(operators))) { - typedef struct { - const char *name; - unsigned char mask; - } BitEntry; - static const BitEntry bitTable[] = { - {"fg-blue" , 0X01}, - {"fg-green" , 0X02}, - {"fg-red" , 0X04}, - {"fg-bright", 0X08}, - {"bg-blue" , 0X10}, - {"bg-green" , 0X20}, - {"bg-red" , 0X40}, - {"blink" , 0X80}, - {"bit01" , 0X01}, - {"bit02" , 0X02}, - {"bit04" , 0X04}, - {"bit08" , 0X08}, - {"bit10" , 0X10}, - {"bit20" , 0X20}, - {"bit40" , 0X40}, - {"bit80" , 0X80}, - {NULL , 0X00}, - }; - const BitEntry *bit = bitTable; - - ++location, --length; - while (bit->name) { - if (tblTestWord(location, length, bit->name)) { - *mask = bit->mask; - break; - } - ++bit; - } - } - - if (!*mask) { - tblReportError(input, "invalid bit state"); - return 0; - } - } - - input->location = location + length; - return 1; -} - -static int -getByte (TblInputData *input, unsigned char *byte) { - const unsigned char *location = input->location; - switch (*location++) { - default: - *byte = *(location - 1); - break; - - case '\\': - switch (*location++) { - default: - tblReportError(input, "invalid special byte"); - return 0; - - case 'X': - case 'x': { - int count = 2; - *byte = 0; - while (count--) { - unsigned char digit; - if (!testHexadecimalDigit(tolower(*location++), &digit)) { - tblReportError(input, "invalid hexadecimal byte"); - return 0; - } - *byte = (*byte << 4) | digit; - } - break; - } - - case '\\': - case '#': - *byte = *(location - 1); - break; - - case 's': - *byte = ' '; - break; - } - break; - - case 0: - tblReportError(input, "missing byte"); - return 0; - } - - if (*location && !isspace(*location)) { - tblReportError(input, "invalid byte"); - return 0; - } - - input->location = location; - return 1; -} - -static int -getCell (TblInputData *input, unsigned char *cell) { - const unsigned char *location = input->location; - int none = 0; - unsigned char enclosed = (*location == '(')? ')': - 0; - *cell = 0; - - if (enclosed) { - ++location; - } else if (!*location) { - tblReportError(input, "missing cell"); - return 0; - } else if (memchr(tblNoDots, *location, tblNoDotsSize)) { - ++location; - none = 1; - } - - while (*location) { - unsigned char character = *location++; - int space = isspace(character); - - if (enclosed) { - if (character == enclosed) { - enclosed = 0; - break; - } - if (space) continue; - } else if (space) { - --location; - break; - } - - { - unsigned char dot; - if (none || !testDotNumber(character, &dot)) { - tblReportError(input, "invalid dot number"); - return 0; - } - - { - unsigned char bit = tblDotBit(dot); - if (*cell & bit) { - tblReportError(input, "duplicate dot number"); - return 0; - } - *cell |= bit; - } - } - } - - if (enclosed) { - tblReportError(input, "incomplete cell"); - return 0; - } - - input->location = location; - return 1; -} - -static int -getDot (TblInputData *input, unsigned char *dot) { - if (!*input->location) { - tblReportError(input, "missing dot number"); - return 0; - } - - if (!testDotNumber(*input->location, dot) || - ((tblFindSpace(input) - input->location) != 1)) { - tblReportError(input, "invalid dot number"); - return 0; - } - - ++input->location; - return 1; -} - -static void -processByteDirective (TblInputData *input) { - unsigned char index; - tblSkipSpace(input); - if (getByte(input, &index)) { - unsigned char cell; - tblSkipSpace(input); - if (getCell(input, &cell)) { - tblSkipSpace(input); - if (tblIsEndOfLine(input)) { - tblSetByte(input, index, cell); - } - } - } -} - -static void -processDotDirective (TblInputData *input) { - unsigned char index; - tblSkipSpace(input); - if (getDot(input, &index)) { - unsigned char set; - unsigned char mask; - tblSkipSpace(input); - if (getBit(input, &set, &mask)) { - tblSkipSpace(input); - if (tblIsEndOfLine(input)) { - input->masks[index] = mask; - mask = tblDotBit(index); - if (set) { - input->undefined |= mask; - } else { - input->undefined &= ~mask; - } - } - } - } -} - -static int -processTableLine (TblInputData *input) { - tblSkipSpace(input); - if (!tblIsEndOfLine(input)) { - typedef struct { - const char *name; - void (*handler) (TblInputData *input); - } DirectiveEntry; - static const DirectiveEntry directiveTable[] = { - {"byte", processByteDirective}, - {"dot" , processDotDirective }, - {NULL , processByteDirective} - }; - const DirectiveEntry *directive = directiveTable; - int length = tblFindSpace(input) - input->location; - - while (directive->name) { - if (tblTestWord(input->location, length, directive->name)) { - input->location += length; - break; - } - ++directive; - } - - directive->handler(input); - } - - return 1; -} - -int -tblLoad_Native (const char *path, FILE *file, TranslationTable table, int options) { - return tblProcessLines(path, file, table, processTableLine, options); -} diff --git a/Programs/tbltest.c b/Programs/tbltest.c deleted file mode 100644 index 5dbd9f82bd5edb3a12cd6fd9a547ddb43f67ffb1..0000000000000000000000000000000000000000 --- a/Programs/tbltest.c +++ /dev/null @@ -1,1014 +0,0 @@ -/* - * 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-2008 by The BRLTTY Developers. - * - * BRLTTY comes with ABSOLUTELY NO WARRANTY. - * - * This is free software, placed under the terms of the - * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. - * - * Web Page: http://mielke.cc/brltty/ - * - * This software is maintained by Dave Mielke . - */ - -#include "prologue.h" - -#include -#include -#include -#include - -#ifdef HAVE_LIBICUUC -#include -#endif /* HAVE_LIBICUUC */ - -#if defined(HAVE_PKG_CURSES) -#define USE_CURSES -#include -#elif defined(HAVE_PKG_NCURSES) -#define USE_CURSES -#include -#elif defined(HAVE_PKG_NCURSESW) -#define USE_CURSES -#define USE_FUNC_GET_WCH -#include -#else -#warning curses package either unspecified or unsupported -#define printw printf -#define clear() printf("\r\n\v") -#define refresh() fflush(stdout) -#define beep() printf("\a") -#endif /* HAVE_PKG_CURSES */ - -#include "program.h" -#include "options.h" -#include "misc.h" -#include "brl.h" -#include "charset.h" -#include "tbl.h" -#include "tbl_internal.h" - -#define BRLAPI_NO_DEPRECATED -#include "brlapi.h" - -static char *opt_characterSet; -static char *opt_inputFormat; -static char *opt_outputFormat; -static int opt_translate; -static char *opt_dataDirectory; -static int opt_edit; - -BEGIN_OPTION_TABLE(programOptions) - { .letter = 'D', - .word = "data-directory", - .flags = OPT_Hidden, - .argument = "file", - .setting.string = &opt_dataDirectory, - .defaultSetting = DATA_DIRECTORY, - .description = "Path to directory for configuration files." - }, - - { .letter = 'e', - .word = "edit", - .setting.flag = &opt_edit, - .description = "Edit table." - }, - - { .letter = 't', - .word = "translate", - .setting.flag = &opt_translate, - .description = "Translate." - }, - - { .letter = 'i', - .word = "input-format", - .argument = "format", - .setting.string = &opt_inputFormat, - .description = "Format of input file." - }, - - { .letter = 'o', - .word = "output-format", - .argument = "format", - .setting.string = &opt_outputFormat, - .description = "Format of output file." - }, - - { .letter = 'c', - .word = "character-set", - .argument = "charset", - .setting.string = &opt_characterSet, - .description = "8-bit character set to use." - }, -END_OPTION_TABLE - -static const DotsTable dotsInternal = { - BRL_DOT1, BRL_DOT2, BRL_DOT3, BRL_DOT4, - BRL_DOT5, BRL_DOT6, BRL_DOT7, BRL_DOT8 -}; - -static const DotsTable dots12345678 = { - 0X01, 0X02, 0X04, 0X08, 0X10, 0X20, 0X40, 0X80 -}; - -static const DotsTable dots14253678 = { - 0X01, 0X04, 0X10, 0X02, 0X08, 0X20, 0X40, 0X80 -}; - -static unsigned char -mapDots (unsigned char input, const DotsTable from, const DotsTable to) { - unsigned char output = 0; - { - int dot; - for (dot=0; dotname) { - if (strcmp(name, format->name) == 0) return format; - ++format; - } - return NULL; -} - -static const char * -findFileExtension (const char *path) { - const char *name = strrchr(path, '/'); - return strrchr((name? name: path), '.'); -} - -static const FormatEntry * -getFormatEntry (const char *name, const char *path, const char *description) { - if (!(name && *name)) { - name = findFileExtension(path); - if (!(name && *++name)) { - LogPrint(LOG_ERR, "unspecified %s format.", description); - exit(2); - } - } - - { - const FormatEntry *format = findFormatEntry(name); - if (format) return format; - } - - LogPrint(LOG_ERR, "unknown %s format: %s", description, name); - exit(2); -} - -static FILE * -openTable (const char **file, const char *mode, const char *directory, FILE *stdStream, const char *stdName) { - if (stdStream) { - if (strcmp(*file, "-") == 0) { - *file = stdName; - return stdStream; - } - } - - if (directory) { - const char *path = makePath(directory, *file); - if (!path) return NULL; - *file = path; - } - - { - FILE *stream = fopen(*file, mode); - if (!stream) LogPrint(LOG_ERR, "table open error: %s: %s", *file, strerror(errno)); - return stream; - } -} - -static const char *inputPath; -static const char *outputPath; -static const FormatEntry *inputFormat; -static const FormatEntry *outputFormat; - -static int -convertTable (void) { - int status; - - if (outputFormat != inputFormat) { - FILE *inputFile = openTable(&inputPath, "r", opt_dataDirectory, stdin, ""); - - if (inputFile) { - TranslationTable table; - - if (inputFormat->read(inputPath, inputFile, table, inputFormat->data)) { - if (outputPath) { - FILE *outputFile = openTable(&outputPath, "w", NULL, stdout, ""); - - if (outputFile) { - if (outputFormat->write(outputPath, outputFile, table, outputFormat->data)) { - status = 0; - } else { - status = 6; - } - - fclose(outputFile); - } else { - status = 5; - } - } else { - status = 0; - } - } else { - status = 4; - } - - fclose(inputFile); - } else { - status = 3; - } - } else { - LogPrint(LOG_ERR, "same input and output formats: %s", outputFormat->name); - status = 2; - } - - return status; -} - -static wchar_t * -makeCharacterDescription (TranslationTable table, unsigned char byte, size_t *length, unsigned char *braille) { - char buffer[0X100]; - int characterIndex; - int brailleIndex; - int descriptionLength; - - wint_t character = convertCharToWchar(byte); - unsigned char dots; - wchar_t printableCharacter; - char printablePrefix; - - if (character == WEOF) character = WC_C('?'); - dots = convertWcharToDots(table, character); - - printableCharacter = character; - if (iswLatin1(printableCharacter)) { - printablePrefix = '^'; - if (!(printableCharacter & 0X60)) { - printableCharacter |= 0X40; - if (printableCharacter & 0X80) printablePrefix = '~'; - } else if (printableCharacter == 0X7F) { - printableCharacter ^= 0X40; - } else if (printableCharacter != printablePrefix) { - printablePrefix = ' '; - } - } else { - printablePrefix = ' '; - } - -#define DOT(n) ((dots & BRLAPI_DOT##n)? ((n) + '0'): ' ') - snprintf(buffer, sizeof(buffer), - "%02X %3u %c%nx %nx [%c%c%c%c%c%c%c%c]%n", - byte, byte, printablePrefix, &characterIndex, &brailleIndex, - DOT(1), DOT(2), DOT(3), DOT(4), DOT(5), DOT(6), DOT(7), DOT(8), - &descriptionLength); -#undef DOT - -#ifdef HAVE_LIBICUUC - { - char *name = buffer + descriptionLength + 1; - int size = buffer + sizeof(buffer) - name; - UErrorCode error = U_ZERO_ERROR; - - u_charName(character, U_EXTENDED_CHAR_NAME, name, size, &error); - if (U_SUCCESS(error)) { - descriptionLength += strlen(name) + 1; - *--name = ' '; - } - } -#endif /* HAVE_LIBICUUC */ - - { - wchar_t *description = calloc(descriptionLength+1, sizeof(*description)); - if (description) { - int i; - for (i=0; ibrlapiFileDescriptor != (brlapi_fileDescriptor)-1; -} - -static void -setBrlapiError (EditTableData *data, const char *function) { - if ((data->brlapiErrorFunction = function)) { - data->brlapiErrorMessage = brlapi_strerror(&brlapi_error); - } else { - data->brlapiErrorMessage = NULL; - } -} - -static void -releaseBrailleDisplay (EditTableData *data) { - brlapi_closeConnection(); - data->brlapiFileDescriptor = (brlapi_fileDescriptor)-1; -} - -static int -claimBrailleDisplay (EditTableData *data) { - data->brlapiFileDescriptor = brlapi_openConnection(NULL, NULL); - if (haveBrailleDisplay(data)) { - if (brlapi_getDisplaySize(&data->displayWidth, &data->displayHeight) != -1) { - if (brlapi_enterTtyMode(BRLAPI_TTY_DEFAULT, NULL) != -1) { - setBrlapiError(data, NULL); - return 1; - } else { - setBrlapiError(data, "brlapi_enterTtyMode"); - } - } else { - setBrlapiError(data, "brlapi_getDisplaySize"); - } - - releaseBrailleDisplay(data); - } else { - setBrlapiError(data, "brlapi_openConnection"); - } - - return 0; -} - -static int -updateCharacterDescription (EditTableData *data) { - int ok = 0; - - size_t descriptionLength; - unsigned char descriptionDots; - wchar_t *descriptionText = makeCharacterDescription( - data->translationTable, - data->currentCharacter, - &descriptionLength, - &descriptionDots - ); - - if (descriptionText) { - ok = 1; - clear(); - -#if defined(USE_CURSES) - printw("F2:Save F8:Exit\n"); - printw("Up:Up1 Dn:Down1 PgUp:Up16 PgDn:Down16 Home:First End:Last\n"); - printw("\n"); -#else /* standard input/output */ -#endif /* clear screen */ - - printCharacterString(descriptionText); - printw("\n"); - -#define DOT(n) ((descriptionDots & BRLAPI_DOT##n)? '#': ' ') - printw(" +---+ \n"); - printw("1|%c %c|4\n", DOT(1), DOT(4)); - printw("2|%c %c|5\n", DOT(2), DOT(5)); - printw("3|%c %c|6\n", DOT(3), DOT(6)); - printw("7|%c %c|8\n", DOT(7), DOT(8)); - printw(" +---+ \n"); -#undef DOT - - if (data->brlapiErrorFunction) { - printw("BrlAPI error: %s: %s\n", - data->brlapiErrorFunction, data->brlapiErrorMessage); - setBrlapiError(data, NULL); - } - - refresh(); - - if (haveBrailleDisplay(data)) { - brlapi_writeArguments_t args = BRLAPI_WRITEARGUMENTS_INITIALIZER; - wchar_t text[data->displayWidth]; - size_t length = MIN(data->displayWidth, descriptionLength); - - wmemcpy(text, descriptionText, length); - wmemset(&text[length], WC_C(' '), data->displayWidth-length); - - args.regionBegin = 1; - args.regionSize = data->displayWidth; - args.text = (char *)text; - args.textSize = data->displayWidth * sizeof(text[0]); - args.charset = "WCHAR_T"; - - if (brlapi_write(&args) == -1) { - setBrlapiError(data, "brlapi_write"); - releaseBrailleDisplay(data); - } - } - - free(descriptionText); - } - - return ok; -} - -static int -doKeyboardCommand (EditTableData *data) { -#if defined(USE_CURSES) -#ifdef USE_FUNC_GET_WCH - wint_t ch; - int ret = get_wch(&ch); - - if (ret == KEY_CODE_YES) -#else /* USE_FUNC_GET_WCH */ - int ch = getch(); - - if (ch >= 0X100) -#endif /* USE_FUNC_GET_WCH */ - { - switch (ch) { - case KEY_UP: - data->currentCharacter -= 1; - break; - - case KEY_DOWN: - data->currentCharacter += 1; - break; - - case KEY_PPAGE: - data->currentCharacter -= 0X10; - break; - - case KEY_NPAGE: - data->currentCharacter += 0X10; - break; - - case KEY_HOME: - data->currentCharacter = 0; - break; - - case KEY_END: - data->currentCharacter = 0XFF; - break; - - case KEY_F(2): { - FILE *outputFile; - - if (!outputPath) outputPath = inputPath; - if (!outputFormat) outputFormat = inputFormat; - outputFile = openTable(&outputPath, "w", NULL, stdout, ""); - - if (outputFile) { - outputFormat->write(outputPath, outputFile, data->translationTable, outputFormat->data); - fclose(outputFile); - } - - break; - } - - case KEY_F(8): - return 0; - - default: - beep(); - break; - } - } else - -#ifdef USE_FUNC_GET_WCH - if (ret == OK) -#endif /* USE_FUNC_GET_WCH */ -#else /* standard input/output */ - wint_t ch = fgetwc(stdin); - if (ch == WEOF) return 0; -#endif /* read character */ - { - if ((ch >= BRL_UC_ROW) && (ch <= (BRL_UC_ROW|0xFF))) { - /* Set braille pattern */ - data->translationTable[data->currentCharacter] = ch & 0XFF; - } else { - /* Switch to char */ - int c = convertWcharToChar(ch); - if (c != EOF) { - data->currentCharacter = c; - } else { - beep(); - } - } - } - - return 1; -} - -static int -doBrailleCommand (EditTableData *data) { - if (haveBrailleDisplay(data)) { - brlapi_keyCode_t key; - int ret = brlapi_readKey(0, &key); - - if (ret == 1) { - unsigned long code = key & BRLAPI_KEY_CODE_MASK; - - switch (key & BRLAPI_KEY_TYPE_MASK) { - case BRLAPI_KEY_TYPE_CMD: - switch (code & BRLAPI_KEY_CMD_BLK_MASK) { - case 0: - switch (code) { - case BRLAPI_KEY_CMD_LNUP: - data->currentCharacter -= 1; - break; - - case BRLAPI_KEY_CMD_LNDN: - data->currentCharacter += 1; - break; - - case BRLAPI_KEY_CMD_PRPGRPH: - data->currentCharacter -= 0X10; - break; - - case BRLAPI_KEY_CMD_NXPGRPH: - data->currentCharacter += 0X10; - break; - - case BRLAPI_KEY_CMD_TOP_LEFT: - case BRLAPI_KEY_CMD_TOP: - data->currentCharacter = 0; - break; - - case BRLAPI_KEY_CMD_BOT_LEFT: - case BRLAPI_KEY_CMD_BOT: - data->currentCharacter = 0XFF; - break; - - default: - beep(); - break; - } - break; - - case BRLAPI_KEY_CMD_PASSDOTS: - data->translationTable[data->currentCharacter] = code & BRLAPI_KEY_CMD_ARG_MASK; - break; - - default: - beep(); - break; - } - break; - - case BRLAPI_KEY_TYPE_SYM: { - /* latin1 */ - if (code < 0X100) code |= BRLAPI_KEY_SYM_UNICODE; - - if ((code & 0X1f000000) == BRLAPI_KEY_SYM_UNICODE) { - /* unicode */ - if ((code & 0Xffff00) == BRL_UC_ROW) { - /* Set braille pattern */ - data->translationTable[data->currentCharacter] = code & 0XFF; - } else { - /* Switch to char */ - int c = convertWcharToChar(code & 0XFFFFFF); - if (c != EOF) { - data->currentCharacter = c; - } else { - beep(); - } - } - } else { - switch (code) { - case BRLAPI_KEY_SYM_UP: - data->currentCharacter -= 1; - break; - - case BRLAPI_KEY_SYM_DOWN: - data->currentCharacter += 1; - break; - - case BRLAPI_KEY_SYM_PAGE_UP: - data->currentCharacter -= 0X10; - break; - - case BRLAPI_KEY_SYM_PAGE_DOWN: - data->currentCharacter += 0X10; - break; - - case BRLAPI_KEY_SYM_HOME: - data->currentCharacter = 0; - break; - - case BRLAPI_KEY_SYM_END: - data->currentCharacter = 0XFF; - break; - - default: - beep(); - break; - } - } - break; - } - - default: - beep(); - break; - } - } else if (ret == -1) { - setBrlapiError(data, "brlapi_readKey"); - releaseBrailleDisplay(data); - } - } - - return 1; -} - -static int -editTable (void) { - int status; - EditTableData data; - - memset(data.translationTable, 0xFF, sizeof(data.translationTable)); - - { - FILE *inputFile = openTable(&inputPath, "r", opt_dataDirectory, NULL, NULL); - - if (inputFile) { - if (inputFormat->read(inputPath, inputFile, data.translationTable, inputFormat->data)) { - status = 0; - } else { - status = 4; - } - - fclose(inputFile); - } else { - status = 3; - } - } - - if (!status) { - claimBrailleDisplay(&data); - -#if defined(USE_CURSES) - initscr(); - cbreak(); - noecho(); - nonl(); - intrflush(stdscr, FALSE); - keypad(stdscr, TRUE); -#else /* standard input/output */ -#endif /* initialize keyboard and screen */ - - data.currentCharacter = 0; - while (updateCharacterDescription(&data)) { - fd_set set; - FD_ZERO(&set); - - { - int maximumFileDescriptor = STDIN_FILENO; - FD_SET(STDIN_FILENO, &set); - - if (haveBrailleDisplay(&data)) { - FD_SET(data.brlapiFileDescriptor, &set); - if (data.brlapiFileDescriptor > maximumFileDescriptor) - maximumFileDescriptor = data.brlapiFileDescriptor; - } - - select(maximumFileDescriptor+1, &set, NULL, NULL, NULL); - } - - if (FD_ISSET(STDIN_FILENO, &set)) - if (!doKeyboardCommand(&data)) - break; - - if (haveBrailleDisplay(&data) && FD_ISSET(data.brlapiFileDescriptor, &set)) - if (!doBrailleCommand(&data)) - break; - } - - clear(); - refresh(); - -#if defined(USE_CURSES) - endwin(); -#else /* standard input/output */ -#endif /* restore keyboard and screen */ - - if (haveBrailleDisplay(&data)) releaseBrailleDisplay(&data); - } - - return status; -} - -static int -translateText (void) { - int status; - FILE *inputFile = openTable(&inputPath, "r", opt_dataDirectory, NULL, NULL); - - if (inputFile) { - TranslationTable inputTable; - - if (inputFormat->read(inputPath, inputFile, inputTable, inputFormat->data)) { - if (outputPath) { - FILE *outputFile = openTable(&outputPath, "r", opt_dataDirectory, NULL, NULL); - - if (outputFile) { - TranslationTable outputTable; - - if (outputFormat->read(outputPath, outputFile, outputTable, outputFormat->data)) { - TranslationTable table; - - { - TranslationTable unoutputTable; - int byte; - reverseTranslationTable(outputTable, unoutputTable); - memset(&table, 0, sizeof(table)); - for (byte=TRANSLATION_TABLE_SIZE-1; byte>=0; byte--) - table[byte] = unoutputTable[inputTable[byte]]; - } - - status = 0; - while (1) { - int character; - - if ((character = fgetc(stdin)) == EOF) { - if (ferror(stdin)) { - LogPrint(LOG_ERR, "input error: %s", strerror(errno)); - status = 6; - } - break; - } - - if (fputc(table[character], stdout) == EOF) { - LogPrint(LOG_ERR, "output error: %s", strerror(errno)); - status = 7; - break; - } - } - } else { - status = 4; - } - - if (fclose(outputFile) == EOF) { - if (!status) { - LogPrint(LOG_ERR, "output error: %s", strerror(errno)); - status = 7; - } - } - } else { - status = 3; - } - } else { - LogPrint(LOG_ERR, "output table not specified."); - status = 2; - } - } else { - status = 4; - } - - fclose(inputFile); - } else { - status = 3; - } - - return status; -} - -int -main (int argc, char *argv[]) { - int status; - - { - static const OptionsDescriptor descriptor = { - OPTION_TABLE(programOptions), - .applicationName = "tbltest", - .argumentsSummary = "input-table [output-table]" - }; - processOptions(&descriptor, &argc, &argv); - } - - { - char **const paths[] = { - &opt_dataDirectory, - NULL - }; - fixInstallPaths(paths); - } - - if (argc == 0) { - LogPrint(LOG_ERR, "missing input table."); - exit(2); - } - inputPath = *argv++, argc--; - - if (argc > 0) { - outputPath = *argv++, argc--; - } else if (opt_outputFormat && *opt_outputFormat) { - const char *extension = findFileExtension(inputPath); - int prefix = extension? (extension - inputPath): strlen(inputPath); - char buffer[prefix + 1 + strlen(opt_outputFormat) + 1]; - snprintf(buffer, sizeof(buffer), "%.*s.%s", prefix, inputPath, opt_outputFormat); - outputPath = strdupWrapper(buffer); - } else { - outputPath = NULL; - } - - if (argc > 0) { - LogPrint(LOG_ERR, "too many parameters."); - exit(2); - } - - inputFormat = getFormatEntry(opt_inputFormat, inputPath, "input"); - if (outputPath) { - outputFormat = getFormatEntry(opt_outputFormat, outputPath, "output"); - } else { - outputFormat = NULL; - } - - if (opt_characterSet && !setCharset(opt_characterSet)) { - LogPrint(LOG_ERR, "can't establish character set: %s", opt_characterSet); - exit(9); - } - - if (opt_edit) { - status = editTable(); - } else if (opt_translate) { - status = translateText(); - } else { - status = convertTable(); - } - - return status; -} diff --git a/Programs/touch.c b/Programs/touch.c index c2529b4314da9bf745c07f7a260a4b74fe56bacf..d9eb10fa05233cbc41dabeb8fd3064c70da93b61 100644 --- a/Programs/touch.c +++ b/Programs/touch.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -21,6 +22,7 @@ #include "misc.h" #include "touch.h" +#include "brltty.h" static int touchLeft; static int touchRight; @@ -42,7 +44,7 @@ static inline int touchCheckColumn (BrailleDisplay *brl, const unsigned char *pressure, int column) { int row; for (row=touchTop; row<=touchBottom; ++row) { - if (pressure[(row * brl->x) + column]) return 1; + if (pressure[(row * brl->textColumns) + column]) return 1; } return 0; } @@ -51,7 +53,7 @@ static inline int touchCheckRow (BrailleDisplay *brl, const unsigned char *pressure, int row) { int column; for (column=touchLeft; column<=touchRight; ++column) { - if (pressure[(row * brl->x) + column]) return 1; + if (pressure[(row * brl->textColumns) + column]) return 1; } return 0; } @@ -109,10 +111,10 @@ touchCropWindow (BrailleDisplay *brl, const unsigned char *pressure) { static inline void touchUncropWindow (BrailleDisplay *brl) { - touchLeft = 0; - touchRight = brl->x - 1; + touchLeft = textStart; + touchRight = textStart + textCount - 1; touchTop = 0; - touchBottom = brl->y - 1; + touchBottom = brl->textRows - 1; } static inline int @@ -124,7 +126,7 @@ touchRecropWindow (BrailleDisplay *brl, const unsigned char *pressure) { int touchAnalyzePressure (BrailleDisplay *brl, const unsigned char *pressure) { if (pressure) { - LogBytes(LOG_DEBUG, "Touch Pressure", pressure, brl->x*brl->y); + LogBytes(LOG_DEBUG, "Touch Pressure", pressure, brl->textColumns*brl->textRows); } else { LogPrint(LOG_DEBUG, "Touch Pressure off"); } diff --git a/Programs/touch.h b/Programs/touch.h index ca29dafc2127b7f10fe72c397b167a6a3499272a..cf085b294bc28611eed19d3a15c31e9b14cf06a0 100644 --- a/Programs/touch.h +++ b/Programs/touch.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/ttb.h b/Programs/ttb.h new file mode 100644 index 0000000000000000000000000000000000000000..d3c7adbb39d3f22b5f0bba04e5bb7cbad0f20a19 --- /dev/null +++ b/Programs/ttb.h @@ -0,0 +1,42 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#ifndef BRLTTY_INCLUDED_TTB +#define BRLTTY_INCLUDED_TTB + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +typedef struct TextTableStruct TextTable; + +extern TextTable *textTable; + +extern TextTable *compileTextTable (const char *name); +extern void destroyTextTable (TextTable *table); + +extern char *ensureTextTableExtension (const char *path); + +extern unsigned char convertCharacterToDots (TextTable *table, wchar_t character); +extern wchar_t convertDotsToCharacter (TextTable *table, unsigned char dots); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* BRLTTY_INCLUDED_TTB */ diff --git a/Programs/ttb_compile.c b/Programs/ttb_compile.c new file mode 100644 index 0000000000000000000000000000000000000000..cbd0ebecdbd2e25ceae717cfa7f52c781acb03eb --- /dev/null +++ b/Programs/ttb_compile.c @@ -0,0 +1,262 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#include "prologue.h" + +#include + +#include "misc.h" +#include "datafile.h" +#include "dataarea.h" +#include "charset.h" +#include "ttb.h" +#include "ttb_internal.h" +#include "ttb_compile.h" + +struct TextTableDataStruct { + DataArea *area; +}; + +void * +getTextTableItem (TextTableData *ttd, TextTableOffset offset) { + return getDataItem(ttd->area, offset); +} + +TextTableHeader * +getTextTableHeader (TextTableData *ttd) { + return getTextTableItem(ttd, 0); +} + +static DataOffset +getUnicodeGroupOffset (TextTableData *ttd, wchar_t character, int allocate) { + unsigned int groupNumber = UNICODE_GROUP_NUMBER(character); + DataOffset groupOffset = getTextTableHeader(ttd)->unicodeGroups[groupNumber]; + + if (!groupOffset && allocate) { + if (!allocateDataItem(ttd->area, &groupOffset, + sizeof(UnicodeGroupEntry), + __alignof__(UnicodeGroupEntry))) + return 0; + + getTextTableHeader(ttd)->unicodeGroups[groupNumber] = groupOffset; + } + + return groupOffset; +} + +static DataOffset +getUnicodePlaneOffset (TextTableData *ttd, wchar_t character, int allocate) { + DataOffset groupOffset = getUnicodeGroupOffset(ttd, character, allocate); + if (!groupOffset) return 0; + + { + UnicodeGroupEntry *group = getDataItem(ttd->area, groupOffset); + unsigned int planeNumber = UNICODE_PLANE_NUMBER(character); + DataOffset planeOffset = group->planes[planeNumber]; + + if (!planeOffset && allocate) { + if (!allocateDataItem(ttd->area, &planeOffset, + sizeof(UnicodePlaneEntry), + __alignof__(UnicodePlaneEntry))) + return 0; + + group = getDataItem(ttd->area, groupOffset); + group->planes[planeNumber] = planeOffset; + } + + return planeOffset; + } +} + +static DataOffset +getUnicodeRowOffset (TextTableData *ttd, wchar_t character, int allocate) { + DataOffset planeOffset = getUnicodePlaneOffset(ttd, character, allocate); + if (!planeOffset) return 0; + + { + UnicodePlaneEntry *plane = getDataItem(ttd->area, planeOffset); + unsigned int rowNumber = UNICODE_ROW_NUMBER(character); + DataOffset rowOffset = plane->rows[rowNumber]; + + if (!rowOffset && allocate) { + if (!allocateDataItem(ttd->area, &rowOffset, + sizeof(UnicodeRowEntry), + __alignof__(UnicodeRowEntry))) + return 0; + + plane = getDataItem(ttd->area, planeOffset); + plane->rows[rowNumber] = rowOffset; + } + + return rowOffset; + } +} + +static UnicodeRowEntry * +getUnicodeRowEntry (TextTableData *ttd, wchar_t character, int allocate) { + DataOffset rowOffset = getUnicodeRowOffset(ttd, character, allocate); + if (!rowOffset) return NULL; + return getDataItem(ttd->area, rowOffset); +} + +const unsigned char * +getUnicodeCellEntry (TextTableData *ttd, wchar_t character) { + const UnicodeRowEntry *row = getUnicodeRowEntry(ttd, character, 0); + + if (row) { + unsigned int cellNumber = UNICODE_CELL_NUMBER(character); + if (BITMASK_TEST(row->defined, cellNumber)) return &row->cells[cellNumber]; + } + + return NULL; +} + +static void +resetDotsCharacter (TextTableData *ttd, unsigned char dots, wchar_t character) { + TextTableHeader *header = getTextTableHeader(ttd); + + if (BITMASK_TEST(header->dotsCharacterDefined, dots)) { + if (header->dotsToCharacter[dots] == character) { + header->dotsToCharacter[dots] = 0; + BITMASK_CLEAR(header->dotsCharacterDefined, dots); + } + } +} + +int +setTextTableCharacter (TextTableData *ttd, wchar_t character, unsigned char dots) { + UnicodeRowEntry *row = getUnicodeRowEntry(ttd, character, 1); + if (!row) return 0; + + { + unsigned int cellNumber = UNICODE_CELL_NUMBER(character); + unsigned char *cell = &row->cells[cellNumber]; + + if (!BITMASK_TEST(row->defined, cellNumber)) { + BITMASK_SET(row->defined, cellNumber); + } else if (*cell != dots) { + resetDotsCharacter(ttd, *cell, character); + } + + *cell = dots; + } + + { + TextTableHeader *header = getTextTableHeader(ttd); + + if (!BITMASK_TEST(header->dotsCharacterDefined, dots)) { + header->dotsToCharacter[dots] = character; + BITMASK_SET(header->dotsCharacterDefined, dots); + } + } + + return 1; +} + +void +unsetTextTableCharacter (TextTableData *ttd, wchar_t character) { + UnicodeRowEntry *row = getUnicodeRowEntry(ttd, character, 0); + + if (row) { + unsigned int cellNumber = UNICODE_CELL_NUMBER(character); + + if (BITMASK_TEST(row->defined, cellNumber)) { + unsigned char *cell = &row->cells[cellNumber]; + + resetDotsCharacter(ttd, *cell, character); + *cell = 0; + BITMASK_CLEAR(row->defined, cellNumber); + } + } +} + +int +setTextTableByte (TextTableData *ttd, unsigned char byte, unsigned char dots) { + wint_t character = convertCharToWchar(byte); + + if (character != WEOF) + if (!setTextTableCharacter(ttd, character, dots)) + return 0; + + return 1; +} + +TextTableData * +newTextTableData (void) { + TextTableData *ttd; + + if ((ttd = malloc(sizeof(*ttd)))) { + memset(ttd, 0, sizeof(*ttd)); + + if ((ttd->area = newDataArea())) { + if (allocateDataItem(ttd->area, NULL, sizeof(TextTableHeader), __alignof__(TextTableHeader))) { + return ttd; + } + + destroyDataArea(ttd->area); + } + + free(ttd); + } + + return NULL;; +} + +void +destroyTextTableData (TextTableData *ttd) { + destroyDataArea(ttd->area); + free(ttd); +} + +TextTableData * +processTextTableLines (FILE *stream, const char *name, DataProcessor processor) { + TextTableData *ttd; + + if ((ttd = newTextTableData())) { + if (processDataStream(stream, name, processor, ttd)) return ttd; + destroyTextTableData(ttd); + } + + return NULL; +} + +TextTable * +makeTextTable (TextTableData *ttd) { + TextTable *table = malloc(sizeof(*table)); + + if (table) { + table->header.fields = getTextTableHeader(ttd); + table->size = getDataSize(ttd->area); + resetDataArea(ttd->area); + } + + return table; +} + +void +destroyTextTable (TextTable *table) { + if (table->size) { + free(table->header.fields); + free(table); + } +} + +char * +ensureTextTableExtension (const char *path) { + return ensureExtension(path, TEXT_TABLE_EXTENSION); +} diff --git a/Programs/ttb_compile.h b/Programs/ttb_compile.h new file mode 100644 index 0000000000000000000000000000000000000000..0bce83719824efd81c1c600694899f735325379d --- /dev/null +++ b/Programs/ttb_compile.h @@ -0,0 +1,54 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#ifndef BRLTTY_INCLUDED_TTB_COMPILE +#define BRLTTY_INCLUDED_TTB_COMPILE + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include + +#include "datafile.h" + +typedef struct TextTableDataStruct TextTableData; +extern TextTableData *newTextTableData (void); +extern void destroyTextTableData (TextTableData *ttd); + +extern TextTableData *processTextTableLines (FILE *stream, const char *name, DataProcessor processor); +extern TextTable *makeTextTable (TextTableData *ttd); + +typedef TextTableData *TextTableProcessor (FILE *stream, const char *name); +extern TextTableProcessor processTextTableStream; +extern TextTableProcessor processGnomeBrailleStream; +extern TextTableProcessor processLibLouisStream; + +extern void *getTextTableItem (TextTableData *ttd, TextTableOffset offset); +extern TextTableHeader *getTextTableHeader (TextTableData *ttd); +extern const unsigned char *getUnicodeCellEntry (TextTableData *ttd, wchar_t character); + +extern int setTextTableCharacter (TextTableData *ttd, wchar_t character, unsigned char dots); +extern void unsetTextTableCharacter (TextTableData *ttd, wchar_t character); +extern int setTextTableByte (TextTableData *ttd, unsigned char byte, unsigned char dots); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* BRLTTY_INCLUDED_TTB_COMPILE */ diff --git a/Programs/ttb_gnome.c b/Programs/ttb_gnome.c new file mode 100644 index 0000000000000000000000000000000000000000..97001c3c40280ee485b5739f4694320267a61944 --- /dev/null +++ b/Programs/ttb_gnome.c @@ -0,0 +1,214 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#include "prologue.h" + +#include "ttb.h" +#include "ttb_internal.h" +#include "ttb_compile.h" + +static int inUcsBlock; + +static int +getUnicodeCharacter (DataFile *file, wchar_t *character, const char *description) { + DataOperand string; + + if (getDataOperand(file, &string, description)) { + if (string.length > 2) { + if ((string.characters[0] == WC_C('U')) && + (string.characters[1] == WC_C('+'))) { + const wchar_t *digit = &string.characters[2]; + int length = string.length - 2; + + *character = 0; + while (length) { + int value; + int shift; + if (!isHexadecimalDigit(*digit++, &value, &shift)) break; + + *character <<= shift; + *character |= value; + length -= 1; + } + if (!length) return 1; + } + } + + reportDataError(file, "invalid Unicode character: %.*" PRIws, + string.length, string.characters); + } + + return 0; +} + +static int +testBrailleRepresentation (DataFile *file, wchar_t representation, unsigned char *dots) { + if ((representation & ~UNICODE_CELL_MASK) == UNICODE_BRAILLE_ROW) { + *dots = representation & UNICODE_CELL_MASK; + return 1; + } else { + reportDataError(file, "invalid braille representation"); + } + + return 0; +} + +static int +processEncodingOperands (DataFile *file, void *data) { + DataOperand encoding; + + if (getDataOperand(file, &encoding, "character encoding name")) { + if (!isKeyword(WS_C("UTF-8"), encoding.characters, encoding.length)) { + reportDataError(file, "unsupported character encoding: %.*" PRIws, + encoding.length, encoding.characters); + } + } + + return 1; +} + +static int +processDelegateOperands (DataFile *file, void *data) { + DataOperand type; + + if (getDataOperand(file, &type, "delegate type")) { + if (isKeyword(WS_C("FILE"), type.characters, type.length)) { + DataOperand name; + + if (getDataOperand(file, &name, "file name")) { + return includeDataFile(file, name.characters, name.length); + } + } else { + return includeDataFile(file, type.characters, type.length); + } + } + + return 1; +} + +static int +processUcsBlockOperands (DataFile *file, void *data) { + DataOperand action; + + if (getDataOperand(file, &action, "UCS block action")) { + const wchar_t *expected = inUcsBlock? WS_C("END"): WS_C("START"); + + if (isKeyword(expected, action.characters, action.length)) { + inUcsBlock = !inUcsBlock; + } else { + reportDataError(file, "unexpected UCS block action: %.*" PRIws " (expecting %" PRIws ")", + action.length, action.characters, expected); + } + } + + return 1; +} + +static int +processUcsCharOperands (DataFile *file, void *data) { + TextTableData *ttd = data; + DataOperand string; + + if (getDataOperand(file, &string, "character string")) { + if (string.length == 1) { + DataOperand representation; + + if (getDataOperand(file, &representation, "braille representation")) { + if (representation.length == 1) { + unsigned char dots; + + if (testBrailleRepresentation(file, representation.characters[0], &dots)) { + if (!setTextTableCharacter(ttd, string.characters[0], dots)) return 0; + } + } else { + reportDataError(file, "multi-cell braille representation not supported"); + } + } + } else { + reportDataError(file, "multi-character string not supported"); + } + } + + return 1; +} + +static int +processUnicodeCharOperands (DataFile *file, void *data) { + TextTableData *ttd = data; + wchar_t character; + + if (getUnicodeCharacter(file, &character, "character")) { + wchar_t representation; + + if (getUnicodeCharacter(file, &representation, "braille representation")) { + unsigned char dots; + + if (testBrailleRepresentation(file, representation, &dots)) { + if (!setTextTableCharacter(ttd, character, dots)) return 0; + } + } + } + + return 1; +} + +static int +processGnomeBrailleLine (DataFile *file, void *data) { + const DataProperty *properties; + + if (inUcsBlock) { + static const DataProperty propertyTable[] = { + {.name=WC_C("UCS-BLOCK"), .processor=processUcsBlockOperands}, + {.name=NULL, .processor=processUcsCharOperands} + }; + + properties = propertyTable; + } else { + static const DataProperty propertyTable[] = { + {.name=WC_C("ENCODING"), .processor=processEncodingOperands}, + // {.name=WC_C("NAME"), .processor=processNameOperands}, + // {.name=WC_C("LOCALES"), .processor=processLocalesOperands}, + // {.name=WC_C("UCS-SUFFIX"), .processor=processUcsSuffixOperands}, + {.name=WC_C("DELEGATE"), .processor=processDelegateOperands}, + // {.name=WC_C("UTF8-STRING"), .processor=processUtf8StringOperands}, + {.name=WC_C("UCS-BLOCK"), .processor=processUcsBlockOperands}, + {.name=WC_C("UCS-CHAR"), .processor=processUcsCharOperands}, + {.name=WC_C("UNICODE-CHAR"), .processor=processUnicodeCharOperands}, + // {.name=WC_C("UNKNOWN-CHAR"), .processor=processUnknownCharOperands}, + {.name=NULL, .processor=NULL} + }; + + properties = propertyTable; + } + + return processPropertyOperand(file, properties, "gnome braille directive", data); +} + +TextTableData * +processGnomeBrailleStream (FILE *stream, const char *name) { + TextTableData *ttd; + + inUcsBlock = 0; + if ((ttd = processTextTableLines(stream, name, processGnomeBrailleLine))) { + if (inUcsBlock) { + reportDataError(NULL, "unterminated UCS block"); + } + }; + + return ttd; +} diff --git a/Programs/ttb_internal.h b/Programs/ttb_internal.h new file mode 100644 index 0000000000000000000000000000000000000000..bc5f73fe442d9cf81b9b7c0c04e79428c703791e --- /dev/null +++ b/Programs/ttb_internal.h @@ -0,0 +1,67 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#ifndef BRLTTY_INCLUDED_TTB_INTERNAL +#define BRLTTY_INCLUDED_TTB_INTERNAL + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include "bitmask.h" +#include "unicode.h" + +typedef uint32_t TextTableOffset; + +#define CHARSET_BYTE_BITS 8 +#define CHARSET_BYTE_COUNT (1 << CHARSET_BYTE_BITS) +#define CHARSET_BYTE_MAXIMUM (CHARSET_BYTE_COUNT - 1) + +typedef struct { + unsigned char cells[UNICODE_CELLS_PER_ROW]; + BITMASK(defined, UNICODE_CELLS_PER_ROW, char); +} UnicodeRowEntry; + +typedef struct { + TextTableOffset rows[UNICODE_ROWS_PER_PLANE]; +} UnicodePlaneEntry; + +typedef struct { + TextTableOffset planes[UNICODE_PLANES_PER_GROUP]; +} UnicodeGroupEntry; + +typedef struct { + TextTableOffset unicodeGroups[UNICODE_GROUP_COUNT]; + wchar_t dotsToCharacter[0X100]; + BITMASK(dotsCharacterDefined, 0X100, char); +} TextTableHeader; + +struct TextTableStruct { + union { + TextTableHeader *fields; + const unsigned char *bytes; + } header; + + size_t size; +}; + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* BRLTTY_INCLUDED_TTB_INTERNAL */ diff --git a/Programs/ttb_louis.c b/Programs/ttb_louis.c new file mode 100644 index 0000000000000000000000000000000000000000..91de2f8888450ee3cc279fb74fbcd940f24a0c49 --- /dev/null +++ b/Programs/ttb_louis.c @@ -0,0 +1,163 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#include "prologue.h" + +#include "ttb.h" +#include "ttb_internal.h" +#include "ttb_compile.h" + +static int +getUnicodeCharacters (DataFile *file, wchar_t *character, int num, const char *description) { + DataOperand string; + const wchar_t *c; + int i; + + if (getDataOperand(file, &string, description)) { + for (c = string.characters, i = 0; i < num; i++) { + if (*c == '\\') { + c++; + switch (*c) { + case WC_C('\\'): character[i] = WC_C('\\'); continue; + case WC_C('f'): case WC_C('F'): character[i] = WC_C('\f'); continue; + case WC_C('n'): case WC_C('N'): character[i] = WC_C('\n'); continue; + case WC_C('r'): case WC_C('R'): character[i] = WC_C('\r'); continue; + case WC_C('s'): case WC_C('S'): character[i] = WC_C(' ' ); continue; + case WC_C('t'): case WC_C('T'): character[i] = WC_C('\t'); continue; + case WC_C('v'): case WC_C('V'): character[i] = WC_C('\v'); continue; + case WC_C('x'): case WC_C('X'): { + const wchar_t *digit = ++c; + int length = string.length - (digit - string.characters); + + character[i] = 0; + while (length) { + int value; + int shift; + if (!isHexadecimalDigit(*digit, &value, &shift)) break; + digit++; + + character[i] <<= shift; + character[i] |= value; + length -= 1; + } + if (digit == c) goto invalid; + c = digit; + continue; + } + default: + invalid: + reportDataError(file, "unknown escape sequence: %.*" PRIws, + c-string.characters+1, string.characters); + } + } else { + character[i] = *c++; + } + } + return 1; + } + + return 0; +} + +static int +getDots (DataFile *file, unsigned char *dots, const char *description) { + DataOperand string; + int i; + + *dots = 0; + + if (getDataOperand(file, &string, description)) { + for (i = 0; i < string.length; i++) { + if (string.characters[i] >= WC_C('1') && string.characters[i] <= WC_C('8')) { + *dots |= 1 << (string.characters[i] - WC_C('1')); + } else if (string.characters[i] == WC_C('-')) { + reportDataError(file, "no support for multi-cell %.*" PRIws, + string.length, string.characters); + return 0; + } + } + } + + return 1; +} + +static int +processChar (DataFile *file, void *data) { + TextTableData *ttd = data; + wchar_t character; + + if (getUnicodeCharacters(file, &character, 1, "character")) { + unsigned char dots; + + if (getDots(file, &dots, "braille representation")) { + if (!setTextTableCharacter(ttd, character, dots)) return 0; + } + } + + return 1; +} + +static int +processUplow (DataFile *file, void *data) { + TextTableData *ttd = data; + wchar_t characters[2]; + + if (getUnicodeCharacters(file, characters, 2, "characters")) { + unsigned char dots; + + if (getDots(file, &dots, "braille representation")) { + if (!setTextTableCharacter(ttd, characters[0], dots)) return 0; + if (!setTextTableCharacter(ttd, characters[1], dots)) return 0; + } + } + + return 1; +} + +static int +processInclude (DataFile *file, void *data) { + reportDataError(file, "no support for include"); + return 1; +} + +static int +processLibLouisLine (DataFile *file, void *data) { + static const DataProperty propertyTable[] = { + {.name=WC_C("space"), .processor=processChar}, + {.name=WC_C("punctuation"), .processor=processChar}, + {.name=WC_C("digit"), .processor=processChar}, + {.name=WC_C("uplow"), .processor=processUplow}, + {.name=WC_C("letter"), .processor=processChar}, + {.name=WC_C("lowercase"), .processor=processChar}, + {.name=WC_C("uppercase"), .processor=processChar}, + {.name=WC_C("litdigit"), .processor=processChar}, + {.name=WC_C("sign"), .processor=processChar}, + {.name=WC_C("math"), .processor=processChar}, + {.name=WC_C("decpoint"), .processor=processChar}, + {.name=WC_C("hyphen"), .processor=processChar}, + {.name=WC_C("include"), .processor=processInclude}, + {.name=NULL, .processor=NULL} + }; + + return processPropertyOperand(file, propertyTable, "lib louis directive", data); +} + +TextTableData * +processLibLouisStream (FILE *stream, const char *name) { + return processTextTableLines(stream, name, processLibLouisLine); +} diff --git a/Programs/ttb_native.c b/Programs/ttb_native.c new file mode 100644 index 0000000000000000000000000000000000000000..34422553cab378b7049e93d121ce1cdf64f3a130 --- /dev/null +++ b/Programs/ttb_native.c @@ -0,0 +1,196 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#include "prologue.h" + +#include "misc.h" +#include "ttb.h" +#include "ttb_internal.h" +#include "ttb_compile.h" + +static int +getByteOperand (DataFile *file, unsigned char *byte) { + DataString string; + const char *description = "local character"; + + if (getDataString(file, &string, 1, description)) { + if ((string.length == 1) && iswLatin1(string.characters[0])) { + *byte = string.characters[0]; + return 1; + } else { + reportDataError(file, "invalid %s: %.*" PRIws, + description, string.length, string.characters); + } + } + + return 0; +} + +static int +getCharacterOperand (DataFile *file, wchar_t *character) { + DataString string; + const char *description = "unicode character"; + + if (getDataString(file, &string, 0, description)) { + if (!(string.characters[0] & ~UNICODE_CHARACTER_MASK)) { + *character = string.characters[0]; + return 1; + } else { + reportDataError(file, "invalid %s: %.*" PRIws, + description, string.length, string.characters); + } + } + + return 0; +} + +static int +getDotsOperand (DataFile *file, unsigned char *dots) { + if (findDataOperand(file, "cell")) { + wchar_t character; + + if (getDataCharacter(file, &character)) { + int noDots = 0; + wchar_t enclosed = (character == WC_C('('))? WC_C(')'): + 0; + *dots = 0; + + if (!enclosed) { + if (wcschr(WS_C("0"), character)) { + noDots = 1; + } else { + ungetDataCharacters(file, 1); + } + } + + while (getDataCharacter(file, &character)) { + int space = iswspace(character); + + if (enclosed) { + if (character == enclosed) { + enclosed = 0; + break; + } + + if (space) continue; + } else if (space) { + ungetDataCharacters(file, 1); + break; + } + + { + int dot; + + if (noDots || !brlDotNumberToIndex(character, &dot)) { + reportDataError(file, "invalid dot number: %.1" PRIws, &character); + return 0; + } + + { + unsigned char bit = brlDotBits[dot]; + + if (*dots & bit) { + reportDataError(file, "duplicate dot number: %.1" PRIws, &character); + return 0; + } + + *dots |= bit; + } + } + } + + if (enclosed) { + reportDataError(file, "incomplete cell"); + return 0; + } + + return 1; + } + } + + return 0; +} + +static int +processCharOperands (DataFile *file, void *data) { + TextTableData *ttd = data; + wchar_t character; + + if (getCharacterOperand(file, &character)) { + unsigned char dots; + + if (getDotsOperand(file, &dots)) { + if (!setTextTableCharacter(ttd, character, dots)) return 0; + } + } + + return 1; +} + +static int +processByteOperands (DataFile *file, void *data) { + TextTableData *ttd = data; + unsigned char byte; + + if (getByteOperand(file, &byte)) { + unsigned char dots; + + if (getDotsOperand(file, &dots)) { + if (!setTextTableByte(ttd, byte, dots)) return 0; + } + } + + return 1; +} + +static int +processTextTableLine (DataFile *file, void *data) { + static const DataProperty properties[] = { + {.name=WS_C("char"), .processor=processCharOperands}, + {.name=WS_C("byte"), .processor=processByteOperands}, + {.name=WS_C("include"), .processor=processIncludeOperands}, + {.name=NULL, .processor=NULL} + }; + + return processPropertyOperand(file, properties, "text table directive", data); +} + +TextTableData * +processTextTableStream (FILE *stream, const char *name) { + return processTextTableLines(stream, name, processTextTableLine); +} + +TextTable * +compileTextTable (const char *name) { + TextTable *table = NULL; + FILE *stream; + + if ((stream = openDataFile(name, "r", 0))) { + TextTableData *ttd; + + if ((ttd = processTextTableStream(stream, name))) { + table = makeTextTable(ttd); + + destroyTextTableData(ttd); + } + + fclose(stream); + } + + return table; +} diff --git a/Programs/ttb_translate.c b/Programs/ttb_translate.c new file mode 100644 index 0000000000000000000000000000000000000000..d18a90257a3684fbbeef169a0165cc9f688d4ccb --- /dev/null +++ b/Programs/ttb_translate.c @@ -0,0 +1,116 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#include "prologue.h" + +#include + +#include "charset.h" +#include "ttb.h" +#include "ttb_internal.h" +#include "brldots.h" + +static const unsigned char internalTextTableBytes[] = { +#include "text.auto.h" +}; + +static TextTable internalTextTable = { + .header.bytes = internalTextTableBytes, + .size = 0 +}; + +TextTable *textTable = &internalTextTable; + +static const void * +getTextTableItem (TextTable *table, TextTableOffset offset) { + return &table->header.bytes[offset]; +} + +static const UnicodeGroupEntry * +getUnicodeGroupEntry (TextTable *table, wchar_t character) { + TextTableOffset offset = table->header.fields->unicodeGroups[UNICODE_GROUP_NUMBER(character)]; + if (offset) return getTextTableItem(table, offset); + return NULL; +} + +static const UnicodePlaneEntry * +getUnicodePlaneEntry (TextTable *table, wchar_t character) { + const UnicodeGroupEntry *group = getUnicodeGroupEntry(table, character); + + if (group) { + TextTableOffset offset = group->planes[UNICODE_PLANE_NUMBER(character)]; + if (offset) return getTextTableItem(table, offset); + } + + return NULL; +} + +static const UnicodeRowEntry * +getUnicodeRowEntry (TextTable *table, wchar_t character) { + const UnicodePlaneEntry *plane = getUnicodePlaneEntry(table, character); + + if (plane) { + TextTableOffset offset = plane->rows[UNICODE_ROW_NUMBER(character)]; + if (offset) return getTextTableItem(table, offset); + } + + return NULL; +} + +static const unsigned char * +getUnicodeCellEntry (TextTable *table, wchar_t character) { + const UnicodeRowEntry *row = getUnicodeRowEntry(table, character); + + if (row) { + unsigned int cellNumber = UNICODE_CELL_NUMBER(character); + if (BITMASK_TEST(row->defined, cellNumber)) return &row->cells[cellNumber]; + } + + return NULL; +} + +unsigned char +convertCharacterToDots (TextTable *table, wchar_t character) { + switch (character & ~UNICODE_CELL_MASK) { + case UNICODE_BRAILLE_ROW: + return character & UNICODE_CELL_MASK; + + case 0XF000: { + wint_t wc = convertCharToWchar(character & UNICODE_CELL_MASK); + if (wc == WEOF) goto unknownCharacter; + character = wc; + } + + default: { + const unsigned char *cell; + if ((cell = getUnicodeCellEntry(table, character))) return *cell; + + unknownCharacter: + if ((cell = getUnicodeCellEntry(table, UNICODE_REPLACEMENT_CHARACTER))) return *cell; + if ((cell = getUnicodeCellEntry(table, WC_C('?')))) return *cell; + return BRL_DOT1 | BRL_DOT2 | BRL_DOT3 | BRL_DOT4 | BRL_DOT5 | BRL_DOT6 | BRL_DOT7 | BRL_DOT8; + } + } +} + +wchar_t +convertDotsToCharacter (TextTable *table, unsigned char dots) { + const TextTableHeader *header = table->header.fields; + if (BITMASK_TEST(header->dotsCharacterDefined, dots)) return header->dotsToCharacter[dots]; + return UNICODE_REPLACEMENT_CHARACTER; +} diff --git a/Programs/ttbtest.c b/Programs/ttbtest.c new file mode 100644 index 0000000000000000000000000000000000000000..0ac089211eb246b15bc79ec169c7886705c0f0f0 --- /dev/null +++ b/Programs/ttbtest.c @@ -0,0 +1,1583 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#include "prologue.h" + +#include +#include +#include +#include + +#ifdef HAVE_ICU +#include +#endif /* HAVE_ICU */ + +#include "program.h" +#include "options.h" +#include "misc.h" +#include "brldots.h" +#include "charset.h" +#include "ttb.h" +#include "ttb_internal.h" +#include "ttb_compile.h" + +static char *opt_charset; +static char *opt_inputFormat; +static char *opt_outputFormat; +static char *opt_tablesDirectory; + +#ifdef ENABLE_API +static int opt_edit; +#endif /* ENABLE_API */ + +BEGIN_OPTION_TABLE(programOptions) + { .letter = 'T', + .word = "tables-directory", + .flags = OPT_Hidden, + .argument = "directory", + .setting.string = &opt_tablesDirectory, + .defaultSetting = DATA_DIRECTORY, + .description = "Path to directory containing text tables." + }, + +#ifdef ENABLE_API + { .letter = 'e', + .word = "edit", + .setting.flag = &opt_edit, + .description = "Edit table." + }, +#endif /* ENABLE_API */ + + { .letter = 'i', + .word = "input-format", + .argument = "format", + .setting.string = &opt_inputFormat, + .description = "Format of input file." + }, + + { .letter = 'o', + .word = "output-format", + .argument = "format", + .setting.string = &opt_outputFormat, + .description = "Format of output file." + }, + + { .letter = 'c', + .word = "charset", + .argument = "charset", + .setting.string = &opt_charset, + .description = "8-bit character set to use." + }, +END_OPTION_TABLE + +static const BrlDotTable dotsInternal = { + BRL_DOT1, BRL_DOT2, BRL_DOT3, BRL_DOT4, + BRL_DOT5, BRL_DOT6, BRL_DOT7, BRL_DOT8 +}; + +static const BrlDotTable dots12345678 = { + 0X01, 0X02, 0X04, 0X08, 0X10, 0X20, 0X40, 0X80 +}; + +static const BrlDotTable dots14253678 = { + 0X01, 0X04, 0X10, 0X02, 0X08, 0X20, 0X40, 0X80 +}; + +static unsigned char +mapDots (unsigned char input, const BrlDotTable from, const BrlDotTable to) { + unsigned char output = 0; + { + int dot; + for (dot=0; dotunicodeGroups[groupNumber]; + + if (groupOffset) { + const UnicodeGroupEntry *group = getTextTableItem(ttd, groupOffset); + unsigned int planeNumber; + + for (planeNumber=0; planeNumberplanes[planeNumber]; + + if (planeOffset) { + const UnicodePlaneEntry *plane = getTextTableItem(ttd, planeOffset); + unsigned int rowNumber; + + for (rowNumber=0; rowNumberrows[rowNumber]; + + if (rowOffset) { + const UnicodeRowEntry *row = getTextTableItem(ttd, rowOffset); + unsigned int cellNumber; + + for (cellNumber=0; cellNumberdefined, cellNumber)) { + wchar_t character = UNICODE_CHARACTER(groupNumber, planeNumber, rowNumber, cellNumber); + + if (*opt_charset) + if (convertWcharToChar(character) != EOF) + continue; + + { + const unsigned char *cell = &row->cells[cellNumber]; + if (!writer(file, character, *cell, NULL, data)) return 0; + } + } + } + } + } + } + } + } + } + } + + return 1; +} + +static int +writeUtf8 (FILE *file, wchar_t character) { + Utf8Buffer utf8; + size_t utfs = convertWcharToUtf8(character, utf8); + return fprintf(file, "%.*s", utfs, utf8) != EOF; +} + +static TextTableData * +readTable_native (const char *path, FILE *file, void *data) { + return processTextTableStream(file, path); +} + +static int +writeDots_native (FILE *file, unsigned char dots) { + unsigned char dot; + + if (fprintf(file, "(") == EOF) return 0; + for (dot=0X01; dot; dot<<=1) { + char number = (dots & dot)? brlDotToNumber(dot): ' '; + if (fprintf(file, "%c", number) == EOF) return 0; + } + if (fprintf(file, ")") == EOF) return 0; + + return 1; +} + +static int +writeCharacter_native (FILE *file, wchar_t character, unsigned char dots, const unsigned char *byte, void *data) { + uint32_t value = character; + + if (fprintf(file, "char ") == EOF) goto error; + + if (value < 0X100) { + if (fprintf(file, "\\x%02X", value) == EOF) goto error; + } else if (value < 0X10000) { + if (fprintf(file, "\\u%04X", value) == EOF) goto error; + } else { + if (fprintf(file, "\\U%08X", value) == EOF) goto error; + } + + if (fprintf(file, "\t") == EOF) goto error; + if (!writeDots_native(file, dots)) goto error; + if (fprintf(file, " #") == EOF) goto error; + + if (*opt_charset) { + const int width = 2; + char buffer[width + 1]; + + if (byte) { + snprintf(buffer, sizeof(buffer), "%0*X", width, *byte); + } else { + snprintf(buffer, sizeof(buffer), "%*s", width, ""); + } + + if (fprintf(file, " %s", buffer) == EOF) goto error; + } + + if (fprintf(file, " ") == EOF) goto error; + if (!writeUtf8(file, UNICODE_BRAILLE_ROW | dots)) goto error; + + if (fprintf(file, " ") == EOF) goto error; + if (!writeUtf8(file, ((iswprint(character) && !iswspace(character))? character: WC_C(' ')))) goto error; + +#ifdef HAVE_ICU + { + char name[0X40]; + UErrorCode error = U_ZERO_ERROR; + + u_charName(character, U_EXTENDED_CHAR_NAME, name, sizeof(name), &error); + if (U_SUCCESS(error)) { + if (fprintf(file, " [%s]", name) == EOF) return 0; + } + } +#endif /* HAVE_ICU */ + + if (fprintf(file, "\n") == EOF) goto error; + return 1; + +error: + return 0; +} + +static int +writeTable_native (const char *path, FILE *file, TextTableData *ttd, void *data) { + if (fprintf(file, "# generated by %s:", programName) == EOF) goto error; + if (*opt_charset) + if (fprintf(file, " charset=%s", opt_charset) == EOF) + goto error; + if (fprintf(file, "\n") == EOF) goto error; + + if (!writeCharacters(file, ttd, writeCharacter_native, data)) goto error; + return 1; + +error: + return 0; +} + +static TextTableData * +readTable_binary (const char *path, FILE *file, void *data) { + TextTableData *ttd; + + if ((ttd = newTextTableData())) { + int count = 0X100; + int byte; + + for (byte=0; byte 0X20) && (character < 0X7F)) { + wint_t value = character; + if (fprintf(file, "%" PRIwc, value) == EOF) return 0; + } else { + unsigned long int value = character; + int digits = (value < (1 << 16))? 4: + (value < (1 << 20))? 5: + 8; + if (fprintf(file, "\\x%0*lx", digits, value) == EOF) return 0; + } + + if (fprintf(file, "\t") == EOF) return 0; + if (!dots) { + if (fprintf(file, "0") == EOF) return 0; + } else { + for (i = 1; i <= 8; i++) { + if (dots & (1 << (i - 1))) { + if (fprintf(file, "%c", '0' + i) == EOF) return 0; + } + } + } + +#ifdef HAVE_ICU + { + char name[0X40]; + UErrorCode error = U_ZERO_ERROR; + + u_charName(character, U_EXTENDED_CHAR_NAME, name, sizeof(name), &error); + if (U_SUCCESS(error)) { + if (fprintf(file, "\t# %s", name) == EOF) return 0; + } + } +#endif /* HAVE_ICU */ + + if (fprintf(file, "\n") == EOF) return 0; + return 1; +} + +static int +writeTable_libLouis (const char *path, FILE *file, TextTableData *ttd, void *data) { + if (fprintf(file, "# generated by %s\n", programName) == EOF) goto error; + if (!writeCharacters(file, ttd, writeCharacter_libLouis, data)) goto error; + return 1; + +error: + return 0; +} +typedef struct { + const char *name; + TableReader *read; + TableWriter *write; + void *data; +} FormatEntry; + +static const FormatEntry formatEntries[] = { + {"ttb", readTable_native, writeTable_native, NULL}, + {"a2b", readTable_binary, writeTable_binary, &dots12345678}, + {"sbl", readTable_binary, writeTable_binary, &dots14253678}, + +#ifdef HAVE_ICONV_H + {"gnb", readTable_gnome, writeTable_gnome, NULL}, +#endif /* HAVE_ICONV_H */ + + {"ctb", readTable_libLouis, writeTable_libLouis, NULL}, + + {NULL} +}; + +static const FormatEntry * +findFormatEntry (const char *name) { + const FormatEntry *format = formatEntries; + while (format->name) { + if (strcmp(name, format->name) == 0) return format; + format += 1; + } + return NULL; +} + +static const FormatEntry * +getFormatEntry (const char *name, const char *path, const char *description) { + if (!(name && *name)) { + name = locatePathExtension(path); + + if (!(name && *++name)) { + LogPrint(LOG_ERR, "unspecified %s format.", description); + exit(2); + } + } + + { + const FormatEntry *format = findFormatEntry(name); + if (format) return format; + } + + LogPrint(LOG_ERR, "unknown %s format: %s", description, name); + exit(2); +} + +static const char *inputPath; +static const char *outputPath; +static const FormatEntry *inputFormat; +static const FormatEntry *outputFormat; + +static FILE * +openTable (const char **file, const char *mode, const char *directory, FILE *stdStream, const char *stdName) { + if (stdStream) { + if (strcmp(*file, "-") == 0) { + *file = stdName; + return stdStream; + } + } + + if (directory) { + const char *path = makePath(directory, *file); + if (!path) return NULL; + *file = path; + } + + { + FILE *stream = fopen(*file, mode); + if (!stream) LogPrint(LOG_ERR, "table open error: %s: %s", *file, strerror(errno)); + return stream; + } +} + +static int +convertTable (void) { + int status; + FILE *inputFile = openTable(&inputPath, "r", opt_tablesDirectory, stdin, ""); + + if (inputFile) { + TextTableData *ttd; + + if ((ttd = inputFormat->read(inputPath, inputFile, inputFormat->data))) { + if (outputPath) { + FILE *outputFile = openTable(&outputPath, "w", NULL, stdout, ""); + + if (outputFile) { + if (outputFormat->write(outputPath, outputFile, ttd, outputFormat->data)) { + status = 0; + } else { + status = 6; + } + + fclose(outputFile); + } else { + status = 5; + } + } else { + status = 0; + } + + destroyTextTableData(ttd); + } else { + status = 4; + } + + fclose(inputFile); + } else { + status = 3; + } + + return status; +} + +#ifdef ENABLE_API +#define BRLAPI_NO_DEPRECATED +#include "brlapi.h" + +#undef USE_CURSES +#undef USE_FUNC_GET_WCH +#if defined(HAVE_PKG_CURSES) +#define USE_CURSES +#include + +#elif defined(HAVE_PKG_NCURSES) +#define USE_CURSES +#include + +#elif defined(HAVE_PKG_NCURSESW) +#define USE_CURSES +#define USE_FUNC_GET_WCH +#include + +#else /* standard input/output */ +#warning curses package either unspecified or unsupported +#define printw printf +#define erase() printf("\r\n\v") +#define refresh() fflush(stdout) +#define beep() printf("\a") +#endif /* curses package */ + +typedef struct { + TextTableData *ttd; + unsigned updated:1; + + const char *charset; + union { + wchar_t unicode; + unsigned char byte; + } character; + + brlapi_fileDescriptor brlapiFileDescriptor; + unsigned int displayWidth; + unsigned int displayHeight; + const char *brlapiErrorFunction; + const char *brlapiErrorMessage; +} EditTableData; + +static int +haveBrailleDisplay (EditTableData *etd) { + return etd->brlapiFileDescriptor != (brlapi_fileDescriptor)-1; +} + +static void +setBrlapiError (EditTableData *etd, const char *function) { + if ((etd->brlapiErrorFunction = function)) { + etd->brlapiErrorMessage = brlapi_strerror(&brlapi_error); + } else { + etd->brlapiErrorMessage = NULL; + } +} + +static void +releaseBrailleDisplay (EditTableData *etd) { + brlapi_closeConnection(); + etd->brlapiFileDescriptor = (brlapi_fileDescriptor)-1; +} + +static int +claimBrailleDisplay (EditTableData *etd) { + etd->brlapiFileDescriptor = brlapi_openConnection(NULL, NULL); + if (haveBrailleDisplay(etd)) { + if (brlapi_getDisplaySize(&etd->displayWidth, &etd->displayHeight) != -1) { + if (brlapi_enterTtyMode(BRLAPI_TTY_DEFAULT, NULL) != -1) { + setBrlapiError(etd, NULL); + return 1; + } else { + setBrlapiError(etd, "brlapi_enterTtyMode"); + } + } else { + setBrlapiError(etd, "brlapi_getDisplaySize"); + } + + releaseBrailleDisplay(etd); + } else { + setBrlapiError(etd, "brlapi_openConnection"); + } + + return 0; +} + +static int +getCharacter (EditTableData *etd, wchar_t *character) { + if (etd->charset) { + wint_t wc = convertCharToWchar(etd->character.byte); + if (wc == WEOF) return 0;; + *character = wc; + } else { + *character = etd->character.unicode; + } + + return 1; +} + +static wchar_t * +makeCharacterDescription (TextTableData *ttd, wchar_t character, size_t *length, int *defined, unsigned char *braille) { + char buffer[0X100]; + int characterIndex; + int brailleIndex; + int descriptionLength; + + unsigned char dots; + int gotDots = getDots(ttd, character, &dots); + + wchar_t printableCharacter; + char printablePrefix; + + printableCharacter = character; + if (iswLatin1(printableCharacter)) { + printablePrefix = '^'; + if (!(printableCharacter & 0X60)) { + printableCharacter |= 0X40; + if (printableCharacter & 0X80) printablePrefix = '~'; + } else if (printableCharacter == 0X7F) { + printableCharacter ^= 0X40; + } else if (printableCharacter != printablePrefix) { + printablePrefix = ' '; + } + } else { + printablePrefix = ' '; + } + if (!gotDots) dots = 0; + +#define DOT(n) ((dots & BRLAPI_DOT##n)? ((n) + '0'): ' ') + { + uint32_t value = character; + + snprintf(buffer, sizeof(buffer), + "%04" PRIX32 " %c%nx %nx %c%c%c%c%c%c%c%c%c%c%n", + value, printablePrefix, &characterIndex, &brailleIndex, + (gotDots? '[': ' '), + DOT(1), DOT(2), DOT(3), DOT(4), DOT(5), DOT(6), DOT(7), DOT(8), + (gotDots? ']': ' '), + &descriptionLength); + } +#undef DOT + +#ifdef HAVE_ICU + { + char *name = buffer + descriptionLength + 1; + int size = buffer + sizeof(buffer) - name; + UErrorCode error = U_ZERO_ERROR; + + u_charName(character, U_EXTENDED_CHAR_NAME, name, size, &error); + if (U_SUCCESS(error)) { + descriptionLength += strlen(name) + 1; + *--name = ' '; + } + } +#endif /* HAVE_ICU */ + + { + wchar_t *description = calloc(descriptionLength+1, sizeof(*description)); + if (description) { + int i; + for (i=0; ittd, character, &length, &gotDots, &dots); + + if (description) { + ok = 1; + erase(); + +#if defined(USE_CURSES) + printw("Left/Right: previous/next %s character\n", + etd->charset? etd->charset: "unicode"); + printw("Up/Down: previous/next defined character\n"); + printw("Home/End: first/last defined character\n"); + +#define DOT(n) printw("F%u: %s dot %u ", n, ((dots & BRLAPI_DOT##n)? "lower": "raise"), n) + DOT(1); + DOT(5); + printw("F9: %s", + !gotCharacter? "": + !gotDots? "define (as empty cell)": + dots? "clear all dots": + "undefine character"); + printw("\n"); + + DOT(2); + DOT(6); + printw("F10:"); + { + static const char *label_SwitchCase = "switch case"; + const char *label = NULL; + if (etd->charset) { + if (isalpha(etd->character.byte)) label = label_SwitchCase; + } else { + if (iswalpha(etd->character.unicode)) label = label_SwitchCase; + } + if (label) printw(" %s", label); + } + printw("\n"); + + DOT(3); + DOT(7); + printw("F11: %s", etd->updated? "save table": ""); + printw("\n"); + + DOT(4); + DOT(8); + printw("F12: exit table editor"); + if (etd->updated) printw(" (unsaved changes)"); + printw("\n"); +#undef DOT + + printw("\n"); +#else /* standard input/output */ +#endif /* write header */ + + if (etd->charset) { + printw("%02X: %s\n", etd->character.byte, etd->charset); + } + + printCharacterString(description); + printw("\n"); + +#define DOT(n) ((dots & BRLAPI_DOT##n)? '#': ' ') + printw(" +---+ \n"); + printw("1|%c %c|4\n", DOT(1), DOT(4)); + printw("2|%c %c|5\n", DOT(2), DOT(5)); + printw("3|%c %c|6\n", DOT(3), DOT(6)); + printw("7|%c %c|8\n", DOT(7), DOT(8)); + printw(" +---+ \n"); +#undef DOT + + if (etd->brlapiErrorFunction) { + printw("BrlAPI error: %s: %s\n", + etd->brlapiErrorFunction, etd->brlapiErrorMessage); + setBrlapiError(etd, NULL); + } + + refresh(); + + if (haveBrailleDisplay(etd)) { + brlapi_writeArguments_t args = BRLAPI_WRITEARGUMENTS_INITIALIZER; + wchar_t text[etd->displayWidth]; + + { + size_t count = MIN(etd->displayWidth, length); + wmemcpy(text, description, count); + wmemset(&text[count], WC_C(' '), etd->displayWidth-count); + } + + args.regionBegin = 1; + args.regionSize = etd->displayWidth; + args.text = (char *)text; + args.textSize = etd->displayWidth * sizeof(text[0]); + args.charset = "WCHAR_T"; + + if (brlapi_write(&args) == -1) { + setBrlapiError(etd, "brlapi_write"); + releaseBrailleDisplay(etd); + } + } + + free(description); + } + + return ok; +} + +static void +setPreviousActualCharacter (EditTableData *etd) { + if (etd->charset) { + etd->character.byte = (etd->character.byte - 1) & CHARSET_BYTE_MAXIMUM; + } else { + etd->character.unicode = (etd->character.unicode - 1) & UNICODE_CHARACTER_MASK; + } +} + +static void +setNextActualCharacter (EditTableData *etd) { + if (etd->charset) { + etd->character.byte = (etd->character.byte + 1) & CHARSET_BYTE_MAXIMUM; + } else { + etd->character.unicode = (etd->character.unicode + 1) & UNICODE_CHARACTER_MASK; + } +} + +static void +setFirstActualCharacter (EditTableData *etd) { + if (etd->charset) { + etd->character.byte = 0; + } else { + etd->character.unicode = 0; + } +} + +static void +setLastActualCharacter (EditTableData *etd) { + if (etd->charset) { + etd->character.byte = CHARSET_BYTE_MAXIMUM; + } else { + etd->character.unicode = UNICODE_CHARACTER_MASK; + } +} + +static int +findCharacter (EditTableData *etd, int backward) { + const int increment = backward? -1: 1; + + if (etd->charset) { + const int byteLimit = backward? 0: CHARSET_BYTE_MAXIMUM; + const int byteReset = CHARSET_BYTE_MAXIMUM - byteLimit - increment; + + unsigned char byte = etd->character.byte; + int counter = CHARSET_BYTE_COUNT; + + do { + if (byte == byteLimit) byte = byteReset; + byte += increment; + + { + wint_t wc = convertCharToWchar(byte); + + if (wc != WEOF) { + if (getUnicodeCellEntry(etd->ttd, wc)) { + etd->character.byte = byte; + return 1; + } + } + } + } while ((counter -= 1) >= 0); + } else { + const int groupLimit = backward? 0: UNICODE_GROUP_MAXIMUM; + const int planeLimit = backward? 0: UNICODE_PLANE_MAXIMUM; + const int rowLimit = backward? 0: UNICODE_ROW_MAXIMUM; + const int cellLimit = backward? 0: UNICODE_CELL_MAXIMUM; + + const int groupReset = UNICODE_GROUP_MAXIMUM - groupLimit; + const int planeReset = UNICODE_PLANE_MAXIMUM - planeLimit; + const int rowReset = UNICODE_ROW_MAXIMUM - rowLimit; + const int cellReset = UNICODE_CELL_MAXIMUM - cellLimit - increment; + + int groupNumber = UNICODE_GROUP_NUMBER(etd->character.unicode); + int planeNumber = UNICODE_PLANE_NUMBER(etd->character.unicode); + int rowNumber = UNICODE_ROW_NUMBER(etd->character.unicode); + int cellNumber = UNICODE_CELL_NUMBER(etd->character.unicode); + + const TextTableHeader *header = getTextTableHeader(etd->ttd); + int groupCounter = UNICODE_GROUP_COUNT; + + do { + TextTableOffset groupOffset = header->unicodeGroups[groupNumber]; + + if (groupOffset) { + const UnicodeGroupEntry *group = getTextTableItem(etd->ttd, groupOffset); + + while (1) { + TextTableOffset planeOffset = group->planes[planeNumber]; + + if (planeOffset) { + const UnicodePlaneEntry *plane = getTextTableItem(etd->ttd, planeOffset); + + while (1) { + TextTableOffset rowOffset = plane->rows[rowNumber]; + + if (rowOffset) { + const UnicodeRowEntry *row = getTextTableItem(etd->ttd, rowOffset); + + while (cellNumber != cellLimit) { + cellNumber += increment; + + if (BITMASK_TEST(row->defined, cellNumber)) { + etd->character.unicode = UNICODE_CHARACTER(groupNumber, planeNumber, rowNumber, cellNumber); + return 1; + } + } + } + + cellNumber = cellReset; + + if (rowNumber == rowLimit) break; + rowNumber += increment; + } + } + + rowNumber = rowReset; + cellNumber = cellReset; + + if (planeNumber == planeLimit) break; + planeNumber += increment; + } + } + + planeNumber = planeReset; + rowNumber = rowReset; + cellNumber = cellReset; + + if (groupNumber == groupLimit) { + groupNumber = groupReset; + } else { + groupNumber += increment; + } + } while ((groupCounter -= 1) >= 0); + } + + return 0; +} + +static int +setPreviousDefinedCharacter (EditTableData *etd) { + return findCharacter(etd, 1); +} + +static int +setNextDefinedCharacter (EditTableData *etd) { + return findCharacter(etd, 0); +} + +static int +setFirstDefinedCharacter (EditTableData *etd) { + setLastActualCharacter(etd); + if (setNextDefinedCharacter(etd)) return 1; + + setFirstActualCharacter(etd); + return 0; +} + +static int +setLastDefinedCharacter (EditTableData *etd) { + setFirstActualCharacter(etd); + if (setPreviousDefinedCharacter(etd)) return 1; + + setLastActualCharacter(etd); + return 0; +} + +static int +setAlternateCharacter (EditTableData *etd) { + if (etd->charset) { + if (isalpha(etd->character.byte)) { + if (islower(etd->character.byte)) { + etd->character.byte = toupper(etd->character.byte); + return 1; + } + + if (isupper(etd->character.byte)) { + etd->character.byte = tolower(etd->character.byte); + return 1; + } + } + } else { + if (iswalpha(etd->character.unicode)) { + if (iswlower(etd->character.unicode)) { + etd->character.unicode = towupper(etd->character.unicode); + return 1; + } + + if (iswupper(etd->character.unicode)) { + etd->character.unicode = towlower(etd->character.unicode); + return 1; + } + } + } + + return 0; +} + +static int +toggleCharacter (EditTableData *etd) { + wchar_t character; + if (!getCharacter(etd, &character)) return 0; + + { + const unsigned char *cell = getUnicodeCellEntry(etd->ttd, character); + if (cell && !*cell) { + unsetTextTableCharacter(etd->ttd, character); + } else if (!setTextTableCharacter(etd->ttd, character, 0)) { + return 0; + } + } + + etd->updated = 1; + return 1; +} + +static int +toggleDot (EditTableData *etd, unsigned char dot) { + wchar_t character; + + if (getCharacter(etd, &character)) { + const unsigned char *cell = getUnicodeCellEntry(etd->ttd, character); + unsigned char dots = cell? *cell: 0; + + if (setTextTableCharacter(etd->ttd, character, dots^dot)) { + etd->updated = 1; + return 1; + } + } + + return 0; +} + +static int +setDots (EditTableData *etd, unsigned char dots) { + wchar_t character; + + if (getCharacter(etd, &character)) { + if (setTextTableCharacter(etd->ttd, character, dots)) { + etd->updated = 1; + return 1; + } + } + + return 0; +} + +static int +saveTable (EditTableData *etd) { + int ok = 0; + FILE *outputFile; + + if (!outputPath) outputPath = inputPath; + if (!outputFormat) outputFormat = inputFormat; + + if ((outputFile = openTable(&outputPath, "w", NULL, stdout, ""))) { + if (outputFormat->write(outputPath, outputFile, etd->ttd, outputFormat->data)) { + ok = 1; + etd->updated = 0; + } + + fclose(outputFile); + } + + return ok; +} + +static int +doKeyboardCommand (EditTableData *etd) { +#undef IS_UNICODE_CHARACTER +#if defined(USE_CURSES) +#ifdef USE_FUNC_GET_WCH +#define IS_UNICODE_CHARACTER + wint_t ch; + int ret = get_wch(&ch); + + if (ret == KEY_CODE_YES) +#else /* USE_FUNC_GET_WCH */ + int ch = getch(); + + if (ch >= 0X100) +#endif /* USE_FUNC_GET_WCH */ + { + switch (ch) { + case KEY_LEFT: + setPreviousActualCharacter(etd); + break; + + case KEY_RIGHT: + setNextActualCharacter(etd); + break; + + case KEY_UP: + if (!setPreviousDefinedCharacter(etd)) beep(); + break; + + case KEY_DOWN: + if (!setNextDefinedCharacter(etd)) beep();; + break; + + case KEY_HOME: + if (!setFirstDefinedCharacter(etd)) beep(); + break; + + case KEY_END: + if (!setLastDefinedCharacter(etd)) beep(); + break; + + case KEY_F(1): + if (!toggleDot(etd, BRLAPI_DOT1)) beep(); + break; + + case KEY_F(2): + if (!toggleDot(etd, BRLAPI_DOT2)) beep(); + break; + + case KEY_F(3): + if (!toggleDot(etd, BRLAPI_DOT3)) beep(); + break; + + case KEY_F(4): + if (!toggleDot(etd, BRLAPI_DOT4)) beep(); + break; + + case KEY_F(5): + if (!toggleDot(etd, BRLAPI_DOT5)) beep(); + break; + + case KEY_F(6): + if (!toggleDot(etd, BRLAPI_DOT6)) beep(); + break; + + case KEY_F(7): + if (!toggleDot(etd, BRLAPI_DOT7)) beep(); + break; + + case KEY_F(8): + if (!toggleDot(etd, BRLAPI_DOT8)) beep(); + break; + + case KEY_F(9): + if (!toggleCharacter(etd)) beep(); + break; + + case KEY_F(10): + if (!setAlternateCharacter(etd)) beep(); + break; + + case KEY_F(11): + if (!(etd->updated && saveTable(etd))) beep(); + break; + + case KEY_F(12): + return 0; + + default: + beep(); + break; + } + } else + +#ifdef USE_FUNC_GET_WCH + if (ret == OK) +#endif /* USE_FUNC_GET_WCH */ +#else /* standard input/output */ +#define IS_UNICODE_CHARACTER + wint_t ch = fgetwc(stdin); + if (ch == WEOF) return 0; +#endif /* read character */ + + { + wint_t character; + +#ifdef IS_UNICODE_CHARACTER + character = ch; +#else /* IS_UNICODE_CHARACTER */ + character = convertCharToWchar(ch); +#endif /* IS_UNICODE_CHARACTER */ + + if ((character >= UNICODE_BRAILLE_ROW) && + (character <= (UNICODE_BRAILLE_ROW | UNICODE_CELL_MASK))) { + if (!setDots(etd, character & UNICODE_CELL_MASK)) beep(); + } else { + if (etd->charset) { + int c; + +#ifdef IS_UNICODE_CHARACTER + c = convertWcharToChar(ch); +#else /* IS_UNICODE_CHARACTER */ + c = ch; +#endif /* IS_UNICODE_CHARACTER */ + + if (c != EOF) { + etd->character.byte = c; + } else { + beep(); + } + } else if (character != WEOF) { + etd->character.unicode = character; + } else { + beep(); + } + } + } + + return 1; +} + +static int +doBrailleCommand (EditTableData *etd) { + if (haveBrailleDisplay(etd)) { + brlapi_keyCode_t key; + int ret = brlapi_readKey(0, &key); + + if (ret == 1) { + unsigned long code = key & BRLAPI_KEY_CODE_MASK; + + switch (key & BRLAPI_KEY_TYPE_MASK) { + case BRLAPI_KEY_TYPE_CMD: + switch (code & BRLAPI_KEY_CMD_BLK_MASK) { + case 0: + switch (code) { + case BRLAPI_KEY_CMD_FWINLT: + setPreviousActualCharacter(etd); + break; + + case BRLAPI_KEY_CMD_FWINRT: + setNextActualCharacter(etd); + break; + + case BRLAPI_KEY_CMD_LNUP: + if (!setPreviousDefinedCharacter(etd)) beep(); + break; + + case BRLAPI_KEY_CMD_LNDN: + if (!setNextDefinedCharacter(etd)) beep(); + break; + + case BRLAPI_KEY_CMD_TOP_LEFT: + case BRLAPI_KEY_CMD_TOP: + if (!setFirstDefinedCharacter(etd)) beep(); + break; + + case BRLAPI_KEY_CMD_BOT_LEFT: + case BRLAPI_KEY_CMD_BOT: + if (!setLastDefinedCharacter(etd)) beep(); + break; + + default: + beep(); + break; + } + break; + + case BRLAPI_KEY_CMD_PASSDOTS: + if (!setDots(etd, code & BRLAPI_KEY_CMD_ARG_MASK)) beep(); + break; + + default: + beep(); + break; + } + break; + + case BRLAPI_KEY_TYPE_SYM: { + /* latin1 */ + if (code < 0X100) code |= BRLAPI_KEY_SYM_UNICODE; + + if ((code & 0X1f000000) == BRLAPI_KEY_SYM_UNICODE) { + /* unicode */ + if ((code & 0Xffff00) == UNICODE_BRAILLE_ROW) { + /* Set braille pattern */ + if (!setDots(etd, code & UNICODE_CELL_MASK)) beep(); + } else { + wchar_t character = code & 0XFFFFFF; + + if (etd->charset) { + int c = convertWcharToChar(character); + + if (c != EOF) { + etd->character.byte = c; + } else { + beep(); + } + } else { + etd->character.unicode = character; + } + } + } else { + switch (code) { + case BRLAPI_KEY_SYM_LEFT: + setPreviousActualCharacter(etd); + break; + + case BRLAPI_KEY_SYM_RIGHT: + setNextActualCharacter(etd); + break; + + case BRLAPI_KEY_SYM_UP: + if (!setPreviousDefinedCharacter(etd)) beep(); + break; + + case BRLAPI_KEY_SYM_DOWN: + if (!setNextDefinedCharacter(etd)) beep(); + break; + + case BRLAPI_KEY_SYM_HOME: + if (!setFirstDefinedCharacter(etd)) beep(); + break; + + case BRLAPI_KEY_SYM_END: + if (!setLastDefinedCharacter(etd)) beep(); + break; + + default: + beep(); + break; + } + } + break; + } + + default: + beep(); + break; + } + } else if (ret == -1) { + setBrlapiError(etd, "brlapi_readKey"); + releaseBrailleDisplay(etd); + } + } + + return 1; +} + +static int +editTable (void) { + int status; + EditTableData etd; + + etd.ttd = NULL; + etd.updated = 0; + + { + FILE *inputFile = openTable(&inputPath, "r", opt_tablesDirectory, NULL, NULL); + + if (inputFile) { + if ((etd.ttd = inputFormat->read(inputPath, inputFile, inputFormat->data))) { + status = 0; + } else { + status = 4; + } + + fclose(inputFile); + } else { + status = 3; + } + } + + if (!status) { + claimBrailleDisplay(&etd); + +#if defined(USE_CURSES) + initscr(); + cbreak(); + keypad(stdscr, TRUE); + noecho(); + nonl(); + intrflush(stdscr, FALSE); +#else /* standard input/output */ +#endif /* initialize keyboard and screen */ + + etd.charset = *opt_charset? opt_charset: NULL; + setFirstDefinedCharacter(&etd); + + while (updateCharacterDescription(&etd)) { + fd_set set; + FD_ZERO(&set); + + { + int maximumFileDescriptor = STDIN_FILENO; + FD_SET(STDIN_FILENO, &set); + + if (haveBrailleDisplay(&etd)) { + FD_SET(etd.brlapiFileDescriptor, &set); + if (etd.brlapiFileDescriptor > maximumFileDescriptor) + maximumFileDescriptor = etd.brlapiFileDescriptor; + } + + select(maximumFileDescriptor+1, &set, NULL, NULL, NULL); + } + + if (FD_ISSET(STDIN_FILENO, &set)) + if (!doKeyboardCommand(&etd)) + break; + + if (haveBrailleDisplay(&etd) && FD_ISSET(etd.brlapiFileDescriptor, &set)) + if (!doBrailleCommand(&etd)) + break; + } + + erase(); + refresh(); + +#if defined(USE_CURSES) + endwin(); +#else /* standard input/output */ +#endif /* restore keyboard and screen */ + + if (haveBrailleDisplay(&etd)) releaseBrailleDisplay(&etd); + if (etd.ttd) destroyTextTableData(etd.ttd); + } + + return status; +} +#endif /* ENABLE_API */ + +int +main (int argc, char *argv[]) { + int status; + + { + static const OptionsDescriptor descriptor = { + OPTION_TABLE(programOptions), + .applicationName = "ttbtest", + .argumentsSummary = "input-table [output-table]" + }; + processOptions(&descriptor, &argc, &argv); + } + + { + char **const paths[] = { + &opt_tablesDirectory, + NULL + }; + fixInstallPaths(paths); + } + + if (argc == 0) { + LogPrint(LOG_ERR, "missing input table."); + exit(2); + } + inputPath = *argv++, argc--; + + if (argc > 0) { + outputPath = *argv++, argc--; + } else if (opt_outputFormat && *opt_outputFormat) { + const char *extension = locatePathExtension(inputPath); + int prefix = extension? (extension - inputPath): strlen(inputPath); + char buffer[prefix + 1 + strlen(opt_outputFormat) + 1]; + snprintf(buffer, sizeof(buffer), "%.*s.%s", prefix, inputPath, opt_outputFormat); + outputPath = strdupWrapper(buffer); + } else { + outputPath = NULL; + } + + if (argc > 0) { + LogPrint(LOG_ERR, "too many parameters."); + exit(2); + } + + inputFormat = getFormatEntry(opt_inputFormat, inputPath, "input"); + if (outputPath) { + outputFormat = getFormatEntry(opt_outputFormat, outputPath, "output"); + } else { + outputFormat = NULL; + } + + if (*opt_charset && !setCharset(opt_charset)) { + LogPrint(LOG_ERR, "can't establish character set: %s", opt_charset); + exit(9); + } + +#ifdef ENABLE_API + if (opt_edit) { + status = editTable(); + } else +#endif /* ENABLE_API */ + + { + status = convertTable(); + } + + return status; +} diff --git a/Programs/tunes.c b/Programs/tunes.c index ad425af3ab8c645311add735c0d2fc964c662483..600e55807280c724225fe550502f74410823da0e 100644 --- a/Programs/tunes.c +++ b/Programs/tunes.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -543,7 +544,7 @@ playTune (const TuneDefinition *tune) { unsigned char duration = tune->tactile >> 8; showDotPattern(dots, duration); } else if (prefs.alertMessages && tune->message) { - message(tune->message, 0); + message(NULL, tune->message, 0); } } } diff --git a/Programs/tunes.h b/Programs/tunes.h index 5469dd8411747303c94ed4aa40d66346b98c543f..d46454258e53021890463753e32cbc14466077d2 100644 --- a/Programs/tunes.h +++ b/Programs/tunes.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -77,6 +78,8 @@ extern void playTune (const TuneDefinition *tune); extern const char *const midiInstrumentTable[]; extern const unsigned int midiInstrumentCount; +extern int showDotPattern (unsigned char dots, unsigned char duration); + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/Programs/tunetest.c b/Programs/tunetest.c index f9512166cce50db66ec4ea2c7de977a8443cbf15..854d20e75e086d5bd503af44574b69a22ccf021c 100644 --- a/Programs/tunetest.c +++ b/Programs/tunetest.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -272,7 +273,7 @@ main (int argc, char *argv[]) { } int -message (const char *string, short flags) { +message (const char *mode, const char *string, short flags) { return 1; } int diff --git a/Programs/txt2hlp.c b/Programs/txt2hlp.c index 9bc351d2e7dd58c8a2a5d5b8630833eef7b2101c..48300e5eef5f68735f6e1f50f48880154dd8d324 100644 --- a/Programs/txt2hlp.c +++ b/Programs/txt2hlp.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/unicode.h b/Programs/unicode.h new file mode 100644 index 0000000000000000000000000000000000000000..f1d7685b7292a0d6fb4efc833bfa335c74f62012 --- /dev/null +++ b/Programs/unicode.h @@ -0,0 +1,65 @@ +/* + * 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-2009 by The BRLTTY Developers. + * + * BRLTTY comes with ABSOLUTELY NO WARRANTY. + * + * This is free software, placed under the terms of the + * GNU General Public License, as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. + * + * Web Page: http://mielke.cc/brltty/ + * + * This software is maintained by Dave Mielke . + */ + +#ifndef BRLTTY_INCLUDED_UNICODE +#define BRLTTY_INCLUDED_UNICODE + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#define UNICODE_REPLACEMENT_CHARACTER 0XFFFD +#define UNICODE_BRAILLE_ROW 0X2800 + +#define UNICODE_CELL_BITS 8 +#define UNICODE_ROW_BITS 8 +#define UNICODE_PLANE_BITS 8 +#define UNICODE_GROUP_BITS 7 + +#define UNICODE_CELL_SHIFT 0 +#define UNICODE_ROW_SHIFT (UNICODE_CELL_SHIFT + UNICODE_CELL_BITS) +#define UNICODE_PLANE_SHIFT (UNICODE_ROW_SHIFT + UNICODE_ROW_BITS) +#define UNICODE_GROUP_SHIFT (UNICODE_PLANE_SHIFT + UNICODE_PLANE_BITS) + +#define UNICODE_CELLS_PER_ROW (1 << UNICODE_CELL_BITS) +#define UNICODE_ROWS_PER_PLANE (1 << UNICODE_ROW_BITS) +#define UNICODE_PLANES_PER_GROUP (1 << UNICODE_PLANE_BITS) +#define UNICODE_GROUP_COUNT (1 << UNICODE_GROUP_BITS) + +#define UNICODE_CELL_MAXIMUM (UNICODE_CELLS_PER_ROW - 1) +#define UNICODE_ROW_MAXIMUM (UNICODE_ROWS_PER_PLANE - 1) +#define UNICODE_PLANE_MAXIMUM (UNICODE_PLANES_PER_GROUP - 1) +#define UNICODE_GROUP_MAXIMUM (UNICODE_GROUP_COUNT - 1) + +#define UNICODE_CELL_MASK (UNICODE_CELL_MAXIMUM << UNICODE_CELL_SHIFT) +#define UNICODE_ROW_MASK (UNICODE_ROW_MAXIMUM << UNICODE_ROW_SHIFT) +#define UNICODE_PLANE_MASK (UNICODE_PLANE_MAXIMUM << UNICODE_PLANE_SHIFT) +#define UNICODE_GROUP_MASK (UNICODE_GROUP_MAXIMUM << UNICODE_GROUP_SHIFT) +#define UNICODE_CHARACTER_MASK (UNICODE_CELL_MASK | UNICODE_ROW_MASK | UNICODE_PLANE_MASK | UNICODE_GROUP_MASK) + +#define UNICODE_CELL_NUMBER(c) (((c) & UNICODE_CELL_MASK) >> UNICODE_CELL_SHIFT) +#define UNICODE_ROW_NUMBER(c) (((c) & UNICODE_ROW_MASK) >> UNICODE_ROW_SHIFT) +#define UNICODE_PLANE_NUMBER(c) (((c) & UNICODE_PLANE_MASK) >> UNICODE_PLANE_SHIFT) +#define UNICODE_GROUP_NUMBER(c) (((c) & UNICODE_GROUP_MASK) >> UNICODE_GROUP_SHIFT) +#define UNICODE_CHARACTER(group,plane,row,cell) (((group) << UNICODE_GROUP_SHIFT) | ((plane) << UNICODE_PLANE_SHIFT) | ((row) << UNICODE_ROW_SHIFT) | ((cell) << UNICODE_CELL_SHIFT)) + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* BRLTTY_INCLUDED_UNICODE */ diff --git a/Programs/usb.c b/Programs/usb.c index 24aa2760fa97e09a7deb59e6fc159c125e759e99..305fa5d49b56aa6dd18946149523c19f64c0943e 100644 --- a/Programs/usb.c +++ b/Programs/usb.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -149,6 +150,21 @@ usbGetString ( return usbDecodeString(&descriptor.string); } +char * +usbGetManufacturer (UsbDevice *device, int timeout) { + return usbGetString(device, device->descriptor.iManufacturer, timeout); +} + +char * +usbGetProduct (UsbDevice *device, int timeout) { + return usbGetString(device, device->descriptor.iProduct, timeout); +} + +char * +usbGetSerialNumber (UsbDevice *device, int timeout) { + return usbGetString(device, device->descriptor.iSerialNumber, timeout); +} + void usbLogString ( UsbDevice *device, @@ -237,7 +253,9 @@ usbGetConfiguration ( int size = usbControlRead(device, UsbControlRecipient_Device, UsbControlType_Standard, UsbStandardRequest_GetConfiguration, 0, 0, configuration, sizeof(*configuration), 1000); - return size; + if (size != -1) return 1; + LogPrint(LOG_WARNING, "USB standard request not supported: get configuration"); + return 0; } static void @@ -253,9 +271,15 @@ usbConfigurationDescriptor ( UsbDevice *device ) { if (!device->configuration) { - unsigned char configuration; + unsigned char current; - if (usbGetConfiguration(device, &configuration) != -1) { + if (device->descriptor.bNumConfigurations < 2) { + current = 1; + } else if (!usbGetConfiguration(device, ¤t)) { + current = 0; + } + + if (current) { UsbDescriptor descriptor; unsigned char number; @@ -264,7 +288,7 @@ usbConfigurationDescriptor ( number, 0, &descriptor, 1000); if (size == -1) { LogPrint(LOG_WARNING, "USB configuration descriptor not readable: %d", number); - } else if (descriptor.configuration.bConfigurationValue == configuration) { + } else if (descriptor.configuration.bConfigurationValue == current) { break; } } @@ -294,7 +318,7 @@ usbConfigurationDescriptor ( LogError("USB configuration descriptor allocate"); } } else { - LogPrint(LOG_ERR, "USB configuration descriptor not found: %d", configuration); + LogPrint(LOG_ERR, "USB configuration descriptor not found: %d", current); } } } @@ -308,9 +332,21 @@ usbConfigureDevice ( unsigned char configuration ) { usbCloseInterface(device); - if (!usbSetConfiguration(device, configuration)) return 0; - usbDeallocateConfigurationDescriptor(device); - return 1; + + if (usbSetConfiguration(device, configuration)) { + usbDeallocateConfigurationDescriptor(device); + return 1; + } + + { + const UsbConfigurationDescriptor *descriptor = usbConfigurationDescriptor(device); + + if (descriptor) + if (descriptor->bConfigurationValue == configuration) + return 1; + } + + return 0; } int @@ -353,6 +389,23 @@ usbInterfaceDescriptor ( return NULL; } +unsigned int +usbAlternativeCount ( + UsbDevice *device, + unsigned char interface +) { + unsigned int count = 0; + const UsbDescriptor *descriptor = NULL; + + while (usbNextDescriptor(device, &descriptor)) { + if (descriptor->interface.bDescriptorType == UsbDescriptorType_Interface) + if (descriptor->interface.bInterfaceNumber == interface) + count += 1; + } + + return count; +} + const UsbEndpointDescriptor * usbEndpointDescriptor ( UsbDevice *device, @@ -538,13 +591,28 @@ usbOpenInterface ( if (!usbClaimInterface(device, interface)) return 0; - if (usbSetAlternative(device, interface, alternative)) { - device->interface = descriptor; - return 1; + if (usbAlternativeCount(device, interface) == 1) goto done; + + { + unsigned char response[1]; + int size = usbControlRead(device, UsbControlRecipient_Interface, UsbControlType_Standard, + UsbStandardRequest_GetInterface, 0, interface, + response, sizeof(response), 1000); + + if (size != -1) { + if (response[0] == alternative) goto done; + } else { + LogPrint(LOG_WARNING, "USB standard request not supported: get interface"); + } } + if (usbSetAlternative(device, interface, alternative)) goto done; if (!device->interface) usbReleaseInterface(device, interface); return 0; + +done: + device->interface = descriptor; + return 1; } void @@ -640,7 +708,7 @@ usbAddPendingInputRequest ( return NULL; } -int +static int usbBeginInput ( UsbDevice *device, unsigned char endpointNumber, @@ -781,41 +849,108 @@ usbReapInput ( return -1; } +int +usbHidSetReport ( + UsbDevice *device, + unsigned char interface, + unsigned char report, + const void *buffer, + int length, + int timeout +) { + return usbControlWrite(device, + UsbControlRecipient_Interface, UsbControlType_Class, + UsbHidRequest_SetReport, + (UsbHidReportType_Output << 8) | report, interface, + buffer, length, timeout); +} + +int +usbHidGetFeature ( + UsbDevice *device, + unsigned char interface, + unsigned char report, + void *buffer, + int length, + int timeout +) { + return usbControlRead(device, + UsbControlRecipient_Interface, UsbControlType_Class, + UsbHidRequest_GetReport, + (UsbHidReportType_Feature << 8) | report, interface, + buffer, length, timeout); +} + +int +usbHidSetFeature ( + UsbDevice *device, + unsigned char interface, + unsigned char report, + const void *buffer, + int length, + int timeout +) { + return usbControlWrite(device, + UsbControlRecipient_Interface, UsbControlType_Class, + UsbHidRequest_SetReport, + (UsbHidReportType_Feature << 8) | report, interface, + buffer, length, timeout); +} + static int -usbSetBelkinAttribute (UsbDevice *device, unsigned char request, int value) { +usbSetAttribute_Belkin (UsbDevice *device, unsigned char request, int value, int index) { + LogPrint(LOG_DEBUG, "Belkin Request: %02X %04X %04X", request, value, index); return usbControlWrite(device, UsbControlRecipient_Device, UsbControlType_Vendor, - request, value, 0, NULL, 0, 1000) != -1; + request, value, index, NULL, 0, 1000) != -1; } static int -usbSetBelkinBaud (UsbDevice *device, int rate) { +usbSetBaud_Belkin (UsbDevice *device, int rate) { const int base = 230400; if (base % rate) { LogPrint(LOG_WARNING, "Unsupported Belkin baud: %d", rate); errno = EINVAL; return 0; } - return usbSetBelkinAttribute(device, 0, base/rate); + return usbSetAttribute_Belkin(device, 0, base/rate, 0); } static int -usbSetBelkinStopBits (UsbDevice *device, int bits) { - if ((bits < 1) || (bits > 2)) { - LogPrint(LOG_WARNING, "Unsupported Belkin stop bits: %d", bits); - errno = EINVAL; - return 0; +usbSetFlowControl_Belkin (UsbDevice *device, SerialFlowControl flow) { + int value = 0; +#define BELKIN_FLOW(from,to) if ((flow & (from)) == (from)) flow &= ~(from), value |= (to) + BELKIN_FLOW(SERIAL_FLOW_OUTPUT_CTS, 0X0001); + BELKIN_FLOW(SERIAL_FLOW_OUTPUT_DSR, 0X0002); + BELKIN_FLOW(SERIAL_FLOW_INPUT_DSR , 0X0004); + BELKIN_FLOW(SERIAL_FLOW_INPUT_DTR , 0X0008); + BELKIN_FLOW(SERIAL_FLOW_INPUT_RTS , 0X0010); + BELKIN_FLOW(SERIAL_FLOW_OUTPUT_RTS, 0X0020); + BELKIN_FLOW(SERIAL_FLOW_OUTPUT_XON, 0X0080); + BELKIN_FLOW(SERIAL_FLOW_INPUT_XON , 0X0100); +#undef BELKIN_FLOW + if (flow) { + LogPrint(LOG_WARNING, "Unsupported Belkin flow control: %02X", flow); } - return usbSetBelkinAttribute(device, 1, bits-1); + return usbSetAttribute_Belkin(device, 16, value, 0); } static int -usbSetBelkinDataBits (UsbDevice *device, int bits) { +usbSetDataBits_Belkin (UsbDevice *device, int bits) { if ((bits < 5) || (bits > 8)) { LogPrint(LOG_WARNING, "Unsupported Belkin data bits: %d", bits); errno = EINVAL; return 0; } - return usbSetBelkinAttribute(device, 2, bits-5); + return usbSetAttribute_Belkin(device, 2, bits-5, 0); } static int -usbSetBelkinParity (UsbDevice *device, SerialParity parity) { +usbSetStopBits_Belkin (UsbDevice *device, int bits) { + if ((bits < 1) || (bits > 2)) { + LogPrint(LOG_WARNING, "Unsupported Belkin stop bits: %d", bits); + errno = EINVAL; + return 0; + } + return usbSetAttribute_Belkin(device, 1, bits-1, 0); +} +static int +usbSetParity_Belkin (UsbDevice *device, SerialParity parity) { int value; switch (parity) { case SERIAL_PARITY_SPACE: value = 4; break; @@ -828,62 +963,45 @@ usbSetBelkinParity (UsbDevice *device, SerialParity parity) { errno = EINVAL; return 0; } - return usbSetBelkinAttribute(device, 3, value); + return usbSetAttribute_Belkin(device, 3, value, 0); +} +static int +usbSetDataFormat_Belkin (UsbDevice *device, int dataBits, int stopBits, SerialParity parity) { + if (usbSetDataBits_Belkin(device, dataBits)) + if (usbSetStopBits_Belkin(device, stopBits)) + if (usbSetParity_Belkin(device, parity)) + return 1; + return 0; } static int -usbSetBelkinDtrState (UsbDevice *device, int state) { +usbSetDtrState_Belkin (UsbDevice *device, int state) { if ((state < 0) || (state > 1)) { LogPrint(LOG_WARNING, "Unsupported Belkin DTR state: %d", state); errno = EINVAL; return 0; } - return usbSetBelkinAttribute(device, 10, state); + return usbSetAttribute_Belkin(device, 10, state, 0); } static int -usbSetBelkinRtsState (UsbDevice *device, int state) { +usbSetRtsState_Belkin (UsbDevice *device, int state) { if ((state < 0) || (state > 1)) { LogPrint(LOG_WARNING, "Unsupported Belkin RTS state: %d", state); errno = EINVAL; return 0; } - return usbSetBelkinAttribute(device, 11, state); -} -static int -usbSetBelkinFlowControl (UsbDevice *device, SerialFlowControl flow) { - int value = 0; -#define BELKIN_FLOW(from,to) if ((flow & (from)) == (from)) flow &= ~(from), value |= (to) - BELKIN_FLOW(SERIAL_FLOW_OUTPUT_CTS, 0X0001); - BELKIN_FLOW(SERIAL_FLOW_OUTPUT_DSR, 0X0002); - BELKIN_FLOW(SERIAL_FLOW_INPUT_DSR , 0X0004); - BELKIN_FLOW(SERIAL_FLOW_INPUT_DTR , 0X0008); - BELKIN_FLOW(SERIAL_FLOW_INPUT_RTS , 0X0010); - BELKIN_FLOW(SERIAL_FLOW_OUTPUT_RTS, 0X0020); - BELKIN_FLOW(SERIAL_FLOW_OUTPUT_XON, 0X0080); - BELKIN_FLOW(SERIAL_FLOW_INPUT_XON , 0X0100); -#undef BELKIN_FLOW - if (flow) { - LogPrint(LOG_WARNING, "Unsupported Belkin flow control: %02X", flow); - } - return usbSetBelkinAttribute(device, 16, value); -} -static int -usbSetBelkinDataFormat (UsbDevice *device, int dataBits, int stopBits, SerialParity parity) { - if (usbSetBelkinDataBits(device, dataBits)) - if (usbSetBelkinStopBits(device, stopBits)) - if (usbSetBelkinParity(device, parity)) - return 1; - return 0; -} -static const UsbSerialOperations usbBelkinOperations = { - usbSetBelkinBaud, - usbSetBelkinFlowControl, - usbSetBelkinDataFormat, - usbSetBelkinDtrState, - usbSetBelkinRtsState + return usbSetAttribute_Belkin(device, 11, state, 0); +} +static const UsbSerialOperations usbSerialOperations_Belkin = { + usbSetBaud_Belkin, + usbSetFlowControl_Belkin, + usbSetDataFormat_Belkin, + usbSetDtrState_Belkin, + usbSetRtsState_Belkin, + NULL }; static int -usbFtdiInputFilter (UsbInputFilterData *data) { +usbInputFilter_FTDI (UsbInputFilterData *data) { const int count = 2; if (data->length > count) { unsigned char *buffer = data->buffer; @@ -894,46 +1012,17 @@ usbFtdiInputFilter (UsbInputFilterData *data) { return 1; } static int -usbSetFtdiAttribute (UsbDevice *device, unsigned char request, int value, int index) { +usbSetAttribute_FTDI (UsbDevice *device, unsigned char request, int value, int index) { + LogPrint(LOG_DEBUG, "FTDI Request: %02X %04X %04X", request, value, index); return usbControlWrite(device, UsbControlRecipient_Device, UsbControlType_Vendor, request, value, index, NULL, 0, 1000) != -1; } static int -usbSetFtdiModemState (UsbDevice *device, int state, int shift, const char *name) { - if ((state < 0) || (state > 1)) { - LogPrint(LOG_WARNING, "Unsupported FTDI %s state: %d", name, state); - errno = EINVAL; - return 0; - } - return usbSetFtdiAttribute(device, 1, ((1 << (shift + 8)) | (state << shift)), 0); -} -static int -usbSetFtdiDtrState (UsbDevice *device, int state) { - return usbSetFtdiModemState(device, state, 0, "DTR"); +usbSetBaud_FTDI (UsbDevice *device, int divisor) { + return usbSetAttribute_FTDI(device, 3, divisor&0XFFFF, divisor>>0X10); } static int -usbSetFtdiRtsState (UsbDevice *device, int state) { - return usbSetFtdiModemState(device, state, 1, "RTS"); -} -static int -usbSetFtdiFlowControl (UsbDevice *device, SerialFlowControl flow) { - int index = 0; -#define FTDI_FLOW(from,to) if ((flow & (from)) == (from)) flow &= ~(from), index |= (to) - FTDI_FLOW(SERIAL_FLOW_OUTPUT_CTS|SERIAL_FLOW_INPUT_RTS, 0X0100); - FTDI_FLOW(SERIAL_FLOW_OUTPUT_DSR|SERIAL_FLOW_INPUT_DTR, 0X0200); - FTDI_FLOW(SERIAL_FLOW_OUTPUT_XON|SERIAL_FLOW_INPUT_XON, 0X0400); -#undef FTDI_FLOW - if (flow) { - LogPrint(LOG_WARNING, "Unsupported FTDI flow control: %02X", flow); - } - return usbSetFtdiAttribute(device, 2, ((index & 0X0400)? 0X1311: 0), index); -} -static int -usbSetFtdiBaud (UsbDevice *device, int divisor) { - return usbSetFtdiAttribute(device, 3, divisor&0XFFFF, divisor>>0X10); -} -static int -usbSetFtdiBaud_SIO (UsbDevice *device, int rate) { +usbSetBaud_FTDI_SIO (UsbDevice *device, int rate) { int divisor; switch (rate) { case 300: divisor = 0; break; @@ -951,10 +1040,10 @@ usbSetFtdiBaud_SIO (UsbDevice *device, int rate) { errno = EINVAL; return 0; } - return usbSetFtdiBaud(device, divisor); + return usbSetBaud_FTDI(device, divisor); } static int -usbSetFtdiBaud_FT8U232AM (UsbDevice *device, int rate) { +usbSetBaud_FTDI_FT8U232AM (UsbDevice *device, int rate) { if (rate > 3000000) { LogPrint(LOG_WARNING, "Unsupported FTDI FT8U232AM baud: %d", rate); errno = EINVAL; @@ -971,11 +1060,11 @@ usbSetFtdiBaud_FT8U232AM (UsbDevice *device, int rate) { (eighths & 01)? 0XC000: 0X0000; if (divisor == 1) divisor = 0; - return usbSetFtdiBaud(device, divisor); + return usbSetBaud_FTDI(device, divisor); } } static int -usbSetFtdiBaud_FT232BM (UsbDevice *device, int rate) { +usbSetBaud_FTDI_FT232BM (UsbDevice *device, int rate) { if (rate > 3000000) { LogPrint(LOG_WARNING, "Unsupported FTDI FT232BM baud: %d", rate); errno = EINVAL; @@ -991,11 +1080,24 @@ usbSetFtdiBaud_FT232BM (UsbDevice *device, int rate) { } else if (divisor == 0X4001) { divisor = 1; } - return usbSetFtdiBaud(device, divisor); + return usbSetBaud_FTDI(device, divisor); + } +} +static int +usbSetFlowControl_FTDI (UsbDevice *device, SerialFlowControl flow) { + int index = 0; +#define FTDI_FLOW(from,to) if ((flow & (from)) == (from)) flow &= ~(from), index |= (to) + FTDI_FLOW(SERIAL_FLOW_OUTPUT_CTS|SERIAL_FLOW_INPUT_RTS, 0X0100); + FTDI_FLOW(SERIAL_FLOW_OUTPUT_DSR|SERIAL_FLOW_INPUT_DTR, 0X0200); + FTDI_FLOW(SERIAL_FLOW_OUTPUT_XON|SERIAL_FLOW_INPUT_XON, 0X0400); +#undef FTDI_FLOW + if (flow) { + LogPrint(LOG_WARNING, "Unsupported FTDI flow control: %02X", flow); } + return usbSetAttribute_FTDI(device, 2, ((index & 0X0400)? 0X1311: 0), index); } static int -usbSetFtdiDataFormat (UsbDevice *device, int dataBits, int stopBits, SerialParity parity) { +usbSetDataFormat_FTDI (UsbDevice *device, int dataBits, int stopBits, SerialParity parity) { int ok = 1; int value = dataBits & 0XFF; if (dataBits != value) { @@ -1025,32 +1127,178 @@ usbSetFtdiDataFormat (UsbDevice *device, int dataBits, int stopBits, SerialParit errno = EINVAL; return 0; } - return usbSetFtdiAttribute(device, 4, value, 0); -} -static const UsbSerialOperations usbFtdiOperations_SIO = { - usbSetFtdiBaud_SIO, - usbSetFtdiFlowControl, - usbSetFtdiDataFormat, - usbSetFtdiDtrState, - usbSetFtdiRtsState + return usbSetAttribute_FTDI(device, 4, value, 0); +} +static int +usbSetModemState_FTDI (UsbDevice *device, int state, int shift, const char *name) { + if ((state < 0) || (state > 1)) { + LogPrint(LOG_WARNING, "Unsupported FTDI %s state: %d", name, state); + errno = EINVAL; + return 0; + } + return usbSetAttribute_FTDI(device, 1, ((1 << (shift + 8)) | (state << shift)), 0); +} +static int +usbSetDtrState_FTDI (UsbDevice *device, int state) { + return usbSetModemState_FTDI(device, state, 0, "DTR"); +} +static int +usbSetRtsState_FTDI (UsbDevice *device, int state) { + return usbSetModemState_FTDI(device, state, 1, "RTS"); +} +static const UsbSerialOperations usbSerialOperations_FTDI_SIO = { + usbSetBaud_FTDI_SIO, + usbSetFlowControl_FTDI, + usbSetDataFormat_FTDI, + usbSetDtrState_FTDI, + usbSetRtsState_FTDI, + NULL }; -static const UsbSerialOperations usbFtdiOperations_FT8U232AM = { - usbSetFtdiBaud_FT8U232AM, - usbSetFtdiFlowControl, - usbSetFtdiDataFormat, - usbSetFtdiDtrState, - usbSetFtdiRtsState +static const UsbSerialOperations usbSerialOperations_FTDI_FT8U232AM = { + usbSetBaud_FTDI_FT8U232AM, + usbSetFlowControl_FTDI, + usbSetDataFormat_FTDI, + usbSetDtrState_FTDI, + usbSetRtsState_FTDI, + NULL }; -static const UsbSerialOperations usbFtdiOperations_FT232BM = { - usbSetFtdiBaud_FT232BM, - usbSetFtdiFlowControl, - usbSetFtdiDataFormat, - usbSetFtdiDtrState, - usbSetFtdiRtsState +static const UsbSerialOperations usbSerialOperations_FTDI_FT232BM = { + usbSetBaud_FTDI_FT232BM, + usbSetFlowControl_FTDI, + usbSetDataFormat_FTDI, + usbSetDtrState_FTDI, + usbSetRtsState_FTDI, + NULL +}; + +static int +usbGetAttributes_CP2101 (UsbDevice *device, unsigned char request, void *data, int length) { + int result = usbControlRead(device, UsbControlRecipient_Interface, UsbControlType_Vendor, + request, 0, 0, data, length, 1000); + if (result == -1) return 0; + + if (result < length) { + unsigned char *bytes = data; + memset(&bytes[result], 0, length-result); + } + + LogBytes(LOG_DEBUG, "CP2101 Attributes", data, result); + return result; +} +static int +usbSetAttributes_CP2101 (UsbDevice *device, unsigned char request, const void *data, int length) { + LogBytes(LOG_DEBUG, "CP2101 Attributes", data, length); + return usbControlWrite(device, UsbControlRecipient_Interface, UsbControlType_Vendor, + request, 0, 0, data, length, 1000) != -1; +} +static int +usbSetAttribute_CP2101 (UsbDevice *device, unsigned char request, int value, int index) { + LogPrint(LOG_DEBUG, "CP2101 Request: %02X %04X %04X", request, value, index); + return usbControlWrite(device, UsbControlRecipient_Interface, UsbControlType_Vendor, + request, value, index, NULL, 0, 1000) != -1; +} +static int +usbSetBaud_CP2101 (UsbDevice *device, int rate) { + const int base = 0X384000; + int divisor = base / rate; + if ((rate * divisor) != base) { + LogPrint(LOG_WARNING, "Unsupported CP2101 baud: %d", rate); + errno = EINVAL; + return 0; + } + return usbSetAttribute_CP2101(device, 1, divisor, 0); +} +static int +usbSetFlowControl_CP2101 (UsbDevice *device, SerialFlowControl flow) { + unsigned char bytes[16]; + int count = usbGetAttributes_CP2101(device, 20, bytes, sizeof(bytes)); + if (!count) return 0; + + if (flow) { + LogPrint(LOG_WARNING, "Unsupported CP2101 flow control: %02X", flow); + } + + return usbSetAttributes_CP2101(device, 19, bytes, count); +} +static int +usbSetDataFormat_CP2101 (UsbDevice *device, int dataBits, int stopBits, SerialParity parity) { + int ok = 1; + int value = dataBits & 0XF; + if (dataBits != value) { + LogPrint(LOG_WARNING, "Unsupported CP2101 data bits: %d", dataBits); + ok = 0; + } + value <<= 8; + switch (parity) { + case SERIAL_PARITY_NONE: value |= 0X00; break; + case SERIAL_PARITY_ODD: value |= 0X10; break; + case SERIAL_PARITY_EVEN: value |= 0X20; break; + case SERIAL_PARITY_MARK: value |= 0X30; break; + case SERIAL_PARITY_SPACE: value |= 0X40; break; + default: + LogPrint(LOG_WARNING, "Unsupported CP2101 parity: %d", parity); + ok = 0; + break; + } + switch (stopBits) { + case 1: value |= 0X0; break; + case 2: value |= 0X2; break; + default: + LogPrint(LOG_WARNING, "Unsupported CP2101 stop bits: %d", stopBits); + ok = 0; + break; + } + if (!ok) { + errno = EINVAL; + return 0; + } + return usbSetAttribute_CP2101(device, 3, value, 0); +} +static int +usbSetModemState_CP2101 (UsbDevice *device, int state, int shift, const char *name) { + if ((state < 0) || (state > 1)) { + LogPrint(LOG_WARNING, "Unsupported CP2101 %s state: %d", name, state); + errno = EINVAL; + return 0; + } + return usbSetAttribute_CP2101(device, 7, ((1 << (shift + 8)) | (state << shift)), 0); +} +static int +usbSetDtrState_CP2101 (UsbDevice *device, int state) { + return usbSetModemState_CP2101(device, state, 0, "DTR"); +} +static int +usbSetRtsState_CP2101 (UsbDevice *device, int state) { + return usbSetModemState_CP2101(device, state, 1, "RTS"); +} +static int +usbSetUartState_CP2101 (UsbDevice *device, int state) { + return usbSetAttribute_CP2101(device, 0, state, 0); +} +static int +usbEnableAdapter_CP2101 (UsbDevice *device) { + if (!usbSetUartState_CP2101(device, 0)) return 0; + if (!usbSetUartState_CP2101(device, 1)) return 0; + if (!usbSetDtrState_CP2101(device, 1)) return 0; + if (!usbSetRtsState_CP2101(device, 1)) return 0; + return 1; +} +static const UsbSerialOperations usbSerialOperations_CP2101 = { + usbSetBaud_CP2101, + usbSetFlowControl_CP2101, + usbSetDataFormat_CP2101, + usbSetDtrState_CP2101, + usbSetRtsState_CP2101, + usbEnableAdapter_CP2101 }; const UsbSerialOperations * usbGetSerialOperations (UsbDevice *device) { + return device->serial; +} + +static int +usbSetSerialOperations (UsbDevice *device) { if (!device->serial) { typedef struct { uint16_t vendor; @@ -1062,50 +1310,146 @@ usbGetSerialOperations (UsbDevice *device) { static const UsbSerialAdapter usbSerialAdapters[] = { { /* HandyTech GoHubs */ 0X0921, 0X1200, - &usbBelkinOperations, + &usbSerialOperations_Belkin, NULL } , { /* HandyTech FTDI */ 0X0403, 0X6001, - &usbFtdiOperations_FT8U232AM, - usbFtdiInputFilter + &usbSerialOperations_FTDI_FT8U232AM, + usbInputFilter_FTDI } , { /* Papenmeier FTDI */ 0X0403, 0XF208, - &usbFtdiOperations_FT232BM, - usbFtdiInputFilter + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI } , - { /* Baum FTDI: 24 cells */ + { /* Baum Vario40 (40 cells) */ + 0X0403, 0XFE70, + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI + } + , + { /* Baum PocketVario (24 cells) */ 0X0403, 0XFE71, - &usbFtdiOperations_FT232BM, - usbFtdiInputFilter + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI } , - { /* Baum FTDI: 40 cells */ + { /* Baum SuperVario 40 (40 cells) */ 0X0403, 0XFE72, - &usbFtdiOperations_FT232BM, - usbFtdiInputFilter + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI } , - { /* Baum FTDI: 32 cells */ + { /* Baum SuperVario 32 (32 cells) */ 0X0403, 0XFE73, - &usbFtdiOperations_FT232BM, - usbFtdiInputFilter + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI } , - { /* Baum FTDI: 64 cells */ + { /* Baum SuperVario 64 (64 cells) */ 0X0403, 0XFE74, - &usbFtdiOperations_FT232BM, - usbFtdiInputFilter + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI } , - { /* Baum FTDI: 80 cells */ + { /* Baum SuperVario 80 (80 cells) */ 0X0403, 0XFE75, - &usbFtdiOperations_FT232BM, - usbFtdiInputFilter + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI + } + , + { /* Baum VarioPro 80 (80 cells) */ + 0X0403, 0XFE76, + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI + } + , + { /* Baum VarioPro 64 (64 cells) */ + 0X0403, 0XFE77, + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI + } + , + { /* Baum VarioPro 40 (40 cells) */ + 0X0904, 0X2000, + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI + } + , + { /* Baum EcoVario 24 (24 cells) */ + 0X0904, 0X2001, + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI + } + , + { /* Baum EcoVario 40 (40 cells) */ + 0X0904, 0X2002, + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI + } + , + { /* Baum VarioConnect 40 (40 cells) */ + 0X0904, 0X2007, + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI + } + , + { /* Baum VarioConnect 32 (32 cells) */ + 0X0904, 0X2008, + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI + } + , + { /* Baum VarioConnect 24 (24 cells) */ + 0X0904, 0X2009, + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI + } + , + { /* Baum VarioConnect 64 (64 cells) */ + 0X0904, 0X2010, + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI + } + , + { /* Baum VarioConnect 80 (80 cells) */ + 0X0904, 0X2011, + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI + } + , + { /* Baum EcoVario 32 (32 cells) */ + 0X0904, 0X2014, + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI + } + , + { /* Baum EcoVario 64 (64 cells) */ + 0X0904, 0X2015, + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI + } + , + { /* Baum EcoVario 80 (80 cells) */ + 0X0904, 0X2016, + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI + } + , + { /* Baum Refreshabraille 18 (18 cells) */ + 0X0904, 0X3000, + &usbSerialOperations_FTDI_FT232BM, + usbInputFilter_FTDI + } + , + { /* Seika (40 cells) */ + 0X10C4, 0XEA60, + &usbSerialOperations_CP2101, + NULL } , {0, 0} @@ -1115,31 +1459,36 @@ usbGetSerialOperations (UsbDevice *device) { while (sa->vendor) { if (sa->vendor == device->descriptor.idVendor) { if (!sa->product || (sa->product == device->descriptor.idProduct)) { - if (sa->inputFilter && !usbAddInputFilter(device, sa->inputFilter)) goto error; + if (sa->inputFilter && !usbAddInputFilter(device, sa->inputFilter)) return 0; device->serial = sa->operations; break; } } - ++sa; + sa += 1; } if (!device->serial) - LogPrint(LOG_WARNING, "USB: unsupported serial adapter: vendor=%04X product=%04X", + LogPrint(LOG_DEBUG, "USB: no serial operations: vendor=%04X product=%04X", device->descriptor.idVendor, device->descriptor.idProduct); } -error: - return device->serial; + return 1; } int usbSetSerialParameters (UsbDevice *device, const SerialParameters *parameters) { const UsbSerialOperations *serial = usbGetSerialOperations(device); if (!serial) return 0; + + if (serial->enableAdapter) + if (!serial->enableAdapter(device)) + return 0; + if (!serial->setBaud(device, parameters->baud)) return 0; if (!serial->setFlowControl(device, parameters->flow)) return 0; if (!serial->setDataFormat(device, parameters->data, parameters->stop, parameters->parity)) return 0; + return 1; } @@ -1164,10 +1513,37 @@ usbChooseChannel (UsbDevice *device, void *data) { if (usbOpenInterface(device, definition->interface, definition->alternative)) { int ok = 1; - if (definition->serial) - if (!usbSetSerialParameters(device, definition->serial)) + if (ok) + if (!usbSetSerialOperations(device)) ok = 0; + if (ok) + if (definition->serial) + if (!usbSetSerialParameters(device, definition->serial)) + ok = 0; + + if (ok) { + if (definition->inputEndpoint) { + UsbEndpoint *endpoint = usbGetInputEndpoint(device, definition->inputEndpoint); + + if (!endpoint) { + ok = 0; + } else if (USB_ENDPOINT_TRANSFER(endpoint->descriptor) == UsbEndpointTransfer_Interrupt) { + usbBeginInput(device, definition->inputEndpoint, 8); + } + } + } + + if (ok) { + if (definition->outputEndpoint) { + UsbEndpoint *endpoint = usbGetOutputEndpoint(device, definition->outputEndpoint); + + if (!endpoint) { + ok = 0; + } + } + } + if (ok) { choose->definition = definition; return 1; diff --git a/Programs/usb_bsd.h b/Programs/usb_bsd.h index 718b555048edab9b10f90134dcd38711f44fcbf2..528267722d290936c57951dd5964ad5368769a29 100644 --- a/Programs/usb_bsd.h +++ b/Programs/usb_bsd.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/usb_darwin.c b/Programs/usb_darwin.c index 6f156c32494093a2394aa9cd2554c07634e8ccd2..4da9a44656f0920ab14a80a6e738eb204debd9ca 100644 --- a/Programs/usb_darwin.c +++ b/Programs/usb_darwin.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/usb_freebsd.c b/Programs/usb_freebsd.c index 80a970de00a84625d75d46f4c9840396dde9c68e..b671726b56e5888928247524958f3963429e9dfc 100644 --- a/Programs/usb_freebsd.c +++ b/Programs/usb_freebsd.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/usb_internal.h b/Programs/usb_internal.h index a86479e37f158823e23bdd2a045a43c9935d916f..9944cf1729ed569de29dc46d38f4ef281771f9cb 100644 --- a/Programs/usb_internal.h +++ b/Programs/usb_internal.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/usb_kfreebsd.c b/Programs/usb_kfreebsd.c index 80a970de00a84625d75d46f4c9840396dde9c68e..b671726b56e5888928247524958f3963429e9dfc 100644 --- a/Programs/usb_kfreebsd.c +++ b/Programs/usb_kfreebsd.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/usb_libusb.c b/Programs/usb_libusb.c index 631afc566064584b0b4342a0593dc71f7b081039..fc8dba3eb2a1ada0ad99114ffc21bd6f0af22387 100644 --- a/Programs/usb_libusb.c +++ b/Programs/usb_libusb.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -223,15 +224,23 @@ usbReadEndpoint ( break; } + if (result >= 0) { + if (!usbApplyInputFilters(device, buffer, length, &result)) { + result = -EIO; + } + } + if (result >= 0) return result; errno = -result; } -#ifdef __MINGW32__ -#ifndef ETIMEDOUT - if (errno == 116) errno = EAGAIN; +#if defined(__MINGW32__) && !defined(ETIMEDOUT) +# define ETIMEDOUT 116 +#endif /* __MINGW32__ && !ETIMEDOUT */ + +#ifdef ETIMEDOUT + if (errno == ETIMEDOUT) errno = EAGAIN; #endif /* ETIMEDOUT */ -#endif /* __MINGW32__ */ if (errno != EAGAIN) LogError("USB endpoint read"); return -1; diff --git a/Programs/usb_linux.c b/Programs/usb_linux.c index 63984f5a94d05e7f3887bc648e1a8a39e75ee35e..4bc1157dc557b77d59d50afeee0e1dd6757543c7 100644 --- a/Programs/usb_linux.c +++ b/Programs/usb_linux.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -51,11 +52,36 @@ struct UsbEndpointExtensionStruct { Queue *completedRequests; }; +static int +usbOpenUsbfsFile (UsbDeviceExtension *devx) { + if (devx->usbfsFile == -1) { + if ((devx->usbfsFile = open(devx->usbfsPath, O_RDWR)) == -1) { + LogPrint(LOG_ERR, "USBFS open error: %s: %s", + devx->usbfsPath, strerror(errno)); + return 0; + } + } + + return 1; +} + +static void +usbCloseUsbfsFile (UsbDeviceExtension *devx) { + if (devx->usbfsFile != -1) { + close(devx->usbfsFile); + devx->usbfsFile = -1; + } +} + int usbResetDevice (UsbDevice *device) { UsbDeviceExtension *devx = device->extension; - if (ioctl(devx->usbfsFile, USBDEVFS_RESET, NULL) != -1) return 1; - LogError("USB device reset"); + + if (usbOpenUsbfsFile(devx)) { + if (ioctl(devx->usbfsFile, USBDEVFS_RESET, NULL) != -1) return 1; + LogError("USB device reset"); + } + return 0; } @@ -63,39 +89,42 @@ int usbDisableAutosuspend (UsbDevice *device) { UsbDeviceExtension *devx = device->extension; int ok = 0; - char *path = makePath(devx->sysfsPath, "device/power/autosuspend"); - if (path) { - int file = open(path, O_WRONLY); + if (devx->sysfsPath) { + char *path = makePath(devx->sysfsPath, "power/autosuspend"); - if (file != -1) { - static const char *const values[] = {"-1", "0", NULL}; - const char *const *value = values; + if (path) { + int file = open(path, O_WRONLY); - while (*value) { - size_t length = strlen(*value); - ssize_t result = write(file, *value, length); + if (file != -1) { + static const char *const values[] = {"-1", "0", NULL}; + const char *const *value = values; - if (result != -1) { - ok = 1; - break; - } + while (*value) { + size_t length = strlen(*value); + ssize_t result = write(file, *value, length); - if (errno != EINVAL) { - LogPrint(LOG_ERR, "write error: %s: %s", path, strerror(errno)); - break; + if (result != -1) { + ok = 1; + break; + } + + if (errno != EINVAL) { + LogPrint(LOG_ERR, "write error: %s: %s", path, strerror(errno)); + break; + } + + ++value; } - ++value; + close(file); + } else { + LogPrint((errno == ENOENT)? LOG_DEBUG: LOG_ERR, + "open error: %s: %s", path, strerror(errno)); } - close(file); - } else { - LogPrint((errno == ENOENT)? LOG_DEBUG: LOG_ERR, - "open error: %s: %s", path, strerror(errno)); + free(path); } - - free(path); } return ok; @@ -104,11 +133,20 @@ usbDisableAutosuspend (UsbDevice *device) { static char * usbGetDriver (UsbDevice *device, unsigned char interface) { UsbDeviceExtension *devx = device->extension; - struct usbdevfs_getdriver arg; - memset(&arg, 0, sizeof(arg)); - arg.interface = interface; - if (ioctl(devx->usbfsFile, USBDEVFS_GETDRIVER, &arg) == -1) return NULL; - return strdup(arg.driver); + + if (usbOpenUsbfsFile(devx)) { + struct usbdevfs_getdriver arg; + + memset(&arg, 0, sizeof(arg)); + arg.interface = interface; + + if (ioctl(devx->usbfsFile, USBDEVFS_GETDRIVER, &arg) != -1) { + char *name = strdup(arg.driver); + if (name) return name; + } + } + + return NULL; } static int @@ -119,13 +157,19 @@ usbControlDriver ( void *data ) { UsbDeviceExtension *devx = device->extension; - struct usbdevfs_ioctl arg; - memset(&arg, 0, sizeof(arg)); - arg.ifno = interface; - arg.ioctl_code = code; - arg.data = data; - if (ioctl(devx->usbfsFile, USBDEVFS_IOCTL, &arg) != -1) return 1; - LogError("USB driver control"); + + if (usbOpenUsbfsFile(devx)) { + struct usbdevfs_ioctl arg; + + memset(&arg, 0, sizeof(arg)); + arg.ifno = interface; + arg.ioctl_code = code; + arg.data = data; + + if (ioctl(devx->usbfsFile, USBDEVFS_IOCTL, &arg) != -1) return 1; + LogError("USB driver control"); + } + return 0; } @@ -144,7 +188,7 @@ usbDisconnectInterface (UsbDevice *device, unsigned char interface) { char *driver = usbGetDriver(device, interface); if (driver) { - LogPrint(LOG_WARNING, "USB interface in use: %s", driver); + LogPrint(LOG_WARNING, "USB interface in use: %u (%s)", interface, driver); free(driver); if (usbDisconnectDriver(device, interface)) return 1; @@ -153,43 +197,20 @@ usbDisconnectInterface (UsbDevice *device, unsigned char interface) { return 0; } -static int -usbDisconnectInterfaces (UsbDevice *device) { - const UsbDescriptor *descriptor = NULL; - int disconnected = 0; - - while (usbNextDescriptor(device, &descriptor)) { - if (descriptor->interface.bDescriptorType == UsbDescriptorType_Interface) { - if (usbDisconnectInterface(device, descriptor->interface.bInterfaceNumber)) disconnected = 1; - } - } - - return disconnected; -} - int usbSetConfiguration ( UsbDevice *device, unsigned char configuration ) { UsbDeviceExtension *devx = device->extension; - int disconnected = 0; - while (1) { + if (usbOpenUsbfsFile(devx)) { unsigned int arg = configuration; if (ioctl(devx->usbfsFile, USBDEVFS_SETCONFIGURATION, &arg) != -1) return 1; - if (errno != EBUSY) break; - if (disconnected) break; - - if (!usbDisconnectInterfaces(device)) { - errno = EBUSY; - break; - } - disconnected = 1; + LogError("USB configuration set"); } - LogError("USB configuration set"); return 0; } @@ -199,23 +220,27 @@ usbClaimInterface ( unsigned char interface ) { UsbDeviceExtension *devx = device->extension; - int disconnected = 0; - while (1) { - unsigned int arg = interface; + if (usbOpenUsbfsFile(devx)) { + int disconnected = 0; - if (ioctl(devx->usbfsFile, USBDEVFS_CLAIMINTERFACE, &arg) != -1) return 1; - if (errno != EBUSY) break; - if (disconnected) break; + while (1) { + unsigned int arg = interface; + + if (ioctl(devx->usbfsFile, USBDEVFS_CLAIMINTERFACE, &arg) != -1) return 1; + if (errno != EBUSY) break; + if (disconnected) break; - if (!usbDisconnectInterface(device, interface)) { - errno = EBUSY; - break; + if (!usbDisconnectInterface(device, interface)) { + errno = EBUSY; + break; + } + disconnected = 1; } - disconnected = 1; + + LogError("USB interface claim"); } - LogError("USB interface claim"); return 0; } @@ -225,10 +250,14 @@ usbReleaseInterface ( unsigned char interface ) { UsbDeviceExtension *devx = device->extension; - unsigned int arg = interface; - if (ioctl(devx->usbfsFile, USBDEVFS_RELEASEINTERFACE, &arg) != -1) return 1; - if (errno == ENODEV) return 1; - LogError("USB interface release"); + + if (usbOpenUsbfsFile(devx)) { + unsigned int arg = interface; + if (ioctl(devx->usbfsFile, USBDEVFS_RELEASEINTERFACE, &arg) != -1) return 1; + if (errno == ENODEV) return 1; + LogError("USB interface release"); + } + return 0; } @@ -239,12 +268,18 @@ usbSetAlternative ( unsigned char alternative ) { UsbDeviceExtension *devx = device->extension; - struct usbdevfs_setinterface arg; - memset(&arg, 0, sizeof(arg)); - arg.interface = interface; - arg.altsetting = alternative; - if (ioctl(devx->usbfsFile, USBDEVFS_SETINTERFACE, &arg) != -1) return 1; - LogError("USB alternative set"); + + if (usbOpenUsbfsFile(devx)) { + struct usbdevfs_setinterface arg; + + memset(&arg, 0, sizeof(arg)); + arg.interface = interface; + arg.altsetting = alternative; + + if (ioctl(devx->usbfsFile, USBDEVFS_SETINTERFACE, &arg) != -1) return 1; + LogError("USB alternative set"); + } + return 0; } @@ -254,9 +289,13 @@ usbResetEndpoint ( unsigned char endpointAddress ) { UsbDeviceExtension *devx = device->extension; - unsigned int arg = endpointAddress; - if (ioctl(devx->usbfsFile, USBDEVFS_RESETEP, &arg) != -1) return 1; - LogError("USB endpoint reset"); + + if (usbOpenUsbfsFile(devx)) { + unsigned int arg = endpointAddress; + if (ioctl(devx->usbfsFile, USBDEVFS_RESETEP, &arg) != -1) return 1; + LogError("USB endpoint reset"); + } + return 0; } @@ -266,9 +305,14 @@ usbClearEndpoint ( unsigned char endpointAddress ) { UsbDeviceExtension *devx = device->extension; - unsigned int arg = endpointAddress; - if (ioctl(devx->usbfsFile, USBDEVFS_CLEAR_HALT, &arg) != -1) return 1; - LogError("USB endpoint clear"); + + if (usbOpenUsbfsFile(devx)) { + unsigned int arg = endpointAddress; + + if (ioctl(devx->usbfsFile, USBDEVFS_CLEAR_HALT, &arg) != -1) return 1; + LogError("USB endpoint clear"); + } + return 0; } @@ -286,24 +330,30 @@ usbControlTransfer ( int timeout ) { UsbDeviceExtension *devx = device->extension; - union { - struct usbdevfs_ctrltransfer transfer; - UsbSetupPacket setup; - } arg; - memset(&arg, 0, sizeof(arg)); - arg.setup.bRequestType = direction | recipient | type; - arg.setup.bRequest = request; - putLittleEndian(&arg.setup.wValue, value); - putLittleEndian(&arg.setup.wIndex, index); - putLittleEndian(&arg.setup.wLength, length); - arg.transfer.data = buffer; - arg.transfer.timeout = timeout; - { - int count = ioctl(devx->usbfsFile, USBDEVFS_CONTROL, &arg); - if (count == -1) LogError("USB control transfer"); - return count; + if (usbOpenUsbfsFile(devx)) { + union { + struct usbdevfs_ctrltransfer transfer; + UsbSetupPacket setup; + } arg; + + memset(&arg, 0, sizeof(arg)); + arg.setup.bRequestType = direction | recipient | type; + arg.setup.bRequest = request; + putLittleEndian(&arg.setup.wValue, value); + putLittleEndian(&arg.setup.wIndex, index); + putLittleEndian(&arg.setup.wLength, length); + arg.transfer.data = buffer; + arg.transfer.timeout = timeout; + + { + int count = ioctl(devx->usbfsFile, USBDEVFS_CONTROL, &arg); + if (count != -1) return count; + LogError("USB control transfer"); + } } + + return -1; } static int @@ -312,26 +362,29 @@ usbReapUrb ( int wait ) { UsbDeviceExtension *devx = device->extension; - struct usbdevfs_urb *urb; - if (ioctl(devx->usbfsFile, - wait? USBDEVFS_REAPURB: USBDEVFS_REAPURBNDELAY, - &urb) != -1) { - if (urb) { - UsbEndpoint *endpoint; + if (usbOpenUsbfsFile(devx)) { + struct usbdevfs_urb *urb; - if ((endpoint = usbGetEndpoint(device, urb->endpoint))) { - UsbEndpointExtension *eptx = endpoint->extension; + if (ioctl(devx->usbfsFile, + wait? USBDEVFS_REAPURB: USBDEVFS_REAPURBNDELAY, + &urb) != -1) { + if (urb) { + UsbEndpoint *endpoint; - if (enqueueItem(eptx->completedRequests, urb)) return 1; - LogError("USB completed request enqueue"); - free(urb); + if ((endpoint = usbGetEndpoint(device, urb->endpoint))) { + UsbEndpointExtension *eptx = endpoint->extension; + + if (enqueueItem(eptx->completedRequests, urb)) return 1; + LogError("USB completed request enqueue"); + free(urb); + } + } else { + errno = EAGAIN; } } else { - errno = EAGAIN; + if (wait || (errno != EAGAIN)) LogError("USB URB reap"); } - } else { - if (wait || (errno != EAGAIN)) LogError("USB URB reap"); } return 0; @@ -346,54 +399,64 @@ usbSubmitRequest ( void *context ) { UsbDeviceExtension *devx = device->extension; - UsbEndpoint *endpoint = usbGetEndpoint(device, endpointAddress); - if (endpoint) { - struct usbdevfs_urb *urb; - if ((urb = malloc(sizeof(*urb) + length))) { - memset(urb, 0, sizeof(*urb)); - urb->endpoint = endpointAddress; - switch (USB_ENDPOINT_TRANSFER(endpoint->descriptor)) { - case UsbEndpointTransfer_Control: - urb->type = USBDEVFS_URB_TYPE_CONTROL; - break; - case UsbEndpointTransfer_Isochronous: - urb->type = USBDEVFS_URB_TYPE_ISO; - break; - case UsbEndpointTransfer_Interrupt: - case UsbEndpointTransfer_Bulk: - urb->type = USBDEVFS_URB_TYPE_BULK; - break; - } - urb->buffer = (urb->buffer_length = length)? (urb + 1): NULL; - if (buffer) - if (USB_ENDPOINT_DIRECTION(endpoint->descriptor) == UsbEndpointDirection_Output) - memcpy(urb->buffer, buffer, length); - urb->flags = 0; - urb->signr = 0; - urb->usercontext = context; - - /* - LogPrint(LOG_DEBUG, "USB submit: urb=%p typ=%02X ept=%02X flg=%X sig=%d buf=%p len=%d ctx=%p", - urb, urb->type, urb->endpoint, urb->flags, urb->signr, - urb->buffer, urb->buffer_length, urb->usercontext); - */ - submit: - if (ioctl(devx->usbfsFile, USBDEVFS_SUBMITURB, urb) != -1) return urb; - if ((errno == EINVAL) && - (USB_ENDPOINT_TRANSFER(endpoint->descriptor) == UsbEndpointTransfer_Interrupt) && - (urb->type == USBDEVFS_URB_TYPE_BULK)) { - urb->type = USBDEVFS_URB_TYPE_INTERRUPT; - goto submit; - } - /* UHCI support returns ENXIO if a URB is already submitted. */ - if (errno != ENXIO) LogError("USB URB submit"); + if (usbOpenUsbfsFile(devx)) { + UsbEndpoint *endpoint; - free(urb); - } else { - LogError("USB URB allocate"); + if ((endpoint = usbGetEndpoint(device, endpointAddress))) { + struct usbdevfs_urb *urb; + + if ((urb = malloc(sizeof(*urb) + length))) { + memset(urb, 0, sizeof(*urb)); + urb->endpoint = endpointAddress; + urb->flags = 0; + urb->signr = 0; + urb->usercontext = context; + + urb->buffer = (urb->buffer_length = length)? (urb + 1): NULL; + if (buffer) + if (USB_ENDPOINT_DIRECTION(endpoint->descriptor) == UsbEndpointDirection_Output) + memcpy(urb->buffer, buffer, length); + + switch (USB_ENDPOINT_TRANSFER(endpoint->descriptor)) { + case UsbEndpointTransfer_Control: + urb->type = USBDEVFS_URB_TYPE_CONTROL; + break; + + case UsbEndpointTransfer_Isochronous: + urb->type = USBDEVFS_URB_TYPE_ISO; + break; + + case UsbEndpointTransfer_Interrupt: + case UsbEndpointTransfer_Bulk: + urb->type = USBDEVFS_URB_TYPE_BULK; + break; + } + + /* + LogPrint(LOG_DEBUG, "USB submit: urb=%p typ=%02X ept=%02X flg=%X sig=%d buf=%p len=%d ctx=%p", + urb, urb->type, urb->endpoint, urb->flags, urb->signr, + urb->buffer, urb->buffer_length, urb->usercontext); + */ + submit: + if (ioctl(devx->usbfsFile, USBDEVFS_SUBMITURB, urb) != -1) return urb; + if ((errno == EINVAL) && + (USB_ENDPOINT_TRANSFER(endpoint->descriptor) == UsbEndpointTransfer_Interrupt) && + (urb->type == USBDEVFS_URB_TYPE_BULK)) { + urb->type = USBDEVFS_URB_TYPE_INTERRUPT; + goto submit; + } + + /* UHCI support returns ENXIO if a URB is already submitted. */ + if (errno != ENXIO) LogError("USB URB submit"); + + free(urb); + } else { + LogError("USB URB allocate"); + } } } + return NULL; } @@ -403,39 +466,43 @@ usbCancelRequest ( void *request ) { UsbDeviceExtension *devx = device->extension; - int reap = 1; - if (ioctl(devx->usbfsFile, USBDEVFS_DISCARDURB, request) == -1) { - if (errno == ENODEV) { - reap = 0; - } else if (errno != EINVAL) { - LogError("USB URB discard"); + if (usbOpenUsbfsFile(devx)) { + int reap = 1; + + if (ioctl(devx->usbfsFile, USBDEVFS_DISCARDURB, request) == -1) { + if (errno == ENODEV) { + reap = 0; + } else if (errno != EINVAL) { + LogError("USB URB discard"); + } } - } - - { - struct usbdevfs_urb *urb = request; - UsbEndpoint *endpoint; + + { + struct usbdevfs_urb *urb = request; + UsbEndpoint *endpoint; - if ((endpoint = usbGetEndpoint(device, urb->endpoint))) { - UsbEndpointExtension *eptx = endpoint->extension; - int found = 1; + if ((endpoint = usbGetEndpoint(device, urb->endpoint))) { + UsbEndpointExtension *eptx = endpoint->extension; + int found = 1; - while (!deleteItem(eptx->completedRequests, request)) { - if (!reap) break; - if (!usbReapUrb(device, 0)) { - found = 0; - break; + while (!deleteItem(eptx->completedRequests, request)) { + if (!reap) break; + + if (!usbReapUrb(device, 0)) { + found = 0; + break; + } } - } - if (found) { - free(request); - return 1; - } + if (found) { + free(request); + return 1; + } - LogPrint(LOG_ERR, "USB request not found: urb=%p ept=%02X", - urb, urb->endpoint); + LogPrint(LOG_ERR, "USB request not found: urb=%p ept=%02X", + urb, urb->endpoint); + } } } @@ -495,18 +562,26 @@ usbBulkTransfer ( int timeout ) { UsbDeviceExtension *devx = endpoint->device->extension; - struct usbdevfs_bulktransfer arg; - memset(&arg, 0, sizeof(arg)); - arg.ep = endpoint->descriptor->bEndpointAddress; - arg.data = buffer; - arg.len = length; - arg.timeout = timeout; - { - int count = ioctl(devx->usbfsFile, USBDEVFS_BULK, &arg); - if (count != -1) return count; - LogError("USB bulk transfer"); + if (usbOpenUsbfsFile(devx)) { + struct usbdevfs_bulktransfer arg; + + memset(&arg, 0, sizeof(arg)); + arg.ep = endpoint->descriptor->bEndpointAddress; + arg.data = buffer; + arg.len = length; + arg.timeout = timeout; + + { + int count = ioctl(devx->usbfsFile, USBDEVFS_BULK, &arg); + if (count != -1) return count; + if (USB_ENDPOINT_DIRECTION(endpoint->descriptor) == UsbEndpointDirection_Input) + if (errno == ETIMEDOUT) + errno = EAGAIN; + if (errno != EAGAIN) LogError("USB bulk transfer"); + } } + return -1; } @@ -558,8 +633,9 @@ usbReadEndpoint ( int timeout ) { int count = -1; - UsbEndpoint *endpoint = usbGetInputEndpoint(device, endpointNumber); - if (endpoint) { + UsbEndpoint *endpoint; + + if ((endpoint = usbGetInputEndpoint(device, endpointNumber))) { UsbEndpointTransfer transfer = USB_ENDPOINT_TRANSFER(endpoint->descriptor); switch (transfer) { case UsbEndpointTransfer_Bulk: @@ -603,13 +679,15 @@ usbWriteEndpoint ( int length, int timeout ) { - UsbEndpoint *endpoint = usbGetOutputEndpoint(device, endpointNumber); - if (endpoint) { + UsbEndpoint *endpoint; + + if ((endpoint = usbGetOutputEndpoint(device, endpointNumber))) { UsbEndpointTransfer transfer = USB_ENDPOINT_TRANSFER(endpoint->descriptor); switch (transfer) { + case UsbEndpointTransfer_Interrupt: case UsbEndpointTransfer_Bulk: return usbBulkTransfer(endpoint, (void *)buffer, length, timeout); - +/* case UsbEndpointTransfer_Interrupt: { struct usbdevfs_urb *urb = usbInterruptTransfer(endpoint, (void *)buffer, length, timeout); @@ -620,7 +698,7 @@ usbWriteEndpoint ( } break; } - +*/ default: LogPrint(LOG_ERR, "USB output transfer not supported: %d", transfer); errno = ENOSYS; @@ -633,14 +711,51 @@ usbWriteEndpoint ( int usbReadDeviceDescriptor (UsbDevice *device) { UsbDeviceExtension *devx = device->extension; - int count = read(devx->usbfsFile, &device->descriptor, UsbDescriptorSize_Device); - if (count == -1) { - LogError("USB device descriptor read"); - } else if (count != UsbDescriptorSize_Device) { - LogPrint(LOG_ERR, "USB short device descriptor (%d).", count); - } else { - return 1; + int file = -1; + int sysfs = 0; + + if (devx->sysfsPath) { + if (file == -1) { + char *path; + + if ((path = makePath(devx->sysfsPath, "descriptors"))) { + if ((file = open(path, O_RDONLY)) != -1) { + sysfs = 1; + } + + free(path); + } + } + } + + if (file == -1) { + if (usbOpenUsbfsFile(devx)) { + file = devx->usbfsFile; + } + } + + if (file != -1) { + int count = read(file, &device->descriptor, UsbDescriptorSize_Device); + + if (count == -1) { + LogError("USB device descriptor read"); + } else if (count != UsbDescriptorSize_Device) { + LogPrint(LOG_ERR, "USB short device descriptor: %d", count); + } else { + if (sysfs) { + device->descriptor.bcdUSB = getLittleEndian(device->descriptor.bcdUSB); + device->descriptor.idVendor = getLittleEndian(device->descriptor.idVendor); + device->descriptor.idProduct = getLittleEndian(device->descriptor.idProduct); + device->descriptor.bcdDevice = getLittleEndian(device->descriptor.bcdDevice); + + close(file); + file = -1; + } + + return 1; + } } + return 0; } @@ -674,10 +789,7 @@ usbDeallocateEndpointExtension (UsbEndpointExtension *eptx) { void usbDeallocateDeviceExtension (UsbDeviceExtension *devx) { - if (devx->usbfsFile != -1) { - close(devx->usbfsFile); - devx->usbfsFile = -1; - } + usbCloseUsbfsFile(devx); if (devx->usbfsPath) { free(devx->usbfsPath); @@ -692,14 +804,14 @@ usbDeallocateDeviceExtension (UsbDeviceExtension *devx) { free(devx); } -static char * -usbMakeSysfsPath (const char *usbfsPath) { - const char *tail = usbfsPath + strlen(usbfsPath); +static int +usbMakeSysfsPath (UsbDeviceExtension *devx) { + const char *tail = devx->usbfsPath + strlen(devx->usbfsPath); { int count = 0; while (1) { - if (tail == usbfsPath) return NULL; + if (tail == devx->usbfsPath) return 0; if (!isPathDelimiter(*--tail)) continue; if (++count == 2) break; } @@ -712,22 +824,30 @@ usbMakeSysfsPath (const char *usbfsPath) { int count = sscanf(tail, "/%u/%u%c", &bus, &device, &extra); if (count == 2) { - const char *format = "/sys/class/usb_device/usbdev%u.%u"; - char buffer[strlen(format) + (2 * 0X10) + 1]; - snprintf(buffer, sizeof(buffer), format, bus, device); + static const char *const formats[] = { + "/sys/class/usb_device/usbdev%u.%u/device", + "/sys/class/usb_endpoint/usbdev%u.%u_ep00/device", + NULL + }; + const char *const *format = formats; + + while (*format) { + char path[strlen(*format) + (2 * 0X10) + 1]; + snprintf(path, sizeof(path), *format, bus, device); + if (access(path, F_OK) != -1) { + return (devx->sysfsPath = strdup(path)) != NULL; + } - { - char *sysfsPath = strdup(buffer); - if (sysfsPath) return sysfsPath; + format += 1; } } } - return NULL; + return 0; } static UsbDevice * -usbSearchDevice (const char *root, UsbDeviceChooser chooser, void *data) { +usbSearchUsbfs (const char *root, UsbDeviceChooser chooser, void *data) { size_t rootLength = strlen(root); UsbDevice *device = NULL; DIR *directory; @@ -745,29 +865,22 @@ usbSearchDevice (const char *root, UsbDeviceChooser chooser, void *data) { if (stat(path, &status) == -1) continue; if (S_ISDIR(status.st_mode)) { - if ((device = usbSearchDevice(path, chooser, data))) break; + if ((device = usbSearchUsbfs(path, chooser, data))) break; } else if (S_ISREG(status.st_mode) || S_ISCHR(status.st_mode)) { UsbDeviceExtension *devx; if ((devx = malloc(sizeof(*devx)))) { - if ((devx->usbfsPath = strdup(path))) { - if ((devx->sysfsPath = usbMakeSysfsPath(devx->usbfsPath))) { - if ((devx->usbfsFile = open(devx->usbfsPath, O_RDWR)) != -1) { - if ((device = usbTestDevice(devx, chooser, data))) break; + devx->usbfsPath = NULL; + devx->usbfsFile = -1; + devx->sysfsPath = NULL; - close(devx->usbfsFile); - devx->usbfsFile = -1; - } - - free(devx->sysfsPath); - devx->sysfsPath = NULL; - } + if ((devx->usbfsPath = strdup(path))) { + usbMakeSysfsPath(devx); - free(devx->usbfsPath); - devx->usbfsPath = NULL; + if ((device = usbTestDevice(devx, chooser, data))) break; } - free(devx); + usbDeallocateDeviceExtension(devx); } } } @@ -778,6 +891,61 @@ usbSearchDevice (const char *root, UsbDeviceChooser chooser, void *data) { return device; } +typedef int (*FileSystemVerifier) (const char *path); + +typedef struct { + const char *path; + FileSystemVerifier verify; +} FileSystemCandidate; + +static int +usbVerifyFileSystem (const char *path, long type) { + struct statfs status; + if (statfs(path, &status) != -1) { + if (status.f_type == type) return 1; + } + return 0; +} + +static char * +usbGetFileSystem (const char *type, const FileSystemCandidate *candidates, MountPointTester test, FileSystemVerifier verify) { + if (candidates) { + const FileSystemCandidate *candidate = candidates; + + while (candidate->path) { + LogPrint(LOG_DEBUG, "verifying file system path: %s: %s", type, candidate->path); + if (candidate->verify(candidate->path)) return strdupWrapper(candidate->path); + candidate += 1; + } + } + + if (test) { + char *path = findMountPoint(test); + if (path) return path; + } + + if (verify) { + char *directory = makeWritablePath(type); + + if (directory) { + if (makeDirectory(directory)) { + if (verify(directory)) return directory; + + { + const char *components[] = {PACKAGE_NAME, "-", type}; + int count = ARRAY_COUNT(components); + char *name = joinStrings(components, count); + if (makeMountPoint(directory, name, type)) return directory; + } + } + + free(directory); + } + } + + return NULL; +} + static int usbVerifyDirectory (const char *path) { if (access(path, F_OK) != -1) return 1; @@ -786,11 +954,7 @@ usbVerifyDirectory (const char *path) { static int usbVerifyUsbfs (const char *path) { - struct statfs status; - if (statfs(path, &status) != -1) { - if (status.f_type == USBDEVICE_SUPER_MAGIC) return 1; - } - return 0; + return usbVerifyFileSystem(path, USBDEVICE_SUPER_MAGIC); } static int @@ -805,57 +969,28 @@ usbTestUsbfs (const char *path, const char *type) { } static char * -usbFindRoot (void) { - { - typedef struct { - const char *path; - int (*verify) (const char *path); - } RootEntry; - - static const RootEntry roots[] = { - {.path="/dev/bus/usb", .verify=usbVerifyDirectory}, - {.path="/proc/bus/usb", .verify=usbVerifyUsbfs}, - {.path=NULL, .verify=NULL} - }; - const RootEntry *root = roots; - - while (root->path) { - LogPrint(LOG_DEBUG, "verifying USB device root: %s", root->path); - if (root->verify(root->path)) return strdupWrapper(root->path); - ++root; - } - } - - return findMountPoint(usbTestUsbfs); -} - -static char * -usbMakeRoot (void) { - const char *type = "usbfs"; - char *directory = makeWritablePath(type); - - if (directory) { - if (makeDirectory(directory)) { - if (usbVerifyUsbfs(directory)) return directory; - if (makeMountPoint(directory, PACKAGE_NAME "-usbfs", type)) return directory; - } - - free(directory); - } +usbGetUsbfs (void) { + static const FileSystemCandidate usbfsCandidates[] = { + {.path="/dev/bus/usb", .verify=usbVerifyDirectory}, + {.path="/proc/bus/usb", .verify=usbVerifyUsbfs}, + {.path=NULL, .verify=NULL} + }; - return NULL; + return usbGetFileSystem("usbfs", usbfsCandidates, usbTestUsbfs, usbVerifyUsbfs); } UsbDevice * usbFindDevice (UsbDeviceChooser chooser, void *data) { UsbDevice *device = NULL; char *root; - if ((root = usbFindRoot()) || (root = usbMakeRoot())) { - LogPrint(LOG_DEBUG, "USB Root: %s", root); - device = usbSearchDevice(root, chooser, data); + + if ((root = usbGetUsbfs())) { + LogPrint(LOG_DEBUG, "USBFS Root: %s", root); + device = usbSearchUsbfs(root, chooser, data); free(root); } else { LogPrint(LOG_DEBUG, "USBFS not mounted"); } + return device; } diff --git a/Programs/usb_netbsd.c b/Programs/usb_netbsd.c index 94d79070b8d9b937355f8390361ec615218aaffa..38587ec850233569b429f2495520904e99a4e932 100644 --- a/Programs/usb_netbsd.c +++ b/Programs/usb_netbsd.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/usb_openbsd.c b/Programs/usb_openbsd.c index 94d79070b8d9b937355f8390361ec615218aaffa..38587ec850233569b429f2495520904e99a4e932 100644 --- a/Programs/usb_openbsd.c +++ b/Programs/usb_openbsd.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/usb_skeleton.c b/Programs/usb_skeleton.c index bdee758428b088ea68e77ddefa6fee5ee9bbcdff..2a95c8729c3d875f4eb3b945daf3d96533d7e8ff 100644 --- a/Programs/usb_skeleton.c +++ b/Programs/usb_skeleton.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/usb_solaris.c b/Programs/usb_solaris.c index 632c8f5b00093f58a4a089237aa024db2906be8b..85f0e33fdb659c8a39b35e829e41c0f88ecb51cb 100644 --- a/Programs/usb_solaris.c +++ b/Programs/usb_solaris.c @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/win_pthread.h b/Programs/win_pthread.h index 861380efab32c47c470814ae9e93540a5346c047..5642fc71cdcc4b508e59ff221cabf331b364ab41 100644 --- a/Programs/win_pthread.h +++ b/Programs/win_pthread.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * diff --git a/Programs/xbrlapi.c b/Programs/xbrlapi.c index 90864962269bd9b9b2658e7ccf8a6cd0b19e36cb..7221e348ba265344ccbef79c8eb37225f7315d28 100644 --- a/Programs/xbrlapi.c +++ b/Programs/xbrlapi.c @@ -1,13 +1,14 @@ /* * XBrlAPI - A background process tinkering with X for proper BrlAPI behavior * - * Copyright (C) 2003-2008 by Samuel Thibault + * Copyright (C) 2003-2009 by Samuel Thibault * * XBrlAPI comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -174,14 +175,20 @@ void tobrltty_init(char *auth, char *host) { static int getXVTnb(void); void getVT(void) { - if (getenv("WINDOWPATH")) { + char *path = getenv("WINDOWPATH"); + int vtno = -1; + if (!path) + /* Workaround for old xinit/xdm/gdm/kdm */ + vtno = getXVTnb(); + + if (path || vtno == -1) { if (brlapi_enterTtyModeWithPath(NULL,0,NULL)<0) fatal_brlapi_errno("geTtyPath",gettext("cannot get tty\n")); } else { - int vtno = getXVTnb(); if (brlapi_enterTtyMode(vtno,NULL)<0) fatal_brlapi_errno("enterTtyMode",gettext("cannot get tty %d\n"),vtno); } + if (brlapi_ignoreAllKeys()<0) fatal_brlapi_errno("ignoreAllKeys",gettext("cannot ignore keys\n")); #ifdef CAN_SIMULATE_KEY_PRESSES @@ -297,15 +304,21 @@ static int getXVTnb(void) { root=DefaultRootWindow(dpy); - if ((property=XInternAtom(dpy,"XFree86_VT",False))==None) - fatal(gettext("no XFree86_VT atom\n")); - + if ((property=XInternAtom(dpy,"XFree86_VT",False))==None) { + fprintf(stderr,gettext("no XFree86_VT atom\n")); + return -1; + } + if (XGetWindowProperty(dpy,root,property,0,1,False,AnyPropertyType, - &actual_type, &actual_format, &nitems, &bytes_after, &buf)) - fatal(gettext("cannot get root window XFree86_VT property\n")); + &actual_type, &actual_format, &nitems, &bytes_after, &buf)) { + fprintf(stderr,gettext("cannot get root window XFree86_VT property\n")); + return -1; + } - if (nitems<1) - fatal(gettext("no items for VT number\n")); + if (nitems<1) { + fprintf(stderr, gettext("no items for VT number\n")); + goto out; + } if (nitems>1) fprintf(stderr,gettext("more than one item for VT number\n")); switch (actual_type) { @@ -316,11 +329,12 @@ static int getXVTnb(void) { case 8: vt = (*(uint8_t *)buf); break; case 16: vt = (*(uint16_t *)buf); break; case 32: vt = (*(uint32_t *)buf); break; - default: fatal(gettext("bad format for VT number\n")); + default: fprintf(stderr, gettext("bad format for VT number\n")); goto out; } break; - default: fatal(gettext("bad type for VT number\n")); + default: fprintf(stderr, gettext("bad type for VT number\n")); goto out; } +out: if (!XFree(buf)) fatal("XFree(VTnobuf)"); return vt; } diff --git a/README b/README index cf09a9b018612fb436d8eed7014833d5d499a652..abec2e5951be3f60ba975da389c671b56fa7144a 100644 --- a/README +++ b/README @@ -2,35 +2,50 @@ BRLTTY is a background process (daemon) providing access to the Linux/Unix console (when in text mode) for a blind person using a refreshable braille display. -Version 3.9, October 2007 +Version 4.0, May 2009 -Copyright (C) 1995-2008 by The BRLTTY Team - All Rights Reserved. +Copyright (C) 1995-2009 by The BRLTTY Developers. Web Page: http://mielke.cc/brltty/ BRLTTY is free software. It comes with ABSOLUTELY NO WARRANTY. -BRLTTY is placed under the terms of the GNU General Public License [GPL] as -published by the Free Software Foundation; see the file COPYING for details. -Version 2 (or any later version) of the GPL may be used when redistributing -and/or modifying this software. This statement applies to all the files -contained within this directory structure except for those explicitly listed in -the next paragraph as a special exception has been made regarding those files -which are part of the client side of BRLTTY's API. - -A special exception has been made for those files which are part of the client -side of BRLTTY's API, BrlAPI. They are placed under the terms of the GNU Lesser -General Public License [LGPL] as published by the Free Software Foundation; see -the file COPYING-API for details. Version 2.1 (or any later version) of the -LGPL may be used when redistributing and/or modifying these files. The files -covered by this special exception are: - - Programs/brlapi.h.in - Programs/brlapi_keycodes.h - Programs/brlapi_protocol.h - Programs/brlapi_client.c - Programs/brlapi_common.h - BrailleDrivers/VisioBraille/brldefs-vs.h +BRLTTY is placed under the terms of the GNU General Public License [GPL] as +published by the Free Software Foundation; see the file LICENSE-GPL for +details. Version 2 (or any later version) of the GPL may be used when +redistributing and/or modifying this software. This statement applies to all +the files contained within this directory structure except for those which are +explicitly listed as exceptions within the following paragraphs. + +A special exception has been made for all of the text, attributes, and +contraction tables and subtables (which reside within the Tables/ +subdirectory). They are placed under the terms of the GNU Lesser General Public +License [LGPL] as published by the Free Software Foundation; see the file +LICENSE-LGPL for details. Version 2.1 (or any later version) of the LGPL may be +used when redistributing and/or modifying these files. The files covered by +this special exception are: + + *.ttb + *.tti + *.atb + *.ati + *.ctb + *.cti + +A special exception has been made for those files which are part of the client +side of BrlAPI (BRLTTY's Application Programming Interface). They are placed +under the terms of the GNU Lesser General Public License [LGPL] as published by +the Free Software Foundation; see the file LICENSE-LGPL for details. Version +2.1 (or any later version) of the LGPL may be used when redistributing and/or +modifying these files. The files covered by this special exception are: + + brlapi.h.in + brlapi_keycodes.h + brlapi_protocol.h + brlapi_client.c + brlapi_common.h + brldefs-ht.h + brldefs-vs.h This software is maintained by: Dave Mielke @@ -162,11 +177,12 @@ BRLTTY has been tested on: The following braille displays are supported: - Albatross [46/80] -- Alva [ABT(3nn), Delphi(4nn), Satellite(5nn), Braille System 40] -- Baum [Inka, Vario/RBT, SuperVario/Brailliant, PocketVario] +- Alva [ABT(3nn), Delphi(4nn), Satellite(5nn), Braille System 40, + Braille Controller 640/680] +- Baum [Inka, Vario/RBT, SuperVario/Brailliant, PocketVario, VarioPro, + EcoVario, VarioConnect/BrailleConnect, Refreshabraille] - BrailleLite [18/40/M20/M40] - BrailleNote [18/32] -- BrailleSense [32] - BrlAPI - CombiBraille [25/45/85] - EcoBraille [20/40/80] @@ -174,6 +190,7 @@ The following braille displays are supported: - FreedomScientific [Focus 44/70/84, PacMate 20/40/80] - HandyTech [Modular 20/40/80, Modular Evolution 64/88, Braille Wave 40, Easy Braille, Braille Star 40/80, Bookworm, Braillino 20] +- HIMS [Braille Sense, SyncBraille] - IrisLinux - Libbraille - LogText [32] @@ -184,6 +201,8 @@ The following braille displays are supported: 2D Screen Soft, EL 80, EL 2D 40/66/80, EL 40/66/70/80 S, EL 2D 80 S, EL 40 P, EL 80 II, Elba 20/32, Trio 40/Elba20/Elba32] +- Pegasus [20/27/40/80] +- Seika [40] - TSI [Navigator 20/40/80, PowerBraille 40/65/80] - TTY [terminfo] - VideoBraille [40] @@ -229,7 +248,7 @@ top-level directory. There is one subdirectory for each Braille display type, containing display-specific source files and documentation. Finally, some Braille definition tables, along with tools to manipulate them, -are available in the `BrailleTables' subdirectory. +are available in the `Tables' subdirectory. ------------------------------------------------------------------------------- diff --git a/Tables/README-ATB b/Tables/README-ATB new file mode 100644 index 0000000000000000000000000000000000000000..bb7e9f4819fc9d3a4d89bd970c56cc222bedbbb6 --- /dev/null +++ b/Tables/README-ATB @@ -0,0 +1,67 @@ +Attributes Tables +----------------- + +Files with names of the form *.atb are attributes tables, and with names of the +form *.ati are attributes subtables. They are used when BRLTTY is displaying +screen attributes rather than screen content. Each of the eight braille dots +represents one of the eight VGA attribute bits. + +An attributes table consists of a sequence of directives, one per line, which +define how combinations of VGA attributes are to be represented in braille. +UTF-8 character encoding must be used. White-space (blanks, tabs) at the +beginning of a line, as well as before and/or after any operand of any +directive, is ignored. Lines containing only white-space are ignored. If the +first non-white-space character of a line is "#" then that line is a comment +and is ignored. + +=============================================================================== + +The Dot Directive +----------------- + + dot # + +Use the "dot" directive to specify what a specific dot represents. The default +is that all dots are down and not used to represent anything. + +The operand specifies the dot being defined. It is a single digit within +the range 1-8 as defined by the standard braille dot numbering convention (see +README-DOTS). + +The operand specifies what the dot represents. It may be: +* =attribute The dot is raised if the named attribute is on. +* ~attribute The dot is raised if the named attribute is off. + +The names of the attribute bits are: +* 0X01 fg-blue +* 0X02 fg-green +* 0X04 fg-red +* 0X08 fg-bright +* 0X10 bg-blue +* 0X20 bg-green +* 0X40 bg-red +* 0X80 blink + +Examples: + + dot 1 =fg-red + dot 2 ~bg-blue + +=============================================================================== + +The Include Directive +--------------------- + + include # + +Use the "include" directive to include the content of an attributes subtable. +It is recursive, which means that any attributes subtable can itself include +yet another attributes subtable. Care must be taken to ensure that an "include +loop" is not created. + +The operand specifies the file to be included. It may be either a +relative or an absolute path. If relative, it is anchored at the directory +containing the including file. + +=============================================================================== + diff --git a/Tables/README-CTB b/Tables/README-CTB new file mode 100644 index 0000000000000000000000000000000000000000..4cd5828d3702c32eae5da7b80de8e01a6d228845 --- /dev/null +++ b/Tables/README-CTB @@ -0,0 +1,66 @@ +Contraction Tables +------------------ + +Files with names of the form *.ctb are contraction tables, and with names of +the form *.cti are contraction subtables. They are used by BRLTTY to translate +character sequences on the screen into their corresponding contracted braille +representations. + +A contraction table consists of a sequence of entries, one per line, which +define how character sequences are to be represented in braille. UTF-8 +character encoding must be used. White-space (blanks, tabs) at the beginning of +a line, as well as before and/or after any operand, is ignored. Lines +containing only white-space are ignored. If the first non-white-space character +of a line is "#" then that line is a comment and is ignored. + +The format of a contraction table entry is: + + directive operand ... [comment] + +Each directive has a specific number of operands. Any text beyond the last +operand of a directive is interpreted as a comment. The order of the entries +within a contraction table is, in general, anything that is convenient for its +maintainer(s). An entry which defines an entity, e.g. class, must precede all +references to that entity. + +Entries which match character sequences are automatically rearranged from +longest to shortest so that longer matches are always preferred. If more than +one entry matches the same character sequence then their original table +ordering is maintained. Thus, the same sequence may be translated differently +under different circumstances. + + +The Characters Operand +---------------------- + +The first operand of a character sequence matching directive is the character +sequence to be matched. Each character within the sequence may be: +* Any single character other than a backslash or a white-space character. +* A backslash-prefixed special character. These are: + - \b The backspace character. + - \f The formfeed character. + - \n The newline character. + - \o### The three-digit octal representation of a character. + - \r The carriage return character. + - \s The space character. + - \t The horizontal tab character. + - \u#### The four-digit hexadecimal representation of a character. + - \U######## The eight-digit hexadecimal representation of a character. + - \v The vertical tab character. + - \x## The two-digit hexadecimal representation of a character. + - \X## ... (the case of the X and of the digits isn't significant) + - \# A literal number sign. + - \ The Unicode name of a character (use _ for space). + - \\ A literal backslash. + + +The Representation Operand +-------------------------- + +The second operand of those character sequence matching directives which have +one is the braille representation of the sequence. Each braille cell is +specified as a sequence of one to eight dot numbers. A dot number is a digit +within the range 1-8 as defined by the standard braille dot numbering +convention (see README-DOTS). The special dot number 0, which may not be used +in conjunction with any other dot number, means no dots. + diff --git a/Tables/README-DOTS b/Tables/README-DOTS new file mode 100644 index 0000000000000000000000000000000000000000..8571869dfcb99eed26149fcbfdd9fb2bda729afe --- /dev/null +++ b/Tables/README-DOTS @@ -0,0 +1,29 @@ +Standard Braille Dot Numbering Convention +----------------------------------------- + +A standard braille cell consists of six dots arranged in three rows and two +columns. Each dot can be specifically identified by its number as follows: + + Dot Position Row Col + 1 top-left 1 1 + 2 middle-left 2 1 + 3 bottom-left 3 1 + 4 top-right 1 2 + 5 middle-right 2 2 + 6 bottom-right 3 2 + +Computer braille has introduced a fourth row at the bottom. + + Dot Position Row Col + 7 below-left 4 1 + 8 below-right 4 2 + +Perhaps a picture will make this numbering convention easier to understand. + + 1 o o 4 + 2 o o 5 + 3 o o 6 + 7 o o 8 + +=============================================================================== + diff --git a/Tables/README-KTB b/Tables/README-KTB new file mode 100644 index 0000000000000000000000000000000000000000..997c9261555b88a20113189989894af442b8043e --- /dev/null +++ b/Tables/README-KTB @@ -0,0 +1,64 @@ +Key Tables +---------- + +Files with names of the form *.ktb are key tables, and with names of the form +*.kti are key subtables. They are used by BRLTTY to bind keyboard key +combinations to BRLTTY commands. + +A key table consists of a sequence of directives, one per line, which define +what each key combination is to be bound to. UTF-8 character encoding must be +used. White-space (blanks, tabs) at the beginning of a line, as well as before +and/or after any operand, is ignored. Lines containing only white-space are +ignored. If the first non-white-space character of a line is "#" then that line +is a comment and is ignored. + +=============================================================================== + +The Bind Directive +------------------ + + bind # + +Use the "bind" directive to bind a key combination to a command. + +The operand specifies the key combination to be bound. It is a sequence +of one or more key names (see the file "ktb_keynames.h" within the "Programs" +subdirectory of BRLTTY's source tree) separated by plus (+) signs. The initial +keys are known as modifiers and may be pressed in any order. The last key must +be pressed while all the modifiers are being held. + +The operand specifies the name of a BRLTTY command (see the +"cmds.auto.h" file within the "Programs" subdirectory of BRLTTY's build tree). +* For feature activation commands: + + If no modifier is appended then the state of the feature is toggled. + + If the modifier +on is appended then the feature is turned on. + + If the modifier +off is appended then the feature is turned off. +* For character commands: The command acts on the character where the cursor + is. +* For base commands: The modifier +, wehre is a non-negative integer, + may be appended. If this modifier isn't specified then 0 is assumed. + +Examples: + + bind CapsLock+Enter CsrTrk + bind CapsLock+O CsrTrk+off + bind CapsLock+P CsrTrk+on + bind KPInsert+1 GoToMark+1 + +=============================================================================== + +The Include Directive +--------------------- + + include # + +Use the "include" directive to include the content of a key subtable. It is +recursive, which means that any key subtable can itself include yet another key +subtable. Care must be taken to ensure that an "include loop" is not created. + +The operand specifies the file to be included. It may be either a +relative or an absolute path. If relative, it is anchored at the directory +containing the including file. + +=============================================================================== + diff --git a/Tables/README-TTB b/Tables/README-TTB new file mode 100644 index 0000000000000000000000000000000000000000..215411fa90fd49edc649bbd3f500d712c8673553 --- /dev/null +++ b/Tables/README-TTB @@ -0,0 +1,101 @@ +Text Tables +----------- + +Files with names of the form *.ttb are text tables, and with names of the form +*.tti are text subtables. They are used by BRLTTY to translate the characters +on the screen into their corresponding 8-dot computer braille representations. + +A text table consists of a sequence of directives, one per line, which define +how each character is to be represented in braille. UTF-8 character encoding +must be used. White-space (blanks, tabs) at the beginning of a line, as well as +before and/or after any operand of any directive, is ignored. Lines containing +only white-space are ignored. If the first non-white-space character of a line +is "#" then that line is a comment and is ignored. + +=============================================================================== + +The Char Directive +------------------ + + char # + +Use the "char" directive to specify how a Unicode character is to be +represented in braille. + +The operand specifies the Unicode character being defined. It may +be: +* Any single character other than a backslash or a white-space character. +* A backslash-prefixed special character. These are: + - \b The backspace character. + - \f The formfeed character. + - \n The newline character. + - \o### The three-digit octal representation of a character. + - \r The carriage return character. + - \s The space character. + - \t The horizontal tab character. + - \u#### The four-digit hexadecimal representation of a character. + - \U######## The eight-digit hexadecimal representation of a character. + - \v The vertical tab character. + - \x## The two-digit hexadecimal representation of a character. + - \X## ... (the case of the X and of the digits isn't significant) + - \# A literal number sign. + - \ The Unicode name of a character (use _ for space). + - \\ A literal backslash. + +The operand specifies the braille representation of the Unicode +character. It is a sequence of one to eight dot numbers. If the dot number +sequence is enclosed within parentheses then the dot numbers may be separated +from one another by white-space. A dot number is a digit within the range 1-8 +as defined by the standard braille dot numbering convention (see README-DOTS). +The special dot number 0 is recognized when not enclosed within parentheses, +and means no dots; it may not be used in conjunction with any other dot number. + +Examples: + + char a 1 + char b (12) + char c ( 4 1 ) + char \\ 12567 + char \s 0 + char \x20 () + char \ 145 + +=============================================================================== + +The Byte Directive +------------------ + + byte # + +Use the "byte" directive to specify how a character in the local character set +is to be represented in braille. It has been retained for backward +compatibility but should not be used. Unicode characters should be defined (via +the "char" directive) so that the text table remains valid regardless of what +the local character set is. + +The operand specifies the local character being defined. It may be +specified in the same ways as the operand of the "char" directive +except that the Unicode-specific forms (\u, \U, \<) may not be used. + +The operand specifies the braille representation of the local character. +It may be specified in the same ways as the operand of the "char" +directive. + +=============================================================================== + +The Include Directive +--------------------- + + include # + +Use the "include" directive to include the content of a text subtable. It is +recursive, which means that any text subtable can itself include yet another +text subtable. Care must be taken to ensure that an "include loop" is not +created. + +The operand specifies the file to be included. It may be either a +relative or an absolute path. If relative, it is anchored at the directory +containing the including file. + +=============================================================================== + diff --git a/Tables/af.ctb b/Tables/af.ctb new file mode 100644 index 0000000000000000000000000000000000000000..44e01bd3c19f34bd373ce030ec11bc58391a2ef5 --- /dev/null +++ b/Tables/af.ctb @@ -0,0 +1,74 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - Afrikaans (contracted) +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +include letters-latin.cti + +always aa 2 +always aan 126 +always al 1246 +always an 12346 +always by 356 +always deur 256 +always die 2346 +always ee 156 +always ee 23 +always ei 146 +always el 3456 +always en 26 +always er 12456 +always ge 123456 +always ie 1456 +always ig 12345 +always in 35 +always met 23456 +always oe 246 +always of 12356 +always on 25 +always oo 2356 +always ou 1256 +always sk 16 +always st 34 +always te 235 +always ui 345 +always was 346 +always - 36 +always , 2 +always ; 23 +always : 25 +always ! 235 +always ? 236 +always / 34 +always . 256 +always ' 3 +always " 236 +always " 356 +always ( 2356 +always ) 2356 +always * 35-35 +always ^ 45 +numsign 3456 +capsign 6 diff --git a/Tables/am.ctb b/Tables/am.ctb new file mode 100644 index 0000000000000000000000000000000000000000..fcb138c46ecac977d8077895be9e17b19a45eb76 --- /dev/null +++ b/Tables/am.ctb @@ -0,0 +1,304 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - Amharic (uncontracted) +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +always ሀ 125 ETHIOPIC SYLLABLE HA +always ሠ125-136 ETHIOPIC SYLLABLE HU +always ሂ 125-24 ETHIOPIC SYLLABLE HI +always ሃ 125-1 ETHIOPIC SYLLABLE HAA +always ሄ 125-15 ETHIOPIC SYLLABLE HEE +always ህ 5 ETHIOPIC SYLLABLE HE +always ሆ 125-135 ETHIOPIC SYLLABLE HO +always ለ 123 ETHIOPIC SYLLABLE LA +always ሉ 123-136 ETHIOPIC SYLLABLE LU +always ሊ 123-24 ETHIOPIC SYLLABLE LI +always ላ 123-1 ETHIOPIC SYLLABLE LAA +always ሌ 123-15 ETHIOPIC SYLLABLE LEE +always ሠ456 ETHIOPIC SYLLABLE LE +always ሎ 123-135 ETHIOPIC SYLLABLE LO +always ሠ125 ETHIOPIC SYLLABLE HHA +always ሑ 125-136 ETHIOPIC SYLLABLE HHU +always ሒ 125-24 ETHIOPIC SYLLABLE HHI +always ሓ 125-1 ETHIOPIC SYLLABLE HHAA +always ሔ 125-15 ETHIOPIC SYLLABLE HHEE +always ሕ 5 ETHIOPIC SYLLABLE HHE +always ሖ 125-135 ETHIOPIC SYLLABLE HHO +always መ 134 ETHIOPIC SYLLABLE MA +always ሙ 134-136 ETHIOPIC SYLLABLE MU +always ሚ 134-24 ETHIOPIC SYLLABLE MI +always ማ 134-1 ETHIOPIC SYLLABLE MAA +always ሜ 134-15 ETHIOPIC SYLLABLE MEE +always ሠ23 ETHIOPIC SYLLABLE ME +always ሞ 134-135 ETHIOPIC SYLLABLE MO +always ሠ 6-234 ETHIOPIC SYLLABLE SZA +always ሡ 6-234-136 ETHIOPIC SYLLABLE SZU +always ሢ 6-234-24 ETHIOPIC SYLLABLE SZI +always ሣ 6-234-1 ETHIOPIC SYLLABLE SZAA +always ሤ 6-234-15 ETHIOPIC SYLLABLE SZEE +always ሥ 6-56 ETHIOPIC SYLLABLE SZE +always ሦ 6-234-135 ETHIOPIC SYLLABLE SZO +always ረ 1235 ETHIOPIC SYLLABLE RA +always ሩ 1235-136 ETHIOPIC SYLLABLE RU +always ሪ 1235-24 ETHIOPIC SYLLABLE RI +always ራ 1235-1 ETHIOPIC SYLLABLE RAA +always ሬ 1235-15 ETHIOPIC SYLLABLE REE +always ር 1256 ETHIOPIC SYLLABLE RE +always ሮ 1235-135 ETHIOPIC SYLLABLE RO +always ሰ 234 ETHIOPIC SYLLABLE SA +always ሱ 234-136 ETHIOPIC SYLLABLE SU +always ሲ 234-24 ETHIOPIC SYLLABLE SI +always ሳ 234-1 ETHIOPIC SYLLABLE SAA +always ሴ 234-15 ETHIOPIC SYLLABLE SEE +always ስ 56 ETHIOPIC SYLLABLE SE +always ሶ 234-135 ETHIOPIC SYLLABLE SO +always ሸ 146 ETHIOPIC SYLLABLE SHA +always ሹ 146-136 ETHIOPIC SYLLABLE SHU +always ሺ 146-24 ETHIOPIC SYLLABLE SHI +always ሻ 146-1 ETHIOPIC SYLLABLE SHAA +always ሼ 146-15 ETHIOPIC SYLLABLE SHEE +always ሽ 156 ETHIOPIC SYLLABLE SHE +always ሾ 146-135 ETHIOPIC SYLLABLE SHO +always ቀ 12345 ETHIOPIC SYLLABLE QA +always በ12345-136 ETHIOPIC SYLLABLE QU +always ቂ 12345-24 ETHIOPIC SYLLABLE QI +always ቃ 12345-1 ETHIOPIC SYLLABLE QAA +always ቄ 12345-15 ETHIOPIC SYLLABLE QEE +always ቅ 46 ETHIOPIC SYLLABLE QE +always ቆ 12345-135 ETHIOPIC SYLLABLE QO +always ቈ 12456-12345 ETHIOPIC SYLLABLE QWA +always ቊ 12456-12345-136 ETHIOPIC SYLLABLE QWI +always ቋ 12456-12345-1 ETHIOPIC SYLLABLE QWAA +always ቌ 12456-12345-15 ETHIOPIC SYLLABLE QWEE +always በ12456-12345-24 ETHIOPIC SYLLABLE QWE +always በ 12 ETHIOPIC SYLLABLE BA +always ቡ 12-136 ETHIOPIC SYLLABLE BU +always ቢ 12-24 ETHIOPIC SYLLABLE BI +always ባ 12-1 ETHIOPIC SYLLABLE BAA +always ቤ 12-15 ETHIOPIC SYLLABLE BEE +always ብ 45 ETHIOPIC SYLLABLE BE +always ቦ 12-135 ETHIOPIC SYLLABLE BO +always ተ 2345 ETHIOPIC SYLLABLE TA +always ቱ 2345-136 ETHIOPIC SYLLABLE TU +always ቲ 2345-24 ETHIOPIC SYLLABLE TI +always ታ 2345-1 ETHIOPIC SYLLABLE TAA +always ቴ 2345-15 ETHIOPIC SYLLABLE TEE +always ት 2 ETHIOPIC SYLLABLE TE +always ቶ 2345-135 ETHIOPIC SYLLABLE TO +always ቸ 16 ETHIOPIC SYLLABLE CA +always ቹ 16-136 ETHIOPIC SYLLABLE CU +always ቺ 16-24 ETHIOPIC SYLLABLE CI +always ቻ 16-1 ETHIOPIC SYLLABLE CAA +always ቼ 16-15 ETHIOPIC SYLLABLE CEE +always ች 25 ETHIOPIC SYLLABLE CE +always ቾ 16-135 ETHIOPIC SYLLABLE CO +always ኀ 125 ETHIOPIC SYLLABLE XA +always አ125-136 ETHIOPIC SYLLABLE XU +always ኂ 125-24 ETHIOPIC SYLLABLE XI +always ኃ 125-1 ETHIOPIC SYLLABLE XAA +always ኄ 125-15 ETHIOPIC SYLLABLE XEE +always ኅ 5 ETHIOPIC SYLLABLE XE +always ኆ 125-135 ETHIOPIC SYLLABLE XO +always ኈ 12456-125 ETHIOPIC SYLLABLE XWA +always ኊ 12456-125-136 ETHIOPIC SYLLABLE XWI +always ኋ 12456-125-1 ETHIOPIC SYLLABLE XWAA +always ኌ 12456-125-15 ETHIOPIC SYLLABLE XWEE +always አ12456-125-24 ETHIOPIC SYLLABLE XWE +always አ1345 ETHIOPIC SYLLABLE NA +always ኑ 1345-136 ETHIOPIC SYLLABLE NU +always ኒ 1345-24 ETHIOPIC SYLLABLE NI +always ና 1345-1 ETHIOPIC SYLLABLE NAA +always ኔ 1345-15 ETHIOPIC SYLLABLE NEE +always ን 1246 ETHIOPIC SYLLABLE NE +always ኖ 1345-135 ETHIOPIC SYLLABLE NO +always ኘ 346 ETHIOPIC SYLLABLE NYA +always ኙ 346-136 ETHIOPIC SYLLABLE NYU +always ኚ 346-24 ETHIOPIC SYLLABLE NYI +always ኛ 346-1 ETHIOPIC SYLLABLE NYAA +always ኜ 346-15 ETHIOPIC SYLLABLE NYEE +always አ26 ETHIOPIC SYLLABLE NYE +always ኞ 346-135 ETHIOPIC SYLLABLE NYO +always አ 3 ETHIOPIC SYLLABLE GLOTTAL A +always ኡ 3-136 ETHIOPIC SYLLABLE GLOTTAL U +always ኢ 3-24 ETHIOPIC SYLLABLE GLOTTAL I +always ኣ 3-1 ETHIOPIC SYLLABLE GLOTTAL AA +always ኤ 3-15 ETHIOPIC SYLLABLE GLOTTAL EE +always እ 34 ETHIOPIC SYLLABLE GLOTTAL E +always ኦ 3-135 ETHIOPIC SYLLABLE GLOTTAL O +always ከ 13 ETHIOPIC SYLLABLE KA +always ኩ 13-136 ETHIOPIC SYLLABLE KU +always ኪ 13-24 ETHIOPIC SYLLABLE KI +always ካ 13-1 ETHIOPIC SYLLABLE KAA +always ኬ 13-15 ETHIOPIC SYLLABLE KEE +always ክ 35 ETHIOPIC SYLLABLE KE +always ኮ 13-135 ETHIOPIC SYLLABLE KO +always ኰ 12456-13 ETHIOPIC SYLLABLE KWA +always ኲ 12456-13-136 ETHIOPIC SYLLABLE KWI +always ኳ 12456-13-1 ETHIOPIC SYLLABLE KWAA +always ኴ 12456-13-15 ETHIOPIC SYLLABLE KWEE +always ኵ 12456-13-24 ETHIOPIC SYLLABLE KWE +always ኸ 1346 ETHIOPIC SYLLABLE KXA +always ኹ 1346-136 ETHIOPIC SYLLABLE KXU +always ኺ 1346-24 ETHIOPIC SYLLABLE KXI +always ኻ 1346-1 ETHIOPIC SYLLABLE KXAA +always ኼ 1346-15 ETHIOPIC SYLLABLE KXEE +always ኽ 123456 ETHIOPIC SYLLABLE KXE +always ኾ 1346-135 ETHIOPIC SYLLABLE KXO +always ወ 2456 ETHIOPIC SYLLABLE WA +always ዉ 2456-136 ETHIOPIC SYLLABLE WU +always á‹Š 2456-24 ETHIOPIC SYLLABLE WI +always á‹‹ 2456-1 ETHIOPIC SYLLABLE WAA +always á‹Œ 2456-15 ETHIOPIC SYLLABLE WEE +always á‹ 246 ETHIOPIC SYLLABLE WE +always á‹Ž 2456-135 ETHIOPIC SYLLABLE WO +always á‹ 3 ETHIOPIC SYLLABLE PHARYNGEAL A +always á‹‘ 3-136 ETHIOPIC SYLLABLE PHARYNGEAL U +always á‹’ 3-24 ETHIOPIC SYLLABLE PHARYNGEAL I +always á‹“ 3-1 ETHIOPIC SYLLABLE PHARYNGEAL AA +always á‹” 3-15 ETHIOPIC SYLLABLE PHARYNGEAL EE +always á‹• 34 ETHIOPIC SYLLABLE PHARYNGEAL E +always á‹– 3-135 ETHIOPIC SYLLABLE PHARYNGEAL O +always ዘ 1356 ETHIOPIC SYLLABLE ZA +always á‹™ 1356-136 ETHIOPIC SYLLABLE ZU +always á‹š 1356-24 ETHIOPIC SYLLABLE ZI +always á‹› 1356-1 ETHIOPIC SYLLABLE ZAA +always á‹œ 1356-15 ETHIOPIC SYLLABLE ZEE +always á‹ 2346 ETHIOPIC SYLLABLE ZE +always á‹ž 1356-135 ETHIOPIC SYLLABLE ZO +always á‹  356 ETHIOPIC SYLLABLE ZHA +always á‹¡ 356-136 ETHIOPIC SYLLABLE ZHU +always á‹¢ 356-24 ETHIOPIC SYLLABLE ZHI +always á‹£ 356-1 ETHIOPIC SYLLABLE ZHAA +always ዤ 356-15 ETHIOPIC SYLLABLE ZHEE +always á‹¥ 236 ETHIOPIC SYLLABLE ZHE +always ዦ 356-135 ETHIOPIC SYLLABLE ZHO +always የ 13456 ETHIOPIC SYLLABLE YA +always á‹© 13456-136 ETHIOPIC SYLLABLE YU +always ዪ 13456-24 ETHIOPIC SYLLABLE YI +always á‹« 13456-1 ETHIOPIC SYLLABLE YAA +always ዬ 13456-15 ETHIOPIC SYLLABLE YEE +always á‹­ 1236 ETHIOPIC SYLLABLE YE +always á‹® 13456-135 ETHIOPIC SYLLABLE YO +always á‹° 145 ETHIOPIC SYLLABLE DA +always ዱ 145-136 ETHIOPIC SYLLABLE DU +always ዲ 145-24 ETHIOPIC SYLLABLE DI +always ዳ 145-1 ETHIOPIC SYLLABLE DAA +always á‹´ 145-15 ETHIOPIC SYLLABLE DEE +always ድ 1456 ETHIOPIC SYLLABLE DE +always ዶ 145-135 ETHIOPIC SYLLABLE DO +always ጀ 245 ETHIOPIC SYLLABLE JA +always ጠ245-136 ETHIOPIC SYLLABLE JU +always ጂ 245-24 ETHIOPIC SYLLABLE JI +always ጃ 245-1 ETHIOPIC SYLLABLE JAA +always ጄ 245-15 ETHIOPIC SYLLABLE JEE +always ጅ 126 ETHIOPIC SYLLABLE JE +always ጆ 245-135 ETHIOPIC SYLLABLE JO +always ገ 1245 ETHIOPIC SYLLABLE GA +always ጉ 1245-136 ETHIOPIC SYLLABLE GU +always ጊ 1245-24 ETHIOPIC SYLLABLE GI +always ጋ 1245-1 ETHIOPIC SYLLABLE GAA +always ጌ 1245-15 ETHIOPIC SYLLABLE GEE +always ጠ2356 ETHIOPIC SYLLABLE GE +always ጎ 1245-135 ETHIOPIC SYLLABLE GO +always ጠ12456 ETHIOPIC SYLLABLE GWA +always ጒ 12456-1245-136 ETHIOPIC SYLLABLE GWI +always ጓ 12456-1245-1 ETHIOPIC SYLLABLE GWAA +always ጔ 12456-1245-15 ETHIOPIC SYLLABLE GWEE +always ጕ 12456-1245-24 ETHIOPIC SYLLABLE GWE +always ጠ 23456 ETHIOPIC SYLLABLE THA +always ጡ 23456-136 ETHIOPIC SYLLABLE THU +always ጢ 23456-24 ETHIOPIC SYLLABLE THI +always ጣ 23456-1 ETHIOPIC SYLLABLE THAA +always ጤ 23456-15 ETHIOPIC SYLLABLE THEE +always ጥ 12356 ETHIOPIC SYLLABLE THE +always ጦ 23456-135 ETHIOPIC SYLLABLE THO +always ጨ 14 ETHIOPIC SYLLABLE CHA +always ጩ 14-136 ETHIOPIC SYLLABLE CHU +always ጪ 14-24 ETHIOPIC SYLLABLE CHI +always ጫ 14-1 ETHIOPIC SYLLABLE CHAA +always ጬ 14-15 ETHIOPIC SYLLABLE CHEE +always ጭ 36 ETHIOPIC SYLLABLE CHE +always ጮ 14-135 ETHIOPIC SYLLABLE CHO +always ጰ 235 ETHIOPIC SYLLABLE PHA +always ጱ 235-136 ETHIOPIC SYLLABLE PHU +always ጲ 235-24 ETHIOPIC SYLLABLE PHI +always ጳ 235-1 ETHIOPIC SYLLABLE PHAA +always ጴ 235-15 ETHIOPIC SYLLABLE PHEE +always ጵ 3456 ETHIOPIC SYLLABLE PHE +always ጶ 235-135 ETHIOPIC SYLLABLE PHO +always ጸ 12346 ETHIOPIC SYLLABLE TSA +always ጹ 12346-136 ETHIOPIC SYLLABLE TSU +always ጺ 12346-24 ETHIOPIC SYLLABLE TSI +always ጻ 12346-1 ETHIOPIC SYLLABLE TSAA +always ጼ 12346-15 ETHIOPIC SYLLABLE TSEE +always ጽ 345 ETHIOPIC SYLLABLE TSE +always ጾ 12346-135 ETHIOPIC SYLLABLE TSO +always ဠ12346 ETHIOPIC SYLLABLE TZA +always á 12346-136 ETHIOPIC SYLLABLE TZU +always á‚ 12346-24 ETHIOPIC SYLLABLE TZI +always რ12346-1 ETHIOPIC SYLLABLE TZAA +always á„ 12346-15 ETHIOPIC SYLLABLE TZEE +always á… 345 ETHIOPIC SYLLABLE TZE +always ᆠ12346-135 ETHIOPIC SYLLABLE TZO +always ሠ124 ETHIOPIC SYLLABLE FA +always በ124-136 ETHIOPIC SYLLABLE FU +always አ124-24 ETHIOPIC SYLLABLE FI +always á‹ 124-1 ETHIOPIC SYLLABLE FAA +always ጠ124-15 ETHIOPIC SYLLABLE FEE +always á 4 ETHIOPIC SYLLABLE FE +always Ꭰ124-135 ETHIOPIC SYLLABLE FO +always á 1234 ETHIOPIC SYLLABLE PA +always á‘ 1234-136 ETHIOPIC SYLLABLE PU +always á’ 1234-24 ETHIOPIC SYLLABLE PI +always á“ 1234-1 ETHIOPIC SYLLABLE PAA +always á” 1234-15 ETHIOPIC SYLLABLE PEE +always á• 6 ETHIOPIC SYLLABLE PE +always á– 1234-135 ETHIOPIC SYLLABLE PO +always á¡ 0 ETHIOPIC WORDSPACE +always ᢠ256 ETHIOPIC FULL STOP +always ᣠ2 ETHIOPIC COMMA +always ᤠ23 ETHIOPIC SEMICOLON +always ᥠ25 ETHIOPIC COLON +always ᧠236 ETHIOPIC QUESTION MARK +always á© 16 ETHIOPIC DIGIT ONE +always ᪠126 ETHIOPIC DIGIT TWO +always á« 146 ETHIOPIC DIGIT THREE +always ᬠ1456 ETHIOPIC DIGIT FOUR +always á­ 156 ETHIOPIC DIGIT FIVE +always á® 1246 ETHIOPIC DIGIT SIX +always ᯠ12456 ETHIOPIC DIGIT SEVEN +always á° 1256 ETHIOPIC DIGIT EIGHT +always á± 246 ETHIOPIC DIGIT NINE +always á² 16-3456 ETHIOPIC NUMBER TEN +always á³ 126-3456 ETHIOPIC NUMBER TWENTY +always á´ 146-3456 ETHIOPIC NUMBER THIRTY +always áµ 1456-3456 ETHIOPIC NUMBER FORTY +always ᶠ156-3456 ETHIOPIC NUMBER FIFTY +always á· 1246-3456 ETHIOPIC NUMBER SIXTY +always Ḡ12456-3456 ETHIOPIC NUMBER SEVENTY +always á¹ 1256-3456 ETHIOPIC NUMBER EIGHTY +always Ạ246-3456 ETHIOPIC NUMBER NINETY +always á» 16-3456-3456 ETHIOPIC NUMBER HUNDRED +always á¼ 16-3456-3456-3456-3456 ETHIOPIC NUMBER TEN THOUSAND diff --git a/Tables/ar.ttb b/Tables/ar.ttb new file mode 100644 index 0000000000000000000000000000000000000000..6010ba3b84f2c0ce6501e6a930ea336b48f11ecc --- /dev/null +++ b/Tables/ar.ttb @@ -0,0 +1,177 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Arabic (generic) + +# Maintained by John J. Boyer, director@chpi.org, www.chpi.org +# +# This table is built and maintained by Leon Ungier +# with help and guidance from Mohammed R. Ramadan +# +# Converted from liblouis table by Samuel Thibault + +# generated by ttbtest: charset=iso-8859-6 +char \x09 ( ) # 09 â € [CHARACTER TABULATION] +char \x0A ( ) # 0A â € [LINE FEED (LF)] +char \x0D ( ) # 0D â € [CARRIAGE RETURN (CR)] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 23 5 ) # 21 â – ! [EXCLAMATION MARK] +char \x22 ( 23 56 ) # 22 â ¶ " [QUOTATION MARK] +char \x23 ( 3456 ) # 23 â ¼ # [NUMBER SIGN] +char \x26 (1234 ) # 26 â  & [AMPERSAND] +char \x27 ( 3 ) # 27 â „ ' [APOSTROPHE] +char \x28 ( 23 6 ) # 28 â ¦ ( [LEFT PARENTHESIS] +char \x29 ( 3 56 ) # 29 â ´ ) [RIGHT PARENTHESIS] +char \x2C ( 4 6 ) # 2C â ¨ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 4 6 ) # 2E â ¨ . [FULL STOP] +char \x2F ( 34 ) # 2F â Œ / [SOLIDUS] +char \x30 ( 2 45 ) # 30 â š 0 [DIGIT ZERO] +char \x31 (1 ) # 31 â  1 [DIGIT ONE] +char \x32 (12 ) # 32 â ƒ 2 [DIGIT TWO] +char \x33 (1 4 ) # 33 â ‰ 3 [DIGIT THREE] +char \x34 (1 45 ) # 34 â ™ 4 [DIGIT FOUR] +char \x35 (1 5 ) # 35 â ‘ 5 [DIGIT FIVE] +char \x36 (12 4 ) # 36 â ‹ 6 [DIGIT SIX] +char \x37 (12 45 ) # 37 â › 7 [DIGIT SEVEN] +char \x38 (12 5 ) # 38 â “ 8 [DIGIT EIGHT] +char \x39 ( 2 4 ) # 39 â Š 9 [DIGIT NINE] +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 56 ) # 3B â ° ; [SEMICOLON] +char \x3F (1 456 ) # 3F â ¹ ? [QUESTION MARK] +char \x40 ( 4 ) # 40 â ˆ @ [COMMERCIAL AT] +char \x41 (1 ) # 41 â  A [LATIN CAPITAL LETTER A] +char \x42 (12 ) # 42 â ƒ B [LATIN CAPITAL LETTER B] +char \x43 (1 4 ) # 43 â ‰ C [LATIN CAPITAL LETTER C] +char \x44 (1 45 ) # 44 â ™ D [LATIN CAPITAL LETTER D] +char \x45 (1 5 ) # 45 â ‘ E [LATIN CAPITAL LETTER E] +char \x46 (12 4 ) # 46 â ‹ F [LATIN CAPITAL LETTER F] +char \x47 (12 45 ) # 47 â › G [LATIN CAPITAL LETTER G] +char \x48 (12 5 ) # 48 â “ H [LATIN CAPITAL LETTER H] +char \x49 ( 2 4 ) # 49 â Š I [LATIN CAPITAL LETTER I] +char \x4A ( 2 45 ) # 4A â š J [LATIN CAPITAL LETTER J] +char \x4B (1 3 ) # 4B â … K [LATIN CAPITAL LETTER K] +char \x4C (123 ) # 4C â ‡ L [LATIN CAPITAL LETTER L] +char \x4D (1 34 ) # 4D â  M [LATIN CAPITAL LETTER M] +char \x4E (1 345 ) # 4E â  N [LATIN CAPITAL LETTER N] +char \x4F (1 3 5 ) # 4F â • O [LATIN CAPITAL LETTER O] +char \x50 (1234 ) # 50 â  P [LATIN CAPITAL LETTER P] +char \x51 (12345 ) # 51 â Ÿ Q [LATIN CAPITAL LETTER Q] +char \x52 (123 5 ) # 52 â — R [LATIN CAPITAL LETTER R] +char \x53 ( 234 ) # 53 â Ž S [LATIN CAPITAL LETTER S] +char \x54 ( 2345 ) # 54 â ž T [LATIN CAPITAL LETTER T] +char \x55 (1 3 6 ) # 55 â ¥ U [LATIN CAPITAL LETTER U] +char \x56 (123 6 ) # 56 â § V [LATIN CAPITAL LETTER V] +char \x57 ( 2 456 ) # 57 â º W [LATIN CAPITAL LETTER W] +char \x58 (1 34 6 ) # 58 â ­ X [LATIN CAPITAL LETTER X] +char \x59 (1 3456 ) # 59 â ½ Y [LATIN CAPITAL LETTER Y] +char \x5A (1 3 56 ) # 5A â µ Z [LATIN CAPITAL LETTER Z] +char \x5E ( 34 6 ) # 5E â ¬ ^ [CIRCUMFLEX ACCENT] +char \x5F ( 456 ) # 5F â ¸ _ [LOW LINE] +char \x60 ( 4 ) # 60 â ˆ ` [GRAVE ACCENT] +char \x61 (1 ) # 61 â  a [LATIN SMALL LETTER A] +char \x62 (12 ) # 62 â ƒ b [LATIN SMALL LETTER B] +char \x63 (1 4 ) # 63 â ‰ c [LATIN SMALL LETTER C] +char \x64 (1 45 ) # 64 â ™ d [LATIN SMALL LETTER D] +char \x65 (1 5 ) # 65 â ‘ e [LATIN SMALL LETTER E] +char \x66 (12 4 ) # 66 â ‹ f [LATIN SMALL LETTER F] +char \x67 (12 45 ) # 67 â › g [LATIN SMALL LETTER G] +char \x68 (12 5 ) # 68 â “ h [LATIN SMALL LETTER H] +char \x69 ( 2 4 ) # 69 â Š i [LATIN SMALL LETTER I] +char \x6A ( 2 45 ) # 6A â š j [LATIN SMALL LETTER J] +char \x6B (1 3 ) # 6B â … k [LATIN SMALL LETTER K] +char \x6C (123 ) # 6C â ‡ l [LATIN SMALL LETTER L] +char \x6D (1 34 ) # 6D â  m [LATIN SMALL LETTER M] +char \x6E (1 345 ) # 6E â  n [LATIN SMALL LETTER N] +char \x6F (1 3 5 ) # 6F â • o [LATIN SMALL LETTER O] +char \x70 (1234 ) # 70 â  p [LATIN SMALL LETTER P] +char \x71 (12345 ) # 71 â Ÿ q [LATIN SMALL LETTER Q] +char \x72 (123 5 ) # 72 â — r [LATIN SMALL LETTER R] +char \x73 ( 234 ) # 73 â Ž s [LATIN SMALL LETTER S] +char \x74 ( 2345 ) # 74 â ž t [LATIN SMALL LETTER T] +char \x75 (1 3 6 ) # 75 â ¥ u [LATIN SMALL LETTER U] +char \x76 (123 6 ) # 76 â § v [LATIN SMALL LETTER V] +char \x77 ( 2 456 ) # 77 â º w [LATIN SMALL LETTER W] +char \x78 (1 34 6 ) # 78 â ­ x [LATIN SMALL LETTER X] +char \x79 (1 3456 ) # 79 â ½ y [LATIN SMALL LETTER Y] +char \x7A (1 3 56 ) # 7A â µ z [LATIN SMALL LETTER Z] +char \x7C (12 45 ) # 7C â › | [VERTICAL LINE] +char \x7E ( 45 ) # 7E â ˜ ~ [TILDE] +char \xA0 ( ) # A0 â €   [NO-BREAK SPACE] +char \u060C ( 5 ) # AC â  ØŒ [ARABIC COMMA] +char \xAD ( 3 6 ) # AD â ¤ ­ [SOFT HYPHEN] +char \u061B ( 56 ) # BB â ° Ø› [ARABIC SEMICOLON] +char \u061F ( 23 6 ) # BF â ¦ ØŸ [ARABIC QUESTION MARK] +char \u0621 ( 3 ) # C1 â „ Ø¡ [ARABIC LETTER HAMZA] +char \u0622 ( 345 ) # C2 â œ Ø¢ [ARABIC LETTER ALEF WITH MADDA ABOVE] +char \u0623 ( 34 ) # C3 â Œ Ø£ [ARABIC LETTER ALEF WITH HAMZA ABOVE] +char \u0624 (12 56 ) # C4 â ³ ؤ [ARABIC LETTER WAW WITH HAMZA ABOVE] +char \u0625 ( 4 6 ) # C5 â ¨ Ø¥ [ARABIC LETTER ALEF WITH HAMZA BELOW] +char \u0626 (1 3456 ) # C6 â ½ ئ [ARABIC LETTER YEH WITH HAMZA ABOVE] +char \u0627 (1 ) # C7 â  Ø§ [ARABIC LETTER ALEF] +char \u0628 (12 ) # C8 â ƒ ب [ARABIC LETTER BEH] +char \u0629 (1 6 ) # C9 â ¡ Ø© [ARABIC LETTER TEH MARBUTA] +char \u062A ( 2345 ) # CA â ž ت [ARABIC LETTER TEH] +char \u062B (1 456 ) # CB â ¹ Ø« [ARABIC LETTER THEH] +char \u062C ( 2 45 ) # CC â š ج [ARABIC LETTER JEEM] +char \u062D (1 56 ) # CD â ± Ø­ [ARABIC LETTER HAH] +char \u062E (1 34 6 ) # CE â ­ Ø® [ARABIC LETTER KHAH] +char \u062F (1 45 ) # CF â ™ د [ARABIC LETTER DAL] +char \u0630 ( 234 6 ) # D0 â ® Ø° [ARABIC LETTER THAL] +char \u0631 (123 5 ) # D1 â — ر [ARABIC LETTER REH] +char \u0632 (1 3 56 ) # D2 â µ ز [ARABIC LETTER ZAIN] +char \u0633 ( 234 ) # D3 â Ž س [ARABIC LETTER SEEN] +char \u0634 (1 4 6 ) # D4 â © Ø´ [ARABIC LETTER SHEEN] +char \u0635 (1234 6 ) # D5 â ¯ ص [ARABIC LETTER SAD] +char \u0636 (12 4 6 ) # D6 â « ض [ARABIC LETTER DAD] +char \u0637 ( 23456 ) # D7 â ¾ Ø· [ARABIC LETTER TAH] +char \u0638 (123456 ) # D8 â ¿ ظ [ARABIC LETTER ZAH] +char \u0639 (123 56 ) # D9 â · ع [ARABIC LETTER AIN] +char \u063A (12 6 ) # DA â £ غ [ARABIC LETTER GHAIN] +char \u0640 ( 2 ) # E0 â ‚ Ù€ [ARABIC TATWEEL] +char \u0641 (12 4 ) # E1 â ‹ Ù [ARABIC LETTER FEH] +char \u0642 (12345 ) # E2 â Ÿ Ù‚ [ARABIC LETTER QAF] +char \u0643 (1 3 ) # E3 â … Ùƒ [ARABIC LETTER KAF] +char \u0644 (123 ) # E4 â ‡ Ù„ [ARABIC LETTER LAM] +char \u0645 (1 34 ) # E5 â  Ù… [ARABIC LETTER MEEM] +char \u0646 (1 345 ) # E6 â  Ù† [ARABIC LETTER NOON] +char \u0647 (12 5 ) # E7 â “ Ù‡ [ARABIC LETTER HEH] +char \u0648 ( 2 456 ) # E8 â º Ùˆ [ARABIC LETTER WAW] +char \u0649 (1 3 5 ) # E9 â • Ù‰ [ARABIC LETTER ALEF MAKSURA] +char \u064A ( 2 4 ) # EA â Š ÙŠ [ARABIC LETTER YEH] +char \u064B ( 23 ) # EB â † Ù‹ [ARABIC FATHATAN] +char \u064C ( 2 6 ) # EC â ¢ ÙŒ [ARABIC DAMMATAN] +char \u064D ( 3 5 ) # ED â ” Ù [ARABIC KASRATAN] +char \u064E ( 2 ) # EE â ‚ ÙŽ [ARABIC FATHA] +char \u064F (1 3 6 ) # EF â ¥ Ù [ARABIC DAMMA] +char \u0650 (1 5 ) # F0 â ‘ Ù [ARABIC KASRA] +char \u0651 ( 6 ) # F1 â   Ù‘ [ARABIC SHADDA] +char \u0652 ( 2 5 ) # F2 â ’ Ù’ [ARABIC SUKUN] +char \xB0 ( 3 56 ) # â ´ ° [DEGREE SIGN] +char \xBF ( 23 6 ) # â ¦ ¿ [INVERTED QUESTION MARK] +char \u06D4 ( 2 56 ) # â ² Û” [ARABIC FULL STOP] +char \u2010 ( 3 6 ) # â ¤ †[HYPHEN] +char \u2011 ( 234 78) # ⣎ ‑ [NON-BREAKING HYPHEN] +char \u2018 ( 3 ) # â „ ‘ [LEFT SINGLE QUOTATION MARK] +char \u2019 ( 3 ) # â „ ’ [RIGHT SINGLE QUOTATION MARK] +char \u201C ( 23 56 ) # â ¶ “ [LEFT DOUBLE QUOTATION MARK] +char \u201D ( 23 56 ) # â ¶ †[RIGHT DOUBLE QUOTATION MARK] +char \u201E ( 23 56 ) # â ¶ „ [DOUBLE LOW-9 QUOTATION MARK] +char \u201F ( 23 56 ) # â ¶ ‟ [DOUBLE HIGH-REVERSED-9 QUOTATION MARK] + +include common.tti diff --git a/Tables/as.ttb b/Tables/as.ttb new file mode 100644 index 0000000000000000000000000000000000000000..81ab15b43e98eeab4a92de87d4055505c4ff9aa9 --- /dev/null +++ b/Tables/as.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Assamese + +include bengali.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/ascii-basic.tti b/Tables/ascii-basic.tti new file mode 100644 index 0000000000000000000000000000000000000000..de0ca24b32b3be4a8d0584cfb02a5e4e6ae998f0 --- /dev/null +++ b/Tables/ascii-basic.tti @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable defines a set of braille representations for the +# ASCII character set designed for languages which don't use them themselves. + +include letters-latin.tti +include numbers-dot8.tti +include punctuation-basic.tti diff --git a/BrailleTables/attrib.tbl b/Tables/attrib.atb similarity index 69% rename from BrailleTables/attrib.tbl rename to Tables/attrib.atb index b564820cf6a353fd8da434232e8ae9ed60866d55..b8b0dc6f6c155a61a3662bee903627eb8c6da9e4 100644 --- a/BrailleTables/attrib.tbl +++ b/Tables/attrib.atb @@ -2,20 +2,21 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# 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://mielke.cc/brltty/ # # This software is maintained by Dave Mielke . ############################################################################### -# BRLTTY Attributes Translation Table - +# BRLTTY Attributes Table - dot 1 ~fg-blue dot 2 ~fg-green diff --git a/BrailleTables/attributes.tbl b/Tables/attributes.atb similarity index 69% rename from BrailleTables/attributes.tbl rename to Tables/attributes.atb index 9464ef2a369b48a39b7bb54fccdcd2dcf288e0fa..09de3c916708b7a82f539cfecde8266629d49a48 100644 --- a/BrailleTables/attributes.tbl +++ b/Tables/attributes.atb @@ -2,20 +2,21 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# 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://mielke.cc/brltty/ # # This software is maintained by Dave Mielke . ############################################################################### -# BRLTTY Attributes Translation Table - +# BRLTTY Attributes Table - dot 1 =fg-blue dot 2 =fg-green diff --git a/Tables/awa.ttb b/Tables/awa.ttb new file mode 100644 index 0000000000000000000000000000000000000000..50572637741412416ab4fa74aa7a53dc87f96f35 --- /dev/null +++ b/Tables/awa.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Awadhi + +include devanagari.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/bengali.tti b/Tables/bengali.tti new file mode 100644 index 0000000000000000000000000000000000000000..aa618127123c0e6b4826b61e0baa578034c7c27a --- /dev/null +++ b/Tables/bengali.tti @@ -0,0 +1,109 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable defines the braille representations +# for the Bengali script. + +# Maintained by John J. Boyer, director@chpi.org, www.chpi.org +# +# This table is built and maintained by Leon Ungier +# with help and guidance from Mohammed R. Ramadan +# +# Converted from liblouis table by Samuel Thibault + +# generated by ttbtest: +char \u0981 ( 3 ) # â „ ঠ[BENGALI SIGN CANDRABINDU] +char \u0982 ( 56 ) # â ° ং [BENGALI SIGN ANUSVARA] +char \u0983 ( 6 ) # â   ঃ [BENGALI SIGN VISARGA] +char \u0985 (1 ) # â  à¦… [BENGALI LETTER A] +char \u0986 ( 345 ) # â œ আ [BENGALI LETTER AA] +char \u0987 ( 2 4 ) # â Š ই [BENGALI LETTER I] +char \u0988 ( 3 5 ) # â ” ঈ [BENGALI LETTER II] +char \u0989 (1 3 6 ) # â ¥ উ [BENGALI LETTER U] +char \u098A (12 56 ) # â ³ ঊ [BENGALI LETTER UU] + + +char \u098F (1 5 ) # â ‘ ঠ[BENGALI LETTER E] +char \u0990 ( 34 ) # â Œ ঠ[BENGALI LETTER AI] + + +char \u0993 (1 3 5 ) # â • ও [BENGALI LETTER O] +char \u0994 ( 2 4 6 ) # â ª ঔ [BENGALI LETTER AU] +char \u0995 (1 3 ) # â … ক [BENGALI LETTER KA] +char \u0996 ( 4 6 ) # â ¨ খ [BENGALI LETTER KHA] +char \u0997 (1234 ) # â  à¦— [BENGALI LETTER GA] +char \u0998 (12 6 ) # â £ ঘ [BENGALI LETTER GHA] +char \u0999 ( 34 6 ) # â ¬ ঙ [BENGALI LETTER NGA] +char \u099A (1 4 ) # â ‰ চ [BENGALI LETTER CA] +char \u099B (1 6 ) # â ¡ ছ [BENGALI LETTER CHA] +char \u099C ( 2 45 ) # â š জ [BENGALI LETTER JA] +char \u099D ( 3 56 ) # â ´ ঠ[BENGALI LETTER JHA] +char \u099E ( 2 5 ) # â ’ ঞ [BENGALI LETTER NYA] +char \u099F ( 23456 ) # â ¾ ট [BENGALI LETTER TTA] +char \u09A0 ( 2 456 ) # â º ঠ [BENGALI LETTER TTHA] +char \u09A1 (12 4 6 ) # â « ড [BENGALI LETTER DDA] +char \u09A2 (123456 ) # â ¿ ঢ [BENGALI LETTER DDHA] +char \u09A3 ( 3456 ) # â ¼ ণ [BENGALI LETTER NNA] +char \u09A4 ( 2345 ) # â ž ত [BENGALI LETTER TA] +char \u09A5 (1 456 ) # â ¹ থ [BENGALI LETTER THA] +char \u09A6 (1 45 ) # â ™ দ [BENGALI LETTER DA] +char \u09A7 ( 234 6 ) # â ® ধ [BENGALI LETTER DHA] +char \u09A8 (1 345 ) # â  à¦¨ [BENGALI LETTER NA] + +char \u09AA (1234 ) # â  à¦ª [BENGALI LETTER PA] +char \u09AB ( 23 5 ) # â – ফ [BENGALI LETTER PHA] +char \u09AC (12 ) # â ƒ ব [BENGALI LETTER BA] +char \u09AD ( 45 ) # â ˜ ভ [BENGALI LETTER BHA] +char \u09AE (1 34 ) # â  à¦® [BENGALI LETTER MA] +char \u09AF (1 3456 ) # â ½ য [BENGALI LETTER YA] +char \u09B0 (123 5 ) # â — র [BENGALI LETTER RA] + +char \u09B2 (123 ) # â ‡ ল [BENGALI LETTER LA] + + + +char \u09B6 (1 4 6 ) # â © শ [BENGALI LETTER SHA] +char \u09B7 (1234 6 ) # â ¯ ষ [BENGALI LETTER SSA] +char \u09B8 ( 234 ) # â Ž স [BENGALI LETTER SA] +char \u09B9 (12 5 ) # â “ হ [BENGALI LETTER HA] +char \u09BD ( 2 ) # â ‚ ঽ [BENGALI SIGN AVAGRAHA] +char \u09BE ( 345 ) # â œ া [BENGALI VOWEL SIGN AA] +char \u09BF ( 2 4 ) # â Š ি [BENGALI VOWEL SIGN I] +char \u09C0 ( 3 5 ) # â ” ী [BENGALI VOWEL SIGN II] +char \u09C1 (1 3 6 ) # â ¥ ৠ[BENGALI VOWEL SIGN U] +char \u09C2 (12 56 ) # â ³ ূ [BENGALI VOWEL SIGN UU] + + +char \u09C7 (1 5 ) # â ‘ ে [BENGALI VOWEL SIGN E] +char \u09C8 ( 34 ) # â Œ ৈ [BENGALI VOWEL SIGN AI] + + +char \u09CB (1 3 5 ) # â • ো [BENGALI VOWEL SIGN O] +char \u09CC ( 2 4 6 ) # â ª ৌ [BENGALI VOWEL SIGN AU] +char \u09CD ( 4 ) # â ˆ ৠ[BENGALI SIGN VIRAMA] + +char \u09E6 ( 2 45 ) # â š ০ [BENGALI DIGIT ZERO] +char \u09E7 (1 ) # â  à§§ [BENGALI DIGIT ONE] +char \u09E8 (12 ) # â ƒ ২ [BENGALI DIGIT TWO] +char \u09E9 (1 4 ) # â ‰ ৩ [BENGALI DIGIT THREE] +char \u09EA (1 45 ) # â ™ ৪ [BENGALI DIGIT FOUR] +char \u09EB (1 5 ) # â ‘ ৫ [BENGALI DIGIT FIVE] +char \u09EC (12 4 ) # â ‹ ৬ [BENGALI DIGIT SIX] +char \u09ED (12 45 ) # â › ৭ [BENGALI DIGIT SEVEN] +char \u09EE (12 5 ) # â “ ৮ [BENGALI DIGIT EIGHT] +char \u09EF ( 2 4 ) # â Š ৯ [BENGALI DIGIT NINE] diff --git a/Tables/bg.ttb b/Tables/bg.ttb new file mode 100644 index 0000000000000000000000000000000000000000..2b4f99f8c9d71ac77070e8d3184d884ed7ac105d --- /dev/null +++ b/Tables/bg.ttb @@ -0,0 +1,34 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Bulgarian +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +# the standard representations for the letters of the Cyrillic alphabet +include letters-cyrillic.tti + +include letters-latin-dot8.tti +include numbers-nemeth.tti +include punctuation-alternate.tti +include common.tti diff --git a/Tables/bh.ttb b/Tables/bh.ttb new file mode 100644 index 0000000000000000000000000000000000000000..af1ca52c6104c8f231225f385cad7551a344dec8 --- /dev/null +++ b/Tables/bh.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Bihari + +include devanagari.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/bn.ttb b/Tables/bn.ttb new file mode 100644 index 0000000000000000000000000000000000000000..ee4c6d710c10ec8e4f99652b6ab62749d23b06f5 --- /dev/null +++ b/Tables/bn.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Bengali + +include bengali.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/bo.ttb b/Tables/bo.ttb new file mode 100644 index 0000000000000000000000000000000000000000..efd72ae524433e3dec379cfbf600faa1e80d617f --- /dev/null +++ b/Tables/bo.ttb @@ -0,0 +1,91 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Tibetan +# +# Samuel Thibault +# +# From "Braille without borders" + +char \u0F40 (1 3 ) # â … ཀ [TIBETAN LETTER KA] +char \u0F41 (1 4 ) # â ‰ འ[TIBETAN LETTER KHA] +char \u0F42 (12 45 ) # â › ག [TIBETAN LETTER GA] +char \u0F44 ( 23 56 ) # â ¶ ང [TIBETAN LETTER NGA] +char \u0F45 (1 456 ) # â ¹ ཅ [TIBETAN LETTER CA] +char \u0F46 (1 3456 ) # â ½ ཆ [TIBETAN LETTER CHA] +char \u0F47 (12345 ) # â Ÿ ཇ [TIBETAN LETTER JA] +char \u0F49 ( 345 ) # â œ ཉ [TIBETAN LETTER NYA] +char \u0F4F ( 2345 ) # â ž འ[TIBETAN LETTER TA] +char \u0F50 ( 23456 ) # â ¾ འ[TIBETAN LETTER THA] +char \u0F51 (1 45 ) # â ™ ད [TIBETAN LETTER DA] +char \u0F53 (1 345 ) # â  à½“ [TIBETAN LETTER NA] +char \u0F54 (1234 ) # â  à½” [TIBETAN LETTER PA] +char \u0F55 (1234 6 ) # â ¯ ཕ [TIBETAN LETTER PHA] +char \u0F56 (12 ) # â ƒ བ [TIBETAN LETTER BA] +char \u0F58 (1 34 ) # â  à½˜ [TIBETAN LETTER MA] +char \u0F59 (1 34 6 ) # â ­ ཙ [TIBETAN LETTER TSA] +char \u0F5A (1 3 56 ) # â µ ཚ [TIBETAN LETTER TSHA] +char \u0F5B (123456 ) # â ¿ ཛ [TIBETAN LETTER DZA] +char \u0F5D ( 2 456 ) # â º འ[TIBETAN LETTER WA] +char \u0F5E (1 4 6 ) # â © ཞ [TIBETAN LETTER ZHA] +char \u0F5F ( 234 ) # â Ž ཟ [TIBETAN LETTER ZA] +char \u0F60 (12 4 6 ) # â « འ [TIBETAN LETTER -A] +char \u0F61 ( 2 45 ) # â š ཡ [TIBETAN LETTER YA] +char \u0F62 (123 5 ) # â — ར [TIBETAN LETTER RA] +char \u0F63 (123 ) # â ‡ ལ [TIBETAN LETTER LA] +char \u0F64 (1 56 ) # â ± ཤ [TIBETAN LETTER SHA] +char \u0F66 ( 234 6 ) # â ® ས [TIBETAN LETTER SA] +char \u0F67 (12 5 ) # â “ ཧ [TIBETAN LETTER HA] +char \u0F68 (1 ) # â  à½¨ [TIBETAN LETTER A] + +# subjoined letters +char \u0F90 (1 3 ) # â … ྠ[TIBETAN SUBJOINED LETTER KA] +char \u0F91 (1 4 ) # â ‰ ྑ [TIBETAN SUBJOINED LETTER KHA] +char \u0F92 (12 45 ) # â › ྒ [TIBETAN SUBJOINED LETTER GA] +char \u0F94 ( 23 56 ) # â ¶ ྔ [TIBETAN SUBJOINED LETTER NGA] +char \u0F95 (1 456 ) # â ¹ ྕ [TIBETAN SUBJOINED LETTER CA] +char \u0F96 (1 3456 ) # â ½ ྖ [TIBETAN SUBJOINED LETTER CHA] +char \u0F97 (12345 ) # â Ÿ ྗ [TIBETAN SUBJOINED LETTER JA] +char \u0F99 ( 345 ) # â œ ྙ [TIBETAN SUBJOINED LETTER NYA] +char \u0F9F ( 2345 ) # â ž ྟ [TIBETAN SUBJOINED LETTER TA] +char \u0FA0 ( 23456 ) # â ¾ ྠ [TIBETAN SUBJOINED LETTER THA] +char \u0FA1 (1 45 ) # â ™ ྡ [TIBETAN SUBJOINED LETTER DA] +char \u0FA3 (1 345 ) # â  à¾£ [TIBETAN SUBJOINED LETTER NA] +char \u0FA4 (1234 ) # â  à¾¤ [TIBETAN SUBJOINED LETTER PA] +char \u0FA5 (1234 6 ) # â ¯ ྥ [TIBETAN SUBJOINED LETTER PHA] +char \u0FA6 (12 ) # â ƒ ྦ [TIBETAN SUBJOINED LETTER BA] +char \u0FA8 (1 34 ) # â  à¾¨ [TIBETAN SUBJOINED LETTER MA] +char \u0FA9 (1 34 6 ) # â ­ ྩ [TIBETAN SUBJOINED LETTER TSA] +char \u0FAA (1 3 56 ) # â µ ྪ [TIBETAN SUBJOINED LETTER TSHA] +char \u0FAB (123456 ) # â ¿ ྫ [TIBETAN SUBJOINED LETTER DZA] +char \u0FAD ( 2 456 ) # â º ྭ [TIBETAN SUBJOINED LETTER WA] +char \u0FAE (1 4 6 ) # â © ྮ [TIBETAN SUBJOINED LETTER ZHA] +char \u0FAF ( 234 ) # â Ž ྯ [TIBETAN SUBJOINED LETTER ZA] +char \u0FB0 (12 4 6 ) # â « ྰ [TIBETAN SUBJOINED LETTER -A] +char \u0FB1 ( 2 45 ) # â š ྱ [TIBETAN SUBJOINED LETTER YA] +char \u0FB2 (123 5 ) # â — ྲ [TIBETAN SUBJOINED LETTER RA] +char \u0FB3 (123 ) # â ‡ ླ [TIBETAN SUBJOINED LETTER LA] +char \u0FB4 (1 56 ) # â ± ྴ [TIBETAN SUBJOINED LETTER SHA] +char \u0FB6 ( 234 6 ) # â ® ྶ [TIBETAN SUBJOINED LETTER SA] +char \u0FB7 (12 5 ) # â “ ྷ [TIBETAN SUBJOINED LETTER HA] +char \u0FB8 (1 ) # â  à¾¸ [TIBETAN SUBJOINED LETTER A] + +include letters-latin-dot8.tti +include numbers-nemeth.tti +include punctuation-alternate.tti +include common.tti diff --git a/Tables/boxes.tti b/Tables/boxes.tti new file mode 100644 index 0000000000000000000000000000000000000000..f4f7b791eb388ffa968afc51257ece1312ab07fb --- /dev/null +++ b/Tables/boxes.tti @@ -0,0 +1,168 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable implements a portable representation of the box +# drawing characters.aNo distinction is made between the three types of boxes: +# light, heavy, and double. Characters with no vertical component (horizontal +# edges) are represented by the four middle dots [2356]. Those with a vertical +# component above the center (e.g. bottom corners) add the two top dots [14], +# and those with a vertical component below the center (e.g. top corners) add +# the two bottom dots [78]. This means, for example, that side edges and the +# cross are represented by a full cell [12345678]. + +# For diagonals within boxes, the top-left and bottom-right dots [18] are used +# to represent the line which descends toward the right, and the top-right and +# bottom-left dots [47] are used to represent the line which ascends toward the +# right. The X is represented by all four of these dots [1478]. + +char \u2500 ( 23 56 ) # â ¶ ─ [BOX DRAWINGS LIGHT HORIZONTAL] +char \u254C ( 23 56 ) # â ¶ â•Œ [BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL] +char \u2504 ( 23 56 ) # â ¶ ┄ [BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL] +char \u2508 ( 23 56 ) # â ¶ ┈ [BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL] +char \u2502 (12345678) # ⣿ │ [BOX DRAWINGS LIGHT VERTICAL] +char \u254E (12345678) # ⣿ â•Ž [BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL] +char \u2506 (12345678) # ⣿ ┆ [BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL] +char \u250A (12345678) # ⣿ ┊ [BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL] +char \u250C ( 23 5678) # ⣶ ┌ [BOX DRAWINGS LIGHT DOWN AND RIGHT] +char \u2510 ( 23 5678) # ⣶ â” [BOX DRAWINGS LIGHT DOWN AND LEFT] +char \u2514 (123456 ) # â ¿ â”” [BOX DRAWINGS LIGHT UP AND RIGHT] +char \u2518 (123456 ) # â ¿ ┘ [BOX DRAWINGS LIGHT UP AND LEFT] +char \u251C (12345678) # ⣿ ├ [BOX DRAWINGS LIGHT VERTICAL AND RIGHT] +char \u2524 (12345678) # ⣿ ┤ [BOX DRAWINGS LIGHT VERTICAL AND LEFT] +char \u252C ( 23 5678) # ⣶ ┬ [BOX DRAWINGS LIGHT DOWN AND HORIZONTAL] +char \u2534 (123456 ) # â ¿ â”´ [BOX DRAWINGS LIGHT UP AND HORIZONTAL] +char \u253C (12345678) # ⣿ ┼ [BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL] + +char \u2501 ( 23 56 ) # â ¶ â” [BOX DRAWINGS HEAVY HORIZONTAL] +char \u254D ( 23 56 ) # â ¶ â• [BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL] +char \u2505 ( 23 56 ) # â ¶ â”… [BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL] +char \u2509 ( 23 56 ) # â ¶ ┉ [BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL] +char \u2503 (12345678) # ⣿ ┃ [BOX DRAWINGS HEAVY VERTICAL] +char \u254F (12345678) # ⣿ â• [BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL] +char \u2507 (12345678) # ⣿ ┇ [BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL] +char \u250B (12345678) # ⣿ ┋ [BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL] +char \u250F ( 23 5678) # ⣶ â” [BOX DRAWINGS HEAVY DOWN AND RIGHT] +char \u2513 ( 23 5678) # ⣶ ┓ [BOX DRAWINGS HEAVY DOWN AND LEFT] +char \u2517 (123456 ) # â ¿ â”— [BOX DRAWINGS HEAVY UP AND RIGHT] +char \u251B (123456 ) # â ¿ â”› [BOX DRAWINGS HEAVY UP AND LEFT] +char \u2523 (12345678) # ⣿ ┣ [BOX DRAWINGS HEAVY VERTICAL AND RIGHT] +char \u252B (12345678) # ⣿ ┫ [BOX DRAWINGS HEAVY VERTICAL AND LEFT] +char \u2533 ( 23 5678) # ⣶ ┳ [BOX DRAWINGS HEAVY DOWN AND HORIZONTAL] +char \u253B (123456 ) # â ¿ â”» [BOX DRAWINGS HEAVY UP AND HORIZONTAL] +char \u254B (12345678) # ⣿ â•‹ [BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL] + +char \u2550 ( 23 56 ) # â ¶ â• [BOX DRAWINGS DOUBLE HORIZONTAL] +char \u2551 (12345678) # ⣿ â•‘ [BOX DRAWINGS DOUBLE VERTICAL] +char \u2554 ( 23 5678) # ⣶ â•” [BOX DRAWINGS DOUBLE DOWN AND RIGHT] +char \u2557 ( 23 5678) # ⣶ â•— [BOX DRAWINGS DOUBLE DOWN AND LEFT] +char \u255A (123456 ) # â ¿ â•š [BOX DRAWINGS DOUBLE UP AND RIGHT] +char \u255D (123456 ) # â ¿ â• [BOX DRAWINGS DOUBLE UP AND LEFT] +char \u2560 (12345678) # ⣿ â•  [BOX DRAWINGS DOUBLE VERTICAL AND RIGHT] +char \u2563 (12345678) # ⣿ â•£ [BOX DRAWINGS DOUBLE VERTICAL AND LEFT] +char \u2566 ( 23 5678) # ⣶ ╦ [BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL] +char \u2569 (123456 ) # â ¿ â•© [BOX DRAWINGS DOUBLE UP AND HORIZONTAL] +char \u256C (12345678) # ⣿ ╬ [BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL] + +char \u250D ( 23 5678) # ⣶ â” [BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY] +char \u250E ( 23 5678) # ⣶ ┎ [BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT] +char \u2511 ( 23 5678) # ⣶ ┑ [BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY] +char \u2512 ( 23 5678) # ⣶ â”’ [BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT] +char \u2515 (123456 ) # â ¿ ┕ [BOX DRAWINGS UP LIGHT AND RIGHT HEAVY] +char \u2516 (123456 ) # â ¿ â”– [BOX DRAWINGS UP HEAVY AND RIGHT LIGHT] +char \u2519 (123456 ) # â ¿ â”™ [BOX DRAWINGS UP LIGHT AND LEFT HEAVY] +char \u251A (123456 ) # â ¿ ┚ [BOX DRAWINGS UP HEAVY AND LEFT LIGHT] +char \u251D (12345678) # ⣿ â” [BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY] +char \u251E (12345678) # ⣿ ┞ [BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT] +char \u251F (12345678) # ⣿ ┟ [BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT] +char \u2520 (12345678) # ⣿ â”  [BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT] +char \u2521 (12345678) # ⣿ ┡ [BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY] +char \u2522 (12345678) # ⣿ ┢ [BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY] +char \u2525 (12345678) # ⣿ ┥ [BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY] +char \u2526 (12345678) # ⣿ ┦ [BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT] +char \u2527 (12345678) # ⣿ ┧ [BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT] +char \u2528 (12345678) # ⣿ ┨ [BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT] +char \u2529 (12345678) # ⣿ ┩ [BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY] +char \u252A (12345678) # ⣿ ┪ [BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY] +char \u252D ( 23 5678) # ⣶ â”­ [BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT] +char \u252E ( 23 5678) # ⣶ â”® [BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT] +char \u252F ( 23 5678) # ⣶ ┯ [BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY] +char \u2530 ( 23 5678) # ⣶ â”° [BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT] +char \u2531 ( 23 5678) # ⣶ â”± [BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY] +char \u2532 ( 23 5678) # ⣶ ┲ [BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY] +char \u2535 (123456 ) # â ¿ ┵ [BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT] +char \u2536 (123456 ) # â ¿ ┶ [BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT] +char \u2537 (123456 ) # â ¿ â”· [BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY] +char \u2538 (123456 ) # â ¿ ┸ [BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT] +char \u2539 (123456 ) # â ¿ ┹ [BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY] +char \u253A (123456 ) # â ¿ ┺ [BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY] +char \u253D (12345678) # ⣿ ┽ [BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT] +char \u253E (12345678) # ⣿ ┾ [BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT] +char \u253F (12345678) # ⣿ ┿ [BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY] +char \u2540 (12345678) # ⣿ â•€ [BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT] +char \u2541 (12345678) # ⣿ â• [BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT] +char \u2542 (12345678) # ⣿ â•‚ [BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT] +char \u2543 (12345678) # ⣿ ╃ [BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT] +char \u2544 (12345678) # ⣿ â•„ [BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT] +char \u2545 (12345678) # ⣿ â•… [BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT] +char \u2546 (12345678) # ⣿ ╆ [BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT] +char \u2547 (12345678) # ⣿ ╇ [BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY] +char \u2548 (12345678) # ⣿ ╈ [BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY] +char \u2549 (12345678) # ⣿ ╉ [BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY] +char \u254A (12345678) # ⣿ â•Š [BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY] + +char \u2552 ( 23 5678) # ⣶ â•’ [BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE] +char \u2553 ( 23 5678) # ⣶ â•“ [BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE] +char \u2555 ( 23 5678) # ⣶ â•• [BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE] +char \u2556 ( 23 5678) # ⣶ â•– [BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE] +char \u2558 (123456 ) # â ¿ ╘ [BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE] +char \u2559 (123456 ) # â ¿ â•™ [BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE] +char \u255B (123456 ) # â ¿ â•› [BOX DRAWINGS UP SINGLE AND LEFT DOUBLE] +char \u255C (123456 ) # â ¿ â•œ [BOX DRAWINGS UP DOUBLE AND LEFT SINGLE] +char \u255E (12345678) # ⣿ â•ž [BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE] +char \u255F (12345678) # ⣿ â•Ÿ [BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE] +char \u2561 (12345678) # ⣿ â•¡ [BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE] +char \u2562 (12345678) # ⣿ â•¢ [BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE] +char \u2564 ( 23 5678) # ⣶ ╤ [BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE] +char \u2565 ( 23 5678) # ⣶ â•¥ [BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE] +char \u2567 (123456 ) # â ¿ ╧ [BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE] +char \u2568 (123456 ) # â ¿ ╨ [BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE] +char \u256A (12345678) # ⣿ ╪ [BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE] +char \u256B (12345678) # ⣿ â•« [BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE] + +char \u256D ( 23 5678) # ⣶ â•­ [BOX DRAWINGS LIGHT ARC DOWN AND RIGHT] +char \u256E ( 23 5678) # ⣶ â•® [BOX DRAWINGS LIGHT ARC DOWN AND LEFT] +char \u256F (123456 ) # â ¿ ╯ [BOX DRAWINGS LIGHT ARC UP AND LEFT] +char \u2570 (123456 ) # â ¿ â•° [BOX DRAWINGS LIGHT ARC UP AND RIGHT] + +char \u2574 ( 23 56 ) # â ¶ â•´ [BOX DRAWINGS LIGHT LEFT] +char \u2575 (123456 ) # â ¿ ╵ [BOX DRAWINGS LIGHT UP] +char \u2576 ( 23 56 ) # â ¶ ╶ [BOX DRAWINGS LIGHT RIGHT] +char \u2577 ( 23 5678) # ⣶ â•· [BOX DRAWINGS LIGHT DOWN] +char \u2578 ( 23 56 ) # â ¶ ╸ [BOX DRAWINGS HEAVY LEFT] +char \u2579 (123456 ) # â ¿ ╹ [BOX DRAWINGS HEAVY UP] +char \u257A ( 23 56 ) # â ¶ ╺ [BOX DRAWINGS HEAVY RIGHT] +char \u257B ( 23 5678) # ⣶ â•» [BOX DRAWINGS HEAVY DOWN] + +char \u257C ( 23 56 ) # â ¶ ╼ [BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT] +char \u257D (12345678) # ⣿ ╽ [BOX DRAWINGS LIGHT UP AND HEAVY DOWN] +char \u257E ( 23 56 ) # â ¶ ╾ [BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT] +char \u257F (12345678) # ⣿ â•¿ [BOX DRAWINGS HEAVY UP AND LIGHT DOWN] + +char \u2571 ( 4 7 ) # ⡈ ╱ [BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT] +char \u2572 (1 8) # ⢠╲ [BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT] +char \u2573 (1 4 78) # ⣉ ╳ [BOX DRAWINGS LIGHT DIAGONAL CROSS] diff --git a/Tables/bra.ttb b/Tables/bra.ttb new file mode 100644 index 0000000000000000000000000000000000000000..bd96dc3b30192f4ea4f249a0f1f1eba8ce662f0c --- /dev/null +++ b/Tables/bra.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Braj + +include devanagari.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/brf.ttb b/Tables/brf.ttb new file mode 100644 index 0000000000000000000000000000000000000000..73d07b133dae797726c2ad784677b00fa65fb075 --- /dev/null +++ b/Tables/brf.ttb @@ -0,0 +1,131 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - for viewing .brf files within an editor or pager + +char \s ( ) + +char A (1 ) +char B (12 ) +char C (1 4 ) +char D (1 45 ) +char E (1 5 ) +char F (12 4 ) +char G (12 45 ) +char H (12 5 ) +char I ( 2 4 ) +char J ( 2 45 ) + +char K (1 3 ) +char L (123 ) +char M (1 34 ) +char N (1 345 ) +char O (1 3 5 ) +char P (1234 ) +char Q (12345 ) +char R (123 5 ) +char S ( 234 ) +char T ( 2345 ) + +char U (1 3 6) +char V (123 6) +char X (1 34 6) +char Y (1 3456) +char Z (1 3 56) +char & (1234 6) +char = (123456) +char ( (123 56) +char ! ( 234 6) +char ) ( 23456) + +char * (1 6) +char < (12 6) +char % (1 4 6) +char ? (1 456) +char : (1 56) +char $ (12 4 6) +char ] (12 456) +char \\ (12 56) +char [ ( 2 4 6) +char W ( 2 456) + +char 1 ( 2 ) +char 2 ( 23 ) +char 3 ( 2 5 ) +char 4 ( 2 56) +char 5 ( 2 6) +char 6 ( 23 5 ) +char 7 ( 23 56) +char 8 ( 23 6) +char 9 ( 3 5 ) +char 0 ( 3 56) + +char / ( 34 ) +char + ( 34 6) +char \# ( 3456) +char > ( 345 ) +char ' ( 3 ) +char - ( 3 6) + +char @ ( 4 ) +char ^ ( 45 ) +char _ ( 456) +char " ( 5 ) +char . ( 4 6) +char ; ( 56) +char , ( 6) + +# For convenience, lowercase alphabetic characters are also defined +# so as to have readable text when not viewing a .brf file +# (like BRLTTY's config menu for switching to another braille table). +char a (1 ) +char b (12 ) +char c (1 4 ) +char d (1 45 ) +char e (1 5 ) +char f (12 4 ) +char g (12 45 ) +char h (12 5 ) +char i ( 2 4 ) +char j ( 2 45 ) +char k (1 3 ) +char l (123 ) +char m (1 34 ) +char n (1 345 ) +char o (1 3 5 ) +char p (1234 ) +char q (12345 ) +char r (123 5 ) +char s ( 234 ) +char t ( 2345 ) +char u (1 3 6) +char v (123 6) +char w ( 2 456) +char x (1 34 6) +char y (1 3456) +char z (1 3 56) + +# The following additional characters need to be defined +# because some .brf files contain non-standard characters +# and because some braille translators output non-standard characters. +char { ( 2 4 6) +char } (12 456) +char | (12 56) +char ~ ( 45 ) +char ` ( 4 ) +char \X7F ( 456) diff --git a/Tables/common.tti b/Tables/common.tti new file mode 100644 index 0000000000000000000000000000000000000000..44cf98240ae8a13a26349e6e470ee61be684fe5a --- /dev/null +++ b/Tables/common.tti @@ -0,0 +1,27 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable is included by all general purpose text tables. Its +# sole purpose is to be a common place wherein to include text subtables which +# define braille representations that are generally useful in all contexts. + +# the space characters +include spaces.tti + +# the box drawing characters +include boxes.tti diff --git a/Tables/control-latin.tti b/Tables/control-latin.tti new file mode 100644 index 0000000000000000000000000000000000000000..fe8a0b4e49f86f9947f705c36ad5bca9272365b1 --- /dev/null +++ b/Tables/control-latin.tti @@ -0,0 +1,47 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable defines the standard braille representations for +# the 26 Latin control characters. + +char \x01 (1 78) # 01 ⣠[START OF HEADING] +char \x02 (12 78) # 02 ⣃ [START OF TEXT] +char \x03 (1 4 78) # 03 ⣉ [END OF TEXT] +char \x04 (1 45 78) # 04 ⣙ [END OF TRANSMISSION] +char \x05 (1 5 78) # 05 ⣑ [ENQUIRY] +char \x06 (12 4 78) # 06 ⣋ [ACKNOWLEDGE] +char \x07 (12 45 78) # 07 ⣛ [BELL] +char \x08 (12 5 78) # 08 ⣓ [BACKSPACE] +char \x09 ( 2 4 78) # 09 ⣊ [CHARACTER TABULATION] +char \x0A ( 2 45 78) # 0A ⣚ [LINE FEED (LF)] +char \x0B (1 3 78) # 0B ⣅ [LINE TABULATION] +char \x0C (123 78) # 0C ⣇ [FORM FEED (FF)] +char \x0D (1 34 78) # 0D ⣠[CARRIAGE RETURN (CR)] +char \x0E (1 345 78) # 0E ⣠[SHIFT OUT] +char \x0F (1 3 5 78) # 0F ⣕ [SHIFT IN] +char \x10 (1234 78) # 10 ⣠[DATA LINK ESCAPE] +char \x11 (12345 78) # 11 ⣟ [DEVICE CONTROL ONE] +char \x12 (123 5 78) # 12 ⣗ [DEVICE CONTROL TWO] +char \x13 ( 234 78) # 13 ⣎ [DEVICE CONTROL THREE] +char \x14 ( 2345 78) # 14 ⣞ [DEVICE CONTROL FOUR] +char \x15 (1 3 678) # 15 ⣥ [NEGATIVE ACKNOWLEDGE] +char \x16 (123 678) # 16 ⣧ [SYNCHRONOUS IDLE] +char \x17 ( 2 45678) # 17 ⣺ [END OF TRANSMISSION BLOCK] +char \x18 (1 34 678) # 18 ⣭ [CANCEL] +char \x19 (1 345678) # 19 ⣽ [END OF MEDIUM] +char \x1A (1 3 5678) # 1A ⣵ [SUBSTITUTE] diff --git a/ContractionTables/countries.cti b/Tables/countries.cti similarity index 96% rename from ContractionTables/countries.cti rename to Tables/countries.cti index 4819319b290478b327a4e7ac5e300154d175a868..8abd81c674d94f2fc23b042f57c0e50c6e236f33 100644 --- a/ContractionTables/countries.cti +++ b/Tables/countries.cti @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# 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://mielke.cc/brltty/ # diff --git a/Tables/cs.ttb b/Tables/cs.ttb new file mode 100644 index 0000000000000000000000000000000000000000..a9b6572db21efc17dd3d11641fe366870076c295 --- /dev/null +++ b/Tables/cs.ttb @@ -0,0 +1,177 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Czech + +# the numbers 0-9 are represented by the letters j,a-i with dot 8 added +include numbers-dot8.tti + +# generated by ttbtest: charset=iso-8859-2 +char \x01 (1 78) # 01 ⣠[START OF HEADING] +char \x02 (12 78) # 02 ⣃ [START OF TEXT] +char \x03 (1 4 78) # 03 ⣉ [END OF TEXT] +char \x04 (1 45 78) # 04 ⣙ [END OF TRANSMISSION] +char \x05 (1 5 78) # 05 ⣑ [ENQUIRY] +char \x06 (12 4 78) # 06 ⣋ [ACKNOWLEDGE] +char \x07 (12 45 78) # 07 ⣛ [BELL] +char \x08 (12 5 78) # 08 ⣓ [BACKSPACE] +char \x09 ( 2 4 78) # 09 ⣊ [CHARACTER TABULATION] +char \x0A ( 2 45 78) # 0A ⣚ [LINE FEED (LF)] +char \x0B (1 3 78) # 0B ⣅ [LINE TABULATION] +char \x0C (123 78) # 0C ⣇ [FORM FEED (FF)] +char \x0D (1 34 78) # 0D ⣠[CARRIAGE RETURN (CR)] +char \x0E (1 345 78) # 0E ⣠[SHIFT OUT] +char \x0F (1 3 5 78) # 0F ⣕ [SHIFT IN] +char \x10 (1234 78) # 10 ⣠[DATA LINK ESCAPE] +char \x11 (12345 78) # 11 ⣟ [DEVICE CONTROL ONE] +char \x12 (123 5 78) # 12 ⣗ [DEVICE CONTROL TWO] +char \x13 ( 234 78) # 13 ⣎ [DEVICE CONTROL THREE] +char \x14 ( 2345 78) # 14 ⣞ [DEVICE CONTROL FOUR] +char \x15 (1 3 678) # 15 ⣥ [NEGATIVE ACKNOWLEDGE] +char \x16 (123 678) # 16 ⣧ [SYNCHRONOUS IDLE] +char \x17 (123 5678) # 17 ⣷ [END OF TRANSMISSION BLOCK] +char \x18 (1 34 678) # 18 ⣭ [CANCEL] +char \x19 (1 345678) # 19 ⣽ [END OF MEDIUM] +char \x1A (1 3 5678) # 1A ⣵ [SUBSTITUTE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 23 5 ) # 21 â – ! [EXCLAMATION MARK] +char \x22 ( 23 56 ) # 22 â ¶ " [QUOTATION MARK] +char \x23 ( 34567 ) # 23 ⡼ # [NUMBER SIGN] +char \x24 ( 23 5 8) # 24 ⢖ $ [DOLLAR SIGN] +char \x25 (1234 8) # 25 ⢠% [PERCENT SIGN] +char \x26 ( 23 5 78) # 26 ⣖ & [AMPERSAND] +char \x27 ( 4 ) # 27 â ˆ ' [APOSTROPHE] +char \x28 ( 23 6 ) # 28 â ¦ ( [LEFT PARENTHESIS] +char \x29 ( 3 56 ) # 29 â ´ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 2 56 ) # 2B â ² + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 3 ) # 2E â „ . [FULL STOP] +char \x2F (12 456 ) # 2F â » / [SOLIDUS] +# Hindu-Arabic numerals # 30-39 +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C ( 23 8) # 3C ⢆ < [LESS-THAN SIGN] +char \x3D ( 23 5678) # 3D ⣶ = [EQUALS SIGN] +char \x3E ( 567 ) # 3E â¡° > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 (12 456 8) # 40 ⢻ @ [COMMERCIAL AT] +char \x41 (1 7 ) # 41 â¡ A [LATIN CAPITAL LETTER A] +char \x42 (12 7 ) # 42 ⡃ B [LATIN CAPITAL LETTER B] +char \x43 (1 4 7 ) # 43 ⡉ C [LATIN CAPITAL LETTER C] +char \x44 (1 45 7 ) # 44 â¡™ D [LATIN CAPITAL LETTER D] +char \x45 (1 5 7 ) # 45 â¡‘ E [LATIN CAPITAL LETTER E] +char \x46 (12 4 7 ) # 46 â¡‹ F [LATIN CAPITAL LETTER F] +char \x47 (12 45 7 ) # 47 â¡› G [LATIN CAPITAL LETTER G] +char \x48 (12 5 7 ) # 48 â¡“ H [LATIN CAPITAL LETTER H] +char \x49 ( 2 4 7 ) # 49 â¡Š I [LATIN CAPITAL LETTER I] +char \x4A ( 2 45 7 ) # 4A â¡š J [LATIN CAPITAL LETTER J] +char \x4B (1 3 7 ) # 4B â¡… K [LATIN CAPITAL LETTER K] +char \x4C (123 7 ) # 4C ⡇ L [LATIN CAPITAL LETTER L] +char \x4D (1 34 7 ) # 4D â¡ M [LATIN CAPITAL LETTER M] +char \x4E (1 345 7 ) # 4E â¡ N [LATIN CAPITAL LETTER N] +char \x4F (1 3 5 7 ) # 4F â¡• O [LATIN CAPITAL LETTER O] +char \x50 (1234 7 ) # 50 â¡ P [LATIN CAPITAL LETTER P] +char \x51 (12345 7 ) # 51 â¡Ÿ Q [LATIN CAPITAL LETTER Q] +char \x52 (123 5 7 ) # 52 â¡— R [LATIN CAPITAL LETTER R] +char \x53 ( 234 7 ) # 53 â¡Ž S [LATIN CAPITAL LETTER S] +char \x54 ( 2345 7 ) # 54 â¡ž T [LATIN CAPITAL LETTER T] +char \x55 (1 3 67 ) # 55 â¡¥ U [LATIN CAPITAL LETTER U] +char \x56 (123 67 ) # 56 ⡧ V [LATIN CAPITAL LETTER V] +char \x57 (123 567 ) # 57 â¡· W [LATIN CAPITAL LETTER W] +char \x58 (1 34 67 ) # 58 â¡­ X [LATIN CAPITAL LETTER X] +char \x59 (1 34567 ) # 59 ⡽ Y [LATIN CAPITAL LETTER Y] +char \x5A (1 3 567 ) # 5A ⡵ Z [LATIN CAPITAL LETTER Z] +char \x5B ( 23 67 ) # 5B ⡦ [ [LEFT SQUARE BRACKET] +char \x5C ( 23 6 8) # 5C ⢦ \ [REVERSE SOLIDUS] +char \x5D ( 3 567 ) # 5D â¡´ ] [RIGHT SQUARE BRACKET] +char \x5E ( 45 7 ) # 5E ⡘ ^ [CIRCUMFLEX ACCENT] +char \x5F ( 3 67 ) # 5F ⡤ _ [LOW LINE] +char \x60 ( 4 7 ) # 60 ⡈ ` [GRAVE ACCENT] +char \x61 (1 ) # 61 â  a [LATIN SMALL LETTER A] +char \x62 (12 ) # 62 â ƒ b [LATIN SMALL LETTER B] +char \x63 (1 4 ) # 63 â ‰ c [LATIN SMALL LETTER C] +char \x64 (1 45 ) # 64 â ™ d [LATIN SMALL LETTER D] +char \x65 (1 5 ) # 65 â ‘ e [LATIN SMALL LETTER E] +char \x66 (12 4 ) # 66 â ‹ f [LATIN SMALL LETTER F] +char \x67 (12 45 ) # 67 â › g [LATIN SMALL LETTER G] +char \x68 (12 5 ) # 68 â “ h [LATIN SMALL LETTER H] +char \x69 ( 2 4 ) # 69 â Š i [LATIN SMALL LETTER I] +char \x6A ( 2 45 ) # 6A â š j [LATIN SMALL LETTER J] +char \x6B (1 3 ) # 6B â … k [LATIN SMALL LETTER K] +char \x6C (123 ) # 6C â ‡ l [LATIN SMALL LETTER L] +char \x6D (1 34 ) # 6D â  m [LATIN SMALL LETTER M] +char \x6E (1 345 ) # 6E â  n [LATIN SMALL LETTER N] +char \x6F (1 3 5 ) # 6F â • o [LATIN SMALL LETTER O] +char \x70 (1234 ) # 70 â  p [LATIN SMALL LETTER P] +char \x71 (12345 ) # 71 â Ÿ q [LATIN SMALL LETTER Q] +char \x72 (123 5 ) # 72 â — r [LATIN SMALL LETTER R] +char \x73 ( 234 ) # 73 â Ž s [LATIN SMALL LETTER S] +char \x74 ( 2345 ) # 74 â ž t [LATIN SMALL LETTER T] +char \x75 (1 3 6 ) # 75 â ¥ u [LATIN SMALL LETTER U] +char \x76 (123 6 ) # 76 â § v [LATIN SMALL LETTER V] +char \x77 (123 56 ) # 77 â · w [LATIN SMALL LETTER W] +char \x78 (1 34 6 ) # 78 â ­ x [LATIN SMALL LETTER X] +char \x79 (1 3456 ) # 79 â ½ y [LATIN SMALL LETTER Y] +char \x7A (1 3 56 ) # 7A â µ z [LATIN SMALL LETTER Z] +char \x7B ( 23 678) # 7B ⣦ { [LEFT CURLY BRACKET] +char \x7C ( 456 ) # 7C â ¸ | [VERTICAL LINE] +char \x7D ( 3 5678) # 7D ⣴ } [RIGHT CURLY BRACKET] +char \x7E ( 5 7 ) # 7E â¡ ~ [TILDE] +char \x7F ( 234 678) # 7F ⣮ [DELETE] +char \xA0 ( 78) # A0 ⣀   [NO-BREAK SPACE] +char \u0160 (1 567 ) # A9 ⡱ Å  [LATIN CAPITAL LETTER S WITH CARON] +char \u0164 (12 567 ) # AB ⡳ Ť [LATIN CAPITAL LETTER T WITH CARON] +char \u017D ( 234 67 ) # AE â¡® Ž [LATIN CAPITAL LETTER Z WITH CARON] +char \u0161 (1 56 ) # B9 â ± Å¡ [LATIN SMALL LETTER S WITH CARON] +char \u0165 (12 56 ) # BB â ³ Å¥ [LATIN SMALL LETTER T WITH CARON] +char \u017E ( 234 6 ) # BE â ® ž [LATIN SMALL LETTER Z WITH CARON] +char \xC1 (1 67 ) # C1 â¡¡ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC4 ( 345 78) # C4 ⣜ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \u010C (1 4 67 ) # C8 â¡© ÄŒ [LATIN CAPITAL LETTER C WITH CARON] +char \xC9 ( 345 7 ) # C9 â¡œ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \u011A (12 67 ) # CC â¡£ Äš [LATIN CAPITAL LETTER E WITH CARON] +char \xCD ( 34 7 ) # CD â¡Œ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \u010E (1 4567 ) # CF ⡹ ÄŽ [LATIN CAPITAL LETTER D WITH CARON] +char \u0147 (12 4 67 ) # D2 â¡« Ň [LATIN CAPITAL LETTER N WITH CARON] +char \xD3 ( 2 4 67 ) # D3 ⡪ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD6 ( 2 4 678) # D6 ⣪ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \u0158 ( 2 4567 ) # D8 ⡺ Ř [LATIN CAPITAL LETTER R WITH CARON] +char \u016E ( 234567 ) # D9 ⡾ Å® [LATIN CAPITAL LETTER U WITH RING ABOVE] +char \xDA ( 34 67 ) # DA ⡬ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDC (12 5678) # DC ⣳ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD (1234 67 ) # DD ⡯ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDF ( 234 6 8) # DF ⢮ ß [LATIN SMALL LETTER SHARP S] +char \xE1 (1 6 ) # E1 â ¡ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE4 ( 345 8) # E4 ⢜ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \u010D (1 4 6 ) # E8 â © Ä [LATIN SMALL LETTER C WITH CARON] +char \xE9 ( 345 ) # E9 â œ é [LATIN SMALL LETTER E WITH ACUTE] +char \u011B (12 6 ) # EC â £ Ä› [LATIN SMALL LETTER E WITH CARON] +char \xED ( 34 ) # ED â Œ í [LATIN SMALL LETTER I WITH ACUTE] +char \u010F (1 456 ) # EF â ¹ Ä [LATIN SMALL LETTER D WITH CARON] +char \u0148 (12 4 6 ) # F2 â « ň [LATIN SMALL LETTER N WITH CARON] +char \xF3 ( 2 4 6 ) # F3 â ª ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF6 ( 2 4 6 8) # F6 ⢪ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \u0159 ( 2 456 ) # F8 â º Å™ [LATIN SMALL LETTER R WITH CARON] +char \u016F ( 23456 ) # F9 â ¾ ů [LATIN SMALL LETTER U WITH RING ABOVE] +char \xFA ( 34 6 ) # FA â ¬ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFC (12 56 8) # FC ⢳ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD (1234 6 ) # FD â ¯ ý [LATIN SMALL LETTER Y WITH ACUTE] + +include common.tti diff --git a/Tables/cy.ttb b/Tables/cy.ttb new file mode 100644 index 0000000000000000000000000000000000000000..98556682fb82557e5a3dc09acaadf5c4671c47cf --- /dev/null +++ b/Tables/cy.ttb @@ -0,0 +1,98 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Welsh + +# Maintained by John J. Boyer, director@chpi.org, www.chpi.org +# +# This table is built and maintained by Leon Ungier +# with help and guidance from Mohammed R. Ramadan +# +# Converted from liblouis table by Samuel Thibault + +# generated by ttbtest: charset=iso-8859-14 +include letters-latin.tti + +char \x2E ( 2 ) # 2E â ‚ . [FULL STOP] +char \x30 ( 2 45 ) # 30 â š 0 [DIGIT ZERO] +char \x31 (1 ) # 31 â  1 [DIGIT ONE] +char \x32 (12 ) # 32 â ƒ 2 [DIGIT TWO] +char \x33 (1 4 ) # 33 â ‰ 3 [DIGIT THREE] +char \x34 (1 45 ) # 34 â ™ 4 [DIGIT FOUR] +char \x35 (1 5 ) # 35 â ‘ 5 [DIGIT FIVE] +char \x36 (12 4 ) # 36 â ‹ 6 [DIGIT SIX] +char \x37 (12 45 ) # 37 â › 7 [DIGIT SEVEN] +char \x38 (12 5 ) # 38 â “ 8 [DIGIT EIGHT] +char \x39 ( 2 4 ) # 39 â Š 9 [DIGIT NINE] +char \u1EF2 (1 3456 ) # AC â ½ Ỳ [LATIN CAPITAL LETTER Y WITH GRAVE] +char \u0178 (1 3456 ) # AF â ½ Ÿ [LATIN CAPITAL LETTER Y WITH DIAERESIS] +char \u1EF3 (1 3456 ) # BC â ½ ỳ [LATIN SMALL LETTER Y WITH GRAVE] +char \xC0 (1 ) # C0 â  Ã€ [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 (1 ) # C1 â  Ã [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 (1 ) # C2 â  Ã‚ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC4 (1 ) # C4 â  Ã„ [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC6 (1 ) # C6 â  Ã† [LATIN CAPITAL LETTER AE] +char \xC8 (1 5 ) # C8 â ‘ È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 (1 5 ) # C9 â ‘ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA (1 5 ) # CA â ‘ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB (1 5 ) # CB â ‘ Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC ( 2 4 ) # CC â Š ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD ( 2 4 ) # CD â Š à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE ( 2 4 ) # CE â Š ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF ( 2 4 ) # CF â Š à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \u0174 ( 2 456 ) # D0 â º Å´ [LATIN CAPITAL LETTER W WITH CIRCUMFLEX] +char \xD2 (1 3 5 ) # D2 â • Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 (1 3 5 ) # D3 â • Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 (1 3 5 ) # D4 â • Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD6 (1 3 5 ) # D6 â • Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD9 (1 3 6 ) # D9 â ¥ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA (1 3 6 ) # DA â ¥ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB (1 3 6 ) # DB â ¥ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC (1 3 6 ) # DC â ¥ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD (1 3456 ) # DD â ½ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \u0176 (1 3456 ) # DE â ½ Ŷ [LATIN CAPITAL LETTER Y WITH CIRCUMFLEX] +char \xDF ( 234 6 ) # DF â ® ß [LATIN SMALL LETTER SHARP S] +char \xE0 (1 ) # E0 â  Ã  [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 (1 ) # E1 â  Ã¡ [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 ) # E2 â  Ã¢ [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE4 (1 ) # E4 â  Ã¤ [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE6 (1 ) # E6 â  Ã¦ [LATIN SMALL LETTER AE] +char \xE8 (1 5 ) # E8 â ‘ è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (1 5 ) # E9 â ‘ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (1 5 ) # EA â ‘ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (1 5 ) # EB â ‘ ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC ( 2 4 ) # EC â Š ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED ( 2 4 ) # ED â Š í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE ( 2 4 ) # EE â Š î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF ( 2 4 ) # EF â Š ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \u0175 ( 2 456 ) # F0 â º ŵ [LATIN SMALL LETTER W WITH CIRCUMFLEX] +char \xF2 (1 3 5 ) # F2 â • ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 (1 3 5 ) # F3 â • ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 3 5 ) # F4 â • ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF6 (1 3 5 ) # F6 â • ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF9 (1 3 6 ) # F9 â ¥ ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA (1 3 6 ) # FA â ¥ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 3 6 ) # FB â ¥ û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (1 3 6 ) # FC â ¥ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD (1 3456 ) # FD â ½ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \u0177 (1 3456 ) # FE â ½ Å· [LATIN SMALL LETTER Y WITH CIRCUMFLEX] +char \xFF (1 3456 ) # FF â ½ ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] +char \u2010 ( 3 6 ) # â ¤ †[HYPHEN] +char \u2011 ( 234 78) # ⣎ ‑ [NON-BREAKING HYPHEN] + +include common.tti diff --git a/Tables/da-1252.ttb b/Tables/da-1252.ttb new file mode 100644 index 0000000000000000000000000000000000000000..df330293480bf6d15c902b736121a8e0bcfb0db3 --- /dev/null +++ b/Tables/da-1252.ttb @@ -0,0 +1,227 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Danish (Svend Thougaard, 2002-11-18) + +# This is the standard table defined by Svend Thougaard [2002-11-18]. It is +# primarily defined for use with the Windows-1252 character table. It is only +# in the BRLTTY package for reference as most of the control characters have +# been mapped to unusual braille patterns. The left brace ({) and percent sign +# (%) don't have logical representations. + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# the numbers 0-9 are represented by the letters j,a-i with dot 8 added +include numbers-dot8.tti + +# generated by ttbtest: charset=cp1252 +char \x00 ( 8) # 00 ⢀ [NULL] +char \x01 (1 78) # 01 ⣠[START OF HEADING] +char \x02 (12 78) # 02 ⣃ [START OF TEXT] +char \x03 (1 4 78) # 03 ⣉ [END OF TEXT] +char \x04 (1 45 78) # 04 ⣙ [END OF TRANSMISSION] +char \x05 ( 2 456 8) # 05 ⢺ [ENQUIRY] +char \x06 (12 4 78) # 06 ⣋ [ACKNOWLEDGE] +char \x07 (12 45 78) # 07 ⣛ [BELL] +char \x08 (12 5 78) # 08 ⣓ [BACKSPACE] +char \x09 ( 2 4 78) # 09 ⣊ [CHARACTER TABULATION] +char \x0A ( 678) # 0A ⣠ [LINE FEED (LF)] +char \x0B (1 3 6 8) # 0B ⢥ [LINE TABULATION] +char \x0C (123 78) # 0C ⣇ [FORM FEED (FF)] +char \x0D ( 2 5 7 ) # 0D â¡’ [CARRIAGE RETURN (CR)] +char \x0E (1 345 78) # 0E ⣠[SHIFT OUT] +char \x0F (123 5 8) # 0F ⢗ [SHIFT IN] +char \x10 (1234 78) # 10 ⣠[DATA LINK ESCAPE] +char \x11 (12345 78) # 11 ⣟ [DEVICE CONTROL ONE] +char \x12 (1 3 56 8) # 12 ⢵ [DEVICE CONTROL TWO] +char \x13 ( 45 78) # 13 ⣘ [DEVICE CONTROL THREE] +char \x14 ( 2 6 8) # 14 ⢢ [DEVICE CONTROL FOUR] +char \x15 (1 3 678) # 15 ⣥ [NEGATIVE ACKNOWLEDGE] +char \x16 ( 2 78) # 16 ⣂ [SYNCHRONOUS IDLE] +char \x17 ( 3 5 78) # 17 ⣔ [END OF TRANSMISSION BLOCK] +char \x18 ( 78) # 18 ⣀ [CANCEL] +char \x19 ( 6 8) # 19 ⢠ [END OF MEDIUM] +char \x1A (1 3 5678) # 1A ⣵ [SUBSTITUTE] +char \x1B ( 2 678) # 1B ⣢ [ESCAPE] +char \x1C ( 45678) # 1C ⣸ [INFORMATION SEPARATOR FOUR] +char \x1D (123 6 8) # 1D ⢧ [INFORMATION SEPARATOR THREE] +char \x1E (1234 678) # 1E ⣯ [INFORMATION SEPARATOR TWO] +char \x1F ( 23 5678) # 1F ⣶ [INFORMATION SEPARATOR ONE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 23 5 ) # 21 â – ! [EXCLAMATION MARK] +char \x22 ( 23 56 ) # 22 â ¶ " [QUOTATION MARK] +char \x23 ( 3456 8) # 23 ⢼ # [NUMBER SIGN] +char \x24 ( 2 5678) # 24 ⣲ $ [DOLLAR SIGN] +char \x25 ( 2 45 78) # 25 ⣚ % [PERCENT SIGN] +char \x26 (1234 6 8) # 26 ⢯ & [AMPERSAND] +char \x27 ( 4 ) # 27 â ˆ ' [APOSTROPHE] +char \x28 ( 23 6 8) # 28 ⢦ ( [LEFT PARENTHESIS] +char \x29 ( 3 56 8) # 29 ⢴ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 23 5 8) # 2B ⢖ + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 8) # 2D ⢤ - [HYPHEN-MINUS] +char \x2E ( 3 ) # 2E â „ . [FULL STOP] +char \x2F ( 34 8) # 2F ⢌ / [SOLIDUS] +# Hindu-Arabic numerals # 30-39 +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C ( 3 5 8) # 3C ⢔ < [LESS-THAN SIGN] +char \x3D ( 23 56 8) # 3D ⢶ = [EQUALS SIGN] +char \x3E ( 2 67 ) # 3E â¡¢ > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 ( 4 78) # 40 ⣈ @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B ( 23 678) # 5B ⣦ [ [LEFT SQUARE BRACKET] +char \x5C ( 34 7 ) # 5C â¡Œ \ [REVERSE SOLIDUS] +char \x5D ( 3 5678) # 5D ⣴ ] [RIGHT SQUARE BRACKET] +char \x5E (1234 8) # 5E ⢠^ [CIRCUMFLEX ACCENT] +char \x5F ( 3 678) # 5F ⣤ _ [LOW LINE] +char \x60 ( 5 ) # 60 â  ` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B (123 678) # 7B ⣧ { [LEFT CURLY BRACKET] +char \x7C ( 456 8) # 7C ⢸ | [VERTICAL LINE] +char \x7D ( 345678) # 7D ⣼ } [RIGHT CURLY BRACKET] +char \x7E ( 4 67 ) # 7E ⡨ ~ [TILDE] +char \x7F (12345678) # 7F ⣿ [DELETE] +char \u20AC (1 5 78) # 80 ⣑ € [EURO SIGN] +char \u201A ( 45 7 ) # 82 ⡘ ‚ [SINGLE LOW-9 QUOTATION MARK] +char \u0192 ( 5 8) # 83 ⢠ƒ [LATIN SMALL LETTER F WITH HOOK] +char \u201E ( 23 78) # 84 ⣆ „ [DOUBLE LOW-9 QUOTATION MARK] +char \u2026 ( 6 ) # 85 â   … [HORIZONTAL ELLIPSIS] +char \u2020 ( 23 5 7 ) # 86 â¡– † [DAGGER] +char \u2021 ( 23 5 78) # 87 ⣖ ‡ [DOUBLE DAGGER] +char \u02C6 ( 5678) # 88 ⣰ ˆ [MODIFIER LETTER CIRCUMFLEX ACCENT] +char \u2030 ( 2 45678) # 89 ⣺ ‰ [PER MILLE SIGN] +char \u0160 ( 234 78) # 8A ⣎ Å  [LATIN CAPITAL LETTER S WITH CARON] +char \u2039 ( 456 ) # 8B â ¸ ‹ [SINGLE LEFT-POINTING ANGLE QUOTATION MARK] +char \u0152 (1 3 5 78) # 8C ⣕ Å’ [LATIN CAPITAL LIGATURE OE] +char \u017D ( 34 67 ) # 8E ⡬ Ž [LATIN CAPITAL LETTER Z WITH CARON] +char \u2018 ( 4 7 ) # 91 ⡈ ‘ [LEFT SINGLE QUOTATION MARK] +char \u2019 ( 4 8) # 92 ⢈ ’ [RIGHT SINGLE QUOTATION MARK] +char \u201C ( 23 7 ) # 93 ⡆ “ [LEFT DOUBLE QUOTATION MARK] +char \u201D ( 56 8) # 94 ⢰ †[RIGHT DOUBLE QUOTATION MARK] +char \u2022 ( 3 7 ) # 95 â¡„ • [BULLET] +char \u2013 ( 3 6 ) # 96 â ¤ – [EN DASH] +char \u2014 ( 3 67 ) # 97 ⡤ — [EM DASH] +char \u02DC ( 4 6 ) # 98 â ¨ Ëœ [SMALL TILDE] +char \u2122 ( 2345 78) # 99 ⣞ â„¢ [TRADE MARK SIGN] +char \u0161 ( 234 8) # 9A ⢎ Å¡ [LATIN SMALL LETTER S WITH CARON] +char \u203A ( 4567 ) # 9B ⡸ › [SINGLE RIGHT-POINTING ANGLE QUOTATION MARK] +char \u0153 (1 3 5 8) # 9C ⢕ Å“ [LATIN SMALL LIGATURE OE] +char \u017E ( 34 6 ) # 9E â ¬ ž [LATIN SMALL LETTER Z WITH CARON] +char \u0178 ( 2345678) # 9F ⣾ Ÿ [LATIN CAPITAL LETTER Y WITH DIAERESIS] +char \xA0 ( 2 567 ) # A0 ⡲   [NO-BREAK SPACE] +char \xA1 ( 2 56 ) # A1 â ² ¡ [INVERTED EXCLAMATION MARK] +char \xA2 ( 2 5 78) # A2 ⣒ ¢ [CENT SIGN] +char \xA3 (123 8) # A3 ⢇ £ [POUND SIGN] +char \xA4 ( 23 67 ) # A4 ⡦ ¤ [CURRENCY SIGN] +char \xA5 ( 67 ) # A5 â¡  Â¥ [YEN SIGN] +char \xA6 ( 34 78) # A6 ⣌ ¦ [BROKEN BAR] +char \xA7 ( 5 78) # A7 ⣠§ [SECTION SIGN] +char \xA8 ( 56 ) # A8 â ° ¨ [DIAERESIS] +char \xA9 (1 34 678) # A9 ⣭ © [COPYRIGHT SIGN] +char \xAA ( 234 678) # AA ⣮ ª [FEMININE ORDINAL INDICATOR] +char \xAB ( 5 7 ) # AB ⡠« [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC ( 34567 ) # AC ⡼ ¬ [NOT SIGN] +char \xAD ( 3 78) # AD ⣄ ­ [SOFT HYPHEN] +char \xAE (123 5 78) # AE ⣗ ® [REGISTERED SIGN] +char \xAF ( 23 567 ) # AF ⡶ ¯ [MACRON] +char \xB0 ( 3 56 ) # B0 â ´ ° [DEGREE SIGN] +char \xB1 (12345 8) # B1 ⢟ ± [PLUS-MINUS SIGN] +char \xB2 ( 23 8) # B2 ⢆ ² [SUPERSCRIPT TWO] +char \xB3 ( 2 5 8) # B3 ⢒ ³ [SUPERSCRIPT THREE] +char \xB4 ( 4 6 8) # B4 ⢨ ´ [ACUTE ACCENT] +char \xB5 ( 23 6 ) # B5 â ¦ µ [MICRO SIGN] +char \xB6 (123456 8) # B6 ⢿ ¶ [PILCROW SIGN] +char \xB7 ( 3 8) # B7 ⢄ · [MIDDLE DOT] +char \xB8 ( 4 678) # B8 ⣨ ¸ [CEDILLA] +char \xB9 ( 2 8) # B9 ⢂ ¹ [SUPERSCRIPT ONE] +char \xBA ( 7 ) # BA â¡€ º [MASCULINE ORDINAL INDICATOR] +char \xBB ( 567 ) # BB â¡° » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBC (1 345 8) # BC ⢠¼ [VULGAR FRACTION ONE QUARTER] +char \xBD ( 45 8) # BD ⢘ ½ [VULGAR FRACTION ONE HALF] +char \xBE ( 3456 ) # BE â ¼ ¾ [VULGAR FRACTION THREE QUARTERS] +char \xBF ( 34 ) # BF â Œ ¿ [INVERTED QUESTION MARK] +char \xC0 (123 567 ) # C0 â¡· À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 (123 5678) # C1 ⣷ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 (1 678) # C2 ⣡  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 (1 4 678) # C3 ⣩ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 ( 345 78) # C4 ⣜ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 (1 67 ) # C5 â¡¡ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( 345 7 ) # C6 â¡œ Æ [LATIN CAPITAL LETTER AE] +char \xC7 (1234 67 ) # C7 ⡯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( 234 67 ) # C8 â¡® È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 (1234567 ) # C9 â¡¿ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA (12 67 ) # CA â¡£ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB (12 4 67 ) # CB â¡« Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC (1 5678) # CC ⣱ ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD (12 678) # CD ⣣ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE (1 4 67 ) # CE â¡© ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF (12 4567 ) # CF â¡» à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD0 (1 345678) # D0 ⣽ à [LATIN CAPITAL LETTER ETH] +char \xD1 (12 45678) # D1 ⣻ Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD2 (12 4 678) # D2 ⣫ Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 ( 34 678) # D3 ⣬ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 (1 4567 ) # D4 ⡹ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD5 (1 45678) # D5 ⣹ Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 ( 2 4 678) # D6 ⣪ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 (1 34 6 8) # D7 ⢭ × [MULTIPLICATION SIGN] +char \xD8 ( 2 4 67 ) # D8 ⡪ Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xD9 ( 234567 ) # D9 ⡾ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA (12 5678) # DA ⣳ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB (1 567 ) # DB ⡱ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC (12 567 ) # DC ⡳ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD (1 34 78) # DD ⣠à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDE (1 3 78) # DE ⣅ Þ [LATIN CAPITAL LETTER THORN] +char \xDF ( 234 6 8) # DF ⢮ ß [LATIN SMALL LETTER SHARP S] +char \xE0 (123 56 ) # E0 â · à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 (123 56 8) # E1 ⢷ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 6 8) # E2 ⢡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 (1 4 6 8) # E3 ⢩ ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 ( 345 8) # E4 ⢜ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 (1 6 ) # E5 â ¡ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 ( 345 ) # E6 â œ æ [LATIN SMALL LETTER AE] +char \xE7 (1234 6 ) # E7 â ¯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 ) # E8 â ® è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (123456 ) # E9 â ¿ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (12 6 ) # EA â £ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 ) # EB â « ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC (1 56 8) # EC ⢱ ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED (12 6 8) # ED ⢣ í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 6 ) # EE â © î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 ) # EF â » ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF0 (1 3456 8) # F0 ⢽ ð [LATIN SMALL LETTER ETH] +char \xF1 (12 456 8) # F1 ⢻ ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 (12 4 6 8) # F2 ⢫ ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 ( 34 6 8) # F3 ⢬ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 456 ) # F4 â ¹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 (1 456 8) # F5 ⢹ õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 2 4 6 8) # F6 ⢪ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 ( 2 56 8) # F7 ⢲ ÷ [DIVISION SIGN] +char \xF8 ( 2 4 6 ) # F8 â ª ø [LATIN SMALL LETTER O WITH STROKE] +char \xF9 ( 23456 ) # F9 â ¾ ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA (12 56 8) # FA ⢳ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 56 ) # FB â ± û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 ) # FC â ³ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD (1 34 8) # FD ⢠ý [LATIN SMALL LETTER Y WITH ACUTE] +char \xFE (1 3 8) # FE ⢅ þ [LATIN SMALL LETTER THORN] +char \xFF ( 23456 8) # FF ⢾ ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] + +include common.tti diff --git a/Tables/da-lt.ttb b/Tables/da-lt.ttb new file mode 100644 index 0000000000000000000000000000000000000000..7a7a4044b45129d3784cc101eccf32f2a8d087a7 --- /dev/null +++ b/Tables/da-lt.ttb @@ -0,0 +1,208 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Danish (LogText) + +# Danish LogText users are accustomed to the percent sign (%) and the +# exclamation point (!) being mapped to patterns which differ from the new 1252 +# standard. LogText users will be more comfortable with this table. + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# the standard representations for the Latin control characters +include control-latin.tti + +# the numbers 0-9 are represented by the letters j,a-i with dot 8 added +include numbers-dot8.tti + +# generated by ttbtest: charset=iso-8859-1 +char \x00 (12345678) # 00 ⣿ [NULL] +# Latin control characters # 01-1A +char \x1B ( 345 78) # 1B ⣜ [ESCAPE] +char \x1C ( 45678) # 1C ⣸ [INFORMATION SEPARATOR FOUR] +char \x1D ( 2 78) # 1D ⣂ [INFORMATION SEPARATOR THREE] +char \x1E (1234 678) # 1E ⣯ [INFORMATION SEPARATOR TWO] +char \x1F ( 23 5678) # 1F ⣶ [INFORMATION SEPARATOR ONE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 56 ) # 21 â ° ! [EXCLAMATION MARK] +char \x22 ( 23 56 ) # 22 â ¶ " [QUOTATION MARK] +char \x23 ( 3456 8) # 23 ⢼ # [NUMBER SIGN] +char \x24 (1 56 8) # 24 ⢱ $ [DOLLAR SIGN] +char \x25 ( 3 56 8) # 25 ⢴ % [PERCENT SIGN] +char \x26 (1234 6 8) # 26 ⢯ & [AMPERSAND] +char \x27 ( 6 ) # 27 â   ' [APOSTROPHE] +char \x28 (12 6 8) # 28 ⢣ ( [LEFT PARENTHESIS] +char \x29 ( 345 8) # 29 ⢜ ) [RIGHT PARENTHESIS] +char \x2A (1 34 6 8) # 2A ⢭ * [ASTERISK] +char \x2B ( 23 5 8) # 2B ⢖ + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 8) # 2D ⢤ - [HYPHEN-MINUS] +char \x2E ( 3 ) # 2E â „ . [FULL STOP] +char \x2F ( 2 5 8) # 2F ⢒ / [SOLIDUS] +# Hindu-Arabic numerals # 30-39 +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C (1 34 8) # 3C ⢠< [LESS-THAN SIGN] +char \x3D ( 23 56 8) # 3D ⢶ = [EQUALS SIGN] +char \x3E ( 234 8) # 3E ⢎ > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 ( 4 78) # 40 ⣈ @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B (123 6 8) # 5B ⢧ [ [LEFT SQUARE BRACKET] +char \x5C (1 6 8) # 5C ⢡ \ [REVERSE SOLIDUS] +char \x5D (1 456 8) # 5D ⢹ ] [RIGHT SQUARE BRACKET] +char \x5E ( 67 ) # 5E â¡  ^ [CIRCUMFLEX ACCENT] +char \x5F ( 78) # 5F ⣀ _ [LOW LINE] +char \x60 ( 23 567 ) # 60 ⡶ ` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B ( 2 4 6 8) # 7B ⢪ { [LEFT CURLY BRACKET] +char \x7C ( 456 8) # 7C ⢸ | [VERTICAL LINE] +char \x7D (1 3 5 8) # 7D ⢕ } [RIGHT CURLY BRACKET] +char \x7E ( 6 8) # 7E ⢠ ~ [TILDE] +char \x7F ( 8) # 7F ⢀ [DELETE] +char \x80 ( 4 ) # 80 â ˆ [] +char \x81 ( 45 ) # 81 â ˜ [] +char \x82 ( 45 7 ) # 82 ⡘ [BREAK PERMITTED HERE] +char \x83 ( 5 ) # 83 â  [NO BREAK HERE] +char \x84 ( 23 78) # 84 ⣆ [] +char \x85 ( 23 5 ) # 85 â – [NEXT LINE (NEL)] +char \x86 ( 23 5 7 ) # 86 â¡– [START OF SELECTED AREA] +char \x87 ( 23 5 78) # 87 ⣖ [END OF SELECTED AREA] +char \x88 ( 5678) # 88 ⣰ [CHARACTER TABULATION SET] +char \x89 ( 678) # 89 ⣠ [CHARACTER TABULATION WITH JUSTIFICATION] +char \x8A ( 23 6 8) # 8A ⢦ [LINE TABULATION SET] +char \x8B ( 456 ) # 8B â ¸ [PARTIAL LINE FORWARD] +char \x8C ( 34 7 ) # 8C â¡Œ [PARTIAL LINE BACKWARD] +char \x8D ( 3 567 ) # 8D â¡´ [REVERSE LINE FEED] +char \x8E ( 34 67 ) # 8E ⡬ [SINGLE SHIFT TWO] +char \x8F ( 2 7 ) # 8F â¡‚ [SINGLE SHIFT THREE] +char \x90 ( 3 5 7 ) # 90 â¡” [DEVICE CONTROL STRING] +char \x91 ( 4 7 ) # 91 ⡈ [PRIVATE USE ONE] +char \x92 ( 4 8) # 92 ⢈ [PRIVATE USE TWO] +char \x93 ( 23 7 ) # 93 ⡆ [SET TRANSMIT STATE] +char \x94 ( 56 8) # 94 ⢰ [CANCEL CHARACTER] +char \x95 ( 3 7 ) # 95 â¡„ [MESSAGE WAITING] +char \x96 ( 3 6 ) # 96 â ¤ [START OF GUARDED AREA] +char \x97 ( 3 67 ) # 97 ⡤ [END OF GUARDED AREA] +char \x98 ( 4 6 ) # 98 â ¨ [START OF STRING] +char \x99 ( 2 5 7 ) # 99 â¡’ [] +char \x9A ( 34 ) # 9A â Œ [SINGLE CHARACTER INTRODUCER] +char \x9B ( 4567 ) # 9B ⡸ [CONTROL SEQUENCE INTRODUCER] +char \x9C ( 4 67 ) # 9C ⡨ [STRING TERMINATOR] +char \x9D ( 2345 8) # 9D ⢞ [OPERATING SYSTEM COMMAND] +char \x9E ( 34 6 ) # 9E â ¬ [PRIVACY MESSAGE] +char \x9F ( 2345678) # 9F ⣾ [APPLICATION PROGRAM COMMAND] +char \xA0 ( 2 567 ) # A0 ⡲   [NO-BREAK SPACE] +char \xA1 ( 2 56 ) # A1 â ² ¡ [INVERTED EXCLAMATION MARK] +char \xA2 ( 2 5 78) # A2 ⣒ ¢ [CENT SIGN] +char \xA3 (123 8) # A3 ⢇ £ [POUND SIGN] +char \xA4 ( 23 67 ) # A4 ⡦ ¤ [CURRENCY SIGN] +char \xA5 ( 2 5678) # A5 ⣲ Â¥ [YEN SIGN] +char \xA6 ( 34 78) # A6 ⣌ ¦ [BROKEN BAR] +char \xA7 ( 5 78) # A7 ⣠§ [SECTION SIGN] +char \xA8 ( 23 678) # A8 ⣦ ¨ [DIAERESIS] +char \xA9 ( 345678) # A9 ⣼ © [COPYRIGHT SIGN] +char \xAA ( 234 678) # AA ⣮ ª [FEMININE ORDINAL INDICATOR] +char \xAB ( 5 7 ) # AB ⡠« [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC ( 34567 ) # AC ⡼ ¬ [NOT SIGN] +char \xAD ( 3 78) # AD ⣄ ­ [SOFT HYPHEN] +char \xAE ( 45 78) # AE ⣘ ® [REGISTERED SIGN] +char \xAF ( 2 67 ) # AF â¡¢ ¯ [MACRON] +char \xB0 ( 3 56 ) # B0 â ´ ° [DEGREE SIGN] +char \xB1 (12345 8) # B1 ⢟ ± [PLUS-MINUS SIGN] +char \xB2 ( 23 8) # B2 ⢆ ² [SUPERSCRIPT TWO] +char \xB3 (1234 8) # B3 ⢠³ [SUPERSCRIPT THREE] +char \xB4 ( 4 6 8) # B4 ⢨ ´ [ACUTE ACCENT] +char \xB5 ( 23 6 ) # B5 â ¦ µ [MICRO SIGN] +char \xB6 (123456 8) # B6 ⢿ ¶ [PILCROW SIGN] +char \xB7 ( 3 8) # B7 ⢄ · [MIDDLE DOT] +char \xB8 ( 4 678) # B8 ⣨ ¸ [CEDILLA] +char \xB9 ( 2 8) # B9 ⢂ ¹ [SUPERSCRIPT ONE] +char \xBA ( 7 ) # BA â¡€ º [MASCULINE ORDINAL INDICATOR] +char \xBB ( 567 ) # BB â¡° » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBC (1 345 8) # BC ⢠¼ [VULGAR FRACTION ONE QUARTER] +char \xBD ( 45 8) # BD ⢘ ½ [VULGAR FRACTION ONE HALF] +char \xBE ( 3456 ) # BE â ¼ ¾ [VULGAR FRACTION THREE QUARTERS] +char \xBF ( 34 8) # BF ⢌ ¿ [INVERTED QUESTION MARK] +char \xC0 (123 567 ) # C0 â¡· À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 (123 5678) # C1 ⣷ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 (1 678) # C2 ⣡  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 (1 4 678) # C3 ⣩ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 ( 3 5 8) # C4 ⢔ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 (1 67 ) # C5 â¡¡ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( 345 7 ) # C6 â¡œ Æ [LATIN CAPITAL LETTER AE] +char \xC7 (1234 67 ) # C7 ⡯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( 234 67 ) # C8 â¡® È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 (1234567 ) # C9 â¡¿ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA (12 67 ) # CA â¡£ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB (12 4 67 ) # CB â¡« Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC (1 5678) # CC ⣱ ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD (12 678) # CD ⣣ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE (1 4 67 ) # CE â¡© ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF (12 4567 ) # CF â¡» à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD0 ( 3 5678) # D0 ⣴ à [LATIN CAPITAL LETTER ETH] +char \xD1 (12 45678) # D1 ⣻ Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD2 (12 4 678) # D2 ⣫ Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 ( 34 678) # D3 ⣬ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 (1 4567 ) # D4 ⡹ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD5 (1 45678) # D5 ⣹ Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 ( 2 4 678) # D6 ⣪ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 (1 3 56 8) # D7 ⢵ × [MULTIPLICATION SIGN] +char \xD8 ( 2 4 67 ) # D8 ⡪ Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xD9 ( 234567 ) # D9 ⡾ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA (12 5678) # DA ⣳ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB (1 567 ) # DB ⡱ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC (12 567 ) # DC ⡳ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD ( 3 5 78) # DD ⣔ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDE ( 2 678) # DE ⣢ Þ [LATIN CAPITAL LETTER THORN] +char \xDF ( 234 6 8) # DF ⢮ ß [LATIN SMALL LETTER SHARP S] +char \xE0 (123 56 ) # E0 â · à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 (123 56 8) # E1 ⢷ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 ( 2 6 8) # E2 ⢢ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 (1 4 6 8) # E3 ⢩ ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 ( 5 8) # E4 ⢠ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 (1 6 ) # E5 â ¡ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 ( 345 ) # E6 â œ æ [LATIN SMALL LETTER AE] +char \xE7 (1234 6 ) # E7 â ¯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 ) # E8 â ® è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (123456 ) # E9 â ¿ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (12 6 ) # EA â £ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 ) # EB â « ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC ( 3 678) # EC ⣤ ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED (1 3 6 8) # ED ⢥ í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 6 ) # EE â © î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 ) # EF â » ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF0 (1 3456 8) # F0 ⢽ ð [LATIN SMALL LETTER ETH] +char \xF1 (12 456 8) # F1 ⢻ ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 (12 4 6 8) # F2 ⢫ ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 ( 34 6 8) # F3 ⢬ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 456 ) # F4 â ¹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 (123 5 8) # F5 ⢗ õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 3 5 ) # F6 â ” ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 ( 2 56 8) # F7 ⢲ ÷ [DIVISION SIGN] +char \xF8 ( 2 4 6 ) # F8 â ª ø [LATIN SMALL LETTER O WITH STROKE] +char \xF9 ( 23456 ) # F9 â ¾ ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA (12 56 8) # FA ⢳ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 56 ) # FB â ± û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 ) # FC â ³ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD ( 2 456 8) # FD ⢺ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \xFE (1 3 8) # FE ⢅ þ [LATIN SMALL LETTER THORN] +char \xFF ( 23456 8) # FF ⢾ ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] + +include common.tti diff --git a/Tables/da.ttb b/Tables/da.ttb new file mode 100644 index 0000000000000000000000000000000000000000..94d7d8df065bcbf211bffde6ae96be70d04b24dc --- /dev/null +++ b/Tables/da.ttb @@ -0,0 +1,208 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Danish + +# This is the table which comes closest to the Danish standard 1252 table. All +# control characters are mapped as their corresponding capital letters with +# dot-8 added. Most Danish braille users should use this table. + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# the standard representations for the Latin control characters +include control-latin.tti + +# the numbers 0-9 are represented by the letters j,a-i with dot 8 added +include numbers-dot8.tti + +# generated by ttbtest: charset=iso-8859-1 +char \x00 (12345678) # 00 ⣿ [NULL] +# Latin control characters # 01-1A +char \x1B ( 2 678) # 1B ⣢ [ESCAPE] +char \x1C ( 45678) # 1C ⣸ [INFORMATION SEPARATOR FOUR] +char \x1D (123 6 8) # 1D ⢧ [INFORMATION SEPARATOR THREE] +char \x1E (1234 678) # 1E ⣯ [INFORMATION SEPARATOR TWO] +char \x1F ( 23 5678) # 1F ⣶ [INFORMATION SEPARATOR ONE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 23 5 ) # 21 â – ! [EXCLAMATION MARK] +char \x22 ( 23 56 ) # 22 â ¶ " [QUOTATION MARK] +char \x23 ( 3456 8) # 23 ⢼ # [NUMBER SIGN] +char \x24 ( 2 5678) # 24 ⣲ $ [DOLLAR SIGN] +char \x25 ( 678) # 25 ⣠ % [PERCENT SIGN] +char \x26 (1234 6 8) # 26 ⢯ & [AMPERSAND] +char \x27 ( 4 ) # 27 â ˆ ' [APOSTROPHE] +char \x28 ( 23 6 8) # 28 ⢦ ( [LEFT PARENTHESIS] +char \x29 ( 3 56 8) # 29 ⢴ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 23 5 8) # 2B ⢖ + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 8) # 2D ⢤ - [HYPHEN-MINUS] +char \x2E ( 3 ) # 2E â „ . [FULL STOP] +char \x2F ( 34 ) # 2F â Œ / [SOLIDUS] +# Hindu-Arabic numerals # 30-39 +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C ( 3 5 8) # 3C ⢔ < [LESS-THAN SIGN] +char \x3D ( 23 56 8) # 3D ⢶ = [EQUALS SIGN] +char \x3E ( 2 67 ) # 3E â¡¢ > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 ( 4 78) # 40 ⣈ @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B ( 23 678) # 5B ⣦ [ [LEFT SQUARE BRACKET] +char \x5C ( 34 7 ) # 5C â¡Œ \ [REVERSE SOLIDUS] +char \x5D ( 3 5678) # 5D ⣴ ] [RIGHT SQUARE BRACKET] +char \x5E (1234 8) # 5E ⢠^ [CIRCUMFLEX ACCENT] +char \x5F ( 3 678) # 5F ⣤ _ [LOW LINE] +char \x60 ( 5 8) # 60 ⢠` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B ( 2 78) # 7B ⣂ { [LEFT CURLY BRACKET] +char \x7C ( 456 8) # 7C ⢸ | [VERTICAL LINE] +char \x7D ( 345678) # 7D ⣼ } [RIGHT CURLY BRACKET] +char \x7E ( 4 67 ) # 7E ⡨ ~ [TILDE] +char \x7F ( 8) # 7F ⢀ [DELETE] +char \x80 ( 2 456 8) # 80 ⢺ [] +char \x81 ( 45 ) # 81 â ˜ [] +char \x82 ( 45 7 ) # 82 ⡘ [BREAK PERMITTED HERE] +char \x83 ( 5 ) # 83 â  [NO BREAK HERE] +char \x84 ( 23 78) # 84 ⣆ [] +char \x85 ( 6 ) # 85 â   [NEXT LINE (NEL)] +char \x86 ( 23 5 7 ) # 86 â¡– [START OF SELECTED AREA] +char \x87 ( 23 5 78) # 87 ⣖ [END OF SELECTED AREA] +char \x88 ( 5678) # 88 ⣰ [CHARACTER TABULATION SET] +char \x89 ( 3 5 78) # 89 ⣔ [CHARACTER TABULATION WITH JUSTIFICATION] +char \x8A ( 45 78) # 8A ⣘ [LINE TABULATION SET] +char \x8B ( 456 ) # 8B â ¸ [PARTIAL LINE FORWARD] +char \x8C (123 5 8) # 8C ⢗ [PARTIAL LINE BACKWARD] +char \x8D ( 3 567 ) # 8D â¡´ [REVERSE LINE FEED] +char \x8E ( 34 67 ) # 8E ⡬ [SINGLE SHIFT TWO] +char \x8F ( 2 7 ) # 8F â¡‚ [SINGLE SHIFT THREE] +char \x90 ( 3 5 7 ) # 90 â¡” [DEVICE CONTROL STRING] +char \x91 ( 4 7 ) # 91 ⡈ [PRIVATE USE ONE] +char \x92 ( 4 8) # 92 ⢈ [PRIVATE USE TWO] +char \x93 ( 23 7 ) # 93 ⡆ [SET TRANSMIT STATE] +char \x94 ( 56 8) # 94 ⢰ [CANCEL CHARACTER] +char \x95 ( 3 7 ) # 95 â¡„ [MESSAGE WAITING] +char \x96 ( 3 6 ) # 96 â ¤ [START OF GUARDED AREA] +char \x97 ( 3 67 ) # 97 ⡤ [END OF GUARDED AREA] +char \x98 ( 4 6 ) # 98 â ¨ [START OF STRING] +char \x99 ( 2 6 8) # 99 ⢢ [] +char \x9A ( 234 8) # 9A ⢎ [SINGLE CHARACTER INTRODUCER] +char \x9B ( 4567 ) # 9B ⡸ [CONTROL SEQUENCE INTRODUCER] +char \x9C (1 3 5 8) # 9C ⢕ [STRING TERMINATOR] +char \x9D ( 2345 8) # 9D ⢞ [OPERATING SYSTEM COMMAND] +char \x9E ( 34 6 ) # 9E â ¬ [PRIVACY MESSAGE] +char \x9F ( 2345678) # 9F ⣾ [APPLICATION PROGRAM COMMAND] +char \xA0 ( 2 567 ) # A0 ⡲   [NO-BREAK SPACE] +char \xA1 ( 2 56 ) # A1 â ² ¡ [INVERTED EXCLAMATION MARK] +char \xA2 ( 2 5 78) # A2 ⣒ ¢ [CENT SIGN] +char \xA3 (123 8) # A3 ⢇ £ [POUND SIGN] +char \xA4 ( 23 67 ) # A4 ⡦ ¤ [CURRENCY SIGN] +char \xA5 ( 67 ) # A5 â¡  Â¥ [YEN SIGN] +char \xA6 ( 34 78) # A6 ⣌ ¦ [BROKEN BAR] +char \xA7 ( 5 78) # A7 ⣠§ [SECTION SIGN] +char \xA8 ( 56 ) # A8 â ° ¨ [DIAERESIS] +char \xA9 ( 78) # A9 ⣀ © [COPYRIGHT SIGN] +char \xAA ( 234 678) # AA ⣮ ª [FEMININE ORDINAL INDICATOR] +char \xAB ( 5 7 ) # AB ⡠« [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC ( 34567 ) # AC ⡼ ¬ [NOT SIGN] +char \xAD ( 3 78) # AD ⣄ ­ [SOFT HYPHEN] +char \xAE (1 3 56 8) # AE ⢵ ® [REGISTERED SIGN] +char \xAF ( 23 567 ) # AF ⡶ ¯ [MACRON] +char \xB0 ( 3 56 ) # B0 â ´ ° [DEGREE SIGN] +char \xB1 (12345 8) # B1 ⢟ ± [PLUS-MINUS SIGN] +char \xB2 ( 23 8) # B2 ⢆ ² [SUPERSCRIPT TWO] +char \xB3 ( 2 5 8) # B3 ⢒ ³ [SUPERSCRIPT THREE] +char \xB4 ( 4 6 8) # B4 ⢨ ´ [ACUTE ACCENT] +char \xB5 ( 23 6 ) # B5 â ¦ µ [MICRO SIGN] +char \xB6 (123456 8) # B6 ⢿ ¶ [PILCROW SIGN] +char \xB7 ( 3 8) # B7 ⢄ · [MIDDLE DOT] +char \xB8 ( 4 678) # B8 ⣨ ¸ [CEDILLA] +char \xB9 ( 2 8) # B9 ⢂ ¹ [SUPERSCRIPT ONE] +char \xBA ( 7 ) # BA â¡€ º [MASCULINE ORDINAL INDICATOR] +char \xBB ( 567 ) # BB â¡° » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBC (1 345 8) # BC ⢠¼ [VULGAR FRACTION ONE QUARTER] +char \xBD ( 45 8) # BD ⢘ ½ [VULGAR FRACTION ONE HALF] +char \xBE ( 3456 ) # BE â ¼ ¾ [VULGAR FRACTION THREE QUARTERS] +char \xBF ( 34 8) # BF ⢌ ¿ [INVERTED QUESTION MARK] +char \xC0 (123 567 ) # C0 â¡· À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 (123 5678) # C1 ⣷ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 (1 678) # C2 ⣡  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 (1 4 678) # C3 ⣩ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 ( 345 78) # C4 ⣜ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 (1 67 ) # C5 â¡¡ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( 345 7 ) # C6 â¡œ Æ [LATIN CAPITAL LETTER AE] +char \xC7 (1234 67 ) # C7 ⡯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( 234 67 ) # C8 â¡® È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 (1234567 ) # C9 â¡¿ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA (12 67 ) # CA â¡£ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB (12 4 67 ) # CB â¡« Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC (1 5678) # CC ⣱ ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD (12 678) # CD ⣣ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE (1 4 67 ) # CE â¡© ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF (12 4567 ) # CF â¡» à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD0 ( 6 8) # D0 ⢠ à [LATIN CAPITAL LETTER ETH] +char \xD1 (12 45678) # D1 ⣻ Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD2 (12 4 678) # D2 ⣫ Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 ( 34 678) # D3 ⣬ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 (1 4567 ) # D4 ⡹ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD5 (1 45678) # D5 ⣹ Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 ( 2 4 678) # D6 ⣪ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 (1 34 6 8) # D7 ⢭ × [MULTIPLICATION SIGN] +char \xD8 ( 2 4 67 ) # D8 ⡪ Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xD9 ( 234567 ) # D9 ⡾ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA (12 5678) # DA ⣳ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB (1 567 ) # DB ⡱ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC (12 567 ) # DC ⡳ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD ( 2 5 7 ) # DD â¡’ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDE (1 3 6 8) # DE ⢥ Þ [LATIN CAPITAL LETTER THORN] +char \xDF ( 234 6 8) # DF ⢮ ß [LATIN SMALL LETTER SHARP S] +char \xE0 (123 56 ) # E0 â · à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 (123 56 8) # E1 ⢷ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 6 8) # E2 ⢡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 (1 4 6 8) # E3 ⢩ ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 ( 345 8) # E4 ⢜ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 (1 6 ) # E5 â ¡ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 ( 345 ) # E6 â œ æ [LATIN SMALL LETTER AE] +char \xE7 (1234 6 ) # E7 â ¯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 ) # E8 â ® è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (123456 ) # E9 â ¿ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (12 6 ) # EA â £ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 ) # EB â « ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC (1 56 8) # EC ⢱ ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED (12 6 8) # ED ⢣ í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 6 ) # EE â © î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 ) # EF â » ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF0 (1 3456 8) # F0 ⢽ ð [LATIN SMALL LETTER ETH] +char \xF1 (12 456 8) # F1 ⢻ ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 (12 4 6 8) # F2 ⢫ ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 ( 34 6 8) # F3 ⢬ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 456 ) # F4 â ¹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 (1 456 8) # F5 ⢹ õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 2 4 6 8) # F6 ⢪ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 ( 2 56 8) # F7 ⢲ ÷ [DIVISION SIGN] +char \xF8 ( 2 4 6 ) # F8 â ª ø [LATIN SMALL LETTER O WITH STROKE] +char \xF9 ( 23456 ) # F9 â ¾ ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA (12 56 8) # FA ⢳ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 56 ) # FB â ± û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 ) # FC â ³ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD (1 34 8) # FD ⢠ý [LATIN SMALL LETTER Y WITH ACUTE] +char \xFE (1 3 8) # FE ⢅ þ [LATIN SMALL LETTER THORN] +char \xFF ( 23456 8) # FF ⢾ ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] + +include common.tti diff --git a/Tables/de-basis.ctb b/Tables/de-basis.ctb new file mode 100644 index 0000000000000000000000000000000000000000..69f85c3365ead37a64a803a3bf92c7283f646e31 --- /dev/null +++ b/Tables/de-basis.ctb @@ -0,0 +1,260 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - German (uncontracted) +# Created by Mario Lang . + +numsign 3456 number sign, just one operand +letsign 6 +capsign 46 # FIXME: only allowed at begword, midendword capsign is 45 +begcaps 45 + +# the decimal digits +always 1 1 +always 2 12 +always 3 14 +always 4 145 +always 5 15 +always 6 124 +always 7 1245 +always 8 125 +always 9 24 +always 0 245 + +include letters-latin.cti +always ä 345 +always Ä 345 +always ö 246 +always Ö 246 +always ß 6-2346 +always ü 1256 +always Ãœ 1256 + +# accented letters +always À 4-1 [C0] upper a grave +always à 4-1 [C1] upper a acute +always  4-1 [C2] upper a circumflex +always à 4-1 [C3] upper a tilde +always Ç 4-14 [C7] upper c cedilla +always È 4-15 [C8] upper e grave +always É 4-15 [C9] upper e acute +always Ê 4-15 [CA] upper e circumflex +always Ë 4-15 [CB] upper e dieresis +always ÃŒ 4-24 [CC] upper i grave +always à 4-24 [CD] upper i acute +always ÃŽ 4-24 [CE] upper i circumflex +always à 4-24 [CF] upper i dieresis +always à 4-15 [D0] upper eth +always Ñ 4-1345 [D1] upper n tilde +always Ã’ 4-135 [D2] upper o grave +always Ó 4-135 [D3] upper o acute +always Ô 4-135 [D4] upper o circumflex +always Õ 4-135 [D5] upper o tilde +always Ø 4-135 [D8] upper o slash +always Ù 4-136 [D9] upper u grave +always Ú 4-136 [DA] upper u acute +always Û 4-136 [DB] upper u circumflex +always à 4-13456 [DD] upper y acute +always Þ 4-2345 [DE] upper t horn +always à 4-1 [E0] lower a grave +always á 4-1 [E1] lower a acute +always â 4-1 [E2] lower a circumflex +always ã 4-1 [E3] lower a tilde +always Ã¥ 4-1 [E5] lower a ring +always æ 1-15 [E6] lower ae +always ç 4-14 [E7] lower c cedilla +always è 4-15 [E8] lower e grave +always é 4-15 [E9] lower e acute +always ê 4-15 [EA] lower e circumflex +always ë 4-15 [EB] lower e dieresis +always ì 4-24 [EC] lower i grave +always í 4-24 [ED] lower i acute +always î 4-24 [EE] lower i circumflex +always ï 4-24 [EF] lower i dieresis +always ð 4-15 [F0] lower eth +always ñ 4-1345 [F1] lower n tilde +always ò 4-135 [F2] lower o grave +always ó 4-135 [F3] lower o acute +always ô 4-135 [F4] lower o circumflex +always õ 4-135 [F5] lower o tilde +always ø 4-135 [F8] lower o slash +always ù 4-136 [F9] lower u grave +always ú 4-136 [FA] lower u acute +always û 4-136 [FB] lower u circumflex +always ý 4-13456 [FD] lower y acute +always þ 4-2345 [FE] lower t horn +always ÿ 4-13456 [FF] lower y dieresis + +# common abbreviations +word GmbH 46-1245-134-12-45-125 + +midnum ^ 4-346-3456 +always \u2070 4-346-3456-245 superscript 0 +always \u00B9 4-346-3456-1 superscript 1 +always \u00B2 4-346-3456-12 superscript 2 +always \u00B3 4-346-3456-14 superscript 3 +always \u2074 4-346-3456-145 superscript 4 +always \u2075 4-346-3456-15 superscript 5 +always \u2076 4-346-3456-124 superscript 6 +always \u2077 4-346-3456-1245 superscript 7 +always \u2078 4-346-3456-125 superscript 8 +always \u2079 4-346-3456-24 superscript 9 + +always ° 4-356 Grad +before space endnum ' 4-35 Winkelminute +before space endnum \u2032 4-35 Winkelminute +before space endnum '' 4-35-35 +before space endnum \u2033 4-35-35 + +prepunc " 236 +postpunc " 356 +begword « 236 +endword » 356 +always " 6-4 + +always ' 6-6 + +prepunc `` 236 +always ` 4 + +always ^ 456-126 + +always ~ 4-156 +repeatable ~~~ 4-156-4-156-4-156 + +midnum , 2 +always , 2 + +always ; 23 + +midnum : 25 +always : 25 +repeatable ::: 25-25-25 + +midnum . 3 +always . 3 +always ... 3-3-3 +always .\s.\s. 3-3-3 . . . + +endnum ! 12346 (factorial) +always ! 235 + +endword ? 26 +always ? 6-26 +always \uFFFD 6-26 + +always ( 2356 +always ) 2356 + +always [ 6-2356 +always ] 6-2356 + +always { 56-2356 +always } 56-2356 + +always # 3456 + +midnum * 35 +always * 6-35 +repeatable *** 6-35-35-35 + +midnum / 256 +always / 5-2 + +always % 3456-245-356 +always \u2030 3456-245-356-356 promille +always & 5-136 + +always @ 4-345 + +always \\ 347 + +always | 6-34 + +repeatable \s 0 +repeatable \t 0 +repeatable \xa0 0 no break space + +repeatable --- 36-36-36 + +always _ 4567 +repeatable ___ 4567-4567 + +repeatable === 6-2356-2356-2356 + +# the hyphen +midendword - 36 +always - 6-36 +#repeatable ­­­ 6-36-36-36 + +# mathematical symbols +always < 5-13 +always = 4-2356 +always > 46-2 +midnum + 235 +always + 6-235 +midnum - 36 +always × 4-236 Mal(-Kreuz) +midnum × 236 Mal(-Kreuz) +midnum ÷ 46-34 division sign +begnum $ 256 +always $ 256-3456 +always ¼ 3456-1-1256-145 +always ½ 3456-1-1256-12 +always ¾ 3456-1-1256-14 + +# other special characters +always © 2356-6-14-2356 copyright +always ¶ 4-1234-345 paragraph +always § 4-234-3 section +always ¢ 4-14 cents +always £ 4-123 pounds +always Â¥ 4-13456 yen +always µ 46-134 mu + +# special character sequences +literal :// URLs +literal www. + +literal .com +literal .edu +literal .gov +literal .mil +literal .net +literal .org +include countries.cti + +literal .doc +literal .htm +literal .html +literal .tex +literal .txt + +literal .gif +literal .jpg +literal .png +literal .wav + +literal .tar +literal .zip + +# When an upper-case letter occurs inside a contraction, following a lower-case +# letter, the contraction should not be used. Example McCan + +# when a decimal begins with a period, it should be translated with a +# number sign followed by a decimal point, followed by the number. diff --git a/Tables/de-chess.tti b/Tables/de-chess.tti new file mode 100644 index 0000000000000000000000000000000000000000..3d723a3e927840a5d09071c4c1d3b326e02e0b2d --- /dev/null +++ b/Tables/de-chess.tti @@ -0,0 +1,35 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# 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 + +char \u2654 (1 3 7 ) # â¡… â™” [WHITE CHESS KING] +char \u2655 (1 45 7 ) # â¡™ ♕ [WHITE CHESS QUEEN] +char \u2656 ( 2345 7 ) # â¡ž â™– [WHITE CHESS ROOK] +char \u2657 (123 7 ) # ⡇ â™— [WHITE CHESS BISHOP] +char \u2658 ( 234 7 ) # â¡Ž ♘ [WHITE CHESS KNIGHT] +char \u2659 (12 7 ) # ⡃ â™™ [WHITE CHESS PAWN] +char \u265A (1 3 ) # â … ♚ [BLACK CHESS KING] +char \u265B (1 45 ) # â ™ â™› [BLACK CHESS QUEEN] +char \u265C ( 2345 ) # â ž ♜ [BLACK CHESS ROOK] +char \u265D (123 ) # â ‡ â™ [BLACK CHESS BISHOP] +char \u265E ( 234 ) # â Ž ♞ [BLACK CHESS KNIGHT] +char \u265F (12 ) # â ƒ ♟ [BLACK CHESS PAWN] diff --git a/Tables/de-kurzschrift.ctb b/Tables/de-kurzschrift.ctb new file mode 100644 index 0000000000000000000000000000000000000000..9c272fdda85e7164cace782dc680a851109d29a6 --- /dev/null +++ b/Tables/de-kurzschrift.ctb @@ -0,0 +1,1071 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - German (contracted - 1998 standard) +# Created by Mario Lang . + +include de-vollschrift.ctb + +# Ausnahmen für Vokalgruppen aus de-vollschrift.ctb +always barrier 12-356-1235-24-12456 shouldn't use the ie-contraction +always bankier 12-235-13-24-12456 shouldn't use the ie-contraction +midendword iell 24-15-12345 shouldn't use the ie-contraction +always indien 35-145-24-14 shouldn't use the ie-contraction +always propriet 12345-1234-1235-24-15-2345 proprietär shouldn't use the ie-contraction + +class e e +class g g +class r r +class st st +class konsonant bcdfghjklmnpqrstvwxyz + +# Due to their low usage frequency in typical german text the letters +# c, q, x and y are reused for the en-, ll-, ex/mm/nis- and el-contractions. +# Therefore they need a proceding letsign to disambiguate them. +always c 6-14 +always C 6-14 +always q 6-12345 +always Q 6-12345 +always x 6-1346 +always X 6-1346 +always y 6-13456 +always Y 6-13456 + +# Lautgruppenkürzungen +midendword ach 56 +begmidword al 25 +begmidword an 235 +begmidword ar 356 +begmidword be 23 +midendword ck 46 +midword eh 2356 +always ein 1246 +always el 13456 +always em 12356 +always en 14 +always er 12456 +always es 123456 +always ge 12346 +midendword ich 3456 +midendword ig 45 +always in 35 +midendword lich 456 +midendword ll 12345 +midendword mm 1346 +begmidword or 26 + +after konsonant midword ss = +after konsonant midendword ssatz 234-234-1356 +after konsonant midendword ssätz 234-5-234-1356 +after konsonant midendword ssaetz 234-5-234-1356 +after konsonant midword ssch 234-156 +always sschicht 234-156-3456-2345 +always sschlag 234-156-1245 +always sschläg 234-5-156-1245 +always sschlaeg 234-5-156-1245 +always sschließ 234-156-2346 +always sschmuck 234-156-134-136-46 +always sschnur 234-156-1345-136-1235 shouldn't use the nur-contraction +always sschool 234-234-1456-135-135-123 foreign word, sch-contraction not allowed +always sschreib 234-156-12 +always sschrieb 234-2-156 +always sschrift 234-156-2345 +always sschwierig 234-156-45 +always sselbst 234-234-23456 +always sselbständ 234-234-13456-12-5-23456 shouldn't use the selbst-contraction +always sselbstaend 234-234-13456-12-5-23456 shouldn't use the selbst-contraction +after konsonant always ssetz 234-2-15 +after konsonant midendword ssesam 234-234-123456-1-134 shouldn't use the sam-contraction +after konsonant always ssitz 234-2-24 +always ssolch 234-234-1456 +after konsonant midendword ssoll 234-2-234 +always ssondern 234-234-1345 +always ssozial 234-234-123 +always sspiel 234-2-346 +always ssprach 234-234-1234 +always sspräch 234-5-234-1234 +always sspraech 234-5-234-1234 +always ssprech 234-2-2346 +after konsonant midendword sst 234-23456 +always sstaat 234-23456-2345 +after konsonant midendword sstand 234-2-23456 +after konsonant midendword sständ 234-5-23456 +after konsonant midendword sstaend 234-5-23456 +after konsonant midendword sstell 234-2-13456 +always ssteiger 234-23456-146-1245-12456 +before e always sstund 234-23456-256-145 shouldn't use the und-contraction +midendword ss 2346 + +midendword te 236 +always un 256 + +midendword tei 2345-146 + +always all 1-12345 +always ell 15-12345 +always emm 15-1346 +always esch 15-156 +always ess 15-2346 +always est 15-23456 + +endword tel 2345-13456 +endword tels 2345-13456-234 +endword ten 2345-14 +endword tenem 2345-14-12356 +endword tenen 2345-14-14 +endword tener 2345-14-12456 +endword tenes 2345-14-123456 +endword tens 2345-14-234 +endword ter 2345-12456 +endword tern 2345-12456-1345 +endword tes 2345-123456 + +endword bel 12-13456 shouldn't use the be-contraction +endword beln 12-13456-1345 shouldn't use the be-contraction +endword belns 12-13456-1345-234 shouldn't use the be-contraction +endword bels 12-13456-234 shouldn't use the be-contraction +midword belläng 12-13456-5-123-1245 kabellänge shouldn't use the ll-contraction +midword bellaeng 12-13456-5-123-1245 +midendword belung 12-13456-136 +before st midendword belungs 12-13456-136-234 +always belveder 12-13456-1236-15-145-12456 shouldn't use the be-contraction +always wirbel 2456-24-1235-12-13456 shouldn't use the be-contraction +endword ben 12-14 shouldn't use the be-contraction +endword bend 12-14-145 shouldn't use the be-contraction +endword bende 12-14-145-15 shouldn't use the be-contraction +endword bendem 12-14-145-12356 shouldn't use the be-contraction +endword benden 12-14-145-14 shouldn't use the be-contraction +endword bender 12-14-145-12456 shouldn't use the be-contraction +endword bendes 12-14-145-123456 shouldn't use the be-contraction +endword benem 12-14-12356 shouldn't use the be-contraction +endword benen 12-14-14 shouldn't use the be-contraction +endword bens 12-14-234 shouldn't use the be-contraction +endword ber 12-12456 shouldn't use the be-contraction +endword berei 12-12456-146 shouldn't use the be-contraction +endword bereien 12-12456-146-14 shouldn't use the be-contraction +endword berin 12-12456-35 shouldn't use the be-contraction +endword berinnen 12-12456-35-1345-14 shouldn't use the be-contraction +endword bern 12-12456-1345 shouldn't use the be-contraction +endword bers 12-12456-234 shouldn't use the be-contraction +always ober 135-12-12456 shouldn't use the be-contraction +endword bes 12-123456 shouldn't use the be-contraction + +always umgeht 136-134-1245-2356-2345 shouldn't use the ge-contraction +always geig 1245-146-1245 should use the ei-contraction +always geisel 1245-146-234-13456 shouldn't use the ge-contraction +always geist 1245-146-23456 +prfword gel 1245-13456 shouldn't use the ge-contraction +midendword gelhaft 1245-13456-125-124 +midword gelläng 1245-13456-5-123-1245 +midword gellaeng 1245-13456-5-123-1245 +prfword geln 1245-13456-1345 +prfword gelns 1245-13456-1345-234 +prfword gels 1245-13456-234 +midendword gelung 1245-13456-136 +before st midendword gelungs 1245-13456-136-234 +prfword gen 1245-14 shouldn't use the ge-contraction +midendword gend 1245-14-145 shouldn't use the ge-contraction +endword gens 1245-14-234 shouldn't use the ge-contraction +midendword ger 1245-12456 should use er-contraction if not part of a word intro +begword abge 1-12-12346 +begword unange 256-235-12346 +begmidword aufger 2-16-12346-1235 +begmidword ausger 34-12346-1235 +before r begmidword einge 1246-12346 +begword unger 256-12346-1235 +sufword ungerecht 256-12346-1235-2345 +sufword zuge 2-1356-12346 +endword ges 1245-123456 shouldn't use the ge-contraction +midendword ien 24-14 shouldn't use the ie-contraction +midendword ienen 346-1345-14 should use the ie-contraction +endword tel 2345-13456 should use the el-contraction +endword ten 2345-14 should use the en-contraction +endword ter 2345-12456 should use the er-contraction +endword tes 2345-123456 should use the es-contraction +always trigraph = shouldn't use the ig-contraction + +# Vorsilbenkürzungen +begword aus 34 +begword ent 2346 +begword ex 1346 +begword pro 12345 +begword ver 36 + +begword auspiz 16-234-1234-24-1356 shouldn't use the aus-contraction +word ente 14-236 shouldn't use the ent-contraction +sufword enten 14-2345-14 shouldn't use the ent-contraction +begword veranda 1236-12456-236-145-1 shouldn't use the ver-contraction +begword vertikal 1236-12456-2345-24-13-25 shouldn't use the ver-contraction +word vertikal 1236-12456-2345-24-13-1-123 shouldn't use the ver-contraction + +# Nachsilbenkürzungen +endword falls 124 +midendword heit 125 +before s midword heits 125-234 +midendword keit 13 +before s midword keits 13-234 +midendword mal 134 +midendword nis 1346 +midendword sam 2346 +midendword schaft 156 +midendword ung 136 +before cst midword ungs 136-234 Bindungscharakter, Regierungschef +midendword wärts 2456 + +midendword ation 5-1345 +before s midword ations 5-1345-234 +midendword ativ 5-1236 +after st always ion 245 +after st before s always ions 245-234 +endword ismus 5-24 +midendword istisch 5-156 +endword nismus 1345-5-24 shouldn't use the nis-contraction +midendword nistisch 1345-5-156 +midendword ität 5-345 +midendword itaet 5-345 +before s midword itäts 5-345-234 +before s midword itaets 5-345-234 +midendword mität 134-5-345 shouldn't use the mit-contraction + +sufword anis 235-24-234 shouldn't use the nis-contraction +before st midword ations 5-1345-234 +sufword barschaft 12-356-156-1-124-2345 shouldn't use the shaft-contraction +always blumensamen 12-123-136-134-14-234-1-134-14 shouldn't use the sam-contraction +prfword dezimal = if we use the mal-contraction here, we get a new word dezim +begmidword dezimal 145-15-1356-24-134-25 +sufword small 234-134-1-12345 shouldn't use the mal-contraction +word beaufort 12-15-16-124-26-2345 shouldn't use the auf-contraction +sufword erheiter 12456-125-146-2345-12456 shouldn't use the heit-contraction +prfword formal 124-26-134-1-123 shouldn't use the mal-contraction +begword formal 124-26-134-25 shouldn't use the mal-contraction +word firnis = shouldn't use the nis-contraction +begword gesam 12346-234-1-134 shouldn't use the sam-contraction +always herrschaft 1235-1235-156-1-124-2345 can not use the shaft-contraction +always hoheit 125-135-125-146-2345 shouldn't use the heit-contraction +always kuhdung 13-136-125-145-256-1245 shouldn't use the ung-contraction +prfword maximal = shouldn't use the mal-contraction +begmidword maximal 134-1-6-1346-24-134-25 shouldn't use the mal-contraction +always tennis 2345-14-1345-24-234 shouldn't use the nis-contraction +midendword ungscharakter 136-234-1456-13 +before st midendword ungs 136-234 shouldn't use the ss/st-contraction +midendword zung 1356-136 auseinandersetzung shouldn't use the zu-contraction +begword zung 1356-256-1245 shouldn't use the ung-contraction + +# Einformige Kürzungen, nur alleinstehend +word als 146 +word auch 34 +word eu = +word das 145 +word dass 2346 +word den 15 +word der 1235 +word des 3 +word die 346 +word ihm 236 +word im 36 not allowed when used in hyphenated words like Hans-im-Glück-Gefühl +after letter literal -im- +word ist 23456 +word kann 13 +word lässt 123 +word laesst 123 +word man 134 +word oder 135 +word schon 156 +word sich 14 +word sie 234 +word was 2456 + +# Einformige Kürzungen, alleinstehend oder in Wortverbindungen +word aber 1 +begword aber 2-1 +word auf 16 +always auf 2-16 +word bei 12 +always bei 2-12 +word dem 12356 +always dem 2-12356 +word durch 1456 +always durch 2-1456 +word für 124 +always für 2-124 +word gegen 1245 +always gegen 2-1245 +word gewesen 12346 +always gewesen 2-12346 +word immer 1346 +always immer 2-1346 +word jetzt 245 +always jetzt 2-245 +word mehr 2356 +always mehr 2-2356 +word mit 2345 +always mit 2-2345 +word nicht 1345 +always nicht 2-1345 +word so 1234 +always so 2-1234 +begword absol = +begword absorb = +begword absorp = +always aerosol 1-12456-135-234-135-123 +always amtsober 1-134-2345-234-135-12-12456 +always anthroposo 235-2345-125-1235-135-1234-135-234-135 +always iso = +always konson = +begmidword sensor 234-14-234-26 +endword sensor 234-14-234-135-1235 +word soda = +always soft = +always soldat = +always sommer 234-135-1346-12456 +always sonder 234-135-1345-145-12456 +always sonogra = +always sonn = +always sonst 234-135-1345-23456 +always sorg 234-26-1245 +always source = +sufword south = +always sowjet = +always soziolo = +word über 1256 +word ueber 1256 +always über 2-1256 +word und 136 +always und 2-136 +word unter 256 +always unter 2-256 +word voll 12345 +always voll 2-12345 +word von 1236 +always von 2-1236 +word vor 26 +always vor 2-26 +word wie 126 +always wie 2-126 +word zu 1356 +always zu 2-1356 + +# Einformige Kürzungen, alleinstehend oder am Wortanfang +sufword ihr 24 +sufword sein 246 +sufword war 356 +sufword wär 5-356 + +# Einformige Kürzungen, alleinstehend, mit Endungen oder in Wortverbindungen +always hatt 125 +always hätt 345 +always haett 345 +always welch 13456 + +word adonis = shouldn't use the nis-contraction +always aktuell 1-13-2345-136-15-12345 should use the ll-contraction +always all 1-12345 +sufword alle 1-15 +always allegor 1-12345-15-1245-26 Allegorie shouldn't use the ae-contraction +always allein 1-1246 +word allem 1-12356 +always allen 1-14 +always aller 1-12456 +always allerg 1-12345-12456-1245 Allergiker +word alles 1-123456 +always allesamt 1-12345-15-234-1-134-2345 shouldn't use the es-contraction +always alphabet 25-1234-125-1-12-15-2345 shouldn't use the hab-contraction +word also 1-135 +always ander 2-12456 +always änder 5-12456 +always aender 5-12456 +always arbeit 356-12 +before s always arbeits 356-12-234 +always arben 356-12-14 +always kauf 13-16-124 +begword aussprech 16-2-2346 +midendword aussprech 16-234-2-2346 +midendword ausstell 16-234-2-13456 +always australi 16-23456-1235-25-24 shouldn't use the aus-contraction +always austria 16-23456-1235-24-1 shouldn't use the aus-contraction +#begword äuß 5-34 FIXME: how to deal with äußerst? + +always ähnlich 345-456 +always aehnlich 345-456 + +word balsam 12-25-234-1-134 +word been 12-15-15-1345 english word shouldn't use be- or en-contraction +always beere 12-15-15-1235-15 +always beeren 12-15-15-1235-14 +always behr 12-2356-1235 entbehren +begword beid 12-145 beiderseits +always berg 12-12456-1245 shouldn't use the be-contraction +always berge 12-12456-12346 shouldn't use the be-contraction +always bergen 12-12456-1245-14 shouldn't use the be-contraction +always berger 12-12456-1245-12456 shouldn't use the be-contraction +always berges 12-12456-1245-123456 shouldn't use the be-contraction +always besonder 23 +always besser 234-234 +contraction ss +word beim 12-134 +contraction bm +always bis 12-234 +always bison = +always bist 12-23456 +always bleib 12-12 +contraction bb +always blind 12-123 +contraction bl +always brauch 2-34 +always bräuch 5-34 +always braeuch 5-34 +always brief 12-124 +contraction bf +always bring 12-1245 +contraction bg + +always charakter 1456-13 +sufword chor 1456-135-1235 shouldn't use the or-contraction +always comput 6-14-135-134-1234-136-2345 computer should use the er-contraction + +always dabei 145-12 +contraction db +always dadurch 145-145 +contraction dd +always dafür 145-124 +contraction df +always dagegen 145-1245 +contraction dg +always daher 145-125 +contraction dh +always damit 145-134 +contraction dm +always dank 145-13 +contraction dk +always davon 145-1236 +contraction dv +always dazu 145-1356 +contraction dz +always dazubleib 145-1-2-1356-12-12 shouldn't use the dazu-contraction +always dazumal 145-1-2-1356-134 +always deuten 145-126-2345-14 shouldn't use the te-contraction +always deal = dealer +word dei = Agnus Dei +always demokrat 145-2345 +contraction dt +word denen 15-14 +word dnister 145-1345-24-234-2345-12456 shouldn't use the nis-contraction +word denn 145-1345 +word dennschon 145-1345-156-135-1345 +always dessen 145-2346 +always deutsch 145-156 +word diem 145-24-12356 we shouldn't use the ie-contraction here +word diese 346-15 +word diesen 346-14 +word dieser 346-12456 +word dieses 346-123456 +sufword diesmal 346-134 +word dir 145-1235 +word doch 145-1456 +always druck 145-46 +always drück 5-145-46 +always dürfen 2-145-14 +always dürfnis 2-145-1346 +always dürft 2-145-2345 + +always eben 15-12-14 +word ebenso 15-135 +contraction eo +sufword ehemal 15-125-15-134 +word ei 6-146 +always eigen 146-1245-14 Eigennutz shouldn't use the ge-contraction +always einander 2-1246 +word en 15-1345 en passant +always enig 14-45 +always erkenn 12456-13-14-1345 +sufword etwa 15-1 +contraction ea +word etwas 2345-2456 +contraction tw + +always fahr 2-1235 +always fahrtsst 2-1235-2345-234-23456 shouldn't use the ss-contraction +always fahrtsstell 2-1235-2345-234-2-13456 +always fähr 5-1235 +always faehr 5-1235 +always fall 124-12345 +always fäll 5-124-12345 +always faell 5-124-12345 +always fertig 124-45 +always fest 124-15-23456 should use the st-contraction +always film = +always folgen 124-135-123-1245-14 shouldn't use the ge-contraction +always frag 124-1235 +contraction fr +always fragil = +always fragment 124-1235-1-1245-134-14-2345 +always freund 124-145 +contraction fd +always führ 124-125 +contraction fh +always fürcht 124-1256-1235-1456-2345 shouldn't use the für-contraction + +always ganz 1245-1356 +contraction gz +always gänz 5-1245-1356 +always gaenz 5-1245-1356 +always garnison 1245-356-1345-24-234-135-1345 shouldn't use the nis-contraction +word gegend 12346-1245-14-145 shouldn't use the gegen-contraction +always gegenüber 1245-1256 +contraction gü +always gegenwart 1245-2456 +contraction gw +always gegenwärt 5-1245-2456 +always gegenwaert 5-1245-2456 +always gelb 1245-13456-12 should use the el-contraction +always geld 1245-13456-145 should use the el-contraction +always gelegen 1245-1245 +contraction gg +begword gelt 1245-13456-2345 gelten shouldn't use the ge-contraction +prfword gene 1245-14-15 +prfword genen 1245-14-14 +prfword gener 1245-14-12456 +prfword genes 1245-14-123456 +always geogra = Geographie shouldn't use the ge-contraction +prfword gern 1245-12456-1345 +midendword gerlich 1245-12456-456 bürgerlich shouldn't use the ge-contraction +always gern 1245-12456-1345 we shouldn't use the ge-contraction here +always geschäft 1245-124 +always geschaeft 1245-124 +contraction gf +always gesellschaft 1245-156 +always geworden 12346-2456 +always gibt 1245-12 +contraction gb +always gleich 1245-1456 +always glück 1245-46 +always groß 1245-2346 +contraction gß +always größ 5-1245-2346 +always grund 1245-145 +contraction gd +always gründ 5-1245-145 + +always hab 2-125 +always haft 125-124 +contraction hf +always häft 5-125-124 +always haeft 5-125-124 +word hain = +always hamburger 125-1-134-12-136-1235-1245-12456 shouldn't use the ge-contraction +always hand 125-145 +always händ 5-125-145 +always haend 5-125-145 +always hast 125-23456 +always hat 125-2345 +contraction ht +word hattest 125-15-23456 shouldn't use the es-contraction +word hattrick 125-1-2345-2345-24-46 shouldn't use the hatt-contraction +always haupt 125-1234 +contraction hp +always häupt 5-125-1234 +always herr 1235-1235 +contraction rr +always hier 125-1235 +contraction hr +always hierar 125-24-12456-356 hierarchie +always hoff 124-124 +contraction ff + +word ich 3456 +sufword ihn 24-125 +always immersion 24-1346-12456-234-245 shouldn't use the immer-contraction +always interess 2-35 +always irgend 24-1245 irgendetwas +contraction ig + +always jahr 245-1235 +contraction jr +always jähr 5-245-1235 +always jaehr 5-245-1235 +always jahrhundert 245-125 +contraction jh +always jahrtausend 245-2345 +contraction jt +always jahrzehnt 245-1356 +contraction jz +sufword jed 245-145 +word jedoch 245-1456 +sufword jetzig 245-45 +always johannisberg 245-135-125-235-1345-24-234-12-12456-1245 shouldn't use the nis-contraction +always jung 245-256-1245 shouldn't use the ung-contraction + +word kannst 13-23456 +always kapital 13-1234 +contraction kp +always kapitäl 5-13-1234 +always kapitael 5-13-1234 +always klemm 13-123-15-1346 eingeklemmt shouldn't use the em-contraction +always knoch 13-1345-135-1456 Knochen shouldn't use the noch-contraction +always komm 13-1346 +contraction kx +always kömm 5-13-1346 +always konnt 13-2345 +contraction kt +always könn 2-13 +always kräft 5-13-124 +always kraeft 5-13-124 +always kulturell 13-136-123-2345-136-1235-15-12345 should use the ll-contraction +always kürz 5-13-1356 + +always lang 123-1245 +contraction lg +always läng 5-123-1245 +always laeng 5-123-1245 +always jahrelang 245-1235-15-123-1245 shouldn't use the el-contraction +always jahrhundertelang 245-125-15-123-1245 shouldn't use the el-contraction +always jahrzehntelang 245-1356-15-123-1245 shouldn't use the el-contraction +always jahrtausendelang 245-2345-15-123-1245 shouldn't use the el-contraction +before s always jahres 245-1235-123456 +before g always jahresta 245-1235-123456-2345-1 +always langobard 123-235-1245-135-12-356-145 shouldn't use the lang-contraction +always lass 2-123 +always läss 5-123 +always laess 5-123 +always class = shouldn't use the lass-contraction +sufword klass 13-123-1-2346 shouldn't use the lass-contraction +always laich 123-1-24-1456 shouldn't use the ich-contraction +always lasagne = shouldn't use the sag-contraction +always lasso 123-1-2346-135 shouldn't use the lass-contraction +always länd = +always laend = +always leb 123-12 +contraction lb +always leicht 123-1456 +always letzt 123-2345 +contraction lt +always lieb 123-346-12 + +always mann 134-1345 +contraction mn +always männ 5-134-1345 +always maenn 5-134-1345 +word manna = shouldn't use the mann-contraction +always mannequin 134-235-1345-15-6-12345-35 shouldn't use the mann-contraction +always maschin 134-156 +always material 134-123 +contraction ml +always materiell 134-12345 +word mir 134-1235 +always mittel 134-2345 +contraction mt +always moldawien 134-135-123-145-1-2456-24-14 shouldn't use the wie-contraction +sufword moor = shouldn't use the or-contraction +always möchte 1456-15 +word möchten 1456-14 +always mög 2-246 +always möglich 134-456 +always musik 134-13 +contraction mk +always muss 134-2346 +always müss 2-134 + +word nachdem 1345-145 +always nahm 1345-134 Annahme +contraction nm +always natur 1345-2345 +contraction nt +always natürlich 1345-456 +always nächst 1345-23456 +always naechst 1345-23456 +always nehm 1345-125 +contraction nh +endword nisch 1345-24-156 shouldn't use the nis-contraction +endword nische 1345-24-156-15 shouldn't use the nis-contraction +endword nischen 1345-24-156-14 shouldn't use the nis-contraction +endword nischer 1345-24-156-12456 shouldn't use the nis-contraction +endword nisches 1345-24-156-123456 shouldn't use the nis-contraction +always nichtig 1345-45 +always nichts 1345-234 +contraction ns +always nichtsehend 2-1345-234-2356-14-145 shouldn't use the nichts-contraction +always noch 1345-1456 +always nommen 1345-1346 +contraction nx +always notwendig 1345-2456 +contraction nw +always normal 1345-26-134-1-123 shouldn't use the mal-contraction +always anim 235-24-134 animal shouldn't use the mal-contraction +always nur 1345-1235 +contraction nr +always nutz 1345-1356 +contraction nz +always nütz 5-1345-1356 + +sufword ohne 135-15 +contraction oe +endword ommen 1346 + +always öffentlich 246-456 + +always paar = shouldn't use the ar-contraction +always paragraph 1234-1245 +contraction pg +always person 1234-1345 +contraction pn +always philosoph 1234-125 +contraction ph +always platz 1234-1356 +always plätz 5-1234-1356 +always plaetz 5-1234-1356 +always plötzlich 1234-456 +always ploetzlich 1234-456 +always politik 1234-13 +contraction pk +always politisch 1234-156 +always punkt 1234-2345 +contraction pt + +always recht 1235-2345 +contraction rt +before s always rechts 1235-2345-234 +always regier 1235-1245 +contraction rg +before s always regierungs 1235-1245-136-234 +always rehabilit 1235-125 +contraction rh +always republik 1235-13 +contraction rk +sufword rest 1235-15-23456 should use the st-contraction +always richt 2-3456 +always rück 1235-46 +always rueck 1235-46 + +always sag 234-1245 +contraction sg +always saal = shouldn't use the al-contraction +word samen 234-1-134-14 shouldn't use the sam-contraction +always satz 234-1356 +contraction sz +always sätz 5-234-1356 +always saetz 5-234-1356 +always schnur 156-1345-136-1235 shouldn't use the nur-contraction +always school 234-1456-135-135-123 foreign word, sch-contraction not allowed +always schlag 156-1245 +always schläg 5-156-1245 +always schlaeg 5-156-1245 +always schließ 156-2346 +always schreib 156-12 +always schrift 156-2345 +always schrieb 2-156 +always schwierig 156-45 +always schwillt 156-2456-24-12345-2345 shouldn't use the will-contraction +always schwoll 156-2456-135-12345 geschwollen shouldn't use the woll-contraction +word sehr 234-1235 +sufword versehr 36-234-1235 +sufword unversehr 256-1236-12456-234-1235 +always selbst 234-23456 +always selbständig 234-13456-12-5-23456-45 shouldn't use the selbst-contraction +always selbstaendig 234-13456-12-5-23456-45 shouldn't use the selbst-contraction +always setz 2-15 +sufword sesam 234-123456-1-134 shouldn't use the sam-contraction +always sind 234-145 +contraction sd +always sitz 2-24 +always solch 234-1456 +always soll 2-234 +always sondern 234-1345 +contraction sn +always sozial 234-123 +contraction sl +always spiel 2-346 +always sprach 234-1234 +contraction sp +always spräch 5-234-1234 +always spraech 5-234-1234 +always sprech 2-2346 +always staat 23456-2345 +always stand 2-23456 +always ständ 5-23456 +always staend 5-23456 +always stell 2-13456 +always sstell 234-2-13456 shouldn't use the ss-contraction +word stets 23456-234 +always strahier 23456-1235-1-125-346-1235 abstrahieren + +word taiga = shouldn't use the ig-contraction +always täter 2345-345-2345-12456 shouldn't use the er-contraction +always technik 2345-13 +contraction tk +always stechnik 234-2345-13 +always technisch 2345-156 +always stechnisch 234-2345-156 +sufword test 2345-15-23456 shouldn't use the es-contraction +sufword töricht 2345-246-1235-3456-2345 shouldn't use the richt-contraction +sufword toericht 2345-246-1235-3456-2345 shouldn't use the richt-contraction +always trag 2345-1245 +contraction tg +always träg 5-2345-1245 +always train = training shouldn't use the first possible in-contraction +always treff 2345-124 +contraction tf +always trinitro = shouldn't use the in-contraction +always trotz 2345-1356 +contraction tz +always trüb = trüber shouldn't use the über-contraction + +always unbeirr 256-23-24-1235-1235 unbeirrt shouldn't use the bei-contraction +always kund 13-256-145 shouldn't use the und-contraction +always mund 134-256-145 shouldn't use the und-contraction +always wund 2456-256-145 shouldn't use the und-contraction +sufword under 256-145-12456 shouldn't use the und-contraction + +word überhaupt 1256-125 +word ueberhaupt 1256-125 +always übrig 1256-45 + +always verhältnis 1236-125 +contraction vh +always verhaeltnis 1236-125 +always viel 1236-123 +contraction vl +word vielleicht 1236-2345 +always volk 1236-13 +contraction vk +word vom 1236-134 +contraction vm + +always wahr 2456-125 +contraction wh +always währ 5-2456-125 +always während 345-145 +contraction äd +always waehrend 345-145 +sufword warm 2456-356-134 shouldn't use the war-contraction +always weg 2456-1245 +contraction wg +always weis 2-146 Anweisung +always weit 2456-2345 +always wenig 2456-45 +sufword wenn 2456-1345 +contraction wn +always werd 2-2456 +always wesentlich 2456-456 +always wiegend 2456-346-1245-14-145 shouldn't use the wie-contraction +always wieder 346-145 +always wien 2456-346-1345 shouldn't use the wie-contraction +always will 2456-12345 +word wir 2456-1235 +word wird 2456-145 +always wirk 2456-13 +contraction wk +word wirst 2456-23456 +always wirtschaft 2456-156 +always wiss 2456-2346 +contraction wß +always wohl 2456-123 +contraction wl +always woll 2-135 +word worden 135-14 +sufword wurd 136 +sufword würd 1256 + +always young 6-13456-135-136-1345-1245 shouldn't use the u-contraction + +always zahl 1356-123 +contraction zl +always zähl 5-1356-123 +always zeit 1356-2345 +contraction zt +before st midendword zug = +word zum 1356-134 +word zunächst 1356-1345 +word zunaechst 1356-1345 +word zur 1356-1235 +sufword zurschau 1356-1235-156-16 +sufword zurück 1356-46 +sufword zurueck 1356-46 +always zusammen 1356-234 +always zwischen 1356-2456 +contraction zw + +# exceptions +always aachen 1-1-1456-14 shouldn't use the ach-contraction +always abbauf 1-12-12-16-124 Abbaufortschritt, Abbaufront +sufword abend 1-12-14-145 +always abenteuer 1-12-14-2345-126-12456 +always abenteurer 1-12-14-2345-126-1235-12456 +always aberkann 1-12-12456-13-235-1345 shouldn't use the aber-contraction +always aberkenn 1-12-12456-13-14-1345 shouldn't use the aber-contraction +always abgaben 1-12-1245-1-12-14 shouldn't use the be-contraction +always abgelt 1-12-1245-13456-2345 shouldn't use the ge-contraction +sufword ablageraum 1-12-123-1-12346-1235-16-134 +always ablageräum 1-12-123-1-12346-1235-34-134 +always ablageraeum 1-12-123-1-12346-1235-34-134 +always ablauf 1-12-123-16-124 shouldn't use the auf-contraction +always ablösesumm 1-12-123-246-234-15-234-136-1346 shouldn't use the es-contraction +always abloesesumm 1-12-123-246-234-15-234-136-1346 shouldn't use the es-contraction +always abnormität 1-12-1345-26-134-5-345 shouldn't use the mit-contraction +always abnormitaet 1-12-1345-26-134-5-345 shouldn't use the mit-contraction +always abrund 1-12-1235-256-145 shouldn't use the und-contraction +begword abschieds 1-12-156-346-145-234 Abschiedsschmerz +always achteck 1-1456-2345-15-46 shouldn't use the te-contraction +always asocia 1-234-135-6-14-24-1 asociación shouldn't use the so-contraction +always afrikarefer 1-124-1235-24-13-1-1235-15-124-12456 shouldn't use the ar-contraction +sufword agent 1-1245-14-2345 shouldn't use the ge-contraction +always akadem 1-13-1-145-12356 shouldn't use the dem-contraction +always akteur 1-13-2345-126-1235 shouldn't use the te-contraction +always alarm 25-356-134 Alarmmeldung shouldn't use the mm-contraction +always albern 25-12-12456-1345 shouldn't use the be-contraction +always albert 25-12-12456-2345 shouldn't use the be-contraction +always alexander 25-15-6-1346-235-145-12456 shouldn't use the ander-contraction +always algerier 25-1245-12456-24-12456 shouldn't use the ie-contraction +sufword allee 1-12345-15-15 shouldn't use the alle-contraction +word alleen 1-12345-15-14 shouldn't use the alle-contraction +before st always alltags 1-12345-2345-1-1245-234 +begword alm 25-134 +before s begword alters 25-2345-12456-234 +always amateur 1-134-1-2345-126-1235 should use the eu-contraction +before r always amerika 1-134-12456-24-13-1 +always amtschines 1-134-2345-234-1456-35-123456 shouldn't use the sch-contraction +always amtsstub 1-134-2345-234-23456-136-12 shouldn't use the ss-contraction +always andalusier 235-145-25-136-234-24-12456 shouldn't use the ie-contraction +midendword anebel 1-1345-15-12-13456 Andromedanebel shouldn't use the an-contraction +before st always anfangs 235-124-235-1245-234 +before st always angriffs 235-1245-1235-24-124-124-234 +always anklage 235-13-123-1-12346 Anklagerede shouldn't use the er-contraction +always anklang 235-13-123-235-1245 shouldn't use the lang-contraction +always ankläng 235-13-123-345-1345-1245 shouldn't use the läng-contraction +begword anlagen 235-123-1-1245-14 +always anlauf 235-123-16-124 shouldn't use the auf-contraction +class m m +before m always anleihe 235-123-146-125-15 Anleihemarkt shouldn't use the em-contraction +class egn egn +before egn begword anti 235-2345-24 +always antichrist 235-2345-24-1456-1235-24-23456 shouldn't use the ich-contraction +always anästh 235-345-234-2345-125 Anästhesie +always augen 16-1245-14 shouldn't use the ge-contraction +midendword austausch 16-234-2345-16-156 shouldn't use the st-contraction +always beilstein 12-146-123-23456-1246 shouldn't use the bei-contraction +word bein 12-146-1345 shouldn't use the bei-contraction +word beine 12-146-1345-15 shouldn't use the bei-contraction +word beinen 12-146-1345-14 shouldn't use the bei-contraction +word beines 12-146-1345-123456 shouldn't use the bei-contraction +always bauform 12-16-124-26-134 shouldn't use the auf-contraction +always beteuer 23-2345-126-12456 shouldn't use the te-contraction +always beute 12-126-236 should use the eu-contraction +always beutel 12-126-2345-13456 should use the eu-contraction +always bssy 12-234-234-6-13456 shouldn't use the ss-contraction +always bundes 12-256-145-123456 shouldn't use the und-contraction +prfword chemikalie 1456-12356-24-13-25-24-15 +always donnerstag 145-135-1345-1345-12456-234-2345-1-1245 shouldn't use the st-contraction +sufword eheinstitut 15-125-15-35-23456-24-2345-136-2345 +begword eheleu 15-125-15-123-126 +before g begword eherin 15-125-15-1235-35 Ehering(e) shouldn't use the er-contraction +midword ehilfs = Analysehilfsmittel shouldn't use the eh-contraction +midendword emethod = Analysemethode shouldn't use the eh-contraction +midendword enorm 15-1345-26-134 Aussprachenorm shouldn't use the en-contraction +always eschatolog 123456-1456-1-2345-135-123-135-1245 shouldn't use the sch-contraction +always esther 123456-2345-125-12456 shouldn't use the st-contraction +always ästhe 345-234-2345-125-15 ästhetisch +midendword erecht 15-1235-2345 +midendword ericht 15-2-3456 +always erepublik 15-1235-13 +midendword emann 15-134-1345 +midendword emänn 15-5-134-1345 +midendword emaenn 15-5-134-1345 +midendword estand 15-2-23456 +midword estell 15-2-13456 +always found 124-135-256-145 Foundation shouldn't use the und-contraction +always geben 12346-12-14 +always gebunden 12346-12-256-145-14 shouldn't use the und-contraction +always geier 1245-146-12456 should use the ei-contraction +midendword geingang 1245-1246-1245-235-1245 +midendword geingän 1245-1246-1245-345-1345 +always gelungen 12346-123-256-1245-14 +always generat 1245-14-12456-1-2345 +always generier 1245-14-12456-346-1235 +always gerät 12346-1235-345-2345 should use the ge-contraction +always geraet 12346-1235-345-2345 should use the ge-contraction +always geräusch 12346-1235-34-156 should use the ge-contraction +always geraeusch 12346-1235-34-156 should use the ge-contraction +always gerecht 12346-1235-2345 +always gericht 12346-2-3456 +begword german 1245-12456-134-235 shouldn't use the ge-contraction +always gewiesen 12346-2456-346-234-14 shouldn't use the wie-contraction +prfword hallen 125-1-12345-14 shouldn't use the allen-contraction +always hauf 125-16-124 shouldn't use the auf-contraction +always hotel 125-135-2345-13456 shouldn't use the te-contraction +always installer 35-23456-1-12345-12456 shouldn't use the aller-contraction +always interview 35-2345-12456-1236-24-15-2456 shouldn't use the ie-contraction +after st always ionstrieb 245-234-2345-1235-346-12 +after st always ionstrupp 245-234-2345-1235-136-1234-1234 +always jubel 245-136-12-13456 shouldn't use the be-contraction +always komponist 13-135-134-1234-135-1345-24-23456 shouldn't use the nis-contraction +always liechtenstein 123-346-1456-2345-14-23456-1246 shouldn't use the te-contraction +prfword linie 123-35-24-15 shouldn't use the ie-contraction +prfword materie 134-1-2345-12456-24-15 shouldn't use the ie-contraction +always metallen 134-15-2345-1-12345-14 shouldn't use the allen-contraction +always regel 1235-15-1245-13456 +always release = shouldn't use the el-contraction +always round 1235-135-256-145 shouldn't use the und-contraction +sufword rund 1235-256-145 shouldn't use the und-contraction +word räson = shouldn't use the so-contraction +word röschen 1235-246-234-1456-14 should use the ch-contraction +midendword sammel 234-1-1346-13456 shouldn't use the sam-contraction +midendword samml 234-1-1346-123 shouldn't use the sam-contraction +endword schef 234-1456-15-124 +endword schefin 234-1456-15-124-35 +endword schefins 234-1456-15-124-35-234 +endword schefinnen 234-1456-15-124-35-1345-14 +endword schefs 234-1456-15-124-234 +endword eschef 123456-1456-15-124 +endword eschefin 123456-1456-15-124-35 +endword eschefins 123456-1456-15-124-35-234 +endword eschefinnen 123456-1456-15-124-35-1345-14 +endword eschefs 123456-1456-15-124-234 +always schueler 156-1256-123-12456 should use the ue-symbol +always schwung 156-2456-256-1245 shouldn't use the ung-contraction +always september 234-15-1234-2345-12356-12-12456 should use the em-contraction +before s always sichts 234-3456-2345-234 Ansichtssache shouldn't use the ss-contraction +always silber 234-24-123-12-12456 shouldn't use the be-contraction +always sprung 234-1234-1235-256-1245 shouldn't use the ung-contraction +always ssitz 234-2-24 shouldn't use the ss-contraction +always ssonntag = +always sspiel 234-2-346 +always ssprach 234-234-1234 +always sstand 234-2-23456 +midendword stitel 234-2345-24-2345-13456 +always studien 23456-136-145-24-14 shouldn't use the ie-contraction +always stunde 23456-256-145-15 shouldn't use the und-contraction +always stunden 23456-256-145-14 +always esystem 15-234-6-13456-23456-12356 shouldn't use the es-contraction +always sturz 23456-136-1235-1356 Absturzursache shouldn't use the zu-contraction +always tagesstät 2345-1-1245-123456-23456-345-2345 shouldn't use the ss-contraction +always tagesstaet 2345-1-1245-123456-23456-345-2345 shouldn't use the ss-contraction +always team = shouldn't use the te-contraction +midendword termin 2345-12456-134-35 shouldn't use the te-contraction +always wagen 2456-1-1245-14 shouldn't use the ge-contraction +always weiber 2456-146-12-12456 shouldn't use the be-contraction +sufword verbund 36-12-256-145 shouldn't use the und-contraction +midendword verbund 1236-12456-12-256-145 shouldn't use the und-contraction +midword versamm 1236-12456-234-1-1346 shouldn't use the sam-contraction +always viertel 1236-346-1235-2345-13456 shouldn't use the te-contraction +before g always zeitsta 1356-2345-234-2345-1 + +# names +always daniel 145-235-24-13456 shouldn't use the ie-contraction +always gerlind 1245-12456-123-35-145 should use the er-contraction + +# TODO: +# 8-Punkte-Plan diff --git a/Tables/de-vollschrift.ctb b/Tables/de-vollschrift.ctb new file mode 100644 index 0000000000000000000000000000000000000000..9a9bad65d954791e68364a11eb01347292893fe8 --- /dev/null +++ b/Tables/de-vollschrift.ctb @@ -0,0 +1,84 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - German (basic contractions) +# Created by Mario Lang . + +include de-basis.ctb + +class cst cst +class s s +class t t + +# Lautgruppenkürzungen +always au 16 +always eu 126 +always ei 146 +always ch 1456 +always sch 156 +always st 23456 +midendword ie 346 +always äu 34 + +before s midendword aus 16-234 + +always barrier = shouldn't use the ie-contraction +always bankier = shouldn't use the ie-contraction +always famili = familie(n) shouldn't use the ie-contraction +endword studie 23456-136-145-24-15 shouldn't use the ie-contraction +midendword ien = shouldn't use the ie-contraction +midendword iell = shouldn't use the ie-contraction +begmidword dien 145-346-1345 +always indien = shouldn't use the ie-contraction +midendword ietät = +before cst midword ungs = Bindungscharakter, Regierungschef + +# unsolvable problems: +# die Premiere vs. ich premiere +# die Premieren vs. sie premieren + +# exceptions +word aktie = shouldn't use the ie-contraction +always algerier = shouldn't use the ie-contraction +prfword amphibie = shouldn't use the ie-contraction +always amtschef 1-134-2345-234-1456-15-124 shouldn't use the sch-contraction +always amtschines 1-134-2345-234-1456-24-1345-15-234 shouldn't use the sch-contraction +always andalusier = shouldn't use the ie-contraction +always asthma = shouldn't use the st-contraction +before t always bundes = shouldn't use the st-contraction +prfword chemikalie 1456-15-134-24-13-1-123-24-15 shouldn't use the ie-contraction +always dienstag 145-346-1345-234-2345-1-1245 shouldn't use the st-contraction +always donnerstag = shouldn't use the st-contraction +always eschatolog 15-234-1456-1-2345-135-123-135-1245 shouldn't use the sch-contraction +always esther = shouldn't use the st-contraction +prfword folie = shouldn't use the ie-contraction +sufword hoer 125-246-1235 should use the oe-symbol +always interview = shouldn't use the ie-contraction +always koffein = shouldn't use the ei-contraction +always lilie = shouldn't use the ie-contraction +prfword linie 123-24-1345-24-15 shouldn't use the ie-contraction +prfword materie = shouldn't use the ie-contraction +always museum = shouldn't use the eu-contraction +always propriet = proprietär shouldn't use the ie-contraction +word röschen 1235-246-234-1456-15-1345 should use the ch-contraction +always samstag = shouldn't use the st-contraction +word wisst = shouldn't use the st-contraction +always vietnam = shouldn't use the ie-contraction + +# names +always daniel = shouldn't use the ie-contraction diff --git a/Tables/de.ttb b/Tables/de.ttb new file mode 100644 index 0000000000000000000000000000000000000000..f1665b4311a80347d2ffbcffc0e1e7e3fa4750b8 --- /dev/null +++ b/Tables/de.ttb @@ -0,0 +1,205 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - German + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# the standard representations for the Latin control characters +include control-latin.tti + +# the numbers 1-9 are represented by the letters a-i with dot 6 added +# the number 0 is represented by dots 346 +include numbers-dot6.tti + +# generated by ttbtest: charset=iso-8859-1 +char \x00 ( 345 78) # 00 ⣜ [NULL] +# Latin control characters # 01-1A +char \x1B (123 5678) # 1B ⣷ [ESCAPE] +char \x1C ( 34 78) # 1C ⣌ [INFORMATION SEPARATOR FOUR] +char \x1D ( 2345678) # 1D ⣾ [INFORMATION SEPARATOR THREE] +char \x1E ( 234 678) # 1E ⣮ [INFORMATION SEPARATOR TWO] +char \x1F ( 45678) # 1F ⣸ [INFORMATION SEPARATOR ONE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 5 ) # 21 â  ! [EXCLAMATION MARK] +char \x22 ( 4 ) # 22 â ˆ " [QUOTATION MARK] +char \x23 ( 3456 ) # 23 â ¼ # [NUMBER SIGN] +char \x24 ( 4 6 ) # 24 â ¨ $ [DOLLAR SIGN] +char \x25 (123456 ) # 25 â ¿ % [PERCENT SIGN] +char \x26 (1234 6 ) # 26 â ¯ & [AMPERSAND] +char \x27 ( 6 ) # 27 â   ' [APOSTROPHE] +char \x28 ( 23 6 ) # 28 â ¦ ( [LEFT PARENTHESIS] +char \x29 ( 3 56 ) # 29 â ´ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 23 5 ) # 2B â – + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 3 ) # 2E â „ . [FULL STOP] +char \x2F ( 2 56 ) # 2F â ² / [SOLIDUS] +# Hindu-Arabic numerals # 30-39 +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C ( 56 ) # 3C â ° < [LESS-THAN SIGN] +char \x3D ( 23 56 ) # 3D â ¶ = [EQUALS SIGN] +char \x3E ( 45 ) # 3E â ˜ > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 ( 345 7 ) # 40 â¡œ @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B (123 567 ) # 5B â¡· [ [LEFT SQUARE BRACKET] +char \x5C ( 34 7 ) # 5C â¡Œ \ [REVERSE SOLIDUS] +char \x5D ( 234567 ) # 5D ⡾ ] [RIGHT SQUARE BRACKET] +char \x5E ( 234 67 ) # 5E â¡® ^ [CIRCUMFLEX ACCENT] +char \x5F ( 4567 ) # 5F ⡸ _ [LOW LINE] +char \x60 ( 345 ) # 60 â œ ` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B (123 56 ) # 7B â · { [LEFT CURLY BRACKET] +char \x7C ( 34 ) # 7C â Œ | [VERTICAL LINE] +char \x7D ( 23456 ) # 7D â ¾ } [RIGHT CURLY BRACKET] +char \x7E ( 234 6 ) # 7E â ® ~ [TILDE] +char \x7F ( 456 ) # 7F â ¸ [DELETE] +char \x80 ( 2 67 ) # 80 â¡¢ [] +char \x81 (1 34 6 8) # 81 ⢭ [] +char \x82 ( 2 56 8) # 82 ⢲ [BREAK PERMITTED HERE] +char \x83 ( 2 5 8) # 83 ⢒ [NO BREAK HERE] +char \x84 ( 3 5 7 ) # 84 â¡” [] +char \x85 (1 8) # 85 ⢠[NEXT LINE (NEL)] +char \x86 ( 234 8) # 86 ⢎ [START OF SELECTED AREA] +char \x87 ( 2345 8) # 87 ⢞ [END OF SELECTED AREA] +char \x88 ( 3 56 8) # 88 ⢴ [CHARACTER TABULATION SET] +char \x89 (1 45 8) # 89 ⢙ [CHARACTER TABULATION WITH JUSTIFICATION] +char \x8A ( 23 5 8) # 8A ⢖ [LINE TABULATION SET] +char \x8B ( 5 78) # 8B ⣠[PARTIAL LINE FORWARD] +char \x8C (1 5 8) # 8C ⢑ [PARTIAL LINE BACKWARD] +char \x8D ( 2 4 67 ) # 8D ⡪ [REVERSE LINE FEED] +char \x8E ( 67 ) # 8E â¡  [SINGLE SHIFT TWO] +char \x8F (12 4 67 ) # 8F â¡« [SINGLE SHIFT THREE] +char \x90 ( 23 567 ) # 90 ⡶ [DEVICE CONTROL STRING] +char \x91 ( 2 6 8) # 91 ⢢ [PRIVATE USE ONE] +char \x92 ( 6 8) # 92 ⢠ [PRIVATE USE TWO] +char \x93 (12 67 ) # 93 â¡£ [SET TRANSMIT STATE] +char \x94 ( 3 5 78) # 94 ⣔ [CANCEL CHARACTER] +char \x95 ( 45 8) # 95 ⢘ [MESSAGE WAITING] +char \x96 (1 4 67 ) # 96 â¡© [START OF GUARDED AREA] +char \x97 ( 4 8) # 97 ⢈ [END OF GUARDED AREA] +char \x98 (12 4567 ) # 98 â¡» [START OF STRING] +char \x99 (1 3 5 8) # 99 ⢕ [] +char \x9A (12 567 ) # 9A ⡳ [SINGLE CHARACTER INTRODUCER] +char \x9B ( 56 8) # 9B ⢰ [CONTROL SEQUENCE INTRODUCER] +char \x9C ( 3 6 8) # 9C ⢤ [STRING TERMINATOR] +char \x9D ( 34 67 ) # 9D ⡬ [OPERATING SYSTEM COMMAND] +char \x9E ( 23 5 7 ) # 9E â¡– [PRIVACY MESSAGE] +char \x9F (12 4 678) # 9F ⣫ [APPLICATION PROGRAM COMMAND] +char \xA0 ( 7 ) # A0 â¡€   [NO-BREAK SPACE] +char \xA1 ( 3 67 ) # A1 ⡤ ¡ [INVERTED EXCLAMATION MARK] +char \xA2 ( 5 8) # A2 ⢠¢ [CENT SIGN] +char \xA3 ( 4 67 ) # A3 ⡨ £ [POUND SIGN] +char \xA4 ( 3 678) # A4 ⣤ ¤ [CURRENCY SIGN] +char \xA5 ( 4 6 8) # A5 ⢨ Â¥ [YEN SIGN] +char \xA6 ( 2 678) # A6 ⣢ ¦ [BROKEN BAR] +char \xA7 (12345678) # A7 ⣿ § [SECTION SIGN] +char \xA8 ( 2 78) # A8 ⣂ ¨ [DIAERESIS] +char \xA9 (1 4567 ) # A9 ⡹ © [COPYRIGHT SIGN] +char \xAA (12 5 8) # AA ⢓ ª [FEMININE ORDINAL INDICATOR] +char \xAB ( 5678) # AB ⣰ « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC ( 2 5678) # AC ⣲ ¬ [NOT SIGN] +char \xAD (12 4 8) # AD ⢋ ­ [SOFT HYPHEN] +char \xAE ( 4 678) # AE ⣨ ® [REGISTERED SIGN] +char \xAF (12 45 8) # AF ⢛ ¯ [MACRON] +char \xB0 ( 456 8) # B0 ⢸ ° [DEGREE SIGN] +char \xB1 ( 23 5 78) # B1 ⣖ ± [PLUS-MINUS SIGN] +char \xB2 (12 8) # B2 ⢃ ² [SUPERSCRIPT TWO] +char \xB3 ( 23 7 ) # B3 ⡆ ³ [SUPERSCRIPT THREE] +char \xB4 (1 3 56 8) # B4 ⢵ ´ [ACUTE ACCENT] +char \xB5 (1 34 8) # B5 ⢠µ [MICRO SIGN] +char \xB6 (12345678) # B6 ⣿ ¶ [PILCROW SIGN] +char \xB7 ( 3 7 ) # B7 â¡„ · [MIDDLE DOT] +char \xB8 (1 4 8) # B8 ⢉ ¸ [CEDILLA] +char \xB9 ( 45 7 ) # B9 ⡘ ¹ [SUPERSCRIPT ONE] +char \xBA ( 2 45 8) # BA ⢚ º [MASCULINE ORDINAL INDICATOR] +char \xBB ( 45 78) # BB ⣘ » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBC (1 3 6 8) # BC ⢥ ¼ [VULGAR FRACTION ONE QUARTER] +char \xBD (123 6 8) # BD ⢧ ½ [VULGAR FRACTION ONE HALF] +char \xBE ( 34 678) # BE ⣬ ¾ [VULGAR FRACTION THREE QUARTERS] +char \xBF ( 3 8) # BF ⢄ ¿ [INVERTED QUESTION MARK] +char \xC0 ( 3 78) # C0 ⣄ À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 ( 2 7 ) # C1 â¡‚ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 (1 3 8) # C2 ⢅  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 ( 23 67 ) # C3 ⡦ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 ( 567 ) # C4 â¡° Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 ( 34567 ) # C5 ⡼ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( 4 7 ) # C6 ⡈ Æ [LATIN CAPITAL LETTER AE] +char \xC7 (1234 67 ) # C7 ⡯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( 23 78) # C8 ⣆ È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 ( 23 8) # C9 ⢆ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA ( 8) # CA ⢀ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB (12345 8) # CB ⢟ Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC (123 8) # CC ⢇ ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD ( 2 5 78) # CD ⣒ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE (12 45678) # CE ⣻ ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF (1 67 ) # CF â¡¡ à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD0 ( 5 7 ) # D0 â¡ Ã [LATIN CAPITAL LETTER ETH] +char \xD1 ( 2 567 ) # D1 ⡲ Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD2 ( 2 8) # D2 ⢂ Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 ( 2 4 678) # D3 ⣪ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 ( 2 4 8) # D4 ⢊ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD5 (1234 6 8) # D5 ⢯ Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 ( 3 5 8) # D6 ⢔ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 (123 5 8) # D7 ⢗ × [MULTIPLICATION SIGN] +char \xD8 ( 3 567 ) # D8 â¡´ Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xD9 ( 678) # D9 ⣠ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA ( 2 5 7 ) # DA â¡’ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB (12345678) # DB ⣿ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC ( 23 6 8) # DC ⢦ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD ( 23 678) # DD ⣦ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDE ( 3 5678) # DE ⣴ Þ [LATIN CAPITAL LETTER THORN] +char \xDF ( 3456 8) # DF ⢼ ß [LATIN SMALL LETTER SHARP S] +char \xE0 (123 56 8) # E0 ⢷ à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 (1 6 8) # E1 ⢡ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 678) # E2 ⣡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 (1234 8) # E3 ⢠ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 ( 345 8) # E4 ⢜ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 ( 345678) # E5 ⣼ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 ( 4 78) # E6 ⣈ æ [LATIN SMALL LETTER AE] +char \xE7 (1234 678) # E7 ⣯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 8) # E8 ⢮ è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (12 6 8) # E9 ⢣ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (12 678) # EA ⣣ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 8) # EB ⢫ ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC ( 34 8) # EC ⢌ ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED (1 4 6 8) # ED ⢩ í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 678) # EE ⣩ î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 8) # EF ⢻ ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF0 ( 23 56 8) # F0 ⢶ ð [LATIN SMALL LETTER ETH] +char \xF1 (1 345 8) # F1 ⢠ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 ( 34 6 8) # F2 ⢬ ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 (1 456 8) # F3 ⢹ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 45678) # F4 ⣹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 (1 567 ) # F5 ⡱ õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 2 4 6 8) # F6 ⢪ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 (12 5678) # F7 ⣳ ÷ [DIVISION SIGN] +char \xF8 ( 78) # F8 ⣀ ø [LATIN SMALL LETTER O WITH STROKE] +char \xF9 ( 23456 8) # F9 ⢾ ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA (1 56 8) # FA ⢱ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 5678) # FB ⣱ û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 8) # FC ⢳ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD ( 23 5678) # FD ⣶ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \xFE (1234567 ) # FE â¡¿ þ [LATIN SMALL LETTER THORN] +char \xFF (123456 8) # FF ⢿ ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] + +include common.tti diff --git a/Tables/desktop.ktb b/Tables/desktop.ktb new file mode 100644 index 0000000000000000000000000000000000000000..9140a0db327a40ccd363f24f8a21be4e29a0146f --- /dev/null +++ b/Tables/desktop.ktb @@ -0,0 +1,63 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Key Table - bindings for full keyboards + +bind KPInsert+KP5 Say_Line +bind KPInsert+KPArrowUp LnUp +bind KPInsert+KPArrowDown LnDn +bind ShiftLeft+KPInsert+KPArrowUp PrPrompt +bind ShiftLeft+KPInsert+KPArrowDown NxPrompt +bind ShiftLeft+KPInsert+KPHome LnBeg +bind ShiftLeft+KPInsert+KPEnd LnEnd +bind ControlLeft+KPInsert+KPArrowUp PrPgrph +bind ControlLeft+KPInsert+KPArrowDown NxPgrph +bind ControlLeft+KPInsert+KP5 DescChar +bind KPInsert+KPHome Top_Left +bind KPInsert+KPEnd Bot_Left +bind KPInsert+KPPageUp Say_Above +bind KPInsert+KPPageDown Say_Below +bind KPInsert+KPArrowLeft Mute +bind ControlLeft MUTE +bind ControlRight MUTE +bind KPInsert+KPArrowRight Autospeak +bind KPInsert+KPDelete Csrtrk +bind KPInsert+KPEnter Home +bind KPInsert+KPSlash CutBegin +bind KPInsert+KPAsterisk CutLine +bind KPInsert+KPMinus CutRect +bind KPInsert+KPPlus Paste +bind ControlLeft+KPInsert+KPPlus CutAppend +bind ControlLeft+ShiftLeft+KPInsert+KP2 PrefMenu +bind ControlLeft+ShiftLeft+KPInsert+KPArrowLeft PrefLoad +bind ControlLeft+ShiftLeft+KPInsert+KPArrowRight PrefSave +bind ControlLeft+ShiftLeft+KPInsert+KP7 Help +bind ControlLeft+ShiftLeft+KPInsert+KP8 Info +bind ControlLeft+ShiftLeft+KPInsert+KP9 Learn +bind ControlLeft+ShiftLeft+KPInsert+KP1 RestartBrl +bind ControlLeft+ShiftLeft+KPInsert+KP3 RestartSpeech +bind KPInsert+s SetMark +bind KPInsert+g GoToMark +bind ControlRight+KPInsert+1 SetMark+1 +bind KPInsert+1 GoToMark+1 +bind ControlRight+KPInsert+2 SetMark+2 +bind KPInsert+2 GoToMark+2 +bind ControlRight+KPInsert+3 SetMark+3 +bind KPInsert+3 GoToMark+3 +bind ControlRight+KPInsert+4 SetMark+4 +bind KPInsert+4 GoToMark+4 diff --git a/Tables/devanagari.tti b/Tables/devanagari.tti new file mode 100644 index 0000000000000000000000000000000000000000..a13995a4ad358c6e4af0a7c91adcaa11a90c73c4 --- /dev/null +++ b/Tables/devanagari.tti @@ -0,0 +1,109 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable defines the braille representations +# for the Devanagari script. + +# Maintained by John J. Boyer, director@chpi.org, www.chpi.org +# +# This table is built and maintained by Leon Ungier +# with help and guidance from Mohammed R. Ramadan +# +# Converted from liblouis table by Samuel Thibault + +# generated by ttbtest: +char \u0901 ( 3 ) # â „ ठ[DEVANAGARI SIGN CANDRABINDU] +char \u0902 ( 56 ) # â ° ं [DEVANAGARI SIGN ANUSVARA] +char \u0903 ( 6 ) # â   ः [DEVANAGARI SIGN VISARGA] +char \u0905 (1 ) # â  à¤… [DEVANAGARI LETTER A] +char \u0906 ( 345 ) # â œ आ [DEVANAGARI LETTER AA] +char \u0907 ( 2 4 ) # â Š इ [DEVANAGARI LETTER I] +char \u0908 ( 3 5 ) # â ” ई [DEVANAGARI LETTER II] +char \u0909 (1 3 6 ) # â ¥ उ [DEVANAGARI LETTER U] +char \u090A (12 56 ) # â ³ ऊ [DEVANAGARI LETTER UU] +char \u090D (1 5 7 ) # â¡‘ ठ[DEVANAGARI LETTER CANDRA E] +char \u090E ( 34 7 ) # â¡Œ ऎ [DEVANAGARI LETTER SHORT E] +char \u090F (1 5 ) # â ‘ ठ[DEVANAGARI LETTER E] +char \u0910 ( 34 ) # â Œ ठ[DEVANAGARI LETTER AI] +char \u0911 (1 3 5 7 ) # â¡• ऑ [DEVANAGARI LETTER CANDRA O] +char \u0912 ( 2 4 67 ) # ⡪ ऒ [DEVANAGARI LETTER SHORT O] +char \u0913 (1 3 5 ) # â • ओ [DEVANAGARI LETTER O] +char \u0914 ( 2 4 6 ) # â ª औ [DEVANAGARI LETTER AU] +char \u0915 (1 3 ) # â … क [DEVANAGARI LETTER KA] +char \u0916 ( 4 6 ) # â ¨ ख [DEVANAGARI LETTER KHA] +char \u0917 (1234 ) # â  à¤— [DEVANAGARI LETTER GA] +char \u0918 (12 6 ) # â £ घ [DEVANAGARI LETTER GHA] +char \u0919 ( 34 6 ) # â ¬ ङ [DEVANAGARI LETTER NGA] +char \u091A (1 4 ) # â ‰ च [DEVANAGARI LETTER CA] +char \u091B (1 6 ) # â ¡ छ [DEVANAGARI LETTER CHA] +char \u091C ( 2 45 ) # â š ज [DEVANAGARI LETTER JA] +char \u091D ( 3 56 ) # â ´ ठ[DEVANAGARI LETTER JHA] +char \u091E ( 2 5 ) # â ’ ञ [DEVANAGARI LETTER NYA] +char \u091F ( 23456 ) # â ¾ ट [DEVANAGARI LETTER TTA] +char \u0920 ( 2 456 ) # â º ठ [DEVANAGARI LETTER TTHA] +char \u0921 (12 4 6 ) # â « ड [DEVANAGARI LETTER DDA] +char \u0922 (123456 ) # â ¿ ढ [DEVANAGARI LETTER DDHA] +char \u0923 ( 3456 ) # â ¼ ण [DEVANAGARI LETTER NNA] +char \u0924 ( 2345 ) # â ž त [DEVANAGARI LETTER TA] +char \u0925 (1 456 ) # â ¹ थ [DEVANAGARI LETTER THA] +char \u0926 (1 45 ) # â ™ द [DEVANAGARI LETTER DA] +char \u0927 ( 234 6 ) # â ® ध [DEVANAGARI LETTER DHA] +char \u0928 (1 345 ) # â  à¤¨ [DEVANAGARI LETTER NA] +char \u0929 ( 56 ) # â ° ऩ [DEVANAGARI LETTER NNNA] +char \u092A (1234 ) # â  à¤ª [DEVANAGARI LETTER PA] +char \u092B ( 23 5 ) # â – फ [DEVANAGARI LETTER PHA] +char \u092C (12 ) # â ƒ ब [DEVANAGARI LETTER BA] +char \u092D ( 45 ) # â ˜ भ [DEVANAGARI LETTER BHA] +char \u092E (1 34 ) # â  à¤® [DEVANAGARI LETTER MA] +char \u092F (1 3456 ) # â ½ य [DEVANAGARI LETTER YA] +char \u0930 (123 5 ) # â — र [DEVANAGARI LETTER RA] +char \u0931 (123 5 7 ) # â¡— ऱ [DEVANAGARI LETTER RRA] +char \u0932 (123 ) # â ‡ ल [DEVANAGARI LETTER LA] +char \u0933 (123 7 ) # ⡇ ळ [DEVANAGARI LETTER LLA] +char \u0934 (123 78) # ⣇ ऴ [DEVANAGARI LETTER LLLA] +char \u0935 (123 6 ) # â § व [DEVANAGARI LETTER VA] +char \u0936 (1 4 6 ) # â © श [DEVANAGARI LETTER SHA] +char \u0937 (1234 6 ) # â ¯ ष [DEVANAGARI LETTER SSA] +char \u0938 ( 234 ) # â Ž स [DEVANAGARI LETTER SA] +char \u0939 (12 5 ) # â “ ह [DEVANAGARI LETTER HA] +char \u093D ( 2 ) # â ‚ ऽ [DEVANAGARI SIGN AVAGRAHA] +char \u093E ( 345 ) # â œ ा [DEVANAGARI VOWEL SIGN AA] +char \u093F ( 2 4 ) # â Š ि [DEVANAGARI VOWEL SIGN I] +char \u0940 ( 3 5 ) # â ” ी [DEVANAGARI VOWEL SIGN II] +char \u0941 (1 3 6 ) # â ¥ ॠ[DEVANAGARI VOWEL SIGN U] +char \u0942 (12 56 ) # â ³ ू [DEVANAGARI VOWEL SIGN UU] +char \u0945 (1 5 7 ) # â¡‘ ॅ [DEVANAGARI VOWEL SIGN CANDRA E] +char \u0946 ( 34 7 ) # â¡Œ ॆ [DEVANAGARI VOWEL SIGN SHORT E] +char \u0947 (1 5 ) # â ‘ े [DEVANAGARI VOWEL SIGN E] +char \u0948 ( 34 ) # â Œ ै [DEVANAGARI VOWEL SIGN AI] +char \u0949 (1 3 5 7 ) # â¡• ॉ [DEVANAGARI VOWEL SIGN CANDRA O] +char \u094A ( 2 4 67 ) # ⡪ ॊ [DEVANAGARI VOWEL SIGN SHORT O] +char \u094B (1 3 5 ) # â • ो [DEVANAGARI VOWEL SIGN O] +char \u094C ( 2 4 6 ) # â ª ौ [DEVANAGARI VOWEL SIGN AU] +char \u094D ( 4 ) # â ˆ ॠ[DEVANAGARI SIGN VIRAMA] +char \u0964 ( 2 56 ) # â ² । [DEVANAGARI DANDA] +char \u0966 ( 2 45 ) # â š ० [DEVANAGARI DIGIT ZERO] +char \u0967 (1 ) # â  à¥§ [DEVANAGARI DIGIT ONE] +char \u0968 (12 ) # â ƒ २ [DEVANAGARI DIGIT TWO] +char \u0969 (1 4 ) # â ‰ ३ [DEVANAGARI DIGIT THREE] +char \u096A (1 45 ) # â ™ ४ [DEVANAGARI DIGIT FOUR] +char \u096B (1 5 ) # â ‘ ५ [DEVANAGARI DIGIT FIVE] +char \u096C (12 4 ) # â ‹ ६ [DEVANAGARI DIGIT SIX] +char \u096D (12 45 ) # â › ७ [DEVANAGARI DIGIT SEVEN] +char \u096E (12 5 ) # â “ ८ [DEVANAGARI DIGIT EIGHT] +char \u096F ( 2 4 ) # â Š ९ [DEVANAGARI DIGIT NINE] diff --git a/Tables/dra.ttb b/Tables/dra.ttb new file mode 100644 index 0000000000000000000000000000000000000000..ec6206975fd3968a061a896861329b11087044a5 --- /dev/null +++ b/Tables/dra.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Dravidian + +include tamil.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/el.ttb b/Tables/el.ttb new file mode 100644 index 0000000000000000000000000000000000000000..3999a9ef2d5c2d9e0d363629b7186965d01821f4 --- /dev/null +++ b/Tables/el.ttb @@ -0,0 +1,256 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Greek + +# Created by Leon Ungier . +# +# Converted from liblouis table by Samuel Thibault + +# generated by ttbtest: charset=iso-8859-7 +char \x09 ( ) # 09 â € [CHARACTER TABULATION] +char \x0A ( ) # 0A â € [LINE FEED (LF)] +char \x0D ( ) # 0D â € [CARRIAGE RETURN (CR)] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 23 5 ) # 21 â – ! [EXCLAMATION MARK] +char \x22 ( 23 56 ) # 22 â ¶ " [QUOTATION MARK] +char \x23 ( 3456 ) # 23 â ¼ # [NUMBER SIGN] +char \x26 (1234 6 ) # 26 â ¯ & [AMPERSAND] +char \x27 ( 3 6 ) # 27 â ¤ ' [APOSTROPHE] +char \x28 ( 23 56 ) # 28 â ¶ ( [LEFT PARENTHESIS] +char \x29 ( 23 56 ) # 29 â ¶ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 2 6 ) # 2B â ¢ + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 2 56 ) # 2E â ² . [FULL STOP] +char \x2F ( 34 ) # 2F â Œ / [SOLIDUS] +char \x30 ( 2 45 ) # 30 â š 0 [DIGIT ZERO] +char \x31 (1 ) # 31 â  1 [DIGIT ONE] +char \x32 (12 ) # 32 â ƒ 2 [DIGIT TWO] +char \x33 (1 4 ) # 33 â ‰ 3 [DIGIT THREE] +char \x34 (1 45 ) # 34 â ™ 4 [DIGIT FOUR] +char \x35 (1 5 ) # 35 â ‘ 5 [DIGIT FIVE] +char \x36 (12 4 ) # 36 â ‹ 6 [DIGIT SIX] +char \x37 (12 45 ) # 37 â › 7 [DIGIT SEVEN] +char \x38 (12 5 ) # 38 â “ 8 [DIGIT EIGHT] +char \x39 ( 2 4 ) # 39 â Š 9 [DIGIT NINE] +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 2 6 ) # 3B â ¢ ; [SEMICOLON] +char \x3D ( 3 6 ) # 3D â ¤ = [EQUALS SIGN] +char \x3F ( 23 6 ) # 3F â ¦ ? [QUESTION MARK] +char \x40 ( 345 ) # 40 â œ @ [COMMERCIAL AT] +char \x41 (1 ) # 41 â  A [LATIN CAPITAL LETTER A] +char \x42 (12 ) # 42 â ƒ B [LATIN CAPITAL LETTER B] +char \x43 (1 4 ) # 43 â ‰ C [LATIN CAPITAL LETTER C] +char \x44 (1 45 ) # 44 â ™ D [LATIN CAPITAL LETTER D] +char \x45 (1 5 ) # 45 â ‘ E [LATIN CAPITAL LETTER E] +char \x46 (12 4 ) # 46 â ‹ F [LATIN CAPITAL LETTER F] +char \x47 (12 45 ) # 47 â › G [LATIN CAPITAL LETTER G] +char \x48 (12 5 ) # 48 â “ H [LATIN CAPITAL LETTER H] +char \x49 ( 2 4 ) # 49 â Š I [LATIN CAPITAL LETTER I] +char \x4A ( 2 45 ) # 4A â š J [LATIN CAPITAL LETTER J] +char \x4B (1 3 ) # 4B â … K [LATIN CAPITAL LETTER K] +char \x4C (123 ) # 4C â ‡ L [LATIN CAPITAL LETTER L] +char \x4D (1 34 ) # 4D â  M [LATIN CAPITAL LETTER M] +char \x4E (1 345 ) # 4E â  N [LATIN CAPITAL LETTER N] +char \x4F (1 3 5 ) # 4F â • O [LATIN CAPITAL LETTER O] +char \x50 (1234 ) # 50 â  P [LATIN CAPITAL LETTER P] +char \x51 (12345 ) # 51 â Ÿ Q [LATIN CAPITAL LETTER Q] +char \x52 (123 5 ) # 52 â — R [LATIN CAPITAL LETTER R] +char \x53 ( 234 ) # 53 â Ž S [LATIN CAPITAL LETTER S] +char \x54 ( 2345 ) # 54 â ž T [LATIN CAPITAL LETTER T] +char \x55 (1 3 6 ) # 55 â ¥ U [LATIN CAPITAL LETTER U] +char \x56 (123 6 ) # 56 â § V [LATIN CAPITAL LETTER V] +char \x57 ( 2 456 ) # 57 â º W [LATIN CAPITAL LETTER W] +char \x58 (1 34 6 ) # 58 â ­ X [LATIN CAPITAL LETTER X] +char \x59 (1 3456 ) # 59 â ½ Y [LATIN CAPITAL LETTER Y] +char \x5A (1 3 56 ) # 5A â µ Z [LATIN CAPITAL LETTER Z] +char \x5C (1 6 ) # 5C â ¡ \ [REVERSE SOLIDUS] +char \x5E ( 34 6 ) # 5E â ¬ ^ [CIRCUMFLEX ACCENT] +char \x5F ( 456 ) # 5F â ¸ _ [LOW LINE] +char \x60 ( 6 ) # 60 â   ` [GRAVE ACCENT] +char \x61 (1 ) # 61 â  a [LATIN SMALL LETTER A] +char \x62 (12 ) # 62 â ƒ b [LATIN SMALL LETTER B] +char \x63 (1 4 ) # 63 â ‰ c [LATIN SMALL LETTER C] +char \x64 (1 45 ) # 64 â ™ d [LATIN SMALL LETTER D] +char \x65 (1 5 ) # 65 â ‘ e [LATIN SMALL LETTER E] +char \x66 (12 4 ) # 66 â ‹ f [LATIN SMALL LETTER F] +char \x67 (12 45 ) # 67 â › g [LATIN SMALL LETTER G] +char \x68 (12 5 ) # 68 â “ h [LATIN SMALL LETTER H] +char \x69 ( 2 4 ) # 69 â Š i [LATIN SMALL LETTER I] +char \x6A ( 2 45 ) # 6A â š j [LATIN SMALL LETTER J] +char \x6B (1 3 ) # 6B â … k [LATIN SMALL LETTER K] +char \x6C (123 ) # 6C â ‡ l [LATIN SMALL LETTER L] +char \x6D (1 34 ) # 6D â  m [LATIN SMALL LETTER M] +char \x6E (1 345 ) # 6E â  n [LATIN SMALL LETTER N] +char \x6F (1 3 5 ) # 6F â • o [LATIN SMALL LETTER O] +char \x70 (1234 ) # 70 â  p [LATIN SMALL LETTER P] +char \x71 (12345 ) # 71 â Ÿ q [LATIN SMALL LETTER Q] +char \x72 (123 5 ) # 72 â — r [LATIN SMALL LETTER R] +char \x73 ( 234 ) # 73 â Ž s [LATIN SMALL LETTER S] +char \x74 ( 2345 ) # 74 â ž t [LATIN SMALL LETTER T] +char \x75 (1 3 6 ) # 75 â ¥ u [LATIN SMALL LETTER U] +char \x76 (123 6 ) # 76 â § v [LATIN SMALL LETTER V] +char \x77 ( 2 456 ) # 77 â º w [LATIN SMALL LETTER W] +char \x78 (1 34 6 ) # 78 â ­ x [LATIN SMALL LETTER X] +char \x79 (1 3456 ) # 79 â ½ y [LATIN SMALL LETTER Y] +char \x7A (1 3 56 ) # 7A â µ z [LATIN SMALL LETTER Z] +char \x7C ( 56 ) # 7C â ° | [VERTICAL LINE] +char \x7E ( 34 ) # 7E â Œ ~ [TILDE] +char \x80 (1 5 ) # 80 â ‘ [] +char \x92 ( 3 ) # 92 â „ [PRIVATE USE TWO] +char \xA0 ( ) # A0 â €   [NO-BREAK SPACE] +char \u2018 ( 3 ) # A1 â „ ‘ [LEFT SINGLE QUOTATION MARK] +char \u2019 ( 3 ) # A2 â „ ’ [RIGHT SINGLE QUOTATION MARK] +char \u20AC (1 5 ) # A4 â ‘ € [EURO SIGN] +char \xA7 ( 34 6 ) # A7 â ¬ § [SECTION SIGN] +char \xAB ( 23 6 ) # AB â ¦ « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xB0 ( 3 56 ) # B0 â ´ ° [DEGREE SIGN] +char \u0386 (1 ) # B6 â  Î† [GREEK CAPITAL LETTER ALPHA WITH TONOS] +char \xB7 ( 23 ) # B7 â † · [MIDDLE DOT] +char \u0388 (1 5 ) # B8 â ‘ Έ [GREEK CAPITAL LETTER EPSILON WITH TONOS] +char \u0389 ( 345 ) # B9 â œ Ή [GREEK CAPITAL LETTER ETA WITH TONOS] +char \u038A ( 2 4 ) # BA â Š Ί [GREEK CAPITAL LETTER IOTA WITH TONOS] +char \xBB ( 3 56 ) # BB â ´ » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \u038C (1 3 5 ) # BC â • ÎŒ [GREEK CAPITAL LETTER OMICRON WITH TONOS] +char \u038E (1 3456 ) # BE â ½ ÎŽ [GREEK CAPITAL LETTER UPSILON WITH TONOS] +char \u038F ( 2 45 ) # BF â š Î [GREEK CAPITAL LETTER OMEGA WITH TONOS] +char \u0390 ( 2 4 ) # C0 â Š Î [GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS] +char \u0391 (1 ) # C1 â  Î‘ [GREEK CAPITAL LETTER ALPHA] +char \u0392 (12 ) # C2 â ƒ Î’ [GREEK CAPITAL LETTER BETA] +char \u0393 (12 45 ) # C3 â › Γ [GREEK CAPITAL LETTER GAMMA] +char \u0394 (1 45 ) # C4 â ™ Δ [GREEK CAPITAL LETTER DELTA] +char \u0395 (1 5 ) # C5 â ‘ Ε [GREEK CAPITAL LETTER EPSILON] +char \u0396 (1 3 56 ) # C6 â µ Ζ [GREEK CAPITAL LETTER ZETA] +char \u0397 ( 345 ) # C7 â œ Η [GREEK CAPITAL LETTER ETA] +char \u0398 (1 456 ) # C8 â ¹ Θ [GREEK CAPITAL LETTER THETA] +char \u0399 ( 2 4 ) # C9 â Š Ι [GREEK CAPITAL LETTER IOTA] +char \u039A (1 3 ) # CA â … Κ [GREEK CAPITAL LETTER KAPPA] +char \u039B (123 ) # CB â ‡ Λ [GREEK CAPITAL LETTER LAMDA] +char \u039C (1 34 ) # CC â  Îœ [GREEK CAPITAL LETTER MU] +char \u039D (1 345 ) # CD â  Î [GREEK CAPITAL LETTER NU] +char \u039E (1 34 6 ) # CE â ­ Ξ [GREEK CAPITAL LETTER XI] +char \u039F (1 3 5 ) # CF â • Ο [GREEK CAPITAL LETTER OMICRON] +char \u03A0 (1234 ) # D0 â  Î  [GREEK CAPITAL LETTER PI] +char \u03A1 (123 5 ) # D1 â — Ρ [GREEK CAPITAL LETTER RHO] +char \u03A3 ( 234 ) # D3 â Ž Σ [GREEK CAPITAL LETTER SIGMA] +char \u03A4 ( 2345 ) # D4 â ž Τ [GREEK CAPITAL LETTER TAU] +char \u03A5 (1 3456 ) # D5 â ½ Î¥ [GREEK CAPITAL LETTER UPSILON] +char \u03A6 (12 4 ) # D6 â ‹ Φ [GREEK CAPITAL LETTER PHI] +char \u03A7 (12 5 ) # D7 â “ Χ [GREEK CAPITAL LETTER CHI] +char \u03A8 (1234 6 ) # D8 â ¯ Ψ [GREEK CAPITAL LETTER PSI] +char \u03A9 ( 2 45 ) # D9 â š Ω [GREEK CAPITAL LETTER OMEGA] +char \u03AC (1 ) # DC â  Î¬ [GREEK SMALL LETTER ALPHA WITH TONOS] +char \u03AD (1 5 ) # DD â ‘ έ [GREEK SMALL LETTER EPSILON WITH TONOS] +char \u03AE ( 345 ) # DE â œ ή [GREEK SMALL LETTER ETA WITH TONOS] +char \u03AF ( 2 4 ) # DF â Š ί [GREEK SMALL LETTER IOTA WITH TONOS] +char \u03B0 (1 3456 ) # E0 â ½ ΰ [GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS] +char \u03B1 (1 ) # E1 â  Î± [GREEK SMALL LETTER ALPHA] +char \u03B2 (12 ) # E2 â ƒ β [GREEK SMALL LETTER BETA] +char \u03B3 (12 45 ) # E3 â › γ [GREEK SMALL LETTER GAMMA] +char \u03B4 (1 45 ) # E4 â ™ δ [GREEK SMALL LETTER DELTA] +char \u03B5 (1 5 ) # E5 â ‘ ε [GREEK SMALL LETTER EPSILON] +char \u03B6 (1 3 56 ) # E6 â µ ζ [GREEK SMALL LETTER ZETA] +char \u03B7 ( 345 ) # E7 â œ η [GREEK SMALL LETTER ETA] +char \u03B8 (1 456 ) # E8 â ¹ θ [GREEK SMALL LETTER THETA] +char \u03B9 ( 2 4 ) # E9 â Š ι [GREEK SMALL LETTER IOTA] +char \u03BA (1 3 ) # EA â … κ [GREEK SMALL LETTER KAPPA] +char \u03BB (123 ) # EB â ‡ λ [GREEK SMALL LETTER LAMDA] +char \u03BC (1 34 ) # EC â  Î¼ [GREEK SMALL LETTER MU] +char \u03BD (1 345 ) # ED â  Î½ [GREEK SMALL LETTER NU] +char \u03BE (1 34 6 ) # EE â ­ ξ [GREEK SMALL LETTER XI] +char \u03BF (1 3 5 ) # EF â • ο [GREEK SMALL LETTER OMICRON] +char \u03C0 (1234 ) # F0 â  Ï€ [GREEK SMALL LETTER PI] +char \u03C1 (123 5 ) # F1 â — Ï [GREEK SMALL LETTER RHO] +char \u03C2 ( 234 ) # F2 â Ž Ï‚ [GREEK SMALL LETTER FINAL SIGMA] +char \u03C3 ( 234 ) # F3 â Ž σ [GREEK SMALL LETTER SIGMA] +char \u03C4 ( 2345 ) # F4 â ž Ï„ [GREEK SMALL LETTER TAU] +char \u03C5 (1 3456 ) # F5 â ½ Ï… [GREEK SMALL LETTER UPSILON] +char \u03C6 (12 4 ) # F6 â ‹ φ [GREEK SMALL LETTER PHI] +char \u03C7 (12 5 ) # F7 â “ χ [GREEK SMALL LETTER CHI] +char \u03C8 (1234 6 ) # F8 â ¯ ψ [GREEK SMALL LETTER PSI] +char \u03C9 ( 2 45 ) # F9 â š ω [GREEK SMALL LETTER OMEGA] +char \u03CA ( 2 4 ) # FA â Š ÏŠ [GREEK SMALL LETTER IOTA WITH DIALYTIKA] +char \u03CB (1 3456 ) # FB â ½ Ï‹ [GREEK SMALL LETTER UPSILON WITH DIALYTIKA] +char \u03CC (1 3 5 ) # FC â • ÏŒ [GREEK SMALL LETTER OMICRON WITH TONOS] +char \u03CD (1 3456 ) # FD â ½ Ï [GREEK SMALL LETTER UPSILON WITH TONOS] +char \u03CE ( 2 45 ) # FE â š ÏŽ [GREEK SMALL LETTER OMEGA WITH TONOS] +char \xA2 (1 4 ) # â ‰ ¢ [CENT SIGN] +char \xA5 (1 3456 ) # â ½ Â¥ [YEN SIGN] +char \xAA ( 4 6 ) # â ¨ ª [FEMININE ORDINAL INDICATOR] +char \xB5 (123456 ) # â ¿ µ [MICRO SIGN] +char \xB8 ( 45 ) # â ˜ ¸ [CEDILLA] +char \xBF ( 3 5 ) # â ” ¿ [INVERTED QUESTION MARK] +char \xC0 (123 56 ) # â · À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 (1 ) # â  Ã [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 (1 6 ) # â ¡  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 ( 345 ) # â œ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 ( 345 ) # â œ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 ( 2 4 6 ) # â ª Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( 345 ) # â œ Æ [LATIN CAPITAL LETTER AE] +char \xC7 (1234 6 ) # â ¯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( 234 6 ) # â ® È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 (123456 ) # â ¿ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA (12 6 ) # â £ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB (12 4 6 ) # â « Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xD1 (12 456 ) # â » Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD6 ( 2 4 6 ) # â ª Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xE0 (123 56 ) # â · à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 (1 ) # â  Ã¡ [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 6 ) # â ¡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 ( 345 ) # â œ ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 ( 345 ) # â œ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 ( 2 4 6 ) # â ª Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 ( 345 ) # â œ æ [LATIN SMALL LETTER AE] +char \xE7 (1234 6 ) # â ¯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 ) # â ® è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (123456 ) # â ¿ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (12 6 ) # â £ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 ) # â « ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC ( 2 4 ) # â Š ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED ( 2 4 ) # â Š í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 6 ) # â © î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 ) # â » ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF1 (12 456 ) # â » ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 (1 3 5 ) # â • ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 ( 34 6 ) # â ¬ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 456 ) # â ¹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 ( 2 4 6 ) # â ª õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 2 4 6 ) # â ª ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF9 (123 56 ) # â · ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA (1 3 6 ) # â ¥ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 56 ) # â ± û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 ) # â ³ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \u0192 (12 4 ) # â ‹ Æ’ [LATIN SMALL LETTER F WITH HOOK] +char \u1F00 (1 ) # â  á¼€ [GREEK SMALL LETTER ALPHA WITH PSILI] +char \u1F10 (1 5 ) # â ‘ á¼ [GREEK SMALL LETTER EPSILON WITH PSILI] +char \u1F20 ( 345 ) # â œ á¼  [GREEK SMALL LETTER ETA WITH PSILI] +char \u1F30 ( 2 4 ) # â Š á¼° [GREEK SMALL LETTER IOTA WITH PSILI] +char \u1F40 (1 3 5 ) # â • á½€ [GREEK SMALL LETTER OMICRON WITH PSILI] +char \u1F50 (1 3456 ) # â ½ á½ [GREEK SMALL LETTER UPSILON WITH PSILI] +char \u1F60 ( 2 45 ) # â š á½  [GREEK SMALL LETTER OMEGA WITH PSILI] +char \u1F90 ( 3456 ) # â ¼ á¾ [GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI] +char \u1FA0 ( 2 456 ) # â º á¾  [GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI] +char \u1FC3 ( 3456 ) # â ¼ ῃ [GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI] +char \u1FF3 ( 2 456 ) # â º ῳ [GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI] +char \u2010 ( 4 6 ) # â ¨ †[HYPHEN] +char \u2011 ( 4 6 ) # â ¨ ‑ [NON-BREAKING HYPHEN] +char \u2013 ( 3 6 ) # â ¤ – [EN DASH] + +include common.tti diff --git a/Tables/en-chess.tti b/Tables/en-chess.tti new file mode 100644 index 0000000000000000000000000000000000000000..94054962210c4390121302bef141649d994b3461 --- /dev/null +++ b/Tables/en-chess.tti @@ -0,0 +1,35 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This text subtable defines braille representations for the chess figures in +# terms of the letters that are used for them in the English language. + +# See: http://en.wikipedia.org/wiki/Chess_symbols_in_Unicode + +char \u2654 (1 3 7 ) # â¡… â™” [WHITE CHESS KING] +char \u2655 (12345 7 ) # â¡Ÿ ♕ [WHITE CHESS QUEEN] +char \u2656 (123 5 7 ) # â¡— â™– [WHITE CHESS ROOK] +char \u2657 (12 7 ) # ⡃ â™— [WHITE CHESS BISHOP] +char \u2658 (1 345 7 ) # ⡠♘ [WHITE CHESS KNIGHT] +char \u2659 (1234 7 ) # â¡ â™™ [WHITE CHESS PAWN] +char \u265A (1 3 ) # â … ♚ [BLACK CHESS KING] +char \u265B (12345 ) # â Ÿ â™› [BLACK CHESS QUEEN] +char \u265C (123 5 ) # â — ♜ [BLACK CHESS ROOK] +char \u265D (12 ) # â ƒ â™ [BLACK CHESS BISHOP] +char \u265E (1 345 ) # â  â™ž [BLACK CHESS KNIGHT] +char \u265F (1234 ) # â  â™Ÿ [BLACK CHESS PAWN] diff --git a/Tables/en-na-ascii.tti b/Tables/en-na-ascii.tti new file mode 100644 index 0000000000000000000000000000000000000000..545a5dbe1dba9adfb0fa71be1d937f46910487ec --- /dev/null +++ b/Tables/en-na-ascii.tti @@ -0,0 +1,63 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable defines the braille representations that are used +# by English-speaking North American users for the ASCII character set. + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# the numbers 0-9 are represented using the Nemeth (lower numbers) scheme +include numbers-nemeth.tti + +char \x20 ( ) # â € [SPACE] +char \x21 ( 234 6 ) # â ® ! [EXCLAMATION MARK] +char \x22 ( 5 ) # â  " [QUOTATION MARK] +char \x23 ( 3456 ) # â ¼ # [NUMBER SIGN] +char \x24 (12 4 6 ) # â « $ [DOLLAR SIGN] +char \x25 (1 4 6 ) # â © % [PERCENT SIGN] +char \x26 (1234 6 ) # â ¯ & [AMPERSAND] +char \x27 ( 3 ) # â „ ' [APOSTROPHE] +char \x28 (123 56 ) # â · ( [LEFT PARENTHESIS] +char \x29 ( 23456 ) # â ¾ ) [RIGHT PARENTHESIS] +char \x2A (1 6 ) # â ¡ * [ASTERISK] +char \x2B ( 34 6 ) # â ¬ + [PLUS SIGN] +char \x2C ( 6 ) # â   , [COMMA] +char \x2D ( 3 6 ) # â ¤ - [HYPHEN-MINUS] +char \x2E ( 4 6 ) # â ¨ . [FULL STOP] +char \x2F ( 34 ) # â Œ / [SOLIDUS] +# Hindu-Arabic numerals # 30-39 +char \x3A (1 56 ) # â ± : [COLON] +char \x3B ( 56 ) # â ° ; [SEMICOLON] +char \x3C (12 6 ) # â £ < [LESS-THAN SIGN] +char \x3D (123456 ) # â ¿ = [EQUALS SIGN] +char \x3E ( 345 ) # â œ > [GREATER-THAN SIGN] +char \x3F (1 456 ) # â ¹ ? [QUESTION MARK] +char \x40 ( 4 7 ) # ⡈ @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B ( 2 4 67 ) # ⡪ [ [LEFT SQUARE BRACKET] +char \x5C (12 567 ) # ⡳ \ [REVERSE SOLIDUS] +char \x5D (12 4567 ) # â¡» ] [RIGHT SQUARE BRACKET] +char \x5E ( 45 7 ) # ⡘ ^ [CIRCUMFLEX ACCENT] +char \x5F ( 456 ) # â ¸ _ [LOW LINE] +char \x60 ( 4 ) # â ˆ ` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B ( 2 4 6 ) # â ª { [LEFT CURLY BRACKET] +char \x7C (12 56 ) # â ³ | [VERTICAL LINE] +char \x7D (12 456 ) # â » } [RIGHT CURLY BRACKET] +char \x7E ( 45 ) # â ˜ ~ [TILDE] diff --git a/Tables/en-nabcc.ttb b/Tables/en-nabcc.ttb new file mode 100644 index 0000000000000000000000000000000000000000..b3b305b4c342d56c57ded3dbd26daa20cebd327f --- /dev/null +++ b/Tables/en-nabcc.ttb @@ -0,0 +1,420 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - English (North American Braille Computer Code) + +# This is a description of the default text table used by BRLTTY. +# It's based on the North American Braille Computer Code, but defines the full +# Latin1 (ISO-8859-1) character set. + +# The 95 printable characters of the standard 7-bit US-ASCII character set +# (32-126) are identical to their representations within the North American +# Braille Computer Code (these are the only characters which the NABCC actually +# defines). Characters from literary braille, symbols from The Nemeth Braille +# Code for Mathematics and Science Notation, and a bit of human imagination +# have all been combined to create an easy-to-remember, one-to-one mapping +# between each character and its braille counterpart. All possible combinations +# involving only the original 6 braille dots are used, but that only allows for +# 64 out of the required 95 character representations. The presence or absence +# of dot 7 is used to differentiate between pairs of characters which either +# are very closely related in meaning or, in a few cases where a more intuitive +# reason couldn't be found, have a very close logical relationship within the +# US-ASCII code. Dot 8 isn't used at all. + +# The space and the 26 lowercase letters (a-z) are the same as in literary +# braille: + + #Hex Dots Dec Char Description +char \X20 ( ) # 32 space +char \X61 (1 ) # 97 a latin small letter a +char \X62 (12 ) # 98 b latin small letter b +char \X63 (1 4 ) # 99 c latin small letter c +char \X64 (1 45 ) # 100 d latin small letter d +char \X65 (1 5 ) # 101 e latin small letter e +char \X66 (12 4 ) # 102 f latin small letter f +char \X67 (12 45 ) # 103 g latin small letter g +char \X68 (12 5 ) # 104 h latin small letter h +char \X69 ( 2 4 ) # 105 i latin small letter i +char \X6A ( 2 45 ) # 106 j latin small letter j +char \X6B (1 3 ) # 107 k latin small letter k +char \X6C (123 ) # 108 l latin small letter l +char \X6D (1 34 ) # 109 m latin small letter m +char \X6E (1 345 ) # 110 n latin small letter n +char \X6F (1 3 5 ) # 111 o latin small letter o +char \X70 (1234 ) # 112 p latin small letter p +char \X71 (12345 ) # 113 q latin small letter q +char \X72 (123 5 ) # 114 r latin small letter r +char \X73 ( 234 ) # 115 s latin small letter s +char \X74 ( 2345 ) # 116 t latin small letter t +char \X75 (1 3 6 ) # 117 u latin small letter u +char \X76 (123 6 ) # 118 v latin small letter v +char \X77 ( 2 456 ) # 119 w latin small letter w +char \X78 (1 34 6 ) # 120 x latin small letter x +char \X79 (1 3456 ) # 121 y latin small letter y +char \X7A (1 3 56 ) # 122 z latin small letter z + +# The 26 uppercase letters (A-Z) are the same as their lowercase counterparts +# except that dot 7 is added: + + #Hex Dots Dec Char Description +char \X41 (1 7 ) # 65 A latin capital letter a +char \X42 (12 7 ) # 66 B latin capital letter b +char \X43 (1 4 7 ) # 67 C latin capital letter c +char \X44 (1 45 7 ) # 68 D latin capital letter d +char \X45 (1 5 7 ) # 69 E latin capital letter e +char \X46 (12 4 7 ) # 70 F latin capital letter f +char \X47 (12 45 7 ) # 71 G latin capital letter g +char \X48 (12 5 7 ) # 72 H latin capital letter h +char \X49 ( 2 4 7 ) # 73 I latin capital letter i +char \X4A ( 2 45 7 ) # 74 J latin capital letter j +char \X4B (1 3 7 ) # 75 K latin capital letter k +char \X4C (123 7 ) # 76 L latin capital letter l +char \X4D (1 34 7 ) # 77 M latin capital letter m +char \X4E (1 345 7 ) # 78 N latin capital letter n +char \X4F (1 3 5 7 ) # 79 O latin capital letter o +char \X50 (1234 7 ) # 80 P latin capital letter p +char \X51 (12345 7 ) # 81 Q latin capital letter q +char \X52 (123 5 7 ) # 82 R latin capital letter r +char \X53 ( 234 7 ) # 83 S latin capital letter s +char \X54 ( 2345 7 ) # 84 T latin capital letter t +char \X55 (1 3 67 ) # 85 U latin capital letter u +char \X56 (123 67 ) # 86 V latin capital letter v +char \X57 ( 2 4567 ) # 87 W latin capital letter w +char \X58 (1 34 67 ) # 88 X latin capital letter x +char \X59 (1 34567 ) # 89 Y latin capital letter y +char \X5A (1 3 567 ) # 90 Z latin capital letter z + +# The 10 decimal digits (0-9) are the same as in the Nemeth Code: + + #Hex Dots Dec Char Description +char \X30 ( 3 56 ) # 48 0 digit zero +char \X31 ( 2 ) # 49 1 digit one +char \X32 ( 23 ) # 50 2 digit two +char \X33 ( 2 5 ) # 51 3 digit three +char \X34 ( 2 56 ) # 52 4 digit four +char \X35 ( 2 6 ) # 53 5 digit five +char \X36 ( 23 5 ) # 54 6 digit six +char \X37 ( 23 56 ) # 55 7 digit seven +char \X38 ( 23 6 ) # 56 8 digit eight +char \X39 ( 3 5 ) # 57 9 digit nine + +# Common symbols used within mathematical expressions by popular computer +# programming languages are the same as in the Nemeth Code: + + #Hex Dots Dec Char Description +char \X2E ( 4 6 ) # 46 . full stop +char \X2B ( 34 6 ) # 43 + plus sign +char \X2D ( 3 6 ) # 45 - hyphen-minus +char \X2A (1 6 ) # 42 * asterisk +char \X2F ( 34 ) # 47 / solidus +char \X28 (123 56 ) # 40 ( left parenthesis +char \X29 ( 23456 ) # 41 ) right parenthesis + +# With all of these major considerations having been taken into account, +# convenient representations were still available, and are used, for some of +# the remaining characters: + + #Hex Dots Dec Char Description +char \X26 (1234 6 ) # 38 & ampersand +char \X23 ( 3456 ) # 35 # number sign + +# The remaining characters are what they are. Dot 7 isn't used either within +# the number block (32-63) or, with the exception of the DEL control character +# (127), within the lowercase block (96-127). With the exception of the +# underscore (95), dot 7 is used for every character within the uppercase block +# (64-95). Adding dot 7 to any character within the lowercase block (96-127) +# yields its corresponding character within the uppercase block (64-95) except +# that removing dot 7 from the DEL control character yields the underscore. + + #Hex Dots Dec Char Description +char \X2C ( 6 ) # 44 , comma +char \X3B ( 56 ) # 59 ; semicolon +char \X3A (1 56 ) # 58 : colon +char \X21 ( 234 6 ) # 33 ! exclamation mark +char \X3F (1 456 ) # 63 ? question mark +char \X22 ( 5 ) # 34 " quotation mark +char \X27 ( 3 ) # 39 ' apostrophe +char \X60 ( 4 ) # 96 ` grave accent +char \X5E ( 45 7 ) # 94 ^ circumflex accent +char \X7E ( 45 ) # 126 ~ tilde +char \X5B ( 2 4 67 ) # 91 [ left square bracket +char \X5D (12 4567 ) # 93 ] right square bracket +char \X7B ( 2 4 6 ) # 123 { left curly bracket +char \X7D (12 456 ) # 125 } right curly bracket +char \X3D (123456 ) # 61 = equals sign +char \X3C (12 6 ) # 60 < less-than sign +char \X3E ( 345 ) # 62 > greater-than sign +char \X24 (12 4 6 ) # 36 $ dollar sign +char \X25 (1 4 6 ) # 37 % percent sign +char \X40 ( 4 7 ) # 64 @ commercial at +char \X7C (12 56 ) # 124 | vertical line +char \X5C (12 567 ) # 92 \ reverse solidus +char \X5F ( 456 ) # 95 _ low line + +# Each of the characters within the basic control character block (0-31) is the +# same as its corresponding character within both the uppercase block (64-95) +# and the lowercase block (96-127) except that dots 7 and 8 are both used. + + #Hex Dots Dec Char Description +char \X00 ( 4 78) # 0 ^@ null +char \X01 (1 78) # 1 ^A start of heading +char \X02 (12 78) # 2 ^B start of text +char \X03 (1 4 78) # 3 ^C end of text +char \X04 (1 45 78) # 4 ^D end of transmission +char \X05 (1 5 78) # 5 ^E enquiry +char \X06 (12 4 78) # 6 ^F acknowledge +char \X07 (12 45 78) # 7 ^G bell +char \X08 (12 5 78) # 8 ^H backspace +char \X09 ( 2 4 78) # 9 ^I horizontal tabulation +char \X0A ( 2 45 78) # 10 ^J line feed +char \X0B (1 3 78) # 11 ^K vertical tabulation +char \X0C (123 78) # 12 ^L form feed +char \X0D (1 34 78) # 13 ^M carriage return +char \X0E (1 345 78) # 14 ^N shift out +char \X0F (1 3 5 78) # 15 ^O shift in +char \X10 (1234 78) # 16 ^P data link escape +char \X11 (12345 78) # 17 ^Q device control one +char \X12 (123 5 78) # 18 ^R device control two +char \X13 ( 234 78) # 19 ^S device control three +char \X14 ( 2345 78) # 20 ^T device control four +char \X15 (1 3 678) # 21 ^U negative acknowledge +char \X16 (123 678) # 22 ^V synchronous idle +char \X17 ( 2 45678) # 23 ^W end of transmission block +char \X18 (1 34 678) # 24 ^X cancel +char \X19 (1 345678) # 25 ^Y end of medium +char \X1A (1 3 5678) # 26 ^Z substitute +char \X1B ( 2 4 678) # 27 ^[ escape +char \X1C (12 5678) # 28 ^\ file separator +char \X1D (12 45678) # 29 ^] group separator +char \X1E ( 45 78) # 30 ^^ record separator +char \X1F ( 45678) # 31 ^_ unit separator + +# Each of the characters within the extended control character block (128-159) +# is the same as its corresponding character within the basic control character +# block (0-31) except that only dot 8 is used. + + #Hex Dots Dec Char Description +char \X80 ( 4 8) # 128 ~@ +char \X81 (1 8) # 129 ~A +char \X82 (12 8) # 130 ~B break permitted here +char \X83 (1 4 8) # 131 ~C no break here +char \X84 (1 45 8) # 132 ~D +char \X85 (1 5 8) # 133 ~E next line +char \X86 (12 4 8) # 134 ~F start of selected area +char \X87 (12 45 8) # 135 ~G end of selected area +char \X88 (12 5 8) # 136 ~H character tabulation set +char \X89 ( 2 4 8) # 137 ~I character tabulation with justification +char \X8A ( 2 45 8) # 138 ~J line tabulation set +char \X8B (1 3 8) # 139 ~K partial line down +char \X8C (123 8) # 140 ~L partial line up +char \X8D (1 34 8) # 141 ~M reverse line feed +char \X8E (1 345 8) # 142 ~N single shift two +char \X8F (1 3 5 8) # 143 ~O single shift three +char \X90 (1234 8) # 144 ~P device control string +char \X91 (12345 8) # 145 ~Q private use one +char \X92 (123 5 8) # 146 ~R private use two +char \X93 ( 234 8) # 147 ~S set transmit state +char \X94 ( 2345 8) # 148 ~T cancel character +char \X95 (1 3 6 8) # 149 ~U message waiting +char \X96 (123 6 8) # 150 ~V start of guarded area +char \X97 ( 2 456 8) # 151 ~W end of guarded area +char \X98 (1 34 6 8) # 152 ~X start of string +char \X99 (1 3456 8) # 153 ~Y +char \X9A (1 3 56 8) # 154 ~Z single character introducer +char \X9B ( 2 4 6 8) # 155 ~[ control sequence introducer +char \X9C (12 56 8) # 156 ~\ string terminator +char \X9D (12 456 8) # 157 ~] operating system command +char \X9E ( 45 8) # 158 ~^ privacy message +char \X9F ( 456 8) # 159 ~_ application program command + +# Representations for the uppercase accented letters are drawn from the +# remaining combinations which use both dots 7 and 8. The representation for a +# lowercase accented letter is the same as its uppercase counterpart except +# that dot 7 isn't used. This scheme retains the use of dot 7 as the modifier +# for a capitalized letter. The only exception to these rules is that, due to +# the nature of the Latin1 character set, the German lowercase double-s is +# treated as though it were an uppercase y-dieresis (neither has an uppercase +# definition). These representations have been gathered, as much as possible, +# into logical groupings. + +# The 5 letters with a circumflex accent (^) use the [1-5] dot combinations: + + #Hex Dots Dec Char Description +char \XC2 ( 2 78) # 194  latin capital letter a with circumflex +char \XCA ( 23 78) # 202 Ê latin capital letter e with circumflex +char \XCE ( 2 5 78) # 206 ÃŽ latin capital letter i with circumflex +char \XD4 ( 2 5678) # 212 Ô latin capital letter o with circumflex +char \XDB ( 2 678) # 219 Û latin capital letter u with circumflex +char \XE2 ( 2 8) # 226 â latin small letter a with circumflex +char \XEA ( 23 8) # 234 ê latin small letter e with circumflex +char \XEE ( 2 5 8) # 238 î latin small letter i with circumflex +char \XF4 ( 2 56 8) # 244 ô latin small letter o with circumflex +char \XFB ( 2 6 8) # 251 û latin small letter u with circumflex + +# The 5 letters with a grave accent (`) use the [6-0] dot combinations: + + #Hex Dots Dec Char Description +char \XC0 ( 23 5 78) # 192 À latin capital letter a with grave +char \XC8 ( 23 5678) # 200 È latin capital letter e with grave +char \XCC ( 23 678) # 204 ÃŒ latin capital letter i with grave +char \XD2 ( 3 5 78) # 210 Ã’ latin capital letter o with grave +char \XD9 ( 3 5678) # 217 Ù latin capital letter u with grave +char \XE0 ( 23 5 8) # 224 à latin small letter a with grave +char \XE8 ( 23 56 8) # 232 è latin small letter e with grave +char \XEC ( 23 6 8) # 236 ì latin small letter i with grave +char \XF2 ( 3 5 8) # 242 ò latin small letter o with grave +char \XF9 ( 3 56 8) # 249 ù latin small letter u with grave + +# The 6 letters with an acute accent (') use the [a-f] dot combinations with +# dots 3 and 6 added: + + #Hex Dots Dec Char Description +char \XC1 (1 678) # 193 à latin capital letter a with acute +char \XC9 (12 678) # 201 É latin capital letter e with acute +char \XCD (1 4 678) # 205 à latin capital letter i with acute +char \XD3 (1 45678) # 211 Ó latin capital letter o with acute +char \XDA (1 5678) # 218 Ú latin capital letter u with acute +char \XDD (12 4 678) # 221 à latin capital letter y with acute +char \XE1 (1 6 8) # 225 á latin small letter a with acute +char \XE9 (12 6 8) # 233 é latin small letter e with acute +char \XED (1 4 6 8) # 237 í latin small letter i with acute +char \XF3 (1 456 8) # 243 ó latin small letter o with acute +char \XFA (1 56 8) # 250 ú latin small letter u with acute +char \XFD (12 4 6 8) # 253 ý latin small letter y with acute + +# The 6 letters with a dieresis accent (") use the [f-j] dot combinations with +# dots 3 and 6 added, and the number sign (because it fits the sequence +# reasonably well): + + #Hex Dots Dec Char Description +char \XC4 (1234 678) # 196 Ä latin capital letter a with diaeresis +char \XCB (12345678) # 203 Ë latin capital letter e with diaeresis +char \XCF (123 5678) # 207 à latin capital letter i with diaeresis +char \XD6 ( 234 678) # 214 Ö latin capital letter o with diaeresis +char \XDC ( 2345678) # 220 Ãœ latin capital letter u with diaeresis +char \XE4 (1234 6 8) # 228 ä latin small letter a with diaeresis +char \XEB (123456 8) # 235 ë latin small letter e with diaeresis +char \XEF (123 56 8) # 239 ï latin small letter i with diaeresis +char \XF6 ( 234 6 8) # 246 ö latin small letter o with diaeresis +char \XFC ( 23456 8) # 252 ü latin small letter u with diaeresis +char \XFF ( 3456 8) # 255 ÿ latin small letter y with diaeresis + +# There is no uppercase y-dieresis in the Latin1 character set. The German +# lowercase double-s, which also doesn't have an uppercase counterpart in the +# Latin1 character set, uses its representation: + + #Hex Dots Dec Char Description +char \XDF ( 345678) # 223 ß latin small letter sharp s + +# The remaining accented letters are: + + #Hex Dots Dec Char Description +char \XC3 ( 5 78) # 195 à latin capital letter a with tilde +char \XD1 ( 4 678) # 209 Ñ latin capital letter n with tilde +char \XD5 ( 5678) # 213 Õ latin capital letter o with tilde +char \XC5 ( 345 78) # 197 Ã… latin capital letter a with ring above +char \XC7 ( 34 678) # 199 Ç latin capital letter c with cedilla +char \XD8 ( 34 78) # 216 Ø latin capital letter o with stroke +char \XC6 ( 3 78) # 198 Æ latin capital letter ae +char \XD0 ( 678) # 208 à latin capital letter eth +char \XDE ( 3 678) # 222 Þ latin capital letter thorn +char \XE3 ( 5 8) # 227 ã latin small letter a with tilde +char \XF1 ( 4 6 8) # 241 ñ latin small letter n with tilde +char \XF5 ( 56 8) # 245 õ latin small letter o with tilde +char \XE5 ( 345 8) # 229 Ã¥ latin small letter a with ring above +char \XE7 ( 34 6 8) # 231 ç latin small letter c with cedilla +char \XF8 ( 34 8) # 248 ø latin small letter o with stroke +char \XE6 ( 3 8) # 230 æ latin small letter ae +char \XF0 ( 6 8) # 240 ð latin small letter eth +char \XFE ( 3 6 8) # 254 þ latin small letter thorn + +# Some characters are the same as other characters which they resemble but with +# dot 7 added: + + #Hex Dots Dec Char Description +char \XAD ( 3 67 ) # 173 ­ soft hyphen +char \XAB (12 67 ) # 171 « left-pointing double angle quotation mark +char \XBB ( 345 7 ) # 187 » right-pointing double angle quotation mark +char \XA6 (1 567 ) # 166 ¦ broken bar +char \XB9 ( 2 7 ) # 185 ¹ superscript one +char \XB2 ( 23 7 ) # 178 ² superscript two +char \XB3 ( 2 5 7 ) # 179 ³ superscript three +char \XB1 ( 34 67 ) # 177 ± plus-minus sign +char \XD7 (1 67 ) # 215 × multiplication sign +char \XF7 ( 34 7 ) # 247 ÷ division sign +char \XB7 ( 4 67 ) # 183 · middle dot +char \XA1 ( 234 67 ) # 161 ¡ inverted exclamation mark +char \XBF (1 4567 ) # 191 ¿ inverted question mark +char \XA2 (12 4 67 ) # 162 ¢ cent sign +char \XA3 ( 34567 ) # 163 £ pound sign + +# A few more characters follow this same convention but their relationships +# to their base characters is a bit obscure: + + #Hex Dots Dec Char Description +char \XA4 (1 4 67 ) # 164 ¤ currency sign +char \XA5 (1234 67 ) # 165 Â¥ yen sign + +# Some characters are represented by the first letters of their names lowered +# by one row of dots: + + #Hex Dots Dec Char Description +char \XAC ( 2 567 ) # 172 ¬ not sign +char \XB6 ( 23 5 7 ) # 182 ¶ pilcrow sign +char \XA9 ( 23 567 ) # 169 © copyright sign +char \XAE ( 23 67 ) # 174 ® registered sign +char \XA7 ( 3 5 7 ) # 167 § section sign +char \XB0 ( 3 567 ) # 176 ° degree sign + +# The three fraction characters use combinations of dots 1 and 4 (which +# progress from left to right as the value of the fraction increases) together +# with dots 2,3,5,6,7: + + #Hex Dots Dec Char Description +char \XBC (123 567 ) # 188 ¼ vulgar fraction one quarter +char \XBD (1234567 ) # 189 ½ vulgar fraction one half +char \XBE ( 234567 ) # 190 ¾ vulgar fraction three quarters + +# Each of the three extended accent characters is the same as its conventional +# compose character but with dot 7 added: + + #Hex Dots Dec Char Description +char \XB4 ( 3 7 ) # 180 ´ acute accent +char \XB8 ( 67 ) # 184 ¸ cedilla +char \XA8 ( 5 7 ) # 168 ¨ diaeresis + +# The two gender symbols are: + + #Hex Dots Dec Char Description +char \XBA ( 7 ) # 186 º masculine ordinal indicator +char \XAA ( 8) # 170 ª feminine ordinal indicator + +# The three remaining characters are: + + #Hex Dots Dec Char Description +char \XAF ( 2 67 ) # 175 ¯ macron +char \XB5 ( 567 ) # 181 µ micro sign +char \XA0 ( 78) # 160 ~ no-break space + +# The nonbreaking space is dots 7 and 8 because this presents a sequence of +# nonbreaking spaces as a smooth low line segment. + + #Hex Dots Dec Char Description +char \X7F ( 4567 ) # 127 ^? delete + +include common.tti diff --git a/ContractionTables/en-uebc-g2.ctb b/Tables/en-ueb-g2.ctb similarity index 87% rename from ContractionTables/en-uebc-g2.ctb rename to Tables/en-ueb-g2.ctb index 31c799fe69a3077f1bc6391dec5d9878d2b14de7..b604811e1a424267cd2997e07d58964bea160514 100644 --- a/ContractionTables/en-uebc-g2.ctb +++ b/Tables/en-ueb-g2.ctb @@ -2,20 +2,21 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# 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://mielke.cc/brltty/ # # This software is maintained by Dave Mielke . ############################################################################### -#Unified English Braille Code, brltty grade 2 contraction table +# BRLTTY Contraction Table - Unified English Braille (grade 2) #By Michael Curran #This is by no means complete, but at least all the important ascii symbols and general grade 2 contractions are here. @@ -220,7 +221,6 @@ word themselves 2346-134-1236-234 contraction themvs always their 456-2346 always there 5-2346 -sufword time 5-2345 word these 45-2346 always through 5-1456 always together 2345-1245-1235 @@ -261,6 +261,7 @@ contraction yrvs #Smaller contractions midendword ally 6-13456 midendword ance 46-15 +midendword ence 56-15 always ever 5-15 always for 123456 midendword ful 56-123 @@ -269,6 +270,7 @@ midendword ity 56-13456 midendword less 46-234 always many 456-134 midendword ment 56-2345 +midendword eness 15-56-234 midendword iness 24-56-234 midendword ness 56-234 midendword ong 56-1245 @@ -279,16 +281,20 @@ always part 5-1234 always right 5-1235 midendword sion 46-1345 always the 2346 +always time 5-2345 midendword tion 56-1345 #Smallist contractions always and 12346 always ar 345 +midword bb 23 +midword cc 25 always ch 16 midword ea 2 always ed 1246 always en 26 always er 12456 +midword ff 235 midword gg 2356 always gh 126 always in 35 @@ -314,60 +320,16 @@ always 7 1245 always 8 125 always 9 24 always 0 245 -always a 1 -always A 1 -always b 12 -always B 12 -always c 14 -always C 14 -always d 145 -always D 145 -always e 15 -always E 15 -always f 124 -always F 124 -always g 1245 -always G 1245 -always h 125 -always H 125 -always i 24 -always I 24 -always j 245 -always J 245 -always k 13 -always K 13 -always l 123 -always L 123 -always m 134 -always M 134 -always n 1345 -always N 1345 -always o 135 -always O 135 -always p 1234 -always P 1234 -always q 12345 -always Q 12345 -always r 1235 -always R 1235 -always s 234 -always S 234 -always t 2345 -always T 2345 -always u 136 -always U 136 -always v 1236 -always V 1236 -always w 2456 -always W 2456 -always x 1346 -always X 1346 -always y 13456 -always Y 13456 -always z 1356 -always Z 1356 +include letters-latin.cti always " 6-2356 always ' 3 +endword 'd 3-145 +endword 'll 3-123-123 +endword 'm 3-134 +endword 're 3-1235-15 +endword 's 3-234 +endword 't 3-2345 +endword 've 3-1236-15 always / 456-34 always & 4-12346 always * 5-35 diff --git a/ContractionTables/en-us-g2.ctb b/Tables/en-us-g2.ctb similarity index 89% rename from ContractionTables/en-us-g2.ctb rename to Tables/en-us-g2.ctb index 9c6a5fcd07d666c5086000d7482d07351a8e72b9..d7bb3107ba2fa4bccf74440b879f502f9cefc7e9 100644 --- a/ContractionTables/en-us-g2.ctb +++ b/Tables/en-us-g2.ctb @@ -2,23 +2,26 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# 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://mielke.cc/brltty/ # # This software is maintained by Dave Mielke . ############################################################################### -# U.S. English Grade 2 Braille Contraction Table +# BRLTTY Contraction Table - American English (grade 2) # Created by John Boyer . class vowel aeiouyAEIOUY +class consonent bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ +class o oO numsign 3456 number sign, just one operand letsign 56 @@ -43,7 +46,6 @@ always 0 245 lastlargesign a 1 always a 1 always A 1 -sufword abalone = always about 1-12 contraction ab always above 1-12-1236 @@ -57,6 +59,7 @@ endword aed 1-1246 word aforesaid 1-123456-15-234-145 always after 1-124 contraction af +sufword aftereffect 1-124-2345-12456-15-235-15-14-2345 sufword afternoon 1-124-1345 afternoons contraction afn always afterward 1-124-2456 @@ -66,6 +69,7 @@ contraction ag word against 1-1245-34 contraction agst endword agery = orangery +word alittle = midendword ally 6-13456 word almost 1-123-134 contraction alm @@ -81,12 +85,14 @@ word always 1-123-2456 contraction alw midendword ance 46-15 largesign and 12346 +sufword anemone = midword angh = Shanghai begword antenn 1-1345-2345-26-1345 antenna begword anterio 1-1345-2345-12456-24-135 anterior begword aqued = aqueduct always ar 345 word aright 1-5-1235 +always arubber 1-1235-136-23-12456 indiarubber word as 1356 contraction as midendword ation 6-1345 @@ -96,10 +102,12 @@ begword auto = autofocus # the letter b always b 12 always B 12 +always balone = abalone baloney midword bb 23 midendword bble 12-3456 lowword be 23 begword be 23 +sufword be\s-\s 12-15-36-36 begword bea 12-2 always bear 12-15-345 begword beatif 23-1-2345-24-124 @@ -119,8 +127,10 @@ always beer 12-15-12456 word beg = begword begg 12-15-2356 word begs = -begword bei = beijing -always being 23-346 +begword beig = beige +word bein' 23-24-1345-3 +word beijing = +word beirut = sufword belch 12-15-123-16 begword beld = Beldon begword belf = belfry, belfast @@ -198,13 +208,16 @@ word but 12 always c 14 always C 14 begword cart 14-345-2345 carthorse +word carthage 14-345-1456-1-1245-15 midword cch 14-16 always chloro 16-123-135-1235-135 sufword citron = citronella sufword coed 14-135-1246 begword cofac = cofactor always cofound 14-135-124-46-145 +sufword colonel = begword com 36 +begword comingl 14-135-134-346-123 comingle sufword common 36-134-135-1345 commonest begword con 25 sufword conceive 25-14-1236 @@ -217,10 +230,12 @@ word concvth = sufword conceiving 25-14-1236-1245 word concvg = always cone 14-5-135 -sufword colonel = sufword conelrad = +sufword coney = +word conies = word cons 14-135-1345-234 sufword conundrum = +word cony = sufword coronel = always could 14-145 contraction cd @@ -268,6 +283,7 @@ always declaring 145-14-123-1245 contraction dclg begword deref = dereferencing begword dereg = deregulation +word deshabille = midword dd 256 midendword dday 145-5-145 midday begword dedic 145-1246-24-14 dedicated @@ -279,11 +295,12 @@ begword denu = denunciation begword dera = derail begword deri 145-15-1235-24 begword dero = derogatory +begword dingh 145-35-126 dinghy begword dinu 145-24-1345-136 begword dis 256 word disc = word discs = -always dish 145-24-146 +sufword dish 145-24-146 begword disha 256-125-1 dishabile begword dishear 256-125-15-345 disheartened begword disho 256-125-135 dishonor @@ -292,6 +309,9 @@ sufword disk = sufword dispirit 145-24-456-234 dispirited begword disul = disulfide word do 145 +before o begword dogg = +word doggo 145-135-2356-135 +sufword doolittle = always dumb = dumbbell # the letter e @@ -313,7 +333,10 @@ always ed 1246 always edic = edict Benedict sufword edition 15-145-24-56-1345 editions midword edo 15-145-135 +sufword torpedo 2345-135-1235-1234-1246-135 +sufword tuxedo 2345-136-1346-1246-135 always edraw = +always eever 15-15-1236-12456 Cheever word either 15-24 contraction ei word en = @@ -329,7 +352,9 @@ begword enor = enormous begword enou 15-1345-1256 lowword enough 26 word enough 26-1256-126 +sufword enough\s-\s 26-1256-126-36-36 begword enu 15-1345-136 +begword equino = equinox always er 12456 begword era = word eras 12456-1-234 @@ -349,11 +374,13 @@ always F 124 sufword falcon = falconer midword ff 235 always father 5-124 +sufword fed 124-1246 fedora always fein 124-15-35 Feingold always first 124-34 word fst = always fever 124-15-1236-12456 always ffor 124-123456 +sufword fiance = largesign for 123456 always fore 123456-15 begword forens 123456-26-234 forensic @@ -370,6 +397,7 @@ always funder 124-136-1345-145-12456 # the letter g always g 1245 always G 1245 +begword genealog 1245-26-15-1-123-135-1245 genealogy begword geo = geoengineering sufword geoff 1245-15-12356-124 Geoffrey midword gg 2356 @@ -386,8 +414,10 @@ sufword gnome = gnomedb word go 1245 always good 1245-145 contraction gd -begword gos = goshawk +begword gos = goshawk gosherd +word gosh 1245-135-146 word goshen 1245-135-146-26 +begword grapea = grapeade always great 1245-1235-2345 contraction grt sufword guenever 1245-136-26-15-1236-12456 @@ -417,6 +447,7 @@ sufword hmm = word himself 125-134-124 contraction hmf lowword his 236 +sufword his\s-\s 125-24-234-36-36 sufword horse = horseradish always hydro = @@ -431,13 +462,17 @@ begword immuno = immunofluorescence lowword in 35 word in = always in 35 +sufword in\s-\s 24-1345-36-36 begword incon 35-14-135-1345 incongruous begword indis 35-145-24-234 indistinct +begword iness 35-15-234-234 inessential, inessive always iness 24-56-234 +word ing 346 such as after a hyphen midendword ing 346 midword inga 35-1245-1 nightingale always ingar 35-1245-345 Weingarten midword ingi 35-1245-24 meningitis +endword ingin 346-35 swingin' midendword inging 346-346 bringing joinword into 35-235 always isomer 24-234-135-134-12456 @@ -466,10 +501,12 @@ midendword less 46-234 always letter 123-1235 contraction lr word like 123 +begword limea = limeade +word lingerie 123-35-1245-12456-24-15 always little 123-123 contraction ll always lord 5-123 -word lucknow 123-136-14-13-1345-246 +sufword lucknow 123-136-14-13-1345-246 # the letter m always m 134 @@ -492,6 +529,8 @@ sufword mistreat 134-24-234-2345-1235-2-2345 begword mistru = mistrust begword misty = mistyped word monetary 134-5-135-2345-345-13456 +word mongeese = +sufword mongoose = word more 134 always mother 5-134 always much 134-16 @@ -524,7 +563,7 @@ word nones 1345-5-135-234 word nonesuch 1345-5-135-234-16 word nonetheless 1345-5-135-2346-46-234 word noone 1345-135-5-135 -sufword nose = nosedive +begword nosediv = nosedive word not 1345 word noways = sufword nowhere 1345-135-5-156 @@ -548,8 +587,6 @@ midendword oned 135-1345-1246 always one 5-135 always aione = zabaione midendword mione = Hermione -always onem = phoneme -midendword onement 5-135-56-2345 atonement always onent 135-1345-26-2345 midendword oneous 135-1345-15-1256-234 erroneous always oner 135-1345-12456 @@ -562,6 +599,7 @@ endword onez = Ordonez midendword ong 56-1245 midendword ongen 135-1345-1245-26 uncongenial always oon = sooner +begword orangea = orangeade word ou = always ou 1256 midendword ound 46-145 @@ -570,6 +608,8 @@ always ourselves 1256-1235-1236-234 word ourvs = word out 1256 always ought 5-1256 +begword overea 135-1236-12456-15-1 overeat overeager overeasy +begword overear 135-1236-12456-15-345 overearnest always ow 246 word o'clock 135-3-14 @@ -579,6 +619,7 @@ always P 1234 always paid 1234-145 contraction pd begword palingen 1234-1-123-35-1245-26 palingenesis (new birth) +sufword panther 1234-1-1345-2346-1235 pantheresque always part 5-1234 begword parta 1234-345-2345-1 partake begword parto 1234-345-2345-135 @@ -600,8 +641,12 @@ sufword persevere 1234-12456-234-15-1236-12456-15 sufword persevered 1234-12456-234-15-1236-12456-1246 sufword perseverer 1234-12456-234-15-1236-12456-12456 sufword persevering 1234-12456-234-15-1236-12456-346 +sufword pest 1234-15-34 pesthouse always pher 1234-125-12456 cyphered begword pinea 1234-35-15-1 pineapple +word phoneme = +word phonemes = +begword phonemi = phonemic sufword poleax = begword portho = porthole begword potho = pothole pothook @@ -611,6 +656,7 @@ sufword predator 1234-1235-1246-1-2345-135-1235 always prof = begword proff 1234-1235-12356-124 proffer always profit 1234-1235-12356-24-2345 +word pulseaudio = # the letter q always q 12345 @@ -711,10 +757,12 @@ always severed 234-5-15-1246 always severer 234-5-15-12456 always severit 234-15-1236-12456-24-2345 always severity 234-15-1236-12456-56-13456 +begword shaked 146-1-13-15-145 shakedown word shall 146 word sh = always sh 146 always shaus = In German names +word shoshone 146-135-146-135-1345-15 always should 146-145 word shd = always shoulder 146-1256-123-145-12456 @@ -730,11 +778,13 @@ always some 5-234 midendword somed 234-135-134-1246 ransomed always somer 234-135-134-12456 somersault always someter 234-135-134-15-2345-12456 gasometer +always somever 234-135-134-5-15 always spirit 456-234 sufword squall = swually midendword ssword 234-234-45-2456 crossword endnum st 34 (first) word st = +word st. 34-256 Saint Street always st 34 always sth 234-1456 always sthe 234-2346 @@ -750,7 +800,9 @@ always shouse 234-125-1256-234-15 always ssh = always shood = word such 234-16 +before consonent sufword such 234-16 word sch = +sufword schofield 234-16-135-124-24-15-123-145 always sword = # the letter t @@ -801,16 +853,19 @@ always together 2345-1245-1235 contraction tgr word those 45-1456 begword trans = transtype +sufword tranship 2345-1235-1-1345-146-24-1234 # the letter u always u 136 always U 136 begword un = unameliorated begword unb = unblemished +begword underea 5-136-15-1 undereat +begword underear 5-136-15-345 begword undis = undisturbed -begword uneas = unease -begword uneat = uneaten -sufword unful = unfulfilled +begword unea = uneaten uneasy +begword unear 136-1345-15-345 unearth unearned +begword unful = unfulfilled word upon 45-136 Dupont word us 136 always under 5-136 @@ -827,6 +882,7 @@ begword vice = viceroy always w 2456 always W 2456 lowword was 356 +sufword was\s-\s 2456-1-234-36-36 word wh = always wh 156 midendword whart 2456-125-345-2345 Newhart @@ -835,6 +891,7 @@ midendword whouse 2456-125-1256-234-15 Newhouse begword widea = wideawake word will 2456 lowword were 2356 +sufword were\s-\s 2456-12456-15-36-36 always where 5-156 word whereupon 5-156-45-136 word wherever 156-12456-5-15 @@ -869,6 +926,14 @@ contraction yrvs always z 1356 always Z 1356 +# heim (a German syllable) should always be literal +midendword cheim = +midendword gheim = +midendword sheim = Hergesheimer Gundersheimer Rudisheim Weinsheimer +midendword theim = Altheimer (sic) +midendword wheim = +midendword stheim 34-125-15-24-134 Westheimer + always agosom = phagosome always ibosom = ribosome always omosom = chromosome @@ -955,7 +1020,7 @@ prepunc `` 236 always ` 4 midnum ^ 45 -always ^ 456-126 +always ^ 45 always ~ 4-156 repeatable ~~~ 4-156-4-156-4-156 @@ -982,24 +1047,24 @@ always ? 236 always ( 2356 always ) 2356 -always [ 456-12356 -always ] 456-23456 +always [ 6-2356 +always ] 2356-3 -always { 46-12356 -always } 46-23456 +always { 246 +always } 12456 -always # 3456 +always # 456-1456 midnum * 4-16 always * 35-35 -repeatable *** 16-16-16 +repeatable *** 35-35-35-35-35-35 midnum / 34 always / 456-34 -always % 4-356 +always % 4-25-1234 -always & 456-12346 +always & 4-12346 always @ 4-1 @@ -1007,19 +1072,23 @@ always \\ 456-16 always | 456-1256 -repeatable \s 0 -repeatable \t 0 +repeatable \s 0 space +repeatable \t 0 character tabulation repeatable \xa0 0 no break space +always \u00A9 45-14 copyright sign +always \u00AE 45-1235 registered sign +always \u2122 45-2345 trade mark sign + always -com = repeatable --- 36-36-36 always \s-\s 36-36 always \s-\scom 36-36-14-135-134 -always _ 78 -repeatable ___ 78-78-78 +always _ 46 +repeatable ___ 46-46-46 -repeatable === 46-13-46-13-46-13 +repeatable === 123456-123456-123456 # the hyphen always ­ 36 @@ -1091,9 +1160,9 @@ always þ 4-2345 [FE] lower t horn always ÿ 4-13456 [FF] lower y dieresis # mathematical symbols -always < 5-13 -always = 46-13 -always > 46-2 +always < 126 +always = 123456 +always > 345 midnum + 346 always + 346 midnum - 36 @@ -1101,7 +1170,7 @@ always - 36 always × 46-16 multiplication sign midnum ÷ 46-34 division sign begnum $ 256 -always $ 256-3456 +always $ 256 # other special characters always © 2356-6-14-2356 copyright @@ -1113,6 +1182,9 @@ always £ 4-123 pounds always Â¥ 4-13456 yen always µ 46-134 mu +# pseudo-words +word usenet = + # abbreviations word aarp = American Association of Retired Persons diff --git a/BrailleTables/text.identity.tbl b/Tables/en.ttb similarity index 62% rename from BrailleTables/text.identity.tbl rename to Tables/en.ttb index c4c91d411739babab2a4096bf4b1d92fa0034187..e80e3be7d95705ba75f5913a7e7232aeca3247fc 100644 --- a/BrailleTables/text.identity.tbl +++ b/Tables/en.ttb @@ -2,26 +2,20 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 2008-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# 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://mielke.cc/brltty/ # # This software is maintained by Dave Mielke . ############################################################################### -# BRLTTY Text Translation Table - Identity +# BRLTTY Text Table - English -dot 1 =bit01 -dot 2 =bit04 -dot 3 =bit10 -dot 7 =bit40 -dot 4 =bit02 -dot 5 =bit08 -dot 6 =bit20 -dot 8 =bit80 +include en-nabcc.ttb diff --git a/Tables/en_CA.ttb b/Tables/en_CA.ttb new file mode 100644 index 0000000000000000000000000000000000000000..f47622fe7cce3977c799531f49b4c9274b6528c6 --- /dev/null +++ b/Tables/en_CA.ttb @@ -0,0 +1,140 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - English (Canada) +# Dave Mielke + +# This text table implements North American style English braille, the +# additional letters of the French, German, and Italian alphabets, and +# easy-to-remember representations for many common extra symbols. + +# ASCII character representations as used by English-speaking North Americans +include en-na-ascii.tti + +# the control letters +char \x01 (1 78) # ⣠[START OF HEADING] +char \x02 (12 78) # ⣃ [START OF TEXT] +char \x03 (1 4 78) # ⣉ [END OF TEXT] +char \x04 (1 45 78) # ⣙ [END OF TRANSMISSION] +char \x05 (1 5 78) # ⣑ [ENQUIRY] +char \x06 (12 4 78) # ⣋ [ACKNOWLEDGE] +char \x07 (12 45 78) # ⣛ [BELL] +char \x08 (12 5 78) # ⣓ [BACKSPACE] +char \x09 ( 2 4 78) # ⣊ [CHARACTER TABULATION] +char \x0A ( 2 45 78) # ⣚ [LINE FEED (LF)] +char \x0B (1 3 78) # ⣅ [LINE TABULATION] +char \x0C (123 78) # ⣇ [FORM FEED (FF)] +char \x0D (1 34 78) # ⣠[CARRIAGE RETURN (CR)] +char \x0E (1 345 78) # ⣠[SHIFT OUT] +char \x0F (1 3 5 78) # ⣕ [SHIFT IN] +char \x10 (1234 78) # ⣠[DATA LINK ESCAPE] +char \x11 (12345 78) # ⣟ [DEVICE CONTROL ONE] +char \x12 (123 5 78) # ⣗ [DEVICE CONTROL TWO] +char \x13 ( 234 78) # ⣎ [DEVICE CONTROL THREE] +char \x14 ( 2345 78) # ⣞ [DEVICE CONTROL FOUR] +char \x15 (1 3 678) # ⣥ [NEGATIVE ACKNOWLEDGE] +char \x16 (123 678) # ⣧ [SYNCHRONOUS IDLE] +char \x17 ( 2 45678) # ⣺ [END OF TRANSMISSION BLOCK] +char \x18 (1 34 678) # ⣭ [CANCEL] +char \x19 (1 345678) # ⣽ [END OF MEDIUM] +char \x1A (1 3 5678) # ⣵ [SUBSTITUTE] + +# equivalents to \x2D [HYPHEN-MINUS] +char \xAD ( 3 6 ) # â ¤ ­ [SOFT HYPHEN] +char \u2010 ( 3 6 ) # â ¤ †[HYPHEN] +char \u2011 ( 3 6 ) # â ¤ ‑ [NON-BREAKING HYPHEN] +char \u2013 ( 3 6 ) # â ¤ – [EN DASH] +char \u2212 ( 3 6 ) # â ¤ − [MINUS SIGN] + +# equivalents to \x7C [VERTICAL LINE] +char \xA6 (12 56 ) # â ³ ¦ [BROKEN BAR] + +# symbols represented using Letters with dot 8 added +char \xA9 (1 4 8) # ⢉ © [COPYRIGHT SIGN] +char \xB0 (1 45 8) # ⢙ ° [DEGREE SIGN] +char \u20AC (1 5 8) # ⢑ € [EURO SIGN] +char \xB5 (1 34 8) # ⢠µ [MICRO SIGN] +char \xAC (1 345 8) # ⢠¬ [NOT SIGN] +char \xB6 (1234 8) # ⢠¶ [PILCROW SIGN] +char \xAE (123 5 8) # ⢗ ® [REGISTERED SIGN] +char \xA7 ( 234 8) # ⢎ § [SECTION SIGN] +char \xA5 (1 3456 8) # ⢽ Â¥ [YEN SIGN] + +# symbols represented using punctuation with dot 7 added +char \xA1 ( 234 67 ) # â¡® ¡ [INVERTED EXCLAMATION MARK] +char \xBF (1 4567 ) # ⡹ ¿ [INVERTED QUESTION MARK] +char \xB7 ( 4 67 ) # ⡨ · [MIDDLE DOT] +char \xAB (123 567 ) # â¡· « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBB ( 234567 ) # ⡾ » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xB1 ( 34 67 ) # ⡬ ± [PLUS-MINUS SIGN] +char \xD7 (1 67 ) # â¡¡ × [MULTIPLICATION SIGN] +char \xF7 ( 34 7 ) # â¡Œ ÷ [DIVISION SIGN] +char \u2260 (1234567 ) # â¡¿ ≠ [NOT EQUAL TO] +char \u2264 ( 345 7 ) # â¡œ ≤ [LESS-THAN OR EQUAL TO] +char \u2265 (12 67 ) # â¡£ ≥ [GREATER-THAN OR EQUAL TO] +char \xA2 (12 4 67 ) # â¡« ¢ [CENT SIGN] +char \xA3 ( 34567 ) # ⡼ £ [POUND SIGN] + +# French lowercase accented letters +char \xE7 (1234 6 8) # ⢯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE9 (123456 8) # ⢿ é [LATIN SMALL LETTER E WITH ACUTE] +char \xE0 (123 56 8) # ⢷ à [LATIN SMALL LETTER A WITH GRAVE] +char \xE8 ( 234 6 8) # ⢮ è [LATIN SMALL LETTER E WITH GRAVE] +char \xF9 ( 23456 8) # ⢾ ù [LATIN SMALL LETTER U WITH GRAVE] +char \xE2 (1 6 8) # ⢡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xEA (12 6 8) # ⢣ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEE (1 4 6 8) # ⢩ î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xF4 (1 456 8) # ⢹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xFB (1 56 8) # ⢱ û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xEB (12 4 6 8) # ⢫ ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEF (12 456 8) # ⢻ ï [LATIN SMALL LETTER I WITH DIAERESIS] + +# French uppercase accented letters +char \xC7 (1234 678) # ⣯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC9 (12345678) # ⣿ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xC0 (123 5678) # ⣷ À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC8 ( 234 678) # ⣮ È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xD9 ( 2345678) # ⣾ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xC2 (1 678) # ⣡  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xCA (12 678) # ⣣ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCE (1 4 678) # ⣩ ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xD4 (1 45678) # ⣹ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xDB (1 5678) # ⣱ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xCB (12 4 678) # ⣫ Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCF (12 45678) # ⣻ à [LATIN CAPITAL LETTER I WITH DIAERESIS] + +# German lowercase accented letters +char \xE4 ( 345 8) # ⢜ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xF6 ( 2 4 6 8) # ⢪ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xFC (12 56 8) # ⢳ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xDF ( 3456 8) # ⢼ ß [LATIN SMALL LETTER SHARP S] + +# German uppercase accented letters +char \xC4 ( 345 78) # ⣜ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xD6 ( 2 4 678) # ⣪ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xDC (12 5678) # ⣳ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] + +# Italian lowercase accented letters +char \xEC ( 34 8) # ⢌ ì [LATIN SMALL LETTER I WITH GRAVE] +char \xF2 ( 34 6 8) # ⢬ ò [LATIN SMALL LETTER O WITH GRAVE] + +# Italian uppercase accented letters +char \xCC ( 34 78) # ⣌ ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xD2 ( 34 678) # ⣬ Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] + +include common.tti diff --git a/Tables/en_UK.ttb b/Tables/en_UK.ttb new file mode 100644 index 0000000000000000000000000000000000000000..a41844018b08ed5ba27e6d57baa101d03fbc42ae --- /dev/null +++ b/Tables/en_UK.ttb @@ -0,0 +1,210 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - English (United Kingdom) + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# the standard representations for the Latin control characters +include control-latin.tti + +# generated by ttbtest: charset=iso-8859-1 +char \x00 ( 234 678) # 00 ⣮ [NULL] +# Latin control characters # 01-1A +char \x1B (123 5678) # 1B ⣷ [ESCAPE] +char \x1C ( 34 678) # 1C ⣬ [INFORMATION SEPARATOR FOUR] +char \x1D ( 2345678) # 1D ⣾ [INFORMATION SEPARATOR THREE] +char \x1E ( 678) # 1E ⣠ [INFORMATION SEPARATOR TWO] +char \x1F ( 5 78) # 1F ⣠[INFORMATION SEPARATOR ONE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 3456 ) # 21 â ¼ ! [EXCLAMATION MARK] +char \x22 ( 4 ) # 22 â ˆ " [QUOTATION MARK] +char \x23 ( 56 ) # 23 â ° # [NUMBER SIGN] +char \x24 ( 456 ) # 24 â ¸ $ [DOLLAR SIGN] +char \x25 ( 4 6 ) # 25 â ¨ % [PERCENT SIGN] +char \x26 (1234 6 ) # 26 â ¯ & [AMPERSAND] +char \x27 ( 3 ) # 27 â „ ' [APOSTROPHE] +char \x28 ( 45 ) # 28 â ˜ ( [LEFT PARENTHESIS] +char \x29 ( 345 ) # 29 â œ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 23 5 ) # 2B â – + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 2 56 ) # 2E â ² . [FULL STOP] +char \x2F ( 34 ) # 2F â Œ / [SOLIDUS] +char \x30 (123456 ) # 30 â ¿ 0 [DIGIT ZERO] +char \x31 (1 6 ) # 31 â ¡ 1 [DIGIT ONE] +char \x32 (12 6 ) # 32 â £ 2 [DIGIT TWO] +char \x33 (1 4 6 ) # 33 â © 3 [DIGIT THREE] +char \x34 (1 456 ) # 34 â ¹ 4 [DIGIT FOUR] +char \x35 (1 56 ) # 35 â ± 5 [DIGIT FIVE] +char \x36 (12 4 6 ) # 36 â « 6 [DIGIT SIX] +char \x37 (12 456 ) # 37 â » 7 [DIGIT SEVEN] +char \x38 (12 56 ) # 38 â ³ 8 [DIGIT EIGHT] +char \x39 ( 2 4 6 ) # 39 â ª 9 [DIGIT NINE] +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C ( 23 6 ) # 3C â ¦ < [LESS-THAN SIGN] +char \x3D ( 23 56 ) # 3D â ¶ = [EQUALS SIGN] +char \x3E ( 3 56 ) # 3E â ´ > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 ( 234 67 ) # 40 â¡® @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B (123 567 ) # 5B â¡· [ [LEFT SQUARE BRACKET] +char \x5C ( 34 67 ) # 5C ⡬ \ [REVERSE SOLIDUS] +char \x5D ( 234567 ) # 5D ⡾ ] [RIGHT SQUARE BRACKET] +char \x5E ( 67 ) # 5E â¡  ^ [CIRCUMFLEX ACCENT] +char \x5F ( 5 ) # 5F â  _ [LOW LINE] +char \x60 ( 234 6 ) # 60 â ® ` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B (123 56 ) # 7B â · { [LEFT CURLY BRACKET] +char \x7C ( 34 6 ) # 7C â ¬ | [VERTICAL LINE] +char \x7D ( 23456 ) # 7D â ¾ } [RIGHT CURLY BRACKET] +char \x7E ( 6 ) # 7E â   ~ [TILDE] +char \x7F ( 5 7 ) # 7F â¡ [DELETE] +char \x80 ( 2 67 ) # 80 â¡¢ [] +char \x81 (1 34 6 8) # 81 ⢭ [] +char \x82 ( 2 56 8) # 82 ⢲ [BREAK PERMITTED HERE] +char \x83 ( 2 5 8) # 83 ⢒ [NO BREAK HERE] +char \x84 ( 3 5 7 ) # 84 â¡” [] +char \x85 (1 8) # 85 ⢠[NEXT LINE (NEL)] +char \x86 ( 234 8) # 86 ⢎ [START OF SELECTED AREA] +char \x87 ( 2345 8) # 87 ⢞ [END OF SELECTED AREA] +char \x88 ( 3 56 8) # 88 ⢴ [CHARACTER TABULATION SET] +char \x89 (1 45 8) # 89 ⢙ [CHARACTER TABULATION WITH JUSTIFICATION] +char \x8A ( 23 5 8) # 8A ⢖ [LINE TABULATION SET] +char \x8B ( 345 78) # 8B ⣜ [PARTIAL LINE FORWARD] +char \x8C (1 5 8) # 8C ⢑ [PARTIAL LINE BACKWARD] +char \x8D ( 2 4 67 ) # 8D ⡪ [REVERSE LINE FEED] +char \x8E ( 4567 ) # 8E ⡸ [SINGLE SHIFT TWO] +char \x8F (12 4 67 ) # 8F â¡« [SINGLE SHIFT THREE] +char \x90 ( 23 567 ) # 90 ⡶ [DEVICE CONTROL STRING] +char \x91 ( 2 6 8) # 91 ⢢ [PRIVATE USE ONE] +char \x92 ( 6 8) # 92 ⢠ [PRIVATE USE TWO] +char \x93 (12 67 ) # 93 â¡£ [SET TRANSMIT STATE] +char \x94 ( 3 5 78) # 94 ⣔ [CANCEL CHARACTER] +char \x95 ( 45 8) # 95 ⢘ [MESSAGE WAITING] +char \x96 (1 4 67 ) # 96 â¡© [START OF GUARDED AREA] +char \x97 ( 4 8) # 97 ⢈ [END OF GUARDED AREA] +char \x98 (12 4567 ) # 98 â¡» [START OF STRING] +char \x99 (1 3 5 8) # 99 ⢕ [] +char \x9A (12 567 ) # 9A ⡳ [SINGLE CHARACTER INTRODUCER] +char \x9B ( 56 8) # 9B ⢰ [CONTROL SEQUENCE INTRODUCER] +char \x9C ( 3 6 8) # 9C ⢤ [STRING TERMINATOR] +char \x9D ( 34 7 ) # 9D â¡Œ [OPERATING SYSTEM COMMAND] +char \x9E ( 23 5 7 ) # 9E â¡– [PRIVACY MESSAGE] +char \x9F (12 4 678) # 9F ⣫ [APPLICATION PROGRAM COMMAND] +char \xA0 ( 7 ) # A0 â¡€   [NO-BREAK SPACE] +char \xA1 ( 3 67 ) # A1 ⡤ ¡ [INVERTED EXCLAMATION MARK] +char \xA2 ( 5 8) # A2 ⢠¢ [CENT SIGN] +char \xA3 ( 4 67 ) # A3 ⡨ £ [POUND SIGN] +char \xA4 ( 3 678) # A4 ⣤ ¤ [CURRENCY SIGN] +char \xA5 ( 4 6 8) # A5 ⢨ Â¥ [YEN SIGN] +char \xA6 ( 2 678) # A6 ⣢ ¦ [BROKEN BAR] +char \xA7 (12345678) # A7 ⣿ § [SECTION SIGN] +char \xA8 ( 2 78) # A8 ⣂ ¨ [DIAERESIS] +char \xA9 (1 4567 ) # A9 ⡹ © [COPYRIGHT SIGN] +char \xAA (12 5 8) # AA ⢓ ª [FEMININE ORDINAL INDICATOR] +char \xAB ( 5678) # AB ⣰ « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC ( 2 5678) # AC ⣲ ¬ [NOT SIGN] +char \xAD (12 4 8) # AD ⢋ ­ [SOFT HYPHEN] +char \xAE ( 4 678) # AE ⣨ ® [REGISTERED SIGN] +char \xAF (12 45 8) # AF ⢛ ¯ [MACRON] +char \xB0 ( 456 8) # B0 ⢸ ° [DEGREE SIGN] +char \xB1 ( 23 5 78) # B1 ⣖ ± [PLUS-MINUS SIGN] +char \xB2 (12 8) # B2 ⢃ ² [SUPERSCRIPT TWO] +char \xB3 ( 23 7 ) # B3 ⡆ ³ [SUPERSCRIPT THREE] +char \xB4 (1 3 56 8) # B4 ⢵ ´ [ACUTE ACCENT] +char \xB5 (1 34 8) # B5 ⢠µ [MICRO SIGN] +char \xB6 (12345678) # B6 ⣿ ¶ [PILCROW SIGN] +char \xB7 ( 3 7 ) # B7 â¡„ · [MIDDLE DOT] +char \xB8 (1 4 8) # B8 ⢉ ¸ [CEDILLA] +char \xB9 ( 45 7 ) # B9 ⡘ ¹ [SUPERSCRIPT ONE] +char \xBA ( 2 45 8) # BA ⢚ º [MASCULINE ORDINAL INDICATOR] +char \xBB ( 45 78) # BB ⣘ » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBC (1 3 6 8) # BC ⢥ ¼ [VULGAR FRACTION ONE QUARTER] +char \xBD (123 6 8) # BD ⢧ ½ [VULGAR FRACTION ONE HALF] +char \xBE ( 34 78) # BE ⣌ ¾ [VULGAR FRACTION THREE QUARTERS] +char \xBF ( 3 8) # BF ⢄ ¿ [INVERTED QUESTION MARK] +char \xC0 ( 3 78) # C0 ⣄ À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 ( 2 7 ) # C1 â¡‚ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 (1 3 8) # C2 ⢅  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 ( 23 67 ) # C3 ⡦ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 ( 567 ) # C4 â¡° Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 ( 34567 ) # C5 ⡼ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( 4 7 ) # C6 ⡈ Æ [LATIN CAPITAL LETTER AE] +char \xC7 (1234 67 ) # C7 ⡯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( 23 78) # C8 ⣆ È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 ( 23 8) # C9 ⢆ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA ( 8) # CA ⢀ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB (12345 8) # CB ⢟ Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC (123 8) # CC ⢇ ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD ( 2 5 78) # CD ⣒ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE (12 45678) # CE ⣻ ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF (1 67 ) # CF â¡¡ à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD0 ( 345 7 ) # D0 â¡œ à [LATIN CAPITAL LETTER ETH] +char \xD1 ( 2 567 ) # D1 ⡲ Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD2 ( 2 8) # D2 ⢂ Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 ( 2 4 678) # D3 ⣪ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 ( 2 4 8) # D4 ⢊ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD5 (1234 6 8) # D5 ⢯ Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 ( 3 5 8) # D6 ⢔ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 (123 5 8) # D7 ⢗ × [MULTIPLICATION SIGN] +char \xD8 ( 3 567 ) # D8 â¡´ Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xD9 ( 45678) # D9 ⣸ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA ( 2 5 7 ) # DA â¡’ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB (12345678) # DB ⣿ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC ( 23 6 8) # DC ⢦ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD ( 23 678) # DD ⣦ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDE ( 3 5678) # DE ⣴ Þ [LATIN CAPITAL LETTER THORN] +char \xDF ( 3456 8) # DF ⢼ ß [LATIN SMALL LETTER SHARP S] +char \xE0 (123 56 8) # E0 ⢷ à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 (1 6 8) # E1 ⢡ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 678) # E2 ⣡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 (1234 8) # E3 ⢠ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 ( 345 8) # E4 ⢜ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 ( 345678) # E5 ⣼ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 ( 4 78) # E6 ⣈ æ [LATIN SMALL LETTER AE] +char \xE7 (1234 678) # E7 ⣯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 8) # E8 ⢮ è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (12 6 8) # E9 ⢣ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (12 678) # EA ⣣ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 8) # EB ⢫ ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC ( 34 8) # EC ⢌ ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED (1 4 6 8) # ED ⢩ í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 678) # EE ⣩ î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 8) # EF ⢻ ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF0 ( 23 56 8) # F0 ⢶ ð [LATIN SMALL LETTER ETH] +char \xF1 (1 345 8) # F1 ⢠ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 ( 34 6 8) # F2 ⢬ ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 (1 456 8) # F3 ⢹ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 45678) # F4 ⣹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 (1 567 ) # F5 ⡱ õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 2 4 6 8) # F6 ⢪ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 (12 5678) # F7 ⣳ ÷ [DIVISION SIGN] +char \xF8 ( 78) # F8 ⣀ ø [LATIN SMALL LETTER O WITH STROKE] +char \xF9 ( 23456 8) # F9 ⢾ ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA (1 56 8) # FA ⢱ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 5678) # FB ⣱ û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 8) # FC ⢳ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD ( 23 5678) # FD ⣶ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \xFE (1234567 ) # FE â¡¿ þ [LATIN SMALL LETTER THORN] +char \xFF (123456 8) # FF ⢿ ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] + +include common.tti diff --git a/Tables/en_US.ttb b/Tables/en_US.ttb new file mode 100644 index 0000000000000000000000000000000000000000..ef8d7186baf031d2765a69a80938b55bb9a8a39c --- /dev/null +++ b/Tables/en_US.ttb @@ -0,0 +1,204 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - English (United States) + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# the standard representations for the Latin control characters +include control-latin.tti + +# the numbers 0-9 are represented using the Nemeth (lower numbers) scheme +include numbers-nemeth.tti + +# generated by ttbtest: charset=iso-8859-1 +char \x00 ( 4 78) # 00 ⣈ [NULL] +# Latin control characters # 01-1A +char \x1B ( 2 4 678) # 1B ⣪ [ESCAPE] +char \x1C (12 5678) # 1C ⣳ [INFORMATION SEPARATOR FOUR] +char \x1D (12 45678) # 1D ⣻ [INFORMATION SEPARATOR THREE] +char \x1E ( 45 78) # 1E ⣘ [INFORMATION SEPARATOR TWO] +char \x1F ( 45678) # 1F ⣸ [INFORMATION SEPARATOR ONE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 234 6 ) # 21 â ® ! [EXCLAMATION MARK] +char \x22 ( 5 ) # 22 â  " [QUOTATION MARK] +char \x23 ( 3456 ) # 23 â ¼ # [NUMBER SIGN] +char \x24 (12 4 6 ) # 24 â « $ [DOLLAR SIGN] +char \x25 (1 4 6 ) # 25 â © % [PERCENT SIGN] +char \x26 (1234 6 ) # 26 â ¯ & [AMPERSAND] +char \x27 ( 3 ) # 27 â „ ' [APOSTROPHE] +char \x28 (123 56 ) # 28 â · ( [LEFT PARENTHESIS] +char \x29 ( 23456 ) # 29 â ¾ ) [RIGHT PARENTHESIS] +char \x2A (1 6 ) # 2A â ¡ * [ASTERISK] +char \x2B ( 34 6 ) # 2B â ¬ + [PLUS SIGN] +char \x2C ( 6 ) # 2C â   , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 4 6 ) # 2E â ¨ . [FULL STOP] +char \x2F ( 34 ) # 2F â Œ / [SOLIDUS] +# Hindu-Arabic numerals # 30-39 +char \x3A (1 56 ) # 3A â ± : [COLON] +char \x3B ( 56 ) # 3B â ° ; [SEMICOLON] +char \x3C (12 6 ) # 3C â £ < [LESS-THAN SIGN] +char \x3D (123456 ) # 3D â ¿ = [EQUALS SIGN] +char \x3E ( 345 ) # 3E â œ > [GREATER-THAN SIGN] +char \x3F (1 456 ) # 3F â ¹ ? [QUESTION MARK] +char \x40 ( 4 7 ) # 40 ⡈ @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B ( 2 4 67 ) # 5B ⡪ [ [LEFT SQUARE BRACKET] +char \x5C (12 567 ) # 5C ⡳ \ [REVERSE SOLIDUS] +char \x5D (12 4567 ) # 5D â¡» ] [RIGHT SQUARE BRACKET] +char \x5E ( 45 7 ) # 5E ⡘ ^ [CIRCUMFLEX ACCENT] +char \x5F ( 456 ) # 5F â ¸ _ [LOW LINE] +char \x60 ( 4 ) # 60 â ˆ ` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B ( 2 4 6 ) # 7B â ª { [LEFT CURLY BRACKET] +char \x7C (12 56 ) # 7C â ³ | [VERTICAL LINE] +char \x7D (12 456 ) # 7D â » } [RIGHT CURLY BRACKET] +char \x7E ( 45 ) # 7E â ˜ ~ [TILDE] +char \x7F ( 4567 ) # 7F ⡸ [DELETE] +char \x80 ( 2 67 ) # 80 â¡¢ [] +char \x81 (1 34 6 8) # 81 ⢭ [] +char \x82 ( 2 56 8) # 82 ⢲ [BREAK PERMITTED HERE] +char \x83 ( 2 5 8) # 83 ⢒ [NO BREAK HERE] +char \x84 ( 3 5 7 ) # 84 â¡” [] +char \x85 (1 8) # 85 ⢠[NEXT LINE (NEL)] +char \x86 ( 234 8) # 86 ⢎ [START OF SELECTED AREA] +char \x87 ( 2345 8) # 87 ⢞ [END OF SELECTED AREA] +char \x88 ( 3 56 8) # 88 ⢴ [CHARACTER TABULATION SET] +char \x89 (1 45 8) # 89 ⢙ [CHARACTER TABULATION WITH JUSTIFICATION] +char \x8A ( 23 5 8) # 8A ⢖ [LINE TABULATION SET] +char \x8B ( 5 78) # 8B ⣠[PARTIAL LINE FORWARD] +char \x8C (1 5 8) # 8C ⢑ [PARTIAL LINE BACKWARD] +char \x8D ( 234 678) # 8D ⣮ [REVERSE LINE FEED] +char \x8E ( 67 ) # 8E â¡  [SINGLE SHIFT TWO] +char \x8F (12 4 67 ) # 8F â¡« [SINGLE SHIFT THREE] +char \x90 ( 23 567 ) # 90 ⡶ [DEVICE CONTROL STRING] +char \x91 ( 2 6 8) # 91 ⢢ [PRIVATE USE ONE] +char \x92 ( 6 8) # 92 ⢠ [PRIVATE USE TWO] +char \x93 ( 34 7 ) # 93 â¡Œ [SET TRANSMIT STATE] +char \x94 ( 3 5 78) # 94 ⣔ [CANCEL CHARACTER] +char \x95 ( 45 8) # 95 ⢘ [MESSAGE WAITING] +char \x96 (1 4 67 ) # 96 â¡© [START OF GUARDED AREA] +char \x97 ( 4 8) # 97 ⢈ [END OF GUARDED AREA] +char \x98 ( 234567 ) # 98 ⡾ [START OF STRING] +char \x99 (1 3 5 8) # 99 ⢕ [] +char \x9A (12 67 ) # 9A â¡£ [SINGLE CHARACTER INTRODUCER] +char \x9B ( 56 8) # 9B ⢰ [CONTROL SEQUENCE INTRODUCER] +char \x9C ( 3 6 8) # 9C ⢤ [STRING TERMINATOR] +char \x9D ( 34 67 ) # 9D ⡬ [OPERATING SYSTEM COMMAND] +char \x9E ( 23 5 7 ) # 9E â¡– [PRIVACY MESSAGE] +char \x9F (12 4 678) # 9F ⣫ [APPLICATION PROGRAM COMMAND] +char \xA0 ( 7 ) # A0 â¡€   [NO-BREAK SPACE] +char \xA1 ( 3 67 ) # A1 ⡤ ¡ [INVERTED EXCLAMATION MARK] +char \xA2 ( 5 8) # A2 ⢠¢ [CENT SIGN] +char \xA3 ( 4 67 ) # A3 ⡨ £ [POUND SIGN] +char \xA4 ( 3 678) # A4 ⣤ ¤ [CURRENCY SIGN] +char \xA5 ( 4 6 8) # A5 ⢨ Â¥ [YEN SIGN] +char \xA6 ( 2 678) # A6 ⣢ ¦ [BROKEN BAR] +char \xA7 (12345678) # A7 ⣿ § [SECTION SIGN] +char \xA8 ( 2 78) # A8 ⣂ ¨ [DIAERESIS] +char \xA9 (1 4567 ) # A9 ⡹ © [COPYRIGHT SIGN] +char \xAA (12 5 8) # AA ⢓ ª [FEMININE ORDINAL INDICATOR] +char \xAB (123 5678) # AB ⣷ « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC ( 2 5678) # AC ⣲ ¬ [NOT SIGN] +char \xAD ( 234 67 ) # AD â¡® ­ [SOFT HYPHEN] +char \xAE ( 4 678) # AE ⣨ ® [REGISTERED SIGN] +char \xAF (12 45 8) # AF ⢛ ¯ [MACRON] +char \xB0 ( 456 8) # B0 ⢸ ° [DEGREE SIGN] +char \xB1 ( 23 5 78) # B1 ⣖ ± [PLUS-MINUS SIGN] +char \xB2 (12 8) # B2 ⢃ ² [SUPERSCRIPT TWO] +char \xB3 ( 23 7 ) # B3 ⡆ ³ [SUPERSCRIPT THREE] +char \xB4 (1 3 56 8) # B4 ⢵ ´ [ACUTE ACCENT] +char \xB5 (1 34 8) # B5 ⢠µ [MICRO SIGN] +char \xB6 (12345678) # B6 ⣿ ¶ [PILCROW SIGN] +char \xB7 ( 3 7 ) # B7 â¡„ · [MIDDLE DOT] +char \xB8 (1 4 8) # B8 ⢉ ¸ [CEDILLA] +char \xB9 (123 567 ) # B9 â¡· ¹ [SUPERSCRIPT ONE] +char \xBA ( 2 45 8) # BA ⢚ º [MASCULINE ORDINAL INDICATOR] +char \xBB ( 2345678) # BB ⣾ » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBC (1 3 6 8) # BC ⢥ ¼ [VULGAR FRACTION ONE QUARTER] +char \xBD (123 6 8) # BD ⢧ ½ [VULGAR FRACTION ONE HALF] +char \xBE ( 34 678) # BE ⣬ ¾ [VULGAR FRACTION THREE QUARTERS] +char \xBF ( 3 8) # BF ⢄ ¿ [INVERTED QUESTION MARK] +char \xC0 ( 3 78) # C0 ⣄ À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 ( 2 7 ) # C1 â¡‚ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 (1 3 8) # C2 ⢅  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 ( 23 67 ) # C3 ⡦ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 ( 567 ) # C4 â¡° Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 ( 34567 ) # C5 ⡼ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( 345 7 ) # C6 â¡œ Æ [LATIN CAPITAL LETTER AE] +char \xC7 (1234 67 ) # C7 ⡯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( 23 78) # C8 ⣆ È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 ( 23 8) # C9 ⢆ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA ( 8) # CA ⢀ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB (12345 8) # CB ⢟ Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC (12 4 8) # CC ⢋ ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD ( 2 5 78) # CD ⣒ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE ( 5678) # CE ⣰ ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF (1 67 ) # CF â¡¡ à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD0 ( 5 7 ) # D0 â¡ Ã [LATIN CAPITAL LETTER ETH] +char \xD1 ( 2 567 ) # D1 ⡲ Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD2 ( 2 8) # D2 ⢂ Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 (123 8) # D3 ⢇ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 ( 2 4 8) # D4 ⢊ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD5 (1234 6 8) # D5 ⢯ Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 ( 3 5 8) # D6 ⢔ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 (123 5 8) # D7 ⢗ × [MULTIPLICATION SIGN] +char \xD8 ( 3 567 ) # D8 â¡´ Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xD9 ( 678) # D9 ⣠ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA ( 2 5 7 ) # DA â¡’ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB (12345678) # DB ⣿ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC ( 23 6 8) # DC ⢦ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD ( 23 678) # DD ⣦ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDE ( 3 5678) # DE ⣴ Þ [LATIN CAPITAL LETTER THORN] +char \xDF ( 3456 8) # DF ⢼ ß [LATIN SMALL LETTER SHARP S] +char \xE0 (123 56 8) # E0 ⢷ à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 (1 6 8) # E1 ⢡ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 678) # E2 ⣡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 (1234 8) # E3 ⢠ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 ( 345 8) # E4 ⢜ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 ( 345678) # E5 ⣼ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 ( 345 78) # E6 ⣜ æ [LATIN SMALL LETTER AE] +char \xE7 (1234 678) # E7 ⣯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 8) # E8 ⢮ è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (12 6 8) # E9 ⢣ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (12 678) # EA ⣣ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 8) # EB ⢫ ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC ( 34 8) # EC ⢌ ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED (1 4 6 8) # ED ⢩ í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 678) # EE ⣩ î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 8) # EF ⢻ ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF0 ( 23 56 8) # F0 ⢶ ð [LATIN SMALL LETTER ETH] +char \xF1 (1 345 8) # F1 ⢠ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 ( 34 6 8) # F2 ⢬ ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 (1 456 8) # F3 ⢹ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 45678) # F4 ⣹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 (1 567 ) # F5 ⡱ õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 2 4 6 8) # F6 ⢪ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 ( 34 78) # F7 ⣌ ÷ [DIVISION SIGN] +char \xF8 ( 78) # F8 ⣀ ø [LATIN SMALL LETTER O WITH STROKE] +char \xF9 ( 23456 8) # F9 ⢾ ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA (1 56 8) # FA ⢱ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 5678) # FB ⣱ û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 8) # FC ⢳ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD ( 23 5678) # FD ⣶ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \xFE (1234567 ) # FE â¡¿ þ [LATIN SMALL LETTER THORN] +char \xFF (123456 8) # FF ⢿ ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] + +include common.tti diff --git a/Tables/eo.ttb b/Tables/eo.ttb new file mode 100644 index 0000000000000000000000000000000000000000..c58e560997d86ac177bfed14692a74f73eaefd2a --- /dev/null +++ b/Tables/eo.ttb @@ -0,0 +1,55 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Esperanto +# +# Samuel Thibault +# +# Based on the document from Musée national de l'Espéranto à Gray +# "Maison pour tous", 19 rue Victor Hugo 70100 GRAY +# esperanto-muzeo@wanadoo.fr + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# w is non-standard because dots 2456 is j with circumflex +char \x77 ( 23456 ) # â ¾ w [LATIN SMALL LETTER W] +char \x57 ( 234567 ) # ⡾ W [LATIN CAPITAL LETTER W] + +# lowercase accented letters +char \u0109 (1 4 6 ) # â © ĉ [LATIN SMALL LETTER C WITH CIRCUMFLEX] +char \u011D (12 456 ) # â » Ä [LATIN SMALL LETTER G WITH CIRCUMFLEX] +char \u0125 (12 56 ) # â ³ Ä¥ [LATIN SMALL LETTER H WITH CIRCUMFLEX] +char \u0135 ( 2 456 ) # â º ĵ [LATIN SMALL LETTER J WITH CIRCUMFLEX] +char \u015D ( 234 6 ) # â ® Å [LATIN SMALL LETTER S WITH CIRCUMFLEX] +char \u016D ( 34 6 ) # â ¬ Å­ [LATIN SMALL LETTER U WITH BREVE] + +# uppercase accented letters +char \u0108 (1 4 67 ) # â¡© Ĉ [LATIN CAPITAL LETTER C WITH CIRCUMFLEX] +char \u011C (12 4567 ) # â¡» Äœ [LATIN CAPITAL LETTER G WITH CIRCUMFLEX] +char \u0124 (12 567 ) # ⡳ Ĥ [LATIN CAPITAL LETTER H WITH CIRCUMFLEX] +char \u0134 ( 2 4567 ) # ⡺ Ä´ [LATIN CAPITAL LETTER J WITH CIRCUMFLEX] +char \u015C ( 234 67 ) # â¡® Åœ [LATIN CAPITAL LETTER S WITH CIRCUMFLEX] +char \u016C ( 34 67 ) # ⡬ Ŭ [LATIN CAPITAL LETTER U WITH BREVE] + +# the numbers 0-9 are represented by the letters j,a-i with dot 8 added +include numbers-dot8.tti + +include punctuation-basic.tti + +include common.tti diff --git a/Tables/es.ctb b/Tables/es.ctb new file mode 100644 index 0000000000000000000000000000000000000000..46f8431a8576e1d4d176c98d6e52bcf9f33b4140 --- /dev/null +++ b/Tables/es.ctb @@ -0,0 +1,351 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - Spanish (grade 2) +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +include letters-latin.cti +class voy aeiouäáéíóú +class con bcdfghjklmnñpqrstvwxz + +endword ble 12 +word bien 12 +endword cia 14 +word cual 14 +word de 145 +word fué 124 +word grande 1245 +word ha 125 +word si 24 +word jamás 245 +always al 13 +endword mente 134 +word me 134 +word no 1345 +word por 1234 +always que 12345 +word recién 1235 +endword se 234 +word se 234 +endword te 2345 +word te 2345 +word su 136 +endword ivo 1236 +word vez 1236 +before voy begword ex 1346 +midendword on 1346 +word son 1346 +before voy begword inter 13456 +word este 1356 +always as 12346 +word las 12346 +begmidword ll 123456 +endword ella 123456 +word ella 123456 +always á 12356 +word más 12356 +always é 2346 +word él 2346 +always ú 23456 +word tú 23456 +always ar 16 +word para 16 +begmidword em 126 +endword ente 126 +word siempre 126 +always an 146 +word ante 146 +always ad 1456 +word además 1456 +always or 156 +word yo 156 +always es 1246 +word es 1246 +always ñ 12456 +endword año 12456 +word año 12456 +begword ä 1256 +midendword ue 1256 +word pues 1256 +always os 246 +word los 246 +begmidword om 2456 +word como 2456 +begmidword ab 2 +always , 2 +before voy begword sobre 23 +midword br 23 +always ; 23 +word sobre 23 +before voy begword con 25 +midword cr 25 +always : 25 +word con 25 +before voy begword dis 256 +midword dr 256 +always . 256 +word del 256 +begword en 26 +always ? 26 +midendword en 26 +word en 26 +before voy begword pre 235 +always ! 235 +midword pr 235 +word pero 235 +begmidword gr 2356 +always ( 2356 +always ) 2356 +word gran 2356 +always er 236 +begword " 236 +word he 236 +before voy begword entre 356 +midword tr 356 +endword " 356 +word entre 356 +begmidword in 35 +word sin 35 +before voy begword re 3 +midendword ' 3 +word la 3 +before voy begword com 36 +midword cl 36 +always - 36 +word lo 36 +numsign 3456 +endword ión 3456 +word número 3456 +always í 34 +word sí 34 +always ó 346 +word aquel 346 +always im 345 +word tu 345 + +# terminations + +endword acción 1-3456 +endword ección 15-3456 +endword icción 24-3456 +endword ucción 136-3456 +endword ando 146-145 +endword ando 26-145 +endword ado 1456-135 +endword ido 45-135 + +# locutions + +word en\sconsecuencia 26-456-25 +word en\sseguida 26-456-234 +word en\sefecto 26-456-15 +word es\sdecir 246-456-145 +word no\sobstante 1345-456-135 +word poco\sa\spoco 1234-456-1234 +word por\sejemplo 1234-456-15 +word sobre\stodo 234-456-2345 +word tal\svez 2345-456-1236 +word sin\sembargo 234-456-15 + +# several cells words + +word abajo 2-245 +word acaso 1-14 +word acción 1-3456 +word acerca 1-14-14 +word adelante 1456-123 +word ahora 4-125 +word algo 13-135 +word algún 13-23456 +word alguno 13-1345-135 +word alguien 13-1345 +word allá 5-123456 +word allí 1-123456 +word alrededor 13-156 +word antes 146-234 +word anterior 146-2345 +word anterioridad 146-2345-145 +word anteriormente 146-2345-134 +word apenas 1-1234 +word aquello 346-135 +word aquí 1-12345 +word arriba 16-1235 +word atrás 1-356 +word bajo 12-245 +word bastante 12-2345 +word bella 12-123456 +word belleza 12-123456-1356 +word braille 46-12-1235-123 +word breve 23-1236 +word brevedad 23-1236-145 +word brevemente 23-1236-134 +word cada 14-1456 +word cerca 14-14 +word casi 14-234 +word ciego 14-1245 +word condición 25-145-3456 +word condicional 25-145-3456-13 +word condicionalmente 25-145-3456-13-134 +word conjunto 25-245-2345 +word conmigo 25-134 +word contigo 25-2345 +word consigo 25-234 +word consecuencia 25-234-14 +word contra 25-356 +word cualquier 14-12345 +word cuando 14-145 +word cuanto 14-2345 +word cuyo 14-13456 +word debajo 145-12-245 +word delante 145-1234-2345 +word demás 145-134 +word demasiado 145-134-145 +word desde 145-234 +word después 145-1234 +word detrás 145-356 +word difícil 145-124 +word difícilmente 145-124-134 +word dificultad 145-124-2345 +word donde 145-145 +word durante 145-136 +word el 15 +word efecto 15-124 +word efectivo 15-124-1236 +word efectivamente 15-124-1236-134 +word ejemplo 15-245 +word encima 26-14 +word entonces 26-2345 +word entretanto 356-2345 +word estar 1246-1235 +word estaba 1246-2345-12 +word estaban 1246-2345-12-146 +word estado 1246-2345-145 +word éste 5-1356 +word exterior 1346-2345 +word exteriormente 1346-2345-134 +word fácil 124-14 +word fácilmente 124-14-134 +word facilidad 124-14-145 +word favor 124-1236 +word favorable 124-1236-12 +word favorablemente 124-1236-12-134 +word general 1245-1345 +word generalidad 1245-1345-145 +word generalmente 1245-1345-134 +word hacia 125-14 +word hasta 125-2345 +word haber 125-1235 +word había 125-12 +word habían 125-12-146 +word habido 125-12-145 +word hijo 125-245 +word hermano 125-134 +word hombre 125-23 +word hacer 236-1235 +word hacía 236-14 +word hacían 236-14-146 +word igual 24-1245 +word igualdad 24-1245-145 +word igualmente 14-1245-134 +word importancia 345-1234-14 +word importante 345-1234-2345 +word inferior 35-124 +word inferioridad 35-124-145 +word inmediato 35-134 +word inmediatamente 35-134-134 +word interior 35-2345 +word inteligencia 35-1245-14 +word joven 245-1236 +word junto 245-2345 +word juventud 245-1236-2345 +word le 123 +word lejos 123-245 +word luego 123-1256 +word madre 134-1 +word mayor 134-13456 +word medio 134-145 +word mediante 134-145-2345 +word menor 134-1345 +word menos 134-234 +word mientras 134-356 +word mismo 134-134 +word mucho 4-134 +word mujer 134-136 +word muy 6-134 +word nada 1345-1456 +word nadie 1345-145 +word ningún 1345-1245 +word ninguna 1345-1245-1 +word ninguno 1345-1245-135 +word ningunas 1345-1245-12346 +word ningunos 134-1245-246 +word nosotros 45-1345 +word nuestro 56-1345 +word nuevo 1345-1236 +word nunca 1345-14 +word número 3456 +word otro 135-356 +word padre 1234-1 +word pequeño 1234-12345-12456 +word poco 1234-14 +word porque 1234-12345 +word porqué 5-1234-12345 +word pronto 235-2345 +word propio 235-1234 +word propiedad 235-1234-145 +word propiamente 235-1234-134 +word qué 5-12345 +word quien 12345-1345 +word quién 5-12345-1345 +word quizá 12345-1356 +word recientemente 1235-2345-134 +word reciente 1235-2345 +word según 234-1245 +word sido 234-145 +word sino 234-1345 +word siquiera 234-12345 +word solo 234-123 +word sus 234-234 +word superior 234-1234 +word suyo 234-13456 +word también 2345-12 +word tampoco 2345-1234-14 +word tanto 2345-2345 +word tener 2345-1235 +word tenía 2345-1345 +word tenían 2345-1345-146 +word tenido 2345-1345-145 +word tiempo 2345-1234 +word todavía 2345-1236 +word todo 2345-145 +word tú 5-2345 +word tuyo 2345-13456 +word último 23456-123 +word único 23456-14 +word únicamente 23456-14-134 +word usted 134-145 +word verdad 1236-145 +word veces 1236-14 +word vosotros 45-1236 +word vuestro 56-1236 diff --git a/Tables/es.ttb b/Tables/es.ttb new file mode 100644 index 0000000000000000000000000000000000000000..654f6b90f01983e2f79906d3615293515a3251d5 --- /dev/null +++ b/Tables/es.ttb @@ -0,0 +1,232 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Spanish + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# generated by ttbtest: charset=iso-8859-1 +char \x00 ( 5 78) # 00 ⣠[NULL] +char \x01 ( 2 78) # 01 ⣂ [START OF HEADING] +char \x02 (12 78) # 02 ⣃ [START OF TEXT] +char \x03 (1 4 78) # 03 ⣉ [END OF TEXT] +char \x04 (1 45 78) # 04 ⣙ [END OF TRANSMISSION] +char \x05 ( 2 678) # 05 ⣢ [ENQUIRY] +char \x06 (12 4 78) # 06 ⣋ [ACKNOWLEDGE] +char \x07 (12 45 78) # 07 ⣛ [BELL] +char \x08 (12 5 78) # 08 ⣓ [BACKSPACE] +char \x09 ( 3 5 78) # 09 ⣔ [CHARACTER TABULATION] +char \x0A ( 2 45 78) # 0A ⣚ [LINE FEED (LF)] +char \x0B (1 3 78) # 0B ⣅ [LINE TABULATION] +char \x0C (123 78) # 0C ⣇ [FORM FEED (FF)] +char \x0D (1 34 78) # 0D ⣠[CARRIAGE RETURN (CR)] +char \x0E (1 345 78) # 0E ⣠[SHIFT OUT] +char \x0F ( 23 678) # 0F ⣦ [SHIFT IN] +char \x10 (1234 78) # 10 ⣠[DATA LINK ESCAPE] +char \x11 (12345 78) # 11 ⣟ [DEVICE CONTROL ONE] +char \x12 (123 5 78) # 12 ⣗ [DEVICE CONTROL TWO] +char \x13 ( 234 78) # 13 ⣎ [DEVICE CONTROL THREE] +char \x14 ( 2345 78) # 14 ⣞ [DEVICE CONTROL FOUR] +char \x15 ( 3 5678) # 15 ⣴ [NEGATIVE ACKNOWLEDGE] +char \x16 (123 678) # 16 ⣧ [SYNCHRONOUS IDLE] +char \x17 ( 2 45678) # 17 ⣺ [END OF TRANSMISSION BLOCK] +char \x18 (1 34 678) # 18 ⣭ [CANCEL] +char \x19 (1 345678) # 19 ⣽ [END OF MEDIUM] +char \x1A (1 3 5678) # 1A ⣵ [SUBSTITUTE] +char \x1B ( 345678) # 1B ⣼ [ESCAPE] +char \x1C (12345678) # 1C ⣿ [INFORMATION SEPARATOR FOUR] +char \x1D ( 4 678) # 1D ⣨ [INFORMATION SEPARATOR THREE] +char \x1E ( 45 78) # 1E ⣘ [INFORMATION SEPARATOR TWO] +char \x1F ( 678) # 1F ⣠ [INFORMATION SEPARATOR ONE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 23 5 7 ) # 21 â¡– ! [EXCLAMATION MARK] +char \x22 ( 56 ) # 22 â ° " [QUOTATION MARK] +char \x23 ( 3456 ) # 23 â ¼ # [NUMBER SIGN] +char \x24 (1234 67 ) # 24 ⡯ $ [DOLLAR SIGN] +char \x25 ( 456 ) # 25 â ¸ % [PERCENT SIGN] +char \x26 (1234 6 ) # 26 â ¯ & [AMPERSAND] +char \x27 ( 4 ) # 27 â ˆ ' [APOSTROPHE] +char \x28 (12 6 8) # 28 ⢣ ( [LEFT PARENTHESIS] +char \x29 ( 345 7 ) # 29 â¡œ ) [RIGHT PARENTHESIS] +char \x2A ( 2 56 ) # 2A â ² * [ASTERISK] +char \x2B ( 23 5 ) # 2B â – + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 3 ) # 2E â „ . [FULL STOP] +char \x2F ( 34 78) # 2F ⣌ / [SOLIDUS] +char \x30 ( 34 678) # 30 ⣬ 0 [DIGIT ZERO] +char \x31 (1 6 ) # 31 â ¡ 1 [DIGIT ONE] +char \x32 (12 6 ) # 32 â £ 2 [DIGIT TWO] +char \x33 (1 4 6 ) # 33 â © 3 [DIGIT THREE] +char \x34 (1 456 ) # 34 â ¹ 4 [DIGIT FOUR] +char \x35 (1 56 ) # 35 â ± 5 [DIGIT FIVE] +char \x36 (12 4 6 ) # 36 â « 6 [DIGIT SIX] +char \x37 (12 456 ) # 37 â » 7 [DIGIT SEVEN] +char \x38 (12 56 ) # 38 â ³ 8 [DIGIT EIGHT] +char \x39 ( 2 4 6 ) # 39 â ª 9 [DIGIT NINE] +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C ( 23 6 ) # 3C â ¦ < [LESS-THAN SIGN] +char \x3D ( 23 56 ) # 3D â ¶ = [EQUALS SIGN] +char \x3E ( 3 56 ) # 3E â ´ > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 ( 5 ) # 40 â  @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B ( 23 67 ) # 5B ⡦ [ [LEFT SQUARE BRACKET] +char \x5C (123456 ) # 5C â ¿ \ [REVERSE SOLIDUS] +char \x5D ( 3 56 8) # 5D ⢴ ] [RIGHT SQUARE BRACKET] +char \x5E ( 45 ) # 5E â ˜ ^ [CIRCUMFLEX ACCENT] +char \x5F ( 6 ) # 5F â   _ [LOW LINE] +char \x60 ( 5 8) # 60 ⢠` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B ( 4 6 ) # 7B â ¨ { [LEFT CURLY BRACKET] +char \x7C ( 456 8) # 7C ⢸ | [VERTICAL LINE] +char \x7D ( 3 5 ) # 7D â ” } [RIGHT CURLY BRACKET] +char \x7E ( 5 7 ) # 7E â¡ ~ [TILDE] +char \x7F ( 7 ) # 7F â¡€ [DELETE] +char \x80 (123 5 8) # 80 ⢗ [] +char \x81 ( 3 5 8) # 81 ⢔ [] +char \x82 ( 3 7 ) # 82 â¡„ [BREAK PERMITTED HERE] +char \x83 (12 4 8) # 83 ⢋ [NO BREAK HERE] +char \x84 ( 78) # 84 ⣀ [] +char \x85 (12 67 ) # 85 â¡£ [NEXT LINE (NEL)] +char \x86 ( 2 8) # 86 ⢂ [START OF SELECTED AREA] +char \x87 ( 2345 8) # 87 ⢞ [END OF SELECTED AREA] +char \x88 ( 45 8) # 88 ⢘ [CHARACTER TABULATION SET] +char \x89 ( 45678) # 89 ⣸ [CHARACTER TABULATION WITH JUSTIFICATION] +char \x8A (123456 8) # 8A ⢿ [LINE TABULATION SET] +char \x8B (12 5 8) # 8B ⢓ [PARTIAL LINE FORWARD] +char \x8C (1 4 6 8) # 8C ⢩ [PARTIAL LINE BACKWARD] +char \x8D ( 3 5 7 ) # 8D â¡” [REVERSE LINE FEED] +char \x8E (1 4 8) # 8E ⢉ [SINGLE SHIFT TWO] +char \x8F ( 2 7 ) # 8F â¡‚ [SINGLE SHIFT THREE] +char \x90 ( 6 8) # 90 ⢠ [DEVICE CONTROL STRING] +char \x91 (1 3 8) # 91 ⢅ [PRIVATE USE ONE] +char \x92 ( 3 78) # 92 ⣄ [PRIVATE USE TWO] +char \x93 (1 456 8) # 93 ⢹ [SET TRANSMIT STATE] +char \x94 (1234 8) # 94 ⢠[CANCEL CHARACTER] +char \x95 (1 45 8) # 95 ⢙ [MESSAGE WAITING] +char \x96 ( 3 6 8) # 96 ⢤ [START OF GUARDED AREA] +char \x97 ( 3 678) # 97 ⣤ [END OF GUARDED AREA] +char \x98 (1 3456 8) # 98 ⢽ [START OF STRING] +char \x99 ( 2 4 67 ) # 99 ⡪ [] +char \x9A (12 567 ) # 9A ⡳ [SINGLE CHARACTER INTRODUCER] +char \x9B ( 3456 8) # 9B ⢼ [CONTROL SEQUENCE INTRODUCER] +char \x9C (123 8) # 9C ⢇ [STRING TERMINATOR] +char \x9D ( 2 5678) # 9D ⣲ [OPERATING SYSTEM COMMAND] +char \x9E ( 2 56 8) # 9E ⢲ [PRIVACY MESSAGE] +char \x9F ( 3 67 ) # 9F ⡤ [APPLICATION PROGRAM COMMAND] +char \xA0 (1 3 56 8) # A0 ⢵   [NO-BREAK SPACE] +char \xA1 ( 23 5 78) # A1 ⣖ ¡ [INVERTED EXCLAMATION MARK] +char \xA2 (12 678) # A2 ⣣ ¢ [CENT SIGN] +char \xA3 ( 23 78) # A3 ⣆ £ [POUND SIGN] +char \xA4 ( 2 567 ) # A4 ⡲ ¤ [CURRENCY SIGN] +char \xA5 (1 45678) # A5 ⣹ Â¥ [YEN SIGN] +char \xA6 ( 4 78) # A6 ⣈ ¦ [BROKEN BAR] +char \xA7 (1 67 ) # A7 â¡¡ § [SECTION SIGN] +char \xA8 ( 2 6 8) # A8 ⢢ ¨ [DIAERESIS] +char \xA9 ( 23 567 ) # A9 ⡶ © [COPYRIGHT SIGN] +char \xAA ( 23 56 8) # AA ⢶ ª [FEMININE ORDINAL INDICATOR] +char \xAB ( 23 8) # AB ⢆ « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC ( 2 5 7 ) # AC â¡’ ¬ [NOT SIGN] +char \xAD ( 23 5 8) # AD ⢖ ­ [SOFT HYPHEN] +char \xAE ( 23 6 8) # AE ⢦ ® [REGISTERED SIGN] +char \xAF ( 2 456 8) # AF ⢺ ¯ [MACRON] +char \xB0 ( 8) # B0 ⢀ ° [DEGREE SIGN] +char \xB1 (12 4 67 ) # B1 â¡« ± [PLUS-MINUS SIGN] +char \xB2 ( 4 7 ) # B2 ⡈ ² [SUPERSCRIPT TWO] +char \xB3 ( 56 8) # B3 ⢰ ³ [SUPERSCRIPT THREE] +char \xB4 ( 4 67 ) # B4 ⡨ ´ [ACUTE ACCENT] +char \xB5 (1 34 6 8) # B5 ⢭ µ [MICRO SIGN] +char \xB6 (1 4567 ) # B6 ⡹ ¶ [PILCROW SIGN] +char \xB7 (1 4 678) # B7 ⣩ · [MIDDLE DOT] +char \xB8 (1234567 ) # B8 â¡¿ ¸ [CEDILLA] +char \xB9 ( 23 7 ) # B9 ⡆ ¹ [SUPERSCRIPT ONE] +char \xBA ( 5678) # BA ⣰ º [MASCULINE ORDINAL INDICATOR] +char \xBB ( 567 ) # BB â¡° » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBC (1 4 67 ) # BC â¡© ¼ [VULGAR FRACTION ONE QUARTER] +char \xBD ( 4 6 8) # BD ⢨ ½ [VULGAR FRACTION ONE HALF] +char \xBE ( 4 8) # BE ⢈ ¾ [VULGAR FRACTION THREE QUARTERS] +char \xBF ( 2 67 ) # BF â¡¢ ¿ [INVERTED QUESTION MARK] +char \xC0 (123 5678) # C0 ⣷ À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 (123 567 ) # C1 â¡· à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 (1 78) # C2 ⣠ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 ( 3 567 ) # C3 â¡´ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 ( 345 78) # C4 ⣜ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 (123 6 8) # C5 ⢧ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( 3 8) # C6 ⢄ Æ [LATIN CAPITAL LETTER AE] +char \xC7 (1234 678) # C7 ⣯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( 234 678) # C8 ⣮ È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 ( 234 67 ) # C9 â¡® É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA (1 5 78) # CA ⣑ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB (12 4 678) # CB ⣫ Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC ( 345 ) # CC â œ ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD ( 34 7 ) # CD â¡Œ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE ( 2 4 78) # CE ⣊ ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF (12 45678) # CF ⣻ à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD0 (1 345 8) # D0 ⢠à [LATIN CAPITAL LETTER ETH] +char \xD1 (12 4567 ) # D1 â¡» Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD2 ( 2 45 8) # D2 ⢚ Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 ( 34 67 ) # D3 ⡬ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 (1 3 5 78) # D4 ⣕ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD5 (12 45 8) # D5 ⢛ Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 ( 2 4 678) # D6 ⣪ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 (1 678) # D7 ⣡ × [MULTIPLICATION SIGN] +char \xD8 ( 34567 ) # D8 ⡼ Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xD9 ( 2345678) # D9 ⣾ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA ( 234567 ) # DA ⡾ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB (1 3 678) # DB ⣥ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC (12 5678) # DC ⣳ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD (1 567 ) # DD ⡱ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDE (12345 8) # DE ⢟ Þ [LATIN CAPITAL LETTER THORN] +char \xDF (12 8) # DF ⢃ ß [LATIN SMALL LETTER SHARP S] +char \xE0 (123 56 8) # E0 ⢷ à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 (123 56 ) # E1 â · á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 8) # E2 ⢠â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 (1 6 8) # E3 ⢡ ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 ( 345 8) # E4 ⢜ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 (1 5678) # E5 ⣱ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 (1 34 8) # E6 ⢠æ [LATIN SMALL LETTER AE] +char \xE7 (1234 6 8) # E7 ⢯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 8) # E8 ⢮ è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 ( 234 6 ) # E9 â ® é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (1 5 8) # EA ⢑ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 8) # EB ⢫ ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC ( 34 8) # EC ⢌ ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED ( 34 ) # ED â Œ í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE ( 2 4 8) # EE ⢊ î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF ( 2 5 8) # EF ⢒ ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF0 ( 23 5678) # F0 ⣶ ð [LATIN SMALL LETTER ETH] +char \xF1 (12 456 8) # F1 ⢻ ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 ( 34 6 8) # F2 ⢬ ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 ( 34 6 ) # F3 â ¬ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 3 5 8) # F4 ⢕ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 ( 4567 ) # F5 ⡸ õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 2 4 6 8) # F6 ⢪ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 ( 2 5 78) # F7 ⣒ ÷ [DIVISION SIGN] +char \xF8 ( 45 7 ) # F8 ⡘ ø [LATIN SMALL LETTER O WITH STROKE] +char \xF9 ( 23456 8) # F9 ⢾ ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA ( 23456 ) # FA â ¾ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 3 6 8) # FB ⢥ û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 8) # FC ⢳ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD ( 234 8) # FD ⢎ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \xFE (1 56 8) # FE ⢱ þ [LATIN SMALL LETTER THORN] +char \xFF ( 67 ) # FF â¡  ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] + +include common.tti diff --git a/Tables/et.ttb b/Tables/et.ttb new file mode 100644 index 0000000000000000000000000000000000000000..aaed1243b032a6b1be32f60b1e2258277f92a1ec --- /dev/null +++ b/Tables/et.ttb @@ -0,0 +1,48 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Estonian +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# lowercase accented letters +char \xE4 ( 345 ) # â œ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xF5 ( 234 6 ) # â ® õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 2 4 6 ) # â ª ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xFC (12 56 ) # â ³ ü [LATIN SMALL LETTER U WITH DIAERESIS] + +# uppercase accented letters +char \xC4 ( 345 7 ) # â¡œ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xD5 ( 234 67 ) # â¡® Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 ( 2 4 67 ) # ⡪ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xDC (12 567 ) # ⡳ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] + +# the numbers 0-9 are represented by the letters j,a-i with dot 8 added +include numbers-dot8.tti + +include punctuation-basic.tti + +include common.tti diff --git a/Tables/fi.ttb b/Tables/fi.ttb new file mode 100644 index 0000000000000000000000000000000000000000..bcbeaae667cc024ba09fbf8794a8c7774f4c1672 --- /dev/null +++ b/Tables/fi.ttb @@ -0,0 +1,206 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Finnish + +# This table is very close to the official Finnish six dotbraille character set. + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# the standard representations for the Latin control characters +include control-latin.tti + +# the numbers 0-9 are represented by the letters j,a-i with dot 8 added +include numbers-dot8.tti + +# generated by ttbtest: charset=iso-8859-1 +char \x00 ( 4 78) # 00 ⣈ [NULL] +# Latin control characters # 01-1A +char \x1B (12 678) # 1B ⣣ [ESCAPE] +char \x1C (12 5678) # 1C ⣳ [INFORMATION SEPARATOR FOUR] +char \x1D ( 3 5 78) # 1D ⣔ [INFORMATION SEPARATOR THREE] +char \x1E ( 2 78) # 1E ⣂ [INFORMATION SEPARATOR TWO] +char \x1F ( 5 78) # 1F ⣠[INFORMATION SEPARATOR ONE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 2 56 ) # 21 â ² ! [EXCLAMATION MARK] +char \x22 ( 56 ) # 22 â ° " [QUOTATION MARK] +char \x23 ( 3456 ) # 23 â ¼ # [NUMBER SIGN] +char \x24 ( 234 6 ) # 24 â ® $ [DOLLAR SIGN] +char \x25 (1 456 ) # 25 â ¹ % [PERCENT SIGN] +char \x26 (1234 6 ) # 26 â ¯ & [AMPERSAND] +char \x27 ( 5 ) # 27 â  ' [APOSTROPHE] +char \x28 ( 23 6 ) # 28 â ¦ ( [LEFT PARENTHESIS] +char \x29 ( 3 56 ) # 29 â ´ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 23 5 ) # 2B â – + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 3 ) # 2E â „ . [FULL STOP] +char \x2F ( 34 ) # 2F â Œ / [SOLIDUS] +# Hindu-Arabic numerals # 30-39 +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C (12 6 ) # 3C â £ < [LESS-THAN SIGN] +char \x3D ( 23 56 ) # 3D â ¶ = [EQUALS SIGN] +char \x3E (1 56 ) # 3E â ± > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 ( 4 ) # 40 â ˆ @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B (123 56 ) # 5B â · [ [LEFT SQUARE BRACKET] +char \x5C (1 4 6 ) # 5C â © \ [REVERSE SOLIDUS] +char \x5D ( 23456 ) # 5D â ¾ ] [RIGHT SQUARE BRACKET] +char \x5E ( 45 7 ) # 5E ⡘ ^ [CIRCUMFLEX ACCENT] +char \x5F ( 34 6 ) # 5F â ¬ _ [LOW LINE] +char \x60 ( 4 7 ) # 60 ⡈ ` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B (12 4 6 ) # 7B â « { [LEFT CURLY BRACKET] +char \x7C ( 456 ) # 7C â ¸ | [VERTICAL LINE] +char \x7D (12 456 ) # 7D â » } [RIGHT CURLY BRACKET] +char \x7E ( 45 ) # 7E â ˜ ~ [TILDE] +char \x7F (1234 8) # 7F ⢠[DELETE] +char \x80 ( 23 67 ) # 80 ⡦ [] +char \x81 (12 56 ) # 81 â ³ [] +char \x82 (123456 ) # 82 â ¿ [BREAK PERMITTED HERE] +char \x83 ( 23 678) # 83 ⣦ [NO BREAK HERE] +char \x84 ( 345 ) # 84 â œ [] +char \x85 ( 2345 8) # 85 ⢞ [NEXT LINE (NEL)] +char \x86 (1 6 ) # 86 â ¡ [START OF SELECTED AREA] +char \x87 (1234567 ) # 87 â¡¿ [END OF SELECTED AREA] +char \x88 (12345678) # 88 ⣿ [CHARACTER TABULATION SET] +char \x89 ( 678) # 89 ⣠ [CHARACTER TABULATION WITH JUSTIFICATION] +char \x8A (12345 8) # 8A ⢟ [LINE TABULATION SET] +char \x8B ( 3 56 8) # 8B ⢴ [PARTIAL LINE FORWARD] +char \x8C ( 45 8) # 8C ⢘ [PARTIAL LINE BACKWARD] +char \x8D ( 4567 ) # 8D ⡸ [REVERSE LINE FEED] +char \x8E ( 345 7 ) # 8E â¡œ [SINGLE SHIFT TWO] +char \x8F (1 67 ) # 8F â¡¡ [SINGLE SHIFT THREE] +char \x90 (1234567 ) # 90 â¡¿ [DEVICE CONTROL STRING] +char \x91 (1 34 8) # 91 ⢠[PRIVATE USE ONE] +char \x92 (12 56 8) # 92 ⢳ [PRIVATE USE TWO] +char \x93 ( 3 567 ) # 93 â¡´ [SET TRANSMIT STATE] +char \x94 ( 2 4 6 ) # 94 â ª [CANCEL CHARACTER] +char \x95 ( 67 ) # 95 â¡  [MESSAGE WAITING] +char \x96 (123456 8) # 96 ⢿ [START OF GUARDED AREA] +char \x97 ( 3 6 8) # 97 ⢤ [END OF GUARDED AREA] +char \x98 ( 2 456 8) # 98 ⢺ [START OF STRING] +char \x99 ( 2 4 67 ) # 99 ⡪ [] +char \x9A (12 567 ) # 9A ⡳ [SINGLE CHARACTER INTRODUCER] +char \x9B ( 4 7 ) # 9B ⡈ [CONTROL SEQUENCE INTRODUCER] +char \x9C ( 7 ) # 9C â¡€ [STRING TERMINATOR] +char \x9D ( 45 7 ) # 9D ⡘ [OPERATING SYSTEM COMMAND] +char \x9E (1 34 6 8) # 9E ⢭ [PRIVACY MESSAGE] +char \x9F (1 345 8) # 9F ⢠[APPLICATION PROGRAM COMMAND] +char \xA0 ( 2 678) # A0 ⣢   [NO-BREAK SPACE] +char \xA1 ( 23 5 8) # A1 ⢖ ¡ [INVERTED EXCLAMATION MARK] +char \xA2 (1 3 56 8) # A2 ⢵ ¢ [CENT SIGN] +char \xA3 (123 8) # A3 ⢇ £ [POUND SIGN] +char \xA4 (1 5 78) # A4 ⣑ ¤ [CURRENCY SIGN] +char \xA5 (1 3 6 8) # A5 ⢥ Â¥ [YEN SIGN] +char \xA6 ( 4 6 8) # A6 ⢨ ¦ [BROKEN BAR] +char \xA7 ( 4 678) # A7 ⣨ § [SECTION SIGN] +char \xA8 ( 2 5 8) # A8 ⢒ ¨ [DIAERESIS] +char \xA9 (1 3 8) # A9 ⢅ © [COPYRIGHT SIGN] +char \xAA ( 4 78) # AA ⣈ ª [FEMININE ORDINAL INDICATOR] +char \xAB ( 23 78) # AB ⣆ « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC ( 3 5 7 ) # AC â¡” ¬ [NOT SIGN] +char \xAD ( 8) # AD ⢀ ­ [SOFT HYPHEN] +char \xAE (123 5 8) # AE ⢗ ® [REGISTERED SIGN] +char \xAF ( 23 56 8) # AF ⢶ ¯ [MACRON] +char \xB0 ( 56 8) # B0 ⢰ ° [DEGREE SIGN] +char \xB1 ( 3 8) # B1 ⢄ ± [PLUS-MINUS SIGN] +char \xB2 ( 23 7 ) # B2 ⡆ ² [SUPERSCRIPT TWO] +char \xB3 ( 2 5 7 ) # B3 â¡’ ³ [SUPERSCRIPT THREE] +char \xB4 ( 4 8) # B4 ⢈ ´ [ACUTE ACCENT] +char \xB5 ( 23 6 8) # B5 ⢦ µ [MICRO SIGN] +char \xB6 ( 4 67 ) # B6 ⡨ ¶ [PILCROW SIGN] +char \xB7 ( 3 78) # B7 ⣄ · [MIDDLE DOT] +char \xB8 ( 3 5678) # B8 ⣴ ¸ [CEDILLA] +char \xB9 ( 2 7 ) # B9 â¡‚ ¹ [SUPERSCRIPT ONE] +char \xBA (1 3 5 8) # BA ⢕ º [MASCULINE ORDINAL INDICATOR] +char \xBB ( 5678) # BB ⣰ » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBC ( 3456 8) # BC ⢼ ¼ [VULGAR FRACTION ONE QUARTER] +char \xBD ( 34567 ) # BD ⡼ ½ [VULGAR FRACTION ONE HALF] +char \xBE ( 345678) # BE ⣼ ¾ [VULGAR FRACTION THREE QUARTERS] +char \xBF ( 2 6 8) # BF ⢢ ¿ [INVERTED QUESTION MARK] +char \xC0 (123 5678) # C0 ⣷ À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 (123 567 ) # C1 â¡· à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 (1 678) # C2 ⣡  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 (1 4 678) # C3 ⣩ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 ( 345 7 ) # C4 â¡œ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 (1 67 ) # C5 â¡¡ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( 345 78) # C6 ⣜ Æ [LATIN CAPITAL LETTER AE] +char \xC7 (1234 67 ) # C7 ⡯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( 234 678) # C8 ⣮ È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 ( 234 67 ) # C9 â¡® É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA (12 67 ) # CA â¡£ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB (12 4 67 ) # CB â¡« Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC ( 34 78) # CC ⣌ ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD ( 34 7 ) # CD â¡Œ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE (1 4 67 ) # CE â¡© ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF (12 4567 ) # CF â¡» à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD0 (1 5678) # D0 ⣱ à [LATIN CAPITAL LETTER ETH] +char \xD1 (12 45678) # D1 ⣻ Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD2 ( 34 678) # D2 ⣬ Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 ( 34 67 ) # D3 ⡬ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 (1 4567 ) # D4 ⡹ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD5 (1 45678) # D5 ⣹ Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 ( 2 4 67 ) # D6 ⡪ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 ( 3 7 ) # D7 â¡„ × [MULTIPLICATION SIGN] +char \xD8 ( 2 4 678) # D8 ⣪ Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xD9 ( 2345678) # D9 ⣾ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA ( 234567 ) # DA ⡾ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB (1 567 ) # DB ⡱ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC (12 567 ) # DC ⡳ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD (1234 678) # DD ⣯ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDE (12 4 6 8) # DE ⢫ Þ [LATIN CAPITAL LETTER THORN] +char \xDF ( 234 8) # DF ⢎ ß [LATIN SMALL LETTER SHARP S] +char \xE0 (123 56 8) # E0 ⢷ à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 (123 56 ) # E1 â · á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 6 ) # E2 â ¡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 (1 4 6 8) # E3 ⢩ ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 ( 345 ) # E4 â œ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 (1 6 ) # E5 â ¡ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 ( 345 8) # E6 ⢜ æ [LATIN SMALL LETTER AE] +char \xE7 (1234 6 ) # E7 â ¯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 8) # E8 ⢮ è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 ( 234 6 ) # E9 â ® é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (12 6 ) # EA â £ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 ) # EB â « ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC ( 34 8) # EC ⢌ ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED ( 34 ) # ED â Œ í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 6 ) # EE â © î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 ) # EF â » ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF0 (1 56 8) # F0 ⢱ ð [LATIN SMALL LETTER ETH] +char \xF1 (12 456 8) # F1 ⢻ ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 ( 34 6 8) # F2 ⢬ ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 ( 34 6 ) # F3 â ¬ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 456 ) # F4 â ¹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 (1 456 8) # F5 ⢹ õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 2 4 6 ) # F6 â ª ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 ( 2 567 ) # F7 ⡲ ÷ [DIVISION SIGN] +char \xF8 ( 2 4 6 8) # F8 ⢪ ø [LATIN SMALL LETTER O WITH STROKE] +char \xF9 ( 23456 8) # F9 ⢾ ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA ( 23456 ) # FA â ¾ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 56 ) # FB â ± û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 ) # FC â ³ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD (1234 6 8) # FD ⢯ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \xFE (12 4 678) # FE ⣫ þ [LATIN SMALL LETTER THORN] +char \xFF (1 3456 8) # FF ⢽ ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] + +include common.tti diff --git a/Tables/fr-2007.ttb b/Tables/fr-2007.ttb new file mode 100644 index 0000000000000000000000000000000000000000..7a95938e895a38210b6491726236a2371a2c6167 --- /dev/null +++ b/Tables/fr-2007.ttb @@ -0,0 +1,227 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - French (unified, 2007) + +# This is the 2007 unification of french computer braille tables, based on the +# cp1252 character set +# +# http://www.avh.asso.fr/rubriques/infos_braille/table_braille_informatique.php + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# the numbers 1-9 are represented by the letters a-i with dot 6 added +# the number 0 is represented by dots 3456 +include numbers-french.tti + +# generated by ttbtest: charset=cp1252 +char \x00 (12345 8) # 00 ⢟ [NULL] +char \x01 (1234 678) # 01 ⣯ [START OF HEADING] +char \x02 (12 5 8) # 02 ⢓ [START OF TEXT] +char \x03 (1234 6 8) # 03 ⢯ [END OF TEXT] +char \x04 (1 45 78) # 04 ⣙ [END OF TRANSMISSION] +char \x05 (1 5 8) # 05 ⢑ [ENQUIRY] +char \x06 (12 4 78) # 06 ⣋ [ACKNOWLEDGE] +char \x07 (12 45 8) # 07 ⢛ [BELL] +char \x08 (12 5 78) # 08 ⣓ [BACKSPACE] +char \x09 (12 4 678) # 09 ⣫ [CHARACTER TABULATION] +char \x0A ( 2 456 8) # 0A ⢺ [LINE FEED (LF)] +char \x0B (1 3 8) # 0B ⢅ [LINE TABULATION] +char \x0C (123 78) # 0C ⣇ [FORM FEED (FF)] +char \x0D (1 34 78) # 0D ⣠[CARRIAGE RETURN (CR)] +char \x0E (1 345 8) # 0E ⢠[SHIFT OUT] +char \x0F ( 23 6 8) # 0F ⢦ [SHIFT IN] +char \x10 (1234 78) # 10 ⣠[DATA LINK ESCAPE] +char \x11 (12345 78) # 11 ⣟ [DEVICE CONTROL ONE] +char \x12 (123 5 78) # 12 ⣗ [DEVICE CONTROL TWO] +char \x13 ( 234 78) # 13 ⣎ [DEVICE CONTROL THREE] +char \x14 ( 2345 78) # 14 ⣞ [DEVICE CONTROL FOUR] +char \x15 (1 3 678) # 15 ⣥ [NEGATIVE ACKNOWLEDGE] +char \x16 (123 678) # 16 ⣧ [SYNCHRONOUS IDLE] +char \x17 ( 2 45678) # 17 ⣺ [END OF TRANSMISSION BLOCK] +char \x18 (1 34 678) # 18 ⣭ [CANCEL] +char \x19 (123 6 8) # 19 ⢧ [END OF MEDIUM] +char \x1A (1 5678) # 1A ⣱ [SUBSTITUTE] +char \x1B (12 5678) # 1B ⣳ [ESCAPE] +char \x1C (1 4 678) # 1C ⣩ [INFORMATION SEPARATOR FOUR] +char \x1D (12 678) # 1D ⣣ [INFORMATION SEPARATOR THREE] +char \x1E ( 23 5 7 ) # 1E â¡– [INFORMATION SEPARATOR TWO] +char \x1F ( 23 67 ) # 1F ⡦ [INFORMATION SEPARATOR ONE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 23 5 ) # 21 â – ! [EXCLAMATION MARK] +char \x22 ( 23 56 ) # 22 â ¶ " [QUOTATION MARK] +char \x23 ( 3456 8) # 23 ⢼ # [NUMBER SIGN] +char \x24 ( 3 5 7 ) # 24 â¡” $ [DOLLAR SIGN] +char \x25 ( 34 6 8) # 25 ⢬ % [PERCENT SIGN] +char \x26 (123456 8) # 26 ⢿ & [AMPERSAND] +char \x27 ( 3 ) # 27 â „ ' [APOSTROPHE] +char \x28 ( 23 6 ) # 28 â ¦ ( [LEFT PARENTHESIS] +char \x29 ( 3 56 ) # 29 â ´ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 23 5 78) # 2B ⣖ + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 2 56 ) # 2E â ² . [FULL STOP] +char \x2F ( 34 ) # 2F â Œ / [SOLIDUS] +# Hindu-Arabic numerals # 30-39 +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C ( 23 8) # 3C ⢆ < [LESS-THAN SIGN] +char \x3D ( 23 5678) # 3D ⣶ = [EQUALS SIGN] +char \x3E ( 567 ) # 3E â¡° > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 ( 345 ) # 40 â œ @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B ( 23 678) # 5B ⣦ [ [LEFT SQUARE BRACKET] +char \x5C ( 34 8) # 5C ⢌ \ [REVERSE SOLIDUS] +char \x5D ( 3 5678) # 5D ⣴ ] [RIGHT SQUARE BRACKET] +char \x5E ( 4 ) # 5E â ˆ ^ [CIRCUMFLEX ACCENT] +char \x5F ( 5 78) # 5F ⣠_ [LOW LINE] +char \x60 ( 6 ) # 60 â   ` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B ( 23 78) # 7B ⣆ { [LEFT CURLY BRACKET] +char \x7C ( 456 8) # 7C ⢸ | [VERTICAL LINE] +char \x7D ( 5678) # 7D ⣰ } [RIGHT CURLY BRACKET] +char \x7E ( 3 8) # 7E ⢄ ~ [TILDE] +char \x7F (123 8) # 7F ⢇ [DELETE] +char \u20AC (1 5 78) # 80 ⣑ € [EURO SIGN] +char \u201A ( 67 ) # 82 â¡  ‚ [SINGLE LOW-9 QUOTATION MARK] +char \u0192 (12 4 8) # 83 ⢋ Æ’ [LATIN SMALL LETTER F WITH HOOK] +char \u201E ( 56 ) # 84 â ° „ [DOUBLE LOW-9 QUOTATION MARK] +char \u2026 ( 3 6 8) # 85 ⢤ … [HORIZONTAL ELLIPSIS] +char \u2020 ( 3 56 8) # 86 ⢴ † [DAGGER] +char \u2021 ( 3 567 ) # 87 â¡´ ‡ [DOUBLE DAGGER] +char \u02C6 ( 4 8) # 88 ⢈ ˆ [MODIFIER LETTER CIRCUMFLEX ACCENT] +char \u2030 ( 34 678) # 89 ⣬ ‰ [PER MILLE SIGN] +char \u0160 ( 234 678) # 8A ⣮ Å  [LATIN CAPITAL LETTER S WITH CARON] +char \u2039 ( 5 7 ) # 8B ⡠‹ [SINGLE LEFT-POINTING ANGLE QUOTATION MARK] +char \u0152 ( 2 4 67 ) # 8C ⡪ Å’ [LATIN CAPITAL LIGATURE OE] +char \u017D (1 3 5678) # 8E ⣵ Ž [LATIN CAPITAL LETTER Z WITH CARON] +char \u2018 ( 6 8) # 91 ⢠ ‘ [LEFT SINGLE QUOTATION MARK] +char \u2019 ( 3 7 ) # 92 â¡„ ’ [RIGHT SINGLE QUOTATION MARK] +char \u201C ( 3 78) # 93 ⣄ “ [LEFT DOUBLE QUOTATION MARK] +char \u201D ( 678) # 94 ⣠ †[RIGHT DOUBLE QUOTATION MARK] +char \u2022 (12 45 78) # 95 ⣛ • [BULLET] +char \u2013 ( 4 78) # 96 ⣈ – [EN DASH] +char \u2014 ( 45 78) # 97 ⣘ — [EM DASH] +char \u02DC ( 4 67 ) # 98 ⡨ Ëœ [SMALL TILDE] +char \u2122 ( 2345 8) # 99 ⢞ â„¢ [TRADE MARK SIGN] +char \u0161 ( 234 6 8) # 9A ⢮ Å¡ [LATIN SMALL LETTER S WITH CARON] +char \u203A ( 5 8) # 9B ⢠› [SINGLE RIGHT-POINTING ANGLE QUOTATION MARK] +char \u0153 ( 2 4 6 8) # 9C ⢪ Å“ [LATIN SMALL LIGATURE OE] +char \u017E (1 3 56 8) # 9E ⢵ ž [LATIN SMALL LETTER Z WITH CARON] +char \u0178 (1 45678) # 9F ⣹ Ÿ [LATIN CAPITAL LETTER Y WITH DIAERESIS] +char \xA0 ( 7 ) # A0 â¡€   [NO-BREAK SPACE] +char \xA1 ( 23 5 8) # A1 ⢖ ¡ [INVERTED EXCLAMATION MARK] +char \xA2 (1 4 78) # A2 ⣉ ¢ [CENT SIGN] +char \xA3 ( 23 7 ) # A3 ⡆ £ [POUND SIGN] +char \xA4 ( 45 ) # A4 â ˜ ¤ [CURRENCY SIGN] +char \xA5 ( 2 5678) # A5 ⣲ Â¥ [YEN SIGN] +char \xA6 ( 45 8) # A6 ⢘ ¦ [BROKEN BAR] +char \xA7 (1234 8) # A7 ⢠§ [SECTION SIGN] +char \xA8 ( 4 6 ) # A8 â ¨ ¨ [DIAERESIS] +char \xA9 (1 4 8) # A9 ⢉ © [COPYRIGHT SIGN] +char \xAA (1 678) # AA ⣡ ª [FEMININE ORDINAL INDICATOR] +char \xAB ( 23 56 8) # AB ⢶ « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC ( 2 567 ) # AC ⡲ ¬ [NOT SIGN] +char \xAD ( 78) # AD ⣀ ­ [SOFT HYPHEN] +char \xAE (123 5 8) # AE ⢗ ® [REGISTERED SIGN] +char \xAF (1 34 8) # AF ⢠¯ [MACRON] +char \xB0 ( 2 67 ) # B0 â¡¢ ° [DEGREE SIGN] +char \xB1 ( 3 678) # B1 ⣤ ± [PLUS-MINUS SIGN] +char \xB2 ( 45 7 ) # B2 ⡘ ² [SUPERSCRIPT TWO] +char \xB3 ( 4567 ) # B3 ⡸ ³ [SUPERSCRIPT THREE] +char \xB4 ( 5 ) # B4 â  Â´ [ACUTE ACCENT] +char \xB5 ( 2 5 7 ) # B5 â¡’ µ [MICRO SIGN] +char \xB6 ( 45678) # B6 ⣸ ¶ [PILCROW SIGN] +char \xB7 ( 8) # B7 ⢀ · [MIDDLE DOT] +char \xB8 ( 456 ) # B8 â ¸ ¸ [CEDILLA] +char \xB9 ( 4 7 ) # B9 ⡈ ¹ [SUPERSCRIPT ONE] +char \xBA ( 2 678) # BA ⣢ º [MASCULINE ORDINAL INDICATOR] +char \xBB ( 23 567 ) # BB ⡶ » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBC (1 3 6 8) # BC ⢥ ¼ [VULGAR FRACTION ONE QUARTER] +char \xBD ( 4 6 8) # BD ⢨ ½ [VULGAR FRACTION ONE HALF] +char \xBE (1 34 6 8) # BE ⢭ ¾ [VULGAR FRACTION THREE QUARTERS] +char \xBF ( 2 6 8) # BF ⢢ ¿ [INVERTED QUESTION MARK] +char \xC0 (123 567 ) # C0 â¡· À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 (123 5678) # C1 ⣷ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 (1 67 ) # C2 â¡¡  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 (1 78) # C3 ⣠à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 ( 34567 ) # C4 ⡼ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 ( 2 7 ) # C5 â¡‚ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( 345 7 ) # C6 â¡œ Æ [LATIN CAPITAL LETTER AE] +char \xC7 (1234 67 ) # C7 ⡯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( 234 67 ) # C8 â¡® È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 (1234567 ) # C9 â¡¿ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA (12 67 ) # CA â¡£ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB (12 4 67 ) # CB â¡« Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC ( 2 4 78) # CC ⣊ ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD ( 34 7 ) # CD â¡Œ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE (1 4 67 ) # CE â¡© ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF (12 4567 ) # CF â¡» à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD0 (12 78) # D0 ⣃ à [LATIN CAPITAL LETTER ETH] +char \xD1 (1 345 78) # D1 ⣠Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD2 (1 3 5 78) # D2 ⣕ Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 ( 34 67 ) # D3 ⡬ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 (1 4567 ) # D4 ⡹ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD5 (1 3 78) # D5 ⣅ Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 ( 2 4 678) # D6 ⣪ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 ( 3 5 78) # D7 ⣔ × [MULTIPLICATION SIGN] +char \xD8 ( 345678) # D8 ⣼ Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xD9 ( 234567 ) # D9 ⡾ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA ( 2345678) # DA ⣾ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB (1 567 ) # DB ⡱ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC (12 567 ) # DC ⡳ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD (1 345678) # DD ⣽ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDE ( 2 45 78) # DE ⣚ Þ [LATIN CAPITAL LETTER THORN] +char \xDF ( 234 8) # DF ⢎ ß [LATIN SMALL LETTER SHARP S] +char \xE0 (123 56 ) # E0 â · à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 (123 56 8) # E1 ⢷ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 6 8) # E2 ⢡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 (1 8) # E3 ⢠ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 ( 345 78) # E4 ⣜ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 ( 2 8) # E5 ⢂ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 ( 345 8) # E6 ⢜ æ [LATIN SMALL LETTER AE] +char \xE7 (1234 6 ) # E7 â ¯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 ) # E8 â ® è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (123456 ) # E9 â ¿ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (12 6 8) # EA ⢣ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 8) # EB ⢫ ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC ( 2 4 8) # EC ⢊ ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED ( 34 78) # ED ⣌ í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 6 8) # EE ⢩ î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 8) # EF ⢻ ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF0 (12 8) # F0 ⢃ ð [LATIN SMALL LETTER ETH] +char \xF1 (12 45678) # F1 ⣻ ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 (1 3 5 8) # F2 ⢕ ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 ( 34 6 ) # F3 â ¬ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 456 8) # F4 ⢹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 ( 4 678) # F5 ⣨ õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 3 5 8) # F6 ⢔ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 ( 2 5 78) # F7 ⣒ ÷ [DIVISION SIGN] +char \xF8 ( 56 8) # F8 ⢰ ø [LATIN SMALL LETTER O WITH STROKE] +char \xF9 ( 23456 ) # F9 â ¾ ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA ( 23456 8) # FA ⢾ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 56 8) # FB ⢱ û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 8) # FC ⢳ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD (1 3456 8) # FD ⢽ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \xFE ( 2 45 8) # FE ⢚ þ [LATIN SMALL LETTER THORN] +char \xFF ( 2 56 8) # FF ⢲ ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] + +include common.tti diff --git a/ContractionTables/fr-abrege.ctb b/Tables/fr-abrege.ctb similarity index 99% rename from ContractionTables/fr-abrege.ctb rename to Tables/fr-abrege.ctb index 783f484c9af1472126cfa4123a362510a2328630..228a236f3ae5c94315b3aa1b1b819885ff9bc784 100644 --- a/ContractionTables/fr-abrege.ctb +++ b/Tables/fr-abrege.ctb @@ -2,19 +2,22 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# 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://mielke.cc/brltty/ # # This software is maintained by Dave Mielke . ############################################################################### +# BRLTTY Contraction Table - French (contracted) + # Auteur: # # Nicolas Pitre diff --git a/Tables/fr-cbifs.ttb b/Tables/fr-cbifs.ttb new file mode 100644 index 0000000000000000000000000000000000000000..22db581a072587caf4cdc6075e37eed3d05d56ec --- /dev/null +++ b/Tables/fr-cbifs.ttb @@ -0,0 +1,205 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - French (Code Braille Informatique Français Standard) + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# the standard representations for the Latin control characters +include control-latin.tti + +# the numbers 1-9 are represented by the letters a-i with dot 6 added +# the number 0 is represented by dots 3456 +include numbers-french.tti + +# generated by ttbtest: charset=iso-8859-1 +char \x00 ( 345 78) # 00 ⣜ [NULL] +# Latin control characters # 01-1A +char \x1B ( 2 4 678) # 1B ⣪ [ESCAPE] +char \x1C (12 5678) # 1C ⣳ [INFORMATION SEPARATOR FOUR] +char \x1D (12 45678) # 1D ⣻ [INFORMATION SEPARATOR THREE] +char \x1E ( 45 78) # 1E ⣘ [INFORMATION SEPARATOR TWO] +char \x1F ( 45678) # 1F ⣸ [INFORMATION SEPARATOR ONE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 23 5 ) # 21 â – ! [EXCLAMATION MARK] +char \x22 ( 23 56 ) # 22 â ¶ " [QUOTATION MARK] +char \x23 ( 34 6 ) # 23 â ¬ # [NUMBER SIGN] +char \x24 ( 456 ) # 24 â ¸ $ [DOLLAR SIGN] +char \x25 (1234 6 ) # 25 â ¯ % [PERCENT SIGN] +char \x26 (123456 ) # 26 â ¿ & [AMPERSAND] +char \x27 ( 6 ) # 27 â   ' [APOSTROPHE] +char \x28 ( 23 6 ) # 28 â ¦ ( [LEFT PARENTHESIS] +char \x29 ( 3 56 ) # 29 â ´ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 23 5 78) # 2B ⣖ + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 3 ) # 2E â „ . [FULL STOP] +char \x2F ( 2 56 ) # 2F â ² / [SOLIDUS] +# Hindu-Arabic numerals # 30-39 +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C ( 56 ) # 3C â ° < [LESS-THAN SIGN] +char \x3D ( 23 5678) # 3D ⣶ = [EQUALS SIGN] +char \x3E ( 45 ) # 3E â ˜ > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 ( 345 ) # 40 â œ @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B (123 56 ) # 5B â · [ [LEFT SQUARE BRACKET] +char \x5C ( 234 6 ) # 5C â ® \ [REVERSE SOLIDUS] +char \x5D ( 23456 ) # 5D â ¾ ] [RIGHT SQUARE BRACKET] +char \x5E ( 34 ) # 5E â Œ ^ [CIRCUMFLEX ACCENT] +char \x5F ( 4567 ) # 5F ⡸ _ [LOW LINE] +char \x60 ( 345 7 ) # 60 â¡œ ` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B (123 567 ) # 7B â¡· { [LEFT CURLY BRACKET] +char \x7C ( 234 67 ) # 7C â¡® | [VERTICAL LINE] +char \x7D ( 234567 ) # 7D ⡾ } [RIGHT CURLY BRACKET] +char \x7E ( 34 7 ) # 7E â¡Œ ~ [TILDE] +char \x7F ( 456 8) # 7F ⢸ [DELETE] +char \x80 (1234 67 ) # 80 ⡯ [] +char \x81 (12 56 8) # 81 ⢳ [] +char \x82 (123456 8) # 82 ⢿ [BREAK PERMITTED HERE] +char \x83 (1 678) # 83 ⣡ [NO BREAK HERE] +char \x84 ( 4 8) # 84 ⢈ [] +char \x85 (123 56 8) # 85 ⢷ [NEXT LINE (NEL)] +char \x86 (1 4 6 8) # 86 ⢩ [START OF SELECTED AREA] +char \x87 (1234 6 8) # 87 ⢯ [END OF SELECTED AREA] +char \x88 (12 678) # 88 ⣣ [CHARACTER TABULATION SET] +char \x89 (12 4 6 8) # 89 ⢫ [CHARACTER TABULATION WITH JUSTIFICATION] +char \x8A ( 234 6 8) # 8A ⢮ [LINE TABULATION SET] +char \x8B (12 456 8) # 8B ⢻ [PARTIAL LINE FORWARD] +char \x8C (1 4 678) # 8C ⣩ [PARTIAL LINE BACKWARD] +char \x8D (1 4 6 8) # 8D ⢩ [REVERSE LINE FEED] +char \x8E (12 4 678) # 8E ⣫ [SINGLE SHIFT TWO] +char \x8F (1 4 678) # 8F ⣩ [SINGLE SHIFT THREE] +char \x90 ( 2345678) # 90 ⣾ [DEVICE CONTROL STRING] +char \x91 ( 2 67 ) # 91 â¡¢ [PRIVATE USE ONE] +char \x92 (1234 678) # 92 ⣯ [PRIVATE USE TWO] +char \x93 (1 45678) # 93 ⣹ [SET TRANSMIT STATE] +char \x94 ( 23 56 8) # 94 ⢶ [CANCEL CHARACTER] +char \x95 (1 4 6 8) # 95 ⢩ [MESSAGE WAITING] +char \x96 (1 5678) # 96 ⣱ [START OF GUARDED AREA] +char \x97 ( 23456 8) # 97 ⢾ [END OF GUARDED AREA] +char \x98 (1 45678) # 98 ⣹ [START OF STRING] +char \x99 ( 23 5 78) # 99 ⣖ [] +char \x9A (12 678) # 9A ⣣ [SINGLE CHARACTER INTRODUCER] +char \x9B ( 2 5 8) # 9B ⢒ [CONTROL SEQUENCE INTRODUCER] +char \x9C ( 23 567 ) # 9C ⡶ [STRING TERMINATOR] +char \x9D ( 2 78) # 9D ⣂ [OPERATING SYSTEM COMMAND] +char \x9E ( 45 8) # 9E ⢘ [PRIVACY MESSAGE] +char \x9F ( 456 8) # 9F ⢸ [APPLICATION PROGRAM COMMAND] +char \xA0 (1 456 8) # A0 ⢹   [NO-BREAK SPACE] +char \xA1 ( 3 67 ) # A1 ⡤ ¡ [INVERTED EXCLAMATION MARK] +char \xA2 ( 2 4 6 8) # A2 ⢪ ¢ [CENT SIGN] +char \xA3 (12 56 8) # A3 ⢳ £ [POUND SIGN] +char \xA4 ( 2 7 ) # A4 â¡‚ ¤ [CURRENCY SIGN] +char \xA5 (12 456 8) # A5 ⢻ Â¥ [YEN SIGN] +char \xA6 (12 67 ) # A6 â¡£ ¦ [BROKEN BAR] +char \xA7 (12345678) # A7 ⣿ § [SECTION SIGN] +char \xA8 (1 4567 ) # A8 ⡹ ¨ [DIAERESIS] +char \xA9 ( 234567 ) # A9 ⡾ © [COPYRIGHT SIGN] +char \xAA (1234 67 ) # AA ⡯ ª [FEMININE ORDINAL INDICATOR] +char \xAB ( 4 67 ) # AB ⡨ « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC (1 67 ) # AC â¡¡ ¬ [NOT SIGN] +char \xAD ( 3 6 8) # AD ⢤ ­ [SOFT HYPHEN] +char \xAE (1234567 ) # AE â¡¿ ® [REGISTERED SIGN] +char \xAF ( 567 ) # AF â¡° ¯ [MACRON] +char \xB0 ( 23 6 8) # B0 ⢦ ° [DEGREE SIGN] +char \xB1 ( 2 8) # B1 ⢂ ± [PLUS-MINUS SIGN] +char \xB2 (123456 8) # B2 ⢿ ² [SUPERSCRIPT TWO] +char \xB3 ( 2 5 7 ) # B3 â¡’ ³ [SUPERSCRIPT THREE] +char \xB4 ( 2 567 ) # B4 ⡲ ´ [ACUTE ACCENT] +char \xB5 (1234 6 8) # B5 ⢯ µ [MICRO SIGN] +char \xB6 (12345678) # B6 ⣿ ¶ [PILCROW SIGN] +char \xB7 (1 56 8) # B7 ⢱ · [MIDDLE DOT] +char \xB8 ( 23 67 ) # B8 ⡦ ¸ [CEDILLA] +char \xB9 ( 3 5 7 ) # B9 â¡” ¹ [SUPERSCRIPT ONE] +char \xBA ( 3 7 ) # BA â¡„ º [MASCULINE ORDINAL INDICATOR] +char \xBB ( 34 7 ) # BB â¡Œ » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBC ( 67 ) # BC â¡  ¼ [VULGAR FRACTION ONE QUARTER] +char \xBD ( 34 67 ) # BD ⡬ ½ [VULGAR FRACTION ONE HALF] +char \xBE ( 345 7 ) # BE â¡œ ¾ [VULGAR FRACTION THREE QUARTERS] +char \xBF (123 567 ) # BF â¡· ¿ [INVERTED QUESTION MARK] +char \xC0 ( 78) # C0 ⣀ À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 ( 234 678) # C1 ⣮ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 ( 5 78) # C2 ⣠ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 ( 345678) # C3 ⣼ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 (1 345 8) # C4 ⢠Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 (1 3 5 8) # C5 ⢕ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 (123 5 8) # C6 ⢗ Æ [LATIN CAPITAL LETTER AE] +char \xC7 ( 4 8) # C7 ⢈ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 (123 5678) # C8 ⣷ È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 (1234 8) # C9 ⢠É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA (1 678) # CA ⣡ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB ( 34 678) # CB ⣬ Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC ( 678) # CC ⣠ ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD ( 3 678) # CD ⣤ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE ( 4 678) # CE ⣨ ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF ( 34 78) # CF ⣌ à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD0 ( 3 5678) # D0 ⣴ à [LATIN CAPITAL LETTER ETH] +char \xD1 (1 4 67 ) # D1 â¡© Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD2 ( 23 78) # D2 ⣆ Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 ( 2 5 78) # D3 ⣒ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 ( 2 5678) # D4 ⣲ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD5 ( 2 678) # D5 ⣢ Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 (1 3456 8) # D6 ⢽ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 ( 23 5678) # D7 ⣶ × [MULTIPLICATION SIGN] +char \xD8 ( 23 678) # D8 ⣦ Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xD9 ( 3 5 78) # D9 ⣔ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA (1 5678) # DA ⣱ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB ( 5678) # DB ⣰ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC (1 3 56 8) # DC ⢵ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD (12345678) # DD ⣿ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDE ( 345 78) # DE ⣜ Þ [LATIN CAPITAL LETTER THORN] +char \xDF ( 234 6 8) # DF ⢮ ß [LATIN SMALL LETTER SHARP S] +char \xE0 (123 56 ) # E0 â · à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 ( 7 ) # E1 â¡€ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 6 ) # E2 â ¡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 ( 3456 8) # E3 ⢼ ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 (1 45 8) # E4 ⢙ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 (12 4 8) # E5 ⢋ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 (12345 8) # E6 ⢟ æ [LATIN SMALL LETTER AE] +char \xE7 (1234 6 ) # E7 â ¯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 ) # E8 â ® è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (123456 ) # E9 â ¿ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (12 6 ) # EA â £ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 ) # EB â « ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC (1 34 8) # EC ⢠ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED ( 234 67 ) # ED â¡® í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 6 ) # EE â © î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 ) # EF â » ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF0 ( 3 56 8) # F0 ⢴ ð [LATIN SMALL LETTER ETH] +char \xF1 (12 4 67 ) # F1 â¡« ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 (1 3 6 8) # F2 ⢥ ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 ( 5 7 ) # F3 ⡠ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 456 ) # F4 â ¹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 ( 2 6 8) # F5 ⢢ õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 2345 8) # F6 ⢞ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 ( 23 5 8) # F7 ⢖ ÷ [DIVISION SIGN] +char \xF8 (1 3 5 7 ) # F8 â¡• ø [LATIN SMALL LETTER O WITH STROKE] +char \xF9 ( 23456 ) # F9 â ¾ ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA ( 34567 ) # FA ⡼ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 56 ) # FB â ± û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 ) # FC â ³ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD ( 23 7 ) # FD ⡆ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \xFE ( 345 8) # FE ⢜ þ [LATIN SMALL LETTER THORN] +char \xFF (1 567 ) # FF ⡱ ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] + +include common.tti diff --git a/ContractionTables/fr-integral.ctb b/Tables/fr-integral.ctb similarity index 71% rename from ContractionTables/fr-integral.ctb rename to Tables/fr-integral.ctb index 1fdd36fe9b2f203180782be23b1754bb2bda43cd..dc2bb52173f98aa770d34655ff3ad4cb4ac02cf2 100644 --- a/ContractionTables/fr-integral.ctb +++ b/Tables/fr-integral.ctb @@ -2,19 +2,22 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# 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://mielke.cc/brltty/ # # This software is maintained by Dave Mielke . ############################################################################### +# BRLTTY Contraction Table - French (uncontracted) + # Définitions pour code braille français international unifié # Par Nicolas Pitre # Référence: http://www.inlb.qc.ca/apropos/c2003unificationdubraille.aspx @@ -31,31 +34,8 @@ midnum / 34 midnum : 25 endnum # 56-3456 -always a 1 lettre a -always b 12 lettre b -always c 14 lettre c -always d 145 lettre d -always e 15 lettre e -always f 124 lettre f -always g 1245 lettre g -always h 125 lettre h -always i 24 lettre i -always j 245 lettre j -always k 13 lettre k -always l 123 lettre l -always m 134 lettre m -always n 1345 lettre n -always o 135 lettre o -always p 1234 lettre p -always q 12345 lettre q -always r 1235 lettre r -always s 234 lettre s -always t 2345 lettre t -always u 136 lettre u -always v 1236 lettre v -always x 1346 lettre x -always y 13456 lettre y -always z 1356 lettre z +include letters-latin.cti + always ç 12346 c cédille always é 123456 e accent aigu always à 12356 a accent grave @@ -70,33 +50,7 @@ always ë 1246 e tréma always ï 12456 i tréma always ü 1256 u tréma always oe 246 oe ligatur -always w 2456 lettre w - -always A 1 lettre A -always B 12 lettre B -always C 14 lettre C -always D 145 lettre D -always E 15 lettre E -always F 124 lettre F -always G 1245 lettre G -always H 125 lettre H -always I 24 lettre I -always J 245 lettre J -always K 13 lettre K -always L 123 lettre L -always M 134 lettre M -always N 1345 lettre N -always O 135 lettre O -always P 1234 lettre P -always Q 12345 lettre Q -always R 1235 lettre R -always S 234 lettre S -always T 2345 lettre T -always U 136 lettre U -always V 1236 lettre V -always X 1346 lettre X -always Y 13456 lettre Y -always Z 1356 lettre Z + always Ç 12346 C cédille always É 123456 E accent aigu always À 12356 A accent grave @@ -111,7 +65,6 @@ always Ë 1246 E tréma always à 12456 I tréma always Ãœ 1256 U tréma always Oe 246 Oe ligatur -always W 2456 lettre w always , 2 virgule always ; 23 point-virgule diff --git a/Tables/fr-vs.ttb b/Tables/fr-vs.ttb new file mode 100644 index 0000000000000000000000000000000000000000..a4e292f85abb7993d2f4fac943f826f07c22d78b --- /dev/null +++ b/Tables/fr-vs.ttb @@ -0,0 +1,233 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - French (VisioBraille) + +# This table is the default one for VisioBraille braille terminals. +# It was first used by Sagem printers, before being adopted by Handialog as +# the default braille table. +# Although it is a bit old, VisioBraille users may find this table more +# comfortable than standard French braille tables. + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# the numbers 1-9 are represented by the letters a-i with dot 6 added +# the number 0 is represented by dots 3456 +include numbers-french.tti + +# generated by ttbtest: charset=iso-8859-1 +char \x00 ( 345 78) # 00 ⣜ [NULL] +char \x01 (1 8) # 01 ⢠[START OF HEADING] +char \x02 (12 8) # 02 ⢃ [START OF TEXT] +char \x03 (1 4 8) # 03 ⢉ [END OF TEXT] +char \x04 (1 45 8) # 04 ⢙ [END OF TRANSMISSION] +char \x05 (1 5 8) # 05 ⢑ [ENQUIRY] +char \x06 (12 4 8) # 06 ⢋ [ACKNOWLEDGE] +char \x07 (12 45 8) # 07 ⢛ [BELL] +char \x08 (12 5 8) # 08 ⢓ [BACKSPACE] +char \x09 ( 2 4 8) # 09 ⢊ [CHARACTER TABULATION] +char \x0A ( 2 45 8) # 0A ⢚ [LINE FEED (LF)] +char \x0B (1 3 8) # 0B ⢅ [LINE TABULATION] +char \x0C (123 8) # 0C ⢇ [FORM FEED (FF)] +char \x0D (1 34 8) # 0D ⢠[CARRIAGE RETURN (CR)] +char \x0E (1 345 8) # 0E ⢠[SHIFT OUT] +char \x0F (1 3 5 8) # 0F ⢕ [SHIFT IN] +char \x10 (1234 8) # 10 ⢠[DATA LINK ESCAPE] +char \x11 (12345 8) # 11 ⢟ [DEVICE CONTROL ONE] +char \x12 (123 5 8) # 12 ⢗ [DEVICE CONTROL TWO] +char \x13 ( 234 8) # 13 ⢎ [DEVICE CONTROL THREE] +char \x14 ( 2345 8) # 14 ⢞ [DEVICE CONTROL FOUR] +char \x15 (1 3 6 8) # 15 ⢥ [NEGATIVE ACKNOWLEDGE] +char \x16 (123 6 8) # 16 ⢧ [SYNCHRONOUS IDLE] +char \x17 ( 2 456 8) # 17 ⢺ [END OF TRANSMISSION BLOCK] +char \x18 (1 34 6 8) # 18 ⢭ [CANCEL] +char \x19 (1 3456 8) # 19 ⢽ [END OF MEDIUM] +char \x1A (1 3 56 8) # 1A ⢵ [SUBSTITUTE] +char \x1B ( 345678) # 1B ⣼ [ESCAPE] +char \x1C (1 6 8) # 1C ⢡ [INFORMATION SEPARATOR FOUR] +char \x1D (12 6 8) # 1D ⢣ [INFORMATION SEPARATOR THREE] +char \x1E (1 4 6 8) # 1E ⢩ [INFORMATION SEPARATOR TWO] +char \x1F (1 456 8) # 1F ⢹ [INFORMATION SEPARATOR ONE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 23 5 ) # 21 â – ! [EXCLAMATION MARK] +char \x22 ( 4 ) # 22 â ˆ " [QUOTATION MARK] +char \x23 ( 4 6 ) # 23 â ¨ # [NUMBER SIGN] +char \x24 ( 456 ) # 24 â ¸ $ [DOLLAR SIGN] +char \x25 ( 45 ) # 25 â ˜ % [PERCENT SIGN] +char \x26 ( 345 ) # 26 â œ & [AMPERSAND] +char \x27 ( 3 ) # 27 â „ ' [APOSTROPHE] +char \x28 ( 6 ) # 28 â   ( [LEFT PARENTHESIS] +char \x29 ( 3 5 ) # 29 â ” ) [RIGHT PARENTHESIS] +char \x2A ( 34 ) # 2A â Œ * [ASTERISK] +char \x2B ( 56 ) # 2B â ° + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 2 56 ) # 2E â ² . [FULL STOP] +char \x2F (123456 ) # 2F â ¿ / [SOLIDUS] +# Hindu-Arabic numerals # 30-39 +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C ( 23 6 ) # 3C â ¦ < [LESS-THAN SIGN] +char \x3D ( 23 56 ) # 3D â ¶ = [EQUALS SIGN] +char \x3E ( 3 56 ) # 3E â ´ > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 (1234 6 ) # 40 â ¯ @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B (123 56 ) # 5B â · [ [LEFT SQUARE BRACKET] +char \x5C ( 234 6 ) # 5C â ® \ [REVERSE SOLIDUS] +char \x5D ( 23456 ) # 5D â ¾ ] [RIGHT SQUARE BRACKET] +char \x5E ( 34 6 ) # 5E â ¬ ^ [CIRCUMFLEX ACCENT] +char \x5F ( 3 8) # 5F ⢄ _ [LOW LINE] +char \x60 ( 3 7 ) # 60 â¡„ ` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B ( 67 ) # 7B â¡  { [LEFT CURLY BRACKET] +char \x7C ( 23 5 8) # 7C ⢖ | [VERTICAL LINE] +char \x7D ( 3 5 8) # 7D ⢔ } [RIGHT CURLY BRACKET] +char \x7E ( 5 78) # 7E ⣠~ [TILDE] +char \x7F ( ) # 7F â € [DELETE] +char \x80 (1234 678) # 80 ⣯ [] +char \x81 (12 56 8) # 81 ⢳ [] +char \x82 ( ) # 82 â € [BREAK PERMITTED HERE] +char \x83 (1 6 8) # 83 ⢡ [NO BREAK HERE] +char \x84 ( 345 8) # 84 ⢜ [] +char \x85 (123 56 8) # 85 ⢷ [NEXT LINE (NEL)] +char \x86 ( ) # 86 â € [START OF SELECTED AREA] +char \x87 (1234 6 8) # 87 ⢯ [END OF SELECTED AREA] +char \x88 (12 6 8) # 88 ⢣ [CHARACTER TABULATION SET] +char \x89 (12 4 6 8) # 89 ⢫ [CHARACTER TABULATION WITH JUSTIFICATION] +char \x8A ( 234 6 8) # 8A ⢮ [LINE TABULATION SET] +char \x8B (12 456 8) # 8B ⢻ [PARTIAL LINE FORWARD] +char \x8C (1 4 6 8) # 8C ⢩ [PARTIAL LINE BACKWARD] +char \x8D ( ) # 8D â € [REVERSE LINE FEED] +char \x8E ( 345 78) # 8E ⣜ [SINGLE SHIFT TWO] +char \x8F ( ) # 8F â € [SINGLE SHIFT THREE] +char \x90 (12345678) # 90 ⣿ [DEVICE CONTROL STRING] +char \x91 ( ) # 91 â € [PRIVATE USE ONE] +char \x92 ( ) # 92 â € [PRIVATE USE TWO] +char \x93 (1 456 8) # 93 ⢹ [SET TRANSMIT STATE] +char \x94 ( 2 4 6 8) # 94 ⢪ [CANCEL CHARACTER] +char \x95 ( ) # 95 â € [MESSAGE WAITING] +char \x96 (1 56 8) # 96 ⢱ [START OF GUARDED AREA] +char \x97 ( 23456 8) # 97 ⢾ [END OF GUARDED AREA] +char \x98 (12 456 8) # 98 ⢻ [START OF STRING] +char \x99 ( 2 4 678) # 99 ⣪ [] +char \x9A (12 5678) # 9A ⣳ [SINGLE CHARACTER INTRODUCER] +char \x9B ( ) # 9B â € [CONTROL SEQUENCE INTRODUCER] +char \x9C ( ) # 9C â € [STRING TERMINATOR] +char \x9D ( ) # 9D â € [OPERATING SYSTEM COMMAND] +char \x9E ( ) # 9E â € [PRIVACY MESSAGE] +char \x9F ( ) # 9F â € [APPLICATION PROGRAM COMMAND] +char \xA0 ( ) # A0 â €   [NO-BREAK SPACE] +char \xA1 ( ) # A1 â € ¡ [INVERTED EXCLAMATION MARK] +char \xA2 ( ) # A2 â € ¢ [CENT SIGN] +char \xA3 ( ) # A3 â € £ [POUND SIGN] +char \xA4 ( ) # A4 â € ¤ [CURRENCY SIGN] +char \xA5 ( ) # A5 â € Â¥ [YEN SIGN] +char \xA6 ( ) # A6 â € ¦ [BROKEN BAR] +char \xA7 ( ) # A7 â € § [SECTION SIGN] +char \xA8 ( ) # A8 â € ¨ [DIAERESIS] +char \xA9 ( ) # A9 â € © [COPYRIGHT SIGN] +char \xAA ( ) # AA â € ª [FEMININE ORDINAL INDICATOR] +char \xAB ( ) # AB â € « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC ( ) # AC â € ¬ [NOT SIGN] +char \xAD ( ) # AD â € ­ [SOFT HYPHEN] +char \xAE ( ) # AE â € ® [REGISTERED SIGN] +char \xAF ( ) # AF â € ¯ [MACRON] +char \xB0 ( ) # B0 â € ° [DEGREE SIGN] +char \xB1 ( ) # B1 â € ± [PLUS-MINUS SIGN] +char \xB2 ( ) # B2 â € ² [SUPERSCRIPT TWO] +char \xB3 ( ) # B3 â € ³ [SUPERSCRIPT THREE] +char \xB4 ( ) # B4 â € ´ [ACUTE ACCENT] +char \xB5 ( ) # B5 â € µ [MICRO SIGN] +char \xB6 ( ) # B6 â € ¶ [PILCROW SIGN] +char \xB7 ( ) # B7 â € · [MIDDLE DOT] +char \xB8 ( ) # B8 â € ¸ [CEDILLA] +char \xB9 ( ) # B9 â € ¹ [SUPERSCRIPT ONE] +char \xBA ( ) # BA â € º [MASCULINE ORDINAL INDICATOR] +char \xBB ( ) # BB â € » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBC ( ) # BC â € ¼ [VULGAR FRACTION ONE QUARTER] +char \xBD ( ) # BD â € ½ [VULGAR FRACTION ONE HALF] +char \xBE ( ) # BE â € ¾ [VULGAR FRACTION THREE QUARTERS] +char \xBF ( ) # BF â € ¿ [INVERTED QUESTION MARK] +char \xC0 (123 5678) # C0 ⣷ À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 ( ) # C1 â € à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 (1 78) # C2 ⣠ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 ( ) # C3 â € à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 ( 3 5 78) # C4 ⣔ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 ( ) # C5 â € Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( ) # C6 â € Æ [LATIN CAPITAL LETTER AE] +char \xC7 (1234 678) # C7 ⣯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( ) # C8 â € È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 (12345678) # C9 ⣿ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA (12 678) # CA ⣣ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB (12 4 678) # CB ⣫ Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC ( ) # CC â € ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD ( ) # CD â € à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE (1 4 678) # CE ⣩ ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF (12 45678) # CF ⣻ à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD0 ( ) # D0 â € à [LATIN CAPITAL LETTER ETH] +char \xD1 ( ) # D1 â € Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD2 ( ) # D2 â € Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 ( ) # D3 â € Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 (1 3 5678) # D4 ⣵ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD5 ( ) # D5 â € Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 ( 2 4 678) # D6 ⣪ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 ( ) # D7 â € × [MULTIPLICATION SIGN] +char \xD8 ( ) # D8 â € Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xD9 ( 2345678) # D9 ⣾ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA ( ) # DA â € Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB (1 5678) # DB ⣱ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC (12 5678) # DC ⣳ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD ( ) # DD â € à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDE ( ) # DE â € Þ [LATIN CAPITAL LETTER THORN] +char \xDF ( ) # DF â € ß [LATIN SMALL LETTER SHARP S] +char \xE0 (123 56 8) # E0 ⢷ à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 ( ) # E1 â € á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 6 8) # E2 ⢡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 ( ) # E3 â € ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 ( 345 8) # E4 ⢜ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 ( ) # E5 â € Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 ( ) # E6 â € æ [LATIN SMALL LETTER AE] +char \xE7 (1234 6 8) # E7 ⢯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 8) # E8 ⢮ è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (123456 8) # E9 ⢿ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (12 6 8) # EA ⢣ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 8) # EB ⢫ ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC ( ) # EC â € ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED ( ) # ED â € í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 6 8) # EE ⢩ î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 8) # EF ⢻ ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF0 ( ) # F0 â € ð [LATIN SMALL LETTER ETH] +char \xF1 ( ) # F1 â € ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 ( ) # F2 â € ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 ( ) # F3 â € ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 456 8) # F4 ⢹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 ( ) # F5 â € õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 2 4 6 8) # F6 ⢪ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 ( ) # F7 â € ÷ [DIVISION SIGN] +char \xF8 ( ) # F8 â € ø [LATIN SMALL LETTER O WITH STROKE] +char \xF9 ( 23456 8) # F9 ⢾ ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA ( ) # FA â € ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 56 8) # FB ⢱ û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 8) # FC ⢳ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD ( ) # FD â € ý [LATIN SMALL LETTER Y WITH ACUTE] +char \xFE ( ) # FE â € þ [LATIN SMALL LETTER THORN] +char \xFF ( ) # FF â € ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] + +include common.tti diff --git a/Tables/fr.ttb b/Tables/fr.ttb new file mode 100644 index 0000000000000000000000000000000000000000..0dffcccd697c8f520575c209f750b1c5def92d3d --- /dev/null +++ b/Tables/fr.ttb @@ -0,0 +1,21 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - French + +include fr-2007.ttb diff --git a/Tables/fr_CA.ttb b/Tables/fr_CA.ttb new file mode 100644 index 0000000000000000000000000000000000000000..255ed4deb649490d429e0f3293d64b28d35c0562 --- /dev/null +++ b/Tables/fr_CA.ttb @@ -0,0 +1,210 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - French (Canada) + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# the standard representations for the Latin control characters +include control-latin.tti + +# generated by ttbtest: charset=iso-8859-1 +char \x00 ( 4 78) # 00 ⣈ [NULL] +# Latin control characters # 01-1A +char \x1B ( 2 4 678) # 1B ⣪ [ESCAPE] +char \x1C (12 5678) # 1C ⣳ [INFORMATION SEPARATOR FOUR] +char \x1D (12 45678) # 1D ⣻ [INFORMATION SEPARATOR THREE] +char \x1E ( 45 78) # 1E ⣘ [INFORMATION SEPARATOR TWO] +char \x1F ( 45678) # 1F ⣸ [INFORMATION SEPARATOR ONE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 23 5 ) # 21 â – ! [EXCLAMATION MARK] +char \x22 (1 4 8) # 22 ⢉ " [QUOTATION MARK] +char \x23 ( 3456 ) # 23 â ¼ # [NUMBER SIGN] +char \x24 (12 4 6 ) # 24 â « $ [DOLLAR SIGN] +char \x25 (1 4 6 8) # 25 ⢩ % [PERCENT SIGN] +char \x26 (1234 6 8) # 26 ⢯ & [AMPERSAND] +char \x27 ( 3 ) # 27 â „ ' [APOSTROPHE] +char \x28 (123 567 ) # 28 â¡· ( [LEFT PARENTHESIS] +char \x29 ( 234567 ) # 29 ⡾ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 23 5 7 ) # 2B â¡– + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 2 56 ) # 2E â ² . [FULL STOP] +char \x2F ( 34 7 ) # 2F â¡Œ / [SOLIDUS] +char \x30 ( 3 56 8) # 30 ⢴ 0 [DIGIT ZERO] +char \x31 ( 2 8) # 31 ⢂ 1 [DIGIT ONE] +char \x32 ( 23 8) # 32 ⢆ 2 [DIGIT TWO] +char \x33 ( 2 5 8) # 33 ⢒ 3 [DIGIT THREE] +char \x34 ( 2 56 8) # 34 ⢲ 4 [DIGIT FOUR] +char \x35 ( 2 6 8) # 35 ⢢ 5 [DIGIT FIVE] +char \x36 ( 23 5 8) # 36 ⢖ 6 [DIGIT SIX] +char \x37 ( 23 56 8) # 37 ⢶ 7 [DIGIT SEVEN] +char \x38 ( 23 6 8) # 38 ⢦ 8 [DIGIT EIGHT] +char \x39 ( 3 5 8) # 39 ⢔ 9 [DIGIT NINE] +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C ( 23 6 ) # 3C â ¦ < [LESS-THAN SIGN] +char \x3D (1234567 ) # 3D â¡¿ = [EQUALS SIGN] +char \x3E ( 3 56 ) # 3E â ´ > [GREATER-THAN SIGN] +char \x3F (1 456 ) # 3F â ¹ ? [QUESTION MARK] +char \x40 ( 4 7 ) # 40 ⡈ @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B ( 2 4 67 ) # 5B ⡪ [ [LEFT SQUARE BRACKET] +char \x5C (1 67 ) # 5C â¡¡ \ [REVERSE SOLIDUS] +char \x5D (12 4567 ) # 5D â¡» ] [RIGHT SQUARE BRACKET] +char \x5E ( 45 7 ) # 5E ⡘ ^ [CIRCUMFLEX ACCENT] +char \x5F ( 456 ) # 5F â ¸ _ [LOW LINE] +char \x60 ( 4 ) # 60 â ˆ ` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B ( 2 4 6 ) # 7B â ª { [LEFT CURLY BRACKET] +char \x7C (12 56 ) # 7C â ³ | [VERTICAL LINE] +char \x7D (12 456 ) # 7D â » } [RIGHT CURLY BRACKET] +char \x7E ( 45 ) # 7E â ˜ ~ [TILDE] +char \x7F ( 4567 ) # 7F ⡸ [DELETE] +char \x80 ( 3 78) # 80 ⣄ [] +char \x81 (12 6 8) # 81 ⢣ [] +char \x82 ( 23456 8) # 82 ⢾ [BREAK PERMITTED HERE] +char \x83 ( 5 8) # 83 ⢠[NO BREAK HERE] +char \x84 (12 4 6 8) # 84 ⢫ [] +char \x85 ( 8) # 85 ⢀ [NEXT LINE (NEL)] +char \x86 (1 4 6 8) # 86 ⢩ [START OF SELECTED AREA] +char \x87 ( 3 8) # 87 ⢄ [END OF SELECTED AREA] +char \x88 (1 6 8) # 88 ⢡ [CHARACTER TABULATION SET] +char \x89 ( 34 6 8) # 89 ⢬ [CHARACTER TABULATION WITH JUSTIFICATION] +char \x8A (123 56 8) # 8A ⢷ [LINE TABULATION SET] +char \x8B ( 34 8) # 8B ⢌ [PARTIAL LINE FORWARD] +char \x8C ( 4 6 8) # 8C ⢨ [PARTIAL LINE BACKWARD] +char \x8D ( 6 8) # 8D ⢠ [REVERSE LINE FEED] +char \x8E (12 4 678) # 8E ⣫ [SINGLE SHIFT TWO] +char \x8F (1 4 678) # 8F ⣩ [SINGLE SHIFT THREE] +char \x90 ( 2345678) # 90 ⣾ [DEVICE CONTROL STRING] +char \x91 ( 2 67 ) # 91 â¡¢ [PRIVATE USE ONE] +char \x92 (1234 678) # 92 ⣯ [PRIVATE USE TWO] +char \x93 ( 2 56 8) # 93 ⢲ [SET TRANSMIT STATE] +char \x94 ( 23 56 8) # 94 ⢶ [CANCEL CHARACTER] +char \x95 ( 23 8) # 95 ⢆ [MESSAGE WAITING] +char \x96 ( 56 8) # 96 ⢰ [START OF GUARDED AREA] +char \x97 ( 3 5 8) # 97 ⢔ [END OF GUARDED AREA] +char \x98 (1 45678) # 98 ⣹ [START OF STRING] +char \x99 ( 23 5 78) # 99 ⣖ [] +char \x9A (12 678) # 9A ⣣ [SINGLE CHARACTER INTRODUCER] +char \x9B ( 2 5 8) # 9B ⢒ [CONTROL SEQUENCE INTRODUCER] +char \x9C ( 23 567 ) # 9C ⡶ [STRING TERMINATOR] +char \x9D ( 2 78) # 9D ⣂ [OPERATING SYSTEM COMMAND] +char \x9E ( 45 8) # 9E ⢘ [PRIVACY MESSAGE] +char \x9F ( 456 8) # 9F ⢸ [APPLICATION PROGRAM COMMAND] +char \xA0 (1 456 8) # A0 ⢹   [NO-BREAK SPACE] +char \xA1 ( 3 67 ) # A1 ⡤ ¡ [INVERTED EXCLAMATION MARK] +char \xA2 ( 2 4 6 8) # A2 ⢪ ¢ [CENT SIGN] +char \xA3 (12 56 8) # A3 ⢳ £ [POUND SIGN] +char \xA4 ( 2 7 ) # A4 â¡‚ ¤ [CURRENCY SIGN] +char \xA5 (12 456 8) # A5 ⢻ Â¥ [YEN SIGN] +char \xA6 (12 67 ) # A6 â¡£ ¦ [BROKEN BAR] +char \xA7 (12345678) # A7 ⣿ § [SECTION SIGN] +char \xA8 (1 4567 ) # A8 ⡹ ¨ [DIAERESIS] +char \xA9 ( 234567 ) # A9 ⡾ © [COPYRIGHT SIGN] +char \xAA (1234 67 ) # AA ⡯ ª [FEMININE ORDINAL INDICATOR] +char \xAB ( 4 67 ) # AB ⡨ « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC (1 67 ) # AC â¡¡ ¬ [NOT SIGN] +char \xAD ( 3 6 8) # AD ⢤ ­ [SOFT HYPHEN] +char \xAE (1234567 ) # AE â¡¿ ® [REGISTERED SIGN] +char \xAF ( 567 ) # AF â¡° ¯ [MACRON] +char \xB0 ( 23 6 8) # B0 ⢦ ° [DEGREE SIGN] +char \xB1 ( 2 8) # B1 ⢂ ± [PLUS-MINUS SIGN] +char \xB2 (123456 8) # B2 ⢿ ² [SUPERSCRIPT TWO] +char \xB3 ( 2 5 7 ) # B3 â¡’ ³ [SUPERSCRIPT THREE] +char \xB4 ( 2 567 ) # B4 ⡲ ´ [ACUTE ACCENT] +char \xB5 (1234 6 8) # B5 ⢯ µ [MICRO SIGN] +char \xB6 (12345678) # B6 ⣿ ¶ [PILCROW SIGN] +char \xB7 (1 56 8) # B7 ⢱ · [MIDDLE DOT] +char \xB8 ( 23 67 ) # B8 ⡦ ¸ [CEDILLA] +char \xB9 ( 3 5 7 ) # B9 â¡” ¹ [SUPERSCRIPT ONE] +char \xBA ( 3 7 ) # BA â¡„ º [MASCULINE ORDINAL INDICATOR] +char \xBB ( 34 7 ) # BB â¡Œ » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBC ( 67 ) # BC â¡  ¼ [VULGAR FRACTION ONE QUARTER] +char \xBD ( 34 67 ) # BD ⡬ ½ [VULGAR FRACTION ONE HALF] +char \xBE ( 345 7 ) # BE â¡œ ¾ [VULGAR FRACTION THREE QUARTERS] +char \xBF (123 567 ) # BF â¡· ¿ [INVERTED QUESTION MARK] +char \xC0 ( 78) # C0 ⣀ À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 ( 234 678) # C1 ⣮ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 ( 5 78) # C2 ⣠ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 ( 345678) # C3 ⣼ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 (1 345 8) # C4 ⢠Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 (1 3 5 8) # C5 ⢕ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 (123 5 8) # C6 ⢗ Æ [LATIN CAPITAL LETTER AE] +char \xC7 ( 4 8) # C7 ⢈ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 (123 5678) # C8 ⣷ È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 (1234 8) # C9 ⢠É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA (1 678) # CA ⣡ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB ( 34 678) # CB ⣬ Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC ( 678) # CC ⣠ ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD ( 3 678) # CD ⣤ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE ( 4 678) # CE ⣨ ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF ( 34 78) # CF ⣌ à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD0 ( 3 5678) # D0 ⣴ à [LATIN CAPITAL LETTER ETH] +char \xD1 (1 4 67 ) # D1 â¡© Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD2 ( 23 78) # D2 ⣆ Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 ( 2 5 78) # D3 ⣒ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 ( 2 5678) # D4 ⣲ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD5 ( 2 678) # D5 ⣢ Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 (1 3456 8) # D6 ⢽ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 ( 23 5678) # D7 ⣶ × [MULTIPLICATION SIGN] +char \xD8 ( 23 678) # D8 ⣦ Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xD9 ( 3 5 78) # D9 ⣔ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA (1 5678) # DA ⣱ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB ( 5678) # DB ⣰ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC (1 3 56 8) # DC ⢵ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD (12345678) # DD ⣿ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDE ( 345 78) # DE ⣜ Þ [LATIN CAPITAL LETTER THORN] +char \xDF ( 234 6 8) # DF ⢮ ß [LATIN SMALL LETTER SHARP S] +char \xE0 (123 56 ) # E0 â · à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 ( 7 ) # E1 â¡€ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 6 ) # E2 â ¡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 ( 3456 8) # E3 ⢼ ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 (1 45 8) # E4 ⢙ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 (12 4 8) # E5 ⢋ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 (12345 8) # E6 ⢟ æ [LATIN SMALL LETTER AE] +char \xE7 (1234 6 ) # E7 â ¯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 ) # E8 â ® è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (123456 ) # E9 â ¿ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (12 6 ) # EA â £ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 ) # EB â « ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC (1 34 8) # EC ⢠ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED ( 234 67 ) # ED â¡® í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 6 ) # EE â © î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 ) # EF â » ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF0 ( 3 56 8) # F0 ⢴ ð [LATIN SMALL LETTER ETH] +char \xF1 (12 4 67 ) # F1 â¡« ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 (1 3 6 8) # F2 ⢥ ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 ( 5 7 ) # F3 ⡠ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 456 ) # F4 â ¹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 ( 2 6 8) # F5 ⢢ õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 2345 8) # F6 ⢞ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 ( 23 5 8) # F7 ⢖ ÷ [DIVISION SIGN] +char \xF8 ( 3 567 ) # F8 â¡´ ø [LATIN SMALL LETTER O WITH STROKE] +char \xF9 ( 23456 ) # F9 â ¾ ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA ( 34567 ) # FA ⡼ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 56 ) # FB â ± û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 ) # FC â ³ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD ( 23 7 ) # FD ⡆ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \xFE ( 345 8) # FE ⢜ þ [LATIN SMALL LETTER THORN] +char \xFF (1 567 ) # FF ⡱ ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] + +include common.tti diff --git a/Tables/fr_FR.ttb b/Tables/fr_FR.ttb new file mode 100644 index 0000000000000000000000000000000000000000..279b35cd0bd2e55baff0ed8276660829e8bfa9db --- /dev/null +++ b/Tables/fr_FR.ttb @@ -0,0 +1,208 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - French (France) + +# This is the reimplementation of the fr-cbifs table using the +# ISO-8859-1 (Latin 1) character set. + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# the standard representations for the Latin control characters +include control-latin.tti + +# the numbers 1-9 are represented by the letters a-i with dot 6 added +# the number 0 is represented by dots 3456 +include numbers-french.tti + +# generated by ttbtest: charset=iso-8859-1 +char \x00 ( 345 78) # 00 ⣜ [NULL] +# Latin control characters # 01-1A +char \x1B ( 4 678) # 1B ⣨ [ESCAPE] +char \x1C ( 5 78) # 1C ⣠[INFORMATION SEPARATOR FOUR] +char \x1D ( 5678) # 1D ⣰ [INFORMATION SEPARATOR THREE] +char \x1E ( 678) # 1E ⣠ [INFORMATION SEPARATOR TWO] +char \x1F ( 45678) # 1F ⣸ [INFORMATION SEPARATOR ONE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 23 5 ) # 21 â – ! [EXCLAMATION MARK] +char \x22 ( 23 56 ) # 22 â ¶ " [QUOTATION MARK] +char \x23 ( 34 6 ) # 23 â ¬ # [NUMBER SIGN] +char \x24 ( 456 ) # 24 â ¸ $ [DOLLAR SIGN] +char \x25 (1234 6 ) # 25 â ¯ % [PERCENT SIGN] +char \x26 (123456 ) # 26 â ¿ & [AMPERSAND] +char \x27 ( 6 ) # 27 â   ' [APOSTROPHE] +char \x28 ( 23 6 ) # 28 â ¦ ( [LEFT PARENTHESIS] +char \x29 ( 3 56 ) # 29 â ´ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 23 5 78) # 2B ⣖ + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 3 ) # 2E â „ . [FULL STOP] +char \x2F ( 2 56 ) # 2F â ² / [SOLIDUS] +# Hindu-Arabic numerals # 30-39 +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C ( 56 ) # 3C â ° < [LESS-THAN SIGN] +char \x3D ( 23 5678) # 3D ⣶ = [EQUALS SIGN] +char \x3E ( 45 ) # 3E â ˜ > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 ( 345 ) # 40 â œ @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B (123 56 ) # 5B â · [ [LEFT SQUARE BRACKET] +char \x5C ( 234 6 ) # 5C â ® \ [REVERSE SOLIDUS] +char \x5D ( 23456 ) # 5D â ¾ ] [RIGHT SQUARE BRACKET] +char \x5E ( 34 ) # 5E â Œ ^ [CIRCUMFLEX ACCENT] +char \x5F ( 4567 ) # 5F ⡸ _ [LOW LINE] +char \x60 ( 345 7 ) # 60 â¡œ ` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B (123 567 ) # 7B â¡· { [LEFT CURLY BRACKET] +char \x7C ( 234 67 ) # 7C â¡® | [VERTICAL LINE] +char \x7D ( 234567 ) # 7D ⡾ } [RIGHT CURLY BRACKET] +char \x7E ( 34 7 ) # 7E â¡Œ ~ [TILDE] +char \x7F ( 4 67 ) # 7F ⡨ [DELETE] +char \x80 ( 345 8) # 80 ⢜ [] +char \x81 (1 8) # 81 ⢠[] +char \x82 (12 8) # 82 ⢃ [BREAK PERMITTED HERE] +char \x83 ( 23 567 ) # 83 ⡶ [NO BREAK HERE] +char \x84 ( 3 8) # 84 ⢄ [] +char \x85 ( 3 5 8) # 85 ⢔ [NEXT LINE (NEL)] +char \x86 ( 23 6 8) # 86 ⢦ [START OF SELECTED AREA] +char \x87 (12 45 8) # 87 ⢛ [END OF SELECTED AREA] +char \x88 (12 5 8) # 88 ⢓ [CHARACTER TABULATION SET] +char \x89 ( 2 4 8) # 89 ⢊ [CHARACTER TABULATION WITH JUSTIFICATION] +char \x8A ( 2 45 8) # 8A ⢚ [LINE TABULATION SET] +char \x8B (1 3 8) # 8B ⢅ [PARTIAL LINE FORWARD] +char \x8C ( 3 7 ) # 8C â¡„ [PARTIAL LINE BACKWARD] +char \x8D ( 3 567 ) # 8D â¡´ [REVERSE LINE FEED] +char \x8E ( 23 67 ) # 8E ⡦ [SINGLE SHIFT TWO] +char \x8F ( 3 56 8) # 8F ⢴ [SINGLE SHIFT THREE] +char \x90 ( 567 ) # 90 â¡° [DEVICE CONTROL STRING] +char \x91 ( 7 ) # 91 â¡€ [PRIVATE USE ONE] +char \x92 ( 8) # 92 ⢀ [PRIVATE USE TWO] +char \x93 ( 3 5 7 ) # 93 â¡” [SET TRANSMIT STATE] +char \x94 ( 67 ) # 94 â¡  [CANCEL CHARACTER] +char \x95 ( 23 5 7 ) # 95 â¡– [MESSAGE WAITING] +char \x96 (123 6 8) # 96 ⢧ [START OF GUARDED AREA] +char \x97 ( 2 456 8) # 97 ⢺ [END OF GUARDED AREA] +char \x98 (1234 678) # 98 ⣯ [START OF STRING] +char \x99 ( 3 6 8) # 99 ⢤ [] +char \x9A (1 3 56 8) # 9A ⢵ [SINGLE CHARACTER INTRODUCER] +char \x9B ( 4 6 8) # 9B ⢨ [CONTROL SEQUENCE INTRODUCER] +char \x9C ( 5 8) # 9C ⢠[STRING TERMINATOR] +char \x9D ( 56 8) # 9D ⢰ [OPERATING SYSTEM COMMAND] +char \x9E ( 6 8) # 9E ⢠ [PRIVACY MESSAGE] +char \x9F ( 456 8) # 9F ⢸ [APPLICATION PROGRAM COMMAND] +char \xA0 ( 78) # A0 ⣀   [NO-BREAK SPACE] +char \xA1 ( 3 67 ) # A1 ⡤ ¡ [INVERTED EXCLAMATION MARK] +char \xA2 (1 4 8) # A2 ⢉ ¢ [CENT SIGN] +char \xA3 (123 8) # A3 ⢇ £ [POUND SIGN] +char \xA4 (1 5 8) # A4 ⢑ ¤ [CURRENCY SIGN] +char \xA5 (1 3456 8) # A5 ⢽ Â¥ [YEN SIGN] +char \xA6 ( 3 5 78) # A6 ⣔ ¦ [BROKEN BAR] +char \xA7 ( 234 8) # A7 ⢎ § [SECTION SIGN] +char \xA8 ( 5 ) # A8 â  Â¨ [DIAERESIS] +char \xA9 (12345 8) # A9 ⢟ © [COPYRIGHT SIGN] +char \xAA (12 4 8) # AA ⢋ ª [FEMININE ORDINAL INDICATOR] +char \xAB ( 23 678) # AB ⣦ « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC (1 345 8) # AC ⢠¬ [NOT SIGN] +char \xAD ( 3 678) # AD ⣤ ­ [SOFT HYPHEN] +char \xAE (123 5 8) # AE ⢗ ® [REGISTERED SIGN] +char \xAF (12345678) # AF ⣿ ¯ [MACRON] +char \xB0 (1 3 5 8) # B0 ⢕ ° [DEGREE SIGN] +char \xB1 (1 34 6 8) # B1 ⢭ ± [PLUS-MINUS SIGN] +char \xB2 ( 45 78) # B2 ⣘ ² [SUPERSCRIPT TWO] +char \xB3 ( 3 78) # B3 ⣄ ³ [SUPERSCRIPT THREE] +char \xB4 ( 4 ) # B4 â ˆ ´ [ACUTE ACCENT] +char \xB5 (1 3 6 8) # B5 ⢥ µ [MICRO SIGN] +char \xB6 (1234 8) # B6 ⢠¶ [PILCROW SIGN] +char \xB7 ( 5 7 ) # B7 ⡠· [MIDDLE DOT] +char \xB8 ( 4 6 ) # B8 â ¨ ¸ [CEDILLA] +char \xB9 ( 4 78) # B9 ⣈ ¹ [SUPERSCRIPT ONE] +char \xBA (1 34 8) # BA ⢠º [MASCULINE ORDINAL INDICATOR] +char \xBB ( 3 5678) # BB ⣴ » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBC ( 34 78) # BC ⣌ ¼ [VULGAR FRACTION ONE QUARTER] +char \xBD ( 34 678) # BD ⣬ ½ [VULGAR FRACTION ONE HALF] +char \xBE ( 345678) # BE ⣼ ¾ [VULGAR FRACTION THREE QUARTERS] +char \xBF ( 34 8) # BF ⢌ ¿ [INVERTED QUESTION MARK] +char \xC0 (123 5678) # C0 ⣷ À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 ( 2 7 ) # C1 â¡‚ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 ( 2 78) # C2 ⣂  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 ( 2 8) # C3 ⢂ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 ( 4 7 ) # C4 ⡈ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 ( 34567 ) # C5 ⡼ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( 45 7 ) # C6 ⡘ Æ [LATIN CAPITAL LETTER AE] +char \xC7 (1234 67 ) # C7 ⡯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( 234 678) # C8 ⣮ È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 (1234567 ) # C9 â¡¿ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA ( 23 78) # CA ⣆ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB ( 23 5 8) # CB ⢖ Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC ( 2 5 8) # CC ⢒ ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD ( 2 5 7 ) # CD â¡’ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE ( 2 5 78) # CE ⣒ ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF ( 23 56 8) # CF ⢶ à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD0 ( 23 8) # D0 ⢆ à [LATIN CAPITAL LETTER ETH] +char \xD1 (12 4567 ) # D1 â¡» Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD2 ( 2 56 8) # D2 ⢲ Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 ( 2 567 ) # D3 ⡲ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 ( 2 5678) # D4 ⣲ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD5 (12 4 67 ) # D5 â¡« Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 ( 2 4 67 ) # D6 ⡪ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 ( 2345 8) # D7 ⢞ × [MULTIPLICATION SIGN] +char \xD8 ( 2 6 8) # D8 ⢢ Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xD9 ( 2345678) # D9 ⣾ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA ( 2 67 ) # DA â¡¢ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB ( 2 678) # DB ⣢ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC (12 567 ) # DC ⡳ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD ( 23 7 ) # DD ⡆ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDE ( 34 67 ) # DE ⡬ Þ [LATIN CAPITAL LETTER THORN] +char \xDF ( 2 4 678) # DF ⣪ ß [LATIN SMALL LETTER SHARP S] +char \xE0 (123 56 8) # E0 ⢷ à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 (1 67 ) # E1 â¡¡ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 678) # E2 ⣡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 (1 6 8) # E3 ⢡ ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 ( 4 8) # E4 ⢈ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 ( 3456 8) # E5 ⢼ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 ( 45 8) # E6 ⢘ æ [LATIN SMALL LETTER AE] +char \xE7 (1234 6 8) # E7 ⢯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 8) # E8 ⢮ è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (123456 8) # E9 ⢿ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (12 678) # EA ⣣ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 8) # EB ⢫ ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC (1 4 6 8) # EC ⢩ ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED (1 4 67 ) # ED â¡© í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 678) # EE ⣩ î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 8) # EF ⢻ ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF0 (12 6 8) # F0 ⢣ ð [LATIN SMALL LETTER ETH] +char \xF1 (12 45678) # F1 ⣻ ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 (1 456 8) # F2 ⢹ ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 (1 4567 ) # F3 ⡹ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 45678) # F4 ⣹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 (12 4 678) # F5 ⣫ õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 2 4 6 8) # F6 ⢪ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 (1 45 8) # F7 ⢙ ÷ [DIVISION SIGN] +char \xF8 (1 56 8) # F8 ⢱ ø [LATIN SMALL LETTER O WITH STROKE] +char \xF9 ( 23456 8) # F9 ⢾ ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA (1 567 ) # FA ⡱ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 5678) # FB ⣱ û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 8) # FC ⢳ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD (12 67 ) # FD â¡£ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \xFE ( 34 6 8) # FE ⢬ þ [LATIN SMALL LETTER THORN] +char \xFF (12 5678) # FF ⣳ ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] + +include common.tti diff --git a/Tables/ga.ttb b/Tables/ga.ttb new file mode 100644 index 0000000000000000000000000000000000000000..7e47b3a19ce4a7f3aad89fd436d3bf01760baf93 --- /dev/null +++ b/Tables/ga.ttb @@ -0,0 +1,49 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Irish +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# generated by ttbtest: charset=latin1 +char \xC1 (1234 67 ) # C1 ⡯ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC9 (1234567 ) # C9 â¡¿ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCD (123 567 ) # CD â¡· à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xD3 ( 234 67 ) # D3 â¡® Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xDA ( 234567 ) # DA ⡾ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xE1 (1234 6 ) # E1 â ¯ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE9 (123456 ) # E9 â ¿ é [LATIN SMALL LETTER E WITH ACUTE] +char \xED (123 56 ) # ED â · í [LATIN SMALL LETTER I WITH ACUTE] +char \xF3 ( 234 6 ) # F3 â ® ó [LATIN SMALL LETTER O WITH ACUTE] +char \xFA ( 23456 ) # FA â ¾ ú [LATIN SMALL LETTER U WITH ACUTE] + + +# the numbers 0-9 are represented by the letters j,a-i with dot 8 added +include numbers-dot8.tti + +include punctuation-basic.tti + +include common.tti diff --git a/Tables/gd.ttb b/Tables/gd.ttb new file mode 100644 index 0000000000000000000000000000000000000000..6126f4a625e5d0903f619ff61dc7fc9f17879446 --- /dev/null +++ b/Tables/gd.ttb @@ -0,0 +1,68 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Gaelic +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# lowercase accented letters +char \xE1 (1234 6 ) # â ¯ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE9 (123456 ) # â ¿ é [LATIN SMALL LETTER E WITH ACUTE] +char \xED (123 56 ) # â · í [LATIN SMALL LETTER I WITH ACUTE] +char \xF3 ( 234 6 ) # â ® ó [LATIN SMALL LETTER O WITH ACUTE] +char \xFA ( 23456 ) # â ¾ ú [LATIN SMALL LETTER U WITH ACUTE] +char \u1E03 (12 6 ) # â £ ḃ [LATIN SMALL LETTER B WITH DOT ABOVE] +char \u010B (1 4 6 ) # â © Ä‹ [LATIN SMALL LETTER C WITH DOT ABOVE] +char \u1E0B (1 456 ) # â ¹ ḋ [LATIN SMALL LETTER D WITH DOT ABOVE] +char \u1E1F (1 56 ) # â ± ḟ [LATIN SMALL LETTER F WITH DOT ABOVE] +char \u0121 (12 4 6 ) # â « Ä¡ [LATIN SMALL LETTER G WITH DOT ABOVE] +char \u1E41 (12 456 ) # â » á¹ [LATIN SMALL LETTER M WITH DOT ABOVE] +char \u1E57 (12 56 ) # â ³ á¹— [LATIN SMALL LETTER P WITH DOT ABOVE] +char \u1E61 ( 2 4 6 ) # â ª ṡ [LATIN SMALL LETTER S WITH DOT ABOVE] +char \u1E6B ( 2 456 ) # â º ṫ [LATIN SMALL LETTER T WITH DOT ABOVE] + +# uppercase accented letters +char \xC1 (1234 67 ) # ⡯ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC9 (1234567 ) # â¡¿ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCD (123 567 ) # â¡· à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xD3 ( 234 67 ) # â¡® Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xDA ( 234567 ) # ⡾ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \u1E02 (12 67 ) # â¡£ Ḃ [LATIN CAPITAL LETTER B WITH DOT ABOVE] +char \u010A (1 4 67 ) # â¡© ÄŠ [LATIN CAPITAL LETTER C WITH DOT ABOVE] +char \u1E0A (1 4567 ) # ⡹ Ḋ [LATIN CAPITAL LETTER D WITH DOT ABOVE] +char \u1E1E (1 567 ) # ⡱ Ḟ [LATIN CAPITAL LETTER F WITH DOT ABOVE] +char \u0120 (12 4 67 ) # â¡« Ä  [LATIN CAPITAL LETTER G WITH DOT ABOVE] +char \u1E40 (12 4567 ) # â¡» á¹€ [LATIN CAPITAL LETTER M WITH DOT ABOVE] +char \u1E56 (12 567 ) # ⡳ á¹– [LATIN CAPITAL LETTER P WITH DOT ABOVE] +char \u1E60 ( 2 4 67 ) # ⡪ á¹  [LATIN CAPITAL LETTER S WITH DOT ABOVE] +char \u1E6A ( 2 4567 ) # ⡺ Ṫ [LATIN CAPITAL LETTER T WITH DOT ABOVE] + +# the numbers 0-9 are represented by the letters j,a-i with dot 8 added +include numbers-dot8.tti + +include punctuation-basic.tti + +include common.tti diff --git a/Tables/gon.ttb b/Tables/gon.ttb new file mode 100644 index 0000000000000000000000000000000000000000..135e792be6fadf26199a630eecebe065c92c1139 --- /dev/null +++ b/Tables/gon.ttb @@ -0,0 +1,25 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Gondi + +include devanagari.tti +include telugu.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/gu.ttb b/Tables/gu.ttb new file mode 100644 index 0000000000000000000000000000000000000000..664e227cff98693cc322bd2367e760ead228673a --- /dev/null +++ b/Tables/gu.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Gujarati + +include gujarati.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/gujarati.tti b/Tables/gujarati.tti new file mode 100644 index 0000000000000000000000000000000000000000..edd819ad36b82e4c223127785ddafd8496a90376 --- /dev/null +++ b/Tables/gujarati.tti @@ -0,0 +1,109 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable defines the braille representations +# for the Gujarati script. + +# Maintained by John J. Boyer, director@chpi.org, www.chpi.org +# +# This table is built and maintained by Leon Ungier +# with help and guidance from Mohammed R. Ramadan +# +# Converted from liblouis table by Samuel Thibault + +# generated by ttbtest: +char \u0A81 ( 3 ) # â „ ઠ[GUJARATI SIGN CANDRABINDU] +char \u0A82 ( 56 ) # â ° ં [GUJARATI SIGN ANUSVARA] +char \u0A83 ( 6 ) # â   ઃ [GUJARATI SIGN VISARGA] +char \u0A85 (1 ) # â  àª… [GUJARATI LETTER A] +char \u0A86 ( 345 ) # â œ આ [GUJARATI LETTER AA] +char \u0A87 ( 2 4 ) # â Š ઇ [GUJARATI LETTER I] +char \u0A88 ( 3 5 ) # â ” ઈ [GUJARATI LETTER II] +char \u0A89 (1 3 6 ) # â ¥ ઉ [GUJARATI LETTER U] +char \u0A8A (12 56 ) # â ³ ઊ [GUJARATI LETTER UU] +char \u0A8D (1 5 7 ) # â¡‘ ઠ[GUJARATI VOWEL CANDRA E] + +char \u0A8F (1 5 ) # â ‘ ઠ[GUJARATI LETTER E] +char \u0A90 ( 34 ) # â Œ ઠ[GUJARATI LETTER AI] +char \u0A91 (1 3 5 7 ) # â¡• ઑ [GUJARATI VOWEL CANDRA O] + +char \u0A93 (1 3 5 ) # â • ઓ [GUJARATI LETTER O] +char \u0A94 ( 2 4 6 ) # â ª ઔ [GUJARATI LETTER AU] +char \u0A95 (1 3 ) # â … ક [GUJARATI LETTER KA] +char \u0A96 ( 4 6 ) # â ¨ ખ [GUJARATI LETTER KHA] +char \u0A97 (1234 ) # â  àª— [GUJARATI LETTER GA] +char \u0A98 (12 6 ) # â £ ઘ [GUJARATI LETTER GHA] +char \u0A99 ( 34 6 ) # â ¬ ઙ [GUJARATI LETTER NGA] +char \u0A9A (1 4 ) # â ‰ ચ [GUJARATI LETTER CA] +char \u0A9B (1 6 ) # â ¡ છ [GUJARATI LETTER CHA] +char \u0A9C ( 2 45 ) # â š જ [GUJARATI LETTER JA] +char \u0A9D ( 3 56 ) # â ´ ઠ[GUJARATI LETTER JHA] +char \u0A9E ( 2 5 ) # â ’ ઞ [GUJARATI LETTER NYA] +char \u0A9F ( 23456 ) # â ¾ ટ [GUJARATI LETTER TTA] +char \u0AA0 ( 2 456 ) # â º ઠ [GUJARATI LETTER TTHA] +char \u0AA1 (12 4 6 ) # â « ડ [GUJARATI LETTER DDA] +char \u0AA2 (123456 ) # â ¿ ઢ [GUJARATI LETTER DDHA] +char \u0AA3 ( 3456 ) # â ¼ ણ [GUJARATI LETTER NNA] +char \u0AA4 ( 2345 ) # â ž ત [GUJARATI LETTER TA] +char \u0AA5 (1 456 ) # â ¹ થ [GUJARATI LETTER THA] +char \u0AA6 (1 45 ) # â ™ દ [GUJARATI LETTER DA] +char \u0AA7 ( 234 6 ) # â ® ધ [GUJARATI LETTER DHA] +char \u0AA8 (1 345 ) # â  àª¨ [GUJARATI LETTER NA] + +char \u0AAA (1234 ) # â  àªª [GUJARATI LETTER PA] +char \u0AAB ( 23 5 ) # â – ફ [GUJARATI LETTER PHA] +char \u0AAC (12 ) # â ƒ બ [GUJARATI LETTER BA] +char \u0AAD ( 45 ) # â ˜ ભ [GUJARATI LETTER BHA] +char \u0AAE (1 34 ) # â  àª® [GUJARATI LETTER MA] +char \u0AAF (1 3456 ) # â ½ ય [GUJARATI LETTER YA] +char \u0AB0 (123 5 ) # â — ર [GUJARATI LETTER RA] + +char \u0AB2 (123 ) # â ‡ લ [GUJARATI LETTER LA] +char \u0AB3 (123 7 ) # ⡇ ળ [GUJARATI LETTER LLA] + +char \u0AB5 (123 6 ) # â § વ [GUJARATI LETTER VA] +char \u0AB6 (1 4 6 ) # â © શ [GUJARATI LETTER SHA] +char \u0AB7 (1234 6 ) # â ¯ ષ [GUJARATI LETTER SSA] +char \u0AB8 ( 234 ) # â Ž સ [GUJARATI LETTER SA] +char \u0AB9 (12 5 ) # â “ હ [GUJARATI LETTER HA] +char \u0ABD ( 2 ) # â ‚ ઽ [GUJARATI SIGN AVAGRAHA] +char \u0ABE ( 345 ) # â œ ા [GUJARATI VOWEL SIGN AA] +char \u0ABF ( 2 4 ) # â Š િ [GUJARATI VOWEL SIGN I] +char \u0AC0 ( 3 5 ) # â ” à«€ [GUJARATI VOWEL SIGN II] +char \u0AC1 (1 3 6 ) # â ¥ à« [GUJARATI VOWEL SIGN U] +char \u0AC2 (12 56 ) # â ³ à«‚ [GUJARATI VOWEL SIGN UU] +char \u0AC5 (1 5 7 ) # â¡‘ à«… [GUJARATI VOWEL SIGN CANDRA E] + +char \u0AC7 (1 5 ) # â ‘ ે [GUJARATI VOWEL SIGN E] +char \u0AC8 ( 34 ) # â Œ ૈ [GUJARATI VOWEL SIGN AI] +char \u0AC9 (1 3 5 7 ) # â¡• ૉ [GUJARATI VOWEL SIGN CANDRA O] + +char \u0ACB (1 3 5 ) # â • à«‹ [GUJARATI VOWEL SIGN O] +char \u0ACC ( 2 4 6 ) # â ª à«Œ [GUJARATI VOWEL SIGN AU] +char \u0ACD ( 4 ) # â ˆ à« [GUJARATI SIGN VIRAMA] + +char \u0AE6 ( 2 45 ) # â š ૦ [GUJARATI DIGIT ZERO] +char \u0AE7 (1 ) # â  à«§ [GUJARATI DIGIT ONE] +char \u0AE8 (12 ) # â ƒ ૨ [GUJARATI DIGIT TWO] +char \u0AE9 (1 4 ) # â ‰ à«© [GUJARATI DIGIT THREE] +char \u0AEA (1 45 ) # â ™ ૪ [GUJARATI DIGIT FOUR] +char \u0AEB (1 5 ) # â ‘ à«« [GUJARATI DIGIT FIVE] +char \u0AEC (12 4 ) # â ‹ ૬ [GUJARATI DIGIT SIX] +char \u0AED (12 45 ) # â › à«­ [GUJARATI DIGIT SEVEN] +char \u0AEE (12 5 ) # â “ à«® [GUJARATI DIGIT EIGHT] +char \u0AEF ( 2 4 ) # â Š ૯ [GUJARATI DIGIT NINE] diff --git a/Tables/gurmukhi.tti b/Tables/gurmukhi.tti new file mode 100644 index 0000000000000000000000000000000000000000..164e4249535d37b724e90cc1e724bfdd35ce569b --- /dev/null +++ b/Tables/gurmukhi.tti @@ -0,0 +1,109 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable defines the braille representations +# for the Gurmukhi script. + +# Maintained by John J. Boyer, director@chpi.org, www.chpi.org +# +# This table is built and maintained by Leon Ungier +# with help and guidance from Mohammed R. Ramadan +# +# Converted from liblouis table by Samuel Thibault + +# generated by ttbtest: +char \u0A01 ( 3 ) # â „ ਠ[GURMUKHI SIGN ADAK BINDI] +char \u0A02 ( 56 ) # â ° ਂ [GURMUKHI SIGN BINDI] +char \u0A03 ( 6 ) # â   ਃ [GURMUKHI SIGN VISARGA] +char \u0A05 (1 ) # â  à¨… [GURMUKHI LETTER A] +char \u0A06 ( 345 ) # â œ ਆ [GURMUKHI LETTER AA] +char \u0A07 ( 2 4 ) # â Š ਇ [GURMUKHI LETTER I] +char \u0A08 ( 3 5 ) # â ” ਈ [GURMUKHI LETTER II] +char \u0A09 (1 3 6 ) # â ¥ ਉ [GURMUKHI LETTER U] +char \u0A0A (12 56 ) # â ³ ਊ [GURMUKHI LETTER UU] + + +char \u0A0F (1 5 ) # â ‘ ਠ[GURMUKHI LETTER EE] +char \u0A10 ( 34 ) # â Œ ਠ[GURMUKHI LETTER AI] + + +char \u0A13 (1 3 5 ) # â • ਓ [GURMUKHI LETTER OO] +char \u0A14 ( 2 4 6 ) # â ª ਔ [GURMUKHI LETTER AU] +char \u0A15 (1 3 ) # â … ਕ [GURMUKHI LETTER KA] +char \u0A16 ( 4 6 ) # â ¨ ਖ [GURMUKHI LETTER KHA] +char \u0A17 (1234 ) # â  à¨— [GURMUKHI LETTER GA] +char \u0A18 (12 6 ) # â £ ਘ [GURMUKHI LETTER GHA] +char \u0A19 ( 34 6 ) # â ¬ ਙ [GURMUKHI LETTER NGA] +char \u0A1A (1 4 ) # â ‰ ਚ [GURMUKHI LETTER CA] +char \u0A1B (1 6 ) # â ¡ ਛ [GURMUKHI LETTER CHA] +char \u0A1C ( 2 45 ) # â š ਜ [GURMUKHI LETTER JA] +char \u0A1D ( 3 56 ) # â ´ ਠ[GURMUKHI LETTER JHA] +char \u0A1E ( 2 5 ) # â ’ ਞ [GURMUKHI LETTER NYA] +char \u0A1F ( 23456 ) # â ¾ ਟ [GURMUKHI LETTER TTA] +char \u0A20 ( 2 456 ) # â º ਠ [GURMUKHI LETTER TTHA] +char \u0A21 (12 4 6 ) # â « ਡ [GURMUKHI LETTER DDA] +char \u0A22 (123456 ) # â ¿ ਢ [GURMUKHI LETTER DDHA] +char \u0A23 ( 3456 ) # â ¼ ਣ [GURMUKHI LETTER NNA] +char \u0A24 ( 2345 ) # â ž ਤ [GURMUKHI LETTER TA] +char \u0A25 (1 456 ) # â ¹ ਥ [GURMUKHI LETTER THA] +char \u0A26 (1 45 ) # â ™ ਦ [GURMUKHI LETTER DA] +char \u0A27 ( 234 6 ) # â ® ਧ [GURMUKHI LETTER DHA] +char \u0A28 (1 345 ) # â  à¨¨ [GURMUKHI LETTER NA] + +char \u0A2A (1234 ) # â  à¨ª [GURMUKHI LETTER PA] +char \u0A2B ( 23 5 ) # â – ਫ [GURMUKHI LETTER PHA] +char \u0A2C (12 ) # â ƒ ਬ [GURMUKHI LETTER BA] +char \u0A2D ( 45 ) # â ˜ ਭ [GURMUKHI LETTER BHA] +char \u0A2E (1 34 ) # â  à¨® [GURMUKHI LETTER MA] +char \u0A2F (1 3456 ) # â ½ ਯ [GURMUKHI LETTER YA] +char \u0A30 (123 5 ) # â — ਰ [GURMUKHI LETTER RA] + +char \u0A32 (123 ) # â ‡ ਲ [GURMUKHI LETTER LA] +char \u0A33 (123 7 ) # ⡇ ਲ਼ [GURMUKHI LETTER LLA] + +char \u0A35 (123 6 ) # â § ਵ [GURMUKHI LETTER VA] +char \u0A36 (1 4 6 ) # â © ਸ਼ [GURMUKHI LETTER SHA] + +char \u0A38 ( 234 ) # â Ž ਸ [GURMUKHI LETTER SA] +char \u0A39 (12 5 ) # â “ ਹ [GURMUKHI LETTER HA] + +char \u0A3E ( 345 ) # â œ ਾ [GURMUKHI VOWEL SIGN AA] +char \u0A3F ( 2 4 ) # â Š ਿ [GURMUKHI VOWEL SIGN I] +char \u0A40 ( 3 5 ) # â ” à©€ [GURMUKHI VOWEL SIGN II] +char \u0A41 (1 3 6 ) # â ¥ à© [GURMUKHI VOWEL SIGN U] +char \u0A42 (12 56 ) # â ³ à©‚ [GURMUKHI VOWEL SIGN UU] + + +char \u0A47 (1 5 ) # â ‘ ੇ [GURMUKHI VOWEL SIGN EE] +char \u0A48 ( 34 ) # â Œ ੈ [GURMUKHI VOWEL SIGN AI] + + +char \u0A4B (1 3 5 ) # â • à©‹ [GURMUKHI VOWEL SIGN OO] +char \u0A4C ( 2 4 6 ) # â ª à©Œ [GURMUKHI VOWEL SIGN AU] +char \u0A4D ( 4 ) # â ˆ à© [GURMUKHI SIGN VIRAMA] + +char \u0A66 ( 2 45 ) # â š ੦ [GURMUKHI DIGIT ZERO] +char \u0A67 (1 ) # â  à©§ [GURMUKHI DIGIT ONE] +char \u0A68 (12 ) # â ƒ ੨ [GURMUKHI DIGIT TWO] +char \u0A69 (1 4 ) # â ‰ à©© [GURMUKHI DIGIT THREE] +char \u0A6A (1 45 ) # â ™ ੪ [GURMUKHI DIGIT FOUR] +char \u0A6B (1 5 ) # â ‘ à©« [GURMUKHI DIGIT FIVE] +char \u0A6C (12 4 ) # â ‹ ੬ [GURMUKHI DIGIT SIX] +char \u0A6D (12 45 ) # â › à©­ [GURMUKHI DIGIT SEVEN] +char \u0A6E (12 5 ) # â “ à©® [GURMUKHI DIGIT EIGHT] +char \u0A6F ( 2 4 ) # â Š ੯ [GURMUKHI DIGIT NINE] diff --git a/Tables/ha.ctb b/Tables/ha.ctb new file mode 100644 index 0000000000000000000000000000000000000000..22e9b9b9612b89ad65b58b250151294c652d34f1 --- /dev/null +++ b/Tables/ha.ctb @@ -0,0 +1,40 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - Hausa (contracted) +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +include letters-latin.cti + +always 'b 23 +always 'd 1246 +always kw 12345 +always k' 46 +always ng 346 +always t' 23456 +always ch 16 +always sh 146 +always 'y 3 +always au 246 +always ts 34 diff --git a/Tables/he.ttb b/Tables/he.ttb new file mode 100644 index 0000000000000000000000000000000000000000..2f90c4111729ad093887a9e2c4995c6025c87e0b --- /dev/null +++ b/Tables/he.ttb @@ -0,0 +1,79 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Hebrew +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +char \u05B1 ( 2 6 ) # â ¢ Ö± [HEBREW POINT HATAF SEGOL] +char \u05B2 ( 2 5 ) # â ’ Ö² [HEBREW POINT HATAF PATAH] +char \u05B3 ( 345 ) # â œ Ö³ [HEBREW POINT HATAF QAMATS] +char \u05B4 ( 2 4 ) # â Š Ö´ [HEBREW POINT HIRIQ] +char \u05B5 ( 34 ) # â Œ Öµ [HEBREW POINT TSERE] +char \u05B6 (1 5 ) # â ‘ Ö¶ [HEBREW POINT SEGOL] +char \u05B7 (1 4 ) # â ‰ Ö· [HEBREW POINT PATAH] +char \u05B8 (12 6 ) # â £ Ö¸ [HEBREW POINT QAMATS] +char \u05B9 (1 3 5 ) # â • Ö¹ [HEBREW POINT HOLAM] +char \u05BB (1 3 6 ) # â ¥ Ö» [HEBREW POINT QUBUTS] +char \u05D0 (1 ) # â  × [HEBREW LETTER ALEF] +char \u05D1 (123 6 ) # â § ב [HEBREW LETTER BET] +char \u05D2 (12 45 ) # â › ×’ [HEBREW LETTER GIMEL] +char \u05D3 (1 45 ) # â ™ ד [HEBREW LETTER DALET] +char \u05D4 (12 5 ) # â “ ×” [HEBREW LETTER HE] +char \u05D5 ( 2 456 ) # â º ו [HEBREW LETTER VAV] +char \u05D6 (1 3 56 ) # â µ ×– [HEBREW LETTER ZAYIN] +char \u05D7 (1 34 6 ) # â ­ ×— [HEBREW LETTER HET] +char \u05D8 ( 2345 ) # â ž ט [HEBREW LETTER TET] +char \u05D9 ( 2 45 ) # â š ×™ [HEBREW LETTER YOD] +char \u05DA (1 6 ) # â ¡ ך [HEBREW LETTER FINAL KAF] +char \u05DB (1 6 ) # â ¡ ×› [HEBREW LETTER KAF] +char \u05DC (123 ) # â ‡ ל [HEBREW LETTER LAMED] +char \u05DD (1 34 ) # â  × [HEBREW LETTER FINAL MEM] +char \u05DE (1 34 ) # â  ×ž [HEBREW LETTER MEM] +char \u05DF (1 345 ) # â  ×Ÿ [HEBREW LETTER FINAL NUN] +char \u05E0 (1 345 ) # â  ×  [HEBREW LETTER NUN] +char \u05E1 ( 234 ) # â Ž ס [HEBREW LETTER SAMEKH] +char \u05E2 (12 4 6 ) # â « ×¢ [HEBREW LETTER AYIN] +char \u05E3 (12 4 ) # â ‹ ×£ [HEBREW LETTER FINAL PE] +char \u05E4 (12 4 ) # â ‹ פ [HEBREW LETTER PE] +char \u05E5 ( 234 6 ) # â ® ×¥ [HEBREW LETTER FINAL TSADI] +char \u05E6 ( 234 6 ) # â ® צ [HEBREW LETTER TSADI] +char \u05E7 (12345 ) # â Ÿ ק [HEBREW LETTER QOF] +char \u05E8 (123 5 ) # â — ר [HEBREW LETTER RESH] +char \u05E9 (1 4 6 ) # â © ש [HEBREW LETTER SHIN] +char \u05EA (1 456 ) # â ¹ ת [HEBREW LETTER TAV] +char \uFB1D ( 3 5 ) # â ” ï¬ [HEBREW LETTER YOD WITH HIRIQ] +char \uFB2A (1 4 6 ) # â © שׁ [HEBREW LETTER SHIN WITH SHIN DOT] +char \uFB2B (1 56 ) # â ± שׂ [HEBREW LETTER SHIN WITH SIN DOT] +char \uFB31 (12 ) # â ƒ בּ [HEBREW LETTER BET WITH DAGESH] +char \uFB35 ( 34 6 ) # â ¬ וּ [HEBREW LETTER VAV WITH DAGESH] +char \uFB3A (1 3 ) # â … ךּ [HEBREW LETTER FINAL KAF WITH DAGESH] +char \uFB3B (1 3 ) # â … כּ [HEBREW LETTER KAF WITH DAGESH] +char \uFB43 (1234 ) # â  ï­ƒ [HEBREW LETTER FINAL PE WITH DAGESH] +char \uFB44 (1234 ) # â  ï­„ [HEBREW LETTER PE WITH DAGESH] +char \uFB4A (12 56 ) # â ³ ï­Š [HEBREW LETTER TAV WITH DAGESH] + +include letters-latin-dot8.tti +include numbers-nemeth.tti +include punctuation-alternate.tti +include common.tti diff --git a/Tables/hi.ttb b/Tables/hi.ttb new file mode 100644 index 0000000000000000000000000000000000000000..9dc1a3729319b69864a4fcd9fd4d34e400812cf5 --- /dev/null +++ b/Tables/hi.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Hindi + +include devanagari.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/hr.ttb b/Tables/hr.ttb new file mode 100644 index 0000000000000000000000000000000000000000..f7783f668ac714a04a80a83195f676a9c9d89fc8 --- /dev/null +++ b/Tables/hr.ttb @@ -0,0 +1,206 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Croatian +# +# Copyright (C) 2005 by Sebastien Sable, All rights reserved. + +# Table generated by Sébastien Sablé for +# libbraille http://libbraille.org and gnome-braille +# http://cvs.gnome.org/viewcvs/gnome-braille/ +# +# Table adapted for BRLTTY by Samuel Thibault +# +# *Many thanks to Danko Butorac for his help* +# Table based on "Croatian code page for computer 8-dot Braille +# alphabet ANSI-1250" from the "Croatian Association of the Blind" at +# http://www.savez-slijepih.hr/en/download.htm + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# generated by ttbtest: charset=iso-8859-2 +char \x20 ( ) # 20 â € [SPACE] +char \x22 ( 23 56 ) # 22 â ¶ " [QUOTATION MARK] +char \x24 ( 234 6 ) # 24 â ® $ [DOLLAR SIGN] +char \x25 ( 4 6 ) # 25 â ¨ % [PERCENT SIGN] +char \x26 (1234 6 ) # 26 â ¯ & [AMPERSAND] +char \x27 ( 6 ) # 27 â   ' [APOSTROPHE] +char \x28 (12 6 ) # 28 â £ ( [LEFT PARENTHESIS] +char \x29 ( 345 ) # 29 â œ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 23 5 ) # 2B â – + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 3 ) # 2E â „ . [FULL STOP] +char \x2F ( 2 56 ) # 2F â ² / [SOLIDUS] +char \x30 ( 34 6 ) # 30 â ¬ 0 [DIGIT ZERO] +char \x31 (1 6 ) # 31 â ¡ 1 [DIGIT ONE] +char \x32 ( 34 ) # 32 â Œ 2 [DIGIT TWO] +char \x33 (1 4 6 ) # 33 â © 3 [DIGIT THREE] +char \x34 (1 456 ) # 34 â ¹ 4 [DIGIT FOUR] +char \x35 (1 56 ) # 35 â ± 5 [DIGIT FIVE] +char \x36 (12 4 6 ) # 36 â « 6 [DIGIT SIX] +char \x37 (12 456 ) # 37 â » 7 [DIGIT SEVEN] +char \x38 (12 56 ) # 38 â ³ 8 [DIGIT EIGHT] +char \x39 ( 2 4 6 ) # 39 â ª 9 [DIGIT NINE] +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C ( 23 6 ) # 3C â ¦ < [LESS-THAN SIGN] +char \x3D (123456 ) # 3D â ¿ = [EQUALS SIGN] +char \x3E ( 3 56 ) # 3E â ´ > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 ( 4 7 ) # 40 ⡈ @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B (123 567 ) # 5B â¡· [ [LEFT SQUARE BRACKET] +char \x5C ( 45 7 ) # 5C ⡘ \ [REVERSE SOLIDUS] +char \x5D ( 234567 ) # 5D ⡾ ] [RIGHT SQUARE BRACKET] +char \x5E ( 567 ) # 5E â¡° ^ [CIRCUMFLEX ACCENT] +char \x5F ( 4567 ) # 5F ⡸ _ [LOW LINE] +char \x60 ( 4 ) # 60 â ˆ ` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B (123 56 ) # 7B â · { [LEFT CURLY BRACKET] +char \x7C ( 45 ) # 7C â ˜ | [VERTICAL LINE] +char \x7D ( 23456 ) # 7D â ¾ } [RIGHT CURLY BRACKET] +char \x7E ( 56 ) # 7E â ° ~ [TILDE] +char \xA0 ( 3 7 ) # A0 â¡„   [NO-BREAK SPACE] +char \u0104 ( 345 78) # A1 ⣜ Ä„ [LATIN CAPITAL LETTER A WITH OGONEK] +char \u02D8 ( 4 67 ) # A2 ⡨ ˘ [BREVE] +char \u0141 (123 6 8) # A3 ⢧ Å [LATIN CAPITAL LETTER L WITH STROKE] +char \xA4 ( 4 678) # A4 ⣨ ¤ [CURRENCY SIGN] +char \u013D ( 456 8) # A5 ⢸ Ľ [LATIN CAPITAL LETTER L WITH CARON] +char \u015A ( 234 8) # A6 ⢎ Åš [LATIN CAPITAL LETTER S WITH ACUTE] +char \xA7 ( 3 5 78) # A7 ⣔ § [SECTION SIGN] +char \xA8 ( 8) # A8 ⢀ ¨ [DIAERESIS] +char \u0160 (1 567 ) # A9 ⡱ Å  [LATIN CAPITAL LETTER S WITH CARON] +char \u015E ( 23456 8) # AA ⢾ Åž [LATIN CAPITAL LETTER S WITH CEDILLA] +char \u0164 (12345 8) # AB ⢟ Ť [LATIN CAPITAL LETTER T WITH CARON] +char \u0179 (1 3 56 8) # AC ⢵ Ź [LATIN CAPITAL LETTER Z WITH ACUTE] +char \xAD ( 78) # AD ⣀ ­ [SOFT HYPHEN] +char \u017D ( 234 67 ) # AE â¡® Ž [LATIN CAPITAL LETTER Z WITH CARON] +char \u017B (12 678) # AF ⣣ Å» [LATIN CAPITAL LETTER Z WITH DOT ABOVE] +char \xB0 ( 5 78) # B0 ⣠° [DEGREE SIGN] +char \u0105 ( 567 ) # B1 â¡° Ä… [LATIN SMALL LETTER A WITH OGONEK] +char \u02DB ( 5 8) # B2 ⢠˛ [OGONEK] +char \u0142 ( 23 78) # B3 ⣆ Å‚ [LATIN SMALL LETTER L WITH STROKE] +char \xB4 ( 4 8) # B4 ⢈ ´ [ACUTE ACCENT] +char \u013E (12 8) # B5 ⢃ ľ [LATIN SMALL LETTER L WITH CARON] +char \u015B ( 3 5 7 ) # B6 â¡” Å› [LATIN SMALL LETTER S WITH ACUTE] +char \u02C7 ( 45 8) # B7 ⢘ ˇ [CARON] +char \xB8 ( 56 8) # B8 ⢰ ¸ [CEDILLA] +char \u0161 (1 56 8) # B9 ⢱ Å¡ [LATIN SMALL LETTER S WITH CARON] +char \u015F ( 3 5678) # BA ⣴ ÅŸ [LATIN SMALL LETTER S WITH CEDILLA] +char \u0165 ( 23 567 ) # BB ⡶ Å¥ [LATIN SMALL LETTER T WITH CARON] +char \u017A ( 2 678) # BC ⣢ ź [LATIN SMALL LETTER Z WITH ACUTE] +char \u02DD ( 6 8) # BD ⢠ Ë [DOUBLE ACUTE ACCENT] +char \u017E ( 234 6 8) # BE ⢮ ž [LATIN SMALL LETTER Z WITH CARON] +char \u017C (1 678) # BF ⣡ ż [LATIN SMALL LETTER Z WITH DOT ABOVE] +char \u0154 (123 5 8) # C0 ⢗ Å” [LATIN CAPITAL LETTER R WITH ACUTE] +char \xC1 (1 3 8) # C1 ⢅ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 (123 56 8) # C2 ⢷  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \u0102 (1 8) # C3 ⢠Ă [LATIN CAPITAL LETTER A WITH BREVE] +char \xC4 ( 345 7 ) # C4 â¡œ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \u0139 (123 8) # C5 ⢇ Ĺ [LATIN CAPITAL LETTER L WITH ACUTE] +char \u0106 (1 4 67 ) # C6 â¡© Ć [LATIN CAPITAL LETTER C WITH ACUTE] +char \xC7 (1234 67 ) # C7 ⡯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \u010C (1 67 ) # C8 â¡¡ ÄŒ [LATIN CAPITAL LETTER C WITH CARON] +char \xC9 (1234567 ) # C9 â¡¿ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \u0118 (1 5678) # CA ⣱ Ę [LATIN CAPITAL LETTER E WITH OGONEK] +char \xCB (12 4 67 ) # CB â¡« Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \u011A (12 67 ) # CC â¡£ Äš [LATIN CAPITAL LETTER E WITH CARON] +char \xCD ( 34 7 ) # CD â¡Œ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE (12 4567 ) # CE â¡» ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \u010E (1 45 8) # CF ⢙ ÄŽ [LATIN CAPITAL LETTER D WITH CARON] +char \u0110 (1 4567 ) # D0 ⡹ Ä [LATIN CAPITAL LETTER D WITH STROKE] +char \u0143 (1 345 8) # D1 ⢠Ń [LATIN CAPITAL LETTER N WITH ACUTE] +char \u0147 (12 4 678) # D2 ⣫ Ň [LATIN CAPITAL LETTER N WITH CARON] +char \xD3 (1 3 5 8) # D3 ⢕ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 (1 45678) # D4 ⣹ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \u0150 ( 2 4 678) # D5 ⣪ Å [LATIN CAPITAL LETTER O WITH DOUBLE ACUTE] +char \xD6 ( 2 4 67 ) # D6 ⡪ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 (1 34 6 8) # D7 ⢭ × [MULTIPLICATION SIGN] +char \u0158 ( 2 456 8) # D8 ⢺ Ř [LATIN CAPITAL LETTER R WITH CARON] +char \u016E ( 34 67 ) # D9 ⡬ Å® [LATIN CAPITAL LETTER U WITH RING ABOVE] +char \xDA (1 3 6 8) # DA ⢥ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \u0170 ( 34 678) # DB ⣬ Å° [LATIN CAPITAL LETTER U WITH DOUBLE ACUTE] +char \xDC (12 567 ) # DC ⡳ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD (1 3456 8) # DD ⢽ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \u0162 ( 2345 8) # DE ⢞ Å¢ [LATIN CAPITAL LETTER T WITH CEDILLA] +char \xDF ( 234 678) # DF ⣮ ß [LATIN SMALL LETTER SHARP S] +char \u0155 ( 23 67 ) # E0 ⡦ Å• [LATIN SMALL LETTER R WITH ACUTE] +char \xE1 ( 2 7 ) # E1 â¡‚ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 ( 23 678) # E2 ⣦ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \u0103 ( 2 8) # E3 ⢂ ă [LATIN SMALL LETTER A WITH BREVE] +char \xE4 ( 345 8) # E4 ⢜ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \u013A ( 23 7 ) # E5 ⡆ ĺ [LATIN SMALL LETTER L WITH ACUTE] +char \u0107 (1 4 6 8) # E6 ⢩ ć [LATIN SMALL LETTER C WITH ACUTE] +char \xE7 (1234 6 8) # E7 ⢯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \u010D (1 6 8) # E8 ⢡ Ä [LATIN SMALL LETTER C WITH CARON] +char \xE9 (123456 8) # E9 ⢿ é [LATIN SMALL LETTER E WITH ACUTE] +char \u0119 ( 2 6 8) # EA ⢢ Ä™ [LATIN SMALL LETTER E WITH OGONEK] +char \xEB (12 4 6 8) # EB ⢫ ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \u011B ( 23 8) # EC ⢆ Ä› [LATIN SMALL LETTER E WITH CARON] +char \xED ( 34 8) # ED ⢌ í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (12 456 8) # EE ⢻ î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \u010F ( 3 6 8) # EF ⢤ Ä [LATIN SMALL LETTER D WITH CARON] +char \u0111 (1 456 8) # F0 ⢹ Ä‘ [LATIN SMALL LETTER D WITH STROKE] +char \u0144 ( 2 567 ) # F1 ⡲ Å„ [LATIN SMALL LETTER N WITH ACUTE] +char \u0148 ( 23 5 8) # F2 ⢖ ň [LATIN SMALL LETTER N WITH CARON] +char \xF3 ( 2 67 ) # F3 â¡¢ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 ( 2 56 8) # F4 ⢲ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \u0151 ( 3 5 8) # F5 ⢔ Å‘ [LATIN SMALL LETTER O WITH DOUBLE ACUTE] +char \xF6 ( 2 4 6 8) # F6 ⢪ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 ( 2 5 78) # F7 ⣒ ÷ [DIVISION SIGN] +char \u0159 ( 3 56 8) # F8 ⢴ Å™ [LATIN SMALL LETTER R WITH CARON] +char \u016F ( 34 6 8) # F9 ⢬ ů [LATIN SMALL LETTER U WITH RING ABOVE] +char \xFA ( 2 78) # FA ⣂ ú [LATIN SMALL LETTER U WITH ACUTE] +char \u0171 (1 4 678) # FB ⣩ ű [LATIN SMALL LETTER U WITH DOUBLE ACUTE] +char \xFC (12 56 8) # FC ⢳ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD ( 2 5678) # FD ⣲ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \u0163 ( 3 567 ) # FE â¡´ Å£ [LATIN SMALL LETTER T WITH CEDILLA] +char \u02D9 ( 67 ) # FF â¡  Ë™ [DOT ABOVE] + +char \xA6 ( 4 6 8) # ⢨ ¦ [BROKEN BAR] +char \xA9 (12 45 8) # ⢛ © [COPYRIGHT SIGN] +char \xAB ( 3 78) # ⣄ « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC ( 23 5 7 ) # â¡– ¬ [NOT SIGN] +char \xAE (12 45678) # ⣻ ® [REGISTERED SIGN] +char \xB1 (1234 678) # ⣯ ± [PLUS-MINUS SIGN] +char \xB5 ( 34567 ) # ⡼ µ [MICRO SIGN] +char \xB6 (1234 8) # ⢠¶ [PILCROW SIGN] +char \xB7 ( 3 8) # ⢄ · [MIDDLE DOT] +char \xBB ( 678) # ⣠ » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \u2013 (1 4 8) # ⢉ – [EN DASH] +char \u2014 ( 3 678) # ⣤ — [EM DASH] +char \u2018 (12 4 8) # ⢋ ‘ [LEFT SINGLE QUOTATION MARK] +char \u2019 (1 5 8) # ⢑ ’ [RIGHT SINGLE QUOTATION MARK] +char \u201A ( 23 5678) # ⣶ ‚ [SINGLE LOW-9 QUOTATION MARK] +char \u201C (12 5 8) # ⢓ “ [LEFT DOUBLE QUOTATION MARK] +char \u201D ( 2 45 8) # ⢚ †[RIGHT DOUBLE QUOTATION MARK] +char \u201E ( 23 56 8) # ⢶ „ [DOUBLE LOW-9 QUOTATION MARK] +char \u2020 ( 3 67 ) # ⡤ † [DAGGER] +char \u2021 ( 23 5 78) # ⣖ ‡ [DOUBLE DAGGER] +char \u2022 (12345678) # ⣿ • [BULLET] +char \u2026 ( 2 4 8) # ⢊ … [HORIZONTAL ELLIPSIS] +char \u2030 (1 34 8) # ⢠‰ [PER MILLE SIGN] +char \u2039 ( 2 5 7 ) # â¡’ ‹ [SINGLE LEFT-POINTING ANGLE QUOTATION MARK] +char \u203A ( 2 5 8) # ⢒ › [SINGLE RIGHT-POINTING ANGLE QUOTATION MARK] +char \u20AC (12 5678) # ⣳ € [EURO SIGN] +char \u2122 ( 23 6 8) # ⢦ â„¢ [TRADE MARK SIGN] + +include common.tti diff --git a/Tables/hu.ttb b/Tables/hu.ttb new file mode 100644 index 0000000000000000000000000000000000000000..c7bc09706d24960f4efc683221ae2ec4f832adee --- /dev/null +++ b/Tables/hu.ttb @@ -0,0 +1,60 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Hungarian +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# generated by ttbtest: charset=latin2 +char \xC1 ( 4 7 ) # C1 ⡈ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC4 ( 45 7 ) # C4 ⡘ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC9 (1 67 ) # C9 â¡¡ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCD ( 34 7 ) # CD â¡Œ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xD3 ( 2 4 67 ) # D3 ⡪ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \u0150 (12 4567 ) # D5 â¡» Å [LATIN CAPITAL LETTER O WITH DOUBLE ACUTE] +char \xD6 (12345 7 ) # D6 â¡Ÿ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xDA ( 34 67 ) # DA ⡬ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \u0170 ( 234567 ) # DB ⡾ Å° [LATIN CAPITAL LETTER U WITH DOUBLE ACUTE] +char \xDC (123 567 ) # DC â¡· Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xE1 ( 4 ) # E1 â ˆ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE4 ( 45 ) # E4 â ˜ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE9 (1 6 ) # E9 â ¡ é [LATIN SMALL LETTER E WITH ACUTE] +char \xED ( 34 ) # ED â Œ í [LATIN SMALL LETTER I WITH ACUTE] +char \xF3 ( 2 4 6 ) # F3 â ª ó [LATIN SMALL LETTER O WITH ACUTE] +char \u0151 (12 456 ) # F5 â » Å‘ [LATIN SMALL LETTER O WITH DOUBLE ACUTE] +char \xF6 (12345 ) # F6 â Ÿ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xFA ( 34 6 ) # FA â ¬ ú [LATIN SMALL LETTER U WITH ACUTE] +char \u0171 ( 23456 ) # FB â ¾ ű [LATIN SMALL LETTER U WITH DOUBLE ACUTE] +char \xFC (123 56 ) # FC â · ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \u025F (1 456 ) # â ¹ ÉŸ [LATIN SMALL LETTER DOTLESS J WITH STROKE] + +# the numbers 0-9 are represented by the letters j,a-i with dot 8 added +include numbers-dot8.tti + +include punctuation-basic.tti +char \x3F ( 2 6 ) # â ¢ ? [QUESTION MARK] + +include common.tti diff --git a/Tables/hy.ttb b/Tables/hy.ttb new file mode 100644 index 0000000000000000000000000000000000000000..0ec887a9f33074f2b3331ece29785dc2fac049ba --- /dev/null +++ b/Tables/hy.ttb @@ -0,0 +1,115 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Armenian +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +# lowercase letters +char \u0561 (1 ) # â  Õ¡ [ARMENIAN SMALL LETTER AYB] +char \u0562 (1234 ) # â  Õ¢ [ARMENIAN SMALL LETTER BEN] +char \u0563 (12345 ) # â Ÿ Õ£ [ARMENIAN SMALL LETTER GIM] +char \u0564 (1 456 ) # â ¹ Õ¤ [ARMENIAN SMALL LETTER DA] +char \u0565 (1 3456 ) # â ½ Õ¥ [ARMENIAN SMALL LETTER ECH] +char \u0566 (1 3 56 ) # â µ Õ¦ [ARMENIAN SMALL LETTER ZA] +char \u0567 (1 5 ) # â ‘ Õ§ [ARMENIAN SMALL LETTER EH] +char \u0568 (1 3 6 ) # â ¥ Õ¨ [ARMENIAN SMALL LETTER ET] +char \u0569 ( 2345 ) # â ž Õ© [ARMENIAN SMALL LETTER TO] +char \u056A ( 345 ) # â œ Õª [ARMENIAN SMALL LETTER ZHE] +char \u056B ( 2 4 ) # â Š Õ« [ARMENIAN SMALL LETTER INI] +char \u056C (123 ) # â ‡ Õ¬ [ARMENIAN SMALL LETTER LIWN] +char \u056D (1 34 6 ) # â ­ Õ­ [ARMENIAN SMALL LETTER XEH] +char \u056E ( 34 ) # â Œ Õ® [ARMENIAN SMALL LETTER CA] +char \u056F (12 45 ) # â › Õ¯ [ARMENIAN SMALL LETTER KEN] +char \u0570 (12 5 ) # â “ Õ° [ARMENIAN SMALL LETTER HO] +char \u0571 ( 34 6 ) # â ¬ Õ± [ARMENIAN SMALL LETTER JA] +char \u0572 (12 6 ) # â £ Õ² [ARMENIAN SMALL LETTER GHAD] +char \u0573 ( 2 45 ) # â š Õ³ [ARMENIAN SMALL LETTER CHEH] +char \u0574 (1 34 ) # â  Õ´ [ARMENIAN SMALL LETTER MEN] +char \u0575 (1 56 ) # â ± Õµ [ARMENIAN SMALL LETTER YI] +char \u0576 (1 345 ) # â  Õ¶ [ARMENIAN SMALL LETTER NOW] +char \u0577 (1 4 6 ) # â © Õ· [ARMENIAN SMALL LETTER SHA] +char \u0578 ( 2 4 6 ) # â ª Õ¸ [ARMENIAN SMALL LETTER VO] +char \u0579 (1 6 ) # â ¡ Õ¹ [ARMENIAN SMALL LETTER CHA] +char \u057A (12 ) # â ƒ Õº [ARMENIAN SMALL LETTER PEH] +char \u057B (1 4 ) # â ‰ Õ» [ARMENIAN SMALL LETTER JHEH] +char \u057C (12 456 ) # â » Õ¼ [ARMENIAN SMALL LETTER RA] +char \u057D ( 234 ) # â Ž Õ½ [ARMENIAN SMALL LETTER SEH] +char \u057E (123 6 ) # â § Õ¾ [ARMENIAN SMALL LETTER VEW] +char \u057F (1 45 ) # â ™ Õ¿ [ARMENIAN SMALL LETTER TIWN] +char \u0580 (123 5 ) # â — Ö€ [ARMENIAN SMALL LETTER REH] +char \u0581 ( 234 6 ) # â ® Ö [ARMENIAN SMALL LETTER CO] +char \u0582 ( 2 456 ) # â º Ö‚ [ARMENIAN SMALL LETTER YIWN] +char \u0583 (12 4 6 ) # â « Öƒ [ARMENIAN SMALL LETTER PIWR] +char \u0584 (1 3 ) # â … Ö„ [ARMENIAN SMALL LETTER KEH] +char \u0585 (1 3 5 ) # â • Ö… [ARMENIAN SMALL LETTER OH] +char \u0586 (12 4 ) # â ‹ Ö† [ARMENIAN SMALL LETTER FEH] +char \u0587 (1234 6 ) # â ¯ Ö‡ [ARMENIAN SMALL LIGATURE ECH YIWN] + +# uppercase letters +char \u0531 (1 7 ) # â¡ Ô± [ARMENIAN CAPITAL LETTER AYB] +char \u0532 (1234 7 ) # â¡ Ô² [ARMENIAN CAPITAL LETTER BEN] +char \u0533 (12345 7 ) # â¡Ÿ Ô³ [ARMENIAN CAPITAL LETTER GIM] +char \u0534 (1 4567 ) # ⡹ Ô´ [ARMENIAN CAPITAL LETTER DA] +char \u0535 (1 34567 ) # ⡽ Ôµ [ARMENIAN CAPITAL LETTER ECH] +char \u0536 (1 3 567 ) # ⡵ Ô¶ [ARMENIAN CAPITAL LETTER ZA] +char \u0537 (1 5 7 ) # â¡‘ Ô· [ARMENIAN CAPITAL LETTER EH] +char \u0538 (1 3 67 ) # â¡¥ Ô¸ [ARMENIAN CAPITAL LETTER ET] +char \u0539 ( 2345 7 ) # â¡ž Ô¹ [ARMENIAN CAPITAL LETTER TO] +char \u053A ( 345 7 ) # â¡œ Ôº [ARMENIAN CAPITAL LETTER ZHE] +char \u053B ( 2 4 7 ) # â¡Š Ô» [ARMENIAN CAPITAL LETTER INI] +char \u053C (123 7 ) # ⡇ Ô¼ [ARMENIAN CAPITAL LETTER LIWN] +char \u053D (1 34 67 ) # â¡­ Ô½ [ARMENIAN CAPITAL LETTER XEH] +char \u053E ( 34 7 ) # â¡Œ Ô¾ [ARMENIAN CAPITAL LETTER CA] +char \u053F (12 45 7 ) # â¡› Ô¿ [ARMENIAN CAPITAL LETTER KEN] +char \u0540 (12 5 7 ) # â¡“ Õ€ [ARMENIAN CAPITAL LETTER HO] +char \u0541 ( 34 67 ) # ⡬ Õ [ARMENIAN CAPITAL LETTER JA] +char \u0542 (12 67 ) # â¡£ Õ‚ [ARMENIAN CAPITAL LETTER GHAD] +char \u0543 ( 2 45 7 ) # â¡š Õƒ [ARMENIAN CAPITAL LETTER CHEH] +char \u0544 (1 34 7 ) # â¡ Õ„ [ARMENIAN CAPITAL LETTER MEN] +char \u0545 (1 567 ) # ⡱ Õ… [ARMENIAN CAPITAL LETTER YI] +char \u0546 (1 345 7 ) # â¡ Õ† [ARMENIAN CAPITAL LETTER NOW] +char \u0547 (1 4 67 ) # â¡© Õ‡ [ARMENIAN CAPITAL LETTER SHA] +char \u0548 ( 2 4 67 ) # ⡪ Õˆ [ARMENIAN CAPITAL LETTER VO] +char \u0549 (1 67 ) # â¡¡ Õ‰ [ARMENIAN CAPITAL LETTER CHA] +char \u054A (12 7 ) # ⡃ ÕŠ [ARMENIAN CAPITAL LETTER PEH] +char \u054B (1 4 7 ) # ⡉ Õ‹ [ARMENIAN CAPITAL LETTER JHEH] +char \u054C (12 4567 ) # â¡» ÕŒ [ARMENIAN CAPITAL LETTER RA] +char \u054D ( 234 7 ) # â¡Ž Õ [ARMENIAN CAPITAL LETTER SEH] +char \u054E (123 67 ) # ⡧ ÕŽ [ARMENIAN CAPITAL LETTER VEW] +char \u054F (1 45 7 ) # â¡™ Õ [ARMENIAN CAPITAL LETTER TIWN] +char \u0550 (123 5 7 ) # â¡— Õ [ARMENIAN CAPITAL LETTER REH] +char \u0551 ( 234 67 ) # â¡® Õ‘ [ARMENIAN CAPITAL LETTER CO] +char \u0552 ( 2 4567 ) # ⡺ Õ’ [ARMENIAN CAPITAL LETTER YIWN] +char \u0553 (12 4 67 ) # â¡« Õ“ [ARMENIAN CAPITAL LETTER PIWR] +char \u0554 (1 3 7 ) # â¡… Õ” [ARMENIAN CAPITAL LETTER KEH] +char \u0555 (1 3 5 7 ) # â¡• Õ• [ARMENIAN CAPITAL LETTER OH] +char \u0556 (12 4 7 ) # â¡‹ Õ– [ARMENIAN CAPITAL LETTER FEH] + +# punctuation +char \u055D ( 6 ) # â   Õ [ARMENIAN COMMA] + +include letters-latin-dot8.tti +include numbers-nemeth.tti +include punctuation-alternate.tti +include common.tti diff --git a/Tables/id.ctb b/Tables/id.ctb new file mode 100644 index 0000000000000000000000000000000000000000..9445e1a935ccd26354007feb6e6fb13f337fcbc8 --- /dev/null +++ b/Tables/id.ctb @@ -0,0 +1,50 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - Indonesian (contracted) +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +include letters-latin.cti + +always ai 34 +always au 246 +always sj 146 +always ng 346 +always ch 16 + +always ? 26 + +capsign 46 + +numsign 6 +always 0 3456 +always 1 16 +always 2 126 +always 3 146 +always 4 1456 +always 5 156 +always 6 1246 +always 7 12456 +always 8 1256 +always 9 246 diff --git a/Tables/ipa.ctb b/Tables/ipa.ctb new file mode 100644 index 0000000000000000000000000000000000000000..7cadd63956f5382a010b2bda97a49416d285f37f --- /dev/null +++ b/Tables/ipa.ctb @@ -0,0 +1,225 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - International Phonetic Alphabet +# +# Samuel Thibault +# +# This is based on the ICEB Braille IPA Draft Table, Nov. 3, 2005 + +# Typographic Description IPA No Articulatory Description +# consonants +always p 1234 # lowercase p 101 voiceless bilabial plosive +always b 12 # lowercase b 102 voiced bilabial plosive +always t 2345 # lowercase t 103 voiceless alveolar plosive +always d 145 # lowercase d 104 voiced alveolar plosive +always ʈ 256-2345 # right-tail t 105 voiceless retroflex plosive +always É– 256-145 # right-tail d 106 voiced retroflex plosive +always c 14 # lowercase c 107 voiceless palatal plosive +always ÉŸ 35-245 # barred dotless j 108 voiced palatal plosive +always k 13 # lowercase k 109 voiceless velar plosive +always É¡ 1245 # lowercase script g 110 voiced velar plosive +always g 1245 # lowercase g 110 voiced velar plosive (alt. glyph) +always q 12345 # lowercase q 111 voiceless uvular plosive +always É¢ 35-1245 # small capital g 112 voiced uvular plosive +always Ê” 23 # glottal stop 113 glottal plosive +always m 134 # lowercase m 114 voiced bilabial nasal +always ɱ 235-134 # left-tail m (at right) 115 voiced labiodental nasal +always n 1345 # lowercase n 116 voiced alveolar nasal +always ɳ 256-1345 # right-tail n 117 voiced retroflex nasal +always ɲ 123456 # left-tail n (at left) 118 voiced palatal nasal +always Å‹ 1246 # eng 119 voiced velar nasal +always É´ 35-1345 # small capital n 120 voiced uvular nasal +always Ê™ 35-12 # small capital b 121 voiced bilabial trill +always r 1235 # lowercase r 122 voiced alveolar trill +always Ê€ 35-1235 # small capital r 123 voiced uvular trill +# 235-1236 # right-hook v labiodental flap +always ɾ 235-1235 # fish-hook r 124 voiced alveolar tap +always ɽ 256-1235 # right-tail r 125 voiced retroflex flap +always ɸ 46-124 # phi 126 voiceless bilabial fricative +always β 46-12 # beta 127 voiced bilabial fricative +always f 124 # lowercase f 128 voiceless labiodental fricative +always v 1236 # lowercase v 129 voiced labiodental fricative +always θ 46-1456 # theta 130 voiceless dental fricative +always ð 12456 # edh 131 voiced dental fricative +always s 234 # lowercase s 132 voiceless alveolar fricative +always z 1356 # lowercase z 133 voiced alveolar fricative +always ʃ 156 # esh 134 voiceless postalveolar fricative +always Ê’ 2346 # yogh 135 voiced postalveolar fricative +always Ê‚ 256-234 # right-tail s (at left) 136 voiceless retroflex fricative +always Ê 256-1356 # right-tail z 137 voiced retroflex fricative +always ç 235-14 # c cedilla 138 voiceless palatal fricative +always Ê 236-245 # curly-tail j 139 voiced palatal fricative +always x 1346 # lowercase x 140 voiceless velar fricative +always É£ 46-1245 # gamma 141 voiced velar fricative +always χ 46-12346 # chi 142 voiceless uvular fricative +always Ê 35-3456 # inverted small capital r 143 voiced uvular fricative +always ħ 235-125 # crossed h 144 voiceless pharyngeal fricative +always Ê• 235-23 # reversed glottal stop 145 voiced pharyngeal fricative +always h 125 # lowercase h 146 voiceless glottal fricative +always ɦ 236-125 # hooktop h 147 voiced glottal fricative +always ɬ 236-123 # belted l 148 voiceless alveolar lateral fricative +always É® 123-5-2346 # l-yogh digraph 149 voiced alveolar lateral fricative +always Ê‹ 236-1236 # script v 150 voiced labiodental approximant +always ɹ 3456 # turned r 151 voiced (post)alveolar approximant +always É» 256-3456 # turned r, right tail 152 voiced retroflex approximant +always j 245 # lowercase j 153 voiced palatal approximant +always É° 236-134 # turned m, right leg 154 voiced velar approximant +always l 123 # lowercase l 155 voiced alveolar lateral approximant +always É­ 256-123 # right-tail l 156 voiced retroflex lateral approxiant +always ÊŽ 236-13456 # turned y 157 voiced palatal lateral approximant +always ÊŸ 35-123 # small capital l 158 voiced velar lateral approximant +always É“ 236-12 # hooktop b 160 voiced bilabial implosive +always É— 236-145 # hooktop d 162 voiced dental/alveolar implosive +always Ê„ 236-35-245 # hooktop barred dotless j 164 voiced palatal implosive +always É  236-1245 # hooktop g 166 voiced velar implosive +always Ê› 236-35-1245 # hooktop small capital g 168 voiced uvular implosive +always Ê 235-2456 # turned w 169 voiceless labial-velar fricative +always w 2456 # lowercase w 170 voiced labial-velar approximant +always É¥ 256-125 # turned h 171 voiced labial-palatal approximant +always Êœ 35-125 # small capital h 172 voiceless epiglottal fricative +always Ê¡ 236-23 # barred glottal stop 173 epiglottal plosive +always Ê¢ 35-23 # barred reversed glottal stop 174 voiced epiglottal fricative +always ɧ 236-1246 # hooked eng 175 voiceless multiple-place fricative +always ʘ 12346-1234 # bull's eye 176 bilabial click +always Ç€ 12346-1456 # pipe 177 dental click +always ǃ 12346-2345 # exclamation point 178 (post-)alveolar click +always Ç‚ 12346-156 # double-barred pipe 179 palatoalveolar click +always Ç 12346-123 # double pipe 180 alveolar lateral click +always ɺ 236-3456 # turned long-leg r 181 voiced alveolar lateral flap +always É• 236-14 # curly-tail c 182 voiceless alveolopalatal fricative +always Ê‘ 236-1356 # curly-tail z 183 voiced alveolopalatal fricative +always É« 235-123 # lowercase l with tilde 209 velarized voiced alveolar lateral +always Ê£ 145-5-1356 # d-z digraph voiced alveolar affricate +always ʤ 145-5-2346 # d-yogh digraph voiced postalveolar affricate +always Ê¥ 145-5-236-1356 # d-curly-tail-z digraph voiced alveolopalatal affricate +always ʦ 2345-5-234 # t-s digraph voiceless alveolar affricate +always ʧ 2345-5-156 # t-esh digraph voiceless postalveolar affricate +always ʨ 2345-5-236-14 # t-curly-tail-c digraph voiceless alveolopalatal affricate + +# Voyels +always i 24 # lowercase i 301 close front unrounded vowel +always e 15 # lowercase e 302 close-mid front unrounded vowel +always É› 345 # epsilon 303 open-mid front unrounded vowel +always a 1 # lowercase a 304 open front unrounded vowel +always É‘ 16 # script a 305 open back unrounded vowel +always É” 126 # open o 306 open-mid back rounded vowel +always o 135 # lowercase o 307 close-mid back rounded vowel +always u 136 # lowercase u 308 close back rounded vowel +always y 13456 # lowercase y 309 close front rounded vowel +always ø 1256 # slashed o 310 close-mid front rounded vowel +always Å“ 246 # o-e digraph 311 open-mid front rounded vowel +always ɶ 35-246 # small capital o-e digraph 312 open front rounded vowel +always É’ 235-16 # turned script a 313 open back rounded vowel +always ÊŒ 346 # turned v (caret) 314 open-mid back unrounded vowel +always ɤ 235-135 # ram's horns 315 close-mid back unrounded vowel +always ɯ 235-136 # turned m 316 close back unrounded vowel +always ɨ 356-24 # barred i 317 close central unrounded vowel +always ʉ 356-136 # barred u 318 close central rounded vowel +always ɪ 34 # small capital i 319 near-close front unrounded vowel +always Ê 35-13456 # small capital y 320 near-close front rounded vowel +always ÊŠ 12356 # upsilon 321 near-close back rounded vowel +always É™ 26 # schwa 322 mid central unrounded vowel +always ɵ 356-135 # barred o 323 close-mid central rounded vowel +always É 235-1 # turned a 324 near-open central unrounded vowel +always æ 146 # ash 325 near-open front unrounded vowel +always Éœ 235-345 # reversed epsilon 326 open-mid central unrounded vowel +always Éš 26-5-1235 # schwa with hook 327 rhotacized schwa +always Éž 236-345 # closed reversed epsilon 395 open-mid central rounded vowel +always ɘ 235-15 # reversed e 397 open-mid central unrounded vowel + +always ʼ 5-3 # apostrophe 401 ejective +always Ì¥ 6-1246 # ring below 402 voiceless +always ÌŠ 4-1246 # ring above 402 voiceless +always ̬ 6-236 # wedge below 403 voiced +always Ê° 4-125 # superscript h 404 aspirated +always ̤ 6-25 # umlaut below 405 breathy voiced +always Ì° 6-12456 # tilde below 406 creaky voiced +always ̼ 6-12346 # seagull below 407 linguolabial +always ̪ 6-1456 # bridge below 408 dental +always ̺ 6-235-1456 # inverted bridge below 409 apical +always Ì» 6-2356 # square below 410 laminal +always ̹ 6-135 # right half-ring below 411 more rounded +always Ìœ 6-246 # left half-ring below 412 less rounded +always ÌŸ 6-346 # plus below 413 advanced +always Ì  6-36 # minus below 414 retracted +always ̈ 4-25 # umlaut above 415 centralized +always ̽ 4-1346 # over-cross above 416 mid-centralized +always ̘ 6-156 # advancing sign below 417 advanced tongue root +always Ì™ 6-234 # retracting sign below 418 retracted tongue root +always Ëž 5-1235 # right hook 419 rhotacized +always Ê· 4-2456 # superscript w 420 labialized +always ʲ 4-245 # superscript j 421 palatalized +always Ë  4-46-1245 # superscript gamma 422 velarized +always ˤ 4-235-23 # superscript reversed glottal stop 423 pharyngealized +always ̃ 4-12456 # tiled above 424 nasalized +always â¿ 4-1345 # superscript n 425 nasal release +always Ë¡ 4-123 # superscript l 426 lateral release +always Ìš 4-145 # corner above 427 no audible release +always Ì´ 5-12456 # superimposed tilde 428 velarized or pharyngealized +always Ì 6-345 # raising sign below 429 raised +always Ìž 6-126 # lowering sign below 430 lowered +always Ì© 6-23 # vertical line below 431 syllabic +always ̯ 6-23456 # arch below 432 non-syllabic +always Í¡ 5 # top tie bar 433 double articulation +always , 2 # comma 491 (punctuation) + +always ˈ 456-12 # vertical stroke (superior) 501 (primary) stress mark +always ËŒ 456-23 # vertical stroke (inferior) 502 secondary stress mark +always Ë 25 # length mark 503 length mark +always Ë‘ 5-2 # half-length mark 504 half-length +always ̆ 4-12356 # breve above 505 extra-short +always . 3 # period 506 syllable break +always | 456-1256 # vertical line 507 minor (foot) group +always ‖ 456-123456 # double vertical line 508 major (intonation) group +always ‿ 456-123 # bottom tie bar 509 linking (absence of a break) +always ↗ 456-145 # upward diagonal arrow 510 global rise +always ↘ 456-356 # downward diagonal arrow 511 global fall +always Ì‹ 4-6-34 # double acute accent above 512 extra high tone +always Ì 4-34 # acute accent above 513 high tone +always Ì„ 4-14 # macron above 514 mid tone +always Ì€ 4-16 # grave accent above 515 low tone +always Ì 4-6-16 # double grave accent above 516 extra low tone +always ↓ 456-2346 # down arrow 517 downstep +always ↑ 456-1246 # up arrow 518 upstep +always Ë¥ 456-4-14 # extra-high tone bar (55) 519 extra hight tone +always ˦ 456-14 # high tone bar (44) 520 hight tone +always ˧ 456-25 # mid tone bar (33) 521 mid tone +always ˨ 456-36 # low tone bar (22) 522 low tone +always Ë© 456-6-36 # extra-low tone bar (11) 523 extra low tone +always ÌŒ 4-236 # wedge above 524 rising tone +# 456-34 # rising tone bar (15) rising tone +always Ì‚ 4-146 # circumflex above 525 falling tone +# 456-16 # falling tone bar (15) falling tone +always ï…± 4-24 # macro-acute above 526 high-rising tone +# 456-24 # high-rising tone bar (35) high-rising tone +always ï…² 4-35 # grave-macro above 527 low-rising tone +# 456-35 # low-rising tone bar (13) low-rising tone +always ï…µ 4-256 # grave-acute-grave above 528 rising-falling tone + +# also used for switch into/out into/out of phonetic code. +always [ 45-12356 # left square bracket 901 opening phonetic brackets +always ] 45-23456 # right square bracket 902 closing phonetic brackets + +always / 45-34 # slash phonemic enclosure +always → 456-135 # rightward arrow becomes (is realized as) +always - 36 # hyphen (dash) (punctuation) + +# 56 # The following symbol is non-IPA and should be read in accordance with the primary braille code of the document +# 56-56 # The following passage is non-IPA and should be read in accordance with the primary braille code of the document +# 56-23 # Terminates a passage of non-IPA texte (opened by 56-56); return to IPA code diff --git a/Tables/is.ttb b/Tables/is.ttb new file mode 100644 index 0000000000000000000000000000000000000000..2f9699e557fbf39f86a43dc69c912da5664ed8c4 --- /dev/null +++ b/Tables/is.ttb @@ -0,0 +1,59 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Icelandic +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# lowercase non-Latin and accented letters +char \xF0 (123 56 ) # â · ð [LATIN SMALL LETTER ETH] +char \xF6 ( 234 6 ) # â ® ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xFE ( 23456 ) # â ¾ þ [LATIN SMALL LETTER THORN] +char \xE1 (1 6 ) # â ¡ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE9 (12 6 ) # â £ é [LATIN SMALL LETTER E WITH ACUTE] +char \xED (1 4 6 ) # â © í [LATIN SMALL LETTER I WITH ACUTE] +char \xF3 (1 456 ) # â ¹ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xFA (1 56 ) # â ± ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFD (12 4 6 ) # â « ý [LATIN SMALL LETTER Y WITH ACUTE] + +# uppercase non-Latin and accented letters +char \xD0 (123 567 ) # â¡· à [LATIN CAPITAL LETTER ETH] +char \xD6 ( 234 67 ) # â¡® Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xDE ( 234567 ) # ⡾ Þ [LATIN CAPITAL LETTER THORN] +char \xC1 (1 67 ) # â¡¡ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC9 (12 67 ) # â¡£ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCD (1 4 67 ) # â¡© à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xD3 (1 4567 ) # ⡹ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xDA (1 567 ) # ⡱ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDD (12 4 67 ) # â¡« à [LATIN CAPITAL LETTER Y WITH ACUTE] + +# the numbers 0-9 are represented by the letters j,a-i with dot 8 added +include numbers-dot8.tti + +include punctuation-basic.tti +char \x3F ( 2 6 ) # â ¢ ? [QUESTION MARK] + +include common.tti diff --git a/Tables/it.ttb b/Tables/it.ttb new file mode 100644 index 0000000000000000000000000000000000000000..a59e5ac7650709dc309140b7b64abed725204412 --- /dev/null +++ b/Tables/it.ttb @@ -0,0 +1,205 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Italian + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# the standard representations for the Latin control characters +include control-latin.tti + +# the numbers 1-9 are represented by the letters a-i with dot 6 added +# the number 0 is represented by dots 346 +include numbers-dot6.tti + +# generated by ttbtest: charset=iso-8859-1 +char \x00 ( 345 78) # 00 ⣜ [NULL] +# Latin control characters # 01-1A +char \x1B (123 5678) # 1B ⣷ [ESCAPE] +char \x1C ( 34 78) # 1C ⣌ [INFORMATION SEPARATOR FOUR] +char \x1D ( 2345678) # 1D ⣾ [INFORMATION SEPARATOR THREE] +char \x1E ( 234 678) # 1E ⣮ [INFORMATION SEPARATOR TWO] +char \x1F ( 45678) # 1F ⣸ [INFORMATION SEPARATOR ONE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 5 ) # 21 â  ! [EXCLAMATION MARK] +char \x22 ( 4 ) # 22 â ˆ " [QUOTATION MARK] +char \x23 ( 3456 ) # 23 â ¼ # [NUMBER SIGN] +char \x24 ( 4 6 ) # 24 â ¨ $ [DOLLAR SIGN] +char \x25 (123456 ) # 25 â ¿ % [PERCENT SIGN] +char \x26 (1234 6 ) # 26 â ¯ & [AMPERSAND] +char \x27 ( 6 ) # 27 â   ' [APOSTROPHE] +char \x28 ( 23 6 ) # 28 â ¦ ( [LEFT PARENTHESIS] +char \x29 ( 3 56 ) # 29 â ´ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 23 5 ) # 2B â – + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 3 ) # 2E â „ . [FULL STOP] +char \x2F ( 2 56 ) # 2F â ² / [SOLIDUS] +# Hindu-Arabic numerals # 30-39 +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C ( 56 ) # 3C â ° < [LESS-THAN SIGN] +char \x3D ( 23 56 ) # 3D â ¶ = [EQUALS SIGN] +char \x3E ( 45 ) # 3E â ˜ > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 ( 34 67 ) # 40 ⡬ @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B ( 23 67 ) # 5B ⡦ [ [LEFT SQUARE BRACKET] +char \x5C ( 2 567 ) # 5C ⡲ \ [REVERSE SOLIDUS] +char \x5D ( 3 567 ) # 5D â¡´ ] [RIGHT SQUARE BRACKET] +char \x5E ( 234 67 ) # 5E â¡® ^ [CIRCUMFLEX ACCENT] +char \x5F ( 456 ) # 5F â ¸ _ [LOW LINE] +char \x60 ( 345 ) # 60 â œ ` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B ( 23 6 8) # 7B ⢦ { [LEFT CURLY BRACKET] +char \x7C ( 2 56 8) # 7C ⢲ | [VERTICAL LINE] +char \x7D ( 3 56 8) # 7D ⢴ } [RIGHT CURLY BRACKET] +char \x7E ( 234 6 8) # 7E ⢮ ~ [TILDE] +char \x7F ( 78) # 7F ⣀ [DELETE] +char \x80 ( 456 8) # 80 ⢸ [] +char \x81 (1 4 8) # 81 ⢉ [] +char \x82 ( 34 6 8) # 82 ⢬ [BREAK PERMITTED HERE] +char \x83 (1 4567 ) # 83 ⡹ [NO BREAK HERE] +char \x84 ( 2 7 ) # 84 â¡‚ [] +char \x85 (1 45 8) # 85 ⢙ [NEXT LINE (NEL)] +char \x86 ( 2 67 ) # 86 â¡¢ [START OF SELECTED AREA] +char \x87 (123 56 8) # 87 ⢷ [END OF SELECTED AREA] +char \x88 (1 567 ) # 88 ⡱ [CHARACTER TABULATION SET] +char \x89 ( 2 6 8) # 89 ⢢ [CHARACTER TABULATION WITH JUSTIFICATION] +char \x8A ( 5 7 ) # 8A â¡ [LINE TABULATION SET] +char \x8B ( 3 5 8) # 8B ⢔ [PARTIAL LINE FORWARD] +char \x8C ( 5 8) # 8C ⢠[PARTIAL LINE BACKWARD] +char \x8D ( 3 7 ) # 8D â¡„ [REVERSE LINE FEED] +char \x8E ( 3 6 ) # 8E â ¤ [SINGLE SHIFT TWO] +char \x8F ( 456 8) # 8F ⢸ [SINGLE SHIFT THREE] +char \x90 ( 23 56 ) # 90 â ¶ [DEVICE CONTROL STRING] +char \x91 ( 456 8) # 91 ⢸ [PRIVATE USE ONE] +char \x92 ( 456 8) # 92 ⢸ [PRIVATE USE TWO] +char \x93 ( 2 4 7 ) # 93 â¡Š [SET TRANSMIT STATE] +char \x94 ( 234 8) # 94 ⢎ [CANCEL CHARACTER] +char \x95 ( 45 8) # 95 ⢘ [MESSAGE WAITING] +char \x96 ( 2 456 8) # 96 ⢺ [START OF GUARDED AREA] +char \x97 ( 4 8) # 97 ⢈ [END OF GUARDED AREA] +char \x98 ( 3 678) # 98 ⣤ [START OF STRING] +char \x99 ( 3 6 ) # 99 â ¤ [] +char \x9A ( 3 678) # 9A ⣤ [SINGLE CHARACTER INTRODUCER] +char \x9B ( 56 8) # 9B ⢰ [CONTROL SEQUENCE INTRODUCER] +char \x9C ( 3 6 ) # 9C â ¤ [STRING TERMINATOR] +char \x9D ( 23 56 ) # 9D â ¶ [OPERATING SYSTEM COMMAND] +char \x9E ( 23 5 7 ) # 9E â¡– [PRIVACY MESSAGE] +char \x9F (12 4 678) # 9F ⣫ [APPLICATION PROGRAM COMMAND] +char \xA0 (12345678) # A0 ⣿   [NO-BREAK SPACE] +char \xA1 ( 3 67 ) # A1 ⡤ ¡ [INVERTED EXCLAMATION MARK] +char \xA2 (1 4 6 8) # A2 ⢩ ¢ [CENT SIGN] +char \xA3 ( 4 67 ) # A3 ⡨ £ [POUND SIGN] +char \xA4 (12345678) # A4 ⣿ ¤ [CURRENCY SIGN] +char \xA5 ( 4 6 8) # A5 ⢨ Â¥ [YEN SIGN] +char \xA6 ( 23 56 ) # A6 â ¶ ¦ [BROKEN BAR] +char \xA7 (12345678) # A7 ⣿ § [SECTION SIGN] +char \xA8 ( 3 6 ) # A8 â ¤ ¨ [DIAERESIS] +char \xA9 ( 3 6 ) # A9 â ¤ © [COPYRIGHT SIGN] +char \xAA (12 5 8) # AA ⢓ ª [FEMININE ORDINAL INDICATOR] +char \xAB ( 5678) # AB ⣰ « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC ( 3 6 ) # AC â ¤ ¬ [NOT SIGN] +char \xAD ( 5 78) # AD ⣠­ [SOFT HYPHEN] +char \xAE ( 3 6 ) # AE â ¤ ® [REGISTERED SIGN] +char \xAF ( 23 56 ) # AF â ¶ ¯ [MACRON] +char \xB0 ( 34 8) # B0 ⢌ ° [DEGREE SIGN] +char \xB1 ( 23 5 78) # B1 ⣖ ± [PLUS-MINUS SIGN] +char \xB2 (12 8) # B2 ⢃ ² [SUPERSCRIPT TWO] +char \xB3 ( 456 8) # B3 ⢸ ³ [SUPERSCRIPT THREE] +char \xB4 ( 456 8) # B4 ⢸ ´ [ACUTE ACCENT] +char \xB5 (1 34 6 8) # B5 ⢭ µ [MICRO SIGN] +char \xB6 (12345678) # B6 ⣿ ¶ [PILCROW SIGN] +char \xB7 ( 7 ) # B7 â¡€ · [MIDDLE DOT] +char \xB8 ( 23 56 ) # B8 â ¶ ¸ [CEDILLA] +char \xB9 ( 456 8) # B9 ⢸ ¹ [SUPERSCRIPT ONE] +char \xBA ( 2 45 8) # BA ⢚ º [MASCULINE ORDINAL INDICATOR] +char \xBB ( 45 78) # BB ⣘ » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBC (123 6 8) # BC ⢧ ¼ [VULGAR FRACTION ONE QUARTER] +char \xBD ( 3 7 ) # BD â¡„ ½ [VULGAR FRACTION ONE HALF] +char \xBE ( 23 56 ) # BE â ¶ ¾ [VULGAR FRACTION THREE QUARTERS] +char \xBF ( 6 8) # BF ⢠ ¿ [INVERTED QUESTION MARK] +char \xC0 ( 3 6 ) # C0 â ¤ À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 ( 3 6 ) # C1 â ¤ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 ( 3 6 ) # C2 â ¤  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 ( 456 8) # C3 ⢸ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 (123 567 ) # C4 â¡· Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 ( 345678) # C5 ⣼ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( 4 78) # C6 ⣈ Æ [LATIN CAPITAL LETTER AE] +char \xC7 (1234 67 ) # C7 ⡯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( 23 56 ) # C8 â ¶ È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 ( 2 678) # C9 ⣢ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA ( 23 56 ) # CA â ¶ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB ( 23 56 ) # CB â ¶ Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC ( 456 8) # CC ⢸ ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD ( 23 56 ) # CD â ¶ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE ( 456 8) # CE ⢸ ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF ( 23 56 ) # CF â ¶ à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD0 ( 3 6 ) # D0 â ¤ à [LATIN CAPITAL LETTER ETH] +char \xD1 (1 34 8) # D1 ⢠Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD2 ( 3 6 ) # D2 â ¤ Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 ( 3 6 ) # D3 â ¤ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 ( 23 56 ) # D4 â ¶ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD5 ( 23 56 ) # D5 â ¶ Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 ( 34 7 ) # D6 â¡Œ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 ( 456 8) # D7 ⢸ × [MULTIPLICATION SIGN] +char \xD8 ( 456 8) # D8 ⢸ Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xD9 ( 3 6 ) # D9 â ¤ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA ( 3 6 ) # DA â ¤ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB (12345678) # DB ⣿ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC ( 234567 ) # DC ⡾ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD ( 456 8) # DD ⢸ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDE ( 456 8) # DE ⢸ Þ [LATIN CAPITAL LETTER THORN] +char \xDF ( 234 6 ) # DF â ® ß [LATIN SMALL LETTER SHARP S] +char \xE0 (1 8) # E0 ⢠à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 (1 6 8) # E1 ⢡ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 678) # E2 ⣡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 (1234 8) # E3 ⢠ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 (123 56 ) # E4 â · ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 ( 34567 ) # E5 ⡼ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 ( 4 7 ) # E6 ⡈ æ [LATIN SMALL LETTER AE] +char \xE7 (1234 678) # E7 ⣯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 (1 5 8) # E8 ⢑ è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (1 56 8) # E9 ⢱ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (12 678) # EA ⣣ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 8) # EB ⢫ ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC ( 2 4 8) # EC ⢊ ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED ( 3 5 7 ) # ED â¡” í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 67 ) # EE â¡© î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 8) # EF ⢻ ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF0 ( 3 6 8) # F0 ⢤ ð [LATIN SMALL LETTER ETH] +char \xF1 (1 345 8) # F1 ⢠ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 (1 3 5 8) # F2 ⢕ ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 ( 2 4 6 8) # F3 ⢪ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 45678) # F4 ⣹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 ( 345 8) # F5 ⢜ õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 34 ) # F6 â Œ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 (12 5678) # F7 ⣳ ÷ [DIVISION SIGN] +char \xF8 (12345678) # F8 ⣿ ø [LATIN SMALL LETTER O WITH STROKE] +char \xF9 (1 3 6 8) # F9 ⢥ ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA (1 3 678) # FA ⣥ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 5678) # FB ⣱ û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC ( 23456 ) # FC â ¾ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD (12345678) # FD ⣿ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \xFE ( 3 678) # FE ⣤ þ [LATIN SMALL LETTER THORN] +char \xFF ( 456 8) # FF ⢸ ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] + +include common.tti diff --git a/Tables/ja.ctb b/Tables/ja.ctb new file mode 100644 index 0000000000000000000000000000000000000000..9fb8e828da96f29253dca1c53367cfbfec994fc6 --- /dev/null +++ b/Tables/ja.ctb @@ -0,0 +1,490 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - Japanese (uncontracted) +# +# Copyright (C) 2005 by Sun Microsystems Inc., All rights reserved. +# +# Table generated by Bill Haneman +# for gnome-braille (cvs module gnome-braille, cvs.gnome.org) +# +# Adapted for BRLTTY by Samuel Thibault + +# katakana +always ã‚¡ 1 +always ã‚¢ 1 +always イ 12 +always ã‚¥ 14 +always ウ 14 +always ェ 124 +always エ 124 +always オ 24 +always ã‚« 16 +always ã‚­ 126 +always ク 146 +always ケ 1246 +always コ 246 +always サ 156 +always ã‚· 1256 +always ス 1456 +always ã‚» 12456 +always ソ 2456 +always ã‚¿ 135 +always ム1235 +always ツ 1435 +always テ 12435 +always ト 2435 +always ナ 13 +always ニ 123 +always ヌ 143 +always ム1243 +always ノ 243 +always ム136 +always ヒ 1236 +always フ 1436 +always ヘ 12436 +always ホ 2436 +always マ 1356 +always ミ 12356 +always ム 14356 +always メ 124356 +always モ 24356 +always ヤ 34 +always ユ 346 +always ョ 345 +always ヨ 345 +always ラ 15 +always リ 125 +always ル 145 +always レ 1245 +always ロ 245 +always ワ 3 +always ヲ 35 +always ン 356 +always ッ 2 +always ガ 5-16 +always ã‚® 5-126 +always ã‚° 5-146 +always ゲ 5-1246 +always ã‚´ 5-246 +always ザ 5-156 +always ジ 5-1256 +always ズ 5-1456 +always ゼ 5-12456 +always ゾ 5-2456 +always ダ 5-135 +always ヂ 5-1235 +always ヅ 5-1435 +always デ 5-12435 +always ド 5-2435 +always ム5-136 +always ビ 5-1236 +always ブ 5-1436 +always ベ 5-12436 +always ボ 5-2436 +always パ 6-136 +always ピ 6-1236 +always プ 6-1436 +always ペ 6-12436 +always ム6-2436 + +# halfwidth chars +always ヲ 35 +always ï½± 1 +always ァ 1 +always ï½² 12 +always ィ 12 +always ï½³ 14 +always ゥ 14 +always ï½´ 124 +always ェ 124 +always ï½µ 24 +always ォ 24 +always カ 16 +always ï½· 126 +always ク 146 +always ï½¹ 1246 +always コ 246 +always ï½» 156 +always ï½¼ 1256 +always ï½½ 1456 +always ï½¾ 12456 +always ソ 2456 +always ï¾€ 135 +always ï¾ 1235 +always ッ 1435 +always ツ 1435 +always テ 12435 +always ト 2435 +always ï¾… 13 +always ニ 123 +always ヌ 143 +always ネ 1243 +always ノ 243 +always ハ 136 +always ヒ 1236 +always フ 1436 +always ï¾ 12436 +always ホ 2436 +always ï¾ 1356 +always ï¾ 12356 +always ム 14356 +always ï¾’ 124356 +always モ 24356 +always ャ 34 +always ï¾” 34 +always ï½­ 346 +always ユ 346 +always ï½® 345 +always ï¾– 345 +always ï¾— 15 +always リ 125 +always ï¾™ 145 +always レ 1245 +always ï¾› 245 +always ワ 3 +always ï¾ 356 + +# hiregana +always ã‚ 1 +always ã„ 12 +always ㆠ14 +always ㈠124 +always ㊠24 +always ã‹ 16 +always ã 126 +always ã 146 +always ã‘ 1246 +always ã“ 246 +always ã• 156 +always ã— 1256 +always ã™ 1456 +always ã› 12456 +always ã 2456 +always 㟠135 +always ã¡ 1235 +always 㤠1435 +always 㦠12435 +always 㨠2435 +always 㪠13 +always ã« 123 +always 㬠143 +always ã­ 1243 +always ã® 243 +always 㯠136 +always ã² 1236 +always ãµ 1436 +always 㸠12436 +always ã» 2436 +always ã¾ 1356 +always ã¿ 12356 +always ã‚€ 14356 +always ã‚ 124356 +always ã‚‚ 24356 +always ã‚„ 34 +always ゆ 346 +always よ 345 +always ら 15 +always ã‚Š 125 +always ã‚‹ 145 +always ã‚Œ 1245 +always ã‚ 245 +always ã‚ 3 +always ã‚’ 35 +always ã‚“ 356 +always 㣠2 +always ㌠5-16 +always ㎠5-126 +always ã 5-146 +always ã’ 5-1246 +always ã” 5-246 +always ã– 5-156 +always 㘠5-1256 +always ãš 5-1456 +always 㜠5-12456 +always ãž 5-2456 +always ã  5-135 +always 㢠5-1235 +always 㥠5-1435 +always 㧠5-12435 +always ã© 5-2435 +always ã° 5-136 +always ã³ 5-1236 +always 㶠5-1436 +always ã¹ 5-12436 +always ã¼ 5-2436 +always ã± 6-136 +always ã´ 6-1236 +always ã· 6-1436 +always 㺠6-12436 +always ã½ 6-2436 + +# check this: digraph 'yori' +always ã‚Ÿ 435-125 + +always 。 256 +always 〠56 +always 、 56 +always 。 256 +always " 36 +always ? 26 +always ! 235 +always ( 2356 +always ) 2356 +always , 56 +always . 256 +always ー 25 + +always ・ 5 +always ヿ 246-26 + +numsign 3456 + +# You-on for ya suffix, yu, etc. +always カャ 4-16 +always サャ 4-156 +always タャ 4-135 +always ナャ 4-13 +always ãƒãƒ£ 4-136 +always マャ 4-1356 +always ラャ 4-15 +always ガャ 45-16 +always ザャ 45-156 +always ダャ 45-135 +always ãƒãƒ£ 45-136 +always パャ 46-136 + +always カャ 4-16 +always サャ 4-156 +always タャ 4-135 +always ナャ 4-13 +always ハャ 4-136 +always ï¾ï½¬ 4-1356 +always ラャ 4-15 + +always ã‹ã‚ƒ 4-16 +always ã•ã‚ƒ 4-156 +always ãŸã‚ƒ 4-135 +always ãªã‚ƒ 4-13 +always ã¯ã‚ƒ 4-136 +always ã¾ã‚ƒ 4-1356 +always らゃ 4-15 +always ãŒã‚ƒ 45-16 +always ã–ゃ 45-156 +always ã ã‚ƒ 45-135 +always ã°ã‚ƒ 45-136 +always ã±ã‚ƒ 46-136 + +always クュ 4-146 +always スュ 4-1456 +always ツュ 4-1435 +always ヌュ 4-143 +always フュ 4-1436 +always ムュ 4-14356 +always ラュ 4-145 +always ガュ 45-146 +always ザュ 45-1456 +always ジュ 45-1435 +always ãƒãƒ¥ 45-1436 +always パュ 46-1436 + +always クュ 4-146 +always スュ 4-1456 +always ツュ 4-1435 +always ヌュ 4-143 +always フュ 4-1436 +always ムュ 4-14356 +always ï¾—ï½­ 4-145 + +always ãã‚… 4-146 +always ã™ã‚… 4-1456 +always ã¤ã‚… 4-1435 +always ã¬ã‚… 4-143 +always ãµã‚… 4-1436 +always むゅ 4-14356 +always らゅ 4-145 +always ãŒã‚… 45-146 +always ã–ã‚… 45-1456 +always ã˜ã‚… 45-1435 +always ã°ã‚… 45-1436 +always ã±ã‚… 46-1436 + +always コョ 4-246 +always ソョ 4-2456 +always トョ 4-2435 +always ノョ 4-243 +always ホョ 4-2436 +always モョ 4-24356 +always ロョ 4-245 +always ゴョ 45-246 +always ゾョ 45-2456 +always ヂョ 45-2435 +always ボョ 45-243 +always ãƒãƒ§ 46-243 + +always コョ 4-246 +always ソョ 4-2456 +always トョ 4-2435 +always ノョ 4-243 +always ホョ 4-2436 +always モョ 4-24356 + +always ã“ょ 4-246 +always ãょ 4-2456 +always ã¨ã‚‡ 4-2435 +always ã®ã‚‡ 4-243 +always ã»ã‚‡ 4-2436 +always もょ 4-24356 +always ã‚ょ 4-245 +always ã”ょ 45-246 +always ãžã‚‡ 45-2456 +always ã¢ã‚‡ 45-2435 +always ã¼ã‚‡ 45-243 +always ã½ã‚‡ 46-243 + +# vowel suffix contexts + +# ye +always イェ 4-124 +always イェ 4-124 +always ã„㇠4-124 + +# wi +always ウィ 35-12 +always ウィ 35-12 +always ã†ãƒ 35-12 + +# we +always ウェ 35-124 +always ウェ 35-124 +always ã†ã‡ 35-124 + +# wo +always ウォ 35-24 +always ウォ 35-24 +always ã†ã‰ 35-24 + +# tsa +always ツァ 26-135 +always ツァ 26-135 +always ã¤ã 26-135 + +# tsi +always ツィ 26-1235 +always ツィ 26-1235 +always ã¤ãƒ 26-1235 + +# tse +always ツェ 26-12435 +always ツェ 26-12435 +always ã¤ã‡ 26-12435 + +# tso +always ツォ 26-2435 +always ツォ 26-2435 +always ã¤ã‰ 26-2435 + +# fa +always ファ 26-136 +always ファ 26-136 +always ãµã 26-136 + +# fi +always フィ 26-1236 +always フィ 26-1236 +always ãµãƒ 26-1236 + +# fe +always フェ 26-12436 +always フェ 26-12436 +always ãµã‡ 26-12436 + +# fo +always フォ 26-2436 +always フォ 26-2436 +always ãµã‰ 26-2436 + +# va +always ブァ 256-136 +always ã¶ã 256-136 + +# vi +always ブィ 256-1236 +always ã¶ãƒ 256-1236 + +# vu +always ブゥ 2-14 +always ã¶ã… 2-14 + +# ve +always ブェ 256-12436 +always ã¶ã‡ 256-12436 + +# vo +always ブォ 256-2436 +always ã¶ã‰ 256-2436 + +# sye +always シェ 4-12456 +always シェ 4-12456 +always ã—㇠4-12456 + +# je +always ジェ 45-12456 +always ã˜ã‡ 45-12456 + +# tye +always ãƒã‚§ 4-12435 +always ï¾ï½ª 4-12435 +always ã¡ã‡ 4-12435 + +# tyi +always ティ 4-1235 +always ティ 4-1235 +always ã¦ãƒ 4-1235 + +# dyi +always ディ 14-1235 +always ã§ãƒ 14-1235 + +# twu +always トゥ 26-1435 +always トゥ 26-1435 +always ã¨ã… 26-1435 + +# dwu +always ドゥ 256-1435 +always ã©ã… 256-1435 + +# tyu +always テュ 46-1435 +always テュ 46-1435 +always ã¦ã‚… 46-1435 + +# dyu +always デ 456-1435 +always 㧠456-1435 + +# kwa +always クァ 26-16 +always クァ 26-16 +always ãã 26-16 + +# gwa +always ã‚°ã‚¡ 256-16 +always ãã 256-16 diff --git a/Tables/kannada.tti b/Tables/kannada.tti new file mode 100644 index 0000000000000000000000000000000000000000..6ad6dee5de2858ce0ee2b47d203d1b4d59bd273c --- /dev/null +++ b/Tables/kannada.tti @@ -0,0 +1,109 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable defines the braille representations +# for the Kannada script. + +# Maintained by John J. Boyer, director@chpi.org, www.chpi.org +# +# This table is built and maintained by Leon Ungier +# with help and guidance from Mohammed R. Ramadan +# +# Converted from liblouis table by Samuel Thibault + +# generated by ttbtest: + +char \u0C82 ( 56 ) # â ° ಂ [KANNADA SIGN ANUSVARA] +char \u0C83 ( 6 ) # â   ಃ [KANNADA SIGN VISARGA] +char \u0C85 (1 ) # â  à²… [KANNADA LETTER A] +char \u0C86 ( 345 ) # â œ ಆ [KANNADA LETTER AA] +char \u0C87 ( 2 4 ) # â Š ಇ [KANNADA LETTER I] +char \u0C88 ( 3 5 ) # â ” ಈ [KANNADA LETTER II] +char \u0C89 (1 3 6 ) # â ¥ ಉ [KANNADA LETTER U] +char \u0C8A (12 56 ) # â ³ ಊ [KANNADA LETTER UU] + +char \u0C8E ( 34 7 ) # â¡Œ ಎ [KANNADA LETTER E] +char \u0C8F (1 5 ) # â ‘ ಠ[KANNADA LETTER EE] +char \u0C90 ( 34 ) # â Œ ಠ[KANNADA LETTER AI] + +char \u0C92 ( 2 4 67 ) # ⡪ ಒ [KANNADA LETTER O] +char \u0C93 (1 3 5 ) # â • ಓ [KANNADA LETTER OO] +char \u0C94 ( 2 4 6 ) # â ª ಔ [KANNADA LETTER AU] +char \u0C95 (1 3 ) # â … ಕ [KANNADA LETTER KA] +char \u0C96 ( 4 6 ) # â ¨ ಖ [KANNADA LETTER KHA] +char \u0C97 (1234 ) # â  à²— [KANNADA LETTER GA] +char \u0C98 (12 6 ) # â £ ಘ [KANNADA LETTER GHA] +char \u0C99 ( 34 6 ) # â ¬ ಙ [KANNADA LETTER NGA] +char \u0C9A (1 4 ) # â ‰ ಚ [KANNADA LETTER CA] +char \u0C9B (1 6 ) # â ¡ ಛ [KANNADA LETTER CHA] +char \u0C9C ( 2 45 ) # â š ಜ [KANNADA LETTER JA] +char \u0C9D ( 3 56 ) # â ´ ಠ[KANNADA LETTER JHA] +char \u0C9E ( 2 5 ) # â ’ ಞ [KANNADA LETTER NYA] +char \u0C9F ( 23456 ) # â ¾ ಟ [KANNADA LETTER TTA] +char \u0CA0 ( 2 456 ) # â º ಠ [KANNADA LETTER TTHA] +char \u0CA1 (12 4 6 ) # â « ಡ [KANNADA LETTER DDA] +char \u0CA2 (123456 ) # â ¿ ಢ [KANNADA LETTER DDHA] +char \u0CA3 ( 3456 ) # â ¼ ಣ [KANNADA LETTER NNA] +char \u0CA4 ( 2345 ) # â ž ತ [KANNADA LETTER TA] +char \u0CA5 (1 456 ) # â ¹ ಥ [KANNADA LETTER THA] +char \u0CA6 (1 45 ) # â ™ ದ [KANNADA LETTER DA] +char \u0CA7 ( 234 6 ) # â ® ಧ [KANNADA LETTER DHA] +char \u0CA8 (1 345 ) # â  à²¨ [KANNADA LETTER NA] + +char \u0CAA (1234 ) # â  à²ª [KANNADA LETTER PA] +char \u0CAB ( 23 5 ) # â – ಫ [KANNADA LETTER PHA] +char \u0CAC (12 ) # â ƒ ಬ [KANNADA LETTER BA] +char \u0CAD ( 45 ) # â ˜ ಭ [KANNADA LETTER BHA] +char \u0CAE (1 34 ) # â  à²® [KANNADA LETTER MA] +char \u0CAF (1 3456 ) # â ½ ಯ [KANNADA LETTER YA] +char \u0CB0 (123 5 ) # â — ರ [KANNADA LETTER RA] +char \u0CB1 (123 5 7 ) # â¡— ಱ [KANNADA LETTER RRA] +char \u0CB2 (123 ) # â ‡ ಲ [KANNADA LETTER LA] +char \u0CB3 (123 7 ) # ⡇ ಳ [KANNADA LETTER LLA] + +char \u0CB5 (123 6 ) # â § ವ [KANNADA LETTER VA] +char \u0CB6 (1 4 6 ) # â © ಶ [KANNADA LETTER SHA] +char \u0CB7 (1234 6 ) # â ¯ ಷ [KANNADA LETTER SSA] +char \u0CB8 ( 234 ) # â Ž ಸ [KANNADA LETTER SA] +char \u0CB9 (12 5 ) # â “ ಹ [KANNADA LETTER HA] +char \u0CBD ( 2 ) # â ‚ ಽ [KANNADA SIGN AVAGRAHA] +char \u0CBE ( 345 ) # â œ ಾ [KANNADA VOWEL SIGN AA] +char \u0CBF ( 2 4 ) # â Š ಿ [KANNADA VOWEL SIGN I] +char \u0CC0 ( 3 5 ) # â ” à³€ [KANNADA VOWEL SIGN II] +char \u0CC1 (1 3 6 ) # â ¥ à³ [KANNADA VOWEL SIGN U] +char \u0CC2 (12 56 ) # â ³ ೂ [KANNADA VOWEL SIGN UU] + +char \u0CC6 ( 34 7 ) # â¡Œ ೆ [KANNADA VOWEL SIGN E] +char \u0CC7 (1 5 ) # â ‘ ೇ [KANNADA VOWEL SIGN EE] +char \u0CC8 ( 34 ) # â Œ ೈ [KANNADA VOWEL SIGN AI] + +char \u0CCA ( 2 4 67 ) # ⡪ ೊ [KANNADA VOWEL SIGN O] +char \u0CCB (1 3 5 ) # â • ೋ [KANNADA VOWEL SIGN OO] +char \u0CCC ( 2 4 6 ) # â ª ೌ [KANNADA VOWEL SIGN AU] +char \u0CCD ( 4 ) # â ˆ à³ [KANNADA SIGN VIRAMA] + +char \u0CE6 ( 2 45 ) # â š ೦ [KANNADA DIGIT ZERO] +char \u0CE7 (1 ) # â  à³§ [KANNADA DIGIT ONE] +char \u0CE8 (12 ) # â ƒ ೨ [KANNADA DIGIT TWO] +char \u0CE9 (1 4 ) # â ‰ ೩ [KANNADA DIGIT THREE] +char \u0CEA (1 45 ) # â ™ ೪ [KANNADA DIGIT FOUR] +char \u0CEB (1 5 ) # â ‘ ೫ [KANNADA DIGIT FIVE] +char \u0CEC (12 4 ) # â ‹ ೬ [KANNADA DIGIT SIX] +char \u0CED (12 45 ) # â › à³­ [KANNADA DIGIT SEVEN] +char \u0CEE (12 5 ) # â “ à³® [KANNADA DIGIT EIGHT] +char \u0CEF ( 2 4 ) # â Š ೯ [KANNADA DIGIT NINE] diff --git a/Tables/keypad.ktb b/Tables/keypad.ktb new file mode 100644 index 0000000000000000000000000000000000000000..862efbd130f33762fe4d116dd9b9e30d4233ea2f --- /dev/null +++ b/Tables/keypad.ktb @@ -0,0 +1,69 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Key Table - bindings for keypad-based navigation + +bind KPInsert+KP5 Home +bind KPInsert+KPArrowLeft Back +bind KPInsert+KPArrowRight CsrTrk +bind KPInsert+KPArrowUp LnUp +bind KPInsert+KPArrowDown LnDn +bind KPInsert+KPHome Top_Left +bind KPInsert+KPEnd Bot_Left +bind KPInsert+KPPageUp PrDifLn +bind KPInsert+KPPageDown NxDifLn + +bind KPDelete+KP5 DescChar +bind KPDelete+KPArrowLeft Freeze +bind KPDelete+KPArrowRight CsrJmp_Vert +bind KPDelete+KPArrowUp PrPgrph +bind KPDelete+KPArrowDown NxPgrph +bind KPDelete+KPHome PrPrompt +bind KPDelete+KPEnd NxPrompt +bind KPDelete+KPPageUp AttrUp +bind KPDelete+KPPageDown AttrDn + +bind KPEnter+KP5 Say_Line +bind KPEnter+KPArrowUp Say_Above +bind KPEnter+KPArrowDown Say_Below +bind KPEnter+KPArrowLeft Mute +bind KPEnter+KPArrowRight AutoSpeak +bind KPEnter+KP7 Say_Slower +bind KPEnter+KP9 Say_Faster +bind KPEnter+KP1 Say_Softer +bind KPEnter+KP3 Say_Louder + +bind KPPlus+KP5 Paste +bind KPPlus+KP7 CutBegin +bind KPPlus+KP1 CutAppend +bind KPPlus+KP9 CutLine +bind KPPlus+KP3 CutRect +bind KPPlus+KPArrowUp PrIndent +bind KPPlus+KPArrowDown NxIndent +bind KPPlus+KPArrowLeft PrDifChar +bind KPPlus+KPArrowRight NxDifChar + +bind KPMinus+KP5 PrefMenu +bind KPMinus+KPArrowLeft PrefLoad +bind KPMinus+KPArrowRight PrefSave +bind KPMinus+KPArrowUp WinUp +bind KPMinus+KPArrowDown WinDn +bind KPMinus+KP7 Help +bind KPMinus+KP9 Learn +bind KPMinus+KP1 RestartBrl +bind KPMinus+KP3 RestartSpeech diff --git a/Tables/kha.ttb b/Tables/kha.ttb new file mode 100644 index 0000000000000000000000000000000000000000..f6524c9327a678b9655ed65978f1dcf470820d79 --- /dev/null +++ b/Tables/kha.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Khasi + +include bengali.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/kn.ttb b/Tables/kn.ttb new file mode 100644 index 0000000000000000000000000000000000000000..81c2179f43cf10283c0b3dfb0ff021650b73eb05 --- /dev/null +++ b/Tables/kn.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Kannada + +include kannada.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/ko-g1.ctb b/Tables/ko-g1.ctb new file mode 100644 index 0000000000000000000000000000000000000000..020881b7e08c5bddbeaad61748faa577a737406f --- /dev/null +++ b/Tables/ko-g1.ctb @@ -0,0 +1,41 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - Korean (grade 1) +# +# Samuel Thibault + +include ko.ctb + +always ê°€ 1246 +always 사 123 +always 것 456 +always ì–µ 1456 +always ì–¸ 23456 +always ì–¼ 2345 +always ì—° 16 +always ì—´ 1256 +always ì˜ 12456 +always 옥 1346 +always 온 12356 +always 옹 123456 +always ìš´ 1245 +always 울 12346 +always ì€ 1356 +always ì„ 2346 +always ì¸ 12345 diff --git a/Tables/ko-g2.ctb b/Tables/ko-g2.ctb new file mode 100644 index 0000000000000000000000000000000000000000..f5f9afaa7b8f11e6ddddbe3ac0f314f9fb427a1a --- /dev/null +++ b/Tables/ko-g2.ctb @@ -0,0 +1,31 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - Korean (grade 2) +# +# Samuel Thibault + +include ko-g1.ctb + +always 그래서 234 +always 그러나 14 +always 그러면 25 +always 그러므로 26 +always ê·¸ëŸ°ë° 1345 +always 그리고 136 +always 그리하여 156 diff --git a/Tables/ko.ctb b/Tables/ko.ctb new file mode 100644 index 0000000000000000000000000000000000000000..6d6aff4e884aa343ab5d453fe68fc1bb4b52e8e9 --- /dev/null +++ b/Tables/ko.ctb @@ -0,0 +1,11605 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - Korean (uncontracted) +# +# Samuel Thibault +# +# This is missing CHITUEUM*, CEONGCHIEUMSIOS, PANSIOS, YESIEUNG, RINHIEUH and +# ARAEA for which I couldn't find documentation. Please contact me to fix +# anything, as this table was generated from a C program. + +always ! 456 +always - 36 +always numsign 3456 + +always á„€ 4 +always á„ 4-4 +always á„‚ 14 +always ᄃ 24 +always á„„ 24-24 +always á„… 5 +always ᄆ 15 +always ᄇ 45 +always ᄈ 45-45 +always ᄉ 6 +always á„Š 6-6 +always á„‹ 2356 +always á„Œ 46 +always á„ 46-46 +always á„Ž 56 +always á„ 124 +always á„ 125 +always á„‘ 145 +always á„’ 245 +always á„“ 14-4 +always á„” 14-14 +always á„• 14-24 +always á„– 14-45 +always á„— 24-4 +always ᄘ 5-14 +always á„™ 5-5 +always á„š 5-245 +always á„› 5 +always á„œ 15-45 +always á„ 15 +always á„ž 45-4 +always á„Ÿ 45-14 +always á„  45-24 +always á„¡ 45-6 +always á„¢ 45-6-4 +always á„£ 45-6-24 +always ᄤ 45-6-45 +always á„¥ 45-6-6 +always ᄦ 45-6-46 +always ᄧ 45-46 +always ᄨ 45-56 +always á„© 45-125 +always ᄪ 45-145 +always á„« 45 +always ᄬ 45-45 +always á„­ 6-4 +always á„® 6-14 +always ᄯ 6-24 +always á„° 6-5 +always ᄱ 6-15 +always ᄲ 6-45 +always ᄳ 6-45-4 +always á„´ 6-6-6 +always ᄵ 6-2356 +always ᄶ 6-46 +always á„· 6-56 +always ᄸ 6-124 +always ᄹ 6-125 +always ᄺ 6-145 +always á„» 6-245 +always á… 4 +always á…‚ 24 +always á…ƒ 15 +always á…„ 45 +always á…… 6 +always á…‡ 2356-2356 +always á…ˆ 46 +always á…‰ 56 +always á…Š 125 +always á…‹ 145 +always á… 46-2356 +always á…’ 56-124 +always á…“ 56-245 +always á…– 145-45 +always á…— 145 +always á…˜ 245-245 +always á…Ÿ 0 +always á…  0 +always á…¡ 126 +always á…¢ 1235 +always á…£ 345 +always á…¤ 345-1235 +always á…¥ 234 +always á…¦ 1345 +always á…§ 156 +always á…¨ 34 +always á…© 136 +always á…ª 1236 +always á…« 1236-1235 +always á…¬ 13456 +always á…­ 346 +always á…® 134 +always á…¯ 1234 +always á…° 1234-1235 +always á…± 134-1235 +always á…² 146 +always á…³ 246 +always á…´ 2456 +always á…µ 135 +always á…¶ 126-136 +always á…· 126-134 +always á…¸ 345-136 +always á…¹ 345-346 +always á…º 234-136 +always á…» 234-134 +always á…¼ 234-246 +always á…½ 156-136 +always á…¾ 156-134 +always á…¿ 136-234 +always ᆀ 136-1345 +always ᆠ136-34 +always ᆂ 136-136 +always ᆃ 136-134 +always ᆄ 346-345 +always ᆅ 346-345-1235 +always ᆆ 346-156 +always ᆇ 346-136 +always ᆈ 346-135 +always ᆉ 134-126 +always ᆊ 134-1235 +always ᆋ 134-234-246 +always ᆌ 134-34 +always ᆠ134-134 +always ᆎ 146-126 +always ᆠ146-234 +always ᆠ146-1345 +always ᆑ 146-156 +always ᆒ 146-34 +always ᆓ 146-134 +always ᆔ 146-135 +always ᆕ 246-134 +always ᆖ 246-246 +always ᆗ 2456-134 +always ᆘ 135-126 +always ᆙ 135-345 +always ᆚ 135-136 +always ᆛ 135-134 +always ᆜ 135-246 +always ᆨ 1 +always ᆩ 1-1 +always ᆪ 1-3 +always ᆫ 25 +always ᆬ 25-13 +always ᆭ 25-356 +always ᆮ 35 +always ᆯ 2 +always ᆰ 2-1 +always ᆱ 2-26 +always ᆲ 2-12 +always ᆳ 2-3 +always ᆴ 2-236 +always ᆵ 2-256 +always ᆶ 2-356 +always ᆷ 26 +always ᆸ 12 +always ᆹ 12-3 +always ᆺ 3 +always ᆻ 3-3 +always ᆼ 2356 +always ᆽ 13 +always ᆾ 23 +always ᆿ 235 +always ᇀ 236 +always ᇠ256 +always ᇂ 356 +always ᇃ 1-2 +always ᇄ 1-3-1 +always ᇅ 25-1 +always ᇆ 25-35 +always ᇇ 25-3 +always ᇉ 25-236 +always ᇊ 35-1 +always ᇋ 35-2 +always ᇌ 2-1-3 +always ᇠ2-25 +always ᇎ 2-35 +always ᇠ2-35-356 +always ᇠ2-2 +always ᇑ 2-26-1 +always ᇒ 2-26-3 +always ᇓ 2-12-3 +always ᇔ 2-12-356 +always ᇕ 2-12 +always ᇖ 2-3-3 +always ᇘ 2-235 +always ᇚ 26-1 +always ᇛ 26-2 +always ᇜ 26-12 +always ᇠ26-3 +always ᇞ 26-3-3 +always ᇠ 26-23 +always ᇡ 26-356 +always ᇢ 26 +always ᇣ 12-2 +always ᇤ 12-256 +always ᇥ 12-356 +always ᇦ 12 +always ᇧ 3-1 +always ᇨ 3-35 +always ᇩ 3-2 +always ᇪ 3-12 +always ᇬ 1 +always ᇭ 1-1 +always ᇮ 2356-2356 +always ᇯ 235 +always ᇳ 256-12 +always ᇴ 256 +always ᇵ 356-25 +always ᇶ 356-2 +always ᇷ 356-26 +always ᇸ 356-12 +always ㄱ 1 +always ㄲ 1-1 +always ㄳ 1-3 +always ã„´ 25 +always ㄵ 25-13 +always ㄶ 25-356 +always ã„· 35 +always ㄸ 35-35 +always ㄹ 2 +always ㄺ 2-1 +always ã„» 2-26 +always ㄼ 2-12 +always ㄽ 2-3 +always ㄾ 2-236 +always ã„¿ 2-256 +always ã…€ 2-356 +always ã… 26 +always ã…‚ 12 +always ã…ƒ 12-12 +always ã…„ 12-3 +always ã…… 3 +always ã…† 3-3 +always ã…‡ 2356 +always ã…ˆ 13 +always ã…‰ 13-13 +always ã…Š 23 +always ã…‹ 235 +always ã…Œ 236 +always ã… 256 +always ã…Ž 356 +always ã… 126 +always ã… 1235 +always ã…‘ 345 +always ã…’ 345-1235 +always ã…“ 234 +always ã…” 1345 +always ã…• 156 +always ã…– 34 +always ã…— 136 +always ã…˜ 1236 +always ã…™ 1236-1235 +always ã…š 13456 +always ã…› 346 +always ã…œ 134 +always ã… 1234 +always ã…ž 1234-1235 +always ã…Ÿ 134-1235 +always ã…  146 +always ã…¡ 246 +always ã…¢ 2456 +always ã…£ 135 +always ã…¤ 0 +always ã…¥ 25-25 +always ã…¦ 25-35 +always ã…§ 25-3 +always ã…© 2-1-3 +always ã…ª 2-35 +always ã…« 2-12-3 +always ã…® 26-12 +always ã…¯ 26-3 +always ã…± 26 +always ã…² 12-1 +always ã…³ 12-35 +always ã…´ 12-3-1 +always ã…µ 12-3-35 +always ã…¶ 12-13 +always ã…· 12-236 +always ã…¸ 12 +always ã…¹ 12-12 +always ã…º 3-1 +always ã…» 3-25 +always ã…¼ 3-35 +always ã…½ 3-12 +always ã…¾ 3-13 +always ㆀ 2356-2356 +always ㆄ 256 +always ㆅ 356-356 +always ㆇ 346-345 +always ㆈ 346-345-1235 +always ㆉ 346-135 +always ㆊ 146-156 +always ㆋ 146-34 +always ㆌ 146-135 +always ㈀ 1 +always ㈠25 +always ㈂ 35 +always ㈃ 2 +always ㈄ 26 +always ㈅ 12 +always ㈆ 3 +always ㈇ 2356 +always ㈈ 13 +always ㈉ 23 +always ㈊ 235 +always ㈋ 236 +always ㈌ 256 +always ㈠356 +always ㈎ 1-126 +always ㈠25-126 +always ㈠35-126 +always ㈑ 2-126 +always ㈒ 26-126 +always ㈓ 12-126 +always ㈔ 3-126 +always ㈕ 126 +always ㈖ 13-126 +always ㈗ 23-126 +always ㈘ 235-126 +always ㈙ 236-126 +always ㈚ 256-126 +always ㈛ 356-126 +always ㈜ 13-134 +always ㉠ 1 +always ㉡ 25 +always ㉢ 35 +always ㉣ 2 +always ㉤ 26 +always ㉥ 12 +always ㉦ 3 +always ㉧ 2356 +always ㉨ 13 +always ㉩ 23 +always ㉪ 235 +always ㉫ 236 +always ㉬ 256 +always ㉭ 356 +always ㉮ 1-126 +always ㉯ 25-126 +always ㉰ 35-126 +always ㉱ 2-126 +always ㉲ 26-126 +always ㉳ 12-126 +always ㉴ 3-126 +always ㉵ 126 +always ㉶ 13-126 +always ㉷ 23-126 +always ㉸ 235-126 +always ㉹ 236-126 +always ㉺ 256-126 +always ㉻ 356-126 +always ê°€ 4-126 +always ê° 4-126-1 +always ê°‚ 4-126-1-1 +always ê°ƒ 4-126-1-3 +always ê°„ 4-126-25 +always ê°… 4-126-25-13 +always ê°† 4-126-25-356 +always ê°‡ 4-126-35 +always ê°ˆ 4-126-2 +always ê°‰ 4-126-2-1 +always ê°Š 4-126-2-26 +always ê°‹ 4-126-2-12 +always ê°Œ 4-126-2-3 +always ê° 4-126-2-236 +always ê°Ž 4-126-2-256 +always ê° 4-126-2-356 +always ê° 4-126-26 +always ê°‘ 4-126-12 +always ê°’ 4-126-12-3 +always ê°“ 4-126-3 +always ê°” 4-126-3-3 +always ê°• 4-126-2356 +always ê°– 4-126-13 +always ê°— 4-126-23 +always ê°˜ 4-126-235 +always ê°™ 4-126-236 +always ê°š 4-126-256 +always ê°› 4-126-356 +always ê°œ 4-1235 +always ê° 4-1235-1 +always ê°ž 4-1235-1-1 +always ê°Ÿ 4-1235-1-3 +always ê°  4-1235-25 +always ê°¡ 4-1235-25-13 +always ê°¢ 4-1235-25-356 +always ê°£ 4-1235-35 +always ê°¤ 4-1235-2 +always ê°¥ 4-1235-2-1 +always ê°¦ 4-1235-2-26 +always ê°§ 4-1235-2-12 +always ê°¨ 4-1235-2-3 +always ê°© 4-1235-2-236 +always ê°ª 4-1235-2-256 +always ê°« 4-1235-2-356 +always ê°¬ 4-1235-26 +always ê°­ 4-1235-12 +always ê°® 4-1235-12-3 +always ê°¯ 4-1235-3 +always ê°° 4-1235-3-3 +always ê°± 4-1235-2356 +always ê°² 4-1235-13 +always ê°³ 4-1235-23 +always ê°´ 4-1235-235 +always ê°µ 4-1235-236 +always ê°¶ 4-1235-256 +always ê°· 4-1235-356 +always ê°¸ 4-345 +always ê°¹ 4-345-1 +always ê°º 4-345-1-1 +always ê°» 4-345-1-3 +always ê°¼ 4-345-25 +always ê°½ 4-345-25-13 +always ê°¾ 4-345-25-356 +always ê°¿ 4-345-35 +always ê±€ 4-345-2 +always ê± 4-345-2-1 +always 걂 4-345-2-26 +always 걃 4-345-2-12 +always 걄 4-345-2-3 +always ê±… 4-345-2-236 +always 걆 4-345-2-256 +always 걇 4-345-2-356 +always 걈 4-345-26 +always 걉 4-345-12 +always 걊 4-345-12-3 +always 걋 4-345-3 +always 걌 4-345-3-3 +always ê± 4-345-2356 +always 걎 4-345-13 +always ê± 4-345-23 +always ê± 4-345-235 +always 걑 4-345-236 +always ê±’ 4-345-256 +always 걓 4-345-356 +always ê±” 4-345-1235 +always 걕 4-345-1235-1 +always ê±– 4-345-1235-1-1 +always ê±— 4-345-1235-1-3 +always 걘 4-345-1235-25 +always ê±™ 4-345-1235-25-13 +always 걚 4-345-1235-25-356 +always ê±› 4-345-1235-35 +always 걜 4-345-1235-2 +always ê± 4-345-1235-2-1 +always 걞 4-345-1235-2-26 +always 걟 4-345-1235-2-12 +always ê±  4-345-1235-2-3 +always 걡 4-345-1235-2-236 +always ê±¢ 4-345-1235-2-256 +always ê±£ 4-345-1235-2-356 +always 걤 4-345-1235-26 +always ê±¥ 4-345-1235-12 +always 걦 4-345-1235-12-3 +always 걧 4-345-1235-3 +always 걨 4-345-1235-3-3 +always 걩 4-345-1235-2356 +always 걪 4-345-1235-13 +always 걫 4-345-1235-23 +always 걬 4-345-1235-235 +always ê±­ 4-345-1235-236 +always ê±® 4-345-1235-256 +always 걯 4-345-1235-356 +always ê±° 4-234 +always ê±± 4-234-1 +always ê±² 4-234-1-1 +always ê±³ 4-234-1-3 +always ê±´ 4-234-25 +always ê±µ 4-234-25-13 +always 걶 4-234-25-356 +always ê±· 4-234-35 +always 걸 4-234-2 +always ê±¹ 4-234-2-1 +always 걺 4-234-2-26 +always ê±» 4-234-2-12 +always ê±¼ 4-234-2-3 +always ê±½ 4-234-2-236 +always ê±¾ 4-234-2-256 +always 걿 4-234-2-356 +always ê²€ 4-234-26 +always ê² 4-234-12 +always 겂 4-234-12-3 +always 것 4-234-3 +always 겄 4-234-3-3 +always ê²… 4-234-2356 +always 겆 4-234-13 +always 겇 4-234-23 +always 겈 4-234-235 +always 겉 4-234-236 +always 겊 4-234-256 +always 겋 4-234-356 +always 게 4-1345 +always ê² 4-1345-1 +always 겎 4-1345-1-1 +always ê² 4-1345-1-3 +always ê² 4-1345-25 +always 겑 4-1345-25-13 +always ê²’ 4-1345-25-356 +always 겓 4-1345-35 +always ê²” 4-1345-2 +always 겕 4-1345-2-1 +always ê²– 4-1345-2-26 +always ê²— 4-1345-2-12 +always 겘 4-1345-2-3 +always ê²™ 4-1345-2-236 +always 겚 4-1345-2-256 +always ê²› 4-1345-2-356 +always 겜 4-1345-26 +always ê² 4-1345-12 +always 겞 4-1345-12-3 +always 겟 4-1345-3 +always ê²  4-1345-3-3 +always 겡 4-1345-2356 +always ê²¢ 4-1345-13 +always ê²£ 4-1345-23 +always 겤 4-1345-235 +always ê²¥ 4-1345-236 +always 겦 4-1345-256 +always 겧 4-1345-356 +always 겨 4-156 +always 격 4-156-1 +always 겪 4-156-1-1 +always 겫 4-156-1-3 +always 견 4-156-25 +always ê²­ 4-156-25-13 +always ê²® 4-156-25-356 +always 겯 4-156-35 +always ê²° 4-156-2 +always ê²± 4-156-2-1 +always ê²² 4-156-2-26 +always ê²³ 4-156-2-12 +always ê²´ 4-156-2-3 +always ê²µ 4-156-2-236 +always 겶 4-156-2-256 +always ê²· 4-156-2-356 +always 겸 4-156-26 +always ê²¹ 4-156-12 +always 겺 4-156-12-3 +always ê²» 4-156-3 +always ê²¼ 4-156-3-3 +always ê²½ 4-156-2356 +always ê²¾ 4-156-13 +always 겿 4-156-23 +always ê³€ 4-156-235 +always ê³ 4-156-236 +always 곂 4-156-256 +always 곃 4-156-356 +always 계 4-34 +always ê³… 4-34-1 +always 곆 4-34-1-1 +always 곇 4-34-1-3 +always 곈 4-34-25 +always 곉 4-34-25-13 +always 곊 4-34-25-356 +always 곋 4-34-35 +always 곌 4-34-2 +always ê³ 4-34-2-1 +always 곎 4-34-2-26 +always ê³ 4-34-2-12 +always ê³ 4-34-2-3 +always 곑 4-34-2-236 +always ê³’ 4-34-2-256 +always 곓 4-34-2-356 +always ê³” 4-34-26 +always 곕 4-34-12 +always ê³– 4-34-12-3 +always ê³— 4-34-3 +always 곘 4-34-3-3 +always ê³™ 4-34-2356 +always 곚 4-34-13 +always ê³› 4-34-23 +always 곜 4-34-235 +always ê³ 4-34-236 +always 곞 4-34-256 +always 곟 4-34-356 +always ê³  4-136 +always 곡 4-136-1 +always ê³¢ 4-136-1-1 +always ê³£ 4-136-1-3 +always 곤 4-136-25 +always ê³¥ 4-136-25-13 +always 곦 4-136-25-356 +always 곧 4-136-35 +always 골 4-136-2 +always 곩 4-136-2-1 +always 곪 4-136-2-26 +always 곫 4-136-2-12 +always 곬 4-136-2-3 +always ê³­ 4-136-2-236 +always ê³® 4-136-2-256 +always 곯 4-136-2-356 +always ê³° 4-136-26 +always ê³± 4-136-12 +always ê³² 4-136-12-3 +always ê³³ 4-136-3 +always ê³´ 4-136-3-3 +always ê³µ 4-136-2356 +always 곶 4-136-13 +always ê³· 4-136-23 +always 곸 4-136-235 +always ê³¹ 4-136-236 +always 곺 4-136-256 +always ê³» 4-136-356 +always ê³¼ 4-1236 +always ê³½ 4-1236-1 +always ê³¾ 4-1236-1-1 +always 곿 4-1236-1-3 +always ê´€ 4-1236-25 +always ê´ 4-1236-25-13 +always ê´‚ 4-1236-25-356 +always ê´ƒ 4-1236-35 +always ê´„ 4-1236-2 +always ê´… 4-1236-2-1 +always ê´† 4-1236-2-26 +always ê´‡ 4-1236-2-12 +always ê´ˆ 4-1236-2-3 +always ê´‰ 4-1236-2-236 +always ê´Š 4-1236-2-256 +always ê´‹ 4-1236-2-356 +always ê´Œ 4-1236-26 +always ê´ 4-1236-12 +always ê´Ž 4-1236-12-3 +always ê´ 4-1236-3 +always ê´ 4-1236-3-3 +always ê´‘ 4-1236-2356 +always ê´’ 4-1236-13 +always ê´“ 4-1236-23 +always ê´” 4-1236-235 +always ê´• 4-1236-236 +always ê´– 4-1236-256 +always ê´— 4-1236-356 +always ê´˜ 4-1236-1235 +always ê´™ 4-1236-1235-1 +always ê´š 4-1236-1235-1-1 +always ê´› 4-1236-1235-1-3 +always ê´œ 4-1236-1235-25 +always ê´ 4-1236-1235-25-13 +always ê´ž 4-1236-1235-25-356 +always ê´Ÿ 4-1236-1235-35 +always ê´  4-1236-1235-2 +always ê´¡ 4-1236-1235-2-1 +always ê´¢ 4-1236-1235-2-26 +always ê´£ 4-1236-1235-2-12 +always ê´¤ 4-1236-1235-2-3 +always ê´¥ 4-1236-1235-2-236 +always ê´¦ 4-1236-1235-2-256 +always ê´§ 4-1236-1235-2-356 +always ê´¨ 4-1236-1235-26 +always ê´© 4-1236-1235-12 +always ê´ª 4-1236-1235-12-3 +always ê´« 4-1236-1235-3 +always ê´¬ 4-1236-1235-3-3 +always ê´­ 4-1236-1235-2356 +always ê´® 4-1236-1235-13 +always ê´¯ 4-1236-1235-23 +always ê´° 4-1236-1235-235 +always ê´± 4-1236-1235-236 +always ê´² 4-1236-1235-256 +always ê´³ 4-1236-1235-356 +always ê´´ 4-13456 +always ê´µ 4-13456-1 +always ê´¶ 4-13456-1-1 +always ê´· 4-13456-1-3 +always ê´¸ 4-13456-25 +always ê´¹ 4-13456-25-13 +always ê´º 4-13456-25-356 +always ê´» 4-13456-35 +always ê´¼ 4-13456-2 +always ê´½ 4-13456-2-1 +always ê´¾ 4-13456-2-26 +always ê´¿ 4-13456-2-12 +always êµ€ 4-13456-2-3 +always êµ 4-13456-2-236 +always 굂 4-13456-2-256 +always 굃 4-13456-2-356 +always 굄 4-13456-26 +always êµ… 4-13456-12 +always 굆 4-13456-12-3 +always 굇 4-13456-3 +always 굈 4-13456-3-3 +always 굉 4-13456-2356 +always 굊 4-13456-13 +always 굋 4-13456-23 +always 굌 4-13456-235 +always êµ 4-13456-236 +always 굎 4-13456-256 +always êµ 4-13456-356 +always êµ 4-346 +always 굑 4-346-1 +always êµ’ 4-346-1-1 +always 굓 4-346-1-3 +always êµ” 4-346-25 +always 굕 4-346-25-13 +always êµ– 4-346-25-356 +always êµ— 4-346-35 +always 굘 4-346-2 +always êµ™ 4-346-2-1 +always 굚 4-346-2-26 +always êµ› 4-346-2-12 +always 굜 4-346-2-3 +always êµ 4-346-2-236 +always 굞 4-346-2-256 +always 굟 4-346-2-356 +always êµ  4-346-26 +always 굡 4-346-12 +always êµ¢ 4-346-12-3 +always êµ£ 4-346-3 +always 굤 4-346-3-3 +always êµ¥ 4-346-2356 +always 굦 4-346-13 +always 굧 4-346-23 +always 굨 4-346-235 +always 굩 4-346-236 +always 굪 4-346-256 +always 굫 4-346-356 +always 구 4-134 +always êµ­ 4-134-1 +always êµ® 4-134-1-1 +always 굯 4-134-1-3 +always êµ° 4-134-25 +always êµ± 4-134-25-13 +always êµ² 4-134-25-356 +always êµ³ 4-134-35 +always êµ´ 4-134-2 +always êµµ 4-134-2-1 +always 굶 4-134-2-26 +always êµ· 4-134-2-12 +always 굸 4-134-2-3 +always êµ¹ 4-134-2-236 +always 굺 4-134-2-256 +always êµ» 4-134-2-356 +always êµ¼ 4-134-26 +always êµ½ 4-134-12 +always êµ¾ 4-134-12-3 +always 굿 4-134-3 +always 궀 4-134-3-3 +always ê¶ 4-134-2356 +always 궂 4-134-13 +always 궃 4-134-23 +always 궄 4-134-235 +always 궅 4-134-236 +always 궆 4-134-256 +always 궇 4-134-356 +always 궈 4-1234 +always 궉 4-1234-1 +always 궊 4-1234-1-1 +always 궋 4-1234-1-3 +always 권 4-1234-25 +always ê¶ 4-1234-25-13 +always 궎 4-1234-25-356 +always ê¶ 4-1234-35 +always ê¶ 4-1234-2 +always 궑 4-1234-2-1 +always 궒 4-1234-2-26 +always 궓 4-1234-2-12 +always 궔 4-1234-2-3 +always 궕 4-1234-2-236 +always 궖 4-1234-2-256 +always 궗 4-1234-2-356 +always 궘 4-1234-26 +always 궙 4-1234-12 +always 궚 4-1234-12-3 +always 궛 4-1234-3 +always 궜 4-1234-3-3 +always ê¶ 4-1234-2356 +always 궞 4-1234-13 +always 궟 4-1234-23 +always 궠 4-1234-235 +always 궡 4-1234-236 +always 궢 4-1234-256 +always 궣 4-1234-356 +always 궤 4-1234-1235 +always 궥 4-1234-1235-1 +always 궦 4-1234-1235-1-1 +always 궧 4-1234-1235-1-3 +always 궨 4-1234-1235-25 +always 궩 4-1234-1235-25-13 +always 궪 4-1234-1235-25-356 +always 궫 4-1234-1235-35 +always 궬 4-1234-1235-2 +always 궭 4-1234-1235-2-1 +always 궮 4-1234-1235-2-26 +always 궯 4-1234-1235-2-12 +always 궰 4-1234-1235-2-3 +always 궱 4-1234-1235-2-236 +always 궲 4-1234-1235-2-256 +always 궳 4-1234-1235-2-356 +always 궴 4-1234-1235-26 +always 궵 4-1234-1235-12 +always 궶 4-1234-1235-12-3 +always 궷 4-1234-1235-3 +always 궸 4-1234-1235-3-3 +always 궹 4-1234-1235-2356 +always 궺 4-1234-1235-13 +always 궻 4-1234-1235-23 +always 궼 4-1234-1235-235 +always 궽 4-1234-1235-236 +always 궾 4-1234-1235-256 +always 궿 4-1234-1235-356 +always ê·€ 4-134-1235 +always ê· 4-134-1235-1 +always ê·‚ 4-134-1235-1-1 +always ê·ƒ 4-134-1235-1-3 +always ê·„ 4-134-1235-25 +always ê·… 4-134-1235-25-13 +always ê·† 4-134-1235-25-356 +always ê·‡ 4-134-1235-35 +always ê·ˆ 4-134-1235-2 +always ê·‰ 4-134-1235-2-1 +always ê·Š 4-134-1235-2-26 +always ê·‹ 4-134-1235-2-12 +always ê·Œ 4-134-1235-2-3 +always ê· 4-134-1235-2-236 +always ê·Ž 4-134-1235-2-256 +always ê· 4-134-1235-2-356 +always ê· 4-134-1235-26 +always ê·‘ 4-134-1235-12 +always ê·’ 4-134-1235-12-3 +always ê·“ 4-134-1235-3 +always ê·” 4-134-1235-3-3 +always ê·• 4-134-1235-2356 +always ê·– 4-134-1235-13 +always ê·— 4-134-1235-23 +always ê·˜ 4-134-1235-235 +always ê·™ 4-134-1235-236 +always ê·š 4-134-1235-256 +always ê·› 4-134-1235-356 +always ê·œ 4-146 +always ê· 4-146-1 +always ê·ž 4-146-1-1 +always ê·Ÿ 4-146-1-3 +always ê·  4-146-25 +always ê·¡ 4-146-25-13 +always ê·¢ 4-146-25-356 +always ê·£ 4-146-35 +always ê·¤ 4-146-2 +always ê·¥ 4-146-2-1 +always ê·¦ 4-146-2-26 +always ê·§ 4-146-2-12 +always ê·¨ 4-146-2-3 +always ê·© 4-146-2-236 +always ê·ª 4-146-2-256 +always ê·« 4-146-2-356 +always ê·¬ 4-146-26 +always ê·­ 4-146-12 +always ê·® 4-146-12-3 +always ê·¯ 4-146-3 +always ê·° 4-146-3-3 +always ê·± 4-146-2356 +always ê·² 4-146-13 +always ê·³ 4-146-23 +always ê·´ 4-146-235 +always ê·µ 4-146-236 +always ê·¶ 4-146-256 +always ê·· 4-146-356 +always ê·¸ 4-246 +always ê·¹ 4-246-1 +always ê·º 4-246-1-1 +always ê·» 4-246-1-3 +always ê·¼ 4-246-25 +always ê·½ 4-246-25-13 +always ê·¾ 4-246-25-356 +always ê·¿ 4-246-35 +always 글 4-246-2 +always ê¸ 4-246-2-1 +always 긂 4-246-2-26 +always 긃 4-246-2-12 +always 긄 4-246-2-3 +always 긅 4-246-2-236 +always 긆 4-246-2-256 +always 긇 4-246-2-356 +always 금 4-246-26 +always 급 4-246-12 +always 긊 4-246-12-3 +always 긋 4-246-3 +always 긌 4-246-3-3 +always ê¸ 4-246-2356 +always 긎 4-246-13 +always ê¸ 4-246-23 +always ê¸ 4-246-235 +always 긑 4-246-236 +always 긒 4-246-256 +always 긓 4-246-356 +always 긔 4-2456 +always 긕 4-2456-1 +always 긖 4-2456-1-1 +always 긗 4-2456-1-3 +always 긘 4-2456-25 +always 긙 4-2456-25-13 +always 긚 4-2456-25-356 +always 긛 4-2456-35 +always 긜 4-2456-2 +always ê¸ 4-2456-2-1 +always 긞 4-2456-2-26 +always 긟 4-2456-2-12 +always 긠 4-2456-2-3 +always 긡 4-2456-2-236 +always 긢 4-2456-2-256 +always 긣 4-2456-2-356 +always 긤 4-2456-26 +always 긥 4-2456-12 +always 긦 4-2456-12-3 +always 긧 4-2456-3 +always 긨 4-2456-3-3 +always 긩 4-2456-2356 +always 긪 4-2456-13 +always 긫 4-2456-23 +always 긬 4-2456-235 +always 긭 4-2456-236 +always 긮 4-2456-256 +always 긯 4-2456-356 +always 기 4-135 +always 긱 4-135-1 +always 긲 4-135-1-1 +always 긳 4-135-1-3 +always 긴 4-135-25 +always 긵 4-135-25-13 +always 긶 4-135-25-356 +always 긷 4-135-35 +always 길 4-135-2 +always 긹 4-135-2-1 +always 긺 4-135-2-26 +always 긻 4-135-2-12 +always 긼 4-135-2-3 +always 긽 4-135-2-236 +always 긾 4-135-2-256 +always 긿 4-135-2-356 +always ê¹€ 4-135-26 +always ê¹ 4-135-12 +always 깂 4-135-12-3 +always 깃 4-135-3 +always 깄 4-135-3-3 +always ê¹… 4-135-2356 +always 깆 4-135-13 +always 깇 4-135-23 +always 깈 4-135-235 +always 깉 4-135-236 +always 깊 4-135-256 +always 깋 4-135-356 +always 까 4-4-126 +always ê¹ 4-4-126-1 +always 깎 4-4-126-1-1 +always ê¹ 4-4-126-1-3 +always ê¹ 4-4-126-25 +always 깑 4-4-126-25-13 +always ê¹’ 4-4-126-25-356 +always 깓 4-4-126-35 +always ê¹” 4-4-126-2 +always 깕 4-4-126-2-1 +always ê¹– 4-4-126-2-26 +always ê¹— 4-4-126-2-12 +always 깘 4-4-126-2-3 +always ê¹™ 4-4-126-2-236 +always 깚 4-4-126-2-256 +always ê¹› 4-4-126-2-356 +always 깜 4-4-126-26 +always ê¹ 4-4-126-12 +always 깞 4-4-126-12-3 +always 깟 4-4-126-3 +always ê¹  4-4-126-3-3 +always 깡 4-4-126-2356 +always ê¹¢ 4-4-126-13 +always ê¹£ 4-4-126-23 +always 깤 4-4-126-235 +always ê¹¥ 4-4-126-236 +always 깦 4-4-126-256 +always 깧 4-4-126-356 +always 깨 4-4-1235 +always 깩 4-4-1235-1 +always 깪 4-4-1235-1-1 +always 깫 4-4-1235-1-3 +always 깬 4-4-1235-25 +always ê¹­ 4-4-1235-25-13 +always ê¹® 4-4-1235-25-356 +always 깯 4-4-1235-35 +always ê¹° 4-4-1235-2 +always ê¹± 4-4-1235-2-1 +always ê¹² 4-4-1235-2-26 +always ê¹³ 4-4-1235-2-12 +always ê¹´ 4-4-1235-2-3 +always ê¹µ 4-4-1235-2-236 +always 깶 4-4-1235-2-256 +always ê¹· 4-4-1235-2-356 +always 깸 4-4-1235-26 +always ê¹¹ 4-4-1235-12 +always 깺 4-4-1235-12-3 +always ê¹» 4-4-1235-3 +always ê¹¼ 4-4-1235-3-3 +always ê¹½ 4-4-1235-2356 +always ê¹¾ 4-4-1235-13 +always 깿 4-4-1235-23 +always 꺀 4-4-1235-235 +always êº 4-4-1235-236 +always 꺂 4-4-1235-256 +always 꺃 4-4-1235-356 +always 꺄 4-4-345 +always 꺅 4-4-345-1 +always 꺆 4-4-345-1-1 +always 꺇 4-4-345-1-3 +always 꺈 4-4-345-25 +always 꺉 4-4-345-25-13 +always 꺊 4-4-345-25-356 +always 꺋 4-4-345-35 +always 꺌 4-4-345-2 +always êº 4-4-345-2-1 +always 꺎 4-4-345-2-26 +always êº 4-4-345-2-12 +always êº 4-4-345-2-3 +always 꺑 4-4-345-2-236 +always 꺒 4-4-345-2-256 +always 꺓 4-4-345-2-356 +always 꺔 4-4-345-26 +always 꺕 4-4-345-12 +always 꺖 4-4-345-12-3 +always 꺗 4-4-345-3 +always 꺘 4-4-345-3-3 +always 꺙 4-4-345-2356 +always 꺚 4-4-345-13 +always 꺛 4-4-345-23 +always 꺜 4-4-345-235 +always êº 4-4-345-236 +always 꺞 4-4-345-256 +always 꺟 4-4-345-356 +always 꺠 4-4-345-1235 +always 꺡 4-4-345-1235-1 +always 꺢 4-4-345-1235-1-1 +always 꺣 4-4-345-1235-1-3 +always 꺤 4-4-345-1235-25 +always 꺥 4-4-345-1235-25-13 +always 꺦 4-4-345-1235-25-356 +always 꺧 4-4-345-1235-35 +always 꺨 4-4-345-1235-2 +always 꺩 4-4-345-1235-2-1 +always 꺪 4-4-345-1235-2-26 +always 꺫 4-4-345-1235-2-12 +always 꺬 4-4-345-1235-2-3 +always 꺭 4-4-345-1235-2-236 +always 꺮 4-4-345-1235-2-256 +always 꺯 4-4-345-1235-2-356 +always 꺰 4-4-345-1235-26 +always 꺱 4-4-345-1235-12 +always 꺲 4-4-345-1235-12-3 +always 꺳 4-4-345-1235-3 +always 꺴 4-4-345-1235-3-3 +always 꺵 4-4-345-1235-2356 +always 꺶 4-4-345-1235-13 +always 꺷 4-4-345-1235-23 +always 꺸 4-4-345-1235-235 +always 꺹 4-4-345-1235-236 +always 꺺 4-4-345-1235-256 +always 꺻 4-4-345-1235-356 +always 꺼 4-4-234 +always 꺽 4-4-234-1 +always 꺾 4-4-234-1-1 +always 꺿 4-4-234-1-3 +always 껀 4-4-234-25 +always ê» 4-4-234-25-13 +always 껂 4-4-234-25-356 +always 껃 4-4-234-35 +always 껄 4-4-234-2 +always ê»… 4-4-234-2-1 +always 껆 4-4-234-2-26 +always 껇 4-4-234-2-12 +always 껈 4-4-234-2-3 +always 껉 4-4-234-2-236 +always 껊 4-4-234-2-256 +always 껋 4-4-234-2-356 +always 껌 4-4-234-26 +always ê» 4-4-234-12 +always 껎 4-4-234-12-3 +always ê» 4-4-234-3 +always ê» 4-4-234-3-3 +always 껑 4-4-234-2356 +always ê»’ 4-4-234-13 +always 껓 4-4-234-23 +always ê»” 4-4-234-235 +always 껕 4-4-234-236 +always ê»– 4-4-234-256 +always ê»— 4-4-234-356 +always 께 4-4-1345 +always ê»™ 4-4-1345-1 +always 껚 4-4-1345-1-1 +always ê»› 4-4-1345-1-3 +always 껜 4-4-1345-25 +always ê» 4-4-1345-25-13 +always 껞 4-4-1345-25-356 +always 껟 4-4-1345-35 +always ê»  4-4-1345-2 +always 껡 4-4-1345-2-1 +always 껢 4-4-1345-2-26 +always 껣 4-4-1345-2-12 +always 껤 4-4-1345-2-3 +always 껥 4-4-1345-2-236 +always 껦 4-4-1345-2-256 +always 껧 4-4-1345-2-356 +always 껨 4-4-1345-26 +always 껩 4-4-1345-12 +always 껪 4-4-1345-12-3 +always 껫 4-4-1345-3 +always 껬 4-4-1345-3-3 +always ê»­ 4-4-1345-2356 +always ê»® 4-4-1345-13 +always 껯 4-4-1345-23 +always ê»° 4-4-1345-235 +always ê»± 4-4-1345-236 +always 껲 4-4-1345-256 +always 껳 4-4-1345-356 +always ê»´ 4-4-156 +always 껵 4-4-156-1 +always 껶 4-4-156-1-1 +always ê»· 4-4-156-1-3 +always 껸 4-4-156-25 +always 껹 4-4-156-25-13 +always 껺 4-4-156-25-356 +always ê»» 4-4-156-35 +always 껼 4-4-156-2 +always 껽 4-4-156-2-1 +always 껾 4-4-156-2-26 +always 껿 4-4-156-2-12 +always ê¼€ 4-4-156-2-3 +always ê¼ 4-4-156-2-236 +always 꼂 4-4-156-2-256 +always 꼃 4-4-156-2-356 +always 꼄 4-4-156-26 +always ê¼… 4-4-156-12 +always 꼆 4-4-156-12-3 +always 꼇 4-4-156-3 +always 꼈 4-4-156-3-3 +always 꼉 4-4-156-2356 +always 꼊 4-4-156-13 +always 꼋 4-4-156-23 +always 꼌 4-4-156-235 +always ê¼ 4-4-156-236 +always 꼎 4-4-156-256 +always ê¼ 4-4-156-356 +always ê¼ 4-4-34 +always 꼑 4-4-34-1 +always ê¼’ 4-4-34-1-1 +always 꼓 4-4-34-1-3 +always ê¼” 4-4-34-25 +always 꼕 4-4-34-25-13 +always ê¼– 4-4-34-25-356 +always ê¼— 4-4-34-35 +always 꼘 4-4-34-2 +always ê¼™ 4-4-34-2-1 +always 꼚 4-4-34-2-26 +always ê¼› 4-4-34-2-12 +always 꼜 4-4-34-2-3 +always ê¼ 4-4-34-2-236 +always 꼞 4-4-34-2-256 +always 꼟 4-4-34-2-356 +always ê¼  4-4-34-26 +always 꼡 4-4-34-12 +always ê¼¢ 4-4-34-12-3 +always ê¼£ 4-4-34-3 +always 꼤 4-4-34-3-3 +always ê¼¥ 4-4-34-2356 +always 꼦 4-4-34-13 +always 꼧 4-4-34-23 +always 꼨 4-4-34-235 +always 꼩 4-4-34-236 +always 꼪 4-4-34-256 +always 꼫 4-4-34-356 +always 꼬 4-4-136 +always ê¼­ 4-4-136-1 +always ê¼® 4-4-136-1-1 +always 꼯 4-4-136-1-3 +always ê¼° 4-4-136-25 +always ê¼± 4-4-136-25-13 +always ê¼² 4-4-136-25-356 +always ê¼³ 4-4-136-35 +always ê¼´ 4-4-136-2 +always ê¼µ 4-4-136-2-1 +always 꼶 4-4-136-2-26 +always ê¼· 4-4-136-2-12 +always 꼸 4-4-136-2-3 +always ê¼¹ 4-4-136-2-236 +always 꼺 4-4-136-2-256 +always ê¼» 4-4-136-2-356 +always ê¼¼ 4-4-136-26 +always ê¼½ 4-4-136-12 +always ê¼¾ 4-4-136-12-3 +always 꼿 4-4-136-3 +always ê½€ 4-4-136-3-3 +always ê½ 4-4-136-2356 +always 꽂 4-4-136-13 +always 꽃 4-4-136-23 +always 꽄 4-4-136-235 +always ê½… 4-4-136-236 +always 꽆 4-4-136-256 +always 꽇 4-4-136-356 +always 꽈 4-4-1236 +always 꽉 4-4-1236-1 +always 꽊 4-4-1236-1-1 +always 꽋 4-4-1236-1-3 +always 꽌 4-4-1236-25 +always ê½ 4-4-1236-25-13 +always 꽎 4-4-1236-25-356 +always ê½ 4-4-1236-35 +always ê½ 4-4-1236-2 +always 꽑 4-4-1236-2-1 +always ê½’ 4-4-1236-2-26 +always 꽓 4-4-1236-2-12 +always ê½” 4-4-1236-2-3 +always 꽕 4-4-1236-2-236 +always ê½– 4-4-1236-2-256 +always ê½— 4-4-1236-2-356 +always 꽘 4-4-1236-26 +always ê½™ 4-4-1236-12 +always 꽚 4-4-1236-12-3 +always ê½› 4-4-1236-3 +always 꽜 4-4-1236-3-3 +always ê½ 4-4-1236-2356 +always 꽞 4-4-1236-13 +always 꽟 4-4-1236-23 +always ê½  4-4-1236-235 +always 꽡 4-4-1236-236 +always ê½¢ 4-4-1236-256 +always ê½£ 4-4-1236-356 +always 꽤 4-4-1236-1235 +always ê½¥ 4-4-1236-1235-1 +always 꽦 4-4-1236-1235-1-1 +always 꽧 4-4-1236-1235-1-3 +always 꽨 4-4-1236-1235-25 +always 꽩 4-4-1236-1235-25-13 +always 꽪 4-4-1236-1235-25-356 +always 꽫 4-4-1236-1235-35 +always 꽬 4-4-1236-1235-2 +always ê½­ 4-4-1236-1235-2-1 +always ê½® 4-4-1236-1235-2-26 +always 꽯 4-4-1236-1235-2-12 +always ê½° 4-4-1236-1235-2-3 +always ê½± 4-4-1236-1235-2-236 +always ê½² 4-4-1236-1235-2-256 +always ê½³ 4-4-1236-1235-2-356 +always ê½´ 4-4-1236-1235-26 +always ê½µ 4-4-1236-1235-12 +always 꽶 4-4-1236-1235-12-3 +always ê½· 4-4-1236-1235-3 +always 꽸 4-4-1236-1235-3-3 +always ê½¹ 4-4-1236-1235-2356 +always 꽺 4-4-1236-1235-13 +always ê½» 4-4-1236-1235-23 +always ê½¼ 4-4-1236-1235-235 +always ê½½ 4-4-1236-1235-236 +always ê½¾ 4-4-1236-1235-256 +always 꽿 4-4-1236-1235-356 +always ê¾€ 4-4-13456 +always ê¾ 4-4-13456-1 +always 꾂 4-4-13456-1-1 +always 꾃 4-4-13456-1-3 +always 꾄 4-4-13456-25 +always ê¾… 4-4-13456-25-13 +always 꾆 4-4-13456-25-356 +always 꾇 4-4-13456-35 +always 꾈 4-4-13456-2 +always 꾉 4-4-13456-2-1 +always 꾊 4-4-13456-2-26 +always 꾋 4-4-13456-2-12 +always 꾌 4-4-13456-2-3 +always ê¾ 4-4-13456-2-236 +always 꾎 4-4-13456-2-256 +always ê¾ 4-4-13456-2-356 +always ê¾ 4-4-13456-26 +always 꾑 4-4-13456-12 +always ê¾’ 4-4-13456-12-3 +always 꾓 4-4-13456-3 +always ê¾” 4-4-13456-3-3 +always 꾕 4-4-13456-2356 +always ê¾– 4-4-13456-13 +always ê¾— 4-4-13456-23 +always 꾘 4-4-13456-235 +always ê¾™ 4-4-13456-236 +always 꾚 4-4-13456-256 +always ê¾› 4-4-13456-356 +always 꾜 4-4-346 +always ê¾ 4-4-346-1 +always 꾞 4-4-346-1-1 +always 꾟 4-4-346-1-3 +always ê¾  4-4-346-25 +always 꾡 4-4-346-25-13 +always ê¾¢ 4-4-346-25-356 +always ê¾£ 4-4-346-35 +always 꾤 4-4-346-2 +always ê¾¥ 4-4-346-2-1 +always 꾦 4-4-346-2-26 +always 꾧 4-4-346-2-12 +always 꾨 4-4-346-2-3 +always 꾩 4-4-346-2-236 +always 꾪 4-4-346-2-256 +always 꾫 4-4-346-2-356 +always 꾬 4-4-346-26 +always ê¾­ 4-4-346-12 +always ê¾® 4-4-346-12-3 +always 꾯 4-4-346-3 +always ê¾° 4-4-346-3-3 +always ê¾± 4-4-346-2356 +always ê¾² 4-4-346-13 +always ê¾³ 4-4-346-23 +always ê¾´ 4-4-346-235 +always ê¾µ 4-4-346-236 +always 꾶 4-4-346-256 +always ê¾· 4-4-346-356 +always 꾸 4-4-134 +always ê¾¹ 4-4-134-1 +always 꾺 4-4-134-1-1 +always ê¾» 4-4-134-1-3 +always ê¾¼ 4-4-134-25 +always ê¾½ 4-4-134-25-13 +always ê¾¾ 4-4-134-25-356 +always 꾿 4-4-134-35 +always ê¿€ 4-4-134-2 +always ê¿ 4-4-134-2-1 +always ê¿‚ 4-4-134-2-26 +always 꿃 4-4-134-2-12 +always ê¿„ 4-4-134-2-3 +always ê¿… 4-4-134-2-236 +always 꿆 4-4-134-2-256 +always 꿇 4-4-134-2-356 +always 꿈 4-4-134-26 +always 꿉 4-4-134-12 +always ê¿Š 4-4-134-12-3 +always ê¿‹ 4-4-134-3 +always ê¿Œ 4-4-134-3-3 +always ê¿ 4-4-134-2356 +always ê¿Ž 4-4-134-13 +always ê¿ 4-4-134-23 +always ê¿ 4-4-134-235 +always ê¿‘ 4-4-134-236 +always ê¿’ 4-4-134-256 +always ê¿“ 4-4-134-356 +always ê¿” 4-4-1234 +always ê¿• 4-4-1234-1 +always ê¿– 4-4-1234-1-1 +always ê¿— 4-4-1234-1-3 +always 꿘 4-4-1234-25 +always ê¿™ 4-4-1234-25-13 +always ê¿š 4-4-1234-25-356 +always ê¿› 4-4-1234-35 +always ê¿œ 4-4-1234-2 +always ê¿ 4-4-1234-2-1 +always ê¿ž 4-4-1234-2-26 +always ê¿Ÿ 4-4-1234-2-12 +always ê¿  4-4-1234-2-3 +always ê¿¡ 4-4-1234-2-236 +always ê¿¢ 4-4-1234-2-256 +always ê¿£ 4-4-1234-2-356 +always 꿤 4-4-1234-26 +always ê¿¥ 4-4-1234-12 +always 꿦 4-4-1234-12-3 +always 꿧 4-4-1234-3 +always 꿨 4-4-1234-3-3 +always ê¿© 4-4-1234-2356 +always 꿪 4-4-1234-13 +always ê¿« 4-4-1234-23 +always 꿬 4-4-1234-235 +always ê¿­ 4-4-1234-236 +always ê¿® 4-4-1234-256 +always 꿯 4-4-1234-356 +always ê¿° 4-4-1234-1235 +always 꿱 4-4-1234-1235-1 +always 꿲 4-4-1234-1235-1-1 +always 꿳 4-4-1234-1235-1-3 +always ê¿´ 4-4-1234-1235-25 +always 꿵 4-4-1234-1235-25-13 +always 꿶 4-4-1234-1235-25-356 +always ê¿· 4-4-1234-1235-35 +always 꿸 4-4-1234-1235-2 +always 꿹 4-4-1234-1235-2-1 +always 꿺 4-4-1234-1235-2-26 +always ê¿» 4-4-1234-1235-2-12 +always 꿼 4-4-1234-1235-2-3 +always 꿽 4-4-1234-1235-2-236 +always 꿾 4-4-1234-1235-2-256 +always ê¿¿ 4-4-1234-1235-2-356 +always 뀀 4-4-1234-1235-26 +always ë€ 4-4-1234-1235-12 +always 뀂 4-4-1234-1235-12-3 +always 뀃 4-4-1234-1235-3 +always 뀄 4-4-1234-1235-3-3 +always 뀅 4-4-1234-1235-2356 +always 뀆 4-4-1234-1235-13 +always 뀇 4-4-1234-1235-23 +always 뀈 4-4-1234-1235-235 +always 뀉 4-4-1234-1235-236 +always 뀊 4-4-1234-1235-256 +always 뀋 4-4-1234-1235-356 +always 뀌 4-4-134-1235 +always ë€ 4-4-134-1235-1 +always 뀎 4-4-134-1235-1-1 +always ë€ 4-4-134-1235-1-3 +always ë€ 4-4-134-1235-25 +always 뀑 4-4-134-1235-25-13 +always 뀒 4-4-134-1235-25-356 +always 뀓 4-4-134-1235-35 +always 뀔 4-4-134-1235-2 +always 뀕 4-4-134-1235-2-1 +always 뀖 4-4-134-1235-2-26 +always 뀗 4-4-134-1235-2-12 +always 뀘 4-4-134-1235-2-3 +always 뀙 4-4-134-1235-2-236 +always 뀚 4-4-134-1235-2-256 +always 뀛 4-4-134-1235-2-356 +always 뀜 4-4-134-1235-26 +always ë€ 4-4-134-1235-12 +always 뀞 4-4-134-1235-12-3 +always 뀟 4-4-134-1235-3 +always 뀠 4-4-134-1235-3-3 +always 뀡 4-4-134-1235-2356 +always 뀢 4-4-134-1235-13 +always 뀣 4-4-134-1235-23 +always 뀤 4-4-134-1235-235 +always 뀥 4-4-134-1235-236 +always 뀦 4-4-134-1235-256 +always 뀧 4-4-134-1235-356 +always 뀨 4-4-146 +always 뀩 4-4-146-1 +always 뀪 4-4-146-1-1 +always 뀫 4-4-146-1-3 +always 뀬 4-4-146-25 +always 뀭 4-4-146-25-13 +always 뀮 4-4-146-25-356 +always 뀯 4-4-146-35 +always 뀰 4-4-146-2 +always 뀱 4-4-146-2-1 +always 뀲 4-4-146-2-26 +always 뀳 4-4-146-2-12 +always 뀴 4-4-146-2-3 +always 뀵 4-4-146-2-236 +always 뀶 4-4-146-2-256 +always 뀷 4-4-146-2-356 +always 뀸 4-4-146-26 +always 뀹 4-4-146-12 +always 뀺 4-4-146-12-3 +always 뀻 4-4-146-3 +always 뀼 4-4-146-3-3 +always 뀽 4-4-146-2356 +always 뀾 4-4-146-13 +always 뀿 4-4-146-23 +always ë€ 4-4-146-235 +always ë 4-4-146-236 +always ë‚ 4-4-146-256 +always ëƒ 4-4-146-356 +always ë„ 4-4-246 +always ë… 4-4-246-1 +always ë† 4-4-246-1-1 +always ë‡ 4-4-246-1-3 +always ëˆ 4-4-246-25 +always ë‰ 4-4-246-25-13 +always ëŠ 4-4-246-25-356 +always ë‹ 4-4-246-35 +always ëŒ 4-4-246-2 +always ë 4-4-246-2-1 +always ëŽ 4-4-246-2-26 +always ë 4-4-246-2-12 +always ë 4-4-246-2-3 +always ë‘ 4-4-246-2-236 +always ë’ 4-4-246-2-256 +always ë“ 4-4-246-2-356 +always ë” 4-4-246-26 +always ë• 4-4-246-12 +always ë– 4-4-246-12-3 +always ë— 4-4-246-3 +always ë˜ 4-4-246-3-3 +always ë™ 4-4-246-2356 +always ëš 4-4-246-13 +always ë› 4-4-246-23 +always ëœ 4-4-246-235 +always ë 4-4-246-236 +always ëž 4-4-246-256 +always ëŸ 4-4-246-356 +always ë  4-4-2456 +always ë¡ 4-4-2456-1 +always ë¢ 4-4-2456-1-1 +always ë£ 4-4-2456-1-3 +always ë¤ 4-4-2456-25 +always ë¥ 4-4-2456-25-13 +always ë¦ 4-4-2456-25-356 +always ë§ 4-4-2456-35 +always ë¨ 4-4-2456-2 +always ë© 4-4-2456-2-1 +always ëª 4-4-2456-2-26 +always ë« 4-4-2456-2-12 +always ë¬ 4-4-2456-2-3 +always ë­ 4-4-2456-2-236 +always ë® 4-4-2456-2-256 +always ë¯ 4-4-2456-2-356 +always ë° 4-4-2456-26 +always ë± 4-4-2456-12 +always ë² 4-4-2456-12-3 +always ë³ 4-4-2456-3 +always ë´ 4-4-2456-3-3 +always ëµ 4-4-2456-2356 +always ë¶ 4-4-2456-13 +always ë· 4-4-2456-23 +always ë¸ 4-4-2456-235 +always ë¹ 4-4-2456-236 +always ëº 4-4-2456-256 +always ë» 4-4-2456-356 +always ë¼ 4-4-135 +always ë½ 4-4-135-1 +always ë¾ 4-4-135-1-1 +always ë¿ 4-4-135-1-3 +always ë‚€ 4-4-135-25 +always ë‚ 4-4-135-25-13 +always ë‚‚ 4-4-135-25-356 +always 낃 4-4-135-35 +always ë‚„ 4-4-135-2 +always ë‚… 4-4-135-2-1 +always 낆 4-4-135-2-26 +always 낇 4-4-135-2-12 +always 낈 4-4-135-2-3 +always 낉 4-4-135-2-236 +always ë‚Š 4-4-135-2-256 +always ë‚‹ 4-4-135-2-356 +always ë‚Œ 4-4-135-26 +always ë‚ 4-4-135-12 +always ë‚Ž 4-4-135-12-3 +always ë‚ 4-4-135-3 +always ë‚ 4-4-135-3-3 +always ë‚‘ 4-4-135-2356 +always ë‚’ 4-4-135-13 +always ë‚“ 4-4-135-23 +always ë‚” 4-4-135-235 +always ë‚• 4-4-135-236 +always ë‚– 4-4-135-256 +always ë‚— 4-4-135-356 +always 나 14-126 +always ë‚™ 14-126-1 +always ë‚š 14-126-1-1 +always ë‚› 14-126-1-3 +always ë‚œ 14-126-25 +always ë‚ 14-126-25-13 +always ë‚ž 14-126-25-356 +always ë‚Ÿ 14-126-35 +always ë‚  14-126-2 +always ë‚¡ 14-126-2-1 +always ë‚¢ 14-126-2-26 +always ë‚£ 14-126-2-12 +always 낤 14-126-2-3 +always ë‚¥ 14-126-2-236 +always 낦 14-126-2-256 +always 낧 14-126-2-356 +always 남 14-126-26 +always ë‚© 14-126-12 +always 낪 14-126-12-3 +always ë‚« 14-126-3 +always 났 14-126-3-3 +always ë‚­ 14-126-2356 +always ë‚® 14-126-13 +always 낯 14-126-23 +always ë‚° 14-126-235 +always 낱 14-126-236 +always 낲 14-126-256 +always 낳 14-126-356 +always ë‚´ 14-1235 +always 낵 14-1235-1 +always 낶 14-1235-1-1 +always ë‚· 14-1235-1-3 +always 낸 14-1235-25 +always 낹 14-1235-25-13 +always 낺 14-1235-25-356 +always ë‚» 14-1235-35 +always 낼 14-1235-2 +always 낽 14-1235-2-1 +always 낾 14-1235-2-26 +always ë‚¿ 14-1235-2-12 +always 냀 14-1235-2-3 +always ëƒ 14-1235-2-236 +always 냂 14-1235-2-256 +always 냃 14-1235-2-356 +always 냄 14-1235-26 +always 냅 14-1235-12 +always 냆 14-1235-12-3 +always 냇 14-1235-3 +always 냈 14-1235-3-3 +always 냉 14-1235-2356 +always 냊 14-1235-13 +always 냋 14-1235-23 +always 냌 14-1235-235 +always ëƒ 14-1235-236 +always 냎 14-1235-256 +always ëƒ 14-1235-356 +always ëƒ 14-345 +always 냑 14-345-1 +always 냒 14-345-1-1 +always 냓 14-345-1-3 +always 냔 14-345-25 +always 냕 14-345-25-13 +always 냖 14-345-25-356 +always 냗 14-345-35 +always 냘 14-345-2 +always 냙 14-345-2-1 +always 냚 14-345-2-26 +always 냛 14-345-2-12 +always 냜 14-345-2-3 +always ëƒ 14-345-2-236 +always 냞 14-345-2-256 +always 냟 14-345-2-356 +always 냠 14-345-26 +always 냡 14-345-12 +always 냢 14-345-12-3 +always 냣 14-345-3 +always 냤 14-345-3-3 +always 냥 14-345-2356 +always 냦 14-345-13 +always 냧 14-345-23 +always 냨 14-345-235 +always 냩 14-345-236 +always 냪 14-345-256 +always 냫 14-345-356 +always 냬 14-345-1235 +always 냭 14-345-1235-1 +always 냮 14-345-1235-1-1 +always 냯 14-345-1235-1-3 +always 냰 14-345-1235-25 +always 냱 14-345-1235-25-13 +always 냲 14-345-1235-25-356 +always 냳 14-345-1235-35 +always 냴 14-345-1235-2 +always 냵 14-345-1235-2-1 +always 냶 14-345-1235-2-26 +always 냷 14-345-1235-2-12 +always 냸 14-345-1235-2-3 +always 냹 14-345-1235-2-236 +always 냺 14-345-1235-2-256 +always 냻 14-345-1235-2-356 +always 냼 14-345-1235-26 +always 냽 14-345-1235-12 +always 냾 14-345-1235-12-3 +always 냿 14-345-1235-3 +always ë„€ 14-345-1235-3-3 +always ë„ 14-345-1235-2356 +always ë„‚ 14-345-1235-13 +always 넃 14-345-1235-23 +always ë„„ 14-345-1235-235 +always ë„… 14-345-1235-236 +always 넆 14-345-1235-256 +always 넇 14-345-1235-356 +always 너 14-234 +always 넉 14-234-1 +always ë„Š 14-234-1-1 +always ë„‹ 14-234-1-3 +always ë„Œ 14-234-25 +always ë„ 14-234-25-13 +always ë„Ž 14-234-25-356 +always ë„ 14-234-35 +always ë„ 14-234-2 +always ë„‘ 14-234-2-1 +always ë„’ 14-234-2-26 +always ë„“ 14-234-2-12 +always ë„” 14-234-2-3 +always ë„• 14-234-2-236 +always ë„– 14-234-2-256 +always ë„— 14-234-2-356 +always 넘 14-234-26 +always ë„™ 14-234-12 +always ë„š 14-234-12-3 +always ë„› 14-234-3 +always ë„œ 14-234-3-3 +always ë„ 14-234-2356 +always ë„ž 14-234-13 +always ë„Ÿ 14-234-23 +always ë„  14-234-235 +always ë„¡ 14-234-236 +always ë„¢ 14-234-256 +always ë„£ 14-234-356 +always 네 14-1345 +always ë„¥ 14-1345-1 +always 넦 14-1345-1-1 +always 넧 14-1345-1-3 +always 넨 14-1345-25 +always ë„© 14-1345-25-13 +always 넪 14-1345-25-356 +always ë„« 14-1345-35 +always 넬 14-1345-2 +always ë„­ 14-1345-2-1 +always ë„® 14-1345-2-26 +always 넯 14-1345-2-12 +always ë„° 14-1345-2-3 +always 넱 14-1345-2-236 +always 넲 14-1345-2-256 +always 넳 14-1345-2-356 +always ë„´ 14-1345-26 +always 넵 14-1345-12 +always 넶 14-1345-12-3 +always ë„· 14-1345-3 +always 넸 14-1345-3-3 +always 넹 14-1345-2356 +always 넺 14-1345-13 +always ë„» 14-1345-23 +always 넼 14-1345-235 +always 넽 14-1345-236 +always 넾 14-1345-256 +always ë„¿ 14-1345-356 +always ë…€ 14-156 +always ë… 14-156-1 +always ë…‚ 14-156-1-1 +always ë…ƒ 14-156-1-3 +always ë…„ 14-156-25 +always ë…… 14-156-25-13 +always ë…† 14-156-25-356 +always ë…‡ 14-156-35 +always ë…ˆ 14-156-2 +always ë…‰ 14-156-2-1 +always ë…Š 14-156-2-26 +always ë…‹ 14-156-2-12 +always ë…Œ 14-156-2-3 +always ë… 14-156-2-236 +always ë…Ž 14-156-2-256 +always ë… 14-156-2-356 +always ë… 14-156-26 +always ë…‘ 14-156-12 +always ë…’ 14-156-12-3 +always ë…“ 14-156-3 +always ë…” 14-156-3-3 +always ë…• 14-156-2356 +always ë…– 14-156-13 +always ë…— 14-156-23 +always ë…˜ 14-156-235 +always ë…™ 14-156-236 +always ë…š 14-156-256 +always ë…› 14-156-356 +always ë…œ 14-34 +always ë… 14-34-1 +always ë…ž 14-34-1-1 +always ë…Ÿ 14-34-1-3 +always ë…  14-34-25 +always ë…¡ 14-34-25-13 +always ë…¢ 14-34-25-356 +always ë…£ 14-34-35 +always ë…¤ 14-34-2 +always ë…¥ 14-34-2-1 +always ë…¦ 14-34-2-26 +always ë…§ 14-34-2-12 +always ë…¨ 14-34-2-3 +always ë…© 14-34-2-236 +always ë…ª 14-34-2-256 +always ë…« 14-34-2-356 +always ë…¬ 14-34-26 +always ë…­ 14-34-12 +always ë…® 14-34-12-3 +always ë…¯ 14-34-3 +always ë…° 14-34-3-3 +always ë…± 14-34-2356 +always ë…² 14-34-13 +always ë…³ 14-34-23 +always ë…´ 14-34-235 +always ë…µ 14-34-236 +always ë…¶ 14-34-256 +always ë…· 14-34-356 +always ë…¸ 14-136 +always ë…¹ 14-136-1 +always ë…º 14-136-1-1 +always ë…» 14-136-1-3 +always ë…¼ 14-136-25 +always ë…½ 14-136-25-13 +always ë…¾ 14-136-25-356 +always ë…¿ 14-136-35 +always 놀 14-136-2 +always ë† 14-136-2-1 +always 놂 14-136-2-26 +always 놃 14-136-2-12 +always 놄 14-136-2-3 +always 놅 14-136-2-236 +always 놆 14-136-2-256 +always 놇 14-136-2-356 +always 놈 14-136-26 +always 놉 14-136-12 +always 놊 14-136-12-3 +always 놋 14-136-3 +always 놌 14-136-3-3 +always ë† 14-136-2356 +always 놎 14-136-13 +always ë† 14-136-23 +always ë† 14-136-235 +always 놑 14-136-236 +always 높 14-136-256 +always 놓 14-136-356 +always 놔 14-1236 +always 놕 14-1236-1 +always 놖 14-1236-1-1 +always 놗 14-1236-1-3 +always 놘 14-1236-25 +always 놙 14-1236-25-13 +always 놚 14-1236-25-356 +always 놛 14-1236-35 +always 놜 14-1236-2 +always ë† 14-1236-2-1 +always 놞 14-1236-2-26 +always 놟 14-1236-2-12 +always 놠 14-1236-2-3 +always 놡 14-1236-2-236 +always 놢 14-1236-2-256 +always 놣 14-1236-2-356 +always 놤 14-1236-26 +always 놥 14-1236-12 +always 놦 14-1236-12-3 +always 놧 14-1236-3 +always 놨 14-1236-3-3 +always 놩 14-1236-2356 +always 놪 14-1236-13 +always 놫 14-1236-23 +always 놬 14-1236-235 +always 놭 14-1236-236 +always 놮 14-1236-256 +always 놯 14-1236-356 +always 놰 14-1236-1235 +always 놱 14-1236-1235-1 +always 놲 14-1236-1235-1-1 +always 놳 14-1236-1235-1-3 +always 놴 14-1236-1235-25 +always 놵 14-1236-1235-25-13 +always 놶 14-1236-1235-25-356 +always 놷 14-1236-1235-35 +always 놸 14-1236-1235-2 +always 놹 14-1236-1235-2-1 +always 놺 14-1236-1235-2-26 +always 놻 14-1236-1235-2-12 +always 놼 14-1236-1235-2-3 +always 놽 14-1236-1235-2-236 +always 놾 14-1236-1235-2-256 +always 놿 14-1236-1235-2-356 +always 뇀 14-1236-1235-26 +always ë‡ 14-1236-1235-12 +always 뇂 14-1236-1235-12-3 +always 뇃 14-1236-1235-3 +always 뇄 14-1236-1235-3-3 +always 뇅 14-1236-1235-2356 +always 뇆 14-1236-1235-13 +always 뇇 14-1236-1235-23 +always 뇈 14-1236-1235-235 +always 뇉 14-1236-1235-236 +always 뇊 14-1236-1235-256 +always 뇋 14-1236-1235-356 +always 뇌 14-13456 +always ë‡ 14-13456-1 +always 뇎 14-13456-1-1 +always ë‡ 14-13456-1-3 +always ë‡ 14-13456-25 +always 뇑 14-13456-25-13 +always 뇒 14-13456-25-356 +always 뇓 14-13456-35 +always 뇔 14-13456-2 +always 뇕 14-13456-2-1 +always 뇖 14-13456-2-26 +always 뇗 14-13456-2-12 +always 뇘 14-13456-2-3 +always 뇙 14-13456-2-236 +always 뇚 14-13456-2-256 +always 뇛 14-13456-2-356 +always 뇜 14-13456-26 +always ë‡ 14-13456-12 +always 뇞 14-13456-12-3 +always 뇟 14-13456-3 +always 뇠 14-13456-3-3 +always 뇡 14-13456-2356 +always 뇢 14-13456-13 +always 뇣 14-13456-23 +always 뇤 14-13456-235 +always 뇥 14-13456-236 +always 뇦 14-13456-256 +always 뇧 14-13456-356 +always 뇨 14-346 +always 뇩 14-346-1 +always 뇪 14-346-1-1 +always 뇫 14-346-1-3 +always 뇬 14-346-25 +always 뇭 14-346-25-13 +always 뇮 14-346-25-356 +always 뇯 14-346-35 +always 뇰 14-346-2 +always 뇱 14-346-2-1 +always 뇲 14-346-2-26 +always 뇳 14-346-2-12 +always 뇴 14-346-2-3 +always 뇵 14-346-2-236 +always 뇶 14-346-2-256 +always 뇷 14-346-2-356 +always 뇸 14-346-26 +always 뇹 14-346-12 +always 뇺 14-346-12-3 +always 뇻 14-346-3 +always 뇼 14-346-3-3 +always 뇽 14-346-2356 +always 뇾 14-346-13 +always 뇿 14-346-23 +always 눀 14-346-235 +always ëˆ 14-346-236 +always 눂 14-346-256 +always 눃 14-346-356 +always 누 14-134 +always 눅 14-134-1 +always 눆 14-134-1-1 +always 눇 14-134-1-3 +always 눈 14-134-25 +always 눉 14-134-25-13 +always 눊 14-134-25-356 +always 눋 14-134-35 +always 눌 14-134-2 +always ëˆ 14-134-2-1 +always 눎 14-134-2-26 +always ëˆ 14-134-2-12 +always ëˆ 14-134-2-3 +always 눑 14-134-2-236 +always 눒 14-134-2-256 +always 눓 14-134-2-356 +always 눔 14-134-26 +always 눕 14-134-12 +always 눖 14-134-12-3 +always 눗 14-134-3 +always 눘 14-134-3-3 +always 눙 14-134-2356 +always 눚 14-134-13 +always 눛 14-134-23 +always 눜 14-134-235 +always ëˆ 14-134-236 +always 눞 14-134-256 +always 눟 14-134-356 +always 눠 14-1234 +always 눡 14-1234-1 +always 눢 14-1234-1-1 +always 눣 14-1234-1-3 +always 눤 14-1234-25 +always 눥 14-1234-25-13 +always 눦 14-1234-25-356 +always 눧 14-1234-35 +always 눨 14-1234-2 +always 눩 14-1234-2-1 +always 눪 14-1234-2-26 +always 눫 14-1234-2-12 +always 눬 14-1234-2-3 +always 눭 14-1234-2-236 +always 눮 14-1234-2-256 +always 눯 14-1234-2-356 +always 눰 14-1234-26 +always 눱 14-1234-12 +always 눲 14-1234-12-3 +always 눳 14-1234-3 +always 눴 14-1234-3-3 +always 눵 14-1234-2356 +always 눶 14-1234-13 +always 눷 14-1234-23 +always 눸 14-1234-235 +always 눹 14-1234-236 +always 눺 14-1234-256 +always 눻 14-1234-356 +always 눼 14-1234-1235 +always 눽 14-1234-1235-1 +always 눾 14-1234-1235-1-1 +always 눿 14-1234-1235-1-3 +always 뉀 14-1234-1235-25 +always ë‰ 14-1234-1235-25-13 +always 뉂 14-1234-1235-25-356 +always 뉃 14-1234-1235-35 +always 뉄 14-1234-1235-2 +always 뉅 14-1234-1235-2-1 +always 뉆 14-1234-1235-2-26 +always 뉇 14-1234-1235-2-12 +always 뉈 14-1234-1235-2-3 +always 뉉 14-1234-1235-2-236 +always 뉊 14-1234-1235-2-256 +always 뉋 14-1234-1235-2-356 +always 뉌 14-1234-1235-26 +always ë‰ 14-1234-1235-12 +always 뉎 14-1234-1235-12-3 +always ë‰ 14-1234-1235-3 +always ë‰ 14-1234-1235-3-3 +always 뉑 14-1234-1235-2356 +always 뉒 14-1234-1235-13 +always 뉓 14-1234-1235-23 +always 뉔 14-1234-1235-235 +always 뉕 14-1234-1235-236 +always 뉖 14-1234-1235-256 +always 뉗 14-1234-1235-356 +always 뉘 14-134-1235 +always 뉙 14-134-1235-1 +always 뉚 14-134-1235-1-1 +always 뉛 14-134-1235-1-3 +always 뉜 14-134-1235-25 +always ë‰ 14-134-1235-25-13 +always 뉞 14-134-1235-25-356 +always 뉟 14-134-1235-35 +always 뉠 14-134-1235-2 +always 뉡 14-134-1235-2-1 +always 뉢 14-134-1235-2-26 +always 뉣 14-134-1235-2-12 +always 뉤 14-134-1235-2-3 +always 뉥 14-134-1235-2-236 +always 뉦 14-134-1235-2-256 +always 뉧 14-134-1235-2-356 +always 뉨 14-134-1235-26 +always 뉩 14-134-1235-12 +always 뉪 14-134-1235-12-3 +always 뉫 14-134-1235-3 +always 뉬 14-134-1235-3-3 +always 뉭 14-134-1235-2356 +always 뉮 14-134-1235-13 +always 뉯 14-134-1235-23 +always 뉰 14-134-1235-235 +always 뉱 14-134-1235-236 +always 뉲 14-134-1235-256 +always 뉳 14-134-1235-356 +always 뉴 14-146 +always 뉵 14-146-1 +always 뉶 14-146-1-1 +always 뉷 14-146-1-3 +always 뉸 14-146-25 +always 뉹 14-146-25-13 +always 뉺 14-146-25-356 +always 뉻 14-146-35 +always 뉼 14-146-2 +always 뉽 14-146-2-1 +always 뉾 14-146-2-26 +always 뉿 14-146-2-12 +always 늀 14-146-2-3 +always ëŠ 14-146-2-236 +always 늂 14-146-2-256 +always 늃 14-146-2-356 +always 늄 14-146-26 +always 늅 14-146-12 +always 늆 14-146-12-3 +always 늇 14-146-3 +always 늈 14-146-3-3 +always 늉 14-146-2356 +always 늊 14-146-13 +always 늋 14-146-23 +always 늌 14-146-235 +always ëŠ 14-146-236 +always 늎 14-146-256 +always ëŠ 14-146-356 +always ëŠ 14-246 +always 늑 14-246-1 +always 늒 14-246-1-1 +always 늓 14-246-1-3 +always 는 14-246-25 +always 늕 14-246-25-13 +always 늖 14-246-25-356 +always 늗 14-246-35 +always 늘 14-246-2 +always 늙 14-246-2-1 +always 늚 14-246-2-26 +always 늛 14-246-2-12 +always 늜 14-246-2-3 +always ëŠ 14-246-2-236 +always 늞 14-246-2-256 +always 늟 14-246-2-356 +always 늠 14-246-26 +always 늡 14-246-12 +always 늢 14-246-12-3 +always 늣 14-246-3 +always 늤 14-246-3-3 +always 능 14-246-2356 +always 늦 14-246-13 +always 늧 14-246-23 +always 늨 14-246-235 +always 늩 14-246-236 +always 늪 14-246-256 +always 늫 14-246-356 +always 늬 14-2456 +always 늭 14-2456-1 +always 늮 14-2456-1-1 +always 늯 14-2456-1-3 +always 늰 14-2456-25 +always 늱 14-2456-25-13 +always 늲 14-2456-25-356 +always 늳 14-2456-35 +always 늴 14-2456-2 +always 늵 14-2456-2-1 +always 늶 14-2456-2-26 +always 늷 14-2456-2-12 +always 늸 14-2456-2-3 +always 늹 14-2456-2-236 +always 늺 14-2456-2-256 +always 늻 14-2456-2-356 +always 늼 14-2456-26 +always 늽 14-2456-12 +always 늾 14-2456-12-3 +always 늿 14-2456-3 +always ë‹€ 14-2456-3-3 +always ë‹ 14-2456-2356 +always ë‹‚ 14-2456-13 +always 닃 14-2456-23 +always ë‹„ 14-2456-235 +always ë‹… 14-2456-236 +always 닆 14-2456-256 +always 닇 14-2456-356 +always 니 14-135 +always 닉 14-135-1 +always ë‹Š 14-135-1-1 +always ë‹‹ 14-135-1-3 +always ë‹Œ 14-135-25 +always ë‹ 14-135-25-13 +always ë‹Ž 14-135-25-356 +always ë‹ 14-135-35 +always ë‹ 14-135-2 +always ë‹‘ 14-135-2-1 +always ë‹’ 14-135-2-26 +always ë‹“ 14-135-2-12 +always ë‹” 14-135-2-3 +always ë‹• 14-135-2-236 +always ë‹– 14-135-2-256 +always ë‹— 14-135-2-356 +always 님 14-135-26 +always ë‹™ 14-135-12 +always ë‹š 14-135-12-3 +always ë‹› 14-135-3 +always ë‹œ 14-135-3-3 +always ë‹ 14-135-2356 +always ë‹ž 14-135-13 +always ë‹Ÿ 14-135-23 +always ë‹  14-135-235 +always ë‹¡ 14-135-236 +always ë‹¢ 14-135-256 +always ë‹£ 14-135-356 +always 다 24-126 +always ë‹¥ 24-126-1 +always 닦 24-126-1-1 +always 닧 24-126-1-3 +always 단 24-126-25 +always ë‹© 24-126-25-13 +always 닪 24-126-25-356 +always ë‹« 24-126-35 +always 달 24-126-2 +always ë‹­ 24-126-2-1 +always ë‹® 24-126-2-26 +always 닯 24-126-2-12 +always ë‹° 24-126-2-3 +always 닱 24-126-2-236 +always 닲 24-126-2-256 +always 닳 24-126-2-356 +always ë‹´ 24-126-26 +always 답 24-126-12 +always 닶 24-126-12-3 +always ë‹· 24-126-3 +always 닸 24-126-3-3 +always 당 24-126-2356 +always 닺 24-126-13 +always ë‹» 24-126-23 +always 닼 24-126-235 +always 닽 24-126-236 +always 닾 24-126-256 +always ë‹¿ 24-126-356 +always 대 24-1235 +always ëŒ 24-1235-1 +always 댂 24-1235-1-1 +always 댃 24-1235-1-3 +always 댄 24-1235-25 +always 댅 24-1235-25-13 +always 댆 24-1235-25-356 +always 댇 24-1235-35 +always 댈 24-1235-2 +always 댉 24-1235-2-1 +always 댊 24-1235-2-26 +always 댋 24-1235-2-12 +always 댌 24-1235-2-3 +always ëŒ 24-1235-2-236 +always 댎 24-1235-2-256 +always ëŒ 24-1235-2-356 +always ëŒ 24-1235-26 +always 댑 24-1235-12 +always 댒 24-1235-12-3 +always 댓 24-1235-3 +always 댔 24-1235-3-3 +always 댕 24-1235-2356 +always 댖 24-1235-13 +always 댗 24-1235-23 +always 댘 24-1235-235 +always 댙 24-1235-236 +always 댚 24-1235-256 +always 댛 24-1235-356 +always 댜 24-345 +always ëŒ 24-345-1 +always 댞 24-345-1-1 +always 댟 24-345-1-3 +always 댠 24-345-25 +always 댡 24-345-25-13 +always 댢 24-345-25-356 +always 댣 24-345-35 +always 댤 24-345-2 +always 댥 24-345-2-1 +always 댦 24-345-2-26 +always 댧 24-345-2-12 +always 댨 24-345-2-3 +always 댩 24-345-2-236 +always 댪 24-345-2-256 +always 댫 24-345-2-356 +always 댬 24-345-26 +always 댭 24-345-12 +always 댮 24-345-12-3 +always 댯 24-345-3 +always 댰 24-345-3-3 +always 댱 24-345-2356 +always 댲 24-345-13 +always 댳 24-345-23 +always 댴 24-345-235 +always 댵 24-345-236 +always 댶 24-345-256 +always 댷 24-345-356 +always 댸 24-345-1235 +always 댹 24-345-1235-1 +always 댺 24-345-1235-1-1 +always 댻 24-345-1235-1-3 +always 댼 24-345-1235-25 +always 댽 24-345-1235-25-13 +always 댾 24-345-1235-25-356 +always 댿 24-345-1235-35 +always ë€ 24-345-1235-2 +always ë 24-345-1235-2-1 +always ë‚ 24-345-1235-2-26 +always ëƒ 24-345-1235-2-12 +always ë„ 24-345-1235-2-3 +always ë… 24-345-1235-2-236 +always ë† 24-345-1235-2-256 +always ë‡ 24-345-1235-2-356 +always ëˆ 24-345-1235-26 +always ë‰ 24-345-1235-12 +always ëŠ 24-345-1235-12-3 +always ë‹ 24-345-1235-3 +always ëŒ 24-345-1235-3-3 +always ë 24-345-1235-2356 +always ëŽ 24-345-1235-13 +always ë 24-345-1235-23 +always ë 24-345-1235-235 +always ë‘ 24-345-1235-236 +always ë’ 24-345-1235-256 +always ë“ 24-345-1235-356 +always ë” 24-234 +always ë• 24-234-1 +always ë– 24-234-1-1 +always ë— 24-234-1-3 +always ë˜ 24-234-25 +always ë™ 24-234-25-13 +always ëš 24-234-25-356 +always ë› 24-234-35 +always ëœ 24-234-2 +always ë 24-234-2-1 +always ëž 24-234-2-26 +always ëŸ 24-234-2-12 +always ë  24-234-2-3 +always ë¡ 24-234-2-236 +always ë¢ 24-234-2-256 +always ë£ 24-234-2-356 +always ë¤ 24-234-26 +always ë¥ 24-234-12 +always ë¦ 24-234-12-3 +always ë§ 24-234-3 +always ë¨ 24-234-3-3 +always ë© 24-234-2356 +always ëª 24-234-13 +always ë« 24-234-23 +always ë¬ 24-234-235 +always ë­ 24-234-236 +always ë® 24-234-256 +always ë¯ 24-234-356 +always ë° 24-1345 +always ë± 24-1345-1 +always ë² 24-1345-1-1 +always ë³ 24-1345-1-3 +always ë´ 24-1345-25 +always ëµ 24-1345-25-13 +always ë¶ 24-1345-25-356 +always ë· 24-1345-35 +always ë¸ 24-1345-2 +always ë¹ 24-1345-2-1 +always ëº 24-1345-2-26 +always ë» 24-1345-2-12 +always ë¼ 24-1345-2-3 +always ë½ 24-1345-2-236 +always ë¾ 24-1345-2-256 +always ë¿ 24-1345-2-356 +always 뎀 24-1345-26 +always ëŽ 24-1345-12 +always 뎂 24-1345-12-3 +always 뎃 24-1345-3 +always 뎄 24-1345-3-3 +always 뎅 24-1345-2356 +always 뎆 24-1345-13 +always 뎇 24-1345-23 +always 뎈 24-1345-235 +always 뎉 24-1345-236 +always 뎊 24-1345-256 +always 뎋 24-1345-356 +always 뎌 24-156 +always ëŽ 24-156-1 +always 뎎 24-156-1-1 +always ëŽ 24-156-1-3 +always ëŽ 24-156-25 +always 뎑 24-156-25-13 +always 뎒 24-156-25-356 +always 뎓 24-156-35 +always 뎔 24-156-2 +always 뎕 24-156-2-1 +always 뎖 24-156-2-26 +always 뎗 24-156-2-12 +always 뎘 24-156-2-3 +always 뎙 24-156-2-236 +always 뎚 24-156-2-256 +always 뎛 24-156-2-356 +always 뎜 24-156-26 +always ëŽ 24-156-12 +always 뎞 24-156-12-3 +always 뎟 24-156-3 +always 뎠 24-156-3-3 +always 뎡 24-156-2356 +always 뎢 24-156-13 +always 뎣 24-156-23 +always 뎤 24-156-235 +always 뎥 24-156-236 +always 뎦 24-156-256 +always 뎧 24-156-356 +always 뎨 24-34 +always 뎩 24-34-1 +always 뎪 24-34-1-1 +always 뎫 24-34-1-3 +always 뎬 24-34-25 +always 뎭 24-34-25-13 +always 뎮 24-34-25-356 +always 뎯 24-34-35 +always 뎰 24-34-2 +always 뎱 24-34-2-1 +always 뎲 24-34-2-26 +always 뎳 24-34-2-12 +always 뎴 24-34-2-3 +always 뎵 24-34-2-236 +always 뎶 24-34-2-256 +always 뎷 24-34-2-356 +always 뎸 24-34-26 +always 뎹 24-34-12 +always 뎺 24-34-12-3 +always 뎻 24-34-3 +always 뎼 24-34-3-3 +always 뎽 24-34-2356 +always 뎾 24-34-13 +always 뎿 24-34-23 +always ë€ 24-34-235 +always ë 24-34-236 +always ë‚ 24-34-256 +always ëƒ 24-34-356 +always ë„ 24-136 +always ë… 24-136-1 +always ë† 24-136-1-1 +always ë‡ 24-136-1-3 +always ëˆ 24-136-25 +always ë‰ 24-136-25-13 +always ëŠ 24-136-25-356 +always ë‹ 24-136-35 +always ëŒ 24-136-2 +always ë 24-136-2-1 +always ëŽ 24-136-2-26 +always ë 24-136-2-12 +always ë 24-136-2-3 +always ë‘ 24-136-2-236 +always ë’ 24-136-2-256 +always ë“ 24-136-2-356 +always ë” 24-136-26 +always ë• 24-136-12 +always ë– 24-136-12-3 +always ë— 24-136-3 +always ë˜ 24-136-3-3 +always ë™ 24-136-2356 +always ëš 24-136-13 +always ë› 24-136-23 +always ëœ 24-136-235 +always ë 24-136-236 +always ëž 24-136-256 +always ëŸ 24-136-356 +always ë  24-1236 +always ë¡ 24-1236-1 +always ë¢ 24-1236-1-1 +always ë£ 24-1236-1-3 +always ë¤ 24-1236-25 +always ë¥ 24-1236-25-13 +always ë¦ 24-1236-25-356 +always ë§ 24-1236-35 +always ë¨ 24-1236-2 +always ë© 24-1236-2-1 +always ëª 24-1236-2-26 +always ë« 24-1236-2-12 +always ë¬ 24-1236-2-3 +always ë­ 24-1236-2-236 +always ë® 24-1236-2-256 +always ë¯ 24-1236-2-356 +always ë° 24-1236-26 +always ë± 24-1236-12 +always ë² 24-1236-12-3 +always ë³ 24-1236-3 +always ë´ 24-1236-3-3 +always ëµ 24-1236-2356 +always ë¶ 24-1236-13 +always ë· 24-1236-23 +always ë¸ 24-1236-235 +always ë¹ 24-1236-236 +always ëº 24-1236-256 +always ë» 24-1236-356 +always ë¼ 24-1236-1235 +always ë½ 24-1236-1235-1 +always ë¾ 24-1236-1235-1-1 +always ë¿ 24-1236-1235-1-3 +always ë€ 24-1236-1235-25 +always ë 24-1236-1235-25-13 +always ë‚ 24-1236-1235-25-356 +always ëƒ 24-1236-1235-35 +always ë„ 24-1236-1235-2 +always ë… 24-1236-1235-2-1 +always ë† 24-1236-1235-2-26 +always ë‡ 24-1236-1235-2-12 +always ëˆ 24-1236-1235-2-3 +always ë‰ 24-1236-1235-2-236 +always ëŠ 24-1236-1235-2-256 +always ë‹ 24-1236-1235-2-356 +always ëŒ 24-1236-1235-26 +always ë 24-1236-1235-12 +always ëŽ 24-1236-1235-12-3 +always ë 24-1236-1235-3 +always ë 24-1236-1235-3-3 +always ë‘ 24-1236-1235-2356 +always ë’ 24-1236-1235-13 +always ë“ 24-1236-1235-23 +always ë” 24-1236-1235-235 +always ë• 24-1236-1235-236 +always ë– 24-1236-1235-256 +always ë— 24-1236-1235-356 +always ë˜ 24-13456 +always ë™ 24-13456-1 +always ëš 24-13456-1-1 +always ë› 24-13456-1-3 +always ëœ 24-13456-25 +always ë 24-13456-25-13 +always ëž 24-13456-25-356 +always ëŸ 24-13456-35 +always ë  24-13456-2 +always ë¡ 24-13456-2-1 +always ë¢ 24-13456-2-26 +always ë£ 24-13456-2-12 +always ë¤ 24-13456-2-3 +always ë¥ 24-13456-2-236 +always ë¦ 24-13456-2-256 +always ë§ 24-13456-2-356 +always ë¨ 24-13456-26 +always ë© 24-13456-12 +always ëª 24-13456-12-3 +always ë« 24-13456-3 +always ë¬ 24-13456-3-3 +always ë­ 24-13456-2356 +always ë® 24-13456-13 +always ë¯ 24-13456-23 +always ë° 24-13456-235 +always ë± 24-13456-236 +always ë² 24-13456-256 +always ë³ 24-13456-356 +always ë´ 24-346 +always ëµ 24-346-1 +always ë¶ 24-346-1-1 +always ë· 24-346-1-3 +always ë¸ 24-346-25 +always ë¹ 24-346-25-13 +always ëº 24-346-25-356 +always ë» 24-346-35 +always ë¼ 24-346-2 +always ë½ 24-346-2-1 +always ë¾ 24-346-2-26 +always ë¿ 24-346-2-12 +always ë‘€ 24-346-2-3 +always ë‘ 24-346-2-236 +always ë‘‚ 24-346-2-256 +always 둃 24-346-2-356 +always ë‘„ 24-346-26 +always ë‘… 24-346-12 +always 둆 24-346-12-3 +always 둇 24-346-3 +always 둈 24-346-3-3 +always 둉 24-346-2356 +always ë‘Š 24-346-13 +always ë‘‹ 24-346-23 +always ë‘Œ 24-346-235 +always ë‘ 24-346-236 +always ë‘Ž 24-346-256 +always ë‘ 24-346-356 +always ë‘ 24-134 +always ë‘‘ 24-134-1 +always ë‘’ 24-134-1-1 +always ë‘“ 24-134-1-3 +always ë‘” 24-134-25 +always ë‘• 24-134-25-13 +always ë‘– 24-134-25-356 +always ë‘— 24-134-35 +always 둘 24-134-2 +always ë‘™ 24-134-2-1 +always ë‘š 24-134-2-26 +always ë‘› 24-134-2-12 +always ë‘œ 24-134-2-3 +always ë‘ 24-134-2-236 +always ë‘ž 24-134-2-256 +always ë‘Ÿ 24-134-2-356 +always ë‘  24-134-26 +always ë‘¡ 24-134-12 +always ë‘¢ 24-134-12-3 +always ë‘£ 24-134-3 +always 둤 24-134-3-3 +always ë‘¥ 24-134-2356 +always 둦 24-134-13 +always 둧 24-134-23 +always 둨 24-134-235 +always ë‘© 24-134-236 +always 둪 24-134-256 +always ë‘« 24-134-356 +always 둬 24-1234 +always ë‘­ 24-1234-1 +always ë‘® 24-1234-1-1 +always 둯 24-1234-1-3 +always ë‘° 24-1234-25 +always 둱 24-1234-25-13 +always 둲 24-1234-25-356 +always 둳 24-1234-35 +always ë‘´ 24-1234-2 +always 둵 24-1234-2-1 +always 둶 24-1234-2-26 +always ë‘· 24-1234-2-12 +always 둸 24-1234-2-3 +always 둹 24-1234-2-236 +always 둺 24-1234-2-256 +always ë‘» 24-1234-2-356 +always 둼 24-1234-26 +always 둽 24-1234-12 +always 둾 24-1234-12-3 +always ë‘¿ 24-1234-3 +always ë’€ 24-1234-3-3 +always ë’ 24-1234-2356 +always ë’‚ 24-1234-13 +always ë’ƒ 24-1234-23 +always ë’„ 24-1234-235 +always ë’… 24-1234-236 +always ë’† 24-1234-256 +always ë’‡ 24-1234-356 +always ë’ˆ 24-1234-1235 +always ë’‰ 24-1234-1235-1 +always ë’Š 24-1234-1235-1-1 +always ë’‹ 24-1234-1235-1-3 +always ë’Œ 24-1234-1235-25 +always ë’ 24-1234-1235-25-13 +always ë’Ž 24-1234-1235-25-356 +always ë’ 24-1234-1235-35 +always ë’ 24-1234-1235-2 +always ë’‘ 24-1234-1235-2-1 +always ë’’ 24-1234-1235-2-26 +always ë’“ 24-1234-1235-2-12 +always ë’” 24-1234-1235-2-3 +always ë’• 24-1234-1235-2-236 +always ë’– 24-1234-1235-2-256 +always ë’— 24-1234-1235-2-356 +always ë’˜ 24-1234-1235-26 +always ë’™ 24-1234-1235-12 +always ë’š 24-1234-1235-12-3 +always ë’› 24-1234-1235-3 +always ë’œ 24-1234-1235-3-3 +always ë’ 24-1234-1235-2356 +always ë’ž 24-1234-1235-13 +always ë’Ÿ 24-1234-1235-23 +always ë’  24-1234-1235-235 +always ë’¡ 24-1234-1235-236 +always ë’¢ 24-1234-1235-256 +always ë’£ 24-1234-1235-356 +always ë’¤ 24-134-1235 +always ë’¥ 24-134-1235-1 +always ë’¦ 24-134-1235-1-1 +always ë’§ 24-134-1235-1-3 +always ë’¨ 24-134-1235-25 +always ë’© 24-134-1235-25-13 +always ë’ª 24-134-1235-25-356 +always ë’« 24-134-1235-35 +always ë’¬ 24-134-1235-2 +always ë’­ 24-134-1235-2-1 +always ë’® 24-134-1235-2-26 +always ë’¯ 24-134-1235-2-12 +always ë’° 24-134-1235-2-3 +always ë’± 24-134-1235-2-236 +always ë’² 24-134-1235-2-256 +always ë’³ 24-134-1235-2-356 +always ë’´ 24-134-1235-26 +always ë’µ 24-134-1235-12 +always ë’¶ 24-134-1235-12-3 +always ë’· 24-134-1235-3 +always ë’¸ 24-134-1235-3-3 +always ë’¹ 24-134-1235-2356 +always ë’º 24-134-1235-13 +always ë’» 24-134-1235-23 +always ë’¼ 24-134-1235-235 +always ë’½ 24-134-1235-236 +always ë’¾ 24-134-1235-256 +always ë’¿ 24-134-1235-356 +always ë“€ 24-146 +always ë“ 24-146-1 +always ë“‚ 24-146-1-1 +always 듃 24-146-1-3 +always ë“„ 24-146-25 +always ë“… 24-146-25-13 +always 듆 24-146-25-356 +always 듇 24-146-35 +always 듈 24-146-2 +always 듉 24-146-2-1 +always ë“Š 24-146-2-26 +always ë“‹ 24-146-2-12 +always ë“Œ 24-146-2-3 +always ë“ 24-146-2-236 +always ë“Ž 24-146-2-256 +always ë“ 24-146-2-356 +always ë“ 24-146-26 +always ë“‘ 24-146-12 +always ë“’ 24-146-12-3 +always ë““ 24-146-3 +always ë“” 24-146-3-3 +always ë“• 24-146-2356 +always ë“– 24-146-13 +always ë“— 24-146-23 +always 듘 24-146-235 +always ë“™ 24-146-236 +always ë“š 24-146-256 +always ë“› 24-146-356 +always ë“œ 24-246 +always ë“ 24-246-1 +always ë“ž 24-246-1-1 +always ë“Ÿ 24-246-1-3 +always ë“  24-246-25 +always ë“¡ 24-246-25-13 +always ë“¢ 24-246-25-356 +always ë“£ 24-246-35 +always 들 24-246-2 +always ë“¥ 24-246-2-1 +always 듦 24-246-2-26 +always 듧 24-246-2-12 +always 듨 24-246-2-3 +always ë“© 24-246-2-236 +always 듪 24-246-2-256 +always ë“« 24-246-2-356 +always 듬 24-246-26 +always ë“­ 24-246-12 +always ë“® 24-246-12-3 +always 듯 24-246-3 +always ë“° 24-246-3-3 +always 등 24-246-2356 +always 듲 24-246-13 +always 듳 24-246-23 +always ë“´ 24-246-235 +always 듵 24-246-236 +always 듶 24-246-256 +always ë“· 24-246-356 +always 듸 24-2456 +always 듹 24-2456-1 +always 듺 24-2456-1-1 +always ë“» 24-2456-1-3 +always 듼 24-2456-25 +always 듽 24-2456-25-13 +always 듾 24-2456-25-356 +always ë“¿ 24-2456-35 +always 딀 24-2456-2 +always ë” 24-2456-2-1 +always 딂 24-2456-2-26 +always 딃 24-2456-2-12 +always 딄 24-2456-2-3 +always ë”… 24-2456-2-236 +always 딆 24-2456-2-256 +always 딇 24-2456-2-356 +always 딈 24-2456-26 +always 딉 24-2456-12 +always 딊 24-2456-12-3 +always 딋 24-2456-3 +always 딌 24-2456-3-3 +always ë” 24-2456-2356 +always 딎 24-2456-13 +always ë” 24-2456-23 +always ë” 24-2456-235 +always 딑 24-2456-236 +always ë”’ 24-2456-256 +always 딓 24-2456-356 +always ë”” 24-135 +always 딕 24-135-1 +always ë”– 24-135-1-1 +always ë”— 24-135-1-3 +always 딘 24-135-25 +always ë”™ 24-135-25-13 +always 딚 24-135-25-356 +always ë”› 24-135-35 +always 딜 24-135-2 +always ë” 24-135-2-1 +always 딞 24-135-2-26 +always 딟 24-135-2-12 +always ë”  24-135-2-3 +always 딡 24-135-2-236 +always 딢 24-135-2-256 +always 딣 24-135-2-356 +always 딤 24-135-26 +always 딥 24-135-12 +always 딦 24-135-12-3 +always 딧 24-135-3 +always 딨 24-135-3-3 +always 딩 24-135-2356 +always 딪 24-135-13 +always 딫 24-135-23 +always 딬 24-135-235 +always ë”­ 24-135-236 +always ë”® 24-135-256 +always 딯 24-135-356 +always ë”° 24-24-126 +always ë”± 24-24-126-1 +always 딲 24-24-126-1-1 +always 딳 24-24-126-1-3 +always ë”´ 24-24-126-25 +always 딵 24-24-126-25-13 +always 딶 24-24-126-25-356 +always ë”· 24-24-126-35 +always 딸 24-24-126-2 +always 딹 24-24-126-2-1 +always 딺 24-24-126-2-26 +always ë”» 24-24-126-2-12 +always 딼 24-24-126-2-3 +always 딽 24-24-126-2-236 +always 딾 24-24-126-2-256 +always 딿 24-24-126-2-356 +always ë•€ 24-24-126-26 +always ë• 24-24-126-12 +always ë•‚ 24-24-126-12-3 +always 땃 24-24-126-3 +always ë•„ 24-24-126-3-3 +always ë•… 24-24-126-2356 +always 땆 24-24-126-13 +always 땇 24-24-126-23 +always 땈 24-24-126-235 +always 땉 24-24-126-236 +always ë•Š 24-24-126-256 +always ë•‹ 24-24-126-356 +always ë•Œ 24-24-1235 +always ë• 24-24-1235-1 +always ë•Ž 24-24-1235-1-1 +always ë• 24-24-1235-1-3 +always ë• 24-24-1235-25 +always ë•‘ 24-24-1235-25-13 +always ë•’ 24-24-1235-25-356 +always ë•“ 24-24-1235-35 +always ë•” 24-24-1235-2 +always ë•• 24-24-1235-2-1 +always ë•– 24-24-1235-2-26 +always ë•— 24-24-1235-2-12 +always 땘 24-24-1235-2-3 +always ë•™ 24-24-1235-2-236 +always ë•š 24-24-1235-2-256 +always ë•› 24-24-1235-2-356 +always ë•œ 24-24-1235-26 +always ë• 24-24-1235-12 +always ë•ž 24-24-1235-12-3 +always ë•Ÿ 24-24-1235-3 +always ë•  24-24-1235-3-3 +always ë•¡ 24-24-1235-2356 +always ë•¢ 24-24-1235-13 +always ë•£ 24-24-1235-23 +always 땤 24-24-1235-235 +always ë•¥ 24-24-1235-236 +always 땦 24-24-1235-256 +always 땧 24-24-1235-356 +always 땨 24-24-345 +always ë•© 24-24-345-1 +always 땪 24-24-345-1-1 +always ë•« 24-24-345-1-3 +always 땬 24-24-345-25 +always ë•­ 24-24-345-25-13 +always ë•® 24-24-345-25-356 +always 땯 24-24-345-35 +always ë•° 24-24-345-2 +always 땱 24-24-345-2-1 +always 땲 24-24-345-2-26 +always 땳 24-24-345-2-12 +always ë•´ 24-24-345-2-3 +always 땵 24-24-345-2-236 +always 땶 24-24-345-2-256 +always ë•· 24-24-345-2-356 +always 땸 24-24-345-26 +always 땹 24-24-345-12 +always 땺 24-24-345-12-3 +always ë•» 24-24-345-3 +always 땼 24-24-345-3-3 +always 땽 24-24-345-2356 +always 땾 24-24-345-13 +always ë•¿ 24-24-345-23 +always ë–€ 24-24-345-235 +always ë– 24-24-345-236 +always ë–‚ 24-24-345-256 +always ë–ƒ 24-24-345-356 +always ë–„ 24-24-345-1235 +always ë–… 24-24-345-1235-1 +always ë–† 24-24-345-1235-1-1 +always ë–‡ 24-24-345-1235-1-3 +always ë–ˆ 24-24-345-1235-25 +always ë–‰ 24-24-345-1235-25-13 +always ë–Š 24-24-345-1235-25-356 +always ë–‹ 24-24-345-1235-35 +always ë–Œ 24-24-345-1235-2 +always ë– 24-24-345-1235-2-1 +always ë–Ž 24-24-345-1235-2-26 +always ë– 24-24-345-1235-2-12 +always ë– 24-24-345-1235-2-3 +always ë–‘ 24-24-345-1235-2-236 +always ë–’ 24-24-345-1235-2-256 +always ë–“ 24-24-345-1235-2-356 +always ë–” 24-24-345-1235-26 +always ë–• 24-24-345-1235-12 +always ë–– 24-24-345-1235-12-3 +always ë–— 24-24-345-1235-3 +always ë–˜ 24-24-345-1235-3-3 +always ë–™ 24-24-345-1235-2356 +always ë–š 24-24-345-1235-13 +always ë–› 24-24-345-1235-23 +always ë–œ 24-24-345-1235-235 +always ë– 24-24-345-1235-236 +always ë–ž 24-24-345-1235-256 +always ë–Ÿ 24-24-345-1235-356 +always ë–  24-24-234 +always ë–¡ 24-24-234-1 +always ë–¢ 24-24-234-1-1 +always ë–£ 24-24-234-1-3 +always ë–¤ 24-24-234-25 +always ë–¥ 24-24-234-25-13 +always ë–¦ 24-24-234-25-356 +always ë–§ 24-24-234-35 +always ë–¨ 24-24-234-2 +always ë–© 24-24-234-2-1 +always ë–ª 24-24-234-2-26 +always ë–« 24-24-234-2-12 +always ë–¬ 24-24-234-2-3 +always ë–­ 24-24-234-2-236 +always ë–® 24-24-234-2-256 +always ë–¯ 24-24-234-2-356 +always ë–° 24-24-234-26 +always ë–± 24-24-234-12 +always ë–² 24-24-234-12-3 +always ë–³ 24-24-234-3 +always ë–´ 24-24-234-3-3 +always ë–µ 24-24-234-2356 +always ë–¶ 24-24-234-13 +always ë–· 24-24-234-23 +always ë–¸ 24-24-234-235 +always ë–¹ 24-24-234-236 +always ë–º 24-24-234-256 +always ë–» 24-24-234-356 +always ë–¼ 24-24-1345 +always ë–½ 24-24-1345-1 +always ë–¾ 24-24-1345-1-1 +always ë–¿ 24-24-1345-1-3 +always ë—€ 24-24-1345-25 +always ë— 24-24-1345-25-13 +always ë—‚ 24-24-1345-25-356 +always ë—ƒ 24-24-1345-35 +always ë—„ 24-24-1345-2 +always ë—… 24-24-1345-2-1 +always ë—† 24-24-1345-2-26 +always ë—‡ 24-24-1345-2-12 +always ë—ˆ 24-24-1345-2-3 +always ë—‰ 24-24-1345-2-236 +always ë—Š 24-24-1345-2-256 +always ë—‹ 24-24-1345-2-356 +always ë—Œ 24-24-1345-26 +always ë— 24-24-1345-12 +always ë—Ž 24-24-1345-12-3 +always ë— 24-24-1345-3 +always ë— 24-24-1345-3-3 +always ë—‘ 24-24-1345-2356 +always ë—’ 24-24-1345-13 +always ë—“ 24-24-1345-23 +always ë—” 24-24-1345-235 +always ë—• 24-24-1345-236 +always ë—– 24-24-1345-256 +always ë—— 24-24-1345-356 +always ë—˜ 24-24-156 +always ë—™ 24-24-156-1 +always ë—š 24-24-156-1-1 +always ë—› 24-24-156-1-3 +always ë—œ 24-24-156-25 +always ë— 24-24-156-25-13 +always ë—ž 24-24-156-25-356 +always ë—Ÿ 24-24-156-35 +always ë—  24-24-156-2 +always ë—¡ 24-24-156-2-1 +always ë—¢ 24-24-156-2-26 +always ë—£ 24-24-156-2-12 +always ë—¤ 24-24-156-2-3 +always ë—¥ 24-24-156-2-236 +always ë—¦ 24-24-156-2-256 +always ë—§ 24-24-156-2-356 +always ë—¨ 24-24-156-26 +always ë—© 24-24-156-12 +always ë—ª 24-24-156-12-3 +always ë—« 24-24-156-3 +always ë—¬ 24-24-156-3-3 +always ë—­ 24-24-156-2356 +always ë—® 24-24-156-13 +always ë—¯ 24-24-156-23 +always ë—° 24-24-156-235 +always ë—± 24-24-156-236 +always ë—² 24-24-156-256 +always ë—³ 24-24-156-356 +always ë—´ 24-24-34 +always ë—µ 24-24-34-1 +always ë—¶ 24-24-34-1-1 +always ë—· 24-24-34-1-3 +always ë—¸ 24-24-34-25 +always ë—¹ 24-24-34-25-13 +always ë—º 24-24-34-25-356 +always ë—» 24-24-34-35 +always ë—¼ 24-24-34-2 +always ë—½ 24-24-34-2-1 +always ë—¾ 24-24-34-2-26 +always ë—¿ 24-24-34-2-12 +always 똀 24-24-34-2-3 +always ë˜ 24-24-34-2-236 +always 똂 24-24-34-2-256 +always 똃 24-24-34-2-356 +always 똄 24-24-34-26 +always 똅 24-24-34-12 +always 똆 24-24-34-12-3 +always 똇 24-24-34-3 +always 똈 24-24-34-3-3 +always 똉 24-24-34-2356 +always 똊 24-24-34-13 +always 똋 24-24-34-23 +always 똌 24-24-34-235 +always ë˜ 24-24-34-236 +always 똎 24-24-34-256 +always ë˜ 24-24-34-356 +always ë˜ 24-24-136 +always 똑 24-24-136-1 +always 똒 24-24-136-1-1 +always 똓 24-24-136-1-3 +always 똔 24-24-136-25 +always 똕 24-24-136-25-13 +always 똖 24-24-136-25-356 +always 똗 24-24-136-35 +always 똘 24-24-136-2 +always 똙 24-24-136-2-1 +always 똚 24-24-136-2-26 +always 똛 24-24-136-2-12 +always 똜 24-24-136-2-3 +always ë˜ 24-24-136-2-236 +always 똞 24-24-136-2-256 +always 똟 24-24-136-2-356 +always 똠 24-24-136-26 +always 똡 24-24-136-12 +always 똢 24-24-136-12-3 +always 똣 24-24-136-3 +always 똤 24-24-136-3-3 +always 똥 24-24-136-2356 +always 똦 24-24-136-13 +always 똧 24-24-136-23 +always 똨 24-24-136-235 +always 똩 24-24-136-236 +always 똪 24-24-136-256 +always 똫 24-24-136-356 +always 똬 24-24-1236 +always 똭 24-24-1236-1 +always 똮 24-24-1236-1-1 +always 똯 24-24-1236-1-3 +always 똰 24-24-1236-25 +always 똱 24-24-1236-25-13 +always 똲 24-24-1236-25-356 +always 똳 24-24-1236-35 +always 똴 24-24-1236-2 +always 똵 24-24-1236-2-1 +always 똶 24-24-1236-2-26 +always 똷 24-24-1236-2-12 +always 똸 24-24-1236-2-3 +always 똹 24-24-1236-2-236 +always 똺 24-24-1236-2-256 +always 똻 24-24-1236-2-356 +always 똼 24-24-1236-26 +always 똽 24-24-1236-12 +always 똾 24-24-1236-12-3 +always 똿 24-24-1236-3 +always 뙀 24-24-1236-3-3 +always ë™ 24-24-1236-2356 +always 뙂 24-24-1236-13 +always 뙃 24-24-1236-23 +always 뙄 24-24-1236-235 +always ë™… 24-24-1236-236 +always 뙆 24-24-1236-256 +always 뙇 24-24-1236-356 +always 뙈 24-24-1236-1235 +always 뙉 24-24-1236-1235-1 +always 뙊 24-24-1236-1235-1-1 +always 뙋 24-24-1236-1235-1-3 +always 뙌 24-24-1236-1235-25 +always ë™ 24-24-1236-1235-25-13 +always 뙎 24-24-1236-1235-25-356 +always ë™ 24-24-1236-1235-35 +always ë™ 24-24-1236-1235-2 +always 뙑 24-24-1236-1235-2-1 +always ë™’ 24-24-1236-1235-2-26 +always 뙓 24-24-1236-1235-2-12 +always ë™” 24-24-1236-1235-2-3 +always 뙕 24-24-1236-1235-2-236 +always ë™– 24-24-1236-1235-2-256 +always ë™— 24-24-1236-1235-2-356 +always 뙘 24-24-1236-1235-26 +always ë™™ 24-24-1236-1235-12 +always 뙚 24-24-1236-1235-12-3 +always ë™› 24-24-1236-1235-3 +always 뙜 24-24-1236-1235-3-3 +always ë™ 24-24-1236-1235-2356 +always 뙞 24-24-1236-1235-13 +always 뙟 24-24-1236-1235-23 +always ë™  24-24-1236-1235-235 +always 뙡 24-24-1236-1235-236 +always 뙢 24-24-1236-1235-256 +always 뙣 24-24-1236-1235-356 +always 뙤 24-24-13456 +always 뙥 24-24-13456-1 +always 뙦 24-24-13456-1-1 +always 뙧 24-24-13456-1-3 +always 뙨 24-24-13456-25 +always 뙩 24-24-13456-25-13 +always 뙪 24-24-13456-25-356 +always 뙫 24-24-13456-35 +always 뙬 24-24-13456-2 +always ë™­ 24-24-13456-2-1 +always ë™® 24-24-13456-2-26 +always 뙯 24-24-13456-2-12 +always ë™° 24-24-13456-2-3 +always ë™± 24-24-13456-2-236 +always 뙲 24-24-13456-2-256 +always 뙳 24-24-13456-2-356 +always ë™´ 24-24-13456-26 +always 뙵 24-24-13456-12 +always 뙶 24-24-13456-12-3 +always ë™· 24-24-13456-3 +always 뙸 24-24-13456-3-3 +always 뙹 24-24-13456-2356 +always 뙺 24-24-13456-13 +always ë™» 24-24-13456-23 +always 뙼 24-24-13456-235 +always 뙽 24-24-13456-236 +always 뙾 24-24-13456-256 +always 뙿 24-24-13456-356 +always 뚀 24-24-346 +always ëš 24-24-346-1 +always ëš‚ 24-24-346-1-1 +always 뚃 24-24-346-1-3 +always ëš„ 24-24-346-25 +always ëš… 24-24-346-25-13 +always 뚆 24-24-346-25-356 +always 뚇 24-24-346-35 +always 뚈 24-24-346-2 +always 뚉 24-24-346-2-1 +always 뚊 24-24-346-2-26 +always ëš‹ 24-24-346-2-12 +always 뚌 24-24-346-2-3 +always ëš 24-24-346-2-236 +always 뚎 24-24-346-2-256 +always ëš 24-24-346-2-356 +always ëš 24-24-346-26 +always ëš‘ 24-24-346-12 +always ëš’ 24-24-346-12-3 +always ëš“ 24-24-346-3 +always ëš” 24-24-346-3-3 +always ëš• 24-24-346-2356 +always ëš– 24-24-346-13 +always ëš— 24-24-346-23 +always 뚘 24-24-346-235 +always ëš™ 24-24-346-236 +always ëšš 24-24-346-256 +always ëš› 24-24-346-356 +always ëšœ 24-24-134 +always ëš 24-24-134-1 +always ëšž 24-24-134-1-1 +always 뚟 24-24-134-1-3 +always ëš  24-24-134-25 +always ëš¡ 24-24-134-25-13 +always 뚢 24-24-134-25-356 +always 뚣 24-24-134-35 +always 뚤 24-24-134-2 +always 뚥 24-24-134-2-1 +always 뚦 24-24-134-2-26 +always 뚧 24-24-134-2-12 +always 뚨 24-24-134-2-3 +always ëš© 24-24-134-2-236 +always 뚪 24-24-134-2-256 +always ëš« 24-24-134-2-356 +always 뚬 24-24-134-26 +always ëš­ 24-24-134-12 +always ëš® 24-24-134-12-3 +always 뚯 24-24-134-3 +always ëš° 24-24-134-3-3 +always ëš± 24-24-134-2356 +always ëš² 24-24-134-13 +always ëš³ 24-24-134-23 +always ëš´ 24-24-134-235 +always ëšµ 24-24-134-236 +always 뚶 24-24-134-256 +always ëš· 24-24-134-356 +always 뚸 24-24-1234 +always ëš¹ 24-24-1234-1 +always 뚺 24-24-1234-1-1 +always ëš» 24-24-1234-1-3 +always ëš¼ 24-24-1234-25 +always ëš½ 24-24-1234-25-13 +always ëš¾ 24-24-1234-25-356 +always ëš¿ 24-24-1234-35 +always 뛀 24-24-1234-2 +always ë› 24-24-1234-2-1 +always 뛂 24-24-1234-2-26 +always 뛃 24-24-1234-2-12 +always 뛄 24-24-1234-2-3 +always ë›… 24-24-1234-2-236 +always 뛆 24-24-1234-2-256 +always 뛇 24-24-1234-2-356 +always 뛈 24-24-1234-26 +always 뛉 24-24-1234-12 +always 뛊 24-24-1234-12-3 +always 뛋 24-24-1234-3 +always 뛌 24-24-1234-3-3 +always ë› 24-24-1234-2356 +always 뛎 24-24-1234-13 +always ë› 24-24-1234-23 +always ë› 24-24-1234-235 +always 뛑 24-24-1234-236 +always ë›’ 24-24-1234-256 +always 뛓 24-24-1234-356 +always ë›” 24-24-1234-1235 +always 뛕 24-24-1234-1235-1 +always ë›– 24-24-1234-1235-1-1 +always ë›— 24-24-1234-1235-1-3 +always 뛘 24-24-1234-1235-25 +always ë›™ 24-24-1234-1235-25-13 +always 뛚 24-24-1234-1235-25-356 +always ë›› 24-24-1234-1235-35 +always 뛜 24-24-1234-1235-2 +always ë› 24-24-1234-1235-2-1 +always 뛞 24-24-1234-1235-2-26 +always 뛟 24-24-1234-1235-2-12 +always ë›  24-24-1234-1235-2-3 +always 뛡 24-24-1234-1235-2-236 +always 뛢 24-24-1234-1235-2-256 +always 뛣 24-24-1234-1235-2-356 +always 뛤 24-24-1234-1235-26 +always 뛥 24-24-1234-1235-12 +always 뛦 24-24-1234-1235-12-3 +always 뛧 24-24-1234-1235-3 +always 뛨 24-24-1234-1235-3-3 +always 뛩 24-24-1234-1235-2356 +always 뛪 24-24-1234-1235-13 +always 뛫 24-24-1234-1235-23 +always 뛬 24-24-1234-1235-235 +always ë›­ 24-24-1234-1235-236 +always ë›® 24-24-1234-1235-256 +always 뛯 24-24-1234-1235-356 +always ë›° 24-24-134-1235 +always ë›± 24-24-134-1235-1 +always 뛲 24-24-134-1235-1-1 +always 뛳 24-24-134-1235-1-3 +always ë›´ 24-24-134-1235-25 +always 뛵 24-24-134-1235-25-13 +always 뛶 24-24-134-1235-25-356 +always ë›· 24-24-134-1235-35 +always 뛸 24-24-134-1235-2 +always 뛹 24-24-134-1235-2-1 +always 뛺 24-24-134-1235-2-26 +always ë›» 24-24-134-1235-2-12 +always 뛼 24-24-134-1235-2-3 +always 뛽 24-24-134-1235-2-236 +always 뛾 24-24-134-1235-2-256 +always 뛿 24-24-134-1235-2-356 +always 뜀 24-24-134-1235-26 +always ëœ 24-24-134-1235-12 +always 뜂 24-24-134-1235-12-3 +always 뜃 24-24-134-1235-3 +always 뜄 24-24-134-1235-3-3 +always 뜅 24-24-134-1235-2356 +always 뜆 24-24-134-1235-13 +always 뜇 24-24-134-1235-23 +always 뜈 24-24-134-1235-235 +always 뜉 24-24-134-1235-236 +always 뜊 24-24-134-1235-256 +always 뜋 24-24-134-1235-356 +always 뜌 24-24-146 +always ëœ 24-24-146-1 +always 뜎 24-24-146-1-1 +always ëœ 24-24-146-1-3 +always ëœ 24-24-146-25 +always 뜑 24-24-146-25-13 +always 뜒 24-24-146-25-356 +always 뜓 24-24-146-35 +always 뜔 24-24-146-2 +always 뜕 24-24-146-2-1 +always 뜖 24-24-146-2-26 +always 뜗 24-24-146-2-12 +always 뜘 24-24-146-2-3 +always 뜙 24-24-146-2-236 +always 뜚 24-24-146-2-256 +always 뜛 24-24-146-2-356 +always 뜜 24-24-146-26 +always ëœ 24-24-146-12 +always 뜞 24-24-146-12-3 +always 뜟 24-24-146-3 +always 뜠 24-24-146-3-3 +always 뜡 24-24-146-2356 +always 뜢 24-24-146-13 +always 뜣 24-24-146-23 +always 뜤 24-24-146-235 +always 뜥 24-24-146-236 +always 뜦 24-24-146-256 +always 뜧 24-24-146-356 +always 뜨 24-24-246 +always 뜩 24-24-246-1 +always 뜪 24-24-246-1-1 +always 뜫 24-24-246-1-3 +always 뜬 24-24-246-25 +always 뜭 24-24-246-25-13 +always 뜮 24-24-246-25-356 +always 뜯 24-24-246-35 +always 뜰 24-24-246-2 +always 뜱 24-24-246-2-1 +always 뜲 24-24-246-2-26 +always 뜳 24-24-246-2-12 +always 뜴 24-24-246-2-3 +always 뜵 24-24-246-2-236 +always 뜶 24-24-246-2-256 +always 뜷 24-24-246-2-356 +always 뜸 24-24-246-26 +always 뜹 24-24-246-12 +always 뜺 24-24-246-12-3 +always 뜻 24-24-246-3 +always 뜼 24-24-246-3-3 +always 뜽 24-24-246-2356 +always 뜾 24-24-246-13 +always 뜿 24-24-246-23 +always ë€ 24-24-246-235 +always ë 24-24-246-236 +always ë‚ 24-24-246-256 +always ëƒ 24-24-246-356 +always ë„ 24-24-2456 +always ë… 24-24-2456-1 +always ë† 24-24-2456-1-1 +always ë‡ 24-24-2456-1-3 +always ëˆ 24-24-2456-25 +always ë‰ 24-24-2456-25-13 +always ëŠ 24-24-2456-25-356 +always ë‹ 24-24-2456-35 +always ëŒ 24-24-2456-2 +always ë 24-24-2456-2-1 +always ëŽ 24-24-2456-2-26 +always ë 24-24-2456-2-12 +always ë 24-24-2456-2-3 +always ë‘ 24-24-2456-2-236 +always ë’ 24-24-2456-2-256 +always ë“ 24-24-2456-2-356 +always ë” 24-24-2456-26 +always ë• 24-24-2456-12 +always ë– 24-24-2456-12-3 +always ë— 24-24-2456-3 +always ë˜ 24-24-2456-3-3 +always ë™ 24-24-2456-2356 +always ëš 24-24-2456-13 +always ë› 24-24-2456-23 +always ëœ 24-24-2456-235 +always ë 24-24-2456-236 +always ëž 24-24-2456-256 +always ëŸ 24-24-2456-356 +always ë  24-24-135 +always ë¡ 24-24-135-1 +always ë¢ 24-24-135-1-1 +always ë£ 24-24-135-1-3 +always ë¤ 24-24-135-25 +always ë¥ 24-24-135-25-13 +always ë¦ 24-24-135-25-356 +always ë§ 24-24-135-35 +always ë¨ 24-24-135-2 +always ë© 24-24-135-2-1 +always ëª 24-24-135-2-26 +always ë« 24-24-135-2-12 +always ë¬ 24-24-135-2-3 +always ë­ 24-24-135-2-236 +always ë® 24-24-135-2-256 +always ë¯ 24-24-135-2-356 +always ë° 24-24-135-26 +always ë± 24-24-135-12 +always ë² 24-24-135-12-3 +always ë³ 24-24-135-3 +always ë´ 24-24-135-3-3 +always ëµ 24-24-135-2356 +always ë¶ 24-24-135-13 +always ë· 24-24-135-23 +always ë¸ 24-24-135-235 +always ë¹ 24-24-135-236 +always ëº 24-24-135-256 +always ë» 24-24-135-356 +always ë¼ 5-126 +always ë½ 5-126-1 +always ë¾ 5-126-1-1 +always ë¿ 5-126-1-3 +always 란 5-126-25 +always ëž 5-126-25-13 +always ëž‚ 5-126-25-356 +always 랃 5-126-35 +always ëž„ 5-126-2 +always ëž… 5-126-2-1 +always 랆 5-126-2-26 +always 랇 5-126-2-12 +always 랈 5-126-2-3 +always 랉 5-126-2-236 +always 랊 5-126-2-256 +always ëž‹ 5-126-2-356 +always 람 5-126-26 +always ëž 5-126-12 +always 랎 5-126-12-3 +always ëž 5-126-3 +always ëž 5-126-3-3 +always ëž‘ 5-126-2356 +always ëž’ 5-126-13 +always ëž“ 5-126-23 +always ëž” 5-126-235 +always ëž• 5-126-236 +always ëž– 5-126-256 +always ëž— 5-126-356 +always 래 5-1235 +always ëž™ 5-1235-1 +always ëžš 5-1235-1-1 +always ëž› 5-1235-1-3 +always ëžœ 5-1235-25 +always ëž 5-1235-25-13 +always ëžž 5-1235-25-356 +always 랟 5-1235-35 +always ëž  5-1235-2 +always ëž¡ 5-1235-2-1 +always 랢 5-1235-2-26 +always 랣 5-1235-2-12 +always 랤 5-1235-2-3 +always 랥 5-1235-2-236 +always 랦 5-1235-2-256 +always 랧 5-1235-2-356 +always 램 5-1235-26 +always ëž© 5-1235-12 +always 랪 5-1235-12-3 +always ëž« 5-1235-3 +always 랬 5-1235-3-3 +always ëž­ 5-1235-2356 +always ëž® 5-1235-13 +always 랯 5-1235-23 +always ëž° 5-1235-235 +always ëž± 5-1235-236 +always ëž² 5-1235-256 +always ëž³ 5-1235-356 +always ëž´ 5-345 +always ëžµ 5-345-1 +always 랶 5-345-1-1 +always ëž· 5-345-1-3 +always 랸 5-345-25 +always ëž¹ 5-345-25-13 +always 랺 5-345-25-356 +always ëž» 5-345-35 +always ëž¼ 5-345-2 +always ëž½ 5-345-2-1 +always ëž¾ 5-345-2-26 +always ëž¿ 5-345-2-12 +always 럀 5-345-2-3 +always ëŸ 5-345-2-236 +always 럂 5-345-2-256 +always 럃 5-345-2-356 +always 럄 5-345-26 +always 럅 5-345-12 +always 럆 5-345-12-3 +always 럇 5-345-3 +always 럈 5-345-3-3 +always 량 5-345-2356 +always 럊 5-345-13 +always 럋 5-345-23 +always 럌 5-345-235 +always ëŸ 5-345-236 +always 럎 5-345-256 +always ëŸ 5-345-356 +always ëŸ 5-345-1235 +always 럑 5-345-1235-1 +always 럒 5-345-1235-1-1 +always 럓 5-345-1235-1-3 +always 럔 5-345-1235-25 +always 럕 5-345-1235-25-13 +always 럖 5-345-1235-25-356 +always 럗 5-345-1235-35 +always 럘 5-345-1235-2 +always 럙 5-345-1235-2-1 +always 럚 5-345-1235-2-26 +always 럛 5-345-1235-2-12 +always 럜 5-345-1235-2-3 +always ëŸ 5-345-1235-2-236 +always 럞 5-345-1235-2-256 +always 럟 5-345-1235-2-356 +always 럠 5-345-1235-26 +always 럡 5-345-1235-12 +always 럢 5-345-1235-12-3 +always 럣 5-345-1235-3 +always 럤 5-345-1235-3-3 +always 럥 5-345-1235-2356 +always 럦 5-345-1235-13 +always 럧 5-345-1235-23 +always 럨 5-345-1235-235 +always 럩 5-345-1235-236 +always 럪 5-345-1235-256 +always 럫 5-345-1235-356 +always 러 5-234 +always 럭 5-234-1 +always 럮 5-234-1-1 +always 럯 5-234-1-3 +always 런 5-234-25 +always 럱 5-234-25-13 +always 럲 5-234-25-356 +always 럳 5-234-35 +always 럴 5-234-2 +always 럵 5-234-2-1 +always 럶 5-234-2-26 +always 럷 5-234-2-12 +always 럸 5-234-2-3 +always 럹 5-234-2-236 +always 럺 5-234-2-256 +always 럻 5-234-2-356 +always 럼 5-234-26 +always 럽 5-234-12 +always 럾 5-234-12-3 +always 럿 5-234-3 +always ë € 5-234-3-3 +always ë  5-234-2356 +always ë ‚ 5-234-13 +always ë ƒ 5-234-23 +always ë „ 5-234-235 +always ë … 5-234-236 +always ë † 5-234-256 +always ë ‡ 5-234-356 +always ë ˆ 5-1345 +always ë ‰ 5-1345-1 +always ë Š 5-1345-1-1 +always ë ‹ 5-1345-1-3 +always ë Œ 5-1345-25 +always ë  5-1345-25-13 +always ë Ž 5-1345-25-356 +always ë  5-1345-35 +always ë  5-1345-2 +always ë ‘ 5-1345-2-1 +always ë ’ 5-1345-2-26 +always ë “ 5-1345-2-12 +always ë ” 5-1345-2-3 +always ë • 5-1345-2-236 +always ë – 5-1345-2-256 +always ë — 5-1345-2-356 +always ë ˜ 5-1345-26 +always ë ™ 5-1345-12 +always ë š 5-1345-12-3 +always ë › 5-1345-3 +always ë œ 5-1345-3-3 +always ë  5-1345-2356 +always ë ž 5-1345-13 +always ë Ÿ 5-1345-23 +always ë   5-1345-235 +always ë ¡ 5-1345-236 +always ë ¢ 5-1345-256 +always ë £ 5-1345-356 +always ë ¤ 5-156 +always ë ¥ 5-156-1 +always ë ¦ 5-156-1-1 +always ë § 5-156-1-3 +always ë ¨ 5-156-25 +always ë © 5-156-25-13 +always ë ª 5-156-25-356 +always ë « 5-156-35 +always ë ¬ 5-156-2 +always ë ­ 5-156-2-1 +always ë ® 5-156-2-26 +always ë ¯ 5-156-2-12 +always ë ° 5-156-2-3 +always ë ± 5-156-2-236 +always ë ² 5-156-2-256 +always ë ³ 5-156-2-356 +always ë ´ 5-156-26 +always ë µ 5-156-12 +always ë ¶ 5-156-12-3 +always ë · 5-156-3 +always ë ¸ 5-156-3-3 +always ë ¹ 5-156-2356 +always ë º 5-156-13 +always ë » 5-156-23 +always ë ¼ 5-156-235 +always ë ½ 5-156-236 +always ë ¾ 5-156-256 +always ë ¿ 5-156-356 +always ë¡€ 5-34 +always ë¡ 5-34-1 +always ë¡‚ 5-34-1-1 +always 롃 5-34-1-3 +always ë¡„ 5-34-25 +always ë¡… 5-34-25-13 +always 롆 5-34-25-356 +always 롇 5-34-35 +always 롈 5-34-2 +always 롉 5-34-2-1 +always ë¡Š 5-34-2-26 +always ë¡‹ 5-34-2-12 +always ë¡Œ 5-34-2-3 +always ë¡ 5-34-2-236 +always ë¡Ž 5-34-2-256 +always ë¡ 5-34-2-356 +always ë¡ 5-34-26 +always ë¡‘ 5-34-12 +always ë¡’ 5-34-12-3 +always ë¡“ 5-34-3 +always ë¡” 5-34-3-3 +always ë¡• 5-34-2356 +always ë¡– 5-34-13 +always ë¡— 5-34-23 +always 롘 5-34-235 +always ë¡™ 5-34-236 +always ë¡š 5-34-256 +always ë¡› 5-34-356 +always ë¡œ 5-136 +always ë¡ 5-136-1 +always ë¡ž 5-136-1-1 +always ë¡Ÿ 5-136-1-3 +always ë¡  5-136-25 +always ë¡¡ 5-136-25-13 +always ë¡¢ 5-136-25-356 +always ë¡£ 5-136-35 +always 롤 5-136-2 +always ë¡¥ 5-136-2-1 +always 롦 5-136-2-26 +always 롧 5-136-2-12 +always 롨 5-136-2-3 +always ë¡© 5-136-2-236 +always 롪 5-136-2-256 +always ë¡« 5-136-2-356 +always 롬 5-136-26 +always ë¡­ 5-136-12 +always ë¡® 5-136-12-3 +always 롯 5-136-3 +always ë¡° 5-136-3-3 +always 롱 5-136-2356 +always 롲 5-136-13 +always 롳 5-136-23 +always ë¡´ 5-136-235 +always 롵 5-136-236 +always 롶 5-136-256 +always ë¡· 5-136-356 +always 롸 5-1236 +always 롹 5-1236-1 +always 롺 5-1236-1-1 +always ë¡» 5-1236-1-3 +always 롼 5-1236-25 +always 롽 5-1236-25-13 +always 롾 5-1236-25-356 +always ë¡¿ 5-1236-35 +always 뢀 5-1236-2 +always ë¢ 5-1236-2-1 +always 뢂 5-1236-2-26 +always 뢃 5-1236-2-12 +always 뢄 5-1236-2-3 +always 뢅 5-1236-2-236 +always 뢆 5-1236-2-256 +always 뢇 5-1236-2-356 +always 뢈 5-1236-26 +always 뢉 5-1236-12 +always 뢊 5-1236-12-3 +always 뢋 5-1236-3 +always 뢌 5-1236-3-3 +always ë¢ 5-1236-2356 +always 뢎 5-1236-13 +always ë¢ 5-1236-23 +always ë¢ 5-1236-235 +always 뢑 5-1236-236 +always 뢒 5-1236-256 +always 뢓 5-1236-356 +always 뢔 5-1236-1235 +always 뢕 5-1236-1235-1 +always 뢖 5-1236-1235-1-1 +always 뢗 5-1236-1235-1-3 +always 뢘 5-1236-1235-25 +always 뢙 5-1236-1235-25-13 +always 뢚 5-1236-1235-25-356 +always 뢛 5-1236-1235-35 +always 뢜 5-1236-1235-2 +always ë¢ 5-1236-1235-2-1 +always 뢞 5-1236-1235-2-26 +always 뢟 5-1236-1235-2-12 +always 뢠 5-1236-1235-2-3 +always 뢡 5-1236-1235-2-236 +always 뢢 5-1236-1235-2-256 +always 뢣 5-1236-1235-2-356 +always 뢤 5-1236-1235-26 +always 뢥 5-1236-1235-12 +always 뢦 5-1236-1235-12-3 +always 뢧 5-1236-1235-3 +always 뢨 5-1236-1235-3-3 +always 뢩 5-1236-1235-2356 +always 뢪 5-1236-1235-13 +always 뢫 5-1236-1235-23 +always 뢬 5-1236-1235-235 +always 뢭 5-1236-1235-236 +always 뢮 5-1236-1235-256 +always 뢯 5-1236-1235-356 +always 뢰 5-13456 +always 뢱 5-13456-1 +always 뢲 5-13456-1-1 +always 뢳 5-13456-1-3 +always 뢴 5-13456-25 +always 뢵 5-13456-25-13 +always 뢶 5-13456-25-356 +always 뢷 5-13456-35 +always 뢸 5-13456-2 +always 뢹 5-13456-2-1 +always 뢺 5-13456-2-26 +always 뢻 5-13456-2-12 +always 뢼 5-13456-2-3 +always 뢽 5-13456-2-236 +always 뢾 5-13456-2-256 +always 뢿 5-13456-2-356 +always 룀 5-13456-26 +always ë£ 5-13456-12 +always 룂 5-13456-12-3 +always 룃 5-13456-3 +always 룄 5-13456-3-3 +always 룅 5-13456-2356 +always 룆 5-13456-13 +always 룇 5-13456-23 +always 룈 5-13456-235 +always 룉 5-13456-236 +always 룊 5-13456-256 +always 룋 5-13456-356 +always 료 5-346 +always ë£ 5-346-1 +always 룎 5-346-1-1 +always ë£ 5-346-1-3 +always ë£ 5-346-25 +always 룑 5-346-25-13 +always 룒 5-346-25-356 +always 룓 5-346-35 +always 룔 5-346-2 +always 룕 5-346-2-1 +always 룖 5-346-2-26 +always 룗 5-346-2-12 +always 룘 5-346-2-3 +always 룙 5-346-2-236 +always 룚 5-346-2-256 +always 룛 5-346-2-356 +always 룜 5-346-26 +always ë£ 5-346-12 +always 룞 5-346-12-3 +always 룟 5-346-3 +always 룠 5-346-3-3 +always 룡 5-346-2356 +always 룢 5-346-13 +always 룣 5-346-23 +always 룤 5-346-235 +always 룥 5-346-236 +always 룦 5-346-256 +always 룧 5-346-356 +always 루 5-134 +always 룩 5-134-1 +always 룪 5-134-1-1 +always 룫 5-134-1-3 +always 룬 5-134-25 +always 룭 5-134-25-13 +always 룮 5-134-25-356 +always 룯 5-134-35 +always 룰 5-134-2 +always 룱 5-134-2-1 +always 룲 5-134-2-26 +always 룳 5-134-2-12 +always 룴 5-134-2-3 +always 룵 5-134-2-236 +always 룶 5-134-2-256 +always 룷 5-134-2-356 +always 룸 5-134-26 +always 룹 5-134-12 +always 룺 5-134-12-3 +always 룻 5-134-3 +always 룼 5-134-3-3 +always 룽 5-134-2356 +always 룾 5-134-13 +always 룿 5-134-23 +always 뤀 5-134-235 +always ë¤ 5-134-236 +always 뤂 5-134-256 +always 뤃 5-134-356 +always 뤄 5-1234 +always 뤅 5-1234-1 +always 뤆 5-1234-1-1 +always 뤇 5-1234-1-3 +always 뤈 5-1234-25 +always 뤉 5-1234-25-13 +always 뤊 5-1234-25-356 +always 뤋 5-1234-35 +always 뤌 5-1234-2 +always ë¤ 5-1234-2-1 +always 뤎 5-1234-2-26 +always ë¤ 5-1234-2-12 +always ë¤ 5-1234-2-3 +always 뤑 5-1234-2-236 +always 뤒 5-1234-2-256 +always 뤓 5-1234-2-356 +always 뤔 5-1234-26 +always 뤕 5-1234-12 +always 뤖 5-1234-12-3 +always 뤗 5-1234-3 +always 뤘 5-1234-3-3 +always 뤙 5-1234-2356 +always 뤚 5-1234-13 +always 뤛 5-1234-23 +always 뤜 5-1234-235 +always ë¤ 5-1234-236 +always 뤞 5-1234-256 +always 뤟 5-1234-356 +always 뤠 5-1234-1235 +always 뤡 5-1234-1235-1 +always 뤢 5-1234-1235-1-1 +always 뤣 5-1234-1235-1-3 +always 뤤 5-1234-1235-25 +always 뤥 5-1234-1235-25-13 +always 뤦 5-1234-1235-25-356 +always 뤧 5-1234-1235-35 +always 뤨 5-1234-1235-2 +always 뤩 5-1234-1235-2-1 +always 뤪 5-1234-1235-2-26 +always 뤫 5-1234-1235-2-12 +always 뤬 5-1234-1235-2-3 +always 뤭 5-1234-1235-2-236 +always 뤮 5-1234-1235-2-256 +always 뤯 5-1234-1235-2-356 +always 뤰 5-1234-1235-26 +always 뤱 5-1234-1235-12 +always 뤲 5-1234-1235-12-3 +always 뤳 5-1234-1235-3 +always 뤴 5-1234-1235-3-3 +always 뤵 5-1234-1235-2356 +always 뤶 5-1234-1235-13 +always 뤷 5-1234-1235-23 +always 뤸 5-1234-1235-235 +always 뤹 5-1234-1235-236 +always 뤺 5-1234-1235-256 +always 뤻 5-1234-1235-356 +always 뤼 5-134-1235 +always 뤽 5-134-1235-1 +always 뤾 5-134-1235-1-1 +always 뤿 5-134-1235-1-3 +always 륀 5-134-1235-25 +always ë¥ 5-134-1235-25-13 +always 륂 5-134-1235-25-356 +always 륃 5-134-1235-35 +always 륄 5-134-1235-2 +always 륅 5-134-1235-2-1 +always 륆 5-134-1235-2-26 +always 륇 5-134-1235-2-12 +always 륈 5-134-1235-2-3 +always 륉 5-134-1235-2-236 +always 륊 5-134-1235-2-256 +always 륋 5-134-1235-2-356 +always 륌 5-134-1235-26 +always ë¥ 5-134-1235-12 +always 륎 5-134-1235-12-3 +always ë¥ 5-134-1235-3 +always ë¥ 5-134-1235-3-3 +always 륑 5-134-1235-2356 +always 륒 5-134-1235-13 +always 륓 5-134-1235-23 +always 륔 5-134-1235-235 +always 륕 5-134-1235-236 +always 륖 5-134-1235-256 +always 륗 5-134-1235-356 +always 류 5-146 +always 륙 5-146-1 +always 륚 5-146-1-1 +always 륛 5-146-1-3 +always 륜 5-146-25 +always ë¥ 5-146-25-13 +always 륞 5-146-25-356 +always 륟 5-146-35 +always 률 5-146-2 +always 륡 5-146-2-1 +always 륢 5-146-2-26 +always 륣 5-146-2-12 +always 륤 5-146-2-3 +always 륥 5-146-2-236 +always 륦 5-146-2-256 +always 륧 5-146-2-356 +always 륨 5-146-26 +always 륩 5-146-12 +always 륪 5-146-12-3 +always 륫 5-146-3 +always 륬 5-146-3-3 +always 륭 5-146-2356 +always 륮 5-146-13 +always 륯 5-146-23 +always 륰 5-146-235 +always 륱 5-146-236 +always 륲 5-146-256 +always 륳 5-146-356 +always 르 5-246 +always 륵 5-246-1 +always 륶 5-246-1-1 +always 륷 5-246-1-3 +always 른 5-246-25 +always 륹 5-246-25-13 +always 륺 5-246-25-356 +always 륻 5-246-35 +always 를 5-246-2 +always 륽 5-246-2-1 +always 륾 5-246-2-26 +always 륿 5-246-2-12 +always 릀 5-246-2-3 +always ë¦ 5-246-2-236 +always 릂 5-246-2-256 +always 릃 5-246-2-356 +always 름 5-246-26 +always 릅 5-246-12 +always 릆 5-246-12-3 +always 릇 5-246-3 +always 릈 5-246-3-3 +always 릉 5-246-2356 +always 릊 5-246-13 +always 릋 5-246-23 +always 릌 5-246-235 +always ë¦ 5-246-236 +always 릎 5-246-256 +always ë¦ 5-246-356 +always ë¦ 5-2456 +always 릑 5-2456-1 +always 릒 5-2456-1-1 +always 릓 5-2456-1-3 +always 릔 5-2456-25 +always 릕 5-2456-25-13 +always 릖 5-2456-25-356 +always 릗 5-2456-35 +always 릘 5-2456-2 +always 릙 5-2456-2-1 +always 릚 5-2456-2-26 +always 릛 5-2456-2-12 +always 릜 5-2456-2-3 +always ë¦ 5-2456-2-236 +always 릞 5-2456-2-256 +always 릟 5-2456-2-356 +always 릠 5-2456-26 +always 릡 5-2456-12 +always 릢 5-2456-12-3 +always 릣 5-2456-3 +always 릤 5-2456-3-3 +always 릥 5-2456-2356 +always 릦 5-2456-13 +always 릧 5-2456-23 +always 릨 5-2456-235 +always 릩 5-2456-236 +always 릪 5-2456-256 +always 릫 5-2456-356 +always 리 5-135 +always 릭 5-135-1 +always 릮 5-135-1-1 +always 릯 5-135-1-3 +always 린 5-135-25 +always 릱 5-135-25-13 +always 릲 5-135-25-356 +always 릳 5-135-35 +always 릴 5-135-2 +always 릵 5-135-2-1 +always 릶 5-135-2-26 +always 릷 5-135-2-12 +always 릸 5-135-2-3 +always 릹 5-135-2-236 +always 릺 5-135-2-256 +always 릻 5-135-2-356 +always 림 5-135-26 +always 립 5-135-12 +always 릾 5-135-12-3 +always 릿 5-135-3 +always 맀 5-135-3-3 +always ë§ 5-135-2356 +always 맂 5-135-13 +always 맃 5-135-23 +always 맄 5-135-235 +always 맅 5-135-236 +always 맆 5-135-256 +always 맇 5-135-356 +always 마 15-126 +always 막 15-126-1 +always 맊 15-126-1-1 +always 맋 15-126-1-3 +always 만 15-126-25 +always ë§ 15-126-25-13 +always 많 15-126-25-356 +always ë§ 15-126-35 +always ë§ 15-126-2 +always 맑 15-126-2-1 +always 맒 15-126-2-26 +always 맓 15-126-2-12 +always 맔 15-126-2-3 +always 맕 15-126-2-236 +always 맖 15-126-2-256 +always 맗 15-126-2-356 +always 맘 15-126-26 +always 맙 15-126-12 +always 맚 15-126-12-3 +always 맛 15-126-3 +always 맜 15-126-3-3 +always ë§ 15-126-2356 +always 맞 15-126-13 +always 맟 15-126-23 +always 맠 15-126-235 +always 맡 15-126-236 +always 맢 15-126-256 +always 맣 15-126-356 +always 매 15-1235 +always 맥 15-1235-1 +always 맦 15-1235-1-1 +always 맧 15-1235-1-3 +always 맨 15-1235-25 +always 맩 15-1235-25-13 +always 맪 15-1235-25-356 +always 맫 15-1235-35 +always 맬 15-1235-2 +always 맭 15-1235-2-1 +always 맮 15-1235-2-26 +always 맯 15-1235-2-12 +always 맰 15-1235-2-3 +always 맱 15-1235-2-236 +always 맲 15-1235-2-256 +always 맳 15-1235-2-356 +always 맴 15-1235-26 +always 맵 15-1235-12 +always 맶 15-1235-12-3 +always 맷 15-1235-3 +always 맸 15-1235-3-3 +always 맹 15-1235-2356 +always 맺 15-1235-13 +always 맻 15-1235-23 +always 맼 15-1235-235 +always 맽 15-1235-236 +always 맾 15-1235-256 +always 맿 15-1235-356 +always 먀 15-345 +always ë¨ 15-345-1 +always 먂 15-345-1-1 +always 먃 15-345-1-3 +always 먄 15-345-25 +always 먅 15-345-25-13 +always 먆 15-345-25-356 +always 먇 15-345-35 +always 먈 15-345-2 +always 먉 15-345-2-1 +always 먊 15-345-2-26 +always 먋 15-345-2-12 +always 먌 15-345-2-3 +always ë¨ 15-345-2-236 +always 먎 15-345-2-256 +always ë¨ 15-345-2-356 +always ë¨ 15-345-26 +always 먑 15-345-12 +always 먒 15-345-12-3 +always 먓 15-345-3 +always 먔 15-345-3-3 +always 먕 15-345-2356 +always 먖 15-345-13 +always 먗 15-345-23 +always 먘 15-345-235 +always 먙 15-345-236 +always 먚 15-345-256 +always 먛 15-345-356 +always 먜 15-345-1235 +always ë¨ 15-345-1235-1 +always 먞 15-345-1235-1-1 +always 먟 15-345-1235-1-3 +always 먠 15-345-1235-25 +always 먡 15-345-1235-25-13 +always 먢 15-345-1235-25-356 +always 먣 15-345-1235-35 +always 먤 15-345-1235-2 +always 먥 15-345-1235-2-1 +always 먦 15-345-1235-2-26 +always 먧 15-345-1235-2-12 +always 먨 15-345-1235-2-3 +always 먩 15-345-1235-2-236 +always 먪 15-345-1235-2-256 +always 먫 15-345-1235-2-356 +always 먬 15-345-1235-26 +always 먭 15-345-1235-12 +always 먮 15-345-1235-12-3 +always 먯 15-345-1235-3 +always 먰 15-345-1235-3-3 +always 먱 15-345-1235-2356 +always 먲 15-345-1235-13 +always 먳 15-345-1235-23 +always 먴 15-345-1235-235 +always 먵 15-345-1235-236 +always 먶 15-345-1235-256 +always 먷 15-345-1235-356 +always 머 15-234 +always 먹 15-234-1 +always 먺 15-234-1-1 +always 먻 15-234-1-3 +always 먼 15-234-25 +always 먽 15-234-25-13 +always 먾 15-234-25-356 +always 먿 15-234-35 +always ë©€ 15-234-2 +always ë© 15-234-2-1 +always ë©‚ 15-234-2-26 +always 멃 15-234-2-12 +always ë©„ 15-234-2-3 +always ë©… 15-234-2-236 +always 멆 15-234-2-256 +always 멇 15-234-2-356 +always 멈 15-234-26 +always 멉 15-234-12 +always ë©Š 15-234-12-3 +always ë©‹ 15-234-3 +always ë©Œ 15-234-3-3 +always ë© 15-234-2356 +always ë©Ž 15-234-13 +always ë© 15-234-23 +always ë© 15-234-235 +always ë©‘ 15-234-236 +always ë©’ 15-234-256 +always ë©“ 15-234-356 +always ë©” 15-1345 +always ë©• 15-1345-1 +always ë©– 15-1345-1-1 +always ë©— 15-1345-1-3 +always 멘 15-1345-25 +always ë©™ 15-1345-25-13 +always ë©š 15-1345-25-356 +always ë©› 15-1345-35 +always ë©œ 15-1345-2 +always ë© 15-1345-2-1 +always ë©ž 15-1345-2-26 +always ë©Ÿ 15-1345-2-12 +always ë©  15-1345-2-3 +always ë©¡ 15-1345-2-236 +always ë©¢ 15-1345-2-256 +always ë©£ 15-1345-2-356 +always 멤 15-1345-26 +always ë©¥ 15-1345-12 +always 멦 15-1345-12-3 +always 멧 15-1345-3 +always 멨 15-1345-3-3 +always ë©© 15-1345-2356 +always 멪 15-1345-13 +always ë©« 15-1345-23 +always 멬 15-1345-235 +always ë©­ 15-1345-236 +always ë©® 15-1345-256 +always 멯 15-1345-356 +always ë©° 15-156 +always 멱 15-156-1 +always 멲 15-156-1-1 +always 멳 15-156-1-3 +always ë©´ 15-156-25 +always 멵 15-156-25-13 +always 멶 15-156-25-356 +always ë©· 15-156-35 +always 멸 15-156-2 +always 멹 15-156-2-1 +always 멺 15-156-2-26 +always ë©» 15-156-2-12 +always 멼 15-156-2-3 +always 멽 15-156-2-236 +always 멾 15-156-2-256 +always ë©¿ 15-156-2-356 +always 몀 15-156-26 +always ëª 15-156-12 +always 몂 15-156-12-3 +always 몃 15-156-3 +always 몄 15-156-3-3 +always 명 15-156-2356 +always 몆 15-156-13 +always 몇 15-156-23 +always 몈 15-156-235 +always 몉 15-156-236 +always 몊 15-156-256 +always 몋 15-156-356 +always 몌 15-34 +always ëª 15-34-1 +always 몎 15-34-1-1 +always ëª 15-34-1-3 +always ëª 15-34-25 +always 몑 15-34-25-13 +always 몒 15-34-25-356 +always 몓 15-34-35 +always 몔 15-34-2 +always 몕 15-34-2-1 +always 몖 15-34-2-26 +always 몗 15-34-2-12 +always 몘 15-34-2-3 +always 몙 15-34-2-236 +always 몚 15-34-2-256 +always 몛 15-34-2-356 +always 몜 15-34-26 +always ëª 15-34-12 +always 몞 15-34-12-3 +always 몟 15-34-3 +always 몠 15-34-3-3 +always 몡 15-34-2356 +always 몢 15-34-13 +always 몣 15-34-23 +always 몤 15-34-235 +always 몥 15-34-236 +always 몦 15-34-256 +always 몧 15-34-356 +always 모 15-136 +always 목 15-136-1 +always 몪 15-136-1-1 +always 몫 15-136-1-3 +always 몬 15-136-25 +always 몭 15-136-25-13 +always 몮 15-136-25-356 +always 몯 15-136-35 +always 몰 15-136-2 +always 몱 15-136-2-1 +always 몲 15-136-2-26 +always 몳 15-136-2-12 +always 몴 15-136-2-3 +always 몵 15-136-2-236 +always 몶 15-136-2-256 +always 몷 15-136-2-356 +always 몸 15-136-26 +always 몹 15-136-12 +always 몺 15-136-12-3 +always 못 15-136-3 +always 몼 15-136-3-3 +always 몽 15-136-2356 +always 몾 15-136-13 +always 몿 15-136-23 +always ë«€ 15-136-235 +always ë« 15-136-236 +always ë«‚ 15-136-256 +always 뫃 15-136-356 +always ë«„ 15-1236 +always ë«… 15-1236-1 +always 뫆 15-1236-1-1 +always 뫇 15-1236-1-3 +always 뫈 15-1236-25 +always 뫉 15-1236-25-13 +always ë«Š 15-1236-25-356 +always ë«‹ 15-1236-35 +always ë«Œ 15-1236-2 +always ë« 15-1236-2-1 +always ë«Ž 15-1236-2-26 +always ë« 15-1236-2-12 +always ë« 15-1236-2-3 +always ë«‘ 15-1236-2-236 +always ë«’ 15-1236-2-256 +always ë«“ 15-1236-2-356 +always ë«” 15-1236-26 +always ë«• 15-1236-12 +always ë«– 15-1236-12-3 +always ë«— 15-1236-3 +always 뫘 15-1236-3-3 +always ë«™ 15-1236-2356 +always ë«š 15-1236-13 +always ë«› 15-1236-23 +always ë«œ 15-1236-235 +always ë« 15-1236-236 +always ë«ž 15-1236-256 +always ë«Ÿ 15-1236-356 +always ë«  15-1236-1235 +always ë«¡ 15-1236-1235-1 +always ë«¢ 15-1236-1235-1-1 +always ë«£ 15-1236-1235-1-3 +always 뫤 15-1236-1235-25 +always ë«¥ 15-1236-1235-25-13 +always 뫦 15-1236-1235-25-356 +always 뫧 15-1236-1235-35 +always 뫨 15-1236-1235-2 +always ë«© 15-1236-1235-2-1 +always 뫪 15-1236-1235-2-26 +always ë«« 15-1236-1235-2-12 +always 뫬 15-1236-1235-2-3 +always ë«­ 15-1236-1235-2-236 +always ë«® 15-1236-1235-2-256 +always 뫯 15-1236-1235-2-356 +always ë«° 15-1236-1235-26 +always 뫱 15-1236-1235-12 +always 뫲 15-1236-1235-12-3 +always 뫳 15-1236-1235-3 +always ë«´ 15-1236-1235-3-3 +always 뫵 15-1236-1235-2356 +always 뫶 15-1236-1235-13 +always ë«· 15-1236-1235-23 +always 뫸 15-1236-1235-235 +always 뫹 15-1236-1235-236 +always 뫺 15-1236-1235-256 +always ë«» 15-1236-1235-356 +always 뫼 15-13456 +always 뫽 15-13456-1 +always 뫾 15-13456-1-1 +always ë«¿ 15-13456-1-3 +always 묀 15-13456-25 +always ë¬ 15-13456-25-13 +always 묂 15-13456-25-356 +always 묃 15-13456-35 +always 묄 15-13456-2 +always 묅 15-13456-2-1 +always 묆 15-13456-2-26 +always 묇 15-13456-2-12 +always 묈 15-13456-2-3 +always 묉 15-13456-2-236 +always 묊 15-13456-2-256 +always 묋 15-13456-2-356 +always 묌 15-13456-26 +always ë¬ 15-13456-12 +always 묎 15-13456-12-3 +always ë¬ 15-13456-3 +always ë¬ 15-13456-3-3 +always 묑 15-13456-2356 +always 묒 15-13456-13 +always 묓 15-13456-23 +always 묔 15-13456-235 +always 묕 15-13456-236 +always 묖 15-13456-256 +always 묗 15-13456-356 +always 묘 15-346 +always 묙 15-346-1 +always 묚 15-346-1-1 +always 묛 15-346-1-3 +always 묜 15-346-25 +always ë¬ 15-346-25-13 +always 묞 15-346-25-356 +always 묟 15-346-35 +always 묠 15-346-2 +always 묡 15-346-2-1 +always 묢 15-346-2-26 +always 묣 15-346-2-12 +always 묤 15-346-2-3 +always 묥 15-346-2-236 +always 묦 15-346-2-256 +always 묧 15-346-2-356 +always 묨 15-346-26 +always 묩 15-346-12 +always 묪 15-346-12-3 +always 묫 15-346-3 +always 묬 15-346-3-3 +always 묭 15-346-2356 +always 묮 15-346-13 +always 묯 15-346-23 +always 묰 15-346-235 +always 묱 15-346-236 +always 묲 15-346-256 +always 묳 15-346-356 +always 무 15-134 +always 묵 15-134-1 +always 묶 15-134-1-1 +always 묷 15-134-1-3 +always 문 15-134-25 +always 묹 15-134-25-13 +always 묺 15-134-25-356 +always 묻 15-134-35 +always 물 15-134-2 +always 묽 15-134-2-1 +always 묾 15-134-2-26 +always 묿 15-134-2-12 +always ë­€ 15-134-2-3 +always ë­ 15-134-2-236 +always ë­‚ 15-134-2-256 +always ë­ƒ 15-134-2-356 +always ë­„ 15-134-26 +always ë­… 15-134-12 +always ë­† 15-134-12-3 +always ë­‡ 15-134-3 +always ë­ˆ 15-134-3-3 +always ë­‰ 15-134-2356 +always ë­Š 15-134-13 +always ë­‹ 15-134-23 +always ë­Œ 15-134-235 +always ë­ 15-134-236 +always ë­Ž 15-134-256 +always ë­ 15-134-356 +always ë­ 15-1234 +always ë­‘ 15-1234-1 +always ë­’ 15-1234-1-1 +always ë­“ 15-1234-1-3 +always ë­” 15-1234-25 +always ë­• 15-1234-25-13 +always ë­– 15-1234-25-356 +always ë­— 15-1234-35 +always ë­˜ 15-1234-2 +always ë­™ 15-1234-2-1 +always ë­š 15-1234-2-26 +always ë­› 15-1234-2-12 +always ë­œ 15-1234-2-3 +always ë­ 15-1234-2-236 +always ë­ž 15-1234-2-256 +always ë­Ÿ 15-1234-2-356 +always ë­  15-1234-26 +always ë­¡ 15-1234-12 +always ë­¢ 15-1234-12-3 +always ë­£ 15-1234-3 +always ë­¤ 15-1234-3-3 +always ë­¥ 15-1234-2356 +always ë­¦ 15-1234-13 +always ë­§ 15-1234-23 +always ë­¨ 15-1234-235 +always ë­© 15-1234-236 +always ë­ª 15-1234-256 +always ë­« 15-1234-356 +always ë­¬ 15-1234-1235 +always ë­­ 15-1234-1235-1 +always ë­® 15-1234-1235-1-1 +always ë­¯ 15-1234-1235-1-3 +always ë­° 15-1234-1235-25 +always ë­± 15-1234-1235-25-13 +always ë­² 15-1234-1235-25-356 +always ë­³ 15-1234-1235-35 +always ë­´ 15-1234-1235-2 +always ë­µ 15-1234-1235-2-1 +always ë­¶ 15-1234-1235-2-26 +always ë­· 15-1234-1235-2-12 +always ë­¸ 15-1234-1235-2-3 +always ë­¹ 15-1234-1235-2-236 +always ë­º 15-1234-1235-2-256 +always ë­» 15-1234-1235-2-356 +always ë­¼ 15-1234-1235-26 +always ë­½ 15-1234-1235-12 +always ë­¾ 15-1234-1235-12-3 +always ë­¿ 15-1234-1235-3 +always 뮀 15-1234-1235-3-3 +always ë® 15-1234-1235-2356 +always 뮂 15-1234-1235-13 +always 뮃 15-1234-1235-23 +always 뮄 15-1234-1235-235 +always ë®… 15-1234-1235-236 +always 뮆 15-1234-1235-256 +always 뮇 15-1234-1235-356 +always 뮈 15-134-1235 +always 뮉 15-134-1235-1 +always 뮊 15-134-1235-1-1 +always 뮋 15-134-1235-1-3 +always 뮌 15-134-1235-25 +always ë® 15-134-1235-25-13 +always 뮎 15-134-1235-25-356 +always ë® 15-134-1235-35 +always ë® 15-134-1235-2 +always 뮑 15-134-1235-2-1 +always ë®’ 15-134-1235-2-26 +always 뮓 15-134-1235-2-12 +always ë®” 15-134-1235-2-3 +always 뮕 15-134-1235-2-236 +always ë®– 15-134-1235-2-256 +always ë®— 15-134-1235-2-356 +always 뮘 15-134-1235-26 +always ë®™ 15-134-1235-12 +always 뮚 15-134-1235-12-3 +always ë®› 15-134-1235-3 +always 뮜 15-134-1235-3-3 +always ë® 15-134-1235-2356 +always 뮞 15-134-1235-13 +always 뮟 15-134-1235-23 +always ë®  15-134-1235-235 +always 뮡 15-134-1235-236 +always 뮢 15-134-1235-256 +always 뮣 15-134-1235-356 +always 뮤 15-146 +always 뮥 15-146-1 +always 뮦 15-146-1-1 +always 뮧 15-146-1-3 +always 뮨 15-146-25 +always 뮩 15-146-25-13 +always 뮪 15-146-25-356 +always 뮫 15-146-35 +always 뮬 15-146-2 +always ë®­ 15-146-2-1 +always ë®® 15-146-2-26 +always 뮯 15-146-2-12 +always ë®° 15-146-2-3 +always ë®± 15-146-2-236 +always 뮲 15-146-2-256 +always 뮳 15-146-2-356 +always ë®´ 15-146-26 +always 뮵 15-146-12 +always 뮶 15-146-12-3 +always ë®· 15-146-3 +always 뮸 15-146-3-3 +always 뮹 15-146-2356 +always 뮺 15-146-13 +always ë®» 15-146-23 +always 뮼 15-146-235 +always 뮽 15-146-236 +always 뮾 15-146-256 +always 뮿 15-146-356 +always 므 15-246 +always ë¯ 15-246-1 +always 믂 15-246-1-1 +always 믃 15-246-1-3 +always 믄 15-246-25 +always 믅 15-246-25-13 +always 믆 15-246-25-356 +always 믇 15-246-35 +always 믈 15-246-2 +always 믉 15-246-2-1 +always 믊 15-246-2-26 +always 믋 15-246-2-12 +always 믌 15-246-2-3 +always ë¯ 15-246-2-236 +always 믎 15-246-2-256 +always ë¯ 15-246-2-356 +always ë¯ 15-246-26 +always 믑 15-246-12 +always 믒 15-246-12-3 +always 믓 15-246-3 +always 믔 15-246-3-3 +always 믕 15-246-2356 +always 믖 15-246-13 +always 믗 15-246-23 +always 믘 15-246-235 +always 믙 15-246-236 +always 믚 15-246-256 +always 믛 15-246-356 +always 믜 15-2456 +always ë¯ 15-2456-1 +always 믞 15-2456-1-1 +always 믟 15-2456-1-3 +always 믠 15-2456-25 +always 믡 15-2456-25-13 +always 믢 15-2456-25-356 +always 믣 15-2456-35 +always 믤 15-2456-2 +always 믥 15-2456-2-1 +always 믦 15-2456-2-26 +always 믧 15-2456-2-12 +always 믨 15-2456-2-3 +always 믩 15-2456-2-236 +always 믪 15-2456-2-256 +always 믫 15-2456-2-356 +always 믬 15-2456-26 +always 믭 15-2456-12 +always 믮 15-2456-12-3 +always 믯 15-2456-3 +always 믰 15-2456-3-3 +always 믱 15-2456-2356 +always 믲 15-2456-13 +always 믳 15-2456-23 +always 믴 15-2456-235 +always 믵 15-2456-236 +always 믶 15-2456-256 +always 믷 15-2456-356 +always 미 15-135 +always 믹 15-135-1 +always 믺 15-135-1-1 +always 믻 15-135-1-3 +always 민 15-135-25 +always 믽 15-135-25-13 +always 믾 15-135-25-356 +always 믿 15-135-35 +always ë°€ 15-135-2 +always ë° 15-135-2-1 +always ë°‚ 15-135-2-26 +always ë°ƒ 15-135-2-12 +always ë°„ 15-135-2-3 +always ë°… 15-135-2-236 +always ë°† 15-135-2-256 +always ë°‡ 15-135-2-356 +always ë°ˆ 15-135-26 +always ë°‰ 15-135-12 +always ë°Š 15-135-12-3 +always ë°‹ 15-135-3 +always ë°Œ 15-135-3-3 +always ë° 15-135-2356 +always ë°Ž 15-135-13 +always ë° 15-135-23 +always ë° 15-135-235 +always ë°‘ 15-135-236 +always ë°’ 15-135-256 +always ë°“ 15-135-356 +always ë°” 45-126 +always ë°• 45-126-1 +always ë°– 45-126-1-1 +always ë°— 45-126-1-3 +always ë°˜ 45-126-25 +always ë°™ 45-126-25-13 +always ë°š 45-126-25-356 +always ë°› 45-126-35 +always ë°œ 45-126-2 +always ë° 45-126-2-1 +always ë°ž 45-126-2-26 +always ë°Ÿ 45-126-2-12 +always ë°  45-126-2-3 +always ë°¡ 45-126-2-236 +always ë°¢ 45-126-2-256 +always ë°£ 45-126-2-356 +always ë°¤ 45-126-26 +always ë°¥ 45-126-12 +always ë°¦ 45-126-12-3 +always ë°§ 45-126-3 +always ë°¨ 45-126-3-3 +always ë°© 45-126-2356 +always ë°ª 45-126-13 +always ë°« 45-126-23 +always ë°¬ 45-126-235 +always ë°­ 45-126-236 +always ë°® 45-126-256 +always ë°¯ 45-126-356 +always ë°° 45-1235 +always ë°± 45-1235-1 +always ë°² 45-1235-1-1 +always ë°³ 45-1235-1-3 +always ë°´ 45-1235-25 +always ë°µ 45-1235-25-13 +always ë°¶ 45-1235-25-356 +always ë°· 45-1235-35 +always ë°¸ 45-1235-2 +always ë°¹ 45-1235-2-1 +always ë°º 45-1235-2-26 +always ë°» 45-1235-2-12 +always ë°¼ 45-1235-2-3 +always ë°½ 45-1235-2-236 +always ë°¾ 45-1235-2-256 +always ë°¿ 45-1235-2-356 +always ë±€ 45-1235-26 +always ë± 45-1235-12 +always 뱂 45-1235-12-3 +always 뱃 45-1235-3 +always 뱄 45-1235-3-3 +always ë±… 45-1235-2356 +always 뱆 45-1235-13 +always 뱇 45-1235-23 +always 뱈 45-1235-235 +always 뱉 45-1235-236 +always 뱊 45-1235-256 +always 뱋 45-1235-356 +always 뱌 45-345 +always ë± 45-345-1 +always 뱎 45-345-1-1 +always ë± 45-345-1-3 +always ë± 45-345-25 +always 뱑 45-345-25-13 +always ë±’ 45-345-25-356 +always 뱓 45-345-35 +always ë±” 45-345-2 +always 뱕 45-345-2-1 +always ë±– 45-345-2-26 +always ë±— 45-345-2-12 +always 뱘 45-345-2-3 +always ë±™ 45-345-2-236 +always 뱚 45-345-2-256 +always ë±› 45-345-2-356 +always 뱜 45-345-26 +always ë± 45-345-12 +always 뱞 45-345-12-3 +always 뱟 45-345-3 +always ë±  45-345-3-3 +always 뱡 45-345-2356 +always ë±¢ 45-345-13 +always ë±£ 45-345-23 +always 뱤 45-345-235 +always ë±¥ 45-345-236 +always 뱦 45-345-256 +always 뱧 45-345-356 +always 뱨 45-345-1235 +always 뱩 45-345-1235-1 +always 뱪 45-345-1235-1-1 +always 뱫 45-345-1235-1-3 +always 뱬 45-345-1235-25 +always ë±­ 45-345-1235-25-13 +always ë±® 45-345-1235-25-356 +always 뱯 45-345-1235-35 +always ë±° 45-345-1235-2 +always ë±± 45-345-1235-2-1 +always ë±² 45-345-1235-2-26 +always ë±³ 45-345-1235-2-12 +always ë±´ 45-345-1235-2-3 +always ë±µ 45-345-1235-2-236 +always 뱶 45-345-1235-2-256 +always ë±· 45-345-1235-2-356 +always 뱸 45-345-1235-26 +always ë±¹ 45-345-1235-12 +always 뱺 45-345-1235-12-3 +always ë±» 45-345-1235-3 +always ë±¼ 45-345-1235-3-3 +always ë±½ 45-345-1235-2356 +always ë±¾ 45-345-1235-13 +always 뱿 45-345-1235-23 +always ë²€ 45-345-1235-235 +always ë² 45-345-1235-236 +always 벂 45-345-1235-256 +always 벃 45-345-1235-356 +always 버 45-234 +always ë²… 45-234-1 +always 벆 45-234-1-1 +always 벇 45-234-1-3 +always 번 45-234-25 +always 벉 45-234-25-13 +always 벊 45-234-25-356 +always 벋 45-234-35 +always 벌 45-234-2 +always ë² 45-234-2-1 +always 벎 45-234-2-26 +always ë² 45-234-2-12 +always ë² 45-234-2-3 +always 벑 45-234-2-236 +always ë²’ 45-234-2-256 +always 벓 45-234-2-356 +always ë²” 45-234-26 +always 법 45-234-12 +always ë²– 45-234-12-3 +always ë²— 45-234-3 +always 벘 45-234-3-3 +always ë²™ 45-234-2356 +always 벚 45-234-13 +always ë²› 45-234-23 +always 벜 45-234-235 +always ë² 45-234-236 +always 벞 45-234-256 +always 벟 45-234-356 +always ë²  45-1345 +always 벡 45-1345-1 +always ë²¢ 45-1345-1-1 +always ë²£ 45-1345-1-3 +always 벤 45-1345-25 +always ë²¥ 45-1345-25-13 +always 벦 45-1345-25-356 +always 벧 45-1345-35 +always 벨 45-1345-2 +always 벩 45-1345-2-1 +always 벪 45-1345-2-26 +always 벫 45-1345-2-12 +always 벬 45-1345-2-3 +always ë²­ 45-1345-2-236 +always ë²® 45-1345-2-256 +always 벯 45-1345-2-356 +always ë²° 45-1345-26 +always ë²± 45-1345-12 +always ë²² 45-1345-12-3 +always ë²³ 45-1345-3 +always ë²´ 45-1345-3-3 +always ë²µ 45-1345-2356 +always 벶 45-1345-13 +always ë²· 45-1345-23 +always 벸 45-1345-235 +always ë²¹ 45-1345-236 +always 벺 45-1345-256 +always ë²» 45-1345-356 +always ë²¼ 45-156 +always ë²½ 45-156-1 +always ë²¾ 45-156-1-1 +always 벿 45-156-1-3 +always ë³€ 45-156-25 +always ë³ 45-156-25-13 +always 볂 45-156-25-356 +always 볃 45-156-35 +always 별 45-156-2 +always ë³… 45-156-2-1 +always 볆 45-156-2-26 +always 볇 45-156-2-12 +always 볈 45-156-2-3 +always 볉 45-156-2-236 +always 볊 45-156-2-256 +always 볋 45-156-2-356 +always 볌 45-156-26 +always ë³ 45-156-12 +always 볎 45-156-12-3 +always ë³ 45-156-3 +always ë³ 45-156-3-3 +always 병 45-156-2356 +always ë³’ 45-156-13 +always 볓 45-156-23 +always ë³” 45-156-235 +always 볕 45-156-236 +always ë³– 45-156-256 +always ë³— 45-156-356 +always 볘 45-34 +always ë³™ 45-34-1 +always 볚 45-34-1-1 +always ë³› 45-34-1-3 +always 볜 45-34-25 +always ë³ 45-34-25-13 +always 볞 45-34-25-356 +always 볟 45-34-35 +always ë³  45-34-2 +always 볡 45-34-2-1 +always ë³¢ 45-34-2-26 +always ë³£ 45-34-2-12 +always 볤 45-34-2-3 +always ë³¥ 45-34-2-236 +always 볦 45-34-2-256 +always 볧 45-34-2-356 +always 볨 45-34-26 +always 볩 45-34-12 +always 볪 45-34-12-3 +always 볫 45-34-3 +always 볬 45-34-3-3 +always ë³­ 45-34-2356 +always ë³® 45-34-13 +always 볯 45-34-23 +always ë³° 45-34-235 +always ë³± 45-34-236 +always ë³² 45-34-256 +always ë³³ 45-34-356 +always ë³´ 45-136 +always ë³µ 45-136-1 +always 볶 45-136-1-1 +always ë³· 45-136-1-3 +always 본 45-136-25 +always ë³¹ 45-136-25-13 +always 볺 45-136-25-356 +always ë³» 45-136-35 +always ë³¼ 45-136-2 +always ë³½ 45-136-2-1 +always ë³¾ 45-136-2-26 +always 볿 45-136-2-12 +always ë´€ 45-136-2-3 +always ë´ 45-136-2-236 +always ë´‚ 45-136-2-256 +always ë´ƒ 45-136-2-356 +always ë´„ 45-136-26 +always ë´… 45-136-12 +always ë´† 45-136-12-3 +always ë´‡ 45-136-3 +always ë´ˆ 45-136-3-3 +always ë´‰ 45-136-2356 +always ë´Š 45-136-13 +always ë´‹ 45-136-23 +always ë´Œ 45-136-235 +always ë´ 45-136-236 +always ë´Ž 45-136-256 +always ë´ 45-136-356 +always ë´ 45-1236 +always ë´‘ 45-1236-1 +always ë´’ 45-1236-1-1 +always ë´“ 45-1236-1-3 +always ë´” 45-1236-25 +always ë´• 45-1236-25-13 +always ë´– 45-1236-25-356 +always ë´— 45-1236-35 +always ë´˜ 45-1236-2 +always ë´™ 45-1236-2-1 +always ë´š 45-1236-2-26 +always ë´› 45-1236-2-12 +always ë´œ 45-1236-2-3 +always ë´ 45-1236-2-236 +always ë´ž 45-1236-2-256 +always ë´Ÿ 45-1236-2-356 +always ë´  45-1236-26 +always ë´¡ 45-1236-12 +always ë´¢ 45-1236-12-3 +always ë´£ 45-1236-3 +always ë´¤ 45-1236-3-3 +always ë´¥ 45-1236-2356 +always ë´¦ 45-1236-13 +always ë´§ 45-1236-23 +always ë´¨ 45-1236-235 +always ë´© 45-1236-236 +always ë´ª 45-1236-256 +always ë´« 45-1236-356 +always ë´¬ 45-1236-1235 +always ë´­ 45-1236-1235-1 +always ë´® 45-1236-1235-1-1 +always ë´¯ 45-1236-1235-1-3 +always ë´° 45-1236-1235-25 +always ë´± 45-1236-1235-25-13 +always ë´² 45-1236-1235-25-356 +always ë´³ 45-1236-1235-35 +always ë´´ 45-1236-1235-2 +always ë´µ 45-1236-1235-2-1 +always ë´¶ 45-1236-1235-2-26 +always ë´· 45-1236-1235-2-12 +always ë´¸ 45-1236-1235-2-3 +always ë´¹ 45-1236-1235-2-236 +always ë´º 45-1236-1235-2-256 +always ë´» 45-1236-1235-2-356 +always ë´¼ 45-1236-1235-26 +always ë´½ 45-1236-1235-12 +always ë´¾ 45-1236-1235-12-3 +always ë´¿ 45-1236-1235-3 +always ëµ€ 45-1236-1235-3-3 +always ëµ 45-1236-1235-2356 +always 뵂 45-1236-1235-13 +always 뵃 45-1236-1235-23 +always 뵄 45-1236-1235-235 +always ëµ… 45-1236-1235-236 +always 뵆 45-1236-1235-256 +always 뵇 45-1236-1235-356 +always 뵈 45-13456 +always 뵉 45-13456-1 +always 뵊 45-13456-1-1 +always 뵋 45-13456-1-3 +always 뵌 45-13456-25 +always ëµ 45-13456-25-13 +always 뵎 45-13456-25-356 +always ëµ 45-13456-35 +always ëµ 45-13456-2 +always 뵑 45-13456-2-1 +always ëµ’ 45-13456-2-26 +always 뵓 45-13456-2-12 +always ëµ” 45-13456-2-3 +always 뵕 45-13456-2-236 +always ëµ– 45-13456-2-256 +always ëµ— 45-13456-2-356 +always 뵘 45-13456-26 +always ëµ™ 45-13456-12 +always 뵚 45-13456-12-3 +always ëµ› 45-13456-3 +always 뵜 45-13456-3-3 +always ëµ 45-13456-2356 +always 뵞 45-13456-13 +always 뵟 45-13456-23 +always ëµ  45-13456-235 +always 뵡 45-13456-236 +always ëµ¢ 45-13456-256 +always ëµ£ 45-13456-356 +always 뵤 45-346 +always ëµ¥ 45-346-1 +always 뵦 45-346-1-1 +always 뵧 45-346-1-3 +always 뵨 45-346-25 +always 뵩 45-346-25-13 +always 뵪 45-346-25-356 +always 뵫 45-346-35 +always 뵬 45-346-2 +always ëµ­ 45-346-2-1 +always ëµ® 45-346-2-26 +always 뵯 45-346-2-12 +always ëµ° 45-346-2-3 +always ëµ± 45-346-2-236 +always ëµ² 45-346-2-256 +always ëµ³ 45-346-2-356 +always ëµ´ 45-346-26 +always ëµµ 45-346-12 +always 뵶 45-346-12-3 +always ëµ· 45-346-3 +always 뵸 45-346-3-3 +always ëµ¹ 45-346-2356 +always 뵺 45-346-13 +always ëµ» 45-346-23 +always ëµ¼ 45-346-235 +always ëµ½ 45-346-236 +always ëµ¾ 45-346-256 +always 뵿 45-346-356 +always 부 45-134 +always ë¶ 45-134-1 +always 붂 45-134-1-1 +always 붃 45-134-1-3 +always 분 45-134-25 +always 붅 45-134-25-13 +always 붆 45-134-25-356 +always 붇 45-134-35 +always 불 45-134-2 +always 붉 45-134-2-1 +always 붊 45-134-2-26 +always 붋 45-134-2-12 +always 붌 45-134-2-3 +always ë¶ 45-134-2-236 +always 붎 45-134-2-256 +always ë¶ 45-134-2-356 +always ë¶ 45-134-26 +always 붑 45-134-12 +always 붒 45-134-12-3 +always 붓 45-134-3 +always 붔 45-134-3-3 +always 붕 45-134-2356 +always 붖 45-134-13 +always 붗 45-134-23 +always 붘 45-134-235 +always 붙 45-134-236 +always 붚 45-134-256 +always 붛 45-134-356 +always 붜 45-1234 +always ë¶ 45-1234-1 +always 붞 45-1234-1-1 +always 붟 45-1234-1-3 +always 붠 45-1234-25 +always 붡 45-1234-25-13 +always 붢 45-1234-25-356 +always 붣 45-1234-35 +always 붤 45-1234-2 +always 붥 45-1234-2-1 +always 붦 45-1234-2-26 +always 붧 45-1234-2-12 +always 붨 45-1234-2-3 +always 붩 45-1234-2-236 +always 붪 45-1234-2-256 +always 붫 45-1234-2-356 +always 붬 45-1234-26 +always 붭 45-1234-12 +always 붮 45-1234-12-3 +always 붯 45-1234-3 +always 붰 45-1234-3-3 +always 붱 45-1234-2356 +always 붲 45-1234-13 +always 붳 45-1234-23 +always 붴 45-1234-235 +always 붵 45-1234-236 +always 붶 45-1234-256 +always 붷 45-1234-356 +always 붸 45-1234-1235 +always 붹 45-1234-1235-1 +always 붺 45-1234-1235-1-1 +always 붻 45-1234-1235-1-3 +always 붼 45-1234-1235-25 +always 붽 45-1234-1235-25-13 +always 붾 45-1234-1235-25-356 +always 붿 45-1234-1235-35 +always ë·€ 45-1234-1235-2 +always ë· 45-1234-1235-2-1 +always ë·‚ 45-1234-1235-2-26 +always ë·ƒ 45-1234-1235-2-12 +always ë·„ 45-1234-1235-2-3 +always ë·… 45-1234-1235-2-236 +always ë·† 45-1234-1235-2-256 +always ë·‡ 45-1234-1235-2-356 +always ë·ˆ 45-1234-1235-26 +always ë·‰ 45-1234-1235-12 +always ë·Š 45-1234-1235-12-3 +always ë·‹ 45-1234-1235-3 +always ë·Œ 45-1234-1235-3-3 +always ë· 45-1234-1235-2356 +always ë·Ž 45-1234-1235-13 +always ë· 45-1234-1235-23 +always ë· 45-1234-1235-235 +always ë·‘ 45-1234-1235-236 +always ë·’ 45-1234-1235-256 +always ë·“ 45-1234-1235-356 +always ë·” 45-134-1235 +always ë·• 45-134-1235-1 +always ë·– 45-134-1235-1-1 +always ë·— 45-134-1235-1-3 +always ë·˜ 45-134-1235-25 +always ë·™ 45-134-1235-25-13 +always ë·š 45-134-1235-25-356 +always ë·› 45-134-1235-35 +always ë·œ 45-134-1235-2 +always ë· 45-134-1235-2-1 +always ë·ž 45-134-1235-2-26 +always ë·Ÿ 45-134-1235-2-12 +always ë·  45-134-1235-2-3 +always ë·¡ 45-134-1235-2-236 +always ë·¢ 45-134-1235-2-256 +always ë·£ 45-134-1235-2-356 +always ë·¤ 45-134-1235-26 +always ë·¥ 45-134-1235-12 +always ë·¦ 45-134-1235-12-3 +always ë·§ 45-134-1235-3 +always ë·¨ 45-134-1235-3-3 +always ë·© 45-134-1235-2356 +always ë·ª 45-134-1235-13 +always ë·« 45-134-1235-23 +always ë·¬ 45-134-1235-235 +always ë·­ 45-134-1235-236 +always ë·® 45-134-1235-256 +always ë·¯ 45-134-1235-356 +always ë·° 45-146 +always ë·± 45-146-1 +always ë·² 45-146-1-1 +always ë·³ 45-146-1-3 +always ë·´ 45-146-25 +always ë·µ 45-146-25-13 +always ë·¶ 45-146-25-356 +always ë·· 45-146-35 +always ë·¸ 45-146-2 +always ë·¹ 45-146-2-1 +always ë·º 45-146-2-26 +always ë·» 45-146-2-12 +always ë·¼ 45-146-2-3 +always ë·½ 45-146-2-236 +always ë·¾ 45-146-2-256 +always ë·¿ 45-146-2-356 +always 븀 45-146-26 +always ë¸ 45-146-12 +always 븂 45-146-12-3 +always 븃 45-146-3 +always 븄 45-146-3-3 +always 븅 45-146-2356 +always 븆 45-146-13 +always 븇 45-146-23 +always 븈 45-146-235 +always 븉 45-146-236 +always 븊 45-146-256 +always 븋 45-146-356 +always 브 45-246 +always ë¸ 45-246-1 +always 븎 45-246-1-1 +always ë¸ 45-246-1-3 +always ë¸ 45-246-25 +always 븑 45-246-25-13 +always 븒 45-246-25-356 +always 븓 45-246-35 +always 블 45-246-2 +always 븕 45-246-2-1 +always 븖 45-246-2-26 +always 븗 45-246-2-12 +always 븘 45-246-2-3 +always 븙 45-246-2-236 +always 븚 45-246-2-256 +always 븛 45-246-2-356 +always 븜 45-246-26 +always ë¸ 45-246-12 +always 븞 45-246-12-3 +always 븟 45-246-3 +always 븠 45-246-3-3 +always 븡 45-246-2356 +always 븢 45-246-13 +always 븣 45-246-23 +always 븤 45-246-235 +always 븥 45-246-236 +always 븦 45-246-256 +always 븧 45-246-356 +always 븨 45-2456 +always 븩 45-2456-1 +always 븪 45-2456-1-1 +always 븫 45-2456-1-3 +always 븬 45-2456-25 +always 븭 45-2456-25-13 +always 븮 45-2456-25-356 +always 븯 45-2456-35 +always 븰 45-2456-2 +always 븱 45-2456-2-1 +always 븲 45-2456-2-26 +always 븳 45-2456-2-12 +always 븴 45-2456-2-3 +always 븵 45-2456-2-236 +always 븶 45-2456-2-256 +always 븷 45-2456-2-356 +always 븸 45-2456-26 +always 븹 45-2456-12 +always 븺 45-2456-12-3 +always 븻 45-2456-3 +always 븼 45-2456-3-3 +always 븽 45-2456-2356 +always 븾 45-2456-13 +always 븿 45-2456-23 +always ë¹€ 45-2456-235 +always ë¹ 45-2456-236 +always 빂 45-2456-256 +always 빃 45-2456-356 +always 비 45-135 +always ë¹… 45-135-1 +always 빆 45-135-1-1 +always 빇 45-135-1-3 +always 빈 45-135-25 +always 빉 45-135-25-13 +always 빊 45-135-25-356 +always 빋 45-135-35 +always 빌 45-135-2 +always ë¹ 45-135-2-1 +always 빎 45-135-2-26 +always ë¹ 45-135-2-12 +always ë¹ 45-135-2-3 +always 빑 45-135-2-236 +always ë¹’ 45-135-2-256 +always 빓 45-135-2-356 +always ë¹” 45-135-26 +always 빕 45-135-12 +always ë¹– 45-135-12-3 +always ë¹— 45-135-3 +always 빘 45-135-3-3 +always ë¹™ 45-135-2356 +always 빚 45-135-13 +always ë¹› 45-135-23 +always 빜 45-135-235 +always ë¹ 45-135-236 +always 빞 45-135-256 +always 빟 45-135-356 +always ë¹  45-45-126 +always 빡 45-45-126-1 +always ë¹¢ 45-45-126-1-1 +always ë¹£ 45-45-126-1-3 +always 빤 45-45-126-25 +always ë¹¥ 45-45-126-25-13 +always 빦 45-45-126-25-356 +always 빧 45-45-126-35 +always 빨 45-45-126-2 +always 빩 45-45-126-2-1 +always 빪 45-45-126-2-26 +always 빫 45-45-126-2-12 +always 빬 45-45-126-2-3 +always ë¹­ 45-45-126-2-236 +always ë¹® 45-45-126-2-256 +always 빯 45-45-126-2-356 +always ë¹° 45-45-126-26 +always ë¹± 45-45-126-12 +always ë¹² 45-45-126-12-3 +always ë¹³ 45-45-126-3 +always ë¹´ 45-45-126-3-3 +always ë¹µ 45-45-126-2356 +always 빶 45-45-126-13 +always ë¹· 45-45-126-23 +always 빸 45-45-126-235 +always ë¹¹ 45-45-126-236 +always 빺 45-45-126-256 +always ë¹» 45-45-126-356 +always ë¹¼ 45-45-1235 +always ë¹½ 45-45-1235-1 +always ë¹¾ 45-45-1235-1-1 +always 빿 45-45-1235-1-3 +always 뺀 45-45-1235-25 +always ëº 45-45-1235-25-13 +always 뺂 45-45-1235-25-356 +always 뺃 45-45-1235-35 +always 뺄 45-45-1235-2 +always 뺅 45-45-1235-2-1 +always 뺆 45-45-1235-2-26 +always 뺇 45-45-1235-2-12 +always 뺈 45-45-1235-2-3 +always 뺉 45-45-1235-2-236 +always 뺊 45-45-1235-2-256 +always 뺋 45-45-1235-2-356 +always 뺌 45-45-1235-26 +always ëº 45-45-1235-12 +always 뺎 45-45-1235-12-3 +always ëº 45-45-1235-3 +always ëº 45-45-1235-3-3 +always 뺑 45-45-1235-2356 +always 뺒 45-45-1235-13 +always 뺓 45-45-1235-23 +always 뺔 45-45-1235-235 +always 뺕 45-45-1235-236 +always 뺖 45-45-1235-256 +always 뺗 45-45-1235-356 +always 뺘 45-45-345 +always 뺙 45-45-345-1 +always 뺚 45-45-345-1-1 +always 뺛 45-45-345-1-3 +always 뺜 45-45-345-25 +always ëº 45-45-345-25-13 +always 뺞 45-45-345-25-356 +always 뺟 45-45-345-35 +always 뺠 45-45-345-2 +always 뺡 45-45-345-2-1 +always 뺢 45-45-345-2-26 +always 뺣 45-45-345-2-12 +always 뺤 45-45-345-2-3 +always 뺥 45-45-345-2-236 +always 뺦 45-45-345-2-256 +always 뺧 45-45-345-2-356 +always 뺨 45-45-345-26 +always 뺩 45-45-345-12 +always 뺪 45-45-345-12-3 +always 뺫 45-45-345-3 +always 뺬 45-45-345-3-3 +always 뺭 45-45-345-2356 +always 뺮 45-45-345-13 +always 뺯 45-45-345-23 +always 뺰 45-45-345-235 +always 뺱 45-45-345-236 +always 뺲 45-45-345-256 +always 뺳 45-45-345-356 +always 뺴 45-45-345-1235 +always 뺵 45-45-345-1235-1 +always 뺶 45-45-345-1235-1-1 +always 뺷 45-45-345-1235-1-3 +always 뺸 45-45-345-1235-25 +always 뺹 45-45-345-1235-25-13 +always 뺺 45-45-345-1235-25-356 +always 뺻 45-45-345-1235-35 +always 뺼 45-45-345-1235-2 +always 뺽 45-45-345-1235-2-1 +always 뺾 45-45-345-1235-2-26 +always 뺿 45-45-345-1235-2-12 +always 뻀 45-45-345-1235-2-3 +always ë» 45-45-345-1235-2-236 +always 뻂 45-45-345-1235-2-256 +always 뻃 45-45-345-1235-2-356 +always 뻄 45-45-345-1235-26 +always ë»… 45-45-345-1235-12 +always 뻆 45-45-345-1235-12-3 +always 뻇 45-45-345-1235-3 +always 뻈 45-45-345-1235-3-3 +always 뻉 45-45-345-1235-2356 +always 뻊 45-45-345-1235-13 +always 뻋 45-45-345-1235-23 +always 뻌 45-45-345-1235-235 +always ë» 45-45-345-1235-236 +always 뻎 45-45-345-1235-256 +always ë» 45-45-345-1235-356 +always ë» 45-45-234 +always 뻑 45-45-234-1 +always ë»’ 45-45-234-1-1 +always 뻓 45-45-234-1-3 +always ë»” 45-45-234-25 +always 뻕 45-45-234-25-13 +always ë»– 45-45-234-25-356 +always ë»— 45-45-234-35 +always 뻘 45-45-234-2 +always ë»™ 45-45-234-2-1 +always 뻚 45-45-234-2-26 +always ë»› 45-45-234-2-12 +always 뻜 45-45-234-2-3 +always ë» 45-45-234-2-236 +always 뻞 45-45-234-2-256 +always 뻟 45-45-234-2-356 +always ë»  45-45-234-26 +always 뻡 45-45-234-12 +always 뻢 45-45-234-12-3 +always 뻣 45-45-234-3 +always 뻤 45-45-234-3-3 +always 뻥 45-45-234-2356 +always 뻦 45-45-234-13 +always 뻧 45-45-234-23 +always 뻨 45-45-234-235 +always 뻩 45-45-234-236 +always 뻪 45-45-234-256 +always 뻫 45-45-234-356 +always 뻬 45-45-1345 +always ë»­ 45-45-1345-1 +always ë»® 45-45-1345-1-1 +always 뻯 45-45-1345-1-3 +always ë»° 45-45-1345-25 +always ë»± 45-45-1345-25-13 +always 뻲 45-45-1345-25-356 +always 뻳 45-45-1345-35 +always ë»´ 45-45-1345-2 +always 뻵 45-45-1345-2-1 +always 뻶 45-45-1345-2-26 +always ë»· 45-45-1345-2-12 +always 뻸 45-45-1345-2-3 +always 뻹 45-45-1345-2-236 +always 뻺 45-45-1345-2-256 +always ë»» 45-45-1345-2-356 +always 뻼 45-45-1345-26 +always 뻽 45-45-1345-12 +always 뻾 45-45-1345-12-3 +always 뻿 45-45-1345-3 +always ë¼€ 45-45-1345-3-3 +always ë¼ 45-45-1345-2356 +always 뼂 45-45-1345-13 +always 뼃 45-45-1345-23 +always 뼄 45-45-1345-235 +always ë¼… 45-45-1345-236 +always 뼆 45-45-1345-256 +always 뼇 45-45-1345-356 +always 뼈 45-45-156 +always 뼉 45-45-156-1 +always 뼊 45-45-156-1-1 +always 뼋 45-45-156-1-3 +always 뼌 45-45-156-25 +always ë¼ 45-45-156-25-13 +always 뼎 45-45-156-25-356 +always ë¼ 45-45-156-35 +always ë¼ 45-45-156-2 +always 뼑 45-45-156-2-1 +always ë¼’ 45-45-156-2-26 +always 뼓 45-45-156-2-12 +always ë¼” 45-45-156-2-3 +always 뼕 45-45-156-2-236 +always ë¼– 45-45-156-2-256 +always ë¼— 45-45-156-2-356 +always 뼘 45-45-156-26 +always ë¼™ 45-45-156-12 +always 뼚 45-45-156-12-3 +always ë¼› 45-45-156-3 +always 뼜 45-45-156-3-3 +always ë¼ 45-45-156-2356 +always 뼞 45-45-156-13 +always 뼟 45-45-156-23 +always ë¼  45-45-156-235 +always 뼡 45-45-156-236 +always ë¼¢ 45-45-156-256 +always ë¼£ 45-45-156-356 +always 뼤 45-45-34 +always ë¼¥ 45-45-34-1 +always 뼦 45-45-34-1-1 +always 뼧 45-45-34-1-3 +always 뼨 45-45-34-25 +always 뼩 45-45-34-25-13 +always 뼪 45-45-34-25-356 +always 뼫 45-45-34-35 +always 뼬 45-45-34-2 +always ë¼­ 45-45-34-2-1 +always ë¼® 45-45-34-2-26 +always 뼯 45-45-34-2-12 +always ë¼° 45-45-34-2-3 +always ë¼± 45-45-34-2-236 +always ë¼² 45-45-34-2-256 +always ë¼³ 45-45-34-2-356 +always ë¼´ 45-45-34-26 +always ë¼µ 45-45-34-12 +always 뼶 45-45-34-12-3 +always ë¼· 45-45-34-3 +always 뼸 45-45-34-3-3 +always ë¼¹ 45-45-34-2356 +always 뼺 45-45-34-13 +always ë¼» 45-45-34-23 +always ë¼¼ 45-45-34-235 +always ë¼½ 45-45-34-236 +always ë¼¾ 45-45-34-256 +always 뼿 45-45-34-356 +always ë½€ 45-45-136 +always ë½ 45-45-136-1 +always 뽂 45-45-136-1-1 +always 뽃 45-45-136-1-3 +always 뽄 45-45-136-25 +always ë½… 45-45-136-25-13 +always 뽆 45-45-136-25-356 +always 뽇 45-45-136-35 +always 뽈 45-45-136-2 +always 뽉 45-45-136-2-1 +always 뽊 45-45-136-2-26 +always 뽋 45-45-136-2-12 +always 뽌 45-45-136-2-3 +always ë½ 45-45-136-2-236 +always 뽎 45-45-136-2-256 +always ë½ 45-45-136-2-356 +always ë½ 45-45-136-26 +always 뽑 45-45-136-12 +always ë½’ 45-45-136-12-3 +always 뽓 45-45-136-3 +always ë½” 45-45-136-3-3 +always 뽕 45-45-136-2356 +always ë½– 45-45-136-13 +always ë½— 45-45-136-23 +always 뽘 45-45-136-235 +always ë½™ 45-45-136-236 +always 뽚 45-45-136-256 +always ë½› 45-45-136-356 +always 뽜 45-45-1236 +always ë½ 45-45-1236-1 +always 뽞 45-45-1236-1-1 +always 뽟 45-45-1236-1-3 +always ë½  45-45-1236-25 +always 뽡 45-45-1236-25-13 +always ë½¢ 45-45-1236-25-356 +always ë½£ 45-45-1236-35 +always 뽤 45-45-1236-2 +always ë½¥ 45-45-1236-2-1 +always 뽦 45-45-1236-2-26 +always 뽧 45-45-1236-2-12 +always 뽨 45-45-1236-2-3 +always 뽩 45-45-1236-2-236 +always 뽪 45-45-1236-2-256 +always 뽫 45-45-1236-2-356 +always 뽬 45-45-1236-26 +always ë½­ 45-45-1236-12 +always ë½® 45-45-1236-12-3 +always 뽯 45-45-1236-3 +always ë½° 45-45-1236-3-3 +always ë½± 45-45-1236-2356 +always ë½² 45-45-1236-13 +always ë½³ 45-45-1236-23 +always ë½´ 45-45-1236-235 +always ë½µ 45-45-1236-236 +always 뽶 45-45-1236-256 +always ë½· 45-45-1236-356 +always 뽸 45-45-1236-1235 +always ë½¹ 45-45-1236-1235-1 +always 뽺 45-45-1236-1235-1-1 +always ë½» 45-45-1236-1235-1-3 +always ë½¼ 45-45-1236-1235-25 +always ë½½ 45-45-1236-1235-25-13 +always ë½¾ 45-45-1236-1235-25-356 +always 뽿 45-45-1236-1235-35 +always ë¾€ 45-45-1236-1235-2 +always ë¾ 45-45-1236-1235-2-1 +always 뾂 45-45-1236-1235-2-26 +always 뾃 45-45-1236-1235-2-12 +always 뾄 45-45-1236-1235-2-3 +always ë¾… 45-45-1236-1235-2-236 +always 뾆 45-45-1236-1235-2-256 +always 뾇 45-45-1236-1235-2-356 +always 뾈 45-45-1236-1235-26 +always 뾉 45-45-1236-1235-12 +always 뾊 45-45-1236-1235-12-3 +always 뾋 45-45-1236-1235-3 +always 뾌 45-45-1236-1235-3-3 +always ë¾ 45-45-1236-1235-2356 +always 뾎 45-45-1236-1235-13 +always ë¾ 45-45-1236-1235-23 +always ë¾ 45-45-1236-1235-235 +always 뾑 45-45-1236-1235-236 +always ë¾’ 45-45-1236-1235-256 +always 뾓 45-45-1236-1235-356 +always ë¾” 45-45-13456 +always 뾕 45-45-13456-1 +always ë¾– 45-45-13456-1-1 +always ë¾— 45-45-13456-1-3 +always 뾘 45-45-13456-25 +always ë¾™ 45-45-13456-25-13 +always 뾚 45-45-13456-25-356 +always ë¾› 45-45-13456-35 +always 뾜 45-45-13456-2 +always ë¾ 45-45-13456-2-1 +always 뾞 45-45-13456-2-26 +always 뾟 45-45-13456-2-12 +always ë¾  45-45-13456-2-3 +always 뾡 45-45-13456-2-236 +always ë¾¢ 45-45-13456-2-256 +always ë¾£ 45-45-13456-2-356 +always 뾤 45-45-13456-26 +always ë¾¥ 45-45-13456-12 +always 뾦 45-45-13456-12-3 +always 뾧 45-45-13456-3 +always 뾨 45-45-13456-3-3 +always 뾩 45-45-13456-2356 +always 뾪 45-45-13456-13 +always 뾫 45-45-13456-23 +always 뾬 45-45-13456-235 +always ë¾­ 45-45-13456-236 +always ë¾® 45-45-13456-256 +always 뾯 45-45-13456-356 +always ë¾° 45-45-346 +always ë¾± 45-45-346-1 +always ë¾² 45-45-346-1-1 +always ë¾³ 45-45-346-1-3 +always ë¾´ 45-45-346-25 +always ë¾µ 45-45-346-25-13 +always 뾶 45-45-346-25-356 +always ë¾· 45-45-346-35 +always 뾸 45-45-346-2 +always ë¾¹ 45-45-346-2-1 +always 뾺 45-45-346-2-26 +always ë¾» 45-45-346-2-12 +always ë¾¼ 45-45-346-2-3 +always ë¾½ 45-45-346-2-236 +always ë¾¾ 45-45-346-2-256 +always 뾿 45-45-346-2-356 +always ë¿€ 45-45-346-26 +always ë¿ 45-45-346-12 +always ë¿‚ 45-45-346-12-3 +always 뿃 45-45-346-3 +always ë¿„ 45-45-346-3-3 +always ë¿… 45-45-346-2356 +always 뿆 45-45-346-13 +always 뿇 45-45-346-23 +always 뿈 45-45-346-235 +always 뿉 45-45-346-236 +always ë¿Š 45-45-346-256 +always ë¿‹ 45-45-346-356 +always ë¿Œ 45-45-134 +always ë¿ 45-45-134-1 +always ë¿Ž 45-45-134-1-1 +always ë¿ 45-45-134-1-3 +always ë¿ 45-45-134-25 +always ë¿‘ 45-45-134-25-13 +always ë¿’ 45-45-134-25-356 +always ë¿“ 45-45-134-35 +always ë¿” 45-45-134-2 +always ë¿• 45-45-134-2-1 +always ë¿– 45-45-134-2-26 +always ë¿— 45-45-134-2-12 +always 뿘 45-45-134-2-3 +always ë¿™ 45-45-134-2-236 +always ë¿š 45-45-134-2-256 +always ë¿› 45-45-134-2-356 +always ë¿œ 45-45-134-26 +always ë¿ 45-45-134-12 +always ë¿ž 45-45-134-12-3 +always ë¿Ÿ 45-45-134-3 +always ë¿  45-45-134-3-3 +always ë¿¡ 45-45-134-2356 +always ë¿¢ 45-45-134-13 +always ë¿£ 45-45-134-23 +always 뿤 45-45-134-235 +always ë¿¥ 45-45-134-236 +always 뿦 45-45-134-256 +always 뿧 45-45-134-356 +always 뿨 45-45-1234 +always ë¿© 45-45-1234-1 +always 뿪 45-45-1234-1-1 +always ë¿« 45-45-1234-1-3 +always 뿬 45-45-1234-25 +always ë¿­ 45-45-1234-25-13 +always ë¿® 45-45-1234-25-356 +always 뿯 45-45-1234-35 +always ë¿° 45-45-1234-2 +always 뿱 45-45-1234-2-1 +always 뿲 45-45-1234-2-26 +always 뿳 45-45-1234-2-12 +always ë¿´ 45-45-1234-2-3 +always 뿵 45-45-1234-2-236 +always 뿶 45-45-1234-2-256 +always ë¿· 45-45-1234-2-356 +always 뿸 45-45-1234-26 +always 뿹 45-45-1234-12 +always 뿺 45-45-1234-12-3 +always ë¿» 45-45-1234-3 +always 뿼 45-45-1234-3-3 +always 뿽 45-45-1234-2356 +always 뿾 45-45-1234-13 +always ë¿¿ 45-45-1234-23 +always 쀀 45-45-1234-235 +always ì€ 45-45-1234-236 +always 쀂 45-45-1234-256 +always 쀃 45-45-1234-356 +always 쀄 45-45-1234-1235 +always 쀅 45-45-1234-1235-1 +always 쀆 45-45-1234-1235-1-1 +always 쀇 45-45-1234-1235-1-3 +always 쀈 45-45-1234-1235-25 +always 쀉 45-45-1234-1235-25-13 +always 쀊 45-45-1234-1235-25-356 +always 쀋 45-45-1234-1235-35 +always 쀌 45-45-1234-1235-2 +always ì€ 45-45-1234-1235-2-1 +always 쀎 45-45-1234-1235-2-26 +always ì€ 45-45-1234-1235-2-12 +always ì€ 45-45-1234-1235-2-3 +always 쀑 45-45-1234-1235-2-236 +always 쀒 45-45-1234-1235-2-256 +always 쀓 45-45-1234-1235-2-356 +always 쀔 45-45-1234-1235-26 +always 쀕 45-45-1234-1235-12 +always 쀖 45-45-1234-1235-12-3 +always 쀗 45-45-1234-1235-3 +always 쀘 45-45-1234-1235-3-3 +always 쀙 45-45-1234-1235-2356 +always 쀚 45-45-1234-1235-13 +always 쀛 45-45-1234-1235-23 +always 쀜 45-45-1234-1235-235 +always ì€ 45-45-1234-1235-236 +always 쀞 45-45-1234-1235-256 +always 쀟 45-45-1234-1235-356 +always 쀠 45-45-134-1235 +always 쀡 45-45-134-1235-1 +always 쀢 45-45-134-1235-1-1 +always 쀣 45-45-134-1235-1-3 +always 쀤 45-45-134-1235-25 +always 쀥 45-45-134-1235-25-13 +always 쀦 45-45-134-1235-25-356 +always 쀧 45-45-134-1235-35 +always 쀨 45-45-134-1235-2 +always 쀩 45-45-134-1235-2-1 +always 쀪 45-45-134-1235-2-26 +always 쀫 45-45-134-1235-2-12 +always 쀬 45-45-134-1235-2-3 +always 쀭 45-45-134-1235-2-236 +always 쀮 45-45-134-1235-2-256 +always 쀯 45-45-134-1235-2-356 +always 쀰 45-45-134-1235-26 +always 쀱 45-45-134-1235-12 +always 쀲 45-45-134-1235-12-3 +always 쀳 45-45-134-1235-3 +always 쀴 45-45-134-1235-3-3 +always 쀵 45-45-134-1235-2356 +always 쀶 45-45-134-1235-13 +always 쀷 45-45-134-1235-23 +always 쀸 45-45-134-1235-235 +always 쀹 45-45-134-1235-236 +always 쀺 45-45-134-1235-256 +always 쀻 45-45-134-1235-356 +always 쀼 45-45-146 +always 쀽 45-45-146-1 +always 쀾 45-45-146-1-1 +always 쀿 45-45-146-1-3 +always ì€ 45-45-146-25 +always ì 45-45-146-25-13 +always ì‚ 45-45-146-25-356 +always ìƒ 45-45-146-35 +always ì„ 45-45-146-2 +always ì… 45-45-146-2-1 +always ì† 45-45-146-2-26 +always ì‡ 45-45-146-2-12 +always ìˆ 45-45-146-2-3 +always ì‰ 45-45-146-2-236 +always ìŠ 45-45-146-2-256 +always ì‹ 45-45-146-2-356 +always ìŒ 45-45-146-26 +always ì 45-45-146-12 +always ìŽ 45-45-146-12-3 +always ì 45-45-146-3 +always ì 45-45-146-3-3 +always ì‘ 45-45-146-2356 +always ì’ 45-45-146-13 +always ì“ 45-45-146-23 +always ì” 45-45-146-235 +always ì• 45-45-146-236 +always ì– 45-45-146-256 +always ì— 45-45-146-356 +always ì˜ 45-45-246 +always ì™ 45-45-246-1 +always ìš 45-45-246-1-1 +always ì› 45-45-246-1-3 +always ìœ 45-45-246-25 +always ì 45-45-246-25-13 +always ìž 45-45-246-25-356 +always ìŸ 45-45-246-35 +always ì  45-45-246-2 +always ì¡ 45-45-246-2-1 +always ì¢ 45-45-246-2-26 +always ì£ 45-45-246-2-12 +always ì¤ 45-45-246-2-3 +always ì¥ 45-45-246-2-236 +always ì¦ 45-45-246-2-256 +always ì§ 45-45-246-2-356 +always ì¨ 45-45-246-26 +always ì© 45-45-246-12 +always ìª 45-45-246-12-3 +always ì« 45-45-246-3 +always ì¬ 45-45-246-3-3 +always ì­ 45-45-246-2356 +always ì® 45-45-246-13 +always ì¯ 45-45-246-23 +always ì° 45-45-246-235 +always ì± 45-45-246-236 +always ì² 45-45-246-256 +always ì³ 45-45-246-356 +always ì´ 45-45-2456 +always ìµ 45-45-2456-1 +always ì¶ 45-45-2456-1-1 +always ì· 45-45-2456-1-3 +always ì¸ 45-45-2456-25 +always ì¹ 45-45-2456-25-13 +always ìº 45-45-2456-25-356 +always ì» 45-45-2456-35 +always ì¼ 45-45-2456-2 +always ì½ 45-45-2456-2-1 +always ì¾ 45-45-2456-2-26 +always ì¿ 45-45-2456-2-12 +always ì‚€ 45-45-2456-2-3 +always ì‚ 45-45-2456-2-236 +always ì‚‚ 45-45-2456-2-256 +always 삃 45-45-2456-2-356 +always ì‚„ 45-45-2456-26 +always ì‚… 45-45-2456-12 +always 삆 45-45-2456-12-3 +always 삇 45-45-2456-3 +always 삈 45-45-2456-3-3 +always 삉 45-45-2456-2356 +always ì‚Š 45-45-2456-13 +always ì‚‹ 45-45-2456-23 +always ì‚Œ 45-45-2456-235 +always ì‚ 45-45-2456-236 +always ì‚Ž 45-45-2456-256 +always ì‚ 45-45-2456-356 +always ì‚ 45-45-135 +always ì‚‘ 45-45-135-1 +always ì‚’ 45-45-135-1-1 +always ì‚“ 45-45-135-1-3 +always ì‚” 45-45-135-25 +always ì‚• 45-45-135-25-13 +always ì‚– 45-45-135-25-356 +always ì‚— 45-45-135-35 +always 삘 45-45-135-2 +always ì‚™ 45-45-135-2-1 +always ì‚š 45-45-135-2-26 +always ì‚› 45-45-135-2-12 +always ì‚œ 45-45-135-2-3 +always ì‚ 45-45-135-2-236 +always ì‚ž 45-45-135-2-256 +always ì‚Ÿ 45-45-135-2-356 +always ì‚  45-45-135-26 +always ì‚¡ 45-45-135-12 +always ì‚¢ 45-45-135-12-3 +always ì‚£ 45-45-135-3 +always 삤 45-45-135-3-3 +always ì‚¥ 45-45-135-2356 +always 삦 45-45-135-13 +always 삧 45-45-135-23 +always 삨 45-45-135-235 +always ì‚© 45-45-135-236 +always 삪 45-45-135-256 +always ì‚« 45-45-135-356 +always 사 6-126 +always ì‚­ 6-126-1 +always ì‚® 6-126-1-1 +always 삯 6-126-1-3 +always ì‚° 6-126-25 +always 삱 6-126-25-13 +always 삲 6-126-25-356 +always 삳 6-126-35 +always ì‚´ 6-126-2 +always 삵 6-126-2-1 +always 삶 6-126-2-26 +always ì‚· 6-126-2-12 +always 삸 6-126-2-3 +always 삹 6-126-2-236 +always 삺 6-126-2-256 +always ì‚» 6-126-2-356 +always 삼 6-126-26 +always 삽 6-126-12 +always 삾 6-126-12-3 +always ì‚¿ 6-126-3 +always 샀 6-126-3-3 +always ìƒ 6-126-2356 +always 샂 6-126-13 +always 샃 6-126-23 +always 샄 6-126-235 +always 샅 6-126-236 +always 샆 6-126-256 +always 샇 6-126-356 +always 새 6-1235 +always 색 6-1235-1 +always 샊 6-1235-1-1 +always 샋 6-1235-1-3 +always 샌 6-1235-25 +always ìƒ 6-1235-25-13 +always 샎 6-1235-25-356 +always ìƒ 6-1235-35 +always ìƒ 6-1235-2 +always 샑 6-1235-2-1 +always 샒 6-1235-2-26 +always 샓 6-1235-2-12 +always 샔 6-1235-2-3 +always 샕 6-1235-2-236 +always 샖 6-1235-2-256 +always 샗 6-1235-2-356 +always 샘 6-1235-26 +always 샙 6-1235-12 +always 샚 6-1235-12-3 +always 샛 6-1235-3 +always 샜 6-1235-3-3 +always ìƒ 6-1235-2356 +always 샞 6-1235-13 +always 샟 6-1235-23 +always 샠 6-1235-235 +always 샡 6-1235-236 +always 샢 6-1235-256 +always 샣 6-1235-356 +always 샤 6-345 +always 샥 6-345-1 +always 샦 6-345-1-1 +always 샧 6-345-1-3 +always 샨 6-345-25 +always 샩 6-345-25-13 +always 샪 6-345-25-356 +always 샫 6-345-35 +always 샬 6-345-2 +always 샭 6-345-2-1 +always 샮 6-345-2-26 +always 샯 6-345-2-12 +always 샰 6-345-2-3 +always 샱 6-345-2-236 +always 샲 6-345-2-256 +always 샳 6-345-2-356 +always 샴 6-345-26 +always 샵 6-345-12 +always 샶 6-345-12-3 +always 샷 6-345-3 +always 샸 6-345-3-3 +always 샹 6-345-2356 +always 샺 6-345-13 +always 샻 6-345-23 +always 샼 6-345-235 +always 샽 6-345-236 +always 샾 6-345-256 +always 샿 6-345-356 +always ì„€ 6-345-1235 +always ì„ 6-345-1235-1 +always ì„‚ 6-345-1235-1-1 +always 섃 6-345-1235-1-3 +always ì„„ 6-345-1235-25 +always ì„… 6-345-1235-25-13 +always 섆 6-345-1235-25-356 +always 섇 6-345-1235-35 +always 섈 6-345-1235-2 +always 섉 6-345-1235-2-1 +always ì„Š 6-345-1235-2-26 +always ì„‹ 6-345-1235-2-12 +always ì„Œ 6-345-1235-2-3 +always ì„ 6-345-1235-2-236 +always ì„Ž 6-345-1235-2-256 +always ì„ 6-345-1235-2-356 +always ì„ 6-345-1235-26 +always ì„‘ 6-345-1235-12 +always ì„’ 6-345-1235-12-3 +always ì„“ 6-345-1235-3 +always ì„” 6-345-1235-3-3 +always ì„• 6-345-1235-2356 +always ì„– 6-345-1235-13 +always ì„— 6-345-1235-23 +always 섘 6-345-1235-235 +always ì„™ 6-345-1235-236 +always ì„š 6-345-1235-256 +always ì„› 6-345-1235-356 +always ì„œ 6-234 +always ì„ 6-234-1 +always ì„ž 6-234-1-1 +always ì„Ÿ 6-234-1-3 +always ì„  6-234-25 +always ì„¡ 6-234-25-13 +always ì„¢ 6-234-25-356 +always ì„£ 6-234-35 +always 설 6-234-2 +always ì„¥ 6-234-2-1 +always 섦 6-234-2-26 +always 섧 6-234-2-12 +always 섨 6-234-2-3 +always ì„© 6-234-2-236 +always 섪 6-234-2-256 +always ì„« 6-234-2-356 +always 섬 6-234-26 +always ì„­ 6-234-12 +always ì„® 6-234-12-3 +always 섯 6-234-3 +always ì„° 6-234-3-3 +always 성 6-234-2356 +always 섲 6-234-13 +always 섳 6-234-23 +always ì„´ 6-234-235 +always 섵 6-234-236 +always 섶 6-234-256 +always ì„· 6-234-356 +always 세 6-1345 +always 섹 6-1345-1 +always 섺 6-1345-1-1 +always ì„» 6-1345-1-3 +always 센 6-1345-25 +always 섽 6-1345-25-13 +always 섾 6-1345-25-356 +always ì„¿ 6-1345-35 +always ì…€ 6-1345-2 +always ì… 6-1345-2-1 +always ì…‚ 6-1345-2-26 +always ì…ƒ 6-1345-2-12 +always ì…„ 6-1345-2-3 +always ì…… 6-1345-2-236 +always ì…† 6-1345-2-256 +always ì…‡ 6-1345-2-356 +always ì…ˆ 6-1345-26 +always ì…‰ 6-1345-12 +always ì…Š 6-1345-12-3 +always ì…‹ 6-1345-3 +always ì…Œ 6-1345-3-3 +always ì… 6-1345-2356 +always ì…Ž 6-1345-13 +always ì… 6-1345-23 +always ì… 6-1345-235 +always ì…‘ 6-1345-236 +always ì…’ 6-1345-256 +always ì…“ 6-1345-356 +always ì…” 6-156 +always ì…• 6-156-1 +always ì…– 6-156-1-1 +always ì…— 6-156-1-3 +always ì…˜ 6-156-25 +always ì…™ 6-156-25-13 +always ì…š 6-156-25-356 +always ì…› 6-156-35 +always ì…œ 6-156-2 +always ì… 6-156-2-1 +always ì…ž 6-156-2-26 +always ì…Ÿ 6-156-2-12 +always ì…  6-156-2-3 +always ì…¡ 6-156-2-236 +always ì…¢ 6-156-2-256 +always ì…£ 6-156-2-356 +always ì…¤ 6-156-26 +always ì…¥ 6-156-12 +always ì…¦ 6-156-12-3 +always ì…§ 6-156-3 +always ì…¨ 6-156-3-3 +always ì…© 6-156-2356 +always ì…ª 6-156-13 +always ì…« 6-156-23 +always ì…¬ 6-156-235 +always ì…­ 6-156-236 +always ì…® 6-156-256 +always ì…¯ 6-156-356 +always ì…° 6-34 +always ì…± 6-34-1 +always ì…² 6-34-1-1 +always ì…³ 6-34-1-3 +always ì…´ 6-34-25 +always ì…µ 6-34-25-13 +always ì…¶ 6-34-25-356 +always ì…· 6-34-35 +always ì…¸ 6-34-2 +always ì…¹ 6-34-2-1 +always ì…º 6-34-2-26 +always ì…» 6-34-2-12 +always ì…¼ 6-34-2-3 +always ì…½ 6-34-2-236 +always ì…¾ 6-34-2-256 +always ì…¿ 6-34-2-356 +always 솀 6-34-26 +always ì† 6-34-12 +always 솂 6-34-12-3 +always 솃 6-34-3 +always 솄 6-34-3-3 +always 솅 6-34-2356 +always 솆 6-34-13 +always 솇 6-34-23 +always 솈 6-34-235 +always 솉 6-34-236 +always 솊 6-34-256 +always 솋 6-34-356 +always 소 6-136 +always ì† 6-136-1 +always 솎 6-136-1-1 +always ì† 6-136-1-3 +always ì† 6-136-25 +always 솑 6-136-25-13 +always 솒 6-136-25-356 +always 솓 6-136-35 +always 솔 6-136-2 +always 솕 6-136-2-1 +always 솖 6-136-2-26 +always 솗 6-136-2-12 +always 솘 6-136-2-3 +always 솙 6-136-2-236 +always 솚 6-136-2-256 +always 솛 6-136-2-356 +always 솜 6-136-26 +always ì† 6-136-12 +always 솞 6-136-12-3 +always 솟 6-136-3 +always 솠 6-136-3-3 +always 송 6-136-2356 +always 솢 6-136-13 +always 솣 6-136-23 +always 솤 6-136-235 +always 솥 6-136-236 +always 솦 6-136-256 +always 솧 6-136-356 +always 솨 6-1236 +always 솩 6-1236-1 +always 솪 6-1236-1-1 +always 솫 6-1236-1-3 +always 솬 6-1236-25 +always 솭 6-1236-25-13 +always 솮 6-1236-25-356 +always 솯 6-1236-35 +always 솰 6-1236-2 +always 솱 6-1236-2-1 +always 솲 6-1236-2-26 +always 솳 6-1236-2-12 +always 솴 6-1236-2-3 +always 솵 6-1236-2-236 +always 솶 6-1236-2-256 +always 솷 6-1236-2-356 +always 솸 6-1236-26 +always 솹 6-1236-12 +always 솺 6-1236-12-3 +always 솻 6-1236-3 +always 솼 6-1236-3-3 +always 솽 6-1236-2356 +always 솾 6-1236-13 +always 솿 6-1236-23 +always 쇀 6-1236-235 +always ì‡ 6-1236-236 +always 쇂 6-1236-256 +always 쇃 6-1236-356 +always 쇄 6-1236-1235 +always 쇅 6-1236-1235-1 +always 쇆 6-1236-1235-1-1 +always 쇇 6-1236-1235-1-3 +always 쇈 6-1236-1235-25 +always 쇉 6-1236-1235-25-13 +always 쇊 6-1236-1235-25-356 +always 쇋 6-1236-1235-35 +always 쇌 6-1236-1235-2 +always ì‡ 6-1236-1235-2-1 +always 쇎 6-1236-1235-2-26 +always ì‡ 6-1236-1235-2-12 +always ì‡ 6-1236-1235-2-3 +always 쇑 6-1236-1235-2-236 +always 쇒 6-1236-1235-2-256 +always 쇓 6-1236-1235-2-356 +always 쇔 6-1236-1235-26 +always 쇕 6-1236-1235-12 +always 쇖 6-1236-1235-12-3 +always 쇗 6-1236-1235-3 +always 쇘 6-1236-1235-3-3 +always 쇙 6-1236-1235-2356 +always 쇚 6-1236-1235-13 +always 쇛 6-1236-1235-23 +always 쇜 6-1236-1235-235 +always ì‡ 6-1236-1235-236 +always 쇞 6-1236-1235-256 +always 쇟 6-1236-1235-356 +always 쇠 6-13456 +always 쇡 6-13456-1 +always 쇢 6-13456-1-1 +always 쇣 6-13456-1-3 +always 쇤 6-13456-25 +always 쇥 6-13456-25-13 +always 쇦 6-13456-25-356 +always 쇧 6-13456-35 +always 쇨 6-13456-2 +always 쇩 6-13456-2-1 +always 쇪 6-13456-2-26 +always 쇫 6-13456-2-12 +always 쇬 6-13456-2-3 +always 쇭 6-13456-2-236 +always 쇮 6-13456-2-256 +always 쇯 6-13456-2-356 +always 쇰 6-13456-26 +always 쇱 6-13456-12 +always 쇲 6-13456-12-3 +always 쇳 6-13456-3 +always 쇴 6-13456-3-3 +always 쇵 6-13456-2356 +always 쇶 6-13456-13 +always 쇷 6-13456-23 +always 쇸 6-13456-235 +always 쇹 6-13456-236 +always 쇺 6-13456-256 +always 쇻 6-13456-356 +always 쇼 6-346 +always 쇽 6-346-1 +always 쇾 6-346-1-1 +always 쇿 6-346-1-3 +always 숀 6-346-25 +always ìˆ 6-346-25-13 +always 숂 6-346-25-356 +always 숃 6-346-35 +always 숄 6-346-2 +always 숅 6-346-2-1 +always 숆 6-346-2-26 +always 숇 6-346-2-12 +always 숈 6-346-2-3 +always 숉 6-346-2-236 +always 숊 6-346-2-256 +always 숋 6-346-2-356 +always 숌 6-346-26 +always ìˆ 6-346-12 +always 숎 6-346-12-3 +always ìˆ 6-346-3 +always ìˆ 6-346-3-3 +always 숑 6-346-2356 +always 숒 6-346-13 +always 숓 6-346-23 +always 숔 6-346-235 +always 숕 6-346-236 +always 숖 6-346-256 +always 숗 6-346-356 +always 수 6-134 +always 숙 6-134-1 +always 숚 6-134-1-1 +always 숛 6-134-1-3 +always 순 6-134-25 +always ìˆ 6-134-25-13 +always 숞 6-134-25-356 +always 숟 6-134-35 +always 술 6-134-2 +always 숡 6-134-2-1 +always 숢 6-134-2-26 +always 숣 6-134-2-12 +always 숤 6-134-2-3 +always 숥 6-134-2-236 +always 숦 6-134-2-256 +always 숧 6-134-2-356 +always 숨 6-134-26 +always 숩 6-134-12 +always 숪 6-134-12-3 +always 숫 6-134-3 +always 숬 6-134-3-3 +always 숭 6-134-2356 +always 숮 6-134-13 +always 숯 6-134-23 +always 숰 6-134-235 +always 숱 6-134-236 +always 숲 6-134-256 +always 숳 6-134-356 +always 숴 6-1234 +always 숵 6-1234-1 +always 숶 6-1234-1-1 +always 숷 6-1234-1-3 +always 숸 6-1234-25 +always 숹 6-1234-25-13 +always 숺 6-1234-25-356 +always 숻 6-1234-35 +always 숼 6-1234-2 +always 숽 6-1234-2-1 +always 숾 6-1234-2-26 +always 숿 6-1234-2-12 +always 쉀 6-1234-2-3 +always ì‰ 6-1234-2-236 +always 쉂 6-1234-2-256 +always 쉃 6-1234-2-356 +always 쉄 6-1234-26 +always 쉅 6-1234-12 +always 쉆 6-1234-12-3 +always 쉇 6-1234-3 +always 쉈 6-1234-3-3 +always 쉉 6-1234-2356 +always 쉊 6-1234-13 +always 쉋 6-1234-23 +always 쉌 6-1234-235 +always ì‰ 6-1234-236 +always 쉎 6-1234-256 +always ì‰ 6-1234-356 +always ì‰ 6-1234-1235 +always 쉑 6-1234-1235-1 +always 쉒 6-1234-1235-1-1 +always 쉓 6-1234-1235-1-3 +always 쉔 6-1234-1235-25 +always 쉕 6-1234-1235-25-13 +always 쉖 6-1234-1235-25-356 +always 쉗 6-1234-1235-35 +always 쉘 6-1234-1235-2 +always 쉙 6-1234-1235-2-1 +always 쉚 6-1234-1235-2-26 +always 쉛 6-1234-1235-2-12 +always 쉜 6-1234-1235-2-3 +always ì‰ 6-1234-1235-2-236 +always 쉞 6-1234-1235-2-256 +always 쉟 6-1234-1235-2-356 +always 쉠 6-1234-1235-26 +always 쉡 6-1234-1235-12 +always 쉢 6-1234-1235-12-3 +always 쉣 6-1234-1235-3 +always 쉤 6-1234-1235-3-3 +always 쉥 6-1234-1235-2356 +always 쉦 6-1234-1235-13 +always 쉧 6-1234-1235-23 +always 쉨 6-1234-1235-235 +always 쉩 6-1234-1235-236 +always 쉪 6-1234-1235-256 +always 쉫 6-1234-1235-356 +always 쉬 6-134-1235 +always 쉭 6-134-1235-1 +always 쉮 6-134-1235-1-1 +always 쉯 6-134-1235-1-3 +always 쉰 6-134-1235-25 +always 쉱 6-134-1235-25-13 +always 쉲 6-134-1235-25-356 +always 쉳 6-134-1235-35 +always 쉴 6-134-1235-2 +always 쉵 6-134-1235-2-1 +always 쉶 6-134-1235-2-26 +always 쉷 6-134-1235-2-12 +always 쉸 6-134-1235-2-3 +always 쉹 6-134-1235-2-236 +always 쉺 6-134-1235-2-256 +always 쉻 6-134-1235-2-356 +always 쉼 6-134-1235-26 +always 쉽 6-134-1235-12 +always 쉾 6-134-1235-12-3 +always 쉿 6-134-1235-3 +always 슀 6-134-1235-3-3 +always ìŠ 6-134-1235-2356 +always 슂 6-134-1235-13 +always 슃 6-134-1235-23 +always 슄 6-134-1235-235 +always 슅 6-134-1235-236 +always 슆 6-134-1235-256 +always 슇 6-134-1235-356 +always 슈 6-146 +always 슉 6-146-1 +always 슊 6-146-1-1 +always 슋 6-146-1-3 +always 슌 6-146-25 +always ìŠ 6-146-25-13 +always 슎 6-146-25-356 +always ìŠ 6-146-35 +always ìŠ 6-146-2 +always 슑 6-146-2-1 +always 슒 6-146-2-26 +always 슓 6-146-2-12 +always 슔 6-146-2-3 +always 슕 6-146-2-236 +always 슖 6-146-2-256 +always 슗 6-146-2-356 +always 슘 6-146-26 +always 슙 6-146-12 +always 슚 6-146-12-3 +always 슛 6-146-3 +always 슜 6-146-3-3 +always ìŠ 6-146-2356 +always 슞 6-146-13 +always 슟 6-146-23 +always 슠 6-146-235 +always 슡 6-146-236 +always 슢 6-146-256 +always 슣 6-146-356 +always 스 6-246 +always 슥 6-246-1 +always 슦 6-246-1-1 +always 슧 6-246-1-3 +always 슨 6-246-25 +always 슩 6-246-25-13 +always 슪 6-246-25-356 +always 슫 6-246-35 +always 슬 6-246-2 +always 슭 6-246-2-1 +always 슮 6-246-2-26 +always 슯 6-246-2-12 +always 슰 6-246-2-3 +always 슱 6-246-2-236 +always 슲 6-246-2-256 +always 슳 6-246-2-356 +always 슴 6-246-26 +always 습 6-246-12 +always 슶 6-246-12-3 +always 슷 6-246-3 +always 슸 6-246-3-3 +always 승 6-246-2356 +always 슺 6-246-13 +always 슻 6-246-23 +always 슼 6-246-235 +always 슽 6-246-236 +always 슾 6-246-256 +always 슿 6-246-356 +always ì‹€ 6-2456 +always ì‹ 6-2456-1 +always ì‹‚ 6-2456-1-1 +always 싃 6-2456-1-3 +always ì‹„ 6-2456-25 +always ì‹… 6-2456-25-13 +always 싆 6-2456-25-356 +always 싇 6-2456-35 +always 싈 6-2456-2 +always 싉 6-2456-2-1 +always ì‹Š 6-2456-2-26 +always ì‹‹ 6-2456-2-12 +always ì‹Œ 6-2456-2-3 +always ì‹ 6-2456-2-236 +always ì‹Ž 6-2456-2-256 +always ì‹ 6-2456-2-356 +always ì‹ 6-2456-26 +always ì‹‘ 6-2456-12 +always ì‹’ 6-2456-12-3 +always ì‹“ 6-2456-3 +always ì‹” 6-2456-3-3 +always ì‹• 6-2456-2356 +always ì‹– 6-2456-13 +always ì‹— 6-2456-23 +always 싘 6-2456-235 +always ì‹™ 6-2456-236 +always ì‹š 6-2456-256 +always ì‹› 6-2456-356 +always ì‹œ 6-135 +always ì‹ 6-135-1 +always ì‹ž 6-135-1-1 +always ì‹Ÿ 6-135-1-3 +always ì‹  6-135-25 +always ì‹¡ 6-135-25-13 +always ì‹¢ 6-135-25-356 +always ì‹£ 6-135-35 +always 실 6-135-2 +always ì‹¥ 6-135-2-1 +always 싦 6-135-2-26 +always 싧 6-135-2-12 +always 싨 6-135-2-3 +always ì‹© 6-135-2-236 +always 싪 6-135-2-256 +always ì‹« 6-135-2-356 +always 심 6-135-26 +always ì‹­ 6-135-12 +always ì‹® 6-135-12-3 +always 싯 6-135-3 +always ì‹° 6-135-3-3 +always 싱 6-135-2356 +always 싲 6-135-13 +always 싳 6-135-23 +always ì‹´ 6-135-235 +always 싵 6-135-236 +always 싶 6-135-256 +always ì‹· 6-135-356 +always 싸 6-6-126 +always 싹 6-6-126-1 +always 싺 6-6-126-1-1 +always ì‹» 6-6-126-1-3 +always 싼 6-6-126-25 +always 싽 6-6-126-25-13 +always 싾 6-6-126-25-356 +always ì‹¿ 6-6-126-35 +always 쌀 6-6-126-2 +always ìŒ 6-6-126-2-1 +always 쌂 6-6-126-2-26 +always 쌃 6-6-126-2-12 +always 쌄 6-6-126-2-3 +always 쌅 6-6-126-2-236 +always 쌆 6-6-126-2-256 +always 쌇 6-6-126-2-356 +always 쌈 6-6-126-26 +always 쌉 6-6-126-12 +always 쌊 6-6-126-12-3 +always 쌋 6-6-126-3 +always 쌌 6-6-126-3-3 +always ìŒ 6-6-126-2356 +always 쌎 6-6-126-13 +always ìŒ 6-6-126-23 +always ìŒ 6-6-126-235 +always 쌑 6-6-126-236 +always 쌒 6-6-126-256 +always 쌓 6-6-126-356 +always 쌔 6-6-1235 +always 쌕 6-6-1235-1 +always 쌖 6-6-1235-1-1 +always 쌗 6-6-1235-1-3 +always 쌘 6-6-1235-25 +always 쌙 6-6-1235-25-13 +always 쌚 6-6-1235-25-356 +always 쌛 6-6-1235-35 +always 쌜 6-6-1235-2 +always ìŒ 6-6-1235-2-1 +always 쌞 6-6-1235-2-26 +always 쌟 6-6-1235-2-12 +always 쌠 6-6-1235-2-3 +always 쌡 6-6-1235-2-236 +always 쌢 6-6-1235-2-256 +always 쌣 6-6-1235-2-356 +always 쌤 6-6-1235-26 +always 쌥 6-6-1235-12 +always 쌦 6-6-1235-12-3 +always 쌧 6-6-1235-3 +always 쌨 6-6-1235-3-3 +always 쌩 6-6-1235-2356 +always 쌪 6-6-1235-13 +always 쌫 6-6-1235-23 +always 쌬 6-6-1235-235 +always 쌭 6-6-1235-236 +always 쌮 6-6-1235-256 +always 쌯 6-6-1235-356 +always 쌰 6-6-345 +always 쌱 6-6-345-1 +always 쌲 6-6-345-1-1 +always 쌳 6-6-345-1-3 +always 쌴 6-6-345-25 +always 쌵 6-6-345-25-13 +always 쌶 6-6-345-25-356 +always 쌷 6-6-345-35 +always 쌸 6-6-345-2 +always 쌹 6-6-345-2-1 +always 쌺 6-6-345-2-26 +always 쌻 6-6-345-2-12 +always 쌼 6-6-345-2-3 +always 쌽 6-6-345-2-236 +always 쌾 6-6-345-2-256 +always 쌿 6-6-345-2-356 +always ì€ 6-6-345-26 +always ì 6-6-345-12 +always ì‚ 6-6-345-12-3 +always ìƒ 6-6-345-3 +always ì„ 6-6-345-3-3 +always ì… 6-6-345-2356 +always ì† 6-6-345-13 +always ì‡ 6-6-345-23 +always ìˆ 6-6-345-235 +always ì‰ 6-6-345-236 +always ìŠ 6-6-345-256 +always ì‹ 6-6-345-356 +always ìŒ 6-6-345-1235 +always ì 6-6-345-1235-1 +always ìŽ 6-6-345-1235-1-1 +always ì 6-6-345-1235-1-3 +always ì 6-6-345-1235-25 +always ì‘ 6-6-345-1235-25-13 +always ì’ 6-6-345-1235-25-356 +always ì“ 6-6-345-1235-35 +always ì” 6-6-345-1235-2 +always ì• 6-6-345-1235-2-1 +always ì– 6-6-345-1235-2-26 +always ì— 6-6-345-1235-2-12 +always ì˜ 6-6-345-1235-2-3 +always ì™ 6-6-345-1235-2-236 +always ìš 6-6-345-1235-2-256 +always ì› 6-6-345-1235-2-356 +always ìœ 6-6-345-1235-26 +always ì 6-6-345-1235-12 +always ìž 6-6-345-1235-12-3 +always ìŸ 6-6-345-1235-3 +always ì  6-6-345-1235-3-3 +always ì¡ 6-6-345-1235-2356 +always ì¢ 6-6-345-1235-13 +always ì£ 6-6-345-1235-23 +always ì¤ 6-6-345-1235-235 +always ì¥ 6-6-345-1235-236 +always ì¦ 6-6-345-1235-256 +always ì§ 6-6-345-1235-356 +always ì¨ 6-6-234 +always ì© 6-6-234-1 +always ìª 6-6-234-1-1 +always ì« 6-6-234-1-3 +always ì¬ 6-6-234-25 +always ì­ 6-6-234-25-13 +always ì® 6-6-234-25-356 +always ì¯ 6-6-234-35 +always ì° 6-6-234-2 +always ì± 6-6-234-2-1 +always ì² 6-6-234-2-26 +always ì³ 6-6-234-2-12 +always ì´ 6-6-234-2-3 +always ìµ 6-6-234-2-236 +always ì¶ 6-6-234-2-256 +always ì· 6-6-234-2-356 +always ì¸ 6-6-234-26 +always ì¹ 6-6-234-12 +always ìº 6-6-234-12-3 +always ì» 6-6-234-3 +always ì¼ 6-6-234-3-3 +always ì½ 6-6-234-2356 +always ì¾ 6-6-234-13 +always ì¿ 6-6-234-23 +always 쎀 6-6-234-235 +always ìŽ 6-6-234-236 +always 쎂 6-6-234-256 +always 쎃 6-6-234-356 +always 쎄 6-6-1345 +always 쎅 6-6-1345-1 +always 쎆 6-6-1345-1-1 +always 쎇 6-6-1345-1-3 +always 쎈 6-6-1345-25 +always 쎉 6-6-1345-25-13 +always 쎊 6-6-1345-25-356 +always 쎋 6-6-1345-35 +always 쎌 6-6-1345-2 +always ìŽ 6-6-1345-2-1 +always 쎎 6-6-1345-2-26 +always ìŽ 6-6-1345-2-12 +always ìŽ 6-6-1345-2-3 +always 쎑 6-6-1345-2-236 +always 쎒 6-6-1345-2-256 +always 쎓 6-6-1345-2-356 +always 쎔 6-6-1345-26 +always 쎕 6-6-1345-12 +always 쎖 6-6-1345-12-3 +always 쎗 6-6-1345-3 +always 쎘 6-6-1345-3-3 +always 쎙 6-6-1345-2356 +always 쎚 6-6-1345-13 +always 쎛 6-6-1345-23 +always 쎜 6-6-1345-235 +always ìŽ 6-6-1345-236 +always 쎞 6-6-1345-256 +always 쎟 6-6-1345-356 +always 쎠 6-6-156 +always 쎡 6-6-156-1 +always 쎢 6-6-156-1-1 +always 쎣 6-6-156-1-3 +always 쎤 6-6-156-25 +always 쎥 6-6-156-25-13 +always 쎦 6-6-156-25-356 +always 쎧 6-6-156-35 +always 쎨 6-6-156-2 +always 쎩 6-6-156-2-1 +always 쎪 6-6-156-2-26 +always 쎫 6-6-156-2-12 +always 쎬 6-6-156-2-3 +always 쎭 6-6-156-2-236 +always 쎮 6-6-156-2-256 +always 쎯 6-6-156-2-356 +always 쎰 6-6-156-26 +always 쎱 6-6-156-12 +always 쎲 6-6-156-12-3 +always 쎳 6-6-156-3 +always 쎴 6-6-156-3-3 +always 쎵 6-6-156-2356 +always 쎶 6-6-156-13 +always 쎷 6-6-156-23 +always 쎸 6-6-156-235 +always 쎹 6-6-156-236 +always 쎺 6-6-156-256 +always 쎻 6-6-156-356 +always 쎼 6-6-34 +always 쎽 6-6-34-1 +always 쎾 6-6-34-1-1 +always 쎿 6-6-34-1-3 +always ì€ 6-6-34-25 +always ì 6-6-34-25-13 +always ì‚ 6-6-34-25-356 +always ìƒ 6-6-34-35 +always ì„ 6-6-34-2 +always ì… 6-6-34-2-1 +always ì† 6-6-34-2-26 +always ì‡ 6-6-34-2-12 +always ìˆ 6-6-34-2-3 +always ì‰ 6-6-34-2-236 +always ìŠ 6-6-34-2-256 +always ì‹ 6-6-34-2-356 +always ìŒ 6-6-34-26 +always ì 6-6-34-12 +always ìŽ 6-6-34-12-3 +always ì 6-6-34-3 +always ì 6-6-34-3-3 +always ì‘ 6-6-34-2356 +always ì’ 6-6-34-13 +always ì“ 6-6-34-23 +always ì” 6-6-34-235 +always ì• 6-6-34-236 +always ì– 6-6-34-256 +always ì— 6-6-34-356 +always ì˜ 6-6-136 +always ì™ 6-6-136-1 +always ìš 6-6-136-1-1 +always ì› 6-6-136-1-3 +always ìœ 6-6-136-25 +always ì 6-6-136-25-13 +always ìž 6-6-136-25-356 +always ìŸ 6-6-136-35 +always ì  6-6-136-2 +always ì¡ 6-6-136-2-1 +always ì¢ 6-6-136-2-26 +always ì£ 6-6-136-2-12 +always ì¤ 6-6-136-2-3 +always ì¥ 6-6-136-2-236 +always ì¦ 6-6-136-2-256 +always ì§ 6-6-136-2-356 +always ì¨ 6-6-136-26 +always ì© 6-6-136-12 +always ìª 6-6-136-12-3 +always ì« 6-6-136-3 +always ì¬ 6-6-136-3-3 +always ì­ 6-6-136-2356 +always ì® 6-6-136-13 +always ì¯ 6-6-136-23 +always ì° 6-6-136-235 +always ì± 6-6-136-236 +always ì² 6-6-136-256 +always ì³ 6-6-136-356 +always ì´ 6-6-1236 +always ìµ 6-6-1236-1 +always ì¶ 6-6-1236-1-1 +always ì· 6-6-1236-1-3 +always ì¸ 6-6-1236-25 +always ì¹ 6-6-1236-25-13 +always ìº 6-6-1236-25-356 +always ì» 6-6-1236-35 +always ì¼ 6-6-1236-2 +always ì½ 6-6-1236-2-1 +always ì¾ 6-6-1236-2-26 +always ì¿ 6-6-1236-2-12 +always ì€ 6-6-1236-2-3 +always ì 6-6-1236-2-236 +always ì‚ 6-6-1236-2-256 +always ìƒ 6-6-1236-2-356 +always ì„ 6-6-1236-26 +always ì… 6-6-1236-12 +always ì† 6-6-1236-12-3 +always ì‡ 6-6-1236-3 +always ìˆ 6-6-1236-3-3 +always ì‰ 6-6-1236-2356 +always ìŠ 6-6-1236-13 +always ì‹ 6-6-1236-23 +always ìŒ 6-6-1236-235 +always ì 6-6-1236-236 +always ìŽ 6-6-1236-256 +always ì 6-6-1236-356 +always ì 6-6-1236-1235 +always ì‘ 6-6-1236-1235-1 +always ì’ 6-6-1236-1235-1-1 +always ì“ 6-6-1236-1235-1-3 +always ì” 6-6-1236-1235-25 +always ì• 6-6-1236-1235-25-13 +always ì– 6-6-1236-1235-25-356 +always ì— 6-6-1236-1235-35 +always ì˜ 6-6-1236-1235-2 +always ì™ 6-6-1236-1235-2-1 +always ìš 6-6-1236-1235-2-26 +always ì› 6-6-1236-1235-2-12 +always ìœ 6-6-1236-1235-2-3 +always ì 6-6-1236-1235-2-236 +always ìž 6-6-1236-1235-2-256 +always ìŸ 6-6-1236-1235-2-356 +always ì  6-6-1236-1235-26 +always ì¡ 6-6-1236-1235-12 +always ì¢ 6-6-1236-1235-12-3 +always ì£ 6-6-1236-1235-3 +always ì¤ 6-6-1236-1235-3-3 +always ì¥ 6-6-1236-1235-2356 +always ì¦ 6-6-1236-1235-13 +always ì§ 6-6-1236-1235-23 +always ì¨ 6-6-1236-1235-235 +always ì© 6-6-1236-1235-236 +always ìª 6-6-1236-1235-256 +always ì« 6-6-1236-1235-356 +always ì¬ 6-6-13456 +always ì­ 6-6-13456-1 +always ì® 6-6-13456-1-1 +always ì¯ 6-6-13456-1-3 +always ì° 6-6-13456-25 +always ì± 6-6-13456-25-13 +always ì² 6-6-13456-25-356 +always ì³ 6-6-13456-35 +always ì´ 6-6-13456-2 +always ìµ 6-6-13456-2-1 +always ì¶ 6-6-13456-2-26 +always ì· 6-6-13456-2-12 +always ì¸ 6-6-13456-2-3 +always ì¹ 6-6-13456-2-236 +always ìº 6-6-13456-2-256 +always ì» 6-6-13456-2-356 +always ì¼ 6-6-13456-26 +always ì½ 6-6-13456-12 +always ì¾ 6-6-13456-12-3 +always ì¿ 6-6-13456-3 +always ì‘€ 6-6-13456-3-3 +always ì‘ 6-6-13456-2356 +always ì‘‚ 6-6-13456-13 +always 쑃 6-6-13456-23 +always ì‘„ 6-6-13456-235 +always ì‘… 6-6-13456-236 +always 쑆 6-6-13456-256 +always 쑇 6-6-13456-356 +always 쑈 6-6-346 +always 쑉 6-6-346-1 +always ì‘Š 6-6-346-1-1 +always ì‘‹ 6-6-346-1-3 +always ì‘Œ 6-6-346-25 +always ì‘ 6-6-346-25-13 +always ì‘Ž 6-6-346-25-356 +always ì‘ 6-6-346-35 +always ì‘ 6-6-346-2 +always ì‘‘ 6-6-346-2-1 +always ì‘’ 6-6-346-2-26 +always ì‘“ 6-6-346-2-12 +always ì‘” 6-6-346-2-3 +always ì‘• 6-6-346-2-236 +always ì‘– 6-6-346-2-256 +always ì‘— 6-6-346-2-356 +always 쑘 6-6-346-26 +always ì‘™ 6-6-346-12 +always ì‘š 6-6-346-12-3 +always ì‘› 6-6-346-3 +always ì‘œ 6-6-346-3-3 +always ì‘ 6-6-346-2356 +always ì‘ž 6-6-346-13 +always ì‘Ÿ 6-6-346-23 +always ì‘  6-6-346-235 +always ì‘¡ 6-6-346-236 +always ì‘¢ 6-6-346-256 +always ì‘£ 6-6-346-356 +always 쑤 6-6-134 +always ì‘¥ 6-6-134-1 +always 쑦 6-6-134-1-1 +always 쑧 6-6-134-1-3 +always 쑨 6-6-134-25 +always ì‘© 6-6-134-25-13 +always 쑪 6-6-134-25-356 +always ì‘« 6-6-134-35 +always 쑬 6-6-134-2 +always ì‘­ 6-6-134-2-1 +always ì‘® 6-6-134-2-26 +always 쑯 6-6-134-2-12 +always ì‘° 6-6-134-2-3 +always 쑱 6-6-134-2-236 +always 쑲 6-6-134-2-256 +always 쑳 6-6-134-2-356 +always ì‘´ 6-6-134-26 +always 쑵 6-6-134-12 +always 쑶 6-6-134-12-3 +always ì‘· 6-6-134-3 +always 쑸 6-6-134-3-3 +always 쑹 6-6-134-2356 +always 쑺 6-6-134-13 +always ì‘» 6-6-134-23 +always 쑼 6-6-134-235 +always 쑽 6-6-134-236 +always 쑾 6-6-134-256 +always ì‘¿ 6-6-134-356 +always ì’€ 6-6-1234 +always ì’ 6-6-1234-1 +always ì’‚ 6-6-1234-1-1 +always ì’ƒ 6-6-1234-1-3 +always ì’„ 6-6-1234-25 +always ì’… 6-6-1234-25-13 +always ì’† 6-6-1234-25-356 +always ì’‡ 6-6-1234-35 +always ì’ˆ 6-6-1234-2 +always ì’‰ 6-6-1234-2-1 +always ì’Š 6-6-1234-2-26 +always ì’‹ 6-6-1234-2-12 +always ì’Œ 6-6-1234-2-3 +always ì’ 6-6-1234-2-236 +always ì’Ž 6-6-1234-2-256 +always ì’ 6-6-1234-2-356 +always ì’ 6-6-1234-26 +always ì’‘ 6-6-1234-12 +always ì’’ 6-6-1234-12-3 +always ì’“ 6-6-1234-3 +always ì’” 6-6-1234-3-3 +always ì’• 6-6-1234-2356 +always ì’– 6-6-1234-13 +always ì’— 6-6-1234-23 +always ì’˜ 6-6-1234-235 +always ì’™ 6-6-1234-236 +always ì’š 6-6-1234-256 +always ì’› 6-6-1234-356 +always ì’œ 6-6-1234-1235 +always ì’ 6-6-1234-1235-1 +always ì’ž 6-6-1234-1235-1-1 +always ì’Ÿ 6-6-1234-1235-1-3 +always ì’  6-6-1234-1235-25 +always ì’¡ 6-6-1234-1235-25-13 +always ì’¢ 6-6-1234-1235-25-356 +always ì’£ 6-6-1234-1235-35 +always ì’¤ 6-6-1234-1235-2 +always ì’¥ 6-6-1234-1235-2-1 +always ì’¦ 6-6-1234-1235-2-26 +always ì’§ 6-6-1234-1235-2-12 +always ì’¨ 6-6-1234-1235-2-3 +always ì’© 6-6-1234-1235-2-236 +always ì’ª 6-6-1234-1235-2-256 +always ì’« 6-6-1234-1235-2-356 +always ì’¬ 6-6-1234-1235-26 +always ì’­ 6-6-1234-1235-12 +always ì’® 6-6-1234-1235-12-3 +always ì’¯ 6-6-1234-1235-3 +always ì’° 6-6-1234-1235-3-3 +always ì’± 6-6-1234-1235-2356 +always ì’² 6-6-1234-1235-13 +always ì’³ 6-6-1234-1235-23 +always ì’´ 6-6-1234-1235-235 +always ì’µ 6-6-1234-1235-236 +always ì’¶ 6-6-1234-1235-256 +always ì’· 6-6-1234-1235-356 +always ì’¸ 6-6-134-1235 +always ì’¹ 6-6-134-1235-1 +always ì’º 6-6-134-1235-1-1 +always ì’» 6-6-134-1235-1-3 +always ì’¼ 6-6-134-1235-25 +always ì’½ 6-6-134-1235-25-13 +always ì’¾ 6-6-134-1235-25-356 +always ì’¿ 6-6-134-1235-35 +always ì“€ 6-6-134-1235-2 +always ì“ 6-6-134-1235-2-1 +always ì“‚ 6-6-134-1235-2-26 +always 쓃 6-6-134-1235-2-12 +always ì“„ 6-6-134-1235-2-3 +always ì“… 6-6-134-1235-2-236 +always 쓆 6-6-134-1235-2-256 +always 쓇 6-6-134-1235-2-356 +always 쓈 6-6-134-1235-26 +always 쓉 6-6-134-1235-12 +always ì“Š 6-6-134-1235-12-3 +always ì“‹ 6-6-134-1235-3 +always ì“Œ 6-6-134-1235-3-3 +always ì“ 6-6-134-1235-2356 +always ì“Ž 6-6-134-1235-13 +always ì“ 6-6-134-1235-23 +always ì“ 6-6-134-1235-235 +always ì“‘ 6-6-134-1235-236 +always ì“’ 6-6-134-1235-256 +always ì““ 6-6-134-1235-356 +always ì“” 6-6-146 +always ì“• 6-6-146-1 +always ì“– 6-6-146-1-1 +always ì“— 6-6-146-1-3 +always 쓘 6-6-146-25 +always ì“™ 6-6-146-25-13 +always ì“š 6-6-146-25-356 +always ì“› 6-6-146-35 +always ì“œ 6-6-146-2 +always ì“ 6-6-146-2-1 +always ì“ž 6-6-146-2-26 +always ì“Ÿ 6-6-146-2-12 +always ì“  6-6-146-2-3 +always ì“¡ 6-6-146-2-236 +always ì“¢ 6-6-146-2-256 +always ì“£ 6-6-146-2-356 +always 쓤 6-6-146-26 +always ì“¥ 6-6-146-12 +always 쓦 6-6-146-12-3 +always 쓧 6-6-146-3 +always 쓨 6-6-146-3-3 +always ì“© 6-6-146-2356 +always 쓪 6-6-146-13 +always ì“« 6-6-146-23 +always 쓬 6-6-146-235 +always ì“­ 6-6-146-236 +always ì“® 6-6-146-256 +always 쓯 6-6-146-356 +always ì“° 6-6-246 +always 쓱 6-6-246-1 +always 쓲 6-6-246-1-1 +always 쓳 6-6-246-1-3 +always ì“´ 6-6-246-25 +always 쓵 6-6-246-25-13 +always 쓶 6-6-246-25-356 +always ì“· 6-6-246-35 +always 쓸 6-6-246-2 +always 쓹 6-6-246-2-1 +always 쓺 6-6-246-2-26 +always ì“» 6-6-246-2-12 +always 쓼 6-6-246-2-3 +always 쓽 6-6-246-2-236 +always 쓾 6-6-246-2-256 +always ì“¿ 6-6-246-2-356 +always 씀 6-6-246-26 +always ì” 6-6-246-12 +always 씂 6-6-246-12-3 +always 씃 6-6-246-3 +always 씄 6-6-246-3-3 +always ì”… 6-6-246-2356 +always 씆 6-6-246-13 +always 씇 6-6-246-23 +always 씈 6-6-246-235 +always 씉 6-6-246-236 +always 씊 6-6-246-256 +always 씋 6-6-246-356 +always 씌 6-6-2456 +always ì” 6-6-2456-1 +always 씎 6-6-2456-1-1 +always ì” 6-6-2456-1-3 +always ì” 6-6-2456-25 +always 씑 6-6-2456-25-13 +always ì”’ 6-6-2456-25-356 +always 씓 6-6-2456-35 +always ì”” 6-6-2456-2 +always 씕 6-6-2456-2-1 +always ì”– 6-6-2456-2-26 +always ì”— 6-6-2456-2-12 +always 씘 6-6-2456-2-3 +always ì”™ 6-6-2456-2-236 +always 씚 6-6-2456-2-256 +always ì”› 6-6-2456-2-356 +always 씜 6-6-2456-26 +always ì” 6-6-2456-12 +always 씞 6-6-2456-12-3 +always 씟 6-6-2456-3 +always ì”  6-6-2456-3-3 +always 씡 6-6-2456-2356 +always 씢 6-6-2456-13 +always 씣 6-6-2456-23 +always 씤 6-6-2456-235 +always 씥 6-6-2456-236 +always 씦 6-6-2456-256 +always 씧 6-6-2456-356 +always 씨 6-6-135 +always 씩 6-6-135-1 +always 씪 6-6-135-1-1 +always 씫 6-6-135-1-3 +always 씬 6-6-135-25 +always ì”­ 6-6-135-25-13 +always ì”® 6-6-135-25-356 +always 씯 6-6-135-35 +always ì”° 6-6-135-2 +always ì”± 6-6-135-2-1 +always 씲 6-6-135-2-26 +always 씳 6-6-135-2-12 +always ì”´ 6-6-135-2-3 +always 씵 6-6-135-2-236 +always 씶 6-6-135-2-256 +always ì”· 6-6-135-2-356 +always 씸 6-6-135-26 +always 씹 6-6-135-12 +always 씺 6-6-135-12-3 +always ì”» 6-6-135-3 +always 씼 6-6-135-3-3 +always 씽 6-6-135-2356 +always 씾 6-6-135-13 +always 씿 6-6-135-23 +always ì•€ 6-6-135-235 +always ì• 6-6-135-236 +always ì•‚ 6-6-135-256 +always 앃 6-6-135-356 +always ì•„ 126 +always ì•… 126-1 +always 앆 126-1-1 +always 앇 126-1-3 +always 안 126-25 +always 앉 126-25-13 +always ì•Š 126-25-356 +always ì•‹ 126-35 +always ì•Œ 126-2 +always ì• 126-2-1 +always ì•Ž 126-2-26 +always ì• 126-2-12 +always ì• 126-2-3 +always ì•‘ 126-2-236 +always ì•’ 126-2-256 +always ì•“ 126-2-356 +always ì•” 126-26 +always ì•• 126-12 +always ì•– 126-12-3 +always ì•— 126-3 +always 았 126-3-3 +always ì•™ 126-2356 +always ì•š 126-13 +always ì•› 126-23 +always ì•œ 126-235 +always ì• 126-236 +always ì•ž 126-256 +always ì•Ÿ 126-356 +always ì•  1235 +always ì•¡ 1235-1 +always ì•¢ 1235-1-1 +always ì•£ 1235-1-3 +always 앤 1235-25 +always ì•¥ 1235-25-13 +always 앦 1235-25-356 +always 앧 1235-35 +always 앨 1235-2 +always ì•© 1235-2-1 +always 앪 1235-2-26 +always ì•« 1235-2-12 +always 앬 1235-2-3 +always ì•­ 1235-2-236 +always ì•® 1235-2-256 +always 앯 1235-2-356 +always ì•° 1235-26 +always 앱 1235-12 +always 앲 1235-12-3 +always 앳 1235-3 +always ì•´ 1235-3-3 +always 앵 1235-2356 +always 앶 1235-13 +always ì•· 1235-23 +always 앸 1235-235 +always 앹 1235-236 +always 앺 1235-256 +always ì•» 1235-356 +always 야 345 +always 약 345-1 +always 앾 345-1-1 +always ì•¿ 345-1-3 +always ì–€ 345-25 +always ì– 345-25-13 +always ì–‚ 345-25-356 +always ì–ƒ 345-35 +always ì–„ 345-2 +always ì–… 345-2-1 +always ì–† 345-2-26 +always ì–‡ 345-2-12 +always ì–ˆ 345-2-3 +always ì–‰ 345-2-236 +always ì–Š 345-2-256 +always ì–‹ 345-2-356 +always ì–Œ 345-26 +always ì– 345-12 +always ì–Ž 345-12-3 +always ì– 345-3 +always ì– 345-3-3 +always ì–‘ 345-2356 +always ì–’ 345-13 +always ì–“ 345-23 +always ì–” 345-235 +always ì–• 345-236 +always ì–– 345-256 +always ì–— 345-356 +always ì–˜ 345-1235 +always ì–™ 345-1235-1 +always ì–š 345-1235-1-1 +always ì–› 345-1235-1-3 +always ì–œ 345-1235-25 +always ì– 345-1235-25-13 +always ì–ž 345-1235-25-356 +always ì–Ÿ 345-1235-35 +always ì–  345-1235-2 +always ì–¡ 345-1235-2-1 +always ì–¢ 345-1235-2-26 +always ì–£ 345-1235-2-12 +always ì–¤ 345-1235-2-3 +always ì–¥ 345-1235-2-236 +always ì–¦ 345-1235-2-256 +always ì–§ 345-1235-2-356 +always ì–¨ 345-1235-26 +always ì–© 345-1235-12 +always ì–ª 345-1235-12-3 +always ì–« 345-1235-3 +always ì–¬ 345-1235-3-3 +always ì–­ 345-1235-2356 +always ì–® 345-1235-13 +always ì–¯ 345-1235-23 +always ì–° 345-1235-235 +always ì–± 345-1235-236 +always ì–² 345-1235-256 +always ì–³ 345-1235-356 +always ì–´ 234 +always ì–µ 234-1 +always ì–¶ 234-1-1 +always ì–· 234-1-3 +always ì–¸ 234-25 +always ì–¹ 234-25-13 +always ì–º 234-25-356 +always ì–» 234-35 +always ì–¼ 234-2 +always ì–½ 234-2-1 +always ì–¾ 234-2-26 +always ì–¿ 234-2-12 +always ì—€ 234-2-3 +always ì— 234-2-236 +always ì—‚ 234-2-256 +always ì—ƒ 234-2-356 +always ì—„ 234-26 +always ì—… 234-12 +always ì—† 234-12-3 +always ì—‡ 234-3 +always ì—ˆ 234-3-3 +always ì—‰ 234-2356 +always ì—Š 234-13 +always ì—‹ 234-23 +always ì—Œ 234-235 +always ì— 234-236 +always ì—Ž 234-256 +always ì— 234-356 +always ì— 1345 +always ì—‘ 1345-1 +always ì—’ 1345-1-1 +always ì—“ 1345-1-3 +always ì—” 1345-25 +always ì—• 1345-25-13 +always ì—– 1345-25-356 +always ì—— 1345-35 +always ì—˜ 1345-2 +always ì—™ 1345-2-1 +always ì—š 1345-2-26 +always ì—› 1345-2-12 +always ì—œ 1345-2-3 +always ì— 1345-2-236 +always ì—ž 1345-2-256 +always ì—Ÿ 1345-2-356 +always ì—  1345-26 +always ì—¡ 1345-12 +always ì—¢ 1345-12-3 +always ì—£ 1345-3 +always ì—¤ 1345-3-3 +always ì—¥ 1345-2356 +always ì—¦ 1345-13 +always ì—§ 1345-23 +always ì—¨ 1345-235 +always ì—© 1345-236 +always ì—ª 1345-256 +always ì—« 1345-356 +always ì—¬ 156 +always ì—­ 156-1 +always ì—® 156-1-1 +always ì—¯ 156-1-3 +always ì—° 156-25 +always ì—± 156-25-13 +always ì—² 156-25-356 +always ì—³ 156-35 +always ì—´ 156-2 +always ì—µ 156-2-1 +always ì—¶ 156-2-26 +always ì—· 156-2-12 +always ì—¸ 156-2-3 +always ì—¹ 156-2-236 +always ì—º 156-2-256 +always ì—» 156-2-356 +always ì—¼ 156-26 +always ì—½ 156-12 +always ì—¾ 156-12-3 +always ì—¿ 156-3 +always 였 156-3-3 +always ì˜ 156-2356 +always 옂 156-13 +always 옃 156-23 +always 옄 156-235 +always 옅 156-236 +always 옆 156-256 +always 옇 156-356 +always 예 34 +always 옉 34-1 +always 옊 34-1-1 +always 옋 34-1-3 +always 옌 34-25 +always ì˜ 34-25-13 +always 옎 34-25-356 +always ì˜ 34-35 +always ì˜ 34-2 +always 옑 34-2-1 +always 옒 34-2-26 +always 옓 34-2-12 +always 옔 34-2-3 +always 옕 34-2-236 +always 옖 34-2-256 +always 옗 34-2-356 +always 옘 34-26 +always 옙 34-12 +always 옚 34-12-3 +always 옛 34-3 +always 옜 34-3-3 +always ì˜ 34-2356 +always 옞 34-13 +always 옟 34-23 +always 옠 34-235 +always 옡 34-236 +always 옢 34-256 +always 옣 34-356 +always 오 136 +always 옥 136-1 +always 옦 136-1-1 +always 옧 136-1-3 +always 온 136-25 +always 옩 136-25-13 +always 옪 136-25-356 +always 옫 136-35 +always 올 136-2 +always 옭 136-2-1 +always 옮 136-2-26 +always 옯 136-2-12 +always 옰 136-2-3 +always 옱 136-2-236 +always 옲 136-2-256 +always 옳 136-2-356 +always 옴 136-26 +always 옵 136-12 +always 옶 136-12-3 +always 옷 136-3 +always 옸 136-3-3 +always 옹 136-2356 +always 옺 136-13 +always 옻 136-23 +always 옼 136-235 +always 옽 136-236 +always 옾 136-256 +always 옿 136-356 +always 와 1236 +always ì™ 1236-1 +always 왂 1236-1-1 +always 왃 1236-1-3 +always 완 1236-25 +always ì™… 1236-25-13 +always 왆 1236-25-356 +always 왇 1236-35 +always 왈 1236-2 +always 왉 1236-2-1 +always 왊 1236-2-26 +always 왋 1236-2-12 +always 왌 1236-2-3 +always ì™ 1236-2-236 +always 왎 1236-2-256 +always ì™ 1236-2-356 +always ì™ 1236-26 +always 왑 1236-12 +always ì™’ 1236-12-3 +always 왓 1236-3 +always ì™” 1236-3-3 +always 왕 1236-2356 +always ì™– 1236-13 +always ì™— 1236-23 +always 왘 1236-235 +always ì™™ 1236-236 +always 왚 1236-256 +always ì™› 1236-356 +always 왜 1236-1235 +always ì™ 1236-1235-1 +always 왞 1236-1235-1-1 +always 왟 1236-1235-1-3 +always ì™  1236-1235-25 +always 왡 1236-1235-25-13 +always 왢 1236-1235-25-356 +always 왣 1236-1235-35 +always 왤 1236-1235-2 +always 왥 1236-1235-2-1 +always 왦 1236-1235-2-26 +always 왧 1236-1235-2-12 +always 왨 1236-1235-2-3 +always 왩 1236-1235-2-236 +always 왪 1236-1235-2-256 +always 왫 1236-1235-2-356 +always 왬 1236-1235-26 +always ì™­ 1236-1235-12 +always ì™® 1236-1235-12-3 +always 왯 1236-1235-3 +always ì™° 1236-1235-3-3 +always ì™± 1236-1235-2356 +always 왲 1236-1235-13 +always 왳 1236-1235-23 +always ì™´ 1236-1235-235 +always 왵 1236-1235-236 +always 왶 1236-1235-256 +always ì™· 1236-1235-356 +always 외 13456 +always 왹 13456-1 +always 왺 13456-1-1 +always ì™» 13456-1-3 +always 왼 13456-25 +always 왽 13456-25-13 +always 왾 13456-25-356 +always 왿 13456-35 +always 욀 13456-2 +always ìš 13456-2-1 +always ìš‚ 13456-2-26 +always 욃 13456-2-12 +always ìš„ 13456-2-3 +always ìš… 13456-2-236 +always 욆 13456-2-256 +always 욇 13456-2-356 +always 욈 13456-26 +always 욉 13456-12 +always 욊 13456-12-3 +always ìš‹ 13456-3 +always 욌 13456-3-3 +always ìš 13456-2356 +always 욎 13456-13 +always ìš 13456-23 +always ìš 13456-235 +always ìš‘ 13456-236 +always ìš’ 13456-256 +always ìš“ 13456-356 +always ìš” 346 +always ìš• 346-1 +always ìš– 346-1-1 +always ìš— 346-1-3 +always 욘 346-25 +always ìš™ 346-25-13 +always ìšš 346-25-356 +always ìš› 346-35 +always ìšœ 346-2 +always ìš 346-2-1 +always ìšž 346-2-26 +always 욟 346-2-12 +always ìš  346-2-3 +always ìš¡ 346-2-236 +always 욢 346-2-256 +always 욣 346-2-356 +always 욤 346-26 +always 욥 346-12 +always 욦 346-12-3 +always 욧 346-3 +always 욨 346-3-3 +always ìš© 346-2356 +always 욪 346-13 +always ìš« 346-23 +always 욬 346-235 +always ìš­ 346-236 +always ìš® 346-256 +always 욯 346-356 +always ìš° 134 +always ìš± 134-1 +always ìš² 134-1-1 +always ìš³ 134-1-3 +always ìš´ 134-25 +always ìšµ 134-25-13 +always 욶 134-25-356 +always ìš· 134-35 +always 울 134-2 +always ìš¹ 134-2-1 +always 욺 134-2-26 +always ìš» 134-2-12 +always ìš¼ 134-2-3 +always ìš½ 134-2-236 +always ìš¾ 134-2-256 +always ìš¿ 134-2-356 +always 움 134-26 +always ì› 134-12 +always 웂 134-12-3 +always 웃 134-3 +always 웄 134-3-3 +always ì›… 134-2356 +always 웆 134-13 +always 웇 134-23 +always 웈 134-235 +always 웉 134-236 +always 웊 134-256 +always 웋 134-356 +always 워 1234 +always ì› 1234-1 +always 웎 1234-1-1 +always ì› 1234-1-3 +always ì› 1234-25 +always 웑 1234-25-13 +always ì›’ 1234-25-356 +always 웓 1234-35 +always ì›” 1234-2 +always 웕 1234-2-1 +always ì›– 1234-2-26 +always ì›— 1234-2-12 +always 웘 1234-2-3 +always ì›™ 1234-2-236 +always 웚 1234-2-256 +always ì›› 1234-2-356 +always 웜 1234-26 +always ì› 1234-12 +always 웞 1234-12-3 +always 웟 1234-3 +always ì›  1234-3-3 +always 웡 1234-2356 +always 웢 1234-13 +always 웣 1234-23 +always 웤 1234-235 +always 웥 1234-236 +always 웦 1234-256 +always 웧 1234-356 +always 웨 1234-1235 +always 웩 1234-1235-1 +always 웪 1234-1235-1-1 +always 웫 1234-1235-1-3 +always 웬 1234-1235-25 +always ì›­ 1234-1235-25-13 +always ì›® 1234-1235-25-356 +always 웯 1234-1235-35 +always ì›° 1234-1235-2 +always ì›± 1234-1235-2-1 +always 웲 1234-1235-2-26 +always 웳 1234-1235-2-12 +always ì›´ 1234-1235-2-3 +always 웵 1234-1235-2-236 +always 웶 1234-1235-2-256 +always ì›· 1234-1235-2-356 +always 웸 1234-1235-26 +always 웹 1234-1235-12 +always 웺 1234-1235-12-3 +always ì›» 1234-1235-3 +always 웼 1234-1235-3-3 +always 웽 1234-1235-2356 +always 웾 1234-1235-13 +always 웿 1234-1235-23 +always 윀 1234-1235-235 +always ìœ 1234-1235-236 +always 윂 1234-1235-256 +always 윃 1234-1235-356 +always 위 134-1235 +always 윅 134-1235-1 +always 윆 134-1235-1-1 +always 윇 134-1235-1-3 +always 윈 134-1235-25 +always 윉 134-1235-25-13 +always 윊 134-1235-25-356 +always 윋 134-1235-35 +always 윌 134-1235-2 +always ìœ 134-1235-2-1 +always 윎 134-1235-2-26 +always ìœ 134-1235-2-12 +always ìœ 134-1235-2-3 +always 윑 134-1235-2-236 +always 윒 134-1235-2-256 +always 윓 134-1235-2-356 +always 윔 134-1235-26 +always 윕 134-1235-12 +always 윖 134-1235-12-3 +always 윗 134-1235-3 +always 윘 134-1235-3-3 +always 윙 134-1235-2356 +always 윚 134-1235-13 +always 윛 134-1235-23 +always 윜 134-1235-235 +always ìœ 134-1235-236 +always 윞 134-1235-256 +always 윟 134-1235-356 +always 유 146 +always 육 146-1 +always 윢 146-1-1 +always 윣 146-1-3 +always 윤 146-25 +always 윥 146-25-13 +always 윦 146-25-356 +always 윧 146-35 +always 율 146-2 +always 윩 146-2-1 +always 윪 146-2-26 +always 윫 146-2-12 +always 윬 146-2-3 +always 윭 146-2-236 +always 윮 146-2-256 +always 윯 146-2-356 +always 윰 146-26 +always 윱 146-12 +always 윲 146-12-3 +always 윳 146-3 +always 윴 146-3-3 +always 융 146-2356 +always 윶 146-13 +always 윷 146-23 +always 윸 146-235 +always 윹 146-236 +always 윺 146-256 +always 윻 146-356 +always 으 246 +always 윽 246-1 +always 윾 246-1-1 +always 윿 246-1-3 +always ì€ 246-25 +always ì 246-25-13 +always ì‚ 246-25-356 +always ìƒ 246-35 +always ì„ 246-2 +always ì… 246-2-1 +always ì† 246-2-26 +always ì‡ 246-2-12 +always ìˆ 246-2-3 +always ì‰ 246-2-236 +always ìŠ 246-2-256 +always ì‹ 246-2-356 +always ìŒ 246-26 +always ì 246-12 +always ìŽ 246-12-3 +always ì 246-3 +always ì 246-3-3 +always ì‘ 246-2356 +always ì’ 246-13 +always ì“ 246-23 +always ì” 246-235 +always ì• 246-236 +always ì– 246-256 +always ì— 246-356 +always ì˜ 2456 +always ì™ 2456-1 +always ìš 2456-1-1 +always ì› 2456-1-3 +always ìœ 2456-25 +always ì 2456-25-13 +always ìž 2456-25-356 +always ìŸ 2456-35 +always ì  2456-2 +always ì¡ 2456-2-1 +always ì¢ 2456-2-26 +always ì£ 2456-2-12 +always ì¤ 2456-2-3 +always ì¥ 2456-2-236 +always ì¦ 2456-2-256 +always ì§ 2456-2-356 +always ì¨ 2456-26 +always ì© 2456-12 +always ìª 2456-12-3 +always ì« 2456-3 +always ì¬ 2456-3-3 +always ì­ 2456-2356 +always ì® 2456-13 +always ì¯ 2456-23 +always ì° 2456-235 +always ì± 2456-236 +always ì² 2456-256 +always ì³ 2456-356 +always ì´ 135 +always ìµ 135-1 +always ì¶ 135-1-1 +always ì· 135-1-3 +always ì¸ 135-25 +always ì¹ 135-25-13 +always ìº 135-25-356 +always ì» 135-35 +always ì¼ 135-2 +always ì½ 135-2-1 +always ì¾ 135-2-26 +always ì¿ 135-2-12 +always 잀 135-2-3 +always ìž 135-2-236 +always ìž‚ 135-2-256 +always 잃 135-2-356 +always ìž„ 135-26 +always ìž… 135-12 +always 잆 135-12-3 +always 잇 135-3 +always 있 135-3-3 +always 잉 135-2356 +always 잊 135-13 +always ìž‹ 135-23 +always 잌 135-235 +always ìž 135-236 +always 잎 135-256 +always ìž 135-356 +always ìž 46-126 +always ìž‘ 46-126-1 +always ìž’ 46-126-1-1 +always ìž“ 46-126-1-3 +always ìž” 46-126-25 +always ìž• 46-126-25-13 +always ìž– 46-126-25-356 +always ìž— 46-126-35 +always 잘 46-126-2 +always ìž™ 46-126-2-1 +always ìžš 46-126-2-26 +always ìž› 46-126-2-12 +always ìžœ 46-126-2-3 +always ìž 46-126-2-236 +always ìžž 46-126-2-256 +always 잟 46-126-2-356 +always ìž  46-126-26 +always ìž¡ 46-126-12 +always 잢 46-126-12-3 +always 잣 46-126-3 +always 잤 46-126-3-3 +always 장 46-126-2356 +always 잦 46-126-13 +always 잧 46-126-23 +always 잨 46-126-235 +always ìž© 46-126-236 +always 잪 46-126-256 +always ìž« 46-126-356 +always 재 46-1235 +always ìž­ 46-1235-1 +always ìž® 46-1235-1-1 +always 잯 46-1235-1-3 +always ìž° 46-1235-25 +always ìž± 46-1235-25-13 +always ìž² 46-1235-25-356 +always ìž³ 46-1235-35 +always ìž´ 46-1235-2 +always ìžµ 46-1235-2-1 +always 잶 46-1235-2-26 +always ìž· 46-1235-2-12 +always 잸 46-1235-2-3 +always ìž¹ 46-1235-2-236 +always 잺 46-1235-2-256 +always ìž» 46-1235-2-356 +always ìž¼ 46-1235-26 +always ìž½ 46-1235-12 +always ìž¾ 46-1235-12-3 +always ìž¿ 46-1235-3 +always 쟀 46-1235-3-3 +always ìŸ 46-1235-2356 +always 쟂 46-1235-13 +always 쟃 46-1235-23 +always 쟄 46-1235-235 +always 쟅 46-1235-236 +always 쟆 46-1235-256 +always 쟇 46-1235-356 +always 쟈 46-345 +always 쟉 46-345-1 +always 쟊 46-345-1-1 +always 쟋 46-345-1-3 +always 쟌 46-345-25 +always ìŸ 46-345-25-13 +always 쟎 46-345-25-356 +always ìŸ 46-345-35 +always ìŸ 46-345-2 +always 쟑 46-345-2-1 +always 쟒 46-345-2-26 +always 쟓 46-345-2-12 +always 쟔 46-345-2-3 +always 쟕 46-345-2-236 +always 쟖 46-345-2-256 +always 쟗 46-345-2-356 +always 쟘 46-345-26 +always 쟙 46-345-12 +always 쟚 46-345-12-3 +always 쟛 46-345-3 +always 쟜 46-345-3-3 +always ìŸ 46-345-2356 +always 쟞 46-345-13 +always 쟟 46-345-23 +always 쟠 46-345-235 +always 쟡 46-345-236 +always 쟢 46-345-256 +always 쟣 46-345-356 +always 쟤 46-345-1235 +always 쟥 46-345-1235-1 +always 쟦 46-345-1235-1-1 +always 쟧 46-345-1235-1-3 +always 쟨 46-345-1235-25 +always 쟩 46-345-1235-25-13 +always 쟪 46-345-1235-25-356 +always 쟫 46-345-1235-35 +always 쟬 46-345-1235-2 +always 쟭 46-345-1235-2-1 +always 쟮 46-345-1235-2-26 +always 쟯 46-345-1235-2-12 +always 쟰 46-345-1235-2-3 +always 쟱 46-345-1235-2-236 +always 쟲 46-345-1235-2-256 +always 쟳 46-345-1235-2-356 +always 쟴 46-345-1235-26 +always 쟵 46-345-1235-12 +always 쟶 46-345-1235-12-3 +always 쟷 46-345-1235-3 +always 쟸 46-345-1235-3-3 +always 쟹 46-345-1235-2356 +always 쟺 46-345-1235-13 +always 쟻 46-345-1235-23 +always 쟼 46-345-1235-235 +always 쟽 46-345-1235-236 +always 쟾 46-345-1235-256 +always 쟿 46-345-1235-356 +always ì € 46-234 +always ì  46-234-1 +always ì ‚ 46-234-1-1 +always ì ƒ 46-234-1-3 +always ì „ 46-234-25 +always ì … 46-234-25-13 +always ì † 46-234-25-356 +always ì ‡ 46-234-35 +always ì ˆ 46-234-2 +always ì ‰ 46-234-2-1 +always ì Š 46-234-2-26 +always ì ‹ 46-234-2-12 +always ì Œ 46-234-2-3 +always ì  46-234-2-236 +always ì Ž 46-234-2-256 +always ì  46-234-2-356 +always ì  46-234-26 +always ì ‘ 46-234-12 +always ì ’ 46-234-12-3 +always ì “ 46-234-3 +always ì ” 46-234-3-3 +always ì • 46-234-2356 +always ì – 46-234-13 +always ì — 46-234-23 +always ì ˜ 46-234-235 +always ì ™ 46-234-236 +always ì š 46-234-256 +always ì › 46-234-356 +always ì œ 46-1345 +always ì  46-1345-1 +always ì ž 46-1345-1-1 +always ì Ÿ 46-1345-1-3 +always ì   46-1345-25 +always ì ¡ 46-1345-25-13 +always ì ¢ 46-1345-25-356 +always ì £ 46-1345-35 +always ì ¤ 46-1345-2 +always ì ¥ 46-1345-2-1 +always ì ¦ 46-1345-2-26 +always ì § 46-1345-2-12 +always ì ¨ 46-1345-2-3 +always ì © 46-1345-2-236 +always ì ª 46-1345-2-256 +always ì « 46-1345-2-356 +always ì ¬ 46-1345-26 +always ì ­ 46-1345-12 +always ì ® 46-1345-12-3 +always ì ¯ 46-1345-3 +always ì ° 46-1345-3-3 +always ì ± 46-1345-2356 +always ì ² 46-1345-13 +always ì ³ 46-1345-23 +always ì ´ 46-1345-235 +always ì µ 46-1345-236 +always ì ¶ 46-1345-256 +always ì · 46-1345-356 +always ì ¸ 46-156 +always ì ¹ 46-156-1 +always ì º 46-156-1-1 +always ì » 46-156-1-3 +always ì ¼ 46-156-25 +always ì ½ 46-156-25-13 +always ì ¾ 46-156-25-356 +always ì ¿ 46-156-35 +always ì¡€ 46-156-2 +always ì¡ 46-156-2-1 +always ì¡‚ 46-156-2-26 +always 졃 46-156-2-12 +always ì¡„ 46-156-2-3 +always ì¡… 46-156-2-236 +always 졆 46-156-2-256 +always 졇 46-156-2-356 +always 졈 46-156-26 +always 졉 46-156-12 +always ì¡Š 46-156-12-3 +always ì¡‹ 46-156-3 +always ì¡Œ 46-156-3-3 +always ì¡ 46-156-2356 +always ì¡Ž 46-156-13 +always ì¡ 46-156-23 +always ì¡ 46-156-235 +always ì¡‘ 46-156-236 +always ì¡’ 46-156-256 +always ì¡“ 46-156-356 +always ì¡” 46-34 +always ì¡• 46-34-1 +always ì¡– 46-34-1-1 +always ì¡— 46-34-1-3 +always 졘 46-34-25 +always ì¡™ 46-34-25-13 +always ì¡š 46-34-25-356 +always ì¡› 46-34-35 +always ì¡œ 46-34-2 +always ì¡ 46-34-2-1 +always ì¡ž 46-34-2-26 +always ì¡Ÿ 46-34-2-12 +always ì¡  46-34-2-3 +always ì¡¡ 46-34-2-236 +always ì¡¢ 46-34-2-256 +always ì¡£ 46-34-2-356 +always 졤 46-34-26 +always ì¡¥ 46-34-12 +always 졦 46-34-12-3 +always 졧 46-34-3 +always 졨 46-34-3-3 +always ì¡© 46-34-2356 +always 졪 46-34-13 +always ì¡« 46-34-23 +always 졬 46-34-235 +always ì¡­ 46-34-236 +always ì¡® 46-34-256 +always 졯 46-34-356 +always ì¡° 46-136 +always 족 46-136-1 +always 졲 46-136-1-1 +always 졳 46-136-1-3 +always ì¡´ 46-136-25 +always 졵 46-136-25-13 +always 졶 46-136-25-356 +always ì¡· 46-136-35 +always 졸 46-136-2 +always 졹 46-136-2-1 +always 졺 46-136-2-26 +always ì¡» 46-136-2-12 +always 졼 46-136-2-3 +always 졽 46-136-2-236 +always 졾 46-136-2-256 +always ì¡¿ 46-136-2-356 +always 좀 46-136-26 +always ì¢ 46-136-12 +always 좂 46-136-12-3 +always 좃 46-136-3 +always 좄 46-136-3-3 +always 종 46-136-2356 +always 좆 46-136-13 +always 좇 46-136-23 +always 좈 46-136-235 +always 좉 46-136-236 +always 좊 46-136-256 +always 좋 46-136-356 +always 좌 46-1236 +always ì¢ 46-1236-1 +always 좎 46-1236-1-1 +always ì¢ 46-1236-1-3 +always ì¢ 46-1236-25 +always 좑 46-1236-25-13 +always 좒 46-1236-25-356 +always 좓 46-1236-35 +always 좔 46-1236-2 +always 좕 46-1236-2-1 +always 좖 46-1236-2-26 +always 좗 46-1236-2-12 +always 좘 46-1236-2-3 +always 좙 46-1236-2-236 +always 좚 46-1236-2-256 +always 좛 46-1236-2-356 +always 좜 46-1236-26 +always ì¢ 46-1236-12 +always 좞 46-1236-12-3 +always 좟 46-1236-3 +always 좠 46-1236-3-3 +always 좡 46-1236-2356 +always 좢 46-1236-13 +always 좣 46-1236-23 +always 좤 46-1236-235 +always 좥 46-1236-236 +always 좦 46-1236-256 +always 좧 46-1236-356 +always 좨 46-1236-1235 +always 좩 46-1236-1235-1 +always 좪 46-1236-1235-1-1 +always 좫 46-1236-1235-1-3 +always 좬 46-1236-1235-25 +always 좭 46-1236-1235-25-13 +always 좮 46-1236-1235-25-356 +always 좯 46-1236-1235-35 +always 좰 46-1236-1235-2 +always 좱 46-1236-1235-2-1 +always 좲 46-1236-1235-2-26 +always 좳 46-1236-1235-2-12 +always 좴 46-1236-1235-2-3 +always 좵 46-1236-1235-2-236 +always 좶 46-1236-1235-2-256 +always 좷 46-1236-1235-2-356 +always 좸 46-1236-1235-26 +always 좹 46-1236-1235-12 +always 좺 46-1236-1235-12-3 +always 좻 46-1236-1235-3 +always 좼 46-1236-1235-3-3 +always 좽 46-1236-1235-2356 +always 좾 46-1236-1235-13 +always 좿 46-1236-1235-23 +always 죀 46-1236-1235-235 +always ì£ 46-1236-1235-236 +always 죂 46-1236-1235-256 +always 죃 46-1236-1235-356 +always 죄 46-13456 +always 죅 46-13456-1 +always 죆 46-13456-1-1 +always 죇 46-13456-1-3 +always 죈 46-13456-25 +always 죉 46-13456-25-13 +always 죊 46-13456-25-356 +always 죋 46-13456-35 +always 죌 46-13456-2 +always ì£ 46-13456-2-1 +always 죎 46-13456-2-26 +always ì£ 46-13456-2-12 +always ì£ 46-13456-2-3 +always 죑 46-13456-2-236 +always 죒 46-13456-2-256 +always 죓 46-13456-2-356 +always 죔 46-13456-26 +always 죕 46-13456-12 +always 죖 46-13456-12-3 +always 죗 46-13456-3 +always 죘 46-13456-3-3 +always 죙 46-13456-2356 +always 죚 46-13456-13 +always 죛 46-13456-23 +always 죜 46-13456-235 +always ì£ 46-13456-236 +always 죞 46-13456-256 +always 죟 46-13456-356 +always 죠 46-346 +always 죡 46-346-1 +always 죢 46-346-1-1 +always 죣 46-346-1-3 +always 죤 46-346-25 +always 죥 46-346-25-13 +always 죦 46-346-25-356 +always 죧 46-346-35 +always 죨 46-346-2 +always 죩 46-346-2-1 +always 죪 46-346-2-26 +always 죫 46-346-2-12 +always 죬 46-346-2-3 +always 죭 46-346-2-236 +always 죮 46-346-2-256 +always 죯 46-346-2-356 +always 죰 46-346-26 +always 죱 46-346-12 +always 죲 46-346-12-3 +always 죳 46-346-3 +always 죴 46-346-3-3 +always 죵 46-346-2356 +always 죶 46-346-13 +always 죷 46-346-23 +always 죸 46-346-235 +always 죹 46-346-236 +always 죺 46-346-256 +always 죻 46-346-356 +always 주 46-134 +always 죽 46-134-1 +always 죾 46-134-1-1 +always 죿 46-134-1-3 +always 준 46-134-25 +always ì¤ 46-134-25-13 +always 줂 46-134-25-356 +always 줃 46-134-35 +always 줄 46-134-2 +always 줅 46-134-2-1 +always 줆 46-134-2-26 +always 줇 46-134-2-12 +always 줈 46-134-2-3 +always 줉 46-134-2-236 +always 줊 46-134-2-256 +always 줋 46-134-2-356 +always 줌 46-134-26 +always ì¤ 46-134-12 +always 줎 46-134-12-3 +always ì¤ 46-134-3 +always ì¤ 46-134-3-3 +always 중 46-134-2356 +always 줒 46-134-13 +always 줓 46-134-23 +always 줔 46-134-235 +always 줕 46-134-236 +always 줖 46-134-256 +always 줗 46-134-356 +always 줘 46-1234 +always 줙 46-1234-1 +always 줚 46-1234-1-1 +always 줛 46-1234-1-3 +always 줜 46-1234-25 +always ì¤ 46-1234-25-13 +always 줞 46-1234-25-356 +always 줟 46-1234-35 +always 줠 46-1234-2 +always 줡 46-1234-2-1 +always 줢 46-1234-2-26 +always 줣 46-1234-2-12 +always 줤 46-1234-2-3 +always 줥 46-1234-2-236 +always 줦 46-1234-2-256 +always 줧 46-1234-2-356 +always 줨 46-1234-26 +always 줩 46-1234-12 +always 줪 46-1234-12-3 +always 줫 46-1234-3 +always 줬 46-1234-3-3 +always 줭 46-1234-2356 +always 줮 46-1234-13 +always 줯 46-1234-23 +always 줰 46-1234-235 +always 줱 46-1234-236 +always 줲 46-1234-256 +always 줳 46-1234-356 +always 줴 46-1234-1235 +always 줵 46-1234-1235-1 +always 줶 46-1234-1235-1-1 +always 줷 46-1234-1235-1-3 +always 줸 46-1234-1235-25 +always 줹 46-1234-1235-25-13 +always 줺 46-1234-1235-25-356 +always 줻 46-1234-1235-35 +always 줼 46-1234-1235-2 +always 줽 46-1234-1235-2-1 +always 줾 46-1234-1235-2-26 +always 줿 46-1234-1235-2-12 +always 쥀 46-1234-1235-2-3 +always ì¥ 46-1234-1235-2-236 +always 쥂 46-1234-1235-2-256 +always 쥃 46-1234-1235-2-356 +always 쥄 46-1234-1235-26 +always 쥅 46-1234-1235-12 +always 쥆 46-1234-1235-12-3 +always 쥇 46-1234-1235-3 +always 쥈 46-1234-1235-3-3 +always 쥉 46-1234-1235-2356 +always 쥊 46-1234-1235-13 +always 쥋 46-1234-1235-23 +always 쥌 46-1234-1235-235 +always ì¥ 46-1234-1235-236 +always 쥎 46-1234-1235-256 +always ì¥ 46-1234-1235-356 +always ì¥ 46-134-1235 +always 쥑 46-134-1235-1 +always 쥒 46-134-1235-1-1 +always 쥓 46-134-1235-1-3 +always 쥔 46-134-1235-25 +always 쥕 46-134-1235-25-13 +always 쥖 46-134-1235-25-356 +always 쥗 46-134-1235-35 +always 쥘 46-134-1235-2 +always 쥙 46-134-1235-2-1 +always 쥚 46-134-1235-2-26 +always 쥛 46-134-1235-2-12 +always 쥜 46-134-1235-2-3 +always ì¥ 46-134-1235-2-236 +always 쥞 46-134-1235-2-256 +always 쥟 46-134-1235-2-356 +always 쥠 46-134-1235-26 +always 쥡 46-134-1235-12 +always 쥢 46-134-1235-12-3 +always 쥣 46-134-1235-3 +always 쥤 46-134-1235-3-3 +always 쥥 46-134-1235-2356 +always 쥦 46-134-1235-13 +always 쥧 46-134-1235-23 +always 쥨 46-134-1235-235 +always 쥩 46-134-1235-236 +always 쥪 46-134-1235-256 +always 쥫 46-134-1235-356 +always 쥬 46-146 +always 쥭 46-146-1 +always 쥮 46-146-1-1 +always 쥯 46-146-1-3 +always 쥰 46-146-25 +always 쥱 46-146-25-13 +always 쥲 46-146-25-356 +always 쥳 46-146-35 +always 쥴 46-146-2 +always 쥵 46-146-2-1 +always 쥶 46-146-2-26 +always 쥷 46-146-2-12 +always 쥸 46-146-2-3 +always 쥹 46-146-2-236 +always 쥺 46-146-2-256 +always 쥻 46-146-2-356 +always 쥼 46-146-26 +always 쥽 46-146-12 +always 쥾 46-146-12-3 +always 쥿 46-146-3 +always 즀 46-146-3-3 +always ì¦ 46-146-2356 +always 즂 46-146-13 +always 즃 46-146-23 +always 즄 46-146-235 +always 즅 46-146-236 +always 즆 46-146-256 +always 즇 46-146-356 +always 즈 46-246 +always 즉 46-246-1 +always 즊 46-246-1-1 +always 즋 46-246-1-3 +always 즌 46-246-25 +always ì¦ 46-246-25-13 +always 즎 46-246-25-356 +always ì¦ 46-246-35 +always ì¦ 46-246-2 +always 즑 46-246-2-1 +always 즒 46-246-2-26 +always 즓 46-246-2-12 +always 즔 46-246-2-3 +always 즕 46-246-2-236 +always 즖 46-246-2-256 +always 즗 46-246-2-356 +always 즘 46-246-26 +always 즙 46-246-12 +always 즚 46-246-12-3 +always 즛 46-246-3 +always 즜 46-246-3-3 +always ì¦ 46-246-2356 +always 즞 46-246-13 +always 즟 46-246-23 +always 즠 46-246-235 +always 즡 46-246-236 +always 즢 46-246-256 +always 즣 46-246-356 +always 즤 46-2456 +always 즥 46-2456-1 +always 즦 46-2456-1-1 +always 즧 46-2456-1-3 +always 즨 46-2456-25 +always 즩 46-2456-25-13 +always 즪 46-2456-25-356 +always 즫 46-2456-35 +always 즬 46-2456-2 +always 즭 46-2456-2-1 +always 즮 46-2456-2-26 +always 즯 46-2456-2-12 +always 즰 46-2456-2-3 +always 즱 46-2456-2-236 +always 즲 46-2456-2-256 +always 즳 46-2456-2-356 +always 즴 46-2456-26 +always 즵 46-2456-12 +always 즶 46-2456-12-3 +always 즷 46-2456-3 +always 즸 46-2456-3-3 +always 즹 46-2456-2356 +always 즺 46-2456-13 +always 즻 46-2456-23 +always 즼 46-2456-235 +always 즽 46-2456-236 +always 즾 46-2456-256 +always 즿 46-2456-356 +always 지 46-135 +always ì§ 46-135-1 +always 짂 46-135-1-1 +always 짃 46-135-1-3 +always 진 46-135-25 +always 짅 46-135-25-13 +always 짆 46-135-25-356 +always 짇 46-135-35 +always 질 46-135-2 +always 짉 46-135-2-1 +always 짊 46-135-2-26 +always 짋 46-135-2-12 +always 짌 46-135-2-3 +always ì§ 46-135-2-236 +always 짎 46-135-2-256 +always ì§ 46-135-2-356 +always ì§ 46-135-26 +always 집 46-135-12 +always 짒 46-135-12-3 +always 짓 46-135-3 +always 짔 46-135-3-3 +always 징 46-135-2356 +always 짖 46-135-13 +always 짗 46-135-23 +always 짘 46-135-235 +always 짙 46-135-236 +always 짚 46-135-256 +always 짛 46-135-356 +always 짜 46-46-126 +always ì§ 46-46-126-1 +always 짞 46-46-126-1-1 +always 짟 46-46-126-1-3 +always 짠 46-46-126-25 +always 짡 46-46-126-25-13 +always 짢 46-46-126-25-356 +always 짣 46-46-126-35 +always 짤 46-46-126-2 +always 짥 46-46-126-2-1 +always 짦 46-46-126-2-26 +always 짧 46-46-126-2-12 +always 짨 46-46-126-2-3 +always 짩 46-46-126-2-236 +always 짪 46-46-126-2-256 +always 짫 46-46-126-2-356 +always 짬 46-46-126-26 +always 짭 46-46-126-12 +always 짮 46-46-126-12-3 +always 짯 46-46-126-3 +always 짰 46-46-126-3-3 +always 짱 46-46-126-2356 +always 짲 46-46-126-13 +always 짳 46-46-126-23 +always 짴 46-46-126-235 +always 짵 46-46-126-236 +always 짶 46-46-126-256 +always 짷 46-46-126-356 +always 째 46-46-1235 +always 짹 46-46-1235-1 +always 짺 46-46-1235-1-1 +always 짻 46-46-1235-1-3 +always 짼 46-46-1235-25 +always 짽 46-46-1235-25-13 +always 짾 46-46-1235-25-356 +always 짿 46-46-1235-35 +always 쨀 46-46-1235-2 +always ì¨ 46-46-1235-2-1 +always 쨂 46-46-1235-2-26 +always 쨃 46-46-1235-2-12 +always 쨄 46-46-1235-2-3 +always 쨅 46-46-1235-2-236 +always 쨆 46-46-1235-2-256 +always 쨇 46-46-1235-2-356 +always 쨈 46-46-1235-26 +always 쨉 46-46-1235-12 +always 쨊 46-46-1235-12-3 +always 쨋 46-46-1235-3 +always 쨌 46-46-1235-3-3 +always ì¨ 46-46-1235-2356 +always 쨎 46-46-1235-13 +always ì¨ 46-46-1235-23 +always ì¨ 46-46-1235-235 +always 쨑 46-46-1235-236 +always 쨒 46-46-1235-256 +always 쨓 46-46-1235-356 +always 쨔 46-46-345 +always 쨕 46-46-345-1 +always 쨖 46-46-345-1-1 +always 쨗 46-46-345-1-3 +always 쨘 46-46-345-25 +always 쨙 46-46-345-25-13 +always 쨚 46-46-345-25-356 +always 쨛 46-46-345-35 +always 쨜 46-46-345-2 +always ì¨ 46-46-345-2-1 +always 쨞 46-46-345-2-26 +always 쨟 46-46-345-2-12 +always 쨠 46-46-345-2-3 +always 쨡 46-46-345-2-236 +always 쨢 46-46-345-2-256 +always 쨣 46-46-345-2-356 +always 쨤 46-46-345-26 +always 쨥 46-46-345-12 +always 쨦 46-46-345-12-3 +always 쨧 46-46-345-3 +always 쨨 46-46-345-3-3 +always 쨩 46-46-345-2356 +always 쨪 46-46-345-13 +always 쨫 46-46-345-23 +always 쨬 46-46-345-235 +always 쨭 46-46-345-236 +always 쨮 46-46-345-256 +always 쨯 46-46-345-356 +always 쨰 46-46-345-1235 +always 쨱 46-46-345-1235-1 +always 쨲 46-46-345-1235-1-1 +always 쨳 46-46-345-1235-1-3 +always 쨴 46-46-345-1235-25 +always 쨵 46-46-345-1235-25-13 +always 쨶 46-46-345-1235-25-356 +always 쨷 46-46-345-1235-35 +always 쨸 46-46-345-1235-2 +always 쨹 46-46-345-1235-2-1 +always 쨺 46-46-345-1235-2-26 +always 쨻 46-46-345-1235-2-12 +always 쨼 46-46-345-1235-2-3 +always 쨽 46-46-345-1235-2-236 +always 쨾 46-46-345-1235-2-256 +always 쨿 46-46-345-1235-2-356 +always ì©€ 46-46-345-1235-26 +always ì© 46-46-345-1235-12 +always ì©‚ 46-46-345-1235-12-3 +always 쩃 46-46-345-1235-3 +always ì©„ 46-46-345-1235-3-3 +always ì©… 46-46-345-1235-2356 +always 쩆 46-46-345-1235-13 +always 쩇 46-46-345-1235-23 +always 쩈 46-46-345-1235-235 +always 쩉 46-46-345-1235-236 +always ì©Š 46-46-345-1235-256 +always ì©‹ 46-46-345-1235-356 +always ì©Œ 46-46-234 +always ì© 46-46-234-1 +always ì©Ž 46-46-234-1-1 +always ì© 46-46-234-1-3 +always ì© 46-46-234-25 +always ì©‘ 46-46-234-25-13 +always ì©’ 46-46-234-25-356 +always ì©“ 46-46-234-35 +always ì©” 46-46-234-2 +always ì©• 46-46-234-2-1 +always ì©– 46-46-234-2-26 +always ì©— 46-46-234-2-12 +always 쩘 46-46-234-2-3 +always ì©™ 46-46-234-2-236 +always ì©š 46-46-234-2-256 +always ì©› 46-46-234-2-356 +always ì©œ 46-46-234-26 +always ì© 46-46-234-12 +always ì©ž 46-46-234-12-3 +always ì©Ÿ 46-46-234-3 +always ì©  46-46-234-3-3 +always ì©¡ 46-46-234-2356 +always ì©¢ 46-46-234-13 +always ì©£ 46-46-234-23 +always 쩤 46-46-234-235 +always ì©¥ 46-46-234-236 +always 쩦 46-46-234-256 +always 쩧 46-46-234-356 +always 쩨 46-46-1345 +always ì©© 46-46-1345-1 +always 쩪 46-46-1345-1-1 +always ì©« 46-46-1345-1-3 +always 쩬 46-46-1345-25 +always ì©­ 46-46-1345-25-13 +always ì©® 46-46-1345-25-356 +always 쩯 46-46-1345-35 +always ì©° 46-46-1345-2 +always 쩱 46-46-1345-2-1 +always 쩲 46-46-1345-2-26 +always 쩳 46-46-1345-2-12 +always ì©´ 46-46-1345-2-3 +always 쩵 46-46-1345-2-236 +always 쩶 46-46-1345-2-256 +always ì©· 46-46-1345-2-356 +always 쩸 46-46-1345-26 +always 쩹 46-46-1345-12 +always 쩺 46-46-1345-12-3 +always ì©» 46-46-1345-3 +always 쩼 46-46-1345-3-3 +always 쩽 46-46-1345-2356 +always 쩾 46-46-1345-13 +always ì©¿ 46-46-1345-23 +always 쪀 46-46-1345-235 +always ìª 46-46-1345-236 +always 쪂 46-46-1345-256 +always 쪃 46-46-1345-356 +always 쪄 46-46-156 +always 쪅 46-46-156-1 +always 쪆 46-46-156-1-1 +always 쪇 46-46-156-1-3 +always 쪈 46-46-156-25 +always 쪉 46-46-156-25-13 +always 쪊 46-46-156-25-356 +always 쪋 46-46-156-35 +always 쪌 46-46-156-2 +always ìª 46-46-156-2-1 +always 쪎 46-46-156-2-26 +always ìª 46-46-156-2-12 +always ìª 46-46-156-2-3 +always 쪑 46-46-156-2-236 +always 쪒 46-46-156-2-256 +always 쪓 46-46-156-2-356 +always 쪔 46-46-156-26 +always 쪕 46-46-156-12 +always 쪖 46-46-156-12-3 +always 쪗 46-46-156-3 +always 쪘 46-46-156-3-3 +always 쪙 46-46-156-2356 +always 쪚 46-46-156-13 +always 쪛 46-46-156-23 +always 쪜 46-46-156-235 +always ìª 46-46-156-236 +always 쪞 46-46-156-256 +always 쪟 46-46-156-356 +always 쪠 46-46-34 +always 쪡 46-46-34-1 +always 쪢 46-46-34-1-1 +always 쪣 46-46-34-1-3 +always 쪤 46-46-34-25 +always 쪥 46-46-34-25-13 +always 쪦 46-46-34-25-356 +always 쪧 46-46-34-35 +always 쪨 46-46-34-2 +always 쪩 46-46-34-2-1 +always 쪪 46-46-34-2-26 +always 쪫 46-46-34-2-12 +always 쪬 46-46-34-2-3 +always 쪭 46-46-34-2-236 +always 쪮 46-46-34-2-256 +always 쪯 46-46-34-2-356 +always 쪰 46-46-34-26 +always 쪱 46-46-34-12 +always 쪲 46-46-34-12-3 +always 쪳 46-46-34-3 +always 쪴 46-46-34-3-3 +always 쪵 46-46-34-2356 +always 쪶 46-46-34-13 +always 쪷 46-46-34-23 +always 쪸 46-46-34-235 +always 쪹 46-46-34-236 +always 쪺 46-46-34-256 +always 쪻 46-46-34-356 +always 쪼 46-46-136 +always 쪽 46-46-136-1 +always 쪾 46-46-136-1-1 +always 쪿 46-46-136-1-3 +always ì«€ 46-46-136-25 +always ì« 46-46-136-25-13 +always ì«‚ 46-46-136-25-356 +always 쫃 46-46-136-35 +always ì«„ 46-46-136-2 +always ì«… 46-46-136-2-1 +always 쫆 46-46-136-2-26 +always 쫇 46-46-136-2-12 +always 쫈 46-46-136-2-3 +always 쫉 46-46-136-2-236 +always ì«Š 46-46-136-2-256 +always ì«‹ 46-46-136-2-356 +always ì«Œ 46-46-136-26 +always ì« 46-46-136-12 +always ì«Ž 46-46-136-12-3 +always ì« 46-46-136-3 +always ì« 46-46-136-3-3 +always ì«‘ 46-46-136-2356 +always ì«’ 46-46-136-13 +always ì«“ 46-46-136-23 +always ì«” 46-46-136-235 +always ì«• 46-46-136-236 +always ì«– 46-46-136-256 +always ì«— 46-46-136-356 +always 쫘 46-46-1236 +always ì«™ 46-46-1236-1 +always ì«š 46-46-1236-1-1 +always ì«› 46-46-1236-1-3 +always ì«œ 46-46-1236-25 +always ì« 46-46-1236-25-13 +always ì«ž 46-46-1236-25-356 +always ì«Ÿ 46-46-1236-35 +always ì«  46-46-1236-2 +always ì«¡ 46-46-1236-2-1 +always ì«¢ 46-46-1236-2-26 +always ì«£ 46-46-1236-2-12 +always 쫤 46-46-1236-2-3 +always ì«¥ 46-46-1236-2-236 +always 쫦 46-46-1236-2-256 +always 쫧 46-46-1236-2-356 +always 쫨 46-46-1236-26 +always ì«© 46-46-1236-12 +always 쫪 46-46-1236-12-3 +always ì«« 46-46-1236-3 +always 쫬 46-46-1236-3-3 +always ì«­ 46-46-1236-2356 +always ì«® 46-46-1236-13 +always 쫯 46-46-1236-23 +always ì«° 46-46-1236-235 +always 쫱 46-46-1236-236 +always 쫲 46-46-1236-256 +always 쫳 46-46-1236-356 +always ì«´ 46-46-1236-1235 +always 쫵 46-46-1236-1235-1 +always 쫶 46-46-1236-1235-1-1 +always ì«· 46-46-1236-1235-1-3 +always 쫸 46-46-1236-1235-25 +always 쫹 46-46-1236-1235-25-13 +always 쫺 46-46-1236-1235-25-356 +always ì«» 46-46-1236-1235-35 +always 쫼 46-46-1236-1235-2 +always 쫽 46-46-1236-1235-2-1 +always 쫾 46-46-1236-1235-2-26 +always ì«¿ 46-46-1236-1235-2-12 +always 쬀 46-46-1236-1235-2-3 +always ì¬ 46-46-1236-1235-2-236 +always 쬂 46-46-1236-1235-2-256 +always 쬃 46-46-1236-1235-2-356 +always 쬄 46-46-1236-1235-26 +always 쬅 46-46-1236-1235-12 +always 쬆 46-46-1236-1235-12-3 +always 쬇 46-46-1236-1235-3 +always 쬈 46-46-1236-1235-3-3 +always 쬉 46-46-1236-1235-2356 +always 쬊 46-46-1236-1235-13 +always 쬋 46-46-1236-1235-23 +always 쬌 46-46-1236-1235-235 +always ì¬ 46-46-1236-1235-236 +always 쬎 46-46-1236-1235-256 +always ì¬ 46-46-1236-1235-356 +always ì¬ 46-46-13456 +always 쬑 46-46-13456-1 +always 쬒 46-46-13456-1-1 +always 쬓 46-46-13456-1-3 +always 쬔 46-46-13456-25 +always 쬕 46-46-13456-25-13 +always 쬖 46-46-13456-25-356 +always 쬗 46-46-13456-35 +always 쬘 46-46-13456-2 +always 쬙 46-46-13456-2-1 +always 쬚 46-46-13456-2-26 +always 쬛 46-46-13456-2-12 +always 쬜 46-46-13456-2-3 +always ì¬ 46-46-13456-2-236 +always 쬞 46-46-13456-2-256 +always 쬟 46-46-13456-2-356 +always 쬠 46-46-13456-26 +always 쬡 46-46-13456-12 +always 쬢 46-46-13456-12-3 +always 쬣 46-46-13456-3 +always 쬤 46-46-13456-3-3 +always 쬥 46-46-13456-2356 +always 쬦 46-46-13456-13 +always 쬧 46-46-13456-23 +always 쬨 46-46-13456-235 +always 쬩 46-46-13456-236 +always 쬪 46-46-13456-256 +always 쬫 46-46-13456-356 +always 쬬 46-46-346 +always 쬭 46-46-346-1 +always 쬮 46-46-346-1-1 +always 쬯 46-46-346-1-3 +always 쬰 46-46-346-25 +always 쬱 46-46-346-25-13 +always 쬲 46-46-346-25-356 +always 쬳 46-46-346-35 +always 쬴 46-46-346-2 +always 쬵 46-46-346-2-1 +always 쬶 46-46-346-2-26 +always 쬷 46-46-346-2-12 +always 쬸 46-46-346-2-3 +always 쬹 46-46-346-2-236 +always 쬺 46-46-346-2-256 +always 쬻 46-46-346-2-356 +always 쬼 46-46-346-26 +always 쬽 46-46-346-12 +always 쬾 46-46-346-12-3 +always 쬿 46-46-346-3 +always ì­€ 46-46-346-3-3 +always ì­ 46-46-346-2356 +always ì­‚ 46-46-346-13 +always ì­ƒ 46-46-346-23 +always ì­„ 46-46-346-235 +always ì­… 46-46-346-236 +always ì­† 46-46-346-256 +always ì­‡ 46-46-346-356 +always ì­ˆ 46-46-134 +always ì­‰ 46-46-134-1 +always ì­Š 46-46-134-1-1 +always ì­‹ 46-46-134-1-3 +always ì­Œ 46-46-134-25 +always ì­ 46-46-134-25-13 +always ì­Ž 46-46-134-25-356 +always ì­ 46-46-134-35 +always ì­ 46-46-134-2 +always ì­‘ 46-46-134-2-1 +always ì­’ 46-46-134-2-26 +always ì­“ 46-46-134-2-12 +always ì­” 46-46-134-2-3 +always ì­• 46-46-134-2-236 +always ì­– 46-46-134-2-256 +always ì­— 46-46-134-2-356 +always ì­˜ 46-46-134-26 +always ì­™ 46-46-134-12 +always ì­š 46-46-134-12-3 +always ì­› 46-46-134-3 +always ì­œ 46-46-134-3-3 +always ì­ 46-46-134-2356 +always ì­ž 46-46-134-13 +always ì­Ÿ 46-46-134-23 +always ì­  46-46-134-235 +always ì­¡ 46-46-134-236 +always ì­¢ 46-46-134-256 +always ì­£ 46-46-134-356 +always ì­¤ 46-46-1234 +always ì­¥ 46-46-1234-1 +always ì­¦ 46-46-1234-1-1 +always ì­§ 46-46-1234-1-3 +always ì­¨ 46-46-1234-25 +always ì­© 46-46-1234-25-13 +always ì­ª 46-46-1234-25-356 +always ì­« 46-46-1234-35 +always ì­¬ 46-46-1234-2 +always ì­­ 46-46-1234-2-1 +always ì­® 46-46-1234-2-26 +always ì­¯ 46-46-1234-2-12 +always ì­° 46-46-1234-2-3 +always ì­± 46-46-1234-2-236 +always ì­² 46-46-1234-2-256 +always ì­³ 46-46-1234-2-356 +always ì­´ 46-46-1234-26 +always ì­µ 46-46-1234-12 +always ì­¶ 46-46-1234-12-3 +always ì­· 46-46-1234-3 +always ì­¸ 46-46-1234-3-3 +always ì­¹ 46-46-1234-2356 +always ì­º 46-46-1234-13 +always ì­» 46-46-1234-23 +always ì­¼ 46-46-1234-235 +always ì­½ 46-46-1234-236 +always ì­¾ 46-46-1234-256 +always ì­¿ 46-46-1234-356 +always 쮀 46-46-1234-1235 +always ì® 46-46-1234-1235-1 +always 쮂 46-46-1234-1235-1-1 +always 쮃 46-46-1234-1235-1-3 +always 쮄 46-46-1234-1235-25 +always ì®… 46-46-1234-1235-25-13 +always 쮆 46-46-1234-1235-25-356 +always 쮇 46-46-1234-1235-35 +always 쮈 46-46-1234-1235-2 +always 쮉 46-46-1234-1235-2-1 +always 쮊 46-46-1234-1235-2-26 +always 쮋 46-46-1234-1235-2-12 +always 쮌 46-46-1234-1235-2-3 +always ì® 46-46-1234-1235-2-236 +always 쮎 46-46-1234-1235-2-256 +always ì® 46-46-1234-1235-2-356 +always ì® 46-46-1234-1235-26 +always 쮑 46-46-1234-1235-12 +always ì®’ 46-46-1234-1235-12-3 +always 쮓 46-46-1234-1235-3 +always ì®” 46-46-1234-1235-3-3 +always 쮕 46-46-1234-1235-2356 +always ì®– 46-46-1234-1235-13 +always ì®— 46-46-1234-1235-23 +always 쮘 46-46-1234-1235-235 +always ì®™ 46-46-1234-1235-236 +always 쮚 46-46-1234-1235-256 +always ì®› 46-46-1234-1235-356 +always 쮜 46-46-134-1235 +always ì® 46-46-134-1235-1 +always 쮞 46-46-134-1235-1-1 +always 쮟 46-46-134-1235-1-3 +always ì®  46-46-134-1235-25 +always 쮡 46-46-134-1235-25-13 +always 쮢 46-46-134-1235-25-356 +always 쮣 46-46-134-1235-35 +always 쮤 46-46-134-1235-2 +always 쮥 46-46-134-1235-2-1 +always 쮦 46-46-134-1235-2-26 +always 쮧 46-46-134-1235-2-12 +always 쮨 46-46-134-1235-2-3 +always 쮩 46-46-134-1235-2-236 +always 쮪 46-46-134-1235-2-256 +always 쮫 46-46-134-1235-2-356 +always 쮬 46-46-134-1235-26 +always ì®­ 46-46-134-1235-12 +always ì®® 46-46-134-1235-12-3 +always 쮯 46-46-134-1235-3 +always ì®° 46-46-134-1235-3-3 +always ì®± 46-46-134-1235-2356 +always 쮲 46-46-134-1235-13 +always 쮳 46-46-134-1235-23 +always ì®´ 46-46-134-1235-235 +always 쮵 46-46-134-1235-236 +always 쮶 46-46-134-1235-256 +always ì®· 46-46-134-1235-356 +always 쮸 46-46-146 +always 쮹 46-46-146-1 +always 쮺 46-46-146-1-1 +always ì®» 46-46-146-1-3 +always 쮼 46-46-146-25 +always 쮽 46-46-146-25-13 +always 쮾 46-46-146-25-356 +always 쮿 46-46-146-35 +always 쯀 46-46-146-2 +always ì¯ 46-46-146-2-1 +always 쯂 46-46-146-2-26 +always 쯃 46-46-146-2-12 +always 쯄 46-46-146-2-3 +always 쯅 46-46-146-2-236 +always 쯆 46-46-146-2-256 +always 쯇 46-46-146-2-356 +always 쯈 46-46-146-26 +always 쯉 46-46-146-12 +always 쯊 46-46-146-12-3 +always 쯋 46-46-146-3 +always 쯌 46-46-146-3-3 +always ì¯ 46-46-146-2356 +always 쯎 46-46-146-13 +always ì¯ 46-46-146-23 +always ì¯ 46-46-146-235 +always 쯑 46-46-146-236 +always 쯒 46-46-146-256 +always 쯓 46-46-146-356 +always 쯔 46-46-246 +always 쯕 46-46-246-1 +always 쯖 46-46-246-1-1 +always 쯗 46-46-246-1-3 +always 쯘 46-46-246-25 +always 쯙 46-46-246-25-13 +always 쯚 46-46-246-25-356 +always 쯛 46-46-246-35 +always 쯜 46-46-246-2 +always ì¯ 46-46-246-2-1 +always 쯞 46-46-246-2-26 +always 쯟 46-46-246-2-12 +always 쯠 46-46-246-2-3 +always 쯡 46-46-246-2-236 +always 쯢 46-46-246-2-256 +always 쯣 46-46-246-2-356 +always 쯤 46-46-246-26 +always 쯥 46-46-246-12 +always 쯦 46-46-246-12-3 +always 쯧 46-46-246-3 +always 쯨 46-46-246-3-3 +always 쯩 46-46-246-2356 +always 쯪 46-46-246-13 +always 쯫 46-46-246-23 +always 쯬 46-46-246-235 +always 쯭 46-46-246-236 +always 쯮 46-46-246-256 +always 쯯 46-46-246-356 +always 쯰 46-46-2456 +always 쯱 46-46-2456-1 +always 쯲 46-46-2456-1-1 +always 쯳 46-46-2456-1-3 +always 쯴 46-46-2456-25 +always 쯵 46-46-2456-25-13 +always 쯶 46-46-2456-25-356 +always 쯷 46-46-2456-35 +always 쯸 46-46-2456-2 +always 쯹 46-46-2456-2-1 +always 쯺 46-46-2456-2-26 +always 쯻 46-46-2456-2-12 +always 쯼 46-46-2456-2-3 +always 쯽 46-46-2456-2-236 +always 쯾 46-46-2456-2-256 +always 쯿 46-46-2456-2-356 +always ì°€ 46-46-2456-26 +always ì° 46-46-2456-12 +always ì°‚ 46-46-2456-12-3 +always ì°ƒ 46-46-2456-3 +always ì°„ 46-46-2456-3-3 +always ì°… 46-46-2456-2356 +always ì°† 46-46-2456-13 +always ì°‡ 46-46-2456-23 +always ì°ˆ 46-46-2456-235 +always ì°‰ 46-46-2456-236 +always ì°Š 46-46-2456-256 +always ì°‹ 46-46-2456-356 +always ì°Œ 46-46-135 +always ì° 46-46-135-1 +always ì°Ž 46-46-135-1-1 +always ì° 46-46-135-1-3 +always ì° 46-46-135-25 +always ì°‘ 46-46-135-25-13 +always ì°’ 46-46-135-25-356 +always ì°“ 46-46-135-35 +always ì°” 46-46-135-2 +always ì°• 46-46-135-2-1 +always ì°– 46-46-135-2-26 +always ì°— 46-46-135-2-12 +always ì°˜ 46-46-135-2-3 +always ì°™ 46-46-135-2-236 +always ì°š 46-46-135-2-256 +always ì°› 46-46-135-2-356 +always ì°œ 46-46-135-26 +always ì° 46-46-135-12 +always ì°ž 46-46-135-12-3 +always ì°Ÿ 46-46-135-3 +always ì°  46-46-135-3-3 +always ì°¡ 46-46-135-2356 +always ì°¢ 46-46-135-13 +always ì°£ 46-46-135-23 +always ì°¤ 46-46-135-235 +always ì°¥ 46-46-135-236 +always ì°¦ 46-46-135-256 +always ì°§ 46-46-135-356 +always ì°¨ 56-126 +always ì°© 56-126-1 +always ì°ª 56-126-1-1 +always ì°« 56-126-1-3 +always ì°¬ 56-126-25 +always ì°­ 56-126-25-13 +always ì°® 56-126-25-356 +always ì°¯ 56-126-35 +always ì°° 56-126-2 +always ì°± 56-126-2-1 +always ì°² 56-126-2-26 +always ì°³ 56-126-2-12 +always ì°´ 56-126-2-3 +always ì°µ 56-126-2-236 +always ì°¶ 56-126-2-256 +always ì°· 56-126-2-356 +always ì°¸ 56-126-26 +always ì°¹ 56-126-12 +always ì°º 56-126-12-3 +always ì°» 56-126-3 +always ì°¼ 56-126-3-3 +always ì°½ 56-126-2356 +always ì°¾ 56-126-13 +always ì°¿ 56-126-23 +always ì±€ 56-126-235 +always ì± 56-126-236 +always 챂 56-126-256 +always 챃 56-126-356 +always 채 56-1235 +always ì±… 56-1235-1 +always 챆 56-1235-1-1 +always 챇 56-1235-1-3 +always 챈 56-1235-25 +always 챉 56-1235-25-13 +always 챊 56-1235-25-356 +always 챋 56-1235-35 +always 챌 56-1235-2 +always ì± 56-1235-2-1 +always 챎 56-1235-2-26 +always ì± 56-1235-2-12 +always ì± 56-1235-2-3 +always 챑 56-1235-2-236 +always ì±’ 56-1235-2-256 +always 챓 56-1235-2-356 +always ì±” 56-1235-26 +always 챕 56-1235-12 +always ì±– 56-1235-12-3 +always ì±— 56-1235-3 +always 챘 56-1235-3-3 +always ì±™ 56-1235-2356 +always 챚 56-1235-13 +always ì±› 56-1235-23 +always 챜 56-1235-235 +always ì± 56-1235-236 +always 챞 56-1235-256 +always 챟 56-1235-356 +always ì±  56-345 +always 챡 56-345-1 +always ì±¢ 56-345-1-1 +always ì±£ 56-345-1-3 +always 챤 56-345-25 +always ì±¥ 56-345-25-13 +always 챦 56-345-25-356 +always 챧 56-345-35 +always 챨 56-345-2 +always 챩 56-345-2-1 +always 챪 56-345-2-26 +always 챫 56-345-2-12 +always 챬 56-345-2-3 +always ì±­ 56-345-2-236 +always ì±® 56-345-2-256 +always 챯 56-345-2-356 +always ì±° 56-345-26 +always ì±± 56-345-12 +always ì±² 56-345-12-3 +always ì±³ 56-345-3 +always ì±´ 56-345-3-3 +always ì±µ 56-345-2356 +always 챶 56-345-13 +always ì±· 56-345-23 +always 챸 56-345-235 +always ì±¹ 56-345-236 +always 챺 56-345-256 +always ì±» 56-345-356 +always ì±¼ 56-345-1235 +always ì±½ 56-345-1235-1 +always ì±¾ 56-345-1235-1-1 +always 챿 56-345-1235-1-3 +always ì²€ 56-345-1235-25 +always ì² 56-345-1235-25-13 +always 첂 56-345-1235-25-356 +always 첃 56-345-1235-35 +always 첄 56-345-1235-2 +always ì²… 56-345-1235-2-1 +always 첆 56-345-1235-2-26 +always 첇 56-345-1235-2-12 +always 첈 56-345-1235-2-3 +always 첉 56-345-1235-2-236 +always 첊 56-345-1235-2-256 +always 첋 56-345-1235-2-356 +always 첌 56-345-1235-26 +always ì² 56-345-1235-12 +always 첎 56-345-1235-12-3 +always ì² 56-345-1235-3 +always ì² 56-345-1235-3-3 +always 첑 56-345-1235-2356 +always ì²’ 56-345-1235-13 +always 첓 56-345-1235-23 +always ì²” 56-345-1235-235 +always 첕 56-345-1235-236 +always ì²– 56-345-1235-256 +always ì²— 56-345-1235-356 +always 처 56-234 +always ì²™ 56-234-1 +always 첚 56-234-1-1 +always ì²› 56-234-1-3 +always 천 56-234-25 +always ì² 56-234-25-13 +always 첞 56-234-25-356 +always 첟 56-234-35 +always ì²  56-234-2 +always 첡 56-234-2-1 +always ì²¢ 56-234-2-26 +always ì²£ 56-234-2-12 +always 첤 56-234-2-3 +always ì²¥ 56-234-2-236 +always 첦 56-234-2-256 +always 첧 56-234-2-356 +always 첨 56-234-26 +always 첩 56-234-12 +always 첪 56-234-12-3 +always 첫 56-234-3 +always 첬 56-234-3-3 +always ì²­ 56-234-2356 +always ì²® 56-234-13 +always 첯 56-234-23 +always ì²° 56-234-235 +always ì²± 56-234-236 +always ì²² 56-234-256 +always ì²³ 56-234-356 +always ì²´ 56-1345 +always ì²µ 56-1345-1 +always 첶 56-1345-1-1 +always ì²· 56-1345-1-3 +always 첸 56-1345-25 +always ì²¹ 56-1345-25-13 +always 첺 56-1345-25-356 +always ì²» 56-1345-35 +always ì²¼ 56-1345-2 +always ì²½ 56-1345-2-1 +always ì²¾ 56-1345-2-26 +always 첿 56-1345-2-12 +always ì³€ 56-1345-2-3 +always ì³ 56-1345-2-236 +always 쳂 56-1345-2-256 +always 쳃 56-1345-2-356 +always 쳄 56-1345-26 +always ì³… 56-1345-12 +always 쳆 56-1345-12-3 +always 쳇 56-1345-3 +always 쳈 56-1345-3-3 +always 쳉 56-1345-2356 +always 쳊 56-1345-13 +always 쳋 56-1345-23 +always 쳌 56-1345-235 +always ì³ 56-1345-236 +always 쳎 56-1345-256 +always ì³ 56-1345-356 +always ì³ 56-156 +always 쳑 56-156-1 +always ì³’ 56-156-1-1 +always 쳓 56-156-1-3 +always ì³” 56-156-25 +always 쳕 56-156-25-13 +always ì³– 56-156-25-356 +always ì³— 56-156-35 +always 쳘 56-156-2 +always ì³™ 56-156-2-1 +always 쳚 56-156-2-26 +always ì³› 56-156-2-12 +always 쳜 56-156-2-3 +always ì³ 56-156-2-236 +always 쳞 56-156-2-256 +always 쳟 56-156-2-356 +always ì³  56-156-26 +always 쳡 56-156-12 +always ì³¢ 56-156-12-3 +always ì³£ 56-156-3 +always 쳤 56-156-3-3 +always ì³¥ 56-156-2356 +always 쳦 56-156-13 +always 쳧 56-156-23 +always 쳨 56-156-235 +always 쳩 56-156-236 +always 쳪 56-156-256 +always 쳫 56-156-356 +always 쳬 56-34 +always ì³­ 56-34-1 +always ì³® 56-34-1-1 +always 쳯 56-34-1-3 +always ì³° 56-34-25 +always ì³± 56-34-25-13 +always ì³² 56-34-25-356 +always ì³³ 56-34-35 +always ì³´ 56-34-2 +always ì³µ 56-34-2-1 +always 쳶 56-34-2-26 +always ì³· 56-34-2-12 +always 쳸 56-34-2-3 +always ì³¹ 56-34-2-236 +always 쳺 56-34-2-256 +always ì³» 56-34-2-356 +always ì³¼ 56-34-26 +always ì³½ 56-34-12 +always ì³¾ 56-34-12-3 +always 쳿 56-34-3 +always ì´€ 56-34-3-3 +always ì´ 56-34-2356 +always ì´‚ 56-34-13 +always ì´ƒ 56-34-23 +always ì´„ 56-34-235 +always ì´… 56-34-236 +always ì´† 56-34-256 +always ì´‡ 56-34-356 +always ì´ˆ 56-136 +always ì´‰ 56-136-1 +always ì´Š 56-136-1-1 +always ì´‹ 56-136-1-3 +always ì´Œ 56-136-25 +always ì´ 56-136-25-13 +always ì´Ž 56-136-25-356 +always ì´ 56-136-35 +always ì´ 56-136-2 +always ì´‘ 56-136-2-1 +always ì´’ 56-136-2-26 +always ì´“ 56-136-2-12 +always ì´” 56-136-2-3 +always ì´• 56-136-2-236 +always ì´– 56-136-2-256 +always ì´— 56-136-2-356 +always ì´˜ 56-136-26 +always ì´™ 56-136-12 +always ì´š 56-136-12-3 +always ì´› 56-136-3 +always ì´œ 56-136-3-3 +always ì´ 56-136-2356 +always ì´ž 56-136-13 +always ì´Ÿ 56-136-23 +always ì´  56-136-235 +always ì´¡ 56-136-236 +always ì´¢ 56-136-256 +always ì´£ 56-136-356 +always ì´¤ 56-1236 +always ì´¥ 56-1236-1 +always ì´¦ 56-1236-1-1 +always ì´§ 56-1236-1-3 +always ì´¨ 56-1236-25 +always ì´© 56-1236-25-13 +always ì´ª 56-1236-25-356 +always ì´« 56-1236-35 +always ì´¬ 56-1236-2 +always ì´­ 56-1236-2-1 +always ì´® 56-1236-2-26 +always ì´¯ 56-1236-2-12 +always ì´° 56-1236-2-3 +always ì´± 56-1236-2-236 +always ì´² 56-1236-2-256 +always ì´³ 56-1236-2-356 +always ì´´ 56-1236-26 +always ì´µ 56-1236-12 +always ì´¶ 56-1236-12-3 +always ì´· 56-1236-3 +always ì´¸ 56-1236-3-3 +always ì´¹ 56-1236-2356 +always ì´º 56-1236-13 +always ì´» 56-1236-23 +always ì´¼ 56-1236-235 +always ì´½ 56-1236-236 +always ì´¾ 56-1236-256 +always ì´¿ 56-1236-356 +always ìµ€ 56-1236-1235 +always ìµ 56-1236-1235-1 +always 쵂 56-1236-1235-1-1 +always 쵃 56-1236-1235-1-3 +always 쵄 56-1236-1235-25 +always ìµ… 56-1236-1235-25-13 +always 쵆 56-1236-1235-25-356 +always 쵇 56-1236-1235-35 +always 쵈 56-1236-1235-2 +always 쵉 56-1236-1235-2-1 +always 쵊 56-1236-1235-2-26 +always 쵋 56-1236-1235-2-12 +always 쵌 56-1236-1235-2-3 +always ìµ 56-1236-1235-2-236 +always 쵎 56-1236-1235-2-256 +always ìµ 56-1236-1235-2-356 +always ìµ 56-1236-1235-26 +always 쵑 56-1236-1235-12 +always ìµ’ 56-1236-1235-12-3 +always 쵓 56-1236-1235-3 +always ìµ” 56-1236-1235-3-3 +always 쵕 56-1236-1235-2356 +always ìµ– 56-1236-1235-13 +always ìµ— 56-1236-1235-23 +always 쵘 56-1236-1235-235 +always ìµ™ 56-1236-1235-236 +always 쵚 56-1236-1235-256 +always ìµ› 56-1236-1235-356 +always 최 56-13456 +always ìµ 56-13456-1 +always 쵞 56-13456-1-1 +always 쵟 56-13456-1-3 +always ìµ  56-13456-25 +always 쵡 56-13456-25-13 +always ìµ¢ 56-13456-25-356 +always ìµ£ 56-13456-35 +always 쵤 56-13456-2 +always ìµ¥ 56-13456-2-1 +always 쵦 56-13456-2-26 +always 쵧 56-13456-2-12 +always 쵨 56-13456-2-3 +always 쵩 56-13456-2-236 +always 쵪 56-13456-2-256 +always 쵫 56-13456-2-356 +always 쵬 56-13456-26 +always ìµ­ 56-13456-12 +always ìµ® 56-13456-12-3 +always 쵯 56-13456-3 +always ìµ° 56-13456-3-3 +always ìµ± 56-13456-2356 +always ìµ² 56-13456-13 +always ìµ³ 56-13456-23 +always ìµ´ 56-13456-235 +always ìµµ 56-13456-236 +always 쵶 56-13456-256 +always ìµ· 56-13456-356 +always 쵸 56-346 +always ìµ¹ 56-346-1 +always 쵺 56-346-1-1 +always ìµ» 56-346-1-3 +always ìµ¼ 56-346-25 +always ìµ½ 56-346-25-13 +always ìµ¾ 56-346-25-356 +always 쵿 56-346-35 +always 춀 56-346-2 +always ì¶ 56-346-2-1 +always 춂 56-346-2-26 +always 춃 56-346-2-12 +always 춄 56-346-2-3 +always 춅 56-346-2-236 +always 춆 56-346-2-256 +always 춇 56-346-2-356 +always 춈 56-346-26 +always 춉 56-346-12 +always 춊 56-346-12-3 +always 춋 56-346-3 +always 춌 56-346-3-3 +always ì¶ 56-346-2356 +always 춎 56-346-13 +always ì¶ 56-346-23 +always ì¶ 56-346-235 +always 춑 56-346-236 +always 춒 56-346-256 +always 춓 56-346-356 +always 추 56-134 +always 축 56-134-1 +always 춖 56-134-1-1 +always 춗 56-134-1-3 +always 춘 56-134-25 +always 춙 56-134-25-13 +always 춚 56-134-25-356 +always 춛 56-134-35 +always 출 56-134-2 +always ì¶ 56-134-2-1 +always 춞 56-134-2-26 +always 춟 56-134-2-12 +always 춠 56-134-2-3 +always 춡 56-134-2-236 +always 춢 56-134-2-256 +always 춣 56-134-2-356 +always 춤 56-134-26 +always 춥 56-134-12 +always 춦 56-134-12-3 +always 춧 56-134-3 +always 춨 56-134-3-3 +always 충 56-134-2356 +always 춪 56-134-13 +always 춫 56-134-23 +always 춬 56-134-235 +always 춭 56-134-236 +always 춮 56-134-256 +always 춯 56-134-356 +always 춰 56-1234 +always 춱 56-1234-1 +always 춲 56-1234-1-1 +always 춳 56-1234-1-3 +always 춴 56-1234-25 +always 춵 56-1234-25-13 +always 춶 56-1234-25-356 +always 춷 56-1234-35 +always 춸 56-1234-2 +always 춹 56-1234-2-1 +always 춺 56-1234-2-26 +always 춻 56-1234-2-12 +always 춼 56-1234-2-3 +always 춽 56-1234-2-236 +always 춾 56-1234-2-256 +always 춿 56-1234-2-356 +always ì·€ 56-1234-26 +always ì· 56-1234-12 +always ì·‚ 56-1234-12-3 +always ì·ƒ 56-1234-3 +always ì·„ 56-1234-3-3 +always ì·… 56-1234-2356 +always ì·† 56-1234-13 +always ì·‡ 56-1234-23 +always ì·ˆ 56-1234-235 +always ì·‰ 56-1234-236 +always ì·Š 56-1234-256 +always ì·‹ 56-1234-356 +always ì·Œ 56-1234-1235 +always ì· 56-1234-1235-1 +always ì·Ž 56-1234-1235-1-1 +always ì· 56-1234-1235-1-3 +always ì· 56-1234-1235-25 +always ì·‘ 56-1234-1235-25-13 +always ì·’ 56-1234-1235-25-356 +always ì·“ 56-1234-1235-35 +always ì·” 56-1234-1235-2 +always ì·• 56-1234-1235-2-1 +always ì·– 56-1234-1235-2-26 +always ì·— 56-1234-1235-2-12 +always ì·˜ 56-1234-1235-2-3 +always ì·™ 56-1234-1235-2-236 +always ì·š 56-1234-1235-2-256 +always ì·› 56-1234-1235-2-356 +always ì·œ 56-1234-1235-26 +always ì· 56-1234-1235-12 +always ì·ž 56-1234-1235-12-3 +always ì·Ÿ 56-1234-1235-3 +always ì·  56-1234-1235-3-3 +always ì·¡ 56-1234-1235-2356 +always ì·¢ 56-1234-1235-13 +always ì·£ 56-1234-1235-23 +always ì·¤ 56-1234-1235-235 +always ì·¥ 56-1234-1235-236 +always ì·¦ 56-1234-1235-256 +always ì·§ 56-1234-1235-356 +always ì·¨ 56-134-1235 +always ì·© 56-134-1235-1 +always ì·ª 56-134-1235-1-1 +always ì·« 56-134-1235-1-3 +always ì·¬ 56-134-1235-25 +always ì·­ 56-134-1235-25-13 +always ì·® 56-134-1235-25-356 +always ì·¯ 56-134-1235-35 +always ì·° 56-134-1235-2 +always ì·± 56-134-1235-2-1 +always ì·² 56-134-1235-2-26 +always ì·³ 56-134-1235-2-12 +always ì·´ 56-134-1235-2-3 +always ì·µ 56-134-1235-2-236 +always ì·¶ 56-134-1235-2-256 +always ì·· 56-134-1235-2-356 +always ì·¸ 56-134-1235-26 +always ì·¹ 56-134-1235-12 +always ì·º 56-134-1235-12-3 +always ì·» 56-134-1235-3 +always ì·¼ 56-134-1235-3-3 +always ì·½ 56-134-1235-2356 +always ì·¾ 56-134-1235-13 +always ì·¿ 56-134-1235-23 +always 츀 56-134-1235-235 +always ì¸ 56-134-1235-236 +always 츂 56-134-1235-256 +always 츃 56-134-1235-356 +always 츄 56-146 +always 츅 56-146-1 +always 츆 56-146-1-1 +always 츇 56-146-1-3 +always 츈 56-146-25 +always 츉 56-146-25-13 +always 츊 56-146-25-356 +always 츋 56-146-35 +always 츌 56-146-2 +always ì¸ 56-146-2-1 +always 츎 56-146-2-26 +always ì¸ 56-146-2-12 +always ì¸ 56-146-2-3 +always 츑 56-146-2-236 +always 츒 56-146-2-256 +always 츓 56-146-2-356 +always 츔 56-146-26 +always 츕 56-146-12 +always 츖 56-146-12-3 +always 츗 56-146-3 +always 츘 56-146-3-3 +always 츙 56-146-2356 +always 츚 56-146-13 +always 츛 56-146-23 +always 츜 56-146-235 +always ì¸ 56-146-236 +always 츞 56-146-256 +always 츟 56-146-356 +always 츠 56-246 +always 측 56-246-1 +always 츢 56-246-1-1 +always 츣 56-246-1-3 +always 츤 56-246-25 +always 츥 56-246-25-13 +always 츦 56-246-25-356 +always 츧 56-246-35 +always 츨 56-246-2 +always 츩 56-246-2-1 +always 츪 56-246-2-26 +always 츫 56-246-2-12 +always 츬 56-246-2-3 +always 츭 56-246-2-236 +always 츮 56-246-2-256 +always 츯 56-246-2-356 +always 츰 56-246-26 +always 츱 56-246-12 +always 츲 56-246-12-3 +always 츳 56-246-3 +always 츴 56-246-3-3 +always 층 56-246-2356 +always 츶 56-246-13 +always 츷 56-246-23 +always 츸 56-246-235 +always 츹 56-246-236 +always 츺 56-246-256 +always 츻 56-246-356 +always 츼 56-2456 +always 츽 56-2456-1 +always 츾 56-2456-1-1 +always 츿 56-2456-1-3 +always ì¹€ 56-2456-25 +always ì¹ 56-2456-25-13 +always 칂 56-2456-25-356 +always 칃 56-2456-35 +always 칄 56-2456-2 +always ì¹… 56-2456-2-1 +always 칆 56-2456-2-26 +always 칇 56-2456-2-12 +always 칈 56-2456-2-3 +always 칉 56-2456-2-236 +always 칊 56-2456-2-256 +always 칋 56-2456-2-356 +always 칌 56-2456-26 +always ì¹ 56-2456-12 +always 칎 56-2456-12-3 +always ì¹ 56-2456-3 +always ì¹ 56-2456-3-3 +always 칑 56-2456-2356 +always ì¹’ 56-2456-13 +always 칓 56-2456-23 +always ì¹” 56-2456-235 +always 칕 56-2456-236 +always ì¹– 56-2456-256 +always ì¹— 56-2456-356 +always 치 56-135 +always ì¹™ 56-135-1 +always 칚 56-135-1-1 +always ì¹› 56-135-1-3 +always 친 56-135-25 +always ì¹ 56-135-25-13 +always 칞 56-135-25-356 +always 칟 56-135-35 +always ì¹  56-135-2 +always 칡 56-135-2-1 +always ì¹¢ 56-135-2-26 +always ì¹£ 56-135-2-12 +always 칤 56-135-2-3 +always ì¹¥ 56-135-2-236 +always 칦 56-135-2-256 +always 칧 56-135-2-356 +always 침 56-135-26 +always 칩 56-135-12 +always 칪 56-135-12-3 +always 칫 56-135-3 +always 칬 56-135-3-3 +always ì¹­ 56-135-2356 +always ì¹® 56-135-13 +always 칯 56-135-23 +always ì¹° 56-135-235 +always ì¹± 56-135-236 +always ì¹² 56-135-256 +always ì¹³ 56-135-356 +always ì¹´ 124-126 +always ì¹µ 124-126-1 +always 칶 124-126-1-1 +always ì¹· 124-126-1-3 +always 칸 124-126-25 +always ì¹¹ 124-126-25-13 +always 칺 124-126-25-356 +always ì¹» 124-126-35 +always ì¹¼ 124-126-2 +always ì¹½ 124-126-2-1 +always ì¹¾ 124-126-2-26 +always 칿 124-126-2-12 +always 캀 124-126-2-3 +always ìº 124-126-2-236 +always 캂 124-126-2-256 +always 캃 124-126-2-356 +always 캄 124-126-26 +always 캅 124-126-12 +always 캆 124-126-12-3 +always 캇 124-126-3 +always 캈 124-126-3-3 +always 캉 124-126-2356 +always 캊 124-126-13 +always 캋 124-126-23 +always 캌 124-126-235 +always ìº 124-126-236 +always 캎 124-126-256 +always ìº 124-126-356 +always ìº 124-1235 +always 캑 124-1235-1 +always 캒 124-1235-1-1 +always 캓 124-1235-1-3 +always 캔 124-1235-25 +always 캕 124-1235-25-13 +always 캖 124-1235-25-356 +always 캗 124-1235-35 +always 캘 124-1235-2 +always 캙 124-1235-2-1 +always 캚 124-1235-2-26 +always 캛 124-1235-2-12 +always 캜 124-1235-2-3 +always ìº 124-1235-2-236 +always 캞 124-1235-2-256 +always 캟 124-1235-2-356 +always 캠 124-1235-26 +always 캡 124-1235-12 +always 캢 124-1235-12-3 +always 캣 124-1235-3 +always 캤 124-1235-3-3 +always 캥 124-1235-2356 +always 캦 124-1235-13 +always 캧 124-1235-23 +always 캨 124-1235-235 +always 캩 124-1235-236 +always 캪 124-1235-256 +always 캫 124-1235-356 +always 캬 124-345 +always 캭 124-345-1 +always 캮 124-345-1-1 +always 캯 124-345-1-3 +always 캰 124-345-25 +always 캱 124-345-25-13 +always 캲 124-345-25-356 +always 캳 124-345-35 +always 캴 124-345-2 +always 캵 124-345-2-1 +always 캶 124-345-2-26 +always 캷 124-345-2-12 +always 캸 124-345-2-3 +always 캹 124-345-2-236 +always 캺 124-345-2-256 +always 캻 124-345-2-356 +always 캼 124-345-26 +always 캽 124-345-12 +always 캾 124-345-12-3 +always 캿 124-345-3 +always 컀 124-345-3-3 +always ì» 124-345-2356 +always 컂 124-345-13 +always 컃 124-345-23 +always 컄 124-345-235 +always ì»… 124-345-236 +always 컆 124-345-256 +always 컇 124-345-356 +always 컈 124-345-1235 +always 컉 124-345-1235-1 +always 컊 124-345-1235-1-1 +always 컋 124-345-1235-1-3 +always 컌 124-345-1235-25 +always ì» 124-345-1235-25-13 +always 컎 124-345-1235-25-356 +always ì» 124-345-1235-35 +always ì» 124-345-1235-2 +always 컑 124-345-1235-2-1 +always ì»’ 124-345-1235-2-26 +always 컓 124-345-1235-2-12 +always ì»” 124-345-1235-2-3 +always 컕 124-345-1235-2-236 +always ì»– 124-345-1235-2-256 +always ì»— 124-345-1235-2-356 +always 컘 124-345-1235-26 +always ì»™ 124-345-1235-12 +always 컚 124-345-1235-12-3 +always ì»› 124-345-1235-3 +always 컜 124-345-1235-3-3 +always ì» 124-345-1235-2356 +always 컞 124-345-1235-13 +always 컟 124-345-1235-23 +always ì»  124-345-1235-235 +always 컡 124-345-1235-236 +always 컢 124-345-1235-256 +always 컣 124-345-1235-356 +always 커 124-234 +always 컥 124-234-1 +always 컦 124-234-1-1 +always 컧 124-234-1-3 +always 컨 124-234-25 +always 컩 124-234-25-13 +always 컪 124-234-25-356 +always 컫 124-234-35 +always 컬 124-234-2 +always ì»­ 124-234-2-1 +always ì»® 124-234-2-26 +always 컯 124-234-2-12 +always ì»° 124-234-2-3 +always ì»± 124-234-2-236 +always 컲 124-234-2-256 +always 컳 124-234-2-356 +always ì»´ 124-234-26 +always 컵 124-234-12 +always 컶 124-234-12-3 +always ì»· 124-234-3 +always 컸 124-234-3-3 +always 컹 124-234-2356 +always 컺 124-234-13 +always ì»» 124-234-23 +always 컼 124-234-235 +always 컽 124-234-236 +always 컾 124-234-256 +always 컿 124-234-356 +always ì¼€ 124-1345 +always ì¼ 124-1345-1 +always 켂 124-1345-1-1 +always 켃 124-1345-1-3 +always 켄 124-1345-25 +always ì¼… 124-1345-25-13 +always 켆 124-1345-25-356 +always 켇 124-1345-35 +always 켈 124-1345-2 +always 켉 124-1345-2-1 +always 켊 124-1345-2-26 +always 켋 124-1345-2-12 +always 켌 124-1345-2-3 +always ì¼ 124-1345-2-236 +always 켎 124-1345-2-256 +always ì¼ 124-1345-2-356 +always ì¼ 124-1345-26 +always 켑 124-1345-12 +always ì¼’ 124-1345-12-3 +always 켓 124-1345-3 +always ì¼” 124-1345-3-3 +always 켕 124-1345-2356 +always ì¼– 124-1345-13 +always ì¼— 124-1345-23 +always 켘 124-1345-235 +always ì¼™ 124-1345-236 +always 켚 124-1345-256 +always ì¼› 124-1345-356 +always 켜 124-156 +always ì¼ 124-156-1 +always 켞 124-156-1-1 +always 켟 124-156-1-3 +always ì¼  124-156-25 +always 켡 124-156-25-13 +always ì¼¢ 124-156-25-356 +always ì¼£ 124-156-35 +always 켤 124-156-2 +always ì¼¥ 124-156-2-1 +always 켦 124-156-2-26 +always 켧 124-156-2-12 +always 켨 124-156-2-3 +always 켩 124-156-2-236 +always 켪 124-156-2-256 +always 켫 124-156-2-356 +always 켬 124-156-26 +always ì¼­ 124-156-12 +always ì¼® 124-156-12-3 +always 켯 124-156-3 +always ì¼° 124-156-3-3 +always ì¼± 124-156-2356 +always ì¼² 124-156-13 +always ì¼³ 124-156-23 +always ì¼´ 124-156-235 +always ì¼µ 124-156-236 +always 켶 124-156-256 +always ì¼· 124-156-356 +always 켸 124-34 +always ì¼¹ 124-34-1 +always 켺 124-34-1-1 +always ì¼» 124-34-1-3 +always ì¼¼ 124-34-25 +always ì¼½ 124-34-25-13 +always ì¼¾ 124-34-25-356 +always 켿 124-34-35 +always ì½€ 124-34-2 +always ì½ 124-34-2-1 +always 콂 124-34-2-26 +always 콃 124-34-2-12 +always 콄 124-34-2-3 +always ì½… 124-34-2-236 +always 콆 124-34-2-256 +always 콇 124-34-2-356 +always 콈 124-34-26 +always 콉 124-34-12 +always 콊 124-34-12-3 +always 콋 124-34-3 +always 콌 124-34-3-3 +always ì½ 124-34-2356 +always 콎 124-34-13 +always ì½ 124-34-23 +always ì½ 124-34-235 +always 콑 124-34-236 +always ì½’ 124-34-256 +always 콓 124-34-356 +always ì½” 124-136 +always 콕 124-136-1 +always ì½– 124-136-1-1 +always ì½— 124-136-1-3 +always 콘 124-136-25 +always ì½™ 124-136-25-13 +always 콚 124-136-25-356 +always ì½› 124-136-35 +always 콜 124-136-2 +always ì½ 124-136-2-1 +always 콞 124-136-2-26 +always 콟 124-136-2-12 +always ì½  124-136-2-3 +always 콡 124-136-2-236 +always ì½¢ 124-136-2-256 +always ì½£ 124-136-2-356 +always 콤 124-136-26 +always ì½¥ 124-136-12 +always 콦 124-136-12-3 +always 콧 124-136-3 +always 콨 124-136-3-3 +always 콩 124-136-2356 +always 콪 124-136-13 +always 콫 124-136-23 +always 콬 124-136-235 +always ì½­ 124-136-236 +always ì½® 124-136-256 +always 콯 124-136-356 +always ì½° 124-1236 +always ì½± 124-1236-1 +always ì½² 124-1236-1-1 +always ì½³ 124-1236-1-3 +always ì½´ 124-1236-25 +always ì½µ 124-1236-25-13 +always 콶 124-1236-25-356 +always ì½· 124-1236-35 +always 콸 124-1236-2 +always ì½¹ 124-1236-2-1 +always 콺 124-1236-2-26 +always ì½» 124-1236-2-12 +always ì½¼ 124-1236-2-3 +always ì½½ 124-1236-2-236 +always ì½¾ 124-1236-2-256 +always 콿 124-1236-2-356 +always ì¾€ 124-1236-26 +always ì¾ 124-1236-12 +always 쾂 124-1236-12-3 +always 쾃 124-1236-3 +always 쾄 124-1236-3-3 +always ì¾… 124-1236-2356 +always 쾆 124-1236-13 +always 쾇 124-1236-23 +always 쾈 124-1236-235 +always 쾉 124-1236-236 +always 쾊 124-1236-256 +always 쾋 124-1236-356 +always 쾌 124-1236-1235 +always ì¾ 124-1236-1235-1 +always 쾎 124-1236-1235-1-1 +always ì¾ 124-1236-1235-1-3 +always ì¾ 124-1236-1235-25 +always 쾑 124-1236-1235-25-13 +always ì¾’ 124-1236-1235-25-356 +always 쾓 124-1236-1235-35 +always ì¾” 124-1236-1235-2 +always 쾕 124-1236-1235-2-1 +always ì¾– 124-1236-1235-2-26 +always ì¾— 124-1236-1235-2-12 +always 쾘 124-1236-1235-2-3 +always ì¾™ 124-1236-1235-2-236 +always 쾚 124-1236-1235-2-256 +always ì¾› 124-1236-1235-2-356 +always 쾜 124-1236-1235-26 +always ì¾ 124-1236-1235-12 +always 쾞 124-1236-1235-12-3 +always 쾟 124-1236-1235-3 +always ì¾  124-1236-1235-3-3 +always 쾡 124-1236-1235-2356 +always ì¾¢ 124-1236-1235-13 +always ì¾£ 124-1236-1235-23 +always 쾤 124-1236-1235-235 +always ì¾¥ 124-1236-1235-236 +always 쾦 124-1236-1235-256 +always 쾧 124-1236-1235-356 +always 쾨 124-13456 +always 쾩 124-13456-1 +always 쾪 124-13456-1-1 +always 쾫 124-13456-1-3 +always 쾬 124-13456-25 +always ì¾­ 124-13456-25-13 +always ì¾® 124-13456-25-356 +always 쾯 124-13456-35 +always ì¾° 124-13456-2 +always ì¾± 124-13456-2-1 +always ì¾² 124-13456-2-26 +always ì¾³ 124-13456-2-12 +always ì¾´ 124-13456-2-3 +always ì¾µ 124-13456-2-236 +always 쾶 124-13456-2-256 +always ì¾· 124-13456-2-356 +always 쾸 124-13456-26 +always ì¾¹ 124-13456-12 +always 쾺 124-13456-12-3 +always ì¾» 124-13456-3 +always ì¾¼ 124-13456-3-3 +always ì¾½ 124-13456-2356 +always ì¾¾ 124-13456-13 +always 쾿 124-13456-23 +always ì¿€ 124-13456-235 +always ì¿ 124-13456-236 +always ì¿‚ 124-13456-256 +always 쿃 124-13456-356 +always ì¿„ 124-346 +always ì¿… 124-346-1 +always 쿆 124-346-1-1 +always 쿇 124-346-1-3 +always 쿈 124-346-25 +always 쿉 124-346-25-13 +always ì¿Š 124-346-25-356 +always ì¿‹ 124-346-35 +always ì¿Œ 124-346-2 +always ì¿ 124-346-2-1 +always ì¿Ž 124-346-2-26 +always ì¿ 124-346-2-12 +always ì¿ 124-346-2-3 +always ì¿‘ 124-346-2-236 +always ì¿’ 124-346-2-256 +always ì¿“ 124-346-2-356 +always ì¿” 124-346-26 +always ì¿• 124-346-12 +always ì¿– 124-346-12-3 +always ì¿— 124-346-3 +always 쿘 124-346-3-3 +always ì¿™ 124-346-2356 +always ì¿š 124-346-13 +always ì¿› 124-346-23 +always ì¿œ 124-346-235 +always ì¿ 124-346-236 +always ì¿ž 124-346-256 +always ì¿Ÿ 124-346-356 +always ì¿  124-134 +always ì¿¡ 124-134-1 +always ì¿¢ 124-134-1-1 +always ì¿£ 124-134-1-3 +always 쿤 124-134-25 +always ì¿¥ 124-134-25-13 +always 쿦 124-134-25-356 +always 쿧 124-134-35 +always 쿨 124-134-2 +always ì¿© 124-134-2-1 +always 쿪 124-134-2-26 +always ì¿« 124-134-2-12 +always 쿬 124-134-2-3 +always ì¿­ 124-134-2-236 +always ì¿® 124-134-2-256 +always 쿯 124-134-2-356 +always ì¿° 124-134-26 +always 쿱 124-134-12 +always 쿲 124-134-12-3 +always 쿳 124-134-3 +always ì¿´ 124-134-3-3 +always 쿵 124-134-2356 +always 쿶 124-134-13 +always ì¿· 124-134-23 +always 쿸 124-134-235 +always 쿹 124-134-236 +always 쿺 124-134-256 +always ì¿» 124-134-356 +always 쿼 124-1234 +always 쿽 124-1234-1 +always 쿾 124-1234-1-1 +always ì¿¿ 124-1234-1-3 +always 퀀 124-1234-25 +always í€ 124-1234-25-13 +always 퀂 124-1234-25-356 +always 퀃 124-1234-35 +always 퀄 124-1234-2 +always 퀅 124-1234-2-1 +always 퀆 124-1234-2-26 +always 퀇 124-1234-2-12 +always 퀈 124-1234-2-3 +always 퀉 124-1234-2-236 +always 퀊 124-1234-2-256 +always 퀋 124-1234-2-356 +always 퀌 124-1234-26 +always í€ 124-1234-12 +always 퀎 124-1234-12-3 +always í€ 124-1234-3 +always í€ 124-1234-3-3 +always 퀑 124-1234-2356 +always 퀒 124-1234-13 +always 퀓 124-1234-23 +always 퀔 124-1234-235 +always 퀕 124-1234-236 +always 퀖 124-1234-256 +always 퀗 124-1234-356 +always 퀘 124-1234-1235 +always 퀙 124-1234-1235-1 +always 퀚 124-1234-1235-1-1 +always 퀛 124-1234-1235-1-3 +always 퀜 124-1234-1235-25 +always í€ 124-1234-1235-25-13 +always 퀞 124-1234-1235-25-356 +always 퀟 124-1234-1235-35 +always 퀠 124-1234-1235-2 +always 퀡 124-1234-1235-2-1 +always 퀢 124-1234-1235-2-26 +always 퀣 124-1234-1235-2-12 +always 퀤 124-1234-1235-2-3 +always 퀥 124-1234-1235-2-236 +always 퀦 124-1234-1235-2-256 +always 퀧 124-1234-1235-2-356 +always 퀨 124-1234-1235-26 +always 퀩 124-1234-1235-12 +always 퀪 124-1234-1235-12-3 +always 퀫 124-1234-1235-3 +always 퀬 124-1234-1235-3-3 +always 퀭 124-1234-1235-2356 +always 퀮 124-1234-1235-13 +always 퀯 124-1234-1235-23 +always 퀰 124-1234-1235-235 +always 퀱 124-1234-1235-236 +always 퀲 124-1234-1235-256 +always 퀳 124-1234-1235-356 +always 퀴 124-134-1235 +always 퀵 124-134-1235-1 +always 퀶 124-134-1235-1-1 +always 퀷 124-134-1235-1-3 +always 퀸 124-134-1235-25 +always 퀹 124-134-1235-25-13 +always 퀺 124-134-1235-25-356 +always 퀻 124-134-1235-35 +always 퀼 124-134-1235-2 +always 퀽 124-134-1235-2-1 +always 퀾 124-134-1235-2-26 +always 퀿 124-134-1235-2-12 +always í€ 124-134-1235-2-3 +always í 124-134-1235-2-236 +always í‚ 124-134-1235-2-256 +always íƒ 124-134-1235-2-356 +always í„ 124-134-1235-26 +always í… 124-134-1235-12 +always í† 124-134-1235-12-3 +always í‡ 124-134-1235-3 +always íˆ 124-134-1235-3-3 +always í‰ 124-134-1235-2356 +always íŠ 124-134-1235-13 +always í‹ 124-134-1235-23 +always íŒ 124-134-1235-235 +always í 124-134-1235-236 +always íŽ 124-134-1235-256 +always í 124-134-1235-356 +always í 124-146 +always í‘ 124-146-1 +always í’ 124-146-1-1 +always í“ 124-146-1-3 +always í” 124-146-25 +always í• 124-146-25-13 +always í– 124-146-25-356 +always í— 124-146-35 +always í˜ 124-146-2 +always í™ 124-146-2-1 +always íš 124-146-2-26 +always í› 124-146-2-12 +always íœ 124-146-2-3 +always í 124-146-2-236 +always íž 124-146-2-256 +always íŸ 124-146-2-356 +always í  124-146-26 +always í¡ 124-146-12 +always í¢ 124-146-12-3 +always í£ 124-146-3 +always í¤ 124-146-3-3 +always í¥ 124-146-2356 +always í¦ 124-146-13 +always í§ 124-146-23 +always í¨ 124-146-235 +always í© 124-146-236 +always íª 124-146-256 +always í« 124-146-356 +always í¬ 124-246 +always í­ 124-246-1 +always í® 124-246-1-1 +always í¯ 124-246-1-3 +always í° 124-246-25 +always í± 124-246-25-13 +always í² 124-246-25-356 +always í³ 124-246-35 +always í´ 124-246-2 +always íµ 124-246-2-1 +always í¶ 124-246-2-26 +always í· 124-246-2-12 +always í¸ 124-246-2-3 +always í¹ 124-246-2-236 +always íº 124-246-2-256 +always í» 124-246-2-356 +always í¼ 124-246-26 +always í½ 124-246-12 +always í¾ 124-246-12-3 +always í¿ 124-246-3 +always í‚€ 124-246-3-3 +always í‚ 124-246-2356 +always í‚‚ 124-246-13 +always 킃 124-246-23 +always í‚„ 124-246-235 +always í‚… 124-246-236 +always 킆 124-246-256 +always 킇 124-246-356 +always 킈 124-2456 +always 킉 124-2456-1 +always í‚Š 124-2456-1-1 +always í‚‹ 124-2456-1-3 +always í‚Œ 124-2456-25 +always í‚ 124-2456-25-13 +always í‚Ž 124-2456-25-356 +always í‚ 124-2456-35 +always í‚ 124-2456-2 +always í‚‘ 124-2456-2-1 +always í‚’ 124-2456-2-26 +always í‚“ 124-2456-2-12 +always í‚” 124-2456-2-3 +always í‚• 124-2456-2-236 +always í‚– 124-2456-2-256 +always í‚— 124-2456-2-356 +always 킘 124-2456-26 +always í‚™ 124-2456-12 +always í‚š 124-2456-12-3 +always í‚› 124-2456-3 +always í‚œ 124-2456-3-3 +always í‚ 124-2456-2356 +always í‚ž 124-2456-13 +always í‚Ÿ 124-2456-23 +always í‚  124-2456-235 +always í‚¡ 124-2456-236 +always í‚¢ 124-2456-256 +always í‚£ 124-2456-356 +always 키 124-135 +always í‚¥ 124-135-1 +always 킦 124-135-1-1 +always 킧 124-135-1-3 +always 킨 124-135-25 +always í‚© 124-135-25-13 +always 킪 124-135-25-356 +always í‚« 124-135-35 +always 킬 124-135-2 +always í‚­ 124-135-2-1 +always í‚® 124-135-2-26 +always 킯 124-135-2-12 +always í‚° 124-135-2-3 +always 킱 124-135-2-236 +always 킲 124-135-2-256 +always 킳 124-135-2-356 +always í‚´ 124-135-26 +always 킵 124-135-12 +always 킶 124-135-12-3 +always í‚· 124-135-3 +always 킸 124-135-3-3 +always 킹 124-135-2356 +always 킺 124-135-13 +always í‚» 124-135-23 +always 킼 124-135-235 +always 킽 124-135-236 +always 킾 124-135-256 +always í‚¿ 124-135-356 +always 타 125-126 +always íƒ 125-126-1 +always 탂 125-126-1-1 +always 탃 125-126-1-3 +always 탄 125-126-25 +always 탅 125-126-25-13 +always 탆 125-126-25-356 +always 탇 125-126-35 +always 탈 125-126-2 +always 탉 125-126-2-1 +always 탊 125-126-2-26 +always 탋 125-126-2-12 +always 탌 125-126-2-3 +always íƒ 125-126-2-236 +always 탎 125-126-2-256 +always íƒ 125-126-2-356 +always íƒ 125-126-26 +always 탑 125-126-12 +always 탒 125-126-12-3 +always 탓 125-126-3 +always 탔 125-126-3-3 +always 탕 125-126-2356 +always 탖 125-126-13 +always 탗 125-126-23 +always 탘 125-126-235 +always 탙 125-126-236 +always 탚 125-126-256 +always 탛 125-126-356 +always 태 125-1235 +always íƒ 125-1235-1 +always 탞 125-1235-1-1 +always 탟 125-1235-1-3 +always 탠 125-1235-25 +always 탡 125-1235-25-13 +always 탢 125-1235-25-356 +always 탣 125-1235-35 +always 탤 125-1235-2 +always 탥 125-1235-2-1 +always 탦 125-1235-2-26 +always 탧 125-1235-2-12 +always 탨 125-1235-2-3 +always 탩 125-1235-2-236 +always 탪 125-1235-2-256 +always 탫 125-1235-2-356 +always 탬 125-1235-26 +always 탭 125-1235-12 +always 탮 125-1235-12-3 +always 탯 125-1235-3 +always 탰 125-1235-3-3 +always 탱 125-1235-2356 +always 탲 125-1235-13 +always 탳 125-1235-23 +always 탴 125-1235-235 +always 탵 125-1235-236 +always 탶 125-1235-256 +always 탷 125-1235-356 +always 탸 125-345 +always 탹 125-345-1 +always 탺 125-345-1-1 +always 탻 125-345-1-3 +always 탼 125-345-25 +always 탽 125-345-25-13 +always 탾 125-345-25-356 +always 탿 125-345-35 +always í„€ 125-345-2 +always í„ 125-345-2-1 +always í„‚ 125-345-2-26 +always 턃 125-345-2-12 +always í„„ 125-345-2-3 +always í„… 125-345-2-236 +always 턆 125-345-2-256 +always 턇 125-345-2-356 +always 턈 125-345-26 +always 턉 125-345-12 +always í„Š 125-345-12-3 +always í„‹ 125-345-3 +always í„Œ 125-345-3-3 +always í„ 125-345-2356 +always í„Ž 125-345-13 +always í„ 125-345-23 +always í„ 125-345-235 +always í„‘ 125-345-236 +always í„’ 125-345-256 +always í„“ 125-345-356 +always í„” 125-345-1235 +always í„• 125-345-1235-1 +always í„– 125-345-1235-1-1 +always í„— 125-345-1235-1-3 +always 턘 125-345-1235-25 +always í„™ 125-345-1235-25-13 +always í„š 125-345-1235-25-356 +always í„› 125-345-1235-35 +always í„œ 125-345-1235-2 +always í„ 125-345-1235-2-1 +always í„ž 125-345-1235-2-26 +always í„Ÿ 125-345-1235-2-12 +always í„  125-345-1235-2-3 +always í„¡ 125-345-1235-2-236 +always í„¢ 125-345-1235-2-256 +always í„£ 125-345-1235-2-356 +always 턤 125-345-1235-26 +always í„¥ 125-345-1235-12 +always 턦 125-345-1235-12-3 +always 턧 125-345-1235-3 +always 턨 125-345-1235-3-3 +always í„© 125-345-1235-2356 +always 턪 125-345-1235-13 +always í„« 125-345-1235-23 +always 턬 125-345-1235-235 +always í„­ 125-345-1235-236 +always í„® 125-345-1235-256 +always 턯 125-345-1235-356 +always í„° 125-234 +always 턱 125-234-1 +always 턲 125-234-1-1 +always 턳 125-234-1-3 +always í„´ 125-234-25 +always 턵 125-234-25-13 +always 턶 125-234-25-356 +always í„· 125-234-35 +always 털 125-234-2 +always 턹 125-234-2-1 +always 턺 125-234-2-26 +always í„» 125-234-2-12 +always 턼 125-234-2-3 +always 턽 125-234-2-236 +always 턾 125-234-2-256 +always í„¿ 125-234-2-356 +always í…€ 125-234-26 +always í… 125-234-12 +always í…‚ 125-234-12-3 +always í…ƒ 125-234-3 +always í…„ 125-234-3-3 +always í…… 125-234-2356 +always í…† 125-234-13 +always í…‡ 125-234-23 +always í…ˆ 125-234-235 +always í…‰ 125-234-236 +always í…Š 125-234-256 +always í…‹ 125-234-356 +always í…Œ 125-1345 +always í… 125-1345-1 +always í…Ž 125-1345-1-1 +always í… 125-1345-1-3 +always í… 125-1345-25 +always í…‘ 125-1345-25-13 +always í…’ 125-1345-25-356 +always í…“ 125-1345-35 +always í…” 125-1345-2 +always í…• 125-1345-2-1 +always í…– 125-1345-2-26 +always í…— 125-1345-2-12 +always í…˜ 125-1345-2-3 +always í…™ 125-1345-2-236 +always í…š 125-1345-2-256 +always í…› 125-1345-2-356 +always í…œ 125-1345-26 +always í… 125-1345-12 +always í…ž 125-1345-12-3 +always í…Ÿ 125-1345-3 +always í…  125-1345-3-3 +always í…¡ 125-1345-2356 +always í…¢ 125-1345-13 +always í…£ 125-1345-23 +always í…¤ 125-1345-235 +always í…¥ 125-1345-236 +always í…¦ 125-1345-256 +always í…§ 125-1345-356 +always í…¨ 125-156 +always í…© 125-156-1 +always í…ª 125-156-1-1 +always í…« 125-156-1-3 +always í…¬ 125-156-25 +always í…­ 125-156-25-13 +always í…® 125-156-25-356 +always í…¯ 125-156-35 +always í…° 125-156-2 +always í…± 125-156-2-1 +always í…² 125-156-2-26 +always í…³ 125-156-2-12 +always í…´ 125-156-2-3 +always í…µ 125-156-2-236 +always í…¶ 125-156-2-256 +always í…· 125-156-2-356 +always í…¸ 125-156-26 +always í…¹ 125-156-12 +always í…º 125-156-12-3 +always í…» 125-156-3 +always í…¼ 125-156-3-3 +always í…½ 125-156-2356 +always í…¾ 125-156-13 +always í…¿ 125-156-23 +always 톀 125-156-235 +always í† 125-156-236 +always 톂 125-156-256 +always 톃 125-156-356 +always 톄 125-34 +always 톅 125-34-1 +always 톆 125-34-1-1 +always 톇 125-34-1-3 +always 톈 125-34-25 +always 톉 125-34-25-13 +always 톊 125-34-25-356 +always 톋 125-34-35 +always 톌 125-34-2 +always í† 125-34-2-1 +always 톎 125-34-2-26 +always í† 125-34-2-12 +always í† 125-34-2-3 +always 톑 125-34-2-236 +always 톒 125-34-2-256 +always 톓 125-34-2-356 +always 톔 125-34-26 +always 톕 125-34-12 +always 톖 125-34-12-3 +always 톗 125-34-3 +always 톘 125-34-3-3 +always 톙 125-34-2356 +always 톚 125-34-13 +always 톛 125-34-23 +always 톜 125-34-235 +always í† 125-34-236 +always 톞 125-34-256 +always 톟 125-34-356 +always 토 125-136 +always 톡 125-136-1 +always 톢 125-136-1-1 +always 톣 125-136-1-3 +always 톤 125-136-25 +always 톥 125-136-25-13 +always 톦 125-136-25-356 +always 톧 125-136-35 +always 톨 125-136-2 +always 톩 125-136-2-1 +always 톪 125-136-2-26 +always 톫 125-136-2-12 +always 톬 125-136-2-3 +always 톭 125-136-2-236 +always 톮 125-136-2-256 +always 톯 125-136-2-356 +always 톰 125-136-26 +always 톱 125-136-12 +always 톲 125-136-12-3 +always 톳 125-136-3 +always 톴 125-136-3-3 +always 통 125-136-2356 +always 톶 125-136-13 +always 톷 125-136-23 +always 톸 125-136-235 +always 톹 125-136-236 +always 톺 125-136-256 +always 톻 125-136-356 +always 톼 125-1236 +always 톽 125-1236-1 +always 톾 125-1236-1-1 +always 톿 125-1236-1-3 +always 퇀 125-1236-25 +always í‡ 125-1236-25-13 +always 퇂 125-1236-25-356 +always 퇃 125-1236-35 +always 퇄 125-1236-2 +always 퇅 125-1236-2-1 +always 퇆 125-1236-2-26 +always 퇇 125-1236-2-12 +always 퇈 125-1236-2-3 +always 퇉 125-1236-2-236 +always 퇊 125-1236-2-256 +always 퇋 125-1236-2-356 +always 퇌 125-1236-26 +always í‡ 125-1236-12 +always 퇎 125-1236-12-3 +always í‡ 125-1236-3 +always í‡ 125-1236-3-3 +always 퇑 125-1236-2356 +always 퇒 125-1236-13 +always 퇓 125-1236-23 +always 퇔 125-1236-235 +always 퇕 125-1236-236 +always 퇖 125-1236-256 +always 퇗 125-1236-356 +always 퇘 125-1236-1235 +always 퇙 125-1236-1235-1 +always 퇚 125-1236-1235-1-1 +always 퇛 125-1236-1235-1-3 +always 퇜 125-1236-1235-25 +always í‡ 125-1236-1235-25-13 +always 퇞 125-1236-1235-25-356 +always 퇟 125-1236-1235-35 +always 퇠 125-1236-1235-2 +always 퇡 125-1236-1235-2-1 +always 퇢 125-1236-1235-2-26 +always 퇣 125-1236-1235-2-12 +always 퇤 125-1236-1235-2-3 +always 퇥 125-1236-1235-2-236 +always 퇦 125-1236-1235-2-256 +always 퇧 125-1236-1235-2-356 +always 퇨 125-1236-1235-26 +always 퇩 125-1236-1235-12 +always 퇪 125-1236-1235-12-3 +always 퇫 125-1236-1235-3 +always 퇬 125-1236-1235-3-3 +always 퇭 125-1236-1235-2356 +always 퇮 125-1236-1235-13 +always 퇯 125-1236-1235-23 +always 퇰 125-1236-1235-235 +always 퇱 125-1236-1235-236 +always 퇲 125-1236-1235-256 +always 퇳 125-1236-1235-356 +always 퇴 125-13456 +always 퇵 125-13456-1 +always 퇶 125-13456-1-1 +always 퇷 125-13456-1-3 +always 퇸 125-13456-25 +always 퇹 125-13456-25-13 +always 퇺 125-13456-25-356 +always 퇻 125-13456-35 +always 퇼 125-13456-2 +always 퇽 125-13456-2-1 +always 퇾 125-13456-2-26 +always 퇿 125-13456-2-12 +always 툀 125-13456-2-3 +always íˆ 125-13456-2-236 +always 툂 125-13456-2-256 +always 툃 125-13456-2-356 +always 툄 125-13456-26 +always 툅 125-13456-12 +always 툆 125-13456-12-3 +always 툇 125-13456-3 +always 툈 125-13456-3-3 +always 툉 125-13456-2356 +always 툊 125-13456-13 +always 툋 125-13456-23 +always 툌 125-13456-235 +always íˆ 125-13456-236 +always 툎 125-13456-256 +always íˆ 125-13456-356 +always íˆ 125-346 +always 툑 125-346-1 +always 툒 125-346-1-1 +always 툓 125-346-1-3 +always 툔 125-346-25 +always 툕 125-346-25-13 +always 툖 125-346-25-356 +always 툗 125-346-35 +always 툘 125-346-2 +always 툙 125-346-2-1 +always 툚 125-346-2-26 +always 툛 125-346-2-12 +always 툜 125-346-2-3 +always íˆ 125-346-2-236 +always 툞 125-346-2-256 +always 툟 125-346-2-356 +always 툠 125-346-26 +always 툡 125-346-12 +always 툢 125-346-12-3 +always 툣 125-346-3 +always 툤 125-346-3-3 +always 툥 125-346-2356 +always 툦 125-346-13 +always 툧 125-346-23 +always 툨 125-346-235 +always 툩 125-346-236 +always 툪 125-346-256 +always 툫 125-346-356 +always 투 125-134 +always 툭 125-134-1 +always 툮 125-134-1-1 +always 툯 125-134-1-3 +always 툰 125-134-25 +always 툱 125-134-25-13 +always 툲 125-134-25-356 +always 툳 125-134-35 +always 툴 125-134-2 +always 툵 125-134-2-1 +always 툶 125-134-2-26 +always 툷 125-134-2-12 +always 툸 125-134-2-3 +always 툹 125-134-2-236 +always 툺 125-134-2-256 +always 툻 125-134-2-356 +always 툼 125-134-26 +always 툽 125-134-12 +always 툾 125-134-12-3 +always 툿 125-134-3 +always 퉀 125-134-3-3 +always í‰ 125-134-2356 +always 퉂 125-134-13 +always 퉃 125-134-23 +always 퉄 125-134-235 +always 퉅 125-134-236 +always 퉆 125-134-256 +always 퉇 125-134-356 +always 퉈 125-1234 +always 퉉 125-1234-1 +always 퉊 125-1234-1-1 +always 퉋 125-1234-1-3 +always 퉌 125-1234-25 +always í‰ 125-1234-25-13 +always 퉎 125-1234-25-356 +always í‰ 125-1234-35 +always í‰ 125-1234-2 +always 퉑 125-1234-2-1 +always 퉒 125-1234-2-26 +always 퉓 125-1234-2-12 +always 퉔 125-1234-2-3 +always 퉕 125-1234-2-236 +always 퉖 125-1234-2-256 +always 퉗 125-1234-2-356 +always 퉘 125-1234-26 +always 퉙 125-1234-12 +always 퉚 125-1234-12-3 +always 퉛 125-1234-3 +always 퉜 125-1234-3-3 +always í‰ 125-1234-2356 +always 퉞 125-1234-13 +always 퉟 125-1234-23 +always 퉠 125-1234-235 +always 퉡 125-1234-236 +always 퉢 125-1234-256 +always 퉣 125-1234-356 +always 퉤 125-1234-1235 +always 퉥 125-1234-1235-1 +always 퉦 125-1234-1235-1-1 +always 퉧 125-1234-1235-1-3 +always 퉨 125-1234-1235-25 +always 퉩 125-1234-1235-25-13 +always 퉪 125-1234-1235-25-356 +always 퉫 125-1234-1235-35 +always 퉬 125-1234-1235-2 +always 퉭 125-1234-1235-2-1 +always 퉮 125-1234-1235-2-26 +always 퉯 125-1234-1235-2-12 +always 퉰 125-1234-1235-2-3 +always 퉱 125-1234-1235-2-236 +always 퉲 125-1234-1235-2-256 +always 퉳 125-1234-1235-2-356 +always 퉴 125-1234-1235-26 +always 퉵 125-1234-1235-12 +always 퉶 125-1234-1235-12-3 +always 퉷 125-1234-1235-3 +always 퉸 125-1234-1235-3-3 +always 퉹 125-1234-1235-2356 +always 퉺 125-1234-1235-13 +always 퉻 125-1234-1235-23 +always 퉼 125-1234-1235-235 +always 퉽 125-1234-1235-236 +always 퉾 125-1234-1235-256 +always 퉿 125-1234-1235-356 +always 튀 125-134-1235 +always íŠ 125-134-1235-1 +always 튂 125-134-1235-1-1 +always 튃 125-134-1235-1-3 +always 튄 125-134-1235-25 +always 튅 125-134-1235-25-13 +always 튆 125-134-1235-25-356 +always 튇 125-134-1235-35 +always 튈 125-134-1235-2 +always 튉 125-134-1235-2-1 +always 튊 125-134-1235-2-26 +always 튋 125-134-1235-2-12 +always 튌 125-134-1235-2-3 +always íŠ 125-134-1235-2-236 +always 튎 125-134-1235-2-256 +always íŠ 125-134-1235-2-356 +always íŠ 125-134-1235-26 +always 튑 125-134-1235-12 +always 튒 125-134-1235-12-3 +always 튓 125-134-1235-3 +always 튔 125-134-1235-3-3 +always 튕 125-134-1235-2356 +always 튖 125-134-1235-13 +always 튗 125-134-1235-23 +always 튘 125-134-1235-235 +always 튙 125-134-1235-236 +always 튚 125-134-1235-256 +always 튛 125-134-1235-356 +always 튜 125-146 +always íŠ 125-146-1 +always 튞 125-146-1-1 +always 튟 125-146-1-3 +always 튠 125-146-25 +always 튡 125-146-25-13 +always 튢 125-146-25-356 +always 튣 125-146-35 +always 튤 125-146-2 +always 튥 125-146-2-1 +always 튦 125-146-2-26 +always 튧 125-146-2-12 +always 튨 125-146-2-3 +always 튩 125-146-2-236 +always 튪 125-146-2-256 +always 튫 125-146-2-356 +always 튬 125-146-26 +always 튭 125-146-12 +always 튮 125-146-12-3 +always 튯 125-146-3 +always 튰 125-146-3-3 +always 튱 125-146-2356 +always 튲 125-146-13 +always 튳 125-146-23 +always 튴 125-146-235 +always 튵 125-146-236 +always 튶 125-146-256 +always 튷 125-146-356 +always 트 125-246 +always 특 125-246-1 +always 튺 125-246-1-1 +always 튻 125-246-1-3 +always 튼 125-246-25 +always 튽 125-246-25-13 +always 튾 125-246-25-356 +always 튿 125-246-35 +always í‹€ 125-246-2 +always í‹ 125-246-2-1 +always í‹‚ 125-246-2-26 +always 틃 125-246-2-12 +always í‹„ 125-246-2-3 +always í‹… 125-246-2-236 +always 틆 125-246-2-256 +always 틇 125-246-2-356 +always 틈 125-246-26 +always 틉 125-246-12 +always í‹Š 125-246-12-3 +always í‹‹ 125-246-3 +always í‹Œ 125-246-3-3 +always í‹ 125-246-2356 +always í‹Ž 125-246-13 +always í‹ 125-246-23 +always í‹ 125-246-235 +always í‹‘ 125-246-236 +always í‹’ 125-246-256 +always í‹“ 125-246-356 +always í‹” 125-2456 +always í‹• 125-2456-1 +always í‹– 125-2456-1-1 +always í‹— 125-2456-1-3 +always 틘 125-2456-25 +always í‹™ 125-2456-25-13 +always í‹š 125-2456-25-356 +always í‹› 125-2456-35 +always í‹œ 125-2456-2 +always í‹ 125-2456-2-1 +always í‹ž 125-2456-2-26 +always í‹Ÿ 125-2456-2-12 +always í‹  125-2456-2-3 +always í‹¡ 125-2456-2-236 +always í‹¢ 125-2456-2-256 +always í‹£ 125-2456-2-356 +always 틤 125-2456-26 +always í‹¥ 125-2456-12 +always 틦 125-2456-12-3 +always 틧 125-2456-3 +always 틨 125-2456-3-3 +always í‹© 125-2456-2356 +always 틪 125-2456-13 +always í‹« 125-2456-23 +always 틬 125-2456-235 +always í‹­ 125-2456-236 +always í‹® 125-2456-256 +always 틯 125-2456-356 +always í‹° 125-135 +always 틱 125-135-1 +always 틲 125-135-1-1 +always 틳 125-135-1-3 +always í‹´ 125-135-25 +always 틵 125-135-25-13 +always 틶 125-135-25-356 +always í‹· 125-135-35 +always 틸 125-135-2 +always 틹 125-135-2-1 +always 틺 125-135-2-26 +always í‹» 125-135-2-12 +always 틼 125-135-2-3 +always 틽 125-135-2-236 +always 틾 125-135-2-256 +always í‹¿ 125-135-2-356 +always 팀 125-135-26 +always íŒ 125-135-12 +always 팂 125-135-12-3 +always 팃 125-135-3 +always 팄 125-135-3-3 +always 팅 125-135-2356 +always 팆 125-135-13 +always 팇 125-135-23 +always 팈 125-135-235 +always 팉 125-135-236 +always 팊 125-135-256 +always 팋 125-135-356 +always 파 145-126 +always íŒ 145-126-1 +always 팎 145-126-1-1 +always íŒ 145-126-1-3 +always íŒ 145-126-25 +always 팑 145-126-25-13 +always 팒 145-126-25-356 +always 팓 145-126-35 +always 팔 145-126-2 +always 팕 145-126-2-1 +always 팖 145-126-2-26 +always 팗 145-126-2-12 +always 팘 145-126-2-3 +always 팙 145-126-2-236 +always 팚 145-126-2-256 +always 팛 145-126-2-356 +always 팜 145-126-26 +always íŒ 145-126-12 +always 팞 145-126-12-3 +always 팟 145-126-3 +always 팠 145-126-3-3 +always 팡 145-126-2356 +always 팢 145-126-13 +always 팣 145-126-23 +always 팤 145-126-235 +always 팥 145-126-236 +always 팦 145-126-256 +always 팧 145-126-356 +always 패 145-1235 +always 팩 145-1235-1 +always 팪 145-1235-1-1 +always 팫 145-1235-1-3 +always 팬 145-1235-25 +always 팭 145-1235-25-13 +always 팮 145-1235-25-356 +always 팯 145-1235-35 +always 팰 145-1235-2 +always 팱 145-1235-2-1 +always 팲 145-1235-2-26 +always 팳 145-1235-2-12 +always 팴 145-1235-2-3 +always 팵 145-1235-2-236 +always 팶 145-1235-2-256 +always 팷 145-1235-2-356 +always 팸 145-1235-26 +always 팹 145-1235-12 +always 팺 145-1235-12-3 +always 팻 145-1235-3 +always 팼 145-1235-3-3 +always 팽 145-1235-2356 +always 팾 145-1235-13 +always 팿 145-1235-23 +always í€ 145-1235-235 +always í 145-1235-236 +always í‚ 145-1235-256 +always íƒ 145-1235-356 +always í„ 145-345 +always í… 145-345-1 +always í† 145-345-1-1 +always í‡ 145-345-1-3 +always íˆ 145-345-25 +always í‰ 145-345-25-13 +always íŠ 145-345-25-356 +always í‹ 145-345-35 +always íŒ 145-345-2 +always í 145-345-2-1 +always íŽ 145-345-2-26 +always í 145-345-2-12 +always í 145-345-2-3 +always í‘ 145-345-2-236 +always í’ 145-345-2-256 +always í“ 145-345-2-356 +always í” 145-345-26 +always í• 145-345-12 +always í– 145-345-12-3 +always í— 145-345-3 +always í˜ 145-345-3-3 +always í™ 145-345-2356 +always íš 145-345-13 +always í› 145-345-23 +always íœ 145-345-235 +always í 145-345-236 +always íž 145-345-256 +always íŸ 145-345-356 +always í  145-345-1235 +always í¡ 145-345-1235-1 +always í¢ 145-345-1235-1-1 +always í£ 145-345-1235-1-3 +always í¤ 145-345-1235-25 +always í¥ 145-345-1235-25-13 +always í¦ 145-345-1235-25-356 +always í§ 145-345-1235-35 +always í¨ 145-345-1235-2 +always í© 145-345-1235-2-1 +always íª 145-345-1235-2-26 +always í« 145-345-1235-2-12 +always í¬ 145-345-1235-2-3 +always í­ 145-345-1235-2-236 +always í® 145-345-1235-2-256 +always í¯ 145-345-1235-2-356 +always í° 145-345-1235-26 +always í± 145-345-1235-12 +always í² 145-345-1235-12-3 +always í³ 145-345-1235-3 +always í´ 145-345-1235-3-3 +always íµ 145-345-1235-2356 +always í¶ 145-345-1235-13 +always í· 145-345-1235-23 +always í¸ 145-345-1235-235 +always í¹ 145-345-1235-236 +always íº 145-345-1235-256 +always í» 145-345-1235-356 +always í¼ 145-234 +always í½ 145-234-1 +always í¾ 145-234-1-1 +always í¿ 145-234-1-3 +always 펀 145-234-25 +always íŽ 145-234-25-13 +always 펂 145-234-25-356 +always 펃 145-234-35 +always 펄 145-234-2 +always 펅 145-234-2-1 +always 펆 145-234-2-26 +always 펇 145-234-2-12 +always 펈 145-234-2-3 +always 펉 145-234-2-236 +always 펊 145-234-2-256 +always 펋 145-234-2-356 +always 펌 145-234-26 +always íŽ 145-234-12 +always 펎 145-234-12-3 +always íŽ 145-234-3 +always íŽ 145-234-3-3 +always 펑 145-234-2356 +always 펒 145-234-13 +always 펓 145-234-23 +always 펔 145-234-235 +always 펕 145-234-236 +always 펖 145-234-256 +always 펗 145-234-356 +always 페 145-1345 +always 펙 145-1345-1 +always 펚 145-1345-1-1 +always 펛 145-1345-1-3 +always 펜 145-1345-25 +always íŽ 145-1345-25-13 +always 펞 145-1345-25-356 +always 펟 145-1345-35 +always 펠 145-1345-2 +always 펡 145-1345-2-1 +always 펢 145-1345-2-26 +always 펣 145-1345-2-12 +always 펤 145-1345-2-3 +always 펥 145-1345-2-236 +always 펦 145-1345-2-256 +always 펧 145-1345-2-356 +always 펨 145-1345-26 +always 펩 145-1345-12 +always 펪 145-1345-12-3 +always 펫 145-1345-3 +always 펬 145-1345-3-3 +always 펭 145-1345-2356 +always 펮 145-1345-13 +always 펯 145-1345-23 +always 펰 145-1345-235 +always 펱 145-1345-236 +always 펲 145-1345-256 +always 펳 145-1345-356 +always 펴 145-156 +always 펵 145-156-1 +always 펶 145-156-1-1 +always 펷 145-156-1-3 +always 편 145-156-25 +always 펹 145-156-25-13 +always 펺 145-156-25-356 +always 펻 145-156-35 +always 펼 145-156-2 +always 펽 145-156-2-1 +always 펾 145-156-2-26 +always 펿 145-156-2-12 +always í€ 145-156-2-3 +always í 145-156-2-236 +always í‚ 145-156-2-256 +always íƒ 145-156-2-356 +always í„ 145-156-26 +always í… 145-156-12 +always í† 145-156-12-3 +always í‡ 145-156-3 +always íˆ 145-156-3-3 +always í‰ 145-156-2356 +always íŠ 145-156-13 +always í‹ 145-156-23 +always íŒ 145-156-235 +always í 145-156-236 +always íŽ 145-156-256 +always í 145-156-356 +always í 145-34 +always í‘ 145-34-1 +always í’ 145-34-1-1 +always í“ 145-34-1-3 +always í” 145-34-25 +always í• 145-34-25-13 +always í– 145-34-25-356 +always í— 145-34-35 +always í˜ 145-34-2 +always í™ 145-34-2-1 +always íš 145-34-2-26 +always í› 145-34-2-12 +always íœ 145-34-2-3 +always í 145-34-2-236 +always íž 145-34-2-256 +always íŸ 145-34-2-356 +always í  145-34-26 +always í¡ 145-34-12 +always í¢ 145-34-12-3 +always í£ 145-34-3 +always í¤ 145-34-3-3 +always í¥ 145-34-2356 +always í¦ 145-34-13 +always í§ 145-34-23 +always í¨ 145-34-235 +always í© 145-34-236 +always íª 145-34-256 +always í« 145-34-356 +always í¬ 145-136 +always í­ 145-136-1 +always í® 145-136-1-1 +always í¯ 145-136-1-3 +always í° 145-136-25 +always í± 145-136-25-13 +always í² 145-136-25-356 +always í³ 145-136-35 +always í´ 145-136-2 +always íµ 145-136-2-1 +always í¶ 145-136-2-26 +always í· 145-136-2-12 +always í¸ 145-136-2-3 +always í¹ 145-136-2-236 +always íº 145-136-2-256 +always í» 145-136-2-356 +always í¼ 145-136-26 +always í½ 145-136-12 +always í¾ 145-136-12-3 +always í¿ 145-136-3 +always í€ 145-136-3-3 +always í 145-136-2356 +always í‚ 145-136-13 +always íƒ 145-136-23 +always í„ 145-136-235 +always í… 145-136-236 +always í† 145-136-256 +always í‡ 145-136-356 +always íˆ 145-1236 +always í‰ 145-1236-1 +always íŠ 145-1236-1-1 +always í‹ 145-1236-1-3 +always íŒ 145-1236-25 +always í 145-1236-25-13 +always íŽ 145-1236-25-356 +always í 145-1236-35 +always í 145-1236-2 +always í‘ 145-1236-2-1 +always í’ 145-1236-2-26 +always í“ 145-1236-2-12 +always í” 145-1236-2-3 +always í• 145-1236-2-236 +always í– 145-1236-2-256 +always í— 145-1236-2-356 +always í˜ 145-1236-26 +always í™ 145-1236-12 +always íš 145-1236-12-3 +always í› 145-1236-3 +always íœ 145-1236-3-3 +always í 145-1236-2356 +always íž 145-1236-13 +always íŸ 145-1236-23 +always í  145-1236-235 +always í¡ 145-1236-236 +always í¢ 145-1236-256 +always í£ 145-1236-356 +always í¤ 145-1236-1235 +always í¥ 145-1236-1235-1 +always í¦ 145-1236-1235-1-1 +always í§ 145-1236-1235-1-3 +always í¨ 145-1236-1235-25 +always í© 145-1236-1235-25-13 +always íª 145-1236-1235-25-356 +always í« 145-1236-1235-35 +always í¬ 145-1236-1235-2 +always í­ 145-1236-1235-2-1 +always í® 145-1236-1235-2-26 +always í¯ 145-1236-1235-2-12 +always í° 145-1236-1235-2-3 +always í± 145-1236-1235-2-236 +always í² 145-1236-1235-2-256 +always í³ 145-1236-1235-2-356 +always í´ 145-1236-1235-26 +always íµ 145-1236-1235-12 +always í¶ 145-1236-1235-12-3 +always í· 145-1236-1235-3 +always í¸ 145-1236-1235-3-3 +always í¹ 145-1236-1235-2356 +always íº 145-1236-1235-13 +always í» 145-1236-1235-23 +always í¼ 145-1236-1235-235 +always í½ 145-1236-1235-236 +always í¾ 145-1236-1235-256 +always í¿ 145-1236-1235-356 +always í‘€ 145-13456 +always í‘ 145-13456-1 +always í‘‚ 145-13456-1-1 +always 푃 145-13456-1-3 +always í‘„ 145-13456-25 +always í‘… 145-13456-25-13 +always 푆 145-13456-25-356 +always 푇 145-13456-35 +always 푈 145-13456-2 +always 푉 145-13456-2-1 +always í‘Š 145-13456-2-26 +always í‘‹ 145-13456-2-12 +always í‘Œ 145-13456-2-3 +always í‘ 145-13456-2-236 +always í‘Ž 145-13456-2-256 +always í‘ 145-13456-2-356 +always í‘ 145-13456-26 +always í‘‘ 145-13456-12 +always í‘’ 145-13456-12-3 +always í‘“ 145-13456-3 +always í‘” 145-13456-3-3 +always í‘• 145-13456-2356 +always í‘– 145-13456-13 +always í‘— 145-13456-23 +always 푘 145-13456-235 +always í‘™ 145-13456-236 +always í‘š 145-13456-256 +always í‘› 145-13456-356 +always í‘œ 145-346 +always í‘ 145-346-1 +always í‘ž 145-346-1-1 +always í‘Ÿ 145-346-1-3 +always í‘  145-346-25 +always í‘¡ 145-346-25-13 +always í‘¢ 145-346-25-356 +always í‘£ 145-346-35 +always 푤 145-346-2 +always í‘¥ 145-346-2-1 +always 푦 145-346-2-26 +always 푧 145-346-2-12 +always 푨 145-346-2-3 +always í‘© 145-346-2-236 +always 푪 145-346-2-256 +always í‘« 145-346-2-356 +always 푬 145-346-26 +always í‘­ 145-346-12 +always í‘® 145-346-12-3 +always 푯 145-346-3 +always í‘° 145-346-3-3 +always 푱 145-346-2356 +always 푲 145-346-13 +always 푳 145-346-23 +always í‘´ 145-346-235 +always 푵 145-346-236 +always 푶 145-346-256 +always í‘· 145-346-356 +always 푸 145-134 +always 푹 145-134-1 +always 푺 145-134-1-1 +always í‘» 145-134-1-3 +always 푼 145-134-25 +always 푽 145-134-25-13 +always 푾 145-134-25-356 +always í‘¿ 145-134-35 +always í’€ 145-134-2 +always í’ 145-134-2-1 +always í’‚ 145-134-2-26 +always í’ƒ 145-134-2-12 +always í’„ 145-134-2-3 +always í’… 145-134-2-236 +always í’† 145-134-2-256 +always í’‡ 145-134-2-356 +always í’ˆ 145-134-26 +always í’‰ 145-134-12 +always í’Š 145-134-12-3 +always í’‹ 145-134-3 +always í’Œ 145-134-3-3 +always í’ 145-134-2356 +always í’Ž 145-134-13 +always í’ 145-134-23 +always í’ 145-134-235 +always í’‘ 145-134-236 +always í’’ 145-134-256 +always í’“ 145-134-356 +always í’” 145-1234 +always í’• 145-1234-1 +always í’– 145-1234-1-1 +always í’— 145-1234-1-3 +always í’˜ 145-1234-25 +always í’™ 145-1234-25-13 +always í’š 145-1234-25-356 +always í’› 145-1234-35 +always í’œ 145-1234-2 +always í’ 145-1234-2-1 +always í’ž 145-1234-2-26 +always í’Ÿ 145-1234-2-12 +always í’  145-1234-2-3 +always í’¡ 145-1234-2-236 +always í’¢ 145-1234-2-256 +always í’£ 145-1234-2-356 +always í’¤ 145-1234-26 +always í’¥ 145-1234-12 +always í’¦ 145-1234-12-3 +always í’§ 145-1234-3 +always í’¨ 145-1234-3-3 +always í’© 145-1234-2356 +always í’ª 145-1234-13 +always í’« 145-1234-23 +always í’¬ 145-1234-235 +always í’­ 145-1234-236 +always í’® 145-1234-256 +always í’¯ 145-1234-356 +always í’° 145-1234-1235 +always í’± 145-1234-1235-1 +always í’² 145-1234-1235-1-1 +always í’³ 145-1234-1235-1-3 +always í’´ 145-1234-1235-25 +always í’µ 145-1234-1235-25-13 +always í’¶ 145-1234-1235-25-356 +always í’· 145-1234-1235-35 +always í’¸ 145-1234-1235-2 +always í’¹ 145-1234-1235-2-1 +always í’º 145-1234-1235-2-26 +always í’» 145-1234-1235-2-12 +always í’¼ 145-1234-1235-2-3 +always í’½ 145-1234-1235-2-236 +always í’¾ 145-1234-1235-2-256 +always í’¿ 145-1234-1235-2-356 +always í“€ 145-1234-1235-26 +always í“ 145-1234-1235-12 +always í“‚ 145-1234-1235-12-3 +always 퓃 145-1234-1235-3 +always í“„ 145-1234-1235-3-3 +always í“… 145-1234-1235-2356 +always 퓆 145-1234-1235-13 +always 퓇 145-1234-1235-23 +always 퓈 145-1234-1235-235 +always 퓉 145-1234-1235-236 +always í“Š 145-1234-1235-256 +always í“‹ 145-1234-1235-356 +always í“Œ 145-134-1235 +always í“ 145-134-1235-1 +always í“Ž 145-134-1235-1-1 +always í“ 145-134-1235-1-3 +always í“ 145-134-1235-25 +always í“‘ 145-134-1235-25-13 +always í“’ 145-134-1235-25-356 +always í““ 145-134-1235-35 +always í“” 145-134-1235-2 +always í“• 145-134-1235-2-1 +always í“– 145-134-1235-2-26 +always í“— 145-134-1235-2-12 +always 퓘 145-134-1235-2-3 +always í“™ 145-134-1235-2-236 +always í“š 145-134-1235-2-256 +always í“› 145-134-1235-2-356 +always í“œ 145-134-1235-26 +always í“ 145-134-1235-12 +always í“ž 145-134-1235-12-3 +always í“Ÿ 145-134-1235-3 +always í“  145-134-1235-3-3 +always í“¡ 145-134-1235-2356 +always í“¢ 145-134-1235-13 +always í“£ 145-134-1235-23 +always 퓤 145-134-1235-235 +always í“¥ 145-134-1235-236 +always 퓦 145-134-1235-256 +always 퓧 145-134-1235-356 +always 퓨 145-146 +always í“© 145-146-1 +always 퓪 145-146-1-1 +always í“« 145-146-1-3 +always 퓬 145-146-25 +always í“­ 145-146-25-13 +always í“® 145-146-25-356 +always 퓯 145-146-35 +always í“° 145-146-2 +always 퓱 145-146-2-1 +always 퓲 145-146-2-26 +always 퓳 145-146-2-12 +always í“´ 145-146-2-3 +always 퓵 145-146-2-236 +always 퓶 145-146-2-256 +always í“· 145-146-2-356 +always 퓸 145-146-26 +always 퓹 145-146-12 +always 퓺 145-146-12-3 +always í“» 145-146-3 +always 퓼 145-146-3-3 +always 퓽 145-146-2356 +always 퓾 145-146-13 +always í“¿ 145-146-23 +always 픀 145-146-235 +always í” 145-146-236 +always 픂 145-146-256 +always 픃 145-146-356 +always 프 145-246 +always í”… 145-246-1 +always 픆 145-246-1-1 +always 픇 145-246-1-3 +always 픈 145-246-25 +always 픉 145-246-25-13 +always 픊 145-246-25-356 +always 픋 145-246-35 +always 플 145-246-2 +always í” 145-246-2-1 +always 픎 145-246-2-26 +always í” 145-246-2-12 +always í” 145-246-2-3 +always 픑 145-246-2-236 +always í”’ 145-246-2-256 +always 픓 145-246-2-356 +always í”” 145-246-26 +always 픕 145-246-12 +always í”– 145-246-12-3 +always í”— 145-246-3 +always 픘 145-246-3-3 +always í”™ 145-246-2356 +always 픚 145-246-13 +always í”› 145-246-23 +always 픜 145-246-235 +always í” 145-246-236 +always 픞 145-246-256 +always 픟 145-246-356 +always í”  145-2456 +always 픡 145-2456-1 +always 픢 145-2456-1-1 +always 픣 145-2456-1-3 +always 픤 145-2456-25 +always 픥 145-2456-25-13 +always 픦 145-2456-25-356 +always 픧 145-2456-35 +always 픨 145-2456-2 +always 픩 145-2456-2-1 +always 픪 145-2456-2-26 +always 픫 145-2456-2-12 +always 픬 145-2456-2-3 +always í”­ 145-2456-2-236 +always í”® 145-2456-2-256 +always 픯 145-2456-2-356 +always í”° 145-2456-26 +always í”± 145-2456-12 +always 픲 145-2456-12-3 +always 픳 145-2456-3 +always í”´ 145-2456-3-3 +always 픵 145-2456-2356 +always 픶 145-2456-13 +always í”· 145-2456-23 +always 픸 145-2456-235 +always 픹 145-2456-236 +always 픺 145-2456-256 +always í”» 145-2456-356 +always 피 145-135 +always 픽 145-135-1 +always 픾 145-135-1-1 +always 픿 145-135-1-3 +always í•€ 145-135-25 +always í• 145-135-25-13 +always í•‚ 145-135-25-356 +always 핃 145-135-35 +always í•„ 145-135-2 +always í•… 145-135-2-1 +always 핆 145-135-2-26 +always 핇 145-135-2-12 +always 핈 145-135-2-3 +always 핉 145-135-2-236 +always í•Š 145-135-2-256 +always í•‹ 145-135-2-356 +always í•Œ 145-135-26 +always í• 145-135-12 +always í•Ž 145-135-12-3 +always í• 145-135-3 +always í• 145-135-3-3 +always í•‘ 145-135-2356 +always í•’ 145-135-13 +always í•“ 145-135-23 +always í•” 145-135-235 +always í•• 145-135-236 +always í•– 145-135-256 +always í•— 145-135-356 +always 하 245-126 +always í•™ 245-126-1 +always í•š 245-126-1-1 +always í•› 245-126-1-3 +always í•œ 245-126-25 +always í• 245-126-25-13 +always í•ž 245-126-25-356 +always í•Ÿ 245-126-35 +always í•  245-126-2 +always í•¡ 245-126-2-1 +always í•¢ 245-126-2-26 +always í•£ 245-126-2-12 +always 핤 245-126-2-3 +always í•¥ 245-126-2-236 +always 핦 245-126-2-256 +always 핧 245-126-2-356 +always 함 245-126-26 +always í•© 245-126-12 +always 핪 245-126-12-3 +always í•« 245-126-3 +always 핬 245-126-3-3 +always í•­ 245-126-2356 +always í•® 245-126-13 +always 핯 245-126-23 +always í•° 245-126-235 +always 핱 245-126-236 +always 핲 245-126-256 +always 핳 245-126-356 +always í•´ 245-1235 +always 핵 245-1235-1 +always 핶 245-1235-1-1 +always í•· 245-1235-1-3 +always 핸 245-1235-25 +always 핹 245-1235-25-13 +always 핺 245-1235-25-356 +always í•» 245-1235-35 +always 핼 245-1235-2 +always 핽 245-1235-2-1 +always 핾 245-1235-2-26 +always í•¿ 245-1235-2-12 +always í–€ 245-1235-2-3 +always í– 245-1235-2-236 +always í–‚ 245-1235-2-256 +always í–ƒ 245-1235-2-356 +always í–„ 245-1235-26 +always í–… 245-1235-12 +always í–† 245-1235-12-3 +always í–‡ 245-1235-3 +always í–ˆ 245-1235-3-3 +always í–‰ 245-1235-2356 +always í–Š 245-1235-13 +always í–‹ 245-1235-23 +always í–Œ 245-1235-235 +always í– 245-1235-236 +always í–Ž 245-1235-256 +always í– 245-1235-356 +always í– 245-345 +always í–‘ 245-345-1 +always í–’ 245-345-1-1 +always í–“ 245-345-1-3 +always í–” 245-345-25 +always í–• 245-345-25-13 +always í–– 245-345-25-356 +always í–— 245-345-35 +always í–˜ 245-345-2 +always í–™ 245-345-2-1 +always í–š 245-345-2-26 +always í–› 245-345-2-12 +always í–œ 245-345-2-3 +always í– 245-345-2-236 +always í–ž 245-345-2-256 +always í–Ÿ 245-345-2-356 +always í–  245-345-26 +always í–¡ 245-345-12 +always í–¢ 245-345-12-3 +always í–£ 245-345-3 +always í–¤ 245-345-3-3 +always í–¥ 245-345-2356 +always í–¦ 245-345-13 +always í–§ 245-345-23 +always í–¨ 245-345-235 +always í–© 245-345-236 +always í–ª 245-345-256 +always í–« 245-345-356 +always í–¬ 245-345-1235 +always í–­ 245-345-1235-1 +always í–® 245-345-1235-1-1 +always í–¯ 245-345-1235-1-3 +always í–° 245-345-1235-25 +always í–± 245-345-1235-25-13 +always í–² 245-345-1235-25-356 +always í–³ 245-345-1235-35 +always í–´ 245-345-1235-2 +always í–µ 245-345-1235-2-1 +always í–¶ 245-345-1235-2-26 +always í–· 245-345-1235-2-12 +always í–¸ 245-345-1235-2-3 +always í–¹ 245-345-1235-2-236 +always í–º 245-345-1235-2-256 +always í–» 245-345-1235-2-356 +always í–¼ 245-345-1235-26 +always í–½ 245-345-1235-12 +always í–¾ 245-345-1235-12-3 +always í–¿ 245-345-1235-3 +always í—€ 245-345-1235-3-3 +always í— 245-345-1235-2356 +always í—‚ 245-345-1235-13 +always í—ƒ 245-345-1235-23 +always í—„ 245-345-1235-235 +always í—… 245-345-1235-236 +always í—† 245-345-1235-256 +always í—‡ 245-345-1235-356 +always í—ˆ 245-234 +always í—‰ 245-234-1 +always í—Š 245-234-1-1 +always í—‹ 245-234-1-3 +always í—Œ 245-234-25 +always í— 245-234-25-13 +always í—Ž 245-234-25-356 +always í— 245-234-35 +always í— 245-234-2 +always í—‘ 245-234-2-1 +always í—’ 245-234-2-26 +always í—“ 245-234-2-12 +always í—” 245-234-2-3 +always í—• 245-234-2-236 +always í—– 245-234-2-256 +always í—— 245-234-2-356 +always í—˜ 245-234-26 +always í—™ 245-234-12 +always í—š 245-234-12-3 +always í—› 245-234-3 +always í—œ 245-234-3-3 +always í— 245-234-2356 +always í—ž 245-234-13 +always í—Ÿ 245-234-23 +always í—  245-234-235 +always í—¡ 245-234-236 +always í—¢ 245-234-256 +always í—£ 245-234-356 +always í—¤ 245-1345 +always í—¥ 245-1345-1 +always í—¦ 245-1345-1-1 +always í—§ 245-1345-1-3 +always í—¨ 245-1345-25 +always í—© 245-1345-25-13 +always í—ª 245-1345-25-356 +always í—« 245-1345-35 +always í—¬ 245-1345-2 +always í—­ 245-1345-2-1 +always í—® 245-1345-2-26 +always í—¯ 245-1345-2-12 +always í—° 245-1345-2-3 +always í—± 245-1345-2-236 +always í—² 245-1345-2-256 +always í—³ 245-1345-2-356 +always í—´ 245-1345-26 +always í—µ 245-1345-12 +always í—¶ 245-1345-12-3 +always í—· 245-1345-3 +always í—¸ 245-1345-3-3 +always í—¹ 245-1345-2356 +always í—º 245-1345-13 +always í—» 245-1345-23 +always í—¼ 245-1345-235 +always í—½ 245-1345-236 +always í—¾ 245-1345-256 +always í—¿ 245-1345-356 +always 혀 245-156 +always í˜ 245-156-1 +always 혂 245-156-1-1 +always 혃 245-156-1-3 +always 현 245-156-25 +always 혅 245-156-25-13 +always 혆 245-156-25-356 +always 혇 245-156-35 +always 혈 245-156-2 +always 혉 245-156-2-1 +always 혊 245-156-2-26 +always 혋 245-156-2-12 +always 혌 245-156-2-3 +always í˜ 245-156-2-236 +always 혎 245-156-2-256 +always í˜ 245-156-2-356 +always í˜ 245-156-26 +always 협 245-156-12 +always 혒 245-156-12-3 +always 혓 245-156-3 +always 혔 245-156-3-3 +always 형 245-156-2356 +always 혖 245-156-13 +always 혗 245-156-23 +always 혘 245-156-235 +always 혙 245-156-236 +always 혚 245-156-256 +always 혛 245-156-356 +always 혜 245-34 +always í˜ 245-34-1 +always 혞 245-34-1-1 +always 혟 245-34-1-3 +always 혠 245-34-25 +always 혡 245-34-25-13 +always 혢 245-34-25-356 +always 혣 245-34-35 +always 혤 245-34-2 +always 혥 245-34-2-1 +always 혦 245-34-2-26 +always 혧 245-34-2-12 +always 혨 245-34-2-3 +always 혩 245-34-2-236 +always 혪 245-34-2-256 +always 혫 245-34-2-356 +always 혬 245-34-26 +always 혭 245-34-12 +always 혮 245-34-12-3 +always 혯 245-34-3 +always 혰 245-34-3-3 +always 혱 245-34-2356 +always 혲 245-34-13 +always 혳 245-34-23 +always 혴 245-34-235 +always 혵 245-34-236 +always 혶 245-34-256 +always 혷 245-34-356 +always 호 245-136 +always 혹 245-136-1 +always 혺 245-136-1-1 +always 혻 245-136-1-3 +always 혼 245-136-25 +always 혽 245-136-25-13 +always 혾 245-136-25-356 +always 혿 245-136-35 +always 홀 245-136-2 +always í™ 245-136-2-1 +always 홂 245-136-2-26 +always 홃 245-136-2-12 +always 홄 245-136-2-3 +always í™… 245-136-2-236 +always 홆 245-136-2-256 +always 홇 245-136-2-356 +always 홈 245-136-26 +always 홉 245-136-12 +always 홊 245-136-12-3 +always 홋 245-136-3 +always 홌 245-136-3-3 +always í™ 245-136-2356 +always 홎 245-136-13 +always í™ 245-136-23 +always í™ 245-136-235 +always 홑 245-136-236 +always í™’ 245-136-256 +always 홓 245-136-356 +always í™” 245-1236 +always 확 245-1236-1 +always í™– 245-1236-1-1 +always í™— 245-1236-1-3 +always 환 245-1236-25 +always í™™ 245-1236-25-13 +always 홚 245-1236-25-356 +always í™› 245-1236-35 +always 활 245-1236-2 +always í™ 245-1236-2-1 +always 홞 245-1236-2-26 +always 홟 245-1236-2-12 +always í™  245-1236-2-3 +always 홡 245-1236-2-236 +always 홢 245-1236-2-256 +always 홣 245-1236-2-356 +always 홤 245-1236-26 +always 홥 245-1236-12 +always 홦 245-1236-12-3 +always 홧 245-1236-3 +always 홨 245-1236-3-3 +always 황 245-1236-2356 +always 홪 245-1236-13 +always 홫 245-1236-23 +always 홬 245-1236-235 +always í™­ 245-1236-236 +always í™® 245-1236-256 +always 홯 245-1236-356 +always í™° 245-1236-1235 +always í™± 245-1236-1235-1 +always 홲 245-1236-1235-1-1 +always 홳 245-1236-1235-1-3 +always í™´ 245-1236-1235-25 +always 홵 245-1236-1235-25-13 +always 홶 245-1236-1235-25-356 +always í™· 245-1236-1235-35 +always 홸 245-1236-1235-2 +always 홹 245-1236-1235-2-1 +always 홺 245-1236-1235-2-26 +always í™» 245-1236-1235-2-12 +always 홼 245-1236-1235-2-3 +always 홽 245-1236-1235-2-236 +always 홾 245-1236-1235-2-256 +always 홿 245-1236-1235-2-356 +always 횀 245-1236-1235-26 +always íš 245-1236-1235-12 +always íš‚ 245-1236-1235-12-3 +always 횃 245-1236-1235-3 +always íš„ 245-1236-1235-3-3 +always íš… 245-1236-1235-2356 +always 횆 245-1236-1235-13 +always 횇 245-1236-1235-23 +always 횈 245-1236-1235-235 +always 횉 245-1236-1235-236 +always 횊 245-1236-1235-256 +always íš‹ 245-1236-1235-356 +always 회 245-13456 +always íš 245-13456-1 +always 횎 245-13456-1-1 +always íš 245-13456-1-3 +always íš 245-13456-25 +always íš‘ 245-13456-25-13 +always íš’ 245-13456-25-356 +always íš“ 245-13456-35 +always íš” 245-13456-2 +always íš• 245-13456-2-1 +always íš– 245-13456-2-26 +always íš— 245-13456-2-12 +always 횘 245-13456-2-3 +always íš™ 245-13456-2-236 +always íšš 245-13456-2-256 +always íš› 245-13456-2-356 +always íšœ 245-13456-26 +always íš 245-13456-12 +always íšž 245-13456-12-3 +always 횟 245-13456-3 +always íš  245-13456-3-3 +always íš¡ 245-13456-2356 +always 횢 245-13456-13 +always 횣 245-13456-23 +always 횤 245-13456-235 +always 횥 245-13456-236 +always 횦 245-13456-256 +always 횧 245-13456-356 +always 효 245-346 +always íš© 245-346-1 +always 횪 245-346-1-1 +always íš« 245-346-1-3 +always 횬 245-346-25 +always íš­ 245-346-25-13 +always íš® 245-346-25-356 +always 횯 245-346-35 +always íš° 245-346-2 +always íš± 245-346-2-1 +always íš² 245-346-2-26 +always íš³ 245-346-2-12 +always íš´ 245-346-2-3 +always íšµ 245-346-2-236 +always 횶 245-346-2-256 +always íš· 245-346-2-356 +always 횸 245-346-26 +always íš¹ 245-346-12 +always 횺 245-346-12-3 +always íš» 245-346-3 +always íš¼ 245-346-3-3 +always íš½ 245-346-2356 +always íš¾ 245-346-13 +always íš¿ 245-346-23 +always 훀 245-346-235 +always í› 245-346-236 +always 훂 245-346-256 +always 훃 245-346-356 +always 후 245-134 +always í›… 245-134-1 +always 훆 245-134-1-1 +always 훇 245-134-1-3 +always 훈 245-134-25 +always 훉 245-134-25-13 +always 훊 245-134-25-356 +always 훋 245-134-35 +always 훌 245-134-2 +always í› 245-134-2-1 +always 훎 245-134-2-26 +always í› 245-134-2-12 +always í› 245-134-2-3 +always 훑 245-134-2-236 +always í›’ 245-134-2-256 +always 훓 245-134-2-356 +always í›” 245-134-26 +always 훕 245-134-12 +always í›– 245-134-12-3 +always í›— 245-134-3 +always 훘 245-134-3-3 +always í›™ 245-134-2356 +always 훚 245-134-13 +always í›› 245-134-23 +always 훜 245-134-235 +always í› 245-134-236 +always 훞 245-134-256 +always 훟 245-134-356 +always í›  245-1234 +always 훡 245-1234-1 +always 훢 245-1234-1-1 +always 훣 245-1234-1-3 +always 훤 245-1234-25 +always 훥 245-1234-25-13 +always 훦 245-1234-25-356 +always 훧 245-1234-35 +always 훨 245-1234-2 +always 훩 245-1234-2-1 +always 훪 245-1234-2-26 +always 훫 245-1234-2-12 +always 훬 245-1234-2-3 +always í›­ 245-1234-2-236 +always í›® 245-1234-2-256 +always 훯 245-1234-2-356 +always í›° 245-1234-26 +always í›± 245-1234-12 +always 훲 245-1234-12-3 +always 훳 245-1234-3 +always í›´ 245-1234-3-3 +always 훵 245-1234-2356 +always 훶 245-1234-13 +always í›· 245-1234-23 +always 훸 245-1234-235 +always 훹 245-1234-236 +always 훺 245-1234-256 +always í›» 245-1234-356 +always 훼 245-1234-1235 +always 훽 245-1234-1235-1 +always 훾 245-1234-1235-1-1 +always 훿 245-1234-1235-1-3 +always 휀 245-1234-1235-25 +always íœ 245-1234-1235-25-13 +always 휂 245-1234-1235-25-356 +always 휃 245-1234-1235-35 +always 휄 245-1234-1235-2 +always 휅 245-1234-1235-2-1 +always 휆 245-1234-1235-2-26 +always 휇 245-1234-1235-2-12 +always 휈 245-1234-1235-2-3 +always 휉 245-1234-1235-2-236 +always 휊 245-1234-1235-2-256 +always 휋 245-1234-1235-2-356 +always 휌 245-1234-1235-26 +always íœ 245-1234-1235-12 +always 휎 245-1234-1235-12-3 +always íœ 245-1234-1235-3 +always íœ 245-1234-1235-3-3 +always 휑 245-1234-1235-2356 +always 휒 245-1234-1235-13 +always 휓 245-1234-1235-23 +always 휔 245-1234-1235-235 +always 휕 245-1234-1235-236 +always 휖 245-1234-1235-256 +always 휗 245-1234-1235-356 +always 휘 245-134-1235 +always 휙 245-134-1235-1 +always 휚 245-134-1235-1-1 +always 휛 245-134-1235-1-3 +always 휜 245-134-1235-25 +always íœ 245-134-1235-25-13 +always 휞 245-134-1235-25-356 +always 휟 245-134-1235-35 +always 휠 245-134-1235-2 +always 휡 245-134-1235-2-1 +always 휢 245-134-1235-2-26 +always 휣 245-134-1235-2-12 +always 휤 245-134-1235-2-3 +always 휥 245-134-1235-2-236 +always 휦 245-134-1235-2-256 +always 휧 245-134-1235-2-356 +always 휨 245-134-1235-26 +always 휩 245-134-1235-12 +always 휪 245-134-1235-12-3 +always 휫 245-134-1235-3 +always 휬 245-134-1235-3-3 +always 휭 245-134-1235-2356 +always 휮 245-134-1235-13 +always 휯 245-134-1235-23 +always 휰 245-134-1235-235 +always 휱 245-134-1235-236 +always 휲 245-134-1235-256 +always 휳 245-134-1235-356 +always 휴 245-146 +always 휵 245-146-1 +always 휶 245-146-1-1 +always 휷 245-146-1-3 +always 휸 245-146-25 +always 휹 245-146-25-13 +always 휺 245-146-25-356 +always 휻 245-146-35 +always 휼 245-146-2 +always 휽 245-146-2-1 +always 휾 245-146-2-26 +always 휿 245-146-2-12 +always í€ 245-146-2-3 +always í 245-146-2-236 +always í‚ 245-146-2-256 +always íƒ 245-146-2-356 +always í„ 245-146-26 +always í… 245-146-12 +always í† 245-146-12-3 +always í‡ 245-146-3 +always íˆ 245-146-3-3 +always í‰ 245-146-2356 +always íŠ 245-146-13 +always í‹ 245-146-23 +always íŒ 245-146-235 +always í 245-146-236 +always íŽ 245-146-256 +always í 245-146-356 +always í 245-246 +always í‘ 245-246-1 +always í’ 245-246-1-1 +always í“ 245-246-1-3 +always í” 245-246-25 +always í• 245-246-25-13 +always í– 245-246-25-356 +always í— 245-246-35 +always í˜ 245-246-2 +always í™ 245-246-2-1 +always íš 245-246-2-26 +always í› 245-246-2-12 +always íœ 245-246-2-3 +always í 245-246-2-236 +always íž 245-246-2-256 +always íŸ 245-246-2-356 +always í  245-246-26 +always í¡ 245-246-12 +always í¢ 245-246-12-3 +always í£ 245-246-3 +always í¤ 245-246-3-3 +always í¥ 245-246-2356 +always í¦ 245-246-13 +always í§ 245-246-23 +always í¨ 245-246-235 +always í© 245-246-236 +always íª 245-246-256 +always í« 245-246-356 +always í¬ 245-2456 +always í­ 245-2456-1 +always í® 245-2456-1-1 +always í¯ 245-2456-1-3 +always í° 245-2456-25 +always í± 245-2456-25-13 +always í² 245-2456-25-356 +always í³ 245-2456-35 +always í´ 245-2456-2 +always íµ 245-2456-2-1 +always í¶ 245-2456-2-26 +always í· 245-2456-2-12 +always í¸ 245-2456-2-3 +always í¹ 245-2456-2-236 +always íº 245-2456-2-256 +always í» 245-2456-2-356 +always í¼ 245-2456-26 +always í½ 245-2456-12 +always í¾ 245-2456-12-3 +always í¿ 245-2456-3 +always 힀 245-2456-3-3 +always íž 245-2456-2356 +always íž‚ 245-2456-13 +always 힃 245-2456-23 +always íž„ 245-2456-235 +always íž… 245-2456-236 +always 힆 245-2456-256 +always 힇 245-2456-356 +always 히 245-135 +always 힉 245-135-1 +always 힊 245-135-1-1 +always íž‹ 245-135-1-3 +always 힌 245-135-25 +always íž 245-135-25-13 +always 힎 245-135-25-356 +always íž 245-135-35 +always íž 245-135-2 +always íž‘ 245-135-2-1 +always íž’ 245-135-2-26 +always íž“ 245-135-2-12 +always íž” 245-135-2-3 +always íž• 245-135-2-236 +always íž– 245-135-2-256 +always íž— 245-135-2-356 +always 힘 245-135-26 +always íž™ 245-135-12 +always ížš 245-135-12-3 +always íž› 245-135-3 +always ížœ 245-135-3-3 +always íž 245-135-2356 +always ížž 245-135-13 +always 힟 245-135-23 +always íž  245-135-235 +always íž¡ 245-135-236 +always 힢 245-135-256 +always 힣 245-135-356 +always ï¾  0 +always ᄀ 1 +always ï¾¢ 1-1 +always ï¾£ 1-3 +always ᄂ 25 +always ï¾¥ 25-13 +always ᆭ 25-356 +always ᄃ 35 +always ᄄ 35-35 +always ᄅ 2 +always ᆰ 2-1 +always ᆱ 2-26 +always ᆲ 2-12 +always ï¾­ 2-3 +always ï¾® 2-236 +always ᆵ 2-256 +always ï¾° 2-356 +always ï¾± 26 +always ï¾² 12 +always ï¾³ 12-12 +always ï¾´ 12-3 +always ï¾µ 3 +always ᄊ 3-3 +always ï¾· 2356 +always ᄌ 13 +always ï¾¹ 13-13 +always ᄎ 23 +always ï¾» 235 +always ï¾¼ 236 +always ï¾½ 256 +always ï¾¾ 356 +always ï¿‚ 126 +always ᅢ 1235 +always ï¿„ 345 +always ï¿… 345-1235 +always ᅥ 234 +always ᅦ 1345 +always ï¿Š 156 +always ï¿‹ 34 +always ï¿Œ 136 +always ï¿ 1236 +always ï¿Ž 1236-1235 +always ï¿ 13456 +always ï¿’ 346 +always ï¿“ 134 +always ï¿” 1234 +always ï¿• 1234-1235 +always ï¿– 134-1235 +always ï¿— 146 +always ï¿š 246 +always ï¿› 2456 +always ï¿œ 135 diff --git a/Tables/kok.ttb b/Tables/kok.ttb new file mode 100644 index 0000000000000000000000000000000000000000..6acbc074ea489b427735a590fd995ca5d5857ff0 --- /dev/null +++ b/Tables/kok.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Konkani + +include devanagari.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/kru.ttb b/Tables/kru.ttb new file mode 100644 index 0000000000000000000000000000000000000000..4942e0eb0640c15da627ebf720e94d9c8cdecc73 --- /dev/null +++ b/Tables/kru.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Kurukh + +include devanagari.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/laptop.ktb b/Tables/laptop.ktb new file mode 100644 index 0000000000000000000000000000000000000000..26b7320f8213c2a18fd38b9678e15864e9eb5cc8 --- /dev/null +++ b/Tables/laptop.ktb @@ -0,0 +1,62 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Key Table - bindings for keyboards without a keypad + +bind CapsLock+F1 HELP +bind CapsLock+ShiftLeft+F1 LEARN +bind CapsLock+R RESTARTBRL +bind CapsLock+D DESCCHAR +bind CapsLock+ArrowUp LNUP +bind CapsLock+ArrowDown LNDN +bind CapsLock+ArrowLeft CHRLT +bind CapsLock+ArrowRight CHRRT +bind CapsLock+Home TOP_LEFT +bind CapsLock+End BOT_LEFT +bind CapsLock+Enter CSRTRK +bind CapsLock+O CSRTRK+off +bind CapsLock+DeleteBackward BACK + +# marks +bind CapsLock+M SETMARK +bind CapsLock+J GOTOMARK +bind CapsLock+ShiftLeft+1 SETMARK+1 +bind CapsLock+1 GOTOMARK+1 +bind CapsLock+ShiftLeft+2 SETMARK+2 +bind CapsLock+2 GOTOMARK+2 +bind CapsLock+ShiftLeft+3 SETMARK+3 +bind CapsLock+3 GOTOMARK+3 +bind CapsLock+ShiftLeft+4 SETMARK+4 +bind CapsLock+4 GOTOMARK+4 + +# cut and paste +bind CapsLock+X CUTBEGIN +bind CapsLock+C CUTRECT +bind CapsLock+V PASTE + +# speech +bind ControlLeft MUTE +bind ControlRight MUTE +bind CapsLock+PageUp SAY_ABOVE +bind CapsLock+Space SAY_LINE +bind CapsLock+PageDown SAY_BELOW +bind CapsLock+F5 SAY_SLOWER +bind CapsLock+F6 SAY_FASTER +bind CapsLock+F7 SAY_SOFTER +bind CapsLock+F8 SAY_LOUDER +bind CapsLock+F9 AUTOSPEAK diff --git a/Tables/letters-cyrillic.tti b/Tables/letters-cyrillic.tti new file mode 100644 index 0000000000000000000000000000000000000000..e92355059e3da2d7f5cf1e2c5ecf92606c17bdcd --- /dev/null +++ b/Tables/letters-cyrillic.tti @@ -0,0 +1,99 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable defines the standard braille representations +# for the letters of the Cyrillic alphabet. + +# lowercase letters +char \u0430 (1 ) # â  Ð° [CYRILLIC SMALL LETTER A] +char \u0431 (12 ) # â ƒ б [CYRILLIC SMALL LETTER BE] +char \u0432 ( 2 456 ) # â º в [CYRILLIC SMALL LETTER VE] +char \u0433 (12 45 ) # â › г [CYRILLIC SMALL LETTER GHE] +char \u0434 (1 45 ) # â ™ д [CYRILLIC SMALL LETTER DE] +char \u0435 (1 5 ) # â ‘ е [CYRILLIC SMALL LETTER IE] +char \u0436 ( 2 45 ) # â š ж [CYRILLIC SMALL LETTER ZHE] +char \u0437 (1 3 56 ) # â µ з [CYRILLIC SMALL LETTER ZE] +char \u0438 ( 2 4 ) # â Š и [CYRILLIC SMALL LETTER I] +char \u0439 (1234 6 ) # â ¯ й [CYRILLIC SMALL LETTER SHORT I] +char \u043A (1 3 ) # â … к [CYRILLIC SMALL LETTER KA] +char \u043B (123 ) # â ‡ л [CYRILLIC SMALL LETTER EL] +char \u043C (1 34 ) # â  Ð¼ [CYRILLIC SMALL LETTER EM] +char \u043D (1 345 ) # â  Ð½ [CYRILLIC SMALL LETTER EN] +char \u043E (1 3 5 ) # â • о [CYRILLIC SMALL LETTER O] +char \u043F (1234 ) # â  Ð¿ [CYRILLIC SMALL LETTER PE] +char \u0440 (123 5 ) # â — Ñ€ [CYRILLIC SMALL LETTER ER] +char \u0441 ( 234 ) # â Ž Ñ [CYRILLIC SMALL LETTER ES] +char \u0442 ( 2345 ) # â ž Ñ‚ [CYRILLIC SMALL LETTER TE] +char \u0443 (1 3 6 ) # â ¥ у [CYRILLIC SMALL LETTER U] +char \u0444 (12 4 ) # â ‹ Ñ„ [CYRILLIC SMALL LETTER EF] +char \u0445 (12 5 ) # â “ Ñ… [CYRILLIC SMALL LETTER HA] +char \u0446 (1 4 ) # â ‰ ц [CYRILLIC SMALL LETTER TSE] +char \u0447 (12345 ) # â Ÿ ч [CYRILLIC SMALL LETTER CHE] +char \u0448 (1 56 ) # â ± ш [CYRILLIC SMALL LETTER SHA] +char \u0449 (1 34 6 ) # â ­ щ [CYRILLIC SMALL LETTER SHCHA] +char \u044A (123 56 ) # â · ÑŠ [CYRILLIC SMALL LETTER HARD SIGN] +char \u044B ( 234 6 ) # â ® Ñ‹ [CYRILLIC SMALL LETTER YERU] +char \u044C ( 23456 ) # â ¾ ÑŒ [CYRILLIC SMALL LETTER SOFT SIGN] +char \u044D ( 2 4 6 ) # â ª Ñ [CYRILLIC SMALL LETTER E] +char \u044E (12 56 ) # â ³ ÑŽ [CYRILLIC SMALL LETTER YU] +char \u044F (12 4 6 ) # â « Ñ [CYRILLIC SMALL LETTER YA] +char \u0451 (1 6 ) # â ¡ Ñ‘ [CYRILLIC SMALL LETTER IO] + +# uppercase letters +char \u0410 (1 7 ) # â¡ Ð [CYRILLIC CAPITAL LETTER A] +char \u0411 (12 7 ) # ⡃ Б [CYRILLIC CAPITAL LETTER BE] +char \u0412 ( 2 4567 ) # ⡺ Ð’ [CYRILLIC CAPITAL LETTER VE] +char \u0413 (12 45 7 ) # â¡› Г [CYRILLIC CAPITAL LETTER GHE] +char \u0414 (1 45 7 ) # â¡™ Д [CYRILLIC CAPITAL LETTER DE] +char \u0415 (1 5 7 ) # â¡‘ Е [CYRILLIC CAPITAL LETTER IE] +char \u0416 ( 2 45 7 ) # â¡š Ж [CYRILLIC CAPITAL LETTER ZHE] +char \u0417 (1 3 567 ) # ⡵ З [CYRILLIC CAPITAL LETTER ZE] +char \u0418 ( 2 4 7 ) # â¡Š И [CYRILLIC CAPITAL LETTER I] +char \u0419 (1234 67 ) # ⡯ Й [CYRILLIC CAPITAL LETTER SHORT I] +char \u041A (1 3 7 ) # â¡… К [CYRILLIC CAPITAL LETTER KA] +char \u041B (123 7 ) # ⡇ Л [CYRILLIC CAPITAL LETTER EL] +char \u041C (1 34 7 ) # â¡ Ðœ [CYRILLIC CAPITAL LETTER EM] +char \u041D (1 345 7 ) # â¡ Ð [CYRILLIC CAPITAL LETTER EN] +char \u041E (1 3 5 7 ) # â¡• О [CYRILLIC CAPITAL LETTER O] +char \u041F (1234 7 ) # ⡠П [CYRILLIC CAPITAL LETTER PE] +char \u0420 (123 5 7 ) # â¡— Р [CYRILLIC CAPITAL LETTER ER] +char \u0421 ( 234 7 ) # â¡Ž С [CYRILLIC CAPITAL LETTER ES] +char \u0422 ( 2345 7 ) # â¡ž Т [CYRILLIC CAPITAL LETTER TE] +char \u0423 (1 3 67 ) # â¡¥ У [CYRILLIC CAPITAL LETTER U] +char \u0424 (12 4 7 ) # â¡‹ Ф [CYRILLIC CAPITAL LETTER EF] +char \u0425 (12 5 7 ) # â¡“ Ð¥ [CYRILLIC CAPITAL LETTER HA] +char \u0426 (1 4 7 ) # ⡉ Ц [CYRILLIC CAPITAL LETTER TSE] +char \u0427 (12345 7 ) # â¡Ÿ Ч [CYRILLIC CAPITAL LETTER CHE] +char \u0428 (1 567 ) # ⡱ Ш [CYRILLIC CAPITAL LETTER SHA] +char \u0429 (1 34 67 ) # â¡­ Щ [CYRILLIC CAPITAL LETTER SHCHA] +char \u042A (123 567 ) # â¡· Ъ [CYRILLIC CAPITAL LETTER HARD SIGN] +char \u042B ( 234 67 ) # â¡® Ы [CYRILLIC CAPITAL LETTER YERU] +char \u042C ( 234567 ) # ⡾ Ь [CYRILLIC CAPITAL LETTER SOFT SIGN] +char \u042D ( 2 4 67 ) # ⡪ Э [CYRILLIC CAPITAL LETTER E] +char \u042E (12 567 ) # ⡳ Ю [CYRILLIC CAPITAL LETTER YU] +char \u042F (12 4 67 ) # â¡« Я [CYRILLIC CAPITAL LETTER YA] +char \u0401 (1 67 ) # â¡¡ Ð [CYRILLIC CAPITAL LETTER IO] + +# obsolete lowercase letters +char \u0463 ( 345 ) # â œ Ñ£ [CYRILLIC SMALL LETTER YAT] +char \u046B ( 2 4 6 ) # â ª Ñ« [CYRILLIC SMALL LETTER BIG YUS] + +# obsolete uppercase letters +char \u0462 ( 345 7 ) # â¡œ Ñ¢ [CYRILLIC CAPITAL LETTER YAT] +char \u046A ( 2 4 67 ) # ⡪ Ѫ [CYRILLIC CAPITAL LETTER BIG YUS] + diff --git a/Tables/letters-latin-dot8.tti b/Tables/letters-latin-dot8.tti new file mode 100644 index 0000000000000000000000000000000000000000..02a691d393714d5f1f783f54371ae0c473c6078a --- /dev/null +++ b/Tables/letters-latin-dot8.tti @@ -0,0 +1,77 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable defines the braille representations for the letters +# of the Latin alphabet by adding dot 8 to their standard representations. + +# lowercase letters +char \x61 (1 8) # ⢠a [LATIN SMALL LETTER A] +char \x62 (12 8) # ⢃ b [LATIN SMALL LETTER B] +char \x63 (1 4 8) # ⢉ c [LATIN SMALL LETTER C] +char \x64 (1 45 8) # ⢙ d [LATIN SMALL LETTER D] +char \x65 (1 5 8) # ⢑ e [LATIN SMALL LETTER E] +char \x66 (12 4 8) # ⢋ f [LATIN SMALL LETTER F] +char \x67 (12 45 8) # ⢛ g [LATIN SMALL LETTER G] +char \x68 (12 5 8) # ⢓ h [LATIN SMALL LETTER H] +char \x69 ( 2 4 8) # ⢊ i [LATIN SMALL LETTER I] +char \x6A ( 2 45 8) # ⢚ j [LATIN SMALL LETTER J] +char \x6B (1 3 8) # ⢅ k [LATIN SMALL LETTER K] +char \x6C (123 8) # ⢇ l [LATIN SMALL LETTER L] +char \x6D (1 34 8) # ⢠m [LATIN SMALL LETTER M] +char \x6E (1 345 8) # ⢠n [LATIN SMALL LETTER N] +char \x6F (1 3 5 8) # ⢕ o [LATIN SMALL LETTER O] +char \x70 (1234 8) # ⢠p [LATIN SMALL LETTER P] +char \x71 (12345 8) # ⢟ q [LATIN SMALL LETTER Q] +char \x72 (123 5 8) # ⢗ r [LATIN SMALL LETTER R] +char \x73 ( 234 8) # ⢎ s [LATIN SMALL LETTER S] +char \x74 ( 2345 8) # ⢞ t [LATIN SMALL LETTER T] +char \x75 (1 3 6 8) # ⢥ u [LATIN SMALL LETTER U] +char \x76 (123 6 8) # ⢧ v [LATIN SMALL LETTER V] +char \x77 ( 2 456 8) # ⢺ w [LATIN SMALL LETTER W] +char \x78 (1 34 6 8) # ⢭ x [LATIN SMALL LETTER X] +char \x79 (1 3456 8) # ⢽ y [LATIN SMALL LETTER Y] +char \x7A (1 3 56 8) # ⢵ z [LATIN SMALL LETTER Z] + +# uppercase letters +char \x41 (1 78) # ⣠A [LATIN CAPITAL LETTER A] +char \x42 (12 78) # ⣃ B [LATIN CAPITAL LETTER B] +char \x43 (1 4 78) # ⣉ C [LATIN CAPITAL LETTER C] +char \x44 (1 45 78) # ⣙ D [LATIN CAPITAL LETTER D] +char \x45 (1 5 78) # ⣑ E [LATIN CAPITAL LETTER E] +char \x46 (12 4 78) # ⣋ F [LATIN CAPITAL LETTER F] +char \x47 (12 45 78) # ⣛ G [LATIN CAPITAL LETTER G] +char \x48 (12 5 78) # ⣓ H [LATIN CAPITAL LETTER H] +char \x49 ( 2 4 78) # ⣊ I [LATIN CAPITAL LETTER I] +char \x4A ( 2 45 78) # ⣚ J [LATIN CAPITAL LETTER J] +char \x4B (1 3 78) # ⣅ K [LATIN CAPITAL LETTER K] +char \x4C (123 78) # ⣇ L [LATIN CAPITAL LETTER L] +char \x4D (1 34 78) # ⣠M [LATIN CAPITAL LETTER M] +char \x4E (1 345 78) # ⣠N [LATIN CAPITAL LETTER N] +char \x4F (1 3 5 78) # ⣕ O [LATIN CAPITAL LETTER O] +char \x50 (1234 78) # ⣠P [LATIN CAPITAL LETTER P] +char \x51 (12345 78) # ⣟ Q [LATIN CAPITAL LETTER Q] +char \x52 (123 5 78) # ⣗ R [LATIN CAPITAL LETTER R] +char \x53 ( 234 78) # ⣎ S [LATIN CAPITAL LETTER S] +char \x54 ( 2345 78) # ⣞ T [LATIN CAPITAL LETTER T] +char \x55 (1 3 678) # ⣥ U [LATIN CAPITAL LETTER U] +char \x56 (123 678) # ⣧ V [LATIN CAPITAL LETTER V] +char \x57 ( 2 45678) # ⣺ W [LATIN CAPITAL LETTER W] +char \x58 (1 34 678) # ⣭ X [LATIN CAPITAL LETTER X] +char \x59 (1 345678) # ⣽ Y [LATIN CAPITAL LETTER Y] +char \x5A (1 3 5678) # ⣵ Z [LATIN CAPITAL LETTER Z] + diff --git a/Tables/letters-latin.cti b/Tables/letters-latin.cti new file mode 100644 index 0000000000000000000000000000000000000000..6af800139d835c66661d83a2ffac7b23ad8ddd58 --- /dev/null +++ b/Tables/letters-latin.cti @@ -0,0 +1,77 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY contraction subtable defines the standard braille representations +# for the letters of the Latin alphabet. + +# lowercase letters +always \x61 1 LATIN SMALL LETTER A +always \x62 12 LATIN SMALL LETTER B +always \x63 14 LATIN SMALL LETTER C +always \x64 145 LATIN SMALL LETTER D +always \x65 15 LATIN SMALL LETTER E +always \x66 124 LATIN SMALL LETTER F +always \x67 1245 LATIN SMALL LETTER G +always \x68 125 LATIN SMALL LETTER H +always \x69 24 LATIN SMALL LETTER I +always \x6A 245 LATIN SMALL LETTER J +always \x6B 13 LATIN SMALL LETTER K +always \x6C 123 LATIN SMALL LETTER L +always \x6D 134 LATIN SMALL LETTER M +always \x6E 1345 LATIN SMALL LETTER N +always \x6F 135 LATIN SMALL LETTER O +always \x70 1234 LATIN SMALL LETTER P +always \x71 12345 LATIN SMALL LETTER Q +always \x72 1235 LATIN SMALL LETTER R +always \x73 234 LATIN SMALL LETTER S +always \x74 2345 LATIN SMALL LETTER T +always \x75 136 LATIN SMALL LETTER U +always \x76 1236 LATIN SMALL LETTER V +always \x77 2456 LATIN SMALL LETTER W +always \x78 1346 LATIN SMALL LETTER X +always \x79 13456 LATIN SMALL LETTER Y +always \x7A 1356 LATIN SMALL LETTER Z + +# uppercase letters +always \x41 1 LATIN CAPITAL LETTER A +always \x42 12 LATIN CAPITAL LETTER B +always \x43 14 LATIN CAPITAL LETTER C +always \x44 145 LATIN CAPITAL LETTER D +always \x45 15 LATIN CAPITAL LETTER E +always \x46 124 LATIN CAPITAL LETTER F +always \x47 1245 LATIN CAPITAL LETTER G +always \x48 125 LATIN CAPITAL LETTER H +always \x49 24 LATIN CAPITAL LETTER I +always \x4A 245 LATIN CAPITAL LETTER J +always \x4B 13 LATIN CAPITAL LETTER K +always \x4C 123 LATIN CAPITAL LETTER L +always \x4D 134 LATIN CAPITAL LETTER M +always \x4E 1345 LATIN CAPITAL LETTER N +always \x4F 135 LATIN CAPITAL LETTER O +always \x50 1234 LATIN CAPITAL LETTER P +always \x51 12345 LATIN CAPITAL LETTER Q +always \x52 1235 LATIN CAPITAL LETTER R +always \x53 234 LATIN CAPITAL LETTER S +always \x54 2345 LATIN CAPITAL LETTER T +always \x55 136 LATIN CAPITAL LETTER U +always \x56 1236 LATIN CAPITAL LETTER V +always \x57 2456 LATIN CAPITAL LETTER W +always \x58 1346 LATIN CAPITAL LETTER X +always \x59 13456 LATIN CAPITAL LETTER Y +always \x5A 1356 LATIN CAPITAL LETTER Z + diff --git a/Tables/letters-latin.tti b/Tables/letters-latin.tti new file mode 100644 index 0000000000000000000000000000000000000000..4d4fcb4e6c10c4433bb768a98a058b3b71983f42 --- /dev/null +++ b/Tables/letters-latin.tti @@ -0,0 +1,77 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable defines the standard braille representations +# for the letters of the Latin alphabet. + +# lowercase letters +char \x61 (1 ) # â  a [LATIN SMALL LETTER A] +char \x62 (12 ) # â ƒ b [LATIN SMALL LETTER B] +char \x63 (1 4 ) # â ‰ c [LATIN SMALL LETTER C] +char \x64 (1 45 ) # â ™ d [LATIN SMALL LETTER D] +char \x65 (1 5 ) # â ‘ e [LATIN SMALL LETTER E] +char \x66 (12 4 ) # â ‹ f [LATIN SMALL LETTER F] +char \x67 (12 45 ) # â › g [LATIN SMALL LETTER G] +char \x68 (12 5 ) # â “ h [LATIN SMALL LETTER H] +char \x69 ( 2 4 ) # â Š i [LATIN SMALL LETTER I] +char \x6A ( 2 45 ) # â š j [LATIN SMALL LETTER J] +char \x6B (1 3 ) # â … k [LATIN SMALL LETTER K] +char \x6C (123 ) # â ‡ l [LATIN SMALL LETTER L] +char \x6D (1 34 ) # â  m [LATIN SMALL LETTER M] +char \x6E (1 345 ) # â  n [LATIN SMALL LETTER N] +char \x6F (1 3 5 ) # â • o [LATIN SMALL LETTER O] +char \x70 (1234 ) # â  p [LATIN SMALL LETTER P] +char \x71 (12345 ) # â Ÿ q [LATIN SMALL LETTER Q] +char \x72 (123 5 ) # â — r [LATIN SMALL LETTER R] +char \x73 ( 234 ) # â Ž s [LATIN SMALL LETTER S] +char \x74 ( 2345 ) # â ž t [LATIN SMALL LETTER T] +char \x75 (1 3 6 ) # â ¥ u [LATIN SMALL LETTER U] +char \x76 (123 6 ) # â § v [LATIN SMALL LETTER V] +char \x77 ( 2 456 ) # â º w [LATIN SMALL LETTER W] +char \x78 (1 34 6 ) # â ­ x [LATIN SMALL LETTER X] +char \x79 (1 3456 ) # â ½ y [LATIN SMALL LETTER Y] +char \x7A (1 3 56 ) # â µ z [LATIN SMALL LETTER Z] + +# uppercase letters +char \x41 (1 7 ) # â¡ A [LATIN CAPITAL LETTER A] +char \x42 (12 7 ) # ⡃ B [LATIN CAPITAL LETTER B] +char \x43 (1 4 7 ) # ⡉ C [LATIN CAPITAL LETTER C] +char \x44 (1 45 7 ) # â¡™ D [LATIN CAPITAL LETTER D] +char \x45 (1 5 7 ) # â¡‘ E [LATIN CAPITAL LETTER E] +char \x46 (12 4 7 ) # â¡‹ F [LATIN CAPITAL LETTER F] +char \x47 (12 45 7 ) # â¡› G [LATIN CAPITAL LETTER G] +char \x48 (12 5 7 ) # â¡“ H [LATIN CAPITAL LETTER H] +char \x49 ( 2 4 7 ) # â¡Š I [LATIN CAPITAL LETTER I] +char \x4A ( 2 45 7 ) # â¡š J [LATIN CAPITAL LETTER J] +char \x4B (1 3 7 ) # â¡… K [LATIN CAPITAL LETTER K] +char \x4C (123 7 ) # ⡇ L [LATIN CAPITAL LETTER L] +char \x4D (1 34 7 ) # â¡ M [LATIN CAPITAL LETTER M] +char \x4E (1 345 7 ) # â¡ N [LATIN CAPITAL LETTER N] +char \x4F (1 3 5 7 ) # â¡• O [LATIN CAPITAL LETTER O] +char \x50 (1234 7 ) # â¡ P [LATIN CAPITAL LETTER P] +char \x51 (12345 7 ) # â¡Ÿ Q [LATIN CAPITAL LETTER Q] +char \x52 (123 5 7 ) # â¡— R [LATIN CAPITAL LETTER R] +char \x53 ( 234 7 ) # â¡Ž S [LATIN CAPITAL LETTER S] +char \x54 ( 2345 7 ) # â¡ž T [LATIN CAPITAL LETTER T] +char \x55 (1 3 67 ) # â¡¥ U [LATIN CAPITAL LETTER U] +char \x56 (123 67 ) # ⡧ V [LATIN CAPITAL LETTER V] +char \x57 ( 2 4567 ) # ⡺ W [LATIN CAPITAL LETTER W] +char \x58 (1 34 67 ) # â¡­ X [LATIN CAPITAL LETTER X] +char \x59 (1 34567 ) # ⡽ Y [LATIN CAPITAL LETTER Y] +char \x5A (1 3 567 ) # ⡵ Z [LATIN CAPITAL LETTER Z] + diff --git a/Tables/lt.ttb b/Tables/lt.ttb new file mode 100644 index 0000000000000000000000000000000000000000..7951db54847f1f5ecc8572c08c86c61b1b88115e --- /dev/null +++ b/Tables/lt.ttb @@ -0,0 +1,44 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Lituanian +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# lowercase accented letters +char \u010D (1 4 6 ) # â © Ä [LATIN SMALL LETTER C WITH CARON] +char \u0161 ( 234 6 ) # â ® Å¡ [LATIN SMALL LETTER S WITH CARON] + +# lowercase accented letters +char \u010C (1 4 67 ) # â¡© ÄŒ [LATIN CAPITAL LETTER C WITH CARON] +char \u0160 ( 234 67 ) # â¡® Å  [LATIN CAPITAL LETTER S WITH CARON] + +# the numbers 0-9 are represented by the letters j,a-i with dot 8 added +include numbers-dot8.tti + +include punctuation-basic.tti + +include common.tti diff --git a/Tables/lv.ttb b/Tables/lv.ttb new file mode 100644 index 0000000000000000000000000000000000000000..c9cea19038d199cb9e11b3e87a193aa900c647e4 --- /dev/null +++ b/Tables/lv.ttb @@ -0,0 +1,227 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Latvian + +# Created & maintained by Leon Ungier . +# +# Converted from liblouis table by Samuel Thibault + +# generated by ttbtest: charset=latin7 +char \x09 ( ) # 09 â € [CHARACTER TABULATION] +char \x0A ( ) # 0A â € [LINE FEED (LF)] +char \x0D ( ) # 0D â € [CARRIAGE RETURN (CR)] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 23 5 ) # 21 â – ! [EXCLAMATION MARK] +char \x22 ( 3 56 ) # 22 â ´ " [QUOTATION MARK] +char \x23 ( 3456 ) # 23 â ¼ # [NUMBER SIGN] +char \x27 ( 3 ) # 27 â „ ' [APOSTROPHE] +char \x28 ( 23 56 ) # 28 â ¶ ( [LEFT PARENTHESIS] +char \x29 ( 23 56 ) # 29 â ¶ ) [RIGHT PARENTHESIS] +char \x2C ( 6 ) # 2C â   , [COMMA] +char \x2E ( 2 56 ) # 2E â ² . [FULL STOP] +char \x2F ( 34 ) # 2F â Œ / [SOLIDUS] +char \x30 ( 2 45 ) # 30 â š 0 [DIGIT ZERO] +char \x31 (1 ) # 31 â  1 [DIGIT ONE] +char \x32 (12 ) # 32 â ƒ 2 [DIGIT TWO] +char \x33 (1 4 ) # 33 â ‰ 3 [DIGIT THREE] +char \x34 (1 45 ) # 34 â ™ 4 [DIGIT FOUR] +char \x35 (1 5 ) # 35 â ‘ 5 [DIGIT FIVE] +char \x36 (12 4 ) # 36 â ‹ 6 [DIGIT SIX] +char \x37 (12 45 ) # 37 â › 7 [DIGIT SEVEN] +char \x38 (12 5 ) # 38 â “ 8 [DIGIT EIGHT] +char \x39 ( 2 4 ) # 39 â Š 9 [DIGIT NINE] +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C (12 6 ) # 3C â £ < [LESS-THAN SIGN] +char \x3D (123456 ) # 3D â ¿ = [EQUALS SIGN] +char \x3E ( 345 ) # 3E â œ > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x41 (1 ) # 41 â  A [LATIN CAPITAL LETTER A] +char \x42 (12 ) # 42 â ƒ B [LATIN CAPITAL LETTER B] +char \x43 (1 4 ) # 43 â ‰ C [LATIN CAPITAL LETTER C] +char \x44 (1 45 ) # 44 â ™ D [LATIN CAPITAL LETTER D] +char \x45 (1 5 ) # 45 â ‘ E [LATIN CAPITAL LETTER E] +char \x46 (12 4 ) # 46 â ‹ F [LATIN CAPITAL LETTER F] +char \x47 (12 45 ) # 47 â › G [LATIN CAPITAL LETTER G] +char \x48 (12 5 ) # 48 â “ H [LATIN CAPITAL LETTER H] +char \x49 ( 2 4 ) # 49 â Š I [LATIN CAPITAL LETTER I] +char \x4A ( 2 45 ) # 4A â š J [LATIN CAPITAL LETTER J] +char \x4B (1 3 ) # 4B â … K [LATIN CAPITAL LETTER K] +char \x4C (123 ) # 4C â ‡ L [LATIN CAPITAL LETTER L] +char \x4D (1 34 ) # 4D â  M [LATIN CAPITAL LETTER M] +char \x4E (1 345 ) # 4E â  N [LATIN CAPITAL LETTER N] +char \x4F (1 3 5 ) # 4F â • O [LATIN CAPITAL LETTER O] +char \x50 (1234 ) # 50 â  P [LATIN CAPITAL LETTER P] +char \x51 (12345 ) # 51 â Ÿ Q [LATIN CAPITAL LETTER Q] +char \x52 (123 5 ) # 52 â — R [LATIN CAPITAL LETTER R] +char \x53 ( 234 ) # 53 â Ž S [LATIN CAPITAL LETTER S] +char \x54 ( 2345 ) # 54 â ž T [LATIN CAPITAL LETTER T] +char \x55 ( 34 ) # 55 â Œ U [LATIN CAPITAL LETTER U] +char \x56 ( 2 456 ) # 56 â º V [LATIN CAPITAL LETTER V] +char \x57 ( 2 456 ) # 57 â º W [LATIN CAPITAL LETTER W] +char \x58 (1 34 6 ) # 58 â ­ X [LATIN CAPITAL LETTER X] +char \x59 (1 3456 ) # 59 â ½ Y [LATIN CAPITAL LETTER Y] +char \x5A ( 345 ) # 5A â œ Z [LATIN CAPITAL LETTER Z] +char \x5E ( 45 ) # 5E â ˜ ^ [CIRCUMFLEX ACCENT] +char \x61 (1 ) # 61 â  a [LATIN SMALL LETTER A] +char \x62 (12 ) # 62 â ƒ b [LATIN SMALL LETTER B] +char \x63 (1 4 ) # 63 â ‰ c [LATIN SMALL LETTER C] +char \x64 (1 45 ) # 64 â ™ d [LATIN SMALL LETTER D] +char \x65 (1 5 ) # 65 â ‘ e [LATIN SMALL LETTER E] +char \x66 (12 4 ) # 66 â ‹ f [LATIN SMALL LETTER F] +char \x67 (12 45 ) # 67 â › g [LATIN SMALL LETTER G] +char \x68 (12 5 ) # 68 â “ h [LATIN SMALL LETTER H] +char \x69 ( 2 4 ) # 69 â Š i [LATIN SMALL LETTER I] +char \x6A ( 2 45 ) # 6A â š j [LATIN SMALL LETTER J] +char \x6B (1 3 ) # 6B â … k [LATIN SMALL LETTER K] +char \x6C (123 ) # 6C â ‡ l [LATIN SMALL LETTER L] +char \x6D (1 34 ) # 6D â  m [LATIN SMALL LETTER M] +char \x6E (1 345 ) # 6E â  n [LATIN SMALL LETTER N] +char \x6F (1 3 5 ) # 6F â • o [LATIN SMALL LETTER O] +char \x70 (1234 ) # 70 â  p [LATIN SMALL LETTER P] +char \x71 (12345 ) # 71 â Ÿ q [LATIN SMALL LETTER Q] +char \x72 (123 5 ) # 72 â — r [LATIN SMALL LETTER R] +char \x73 ( 234 ) # 73 â Ž s [LATIN SMALL LETTER S] +char \x74 ( 2345 ) # 74 â ž t [LATIN SMALL LETTER T] +char \x75 ( 34 ) # 75 â Œ u [LATIN SMALL LETTER U] +char \x76 ( 2 456 ) # 76 â º v [LATIN SMALL LETTER V] +char \x77 ( 2 456 ) # 77 â º w [LATIN SMALL LETTER W] +char \x78 (1 34 6 ) # 78 â ­ x [LATIN SMALL LETTER X] +char \x79 (1 3456 ) # 79 â ½ y [LATIN SMALL LETTER Y] +char \x7A ( 345 ) # 7A â œ z [LATIN SMALL LETTER Z] +char \x7C ( 456 ) # 7C â ¸ | [VERTICAL LINE] +char \x7E ( 5 ) # 7E â  ~ [TILDE] +char \xA0 ( ) # A0 â €   [NO-BREAK SPACE] +char \u201D ( 3 56 ) # A1 â ´ †[RIGHT DOUBLE QUOTATION MARK] +char \u201E ( 23 6 ) # A5 â ¦ „ [DOUBLE LOW-9 QUOTATION MARK] +char \xA7 ( 34 6 ) # A7 â ¬ § [SECTION SIGN] +char \xD8 ( 2 4 6 ) # A8 â ª Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xAD ( 3 6 ) # AD â ¤ ­ [SOFT HYPHEN] +char \u201C ( 23 6 ) # B4 â ¦ “ [LEFT DOUBLE QUOTATION MARK] +char \xF8 ( 2 4 6 ) # B8 â ª ø [LATIN SMALL LETTER O WITH STROKE] +char \u0104 (1 6 ) # C0 â ¡ Ä„ [LATIN CAPITAL LETTER A WITH OGONEK] +char \u0100 (1 6 ) # C2 â ¡ Ä€ [LATIN CAPITAL LETTER A WITH MACRON] +char \u0106 (1 4 6 ) # C3 â © Ć [LATIN CAPITAL LETTER C WITH ACUTE] +char \xC4 ( 345 ) # C4 â œ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 (1 6 ) # C5 â ¡ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \u0118 (1 56 ) # C6 â ± Ę [LATIN CAPITAL LETTER E WITH OGONEK] +char \u0112 (1 56 ) # C7 â ± Ä’ [LATIN CAPITAL LETTER E WITH MACRON] +char \u010C (1 4 6 ) # C8 â © ÄŒ [LATIN CAPITAL LETTER C WITH CARON] +char \xC9 ( 345 ) # C9 â œ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \u0179 ( 234 6 ) # CA â ® Ź [LATIN CAPITAL LETTER Z WITH ACUTE] +char \u0122 (12 456 ) # CC â » Ä¢ [LATIN CAPITAL LETTER G WITH CEDILLA] +char \u0136 (1 3 6 ) # CD â ¥ Ķ [LATIN CAPITAL LETTER K WITH CEDILLA] +char \u012A ( 2 4 6 ) # CE â ª Ī [LATIN CAPITAL LETTER I WITH MACRON] +char \u013B (123 6 ) # CF â § Ä» [LATIN CAPITAL LETTER L WITH CEDILLA] +char \u0160 (1 56 ) # D0 â ± Å  [LATIN CAPITAL LETTER S WITH CARON] +char \u0143 (1 456 ) # D1 â ¹ Ń [LATIN CAPITAL LETTER N WITH ACUTE] +char \u0145 (1 3456 ) # D2 â ½ Å… [LATIN CAPITAL LETTER N WITH CEDILLA] +char \xD3 ( 2 4 6 ) # D3 â ª Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \u014C (1 3 56 ) # D4 â µ ÅŒ [LATIN CAPITAL LETTER O WITH MACRON] +char \xD5 ( 2 4 6 ) # D5 â ª Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 ( 2 4 6 ) # D6 â ª Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 ( 23 6 ) # D7 â ¦ × [MULTIPLICATION SIGN] +char \u0141 (12 6 ) # D9 â £ Å [LATIN CAPITAL LETTER L WITH STROKE] +char \u015A ( 2 4 6 ) # DA â ª Åš [LATIN CAPITAL LETTER S WITH ACUTE] +char \u016A ( 34 6 ) # DB â ¬ Ū [LATIN CAPITAL LETTER U WITH MACRON] +char \xDC (12 56 ) # DC â ³ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \u017B (1234 6 ) # DD â ¯ Å» [LATIN CAPITAL LETTER Z WITH DOT ABOVE] +char \u017D ( 234 6 ) # DE â ® Ž [LATIN CAPITAL LETTER Z WITH CARON] +char \u0105 (1 6 ) # E0 â ¡ Ä… [LATIN SMALL LETTER A WITH OGONEK] +char \u0101 (1 6 ) # E2 â ¡ Ä [LATIN SMALL LETTER A WITH MACRON] +char \u0107 (1 4 6 ) # E3 â © ć [LATIN SMALL LETTER C WITH ACUTE] +char \xE4 ( 345 ) # E4 â œ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 (1 6 ) # E5 â ¡ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \u0119 (1 56 ) # E6 â ± Ä™ [LATIN SMALL LETTER E WITH OGONEK] +char \u0113 (1 56 ) # E7 â ± Ä“ [LATIN SMALL LETTER E WITH MACRON] +char \u010D (1 4 6 ) # E8 â © Ä [LATIN SMALL LETTER C WITH CARON] +char \xE9 ( 345 ) # E9 â œ é [LATIN SMALL LETTER E WITH ACUTE] +char \u017A ( 234 6 ) # EA â ® ź [LATIN SMALL LETTER Z WITH ACUTE] +char \u0123 (12 456 ) # EC â » Ä£ [LATIN SMALL LETTER G WITH CEDILLA] +char \u0137 (1 3 6 ) # ED â ¥ Ä· [LATIN SMALL LETTER K WITH CEDILLA] +char \u012B ( 2 4 6 ) # EE â ª Ä« [LATIN SMALL LETTER I WITH MACRON] +char \u013C (123 6 ) # EF â § ļ [LATIN SMALL LETTER L WITH CEDILLA] +char \u0161 (1 56 ) # F0 â ± Å¡ [LATIN SMALL LETTER S WITH CARON] +char \u0144 (1 456 ) # F1 â ¹ Å„ [LATIN SMALL LETTER N WITH ACUTE] +char \u0146 (1 3456 ) # F2 â ½ ņ [LATIN SMALL LETTER N WITH CEDILLA] +char \xF3 ( 2 4 6 ) # F3 â ª ó [LATIN SMALL LETTER O WITH ACUTE] +char \u014D (1 3 56 ) # F4 â µ Å [LATIN SMALL LETTER O WITH MACRON] +char \xF5 ( 2 4 6 ) # F5 â ª õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 2 4 6 ) # F6 â ª ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 ( 2 56 ) # F7 â ² ÷ [DIVISION SIGN] +char \u0142 (12 6 ) # F9 â £ Å‚ [LATIN SMALL LETTER L WITH STROKE] +char \u015B ( 2 4 6 ) # FA â ª Å› [LATIN SMALL LETTER S WITH ACUTE] +char \u016B ( 34 6 ) # FB â ¬ Å« [LATIN SMALL LETTER U WITH MACRON] +char \xFC (12 56 ) # FC â ³ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \u017C (1234 6 ) # FD â ¯ ż [LATIN SMALL LETTER Z WITH DOT ABOVE] +char \u017E ( 234 6 ) # FE â ® ž [LATIN SMALL LETTER Z WITH CARON] +char \u2019 ( 3 ) # FF â „ ’ [RIGHT SINGLE QUOTATION MARK] +char \xC0 (123 56 ) # â · À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 (1 6 ) # â ¡ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 (1 6 ) # â ¡  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 (12 6 ) # â £ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC7 (1234 6 ) # â ¯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( 234 6 ) # â ® È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xCA (12 6 ) # â £ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB (12 4 6 ) # â « Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCD ( 34 ) # â Œ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE (1 4 6 ) # â © ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF (12 456 ) # â » à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD4 (1 456 ) # â ¹ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xDA ( 34 6 ) # â ¬ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB (1 56 ) # â ± Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDD (1234 6 ) # â ¯ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xE0 (123 56 ) # â · à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 (1 6 ) # â ¡ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 6 ) # â ¡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 (12 6 ) # â £ ã [LATIN SMALL LETTER A WITH TILDE] +char \xE7 (1234 6 ) # â ¯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 ) # â ® è [LATIN SMALL LETTER E WITH GRAVE] +char \xEA (12 6 ) # â £ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 ) # â « ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xED ( 34 ) # â Œ í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 6 ) # â © î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 ) # â » ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF4 (1 456 ) # â ¹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xFA ( 34 6 ) # â ¬ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 56 ) # â ± û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFD (1234 6 ) # â ¯ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \u010E (1 456 ) # â ¹ ÄŽ [LATIN CAPITAL LETTER D WITH CARON] +char \u010F (1 456 ) # â ¹ Ä [LATIN SMALL LETTER D WITH CARON] +char \u011A (12 6 ) # â £ Äš [LATIN CAPITAL LETTER E WITH CARON] +char \u011B (12 6 ) # â £ Ä› [LATIN SMALL LETTER E WITH CARON] +char \u0147 (12 4 6 ) # â « Ň [LATIN CAPITAL LETTER N WITH CARON] +char \u0148 (12 4 6 ) # â « ň [LATIN SMALL LETTER N WITH CARON] +char \u0156 (123 56 ) # â · Å– [LATIN SMALL LETTER R WITH CEDILLA] +char \u0157 (123 56 ) # â · Å— [LATIN SMALL LETTER R WITH CEDILLA] +char \u0158 ( 2 456 ) # â º Ř [LATIN CAPITAL LETTER R WITH CARON] +char \u0159 ( 2 456 ) # â º Å™ [LATIN SMALL LETTER R WITH CARON] +char \u0164 (12 56 ) # â ³ Ť [LATIN CAPITAL LETTER T WITH CARON] +char \u0165 (12 56 ) # â ³ Å¥ [LATIN SMALL LETTER T WITH CARON] +char \u016C ( 23456 ) # â ¾ Ŭ [LATIN CAPITAL LETTER U WITH BREVE] +char \u016D ( 23456 ) # â ¾ Å­ [LATIN SMALL LETTER U WITH BREVE] +char \u016E ( 23456 ) # â ¾ Å® [LATIN CAPITAL LETTER U WITH RING ABOVE] +char \u016F ( 23456 ) # â ¾ ů [LATIN SMALL LETTER U WITH RING ABOVE] +char \u2010 ( 3 6 ) # â ¤ †[HYPHEN] +char \u2011 ( 3 6 ) # â ¤ ‑ [NON-BREAKING HYPHEN] +char \u2013 ( 3 6 ) # â ¤ – [EN DASH] +char \u2018 ( 3 ) # â „ ‘ [LEFT SINGLE QUOTATION MARK] +char \u201F ( 3 56 ) # â ´ ‟ [DOUBLE HIGH-REVERSED-9 QUOTATION MARK] + +include common.tti diff --git a/Tables/malayalam.tti b/Tables/malayalam.tti new file mode 100644 index 0000000000000000000000000000000000000000..40fac8837f247bef64509e924ce2adaf951410f7 --- /dev/null +++ b/Tables/malayalam.tti @@ -0,0 +1,109 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable defines the braille representations +# for the Malayalam script. + +# Maintained by John J. Boyer, director@chpi.org, www.chpi.org +# +# This table is built and maintained by Leon Ungier +# with help and guidance from Mohammed R. Ramadan +# +# Converted from liblouis table by Samuel Thibault + +# generated by ttbtest: + +char \u0D02 ( 56 ) # â ° à´‚ [MALAYALAM SIGN ANUSVARA] +char \u0D03 ( 6 ) # â   à´ƒ [MALAYALAM SIGN VISARGA] +char \u0D05 (1 ) # â  à´… [MALAYALAM LETTER A] +char \u0D06 ( 345 ) # â œ à´† [MALAYALAM LETTER AA] +char \u0D07 ( 2 4 ) # â Š à´‡ [MALAYALAM LETTER I] +char \u0D08 ( 3 5 ) # â ” à´ˆ [MALAYALAM LETTER II] +char \u0D09 (1 3 6 ) # â ¥ à´‰ [MALAYALAM LETTER U] +char \u0D0A (12 56 ) # â ³ à´Š [MALAYALAM LETTER UU] + +char \u0D0E ( 34 7 ) # â¡Œ à´Ž [MALAYALAM LETTER E] +char \u0D0F (1 5 ) # â ‘ à´ [MALAYALAM LETTER EE] +char \u0D10 ( 34 ) # â Œ à´ [MALAYALAM LETTER AI] + +char \u0D12 ( 2 4 67 ) # ⡪ à´’ [MALAYALAM LETTER O] +char \u0D13 (1 3 5 ) # â • à´“ [MALAYALAM LETTER OO] +char \u0D14 ( 2 4 6 ) # â ª à´” [MALAYALAM LETTER AU] +char \u0D15 (1 3 ) # â … à´• [MALAYALAM LETTER KA] +char \u0D16 ( 4 6 ) # â ¨ à´– [MALAYALAM LETTER KHA] +char \u0D17 (1234 ) # â  à´— [MALAYALAM LETTER GA] +char \u0D18 (12 6 ) # â £ à´˜ [MALAYALAM LETTER GHA] +char \u0D19 ( 34 6 ) # â ¬ à´™ [MALAYALAM LETTER NGA] +char \u0D1A (1 4 ) # â ‰ à´š [MALAYALAM LETTER CA] +char \u0D1B (1 6 ) # â ¡ à´› [MALAYALAM LETTER CHA] +char \u0D1C ( 2 45 ) # â š à´œ [MALAYALAM LETTER JA] +char \u0D1D ( 3 56 ) # â ´ à´ [MALAYALAM LETTER JHA] +char \u0D1E ( 2 5 ) # â ’ à´ž [MALAYALAM LETTER NYA] +char \u0D1F ( 23456 ) # â ¾ à´Ÿ [MALAYALAM LETTER TTA] +char \u0D20 ( 2 456 ) # â º à´  [MALAYALAM LETTER TTHA] +char \u0D21 (12 4 6 ) # â « à´¡ [MALAYALAM LETTER DDA] +char \u0D22 (123456 ) # â ¿ à´¢ [MALAYALAM LETTER DDHA] +char \u0D23 ( 3456 ) # â ¼ à´£ [MALAYALAM LETTER NNA] +char \u0D24 ( 2345 ) # â ž à´¤ [MALAYALAM LETTER TA] +char \u0D25 (1 456 ) # â ¹ à´¥ [MALAYALAM LETTER THA] +char \u0D26 (1 45 ) # â ™ à´¦ [MALAYALAM LETTER DA] +char \u0D27 ( 234 6 ) # â ® à´§ [MALAYALAM LETTER DHA] +char \u0D28 (1 345 ) # â  à´¨ [MALAYALAM LETTER NA] + +char \u0D2A (1234 ) # â  à´ª [MALAYALAM LETTER PA] +char \u0D2B ( 23 5 ) # â – à´« [MALAYALAM LETTER PHA] +char \u0D2C (12 ) # â ƒ à´¬ [MALAYALAM LETTER BA] +char \u0D2D ( 45 ) # â ˜ à´­ [MALAYALAM LETTER BHA] +char \u0D2E (1 34 ) # â  à´® [MALAYALAM LETTER MA] +char \u0D2F (1 3456 ) # â ½ à´¯ [MALAYALAM LETTER YA] +char \u0D30 (123 5 ) # â — à´° [MALAYALAM LETTER RA] +char \u0D31 (123 5 7 ) # â¡— à´± [MALAYALAM LETTER RRA] +char \u0D32 (123 ) # â ‡ à´² [MALAYALAM LETTER LA] +char \u0D33 (123 7 ) # ⡇ à´³ [MALAYALAM LETTER LLA] +char \u0D34 (123 78) # ⣇ à´´ [MALAYALAM LETTER LLLA] +char \u0D35 (123 6 ) # â § à´µ [MALAYALAM LETTER VA] +char \u0D36 (1 4 6 ) # â © à´¶ [MALAYALAM LETTER SHA] +char \u0D37 (1234 6 ) # â ¯ à´· [MALAYALAM LETTER SSA] +char \u0D38 ( 234 ) # â Ž à´¸ [MALAYALAM LETTER SA] +char \u0D39 (12 5 ) # â “ à´¹ [MALAYALAM LETTER HA] + +char \u0D3E ( 345 ) # â œ à´¾ [MALAYALAM VOWEL SIGN AA] +char \u0D3F ( 2 4 ) # â Š à´¿ [MALAYALAM VOWEL SIGN I] +char \u0D40 ( 3 5 ) # â ” ീ [MALAYALAM VOWEL SIGN II] +char \u0D41 (1 3 6 ) # â ¥ ൠ[MALAYALAM VOWEL SIGN U] +char \u0D42 (12 56 ) # â ³ ൂ [MALAYALAM VOWEL SIGN UU] + +char \u0D46 ( 34 7 ) # â¡Œ െ [MALAYALAM VOWEL SIGN E] +char \u0D47 (1 5 ) # â ‘ േ [MALAYALAM VOWEL SIGN EE] +char \u0D48 ( 34 ) # â Œ ൈ [MALAYALAM VOWEL SIGN AI] + +char \u0D4A ( 2 4 67 ) # ⡪ ൊ [MALAYALAM VOWEL SIGN O] +char \u0D4B (1 3 5 ) # â • ോ [MALAYALAM VOWEL SIGN OO] +char \u0D4C ( 2 4 6 ) # â ª ൌ [MALAYALAM VOWEL SIGN AU] +char \u0D4D ( 4 ) # â ˆ ൠ[MALAYALAM SIGN VIRAMA] + +char \u0D66 ( 2 45 ) # â š ൦ [MALAYALAM DIGIT ZERO] +char \u0D67 (1 ) # â  àµ§ [MALAYALAM DIGIT ONE] +char \u0D68 (12 ) # â ƒ ൨ [MALAYALAM DIGIT TWO] +char \u0D69 (1 4 ) # â ‰ ൩ [MALAYALAM DIGIT THREE] +char \u0D6A (1 45 ) # â ™ ൪ [MALAYALAM DIGIT FOUR] +char \u0D6B (1 5 ) # â ‘ ൫ [MALAYALAM DIGIT FIVE] +char \u0D6C (12 4 ) # â ‹ ൬ [MALAYALAM DIGIT SIX] +char \u0D6D (12 45 ) # â › ൭ [MALAYALAM DIGIT SEVEN] +char \u0D6E (12 5 ) # â “ ൮ [MALAYALAM DIGIT EIGHT] +char \u0D6F ( 2 4 ) # â Š ൯ [MALAYALAM DIGIT NINE] diff --git a/Tables/mg.ctb b/Tables/mg.ctb new file mode 100644 index 0000000000000000000000000000000000000000..5dad6706598675b370bb966323a298beaaf207a2 --- /dev/null +++ b/Tables/mg.ctb @@ -0,0 +1,32 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - Malagasy (contracted) +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +include letters-latin.cti + +always dz 245 +always ao 246 +always ai 34 diff --git a/Tables/mg.ttb b/Tables/mg.ttb new file mode 100644 index 0000000000000000000000000000000000000000..dc048a3b58aed067c2988fb11a84b247a82cc520 --- /dev/null +++ b/Tables/mg.ttb @@ -0,0 +1,31 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Malagasy +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +include letters-latin.tti +include numbers-dot8.tti +include punctuation-basic.tti +include common.tti diff --git a/Tables/mi.ttb b/Tables/mi.ttb new file mode 100644 index 0000000000000000000000000000000000000000..39d8b1a83ef48a013650e380b070b1d5dd473c77 --- /dev/null +++ b/Tables/mi.ttb @@ -0,0 +1,31 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Maori +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +include letters-latin.tti +include numbers-dot8.tti +include punctuation-basic.tti +include common.tti diff --git a/Tables/ml.ttb b/Tables/ml.ttb new file mode 100644 index 0000000000000000000000000000000000000000..577543f0b29ff7090e5425a85080f908070295c9 --- /dev/null +++ b/Tables/ml.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Malayalam + +include malayalam.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/mni.ttb b/Tables/mni.ttb new file mode 100644 index 0000000000000000000000000000000000000000..74b60c8011ccd07c6c2057f74c5568c787ac18d9 --- /dev/null +++ b/Tables/mni.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Manipuri + +include bengali.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/mr.ttb b/Tables/mr.ttb new file mode 100644 index 0000000000000000000000000000000000000000..e74fd35d671d106e93195f3a7effe23fc42fa601 --- /dev/null +++ b/Tables/mr.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Marathi + +include devanagari.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/mt.ttb b/Tables/mt.ttb new file mode 100644 index 0000000000000000000000000000000000000000..2e28e877dd25398d04d56f2705ca5d0751a9f60b --- /dev/null +++ b/Tables/mt.ttb @@ -0,0 +1,49 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Maltese +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# generated by ttbtest: charset=latin3 +char \x4A (1 34567 ) # 4A ⡽ J [LATIN CAPITAL LETTER J] +char \u0126 (1 567 ) # A1 ⡱ Ħ [LATIN CAPITAL LETTER H WITH STROKE] +char \u017B (1 3 567 ) # AF ⡵ Å» [LATIN CAPITAL LETTER Z WITH DOT ABOVE] +char \u010A (1 67 ) # C5 â¡¡ ÄŠ [LATIN CAPITAL LETTER C WITH DOT ABOVE] +char \u0120 ( 2 45 7 ) # D5 â¡š Ä  [LATIN CAPITAL LETTER G WITH DOT ABOVE] +char \x6A (1 3456 ) # 6A â ½ j [LATIN SMALL LETTER J] +char \u0127 (1 56 ) # B1 â ± ħ [LATIN SMALL LETTER H WITH STROKE] +char \u017C (1 3 56 ) # BF â µ ż [LATIN SMALL LETTER Z WITH DOT ABOVE] +char \u010B (1 6 ) # E5 â ¡ Ä‹ [LATIN SMALL LETTER C WITH DOT ABOVE] +char \u0121 ( 2 45 ) # F5 â š Ä¡ [LATIN SMALL LETTER G WITH DOT ABOVE] + +# the numbers 0-9 are represented by the letters j,a-i with dot 8 added +include numbers-dot8.tti + +include punctuation-basic.tti +char \x3F ( 23 6 ) # 3F â ¦ ? [QUESTION MARK] + +include common.tti diff --git a/Tables/mun.ctb b/Tables/mun.ctb new file mode 100644 index 0000000000000000000000000000000000000000..e1702bdbe21fa36826416223437b85fcba548163 --- /dev/null +++ b/Tables/mun.ctb @@ -0,0 +1,34 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - Munda (contracted) +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +include letters-latin.cti + +always ng 346 +always ch 16 +always É› 26 +always É” 246 +always ö 1256 diff --git a/Tables/mun.ttb b/Tables/mun.ttb new file mode 100644 index 0000000000000000000000000000000000000000..ec71fad610096b0a32ae2fc9380d231903b3b853 --- /dev/null +++ b/Tables/mun.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Munda + +include bengali.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/mwr.ttb b/Tables/mwr.ttb new file mode 100644 index 0000000000000000000000000000000000000000..412c8ac72ae48ce783fc718c99c47f7f89b54c76 --- /dev/null +++ b/Tables/mwr.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Marwari + +include devanagari.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/nabcc.cti b/Tables/nabcc.cti new file mode 100644 index 0000000000000000000000000000000000000000..3bb27c7b2c181b5cafccb438da1852bec6e60899 --- /dev/null +++ b/Tables/nabcc.cti @@ -0,0 +1,128 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY contraction subtable implements the North American Braille +# Computer Code. + +include letters-latin.cti + +always \s 0 + +always a 1 +always b 12 +always c 14 +always d 145 +always e 15 +always f 124 +always g 1245 +always h 125 +always i 24 +always j 245 +always k 13 +always l 123 +always m 134 +always n 1345 +always o 135 +always p 1234 +always q 12345 +always r 1235 +always s 234 +always t 2345 +always u 136 +always v 1236 +always w 2456 +always x 1346 +always y 13456 +always z 1356 + +always A 17 +always B 127 +always C 147 +always D 1457 +always E 157 +always F 1247 +always G 12457 +always H 1257 +always I 247 +always J 2457 +always K 137 +always L 1237 +always M 1347 +always N 13457 +always O 1357 +always P 12347 +always Q 123457 +always R 12357 +always S 2347 +always T 23457 +always U 1367 +always V 12367 +always W 24567 +always X 13467 +always Y 134567 +always Z 13567 + +always 1 2 +always 2 23 +always 3 25 +always 4 256 +always 5 26 +always 6 235 +always 7 2356 +always 8 236 +always 9 35 +always 0 356 + +always & 12346 +always = 123456 +always ( 12356 +always ! 2346 +always ) 23456 + +always * 16 +always < 126 +always % 146 +always ? 1456 +always : 156 +always $ 1246 +always } 12456 +always | 1256 +always { 246 + +always ] 124567 +always \\ 12567 +always [ 2467 + +always / 34 +always + 346 +always \# 3456 +always > 345 +always ' 3 +always - 36 + +always ` 4 +always ~ 45 +always _ 456 +always " 5 +always . 46 +always ; 56 +always , 6 + +always @ 47 +always ^ 457 + diff --git a/Tables/ne.ttb b/Tables/ne.ttb new file mode 100644 index 0000000000000000000000000000000000000000..763ca7a2a50f110632eb488da1a6f6c359b649c2 --- /dev/null +++ b/Tables/ne.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Nepali + +include devanagari.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/new.ttb b/Tables/new.ttb new file mode 100644 index 0000000000000000000000000000000000000000..6e2a26bc03d4939ed4273a01daf6911a78812d29 --- /dev/null +++ b/Tables/new.ttb @@ -0,0 +1,25 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Newari + +include devanagari.tti +include bengali.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/nl.ctb b/Tables/nl.ctb new file mode 100644 index 0000000000000000000000000000000000000000..ea10655499ce4f5981ae26d78a035865d3158183 --- /dev/null +++ b/Tables/nl.ctb @@ -0,0 +1,31 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - Dutch (contracted) +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +always ch 1456 +always ij 13456 +always oe 246 +always sch 156 diff --git a/Tables/nl.ttb b/Tables/nl.ttb new file mode 100644 index 0000000000000000000000000000000000000000..6b7529284e5a353a8d8fb9455b6824e75ad6cf5a --- /dev/null +++ b/Tables/nl.ttb @@ -0,0 +1,21 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Dutch + +include nl_NL.ttb diff --git a/Tables/nl_BE.ttb b/Tables/nl_BE.ttb new file mode 100644 index 0000000000000000000000000000000000000000..3a4c25fed4c9e8bcbd7d2984328d456158e75a9c --- /dev/null +++ b/Tables/nl_BE.ttb @@ -0,0 +1,189 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Dutch (Belgium) + +# Created by Leon Ungier . +# Edited by Eric +# +# Converted from liblouis table by Samuel Thibault + +# generated by ttbtest: charset=iso-8859-15 +char \x09 ( ) # 09 â € [CHARACTER TABULATION] +char \x0A ( ) # 0A â € [LINE FEED (LF)] +char \x0D ( ) # 0D â € [CARRIAGE RETURN (CR)] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 23 5 ) # 21 â – ! [EXCLAMATION MARK] +char \x22 ( 23 56 ) # 22 â ¶ " [QUOTATION MARK] +char \x23 ( 5 ) # 23 â  # [NUMBER SIGN] +char \x24 (1 45 ) # 24 â ™ $ [DOLLAR SIGN] +char \x26 (1234 6 ) # 26 â ¯ & [AMPERSAND] +char \x27 ( 3 6 ) # 27 â ¤ ' [APOSTROPHE] +char \x28 ( 23 6 ) # 28 â ¦ ( [LEFT PARENTHESIS] +char \x29 ( 3 56 ) # 29 â ´ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 23 5 ) # 2B â – + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 2 56 ) # 2E â ² . [FULL STOP] +char \x2F ( 34 ) # 2F â Œ / [SOLIDUS] +char \x30 ( 2 45 ) # 30 â š 0 [DIGIT ZERO] +char \x31 (1 ) # 31 â  1 [DIGIT ONE] +char \x32 (12 ) # 32 â ƒ 2 [DIGIT TWO] +char \x33 (1 4 ) # 33 â ‰ 3 [DIGIT THREE] +char \x34 (1 45 ) # 34 â ™ 4 [DIGIT FOUR] +char \x35 (1 5 ) # 35 â ‘ 5 [DIGIT FIVE] +char \x36 (12 4 ) # 36 â ‹ 6 [DIGIT SIX] +char \x37 (12 45 ) # 37 â › 7 [DIGIT SEVEN] +char \x38 (12 5 ) # 38 â “ 8 [DIGIT EIGHT] +char \x39 ( 2 4 ) # 39 â Š 9 [DIGIT NINE] +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3D ( 23 56 ) # 3D â ¶ = [EQUALS SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 ( 345 ) # 40 â œ @ [COMMERCIAL AT] +char \x41 (1 ) # 41 â  A [LATIN CAPITAL LETTER A] +char \x42 (12 ) # 42 â ƒ B [LATIN CAPITAL LETTER B] +char \x43 (1 4 ) # 43 â ‰ C [LATIN CAPITAL LETTER C] +char \x44 (1 45 ) # 44 â ™ D [LATIN CAPITAL LETTER D] +char \x45 (1 5 ) # 45 â ‘ E [LATIN CAPITAL LETTER E] +char \x46 (12 4 ) # 46 â ‹ F [LATIN CAPITAL LETTER F] +char \x47 (12 45 ) # 47 â › G [LATIN CAPITAL LETTER G] +char \x48 (12 5 ) # 48 â “ H [LATIN CAPITAL LETTER H] +char \x49 ( 2 4 ) # 49 â Š I [LATIN CAPITAL LETTER I] +char \x4A ( 2 45 ) # 4A â š J [LATIN CAPITAL LETTER J] +char \x4B (1 3 ) # 4B â … K [LATIN CAPITAL LETTER K] +char \x4C (123 ) # 4C â ‡ L [LATIN CAPITAL LETTER L] +char \x4D (1 34 ) # 4D â  M [LATIN CAPITAL LETTER M] +char \x4E (1 345 ) # 4E â  N [LATIN CAPITAL LETTER N] +char \x4F (1 3 5 ) # 4F â • O [LATIN CAPITAL LETTER O] +char \x50 (1234 ) # 50 â  P [LATIN CAPITAL LETTER P] +char \x51 (12345 ) # 51 â Ÿ Q [LATIN CAPITAL LETTER Q] +char \x52 (123 5 ) # 52 â — R [LATIN CAPITAL LETTER R] +char \x53 ( 234 ) # 53 â Ž S [LATIN CAPITAL LETTER S] +char \x54 ( 2345 ) # 54 â ž T [LATIN CAPITAL LETTER T] +char \x55 (1 3 6 ) # 55 â ¥ U [LATIN CAPITAL LETTER U] +char \x56 (123 6 ) # 56 â § V [LATIN CAPITAL LETTER V] +char \x57 ( 2 456 ) # 57 â º W [LATIN CAPITAL LETTER W] +char \x58 (1 34 6 ) # 58 â ­ X [LATIN CAPITAL LETTER X] +char \x59 (1 3456 ) # 59 â ½ Y [LATIN CAPITAL LETTER Y] +char \x5A (1 3 56 ) # 5A â µ Z [LATIN CAPITAL LETTER Z] +char \x5B (123 56 ) # 5B â · [ [LEFT SQUARE BRACKET] +char \x5D ( 23456 ) # 5D â ¾ ] [RIGHT SQUARE BRACKET] +char \x5E ( 34 6 ) # 5E â ¬ ^ [CIRCUMFLEX ACCENT] +char \x5F ( 456 ) # 5F â ¸ _ [LOW LINE] +char \x60 ( 6 ) # 60 â   ` [GRAVE ACCENT] +char \x61 (1 ) # 61 â  a [LATIN SMALL LETTER A] +char \x62 (12 ) # 62 â ƒ b [LATIN SMALL LETTER B] +char \x63 (1 4 ) # 63 â ‰ c [LATIN SMALL LETTER C] +char \x64 (1 45 ) # 64 â ™ d [LATIN SMALL LETTER D] +char \x65 (1 5 ) # 65 â ‘ e [LATIN SMALL LETTER E] +char \x66 (12 4 ) # 66 â ‹ f [LATIN SMALL LETTER F] +char \x67 (12 45 ) # 67 â › g [LATIN SMALL LETTER G] +char \x68 (12 5 ) # 68 â “ h [LATIN SMALL LETTER H] +char \x69 ( 2 4 ) # 69 â Š i [LATIN SMALL LETTER I] +char \x6A ( 2 45 ) # 6A â š j [LATIN SMALL LETTER J] +char \x6B (1 3 ) # 6B â … k [LATIN SMALL LETTER K] +char \x6C (123 ) # 6C â ‡ l [LATIN SMALL LETTER L] +char \x6D (1 34 ) # 6D â  m [LATIN SMALL LETTER M] +char \x6E (1 345 ) # 6E â  n [LATIN SMALL LETTER N] +char \x6F (1 3 5 ) # 6F â • o [LATIN SMALL LETTER O] +char \x70 (1234 ) # 70 â  p [LATIN SMALL LETTER P] +char \x71 (12345 ) # 71 â Ÿ q [LATIN SMALL LETTER Q] +char \x72 (123 5 ) # 72 â — r [LATIN SMALL LETTER R] +char \x73 ( 234 ) # 73 â Ž s [LATIN SMALL LETTER S] +char \x74 ( 2345 ) # 74 â ž t [LATIN SMALL LETTER T] +char \x75 (1 3 6 ) # 75 â ¥ u [LATIN SMALL LETTER U] +char \x76 (123 6 ) # 76 â § v [LATIN SMALL LETTER V] +char \x77 ( 2 456 ) # 77 â º w [LATIN SMALL LETTER W] +char \x78 (1 34 6 ) # 78 â ­ x [LATIN SMALL LETTER X] +char \x79 (1 3456 ) # 79 â ½ y [LATIN SMALL LETTER Y] +char \x7A (1 3 56 ) # 7A â µ z [LATIN SMALL LETTER Z] +char \x7B (123 56 ) # 7B â · { [LEFT CURLY BRACKET] +char \x7C (123456 ) # 7C â ¿ | [VERTICAL LINE] +char \x7D ( 23456 ) # 7D â ¾ } [RIGHT CURLY BRACKET] +char \x80 (1 5 ) # 80 â ‘ [] +char \x92 ( 3 ) # 92 â „ [PRIVATE USE TWO] +char \xA0 ( ) # A0 â €   [NO-BREAK SPACE] +char \xA1 ( 4 ) # A1 â ˆ ¡ [INVERTED EXCLAMATION MARK] +char \xA2 (1 4 ) # A2 â ‰ ¢ [CENT SIGN] +char \xA3 (1234 ) # A3 â  Â£ [POUND SIGN] +char \u20AC (1 5 ) # A4 â ‘ € [EURO SIGN] +char \xA5 (1 3456 ) # A5 â ½ Â¥ [YEN SIGN] +char \xA7 ( 34 6 ) # A7 â ¬ § [SECTION SIGN] +char \xAA ( 4 6 ) # AA â ¨ ª [FEMININE ORDINAL INDICATOR] +char \xAB ( 23 56 ) # AB â ¶ « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xB5 (123456 ) # B5 â ¿ µ [MICRO SIGN] +char \xB7 ( 56 ) # B7 â ° · [MIDDLE DOT] +char \xBB ( 23 56 ) # BB â ¶ » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBF ( 3 5 ) # BF â ” ¿ [INVERTED QUESTION MARK] +char \xC0 (123 56 ) # C0 â · À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 (1 ) # C1 â  Ã [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 (1 6 ) # C2 â ¡  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 ( 345 ) # C3 â œ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 ( 345 ) # C4 â œ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 ( 2 4 6 ) # C5 â ª Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( 345 ) # C6 â œ Æ [LATIN CAPITAL LETTER AE] +char \xC7 (1234 6 ) # C7 â ¯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( 234 6 ) # C8 â ® È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 (123456 ) # C9 â ¿ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA (12 6 ) # CA â £ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB (12 4 6 ) # CB â « Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xD1 (12 456 ) # D1 â » Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD6 ( 2 4 6 ) # D6 â ª Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 ( 23 6 ) # D7 â ¦ × [MULTIPLICATION SIGN] +char \xE0 (123 56 ) # E0 â · à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 (1 ) # E1 â  Ã¡ [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 6 ) # E2 â ¡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 ( 345 ) # E3 â œ ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 ( 345 ) # E4 â œ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 ( 2 4 6 ) # E5 â ª Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 ( 345 ) # E6 â œ æ [LATIN SMALL LETTER AE] +char \xE7 (1234 6 ) # E7 â ¯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 ) # E8 â ® è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (123456 ) # E9 â ¿ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (12 6 ) # EA â £ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 ) # EB â « ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC ( 2 4 ) # EC â Š ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED ( 2 4 ) # ED â Š í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 6 ) # EE â © î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 ) # EF â » ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF1 (12 456 ) # F1 â » ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 (1 3 5 ) # F2 â • ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 ( 34 6 ) # F3 â ¬ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 456 ) # F4 â ¹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 ( 2 4 6 ) # F5 â ª õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 2 4 6 ) # F6 â ª ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 ( 2 56 ) # F7 â ² ÷ [DIVISION SIGN] +char \xF9 (123 56 ) # F9 â · ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA (1 3 6 ) # FA â ¥ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 56 ) # FB â ± û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 ) # FC â ³ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xB8 ( 45 ) # â ˜ ¸ [CEDILLA] +char \u0192 (12 4 ) # â ‹ Æ’ [LATIN SMALL LETTER F WITH HOOK] +char \u2010 ( 4 6 ) # â ¨ †[HYPHEN] +char \u2011 ( 4 6 ) # â ¨ ‑ [NON-BREAKING HYPHEN] +char \u2013 ( 3 6 ) # â ¤ – [EN DASH] +char \u2018 ( 3 ) # â „ ‘ [LEFT SINGLE QUOTATION MARK] +char \u2019 ( 3 ) # â „ ’ [RIGHT SINGLE QUOTATION MARK] +char \u201C ( 23 6 ) # â ¦ “ [LEFT DOUBLE QUOTATION MARK] +char \u201D ( 3 56 ) # â ´ †[RIGHT DOUBLE QUOTATION MARK] +char \u201E ( 23 6 ) # â ¦ „ [DOUBLE LOW-9 QUOTATION MARK] +char \u201F ( 3 56 ) # â ´ ‟ [DOUBLE HIGH-REVERSED-9 QUOTATION MARK] + +include common.tti diff --git a/Tables/nl_NL.ttb b/Tables/nl_NL.ttb new file mode 100644 index 0000000000000000000000000000000000000000..920d1c5e9848bb6698fd365dcec3eea1cd8e787d --- /dev/null +++ b/Tables/nl_NL.ttb @@ -0,0 +1,180 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Dutch (Netherlands) + +# Created by Leon Ungier . +# Compilation June 22, 2006 +# +# Converted from liblouis table by Samuel Thibault + +# generated by ttbtest: charset=iso-8859-15 +char \x09 ( ) # 09 â € [CHARACTER TABULATION] +char \x0A ( ) # 0A â € [LINE FEED (LF)] +char \x0D ( ) # 0D â € [CARRIAGE RETURN (CR)] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 23 5 ) # 21 â – ! [EXCLAMATION MARK] +char \x22 ( 23 56 ) # 22 â ¶ " [QUOTATION MARK] +char \x23 ( 3456 ) # 23 â ¼ # [NUMBER SIGN] +char \x24 (1 45 ) # 24 â ™ $ [DOLLAR SIGN] +char \x26 ( 3 56 ) # 26 â ´ & [AMPERSAND] +char \x27 ( 3 ) # 27 â „ ' [APOSTROPHE] +char \x28 ( 23 6 ) # 28 â ¦ ( [LEFT PARENTHESIS] +char \x29 ( 3 56 ) # 29 â ´ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 23 5 ) # 2B â – + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 2 56 ) # 2E â ² . [FULL STOP] +char \x2F ( 34 ) # 2F â Œ / [SOLIDUS] +char \x30 ( 2 45 ) # 30 â š 0 [DIGIT ZERO] +char \x31 (1 ) # 31 â  1 [DIGIT ONE] +char \x32 (12 ) # 32 â ƒ 2 [DIGIT TWO] +char \x33 (1 4 ) # 33 â ‰ 3 [DIGIT THREE] +char \x34 (1 45 ) # 34 â ™ 4 [DIGIT FOUR] +char \x35 (1 5 ) # 35 â ‘ 5 [DIGIT FIVE] +char \x36 (12 4 ) # 36 â ‹ 6 [DIGIT SIX] +char \x37 (12 45 ) # 37 â › 7 [DIGIT SEVEN] +char \x38 (12 5 ) # 38 â “ 8 [DIGIT EIGHT] +char \x39 ( 2 4 ) # 39 â Š 9 [DIGIT NINE] +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3D ( 23 56 ) # 3D â ¶ = [EQUALS SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 ( 345 ) # 40 â œ @ [COMMERCIAL AT] +char \x41 (1 ) # 41 â  A [LATIN CAPITAL LETTER A] +char \x42 (12 ) # 42 â ƒ B [LATIN CAPITAL LETTER B] +char \x43 (1 4 ) # 43 â ‰ C [LATIN CAPITAL LETTER C] +char \x44 (1 45 ) # 44 â ™ D [LATIN CAPITAL LETTER D] +char \x45 (1 5 ) # 45 â ‘ E [LATIN CAPITAL LETTER E] +char \x46 (12 4 ) # 46 â ‹ F [LATIN CAPITAL LETTER F] +char \x47 (12 45 ) # 47 â › G [LATIN CAPITAL LETTER G] +char \x48 (12 5 ) # 48 â “ H [LATIN CAPITAL LETTER H] +char \x49 ( 2 4 ) # 49 â Š I [LATIN CAPITAL LETTER I] +char \x4A ( 2 45 ) # 4A â š J [LATIN CAPITAL LETTER J] +char \x4B (1 3 ) # 4B â … K [LATIN CAPITAL LETTER K] +char \x4C (123 ) # 4C â ‡ L [LATIN CAPITAL LETTER L] +char \x4D (1 34 ) # 4D â  M [LATIN CAPITAL LETTER M] +char \x4E (1 345 ) # 4E â  N [LATIN CAPITAL LETTER N] +char \x4F (1 3 5 ) # 4F â • O [LATIN CAPITAL LETTER O] +char \x50 (1234 ) # 50 â  P [LATIN CAPITAL LETTER P] +char \x51 (12345 ) # 51 â Ÿ Q [LATIN CAPITAL LETTER Q] +char \x52 (123 5 ) # 52 â — R [LATIN CAPITAL LETTER R] +char \x53 ( 234 ) # 53 â Ž S [LATIN CAPITAL LETTER S] +char \x54 ( 2345 ) # 54 â ž T [LATIN CAPITAL LETTER T] +char \x55 (1 3 6 ) # 55 â ¥ U [LATIN CAPITAL LETTER U] +char \x56 (123 6 ) # 56 â § V [LATIN CAPITAL LETTER V] +char \x57 ( 2 456 ) # 57 â º W [LATIN CAPITAL LETTER W] +char \x58 (1 34 6 ) # 58 â ­ X [LATIN CAPITAL LETTER X] +char \x59 (1 3456 ) # 59 â ½ Y [LATIN CAPITAL LETTER Y] +char \x5A (1 3 56 ) # 5A â µ Z [LATIN CAPITAL LETTER Z] +char \x5B (123 56 ) # 5B â · [ [LEFT SQUARE BRACKET] +char \x5D ( 23456 ) # 5D â ¾ ] [RIGHT SQUARE BRACKET] +char \x5E ( 23 5 ) # 5E â – ^ [CIRCUMFLEX ACCENT] +char \x5F ( 456 ) # 5F â ¸ _ [LOW LINE] +char \x60 ( 4 ) # 60 â ˆ ` [GRAVE ACCENT] +char \x61 (1 ) # 61 â  a [LATIN SMALL LETTER A] +char \x62 (12 ) # 62 â ƒ b [LATIN SMALL LETTER B] +char \x63 (1 4 ) # 63 â ‰ c [LATIN SMALL LETTER C] +char \x64 (1 45 ) # 64 â ™ d [LATIN SMALL LETTER D] +char \x65 (1 5 ) # 65 â ‘ e [LATIN SMALL LETTER E] +char \x66 (12 4 ) # 66 â ‹ f [LATIN SMALL LETTER F] +char \x67 (12 45 ) # 67 â › g [LATIN SMALL LETTER G] +char \x68 (12 5 ) # 68 â “ h [LATIN SMALL LETTER H] +char \x69 ( 2 4 ) # 69 â Š i [LATIN SMALL LETTER I] +char \x6A ( 2 45 ) # 6A â š j [LATIN SMALL LETTER J] +char \x6B (1 3 ) # 6B â … k [LATIN SMALL LETTER K] +char \x6C (123 ) # 6C â ‡ l [LATIN SMALL LETTER L] +char \x6D (1 34 ) # 6D â  m [LATIN SMALL LETTER M] +char \x6E (1 345 ) # 6E â  n [LATIN SMALL LETTER N] +char \x6F (1 3 5 ) # 6F â • o [LATIN SMALL LETTER O] +char \x70 (1234 ) # 70 â  p [LATIN SMALL LETTER P] +char \x71 (12345 ) # 71 â Ÿ q [LATIN SMALL LETTER Q] +char \x72 (123 5 ) # 72 â — r [LATIN SMALL LETTER R] +char \x73 ( 234 ) # 73 â Ž s [LATIN SMALL LETTER S] +char \x74 ( 2345 ) # 74 â ž t [LATIN SMALL LETTER T] +char \x75 (1 3 6 ) # 75 â ¥ u [LATIN SMALL LETTER U] +char \x76 (123 6 ) # 76 â § v [LATIN SMALL LETTER V] +char \x77 ( 2 456 ) # 77 â º w [LATIN SMALL LETTER W] +char \x78 (1 34 6 ) # 78 â ­ x [LATIN SMALL LETTER X] +char \x79 (1 3456 ) # 79 â ½ y [LATIN SMALL LETTER Y] +char \x7A (1 3 56 ) # 7A â µ z [LATIN SMALL LETTER Z] +char \x80 (1 5 ) # 80 â ‘ [] +char \x92 ( 3 ) # 92 â „ [PRIVATE USE TWO] +char \xA0 ( ) # A0 â €   [NO-BREAK SPACE] +char \xA3 (1234 ) # A3 â  Â£ [POUND SIGN] +char \u20AC (1 5 ) # A4 â ‘ € [EURO SIGN] +char \xA5 (1 3456 ) # A5 â ½ Â¥ [YEN SIGN] +char \xA7 ( 34 6 ) # A7 â ¬ § [SECTION SIGN] +char \xB7 ( 56 ) # B7 â ° · [MIDDLE DOT] +char \xC0 (123 56 ) # C0 â · À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 (123 56 ) # C1 â · à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 (1 6 ) # C2 â ¡  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 ( 345 ) # C3 â œ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 ( 345 ) # C4 â œ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 (1 6 ) # C5 â ¡ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( 345 ) # C6 â œ Æ [LATIN CAPITAL LETTER AE] +char \xC7 (1234 6 ) # C7 â ¯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( 234 6 ) # C8 â ® È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 (123456 ) # C9 â ¿ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA (12 6 ) # CA â £ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB (12 4 6 ) # CB â « Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xD1 (12 456 ) # D1 â » Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD6 (123456 ) # D6 â ¿ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 ( 23 6 ) # D7 â ¦ × [MULTIPLICATION SIGN] +char \xDC (12 56 ) # DC â ³ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xE0 (123 56 ) # E0 â · à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 (123 56 ) # E1 â · á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 6 ) # E2 â ¡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 ( 345 ) # E3 â œ ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 ( 345 ) # E4 â œ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 (1 6 ) # E5 â ¡ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 ( 345 ) # E6 â œ æ [LATIN SMALL LETTER AE] +char \xE7 (1234 6 ) # E7 â ¯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 ) # E8 â ® è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (123456 ) # E9 â ¿ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (12 6 ) # EA â £ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 ) # EB â « ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC ( 2 4 ) # EC â Š ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED ( 34 ) # ED â Œ í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 6 ) # EE â © î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 ) # EF â » ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF1 (12 456 ) # F1 â » ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 (1 3 5 ) # F2 â • ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 ( 34 6 ) # F3 â ¬ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 456 ) # F4 â ¹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 ( 2 4 6 ) # F5 â ª õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 (123456 ) # F6 â ¿ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 ( 2 56 ) # F7 â ² ÷ [DIVISION SIGN] +char \xF9 (123 56 ) # F9 â · ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA ( 23456 ) # FA â ¾ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 56 ) # FB â ± û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 ) # FC â ³ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xB8 ( 45 ) # â ˜ ¸ [CEDILLA] +char \u0192 (12 4 ) # â ‹ Æ’ [LATIN SMALL LETTER F WITH HOOK] +char \u2010 ( 3 6 ) # â ¤ †[HYPHEN] +char \u2011 ( 4 6 ) # â ¨ ‑ [NON-BREAKING HYPHEN] +char \u2013 ( 3 6 ) # â ¤ – [EN DASH] +char \u2018 ( 3 ) # â „ ‘ [LEFT SINGLE QUOTATION MARK] +char \u2019 ( 3 ) # â „ ’ [RIGHT SINGLE QUOTATION MARK] +char \u201C ( 23 6 ) # â ¦ “ [LEFT DOUBLE QUOTATION MARK] +char \u201D ( 3 56 ) # â ´ †[RIGHT DOUBLE QUOTATION MARK] +char \u201E ( 23 6 ) # â ¦ „ [DOUBLE LOW-9 QUOTATION MARK] +char \u201F ( 3 56 ) # â ´ ‟ [DOUBLE HIGH-REVERSED-9 QUOTATION MARK] + +include common.tti diff --git a/Tables/no-generic.ttb b/Tables/no-generic.ttb new file mode 100644 index 0000000000000000000000000000000000000000..124220047282c5e7f13ac1ff84f899466d8ccfa6 --- /dev/null +++ b/Tables/no-generic.ttb @@ -0,0 +1,207 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Norwegian (with support for other languages) +# Some unofficial character representations to accommodate multilingual usage. +# For example, numbers are represented with dot 6 rather than with dot 8. + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# the standard representations for the Latin control characters +include control-latin.tti + +# the numbers 1-9 are represented by the letters a-i with dot 6 added +# the number 0 is represented by dots 346 +include numbers-dot6.tti + +# generated by ttbtest: charset=iso-8859-1 +char \x00 ( 45 78) # 00 ⣘ [NULL] +# Latin control characters # 01-1A +char \x1B (123 5678) # 1B ⣷ [ESCAPE] +char \x1C ( 34 78) # 1C ⣌ [INFORMATION SEPARATOR FOUR] +char \x1D ( 2345678) # 1D ⣾ [INFORMATION SEPARATOR THREE] +char \x1E ( 234 678) # 1E ⣮ [INFORMATION SEPARATOR TWO] +char \x1F ( 45678) # 1F ⣸ [INFORMATION SEPARATOR ONE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 5 ) # 21 â  ! [EXCLAMATION MARK] +char \x22 ( 4 ) # 22 â ˆ " [QUOTATION MARK] +char \x23 ( 3456 ) # 23 â ¼ # [NUMBER SIGN] +char \x24 ( 4 6 ) # 24 â ¨ $ [DOLLAR SIGN] +char \x25 (123456 ) # 25 â ¿ % [PERCENT SIGN] +char \x26 (1234 6 ) # 26 â ¯ & [AMPERSAND] +char \x27 ( 6 ) # 27 â   ' [APOSTROPHE] +char \x28 ( 23 6 ) # 28 â ¦ ( [LEFT PARENTHESIS] +char \x29 ( 3 56 ) # 29 â ´ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 23 5 ) # 2B â – + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 3 ) # 2E â „ . [FULL STOP] +char \x2F ( 2 56 ) # 2F â ² / [SOLIDUS] +# Hindu-Arabic numerals # 30-39 +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C ( 56 ) # 3C â ° < [LESS-THAN SIGN] +char \x3D ( 23 56 ) # 3D â ¶ = [EQUALS SIGN] +char \x3E ( 45 ) # 3E â ˜ > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 ( 345 7 ) # 40 â¡œ @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B (123 567 ) # 5B â¡· [ [LEFT SQUARE BRACKET] +char \x5C ( 34 7 ) # 5C â¡Œ \ [REVERSE SOLIDUS] +char \x5D ( 234567 ) # 5D ⡾ ] [RIGHT SQUARE BRACKET] +char \x5E ( 234 67 ) # 5E â¡® ^ [CIRCUMFLEX ACCENT] +char \x5F ( 456 ) # 5F â ¸ _ [LOW LINE] +char \x60 ( 345 ) # 60 â œ ` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B (123 56 ) # 7B â · { [LEFT CURLY BRACKET] +char \x7C ( 34 ) # 7C â Œ | [VERTICAL LINE] +char \x7D ( 23456 ) # 7D â ¾ } [RIGHT CURLY BRACKET] +char \x7E ( 234 6 ) # 7E â ® ~ [TILDE] +char \x7F ( 456 8) # 7F ⢸ [DELETE] +char \x80 ( 23 67 ) # 80 ⡦ [] +char \x81 ( 56 8) # 81 ⢰ [] +char \x82 ( 3 67 ) # 82 ⡤ [BREAK PERMITTED HERE] +char \x83 ( 23 678) # 83 ⣦ [NO BREAK HERE] +char \x84 ( 23 5678) # 84 ⣶ [] +char \x85 (12 45 8) # 85 ⢛ [NEXT LINE (NEL)] +char \x86 (123 8) # 86 ⢇ [START OF SELECTED AREA] +char \x87 (1234567 ) # 87 â¡¿ [END OF SELECTED AREA] +char \x88 (12345678) # 88 ⣿ [CHARACTER TABULATION SET] +char \x89 ( 678) # 89 ⣠ [CHARACTER TABULATION WITH JUSTIFICATION] +char \x8A (1234 678) # 8A ⣯ [LINE TABULATION SET] +char \x8B ( 3 56 8) # 8B ⢴ [PARTIAL LINE FORWARD] +char \x8C (1 5678) # 8C ⣱ [PARTIAL LINE BACKWARD] +char \x8D ( 34 678) # 8D ⣬ [REVERSE LINE FEED] +char \x8E ( 78) # 8E ⣀ [SINGLE SHIFT TWO] +char \x8F ( 2 5 78) # 8F ⣒ [SINGLE SHIFT THREE] +char \x90 ( 23 567 ) # 90 ⡶ [DEVICE CONTROL STRING] +char \x91 (1 34 8) # 91 ⢠[PRIVATE USE ONE] +char \x92 ( 2 456 8) # 92 ⢺ [PRIVATE USE TWO] +char \x93 ( 234 6 8) # 93 ⢮ [SET TRANSMIT STATE] +char \x94 ( 23 5 78) # 94 ⣖ [CANCEL CHARACTER] +char \x95 ( 4567 ) # 95 ⡸ [MESSAGE WAITING] +char \x96 (123456 8) # 96 ⢿ [START OF GUARDED AREA] +char \x97 ( 3 6 8) # 97 ⢤ [END OF GUARDED AREA] +char \x98 (1 3 56 8) # 98 ⢵ [START OF STRING] +char \x99 ( 3 678) # 99 ⣤ [] +char \x9A ( 345678) # 9A ⣼ [SINGLE CHARACTER INTRODUCER] +char \x9B ( 5 78) # 9B ⣠[CONTROL SEQUENCE INTRODUCER] +char \x9C ( 8) # 9C ⢀ [STRING TERMINATOR] +char \x9D ( 4 678) # 9D ⣨ [OPERATING SYSTEM COMMAND] +char \x9E (1 34 6 8) # 9E ⢭ [PRIVACY MESSAGE] +char \x9F (12 4 8) # 9F ⢋ [APPLICATION PROGRAM COMMAND] +char \xA0 ( 4 78) # A0 ⣈   [NO-BREAK SPACE] +char \xA1 ( 5 8) # A1 ⢠¡ [INVERTED EXCLAMATION MARK] +char \xA2 ( 2 5 8) # A2 ⢒ ¢ [CENT SIGN] +char \xA3 ( 3456 8) # A3 ⢼ £ [POUND SIGN] +char \xA4 ( 34567 ) # A4 ⡼ ¤ [CURRENCY SIGN] +char \xA5 (1 45678) # A5 ⣹ Â¥ [YEN SIGN] +char \xA6 ( 34 8) # A6 ⢌ ¦ [BROKEN BAR] +char \xA7 (123 6 8) # A7 ⢧ § [SECTION SIGN] +char \xA8 ( 7 ) # A8 â¡€ ¨ [DIAERESIS] +char \xA9 (1 4 8) # A9 ⢉ © [COPYRIGHT SIGN] +char \xAA ( 3 7 ) # AA â¡„ ª [FEMININE ORDINAL INDICATOR] +char \xAB ( 4 7 ) # AB ⡈ « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC ( 67 ) # AC â¡  ¬ [NOT SIGN] +char \xAD ( 3 8) # AD ⢄ ­ [SOFT HYPHEN] +char \xAE (123 5 8) # AE ⢗ ® [REGISTERED SIGN] +char \xAF ( 23 56 8) # AF ⢶ ¯ [MACRON] +char \xB0 (12 45678) # B0 ⣻ ° [DEGREE SIGN] +char \xB1 (1234 8) # B1 ⢠± [PLUS-MINUS SIGN] +char \xB2 ( 3 5 78) # B2 ⣔ ² [SUPERSCRIPT TWO] +char \xB3 (1 4 678) # B3 ⣩ ³ [SUPERSCRIPT THREE] +char \xB4 (12 4 678) # B4 ⣫ ´ [ACUTE ACCENT] +char \xB5 (12 678) # B5 ⣣ µ [MICRO SIGN] +char \xB6 (12345 8) # B6 ⢟ ¶ [PILCROW SIGN] +char \xB7 ( 3 78) # B7 ⣄ · [MIDDLE DOT] +char \xB8 ( 3 5678) # B8 ⣴ ¸ [CEDILLA] +char \xB9 ( 5678) # B9 ⣰ ¹ [SUPERSCRIPT ONE] +char \xBA ( 6 8) # BA ⢠ º [MASCULINE ORDINAL INDICATOR] +char \xBB ( 4 8) # BB ⢈ » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBC ( 2 5 7 ) # BC â¡’ ¼ [VULGAR FRACTION ONE QUARTER] +char \xBD (1 45 8) # BD ⢙ ½ [VULGAR FRACTION ONE HALF] +char \xBE (1 345 8) # BE ⢠¾ [VULGAR FRACTION THREE QUARTERS] +char \xBF ( 2 6 8) # BF ⢢ ¿ [INVERTED QUESTION MARK] +char \xC0 ( 5 7 ) # C0 ⡠À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 ( 2 7 ) # C1 â¡‚ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 (1 67 ) # C2 â¡¡  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 (1 4 67 ) # C3 â¡© à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 ( 567 ) # C4 â¡° Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 (1 678) # C5 ⣡ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( 345 78) # C6 ⣜ Æ [LATIN CAPITAL LETTER AE] +char \xC7 (1234 67 ) # C7 ⡯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( 4 67 ) # C8 ⡨ È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 ( 2 678) # C9 ⣢ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA (1 567 ) # CA ⡱ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB (12 4 67 ) # CB â¡« Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC ( 23 7 ) # CC ⡆ ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD ( 23 78) # CD ⣆ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE ( 45 7 ) # CE ⡘ ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF ( 3 5 7 ) # CF â¡” à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD0 ( 2 567 ) # D0 ⡲ à [LATIN CAPITAL LETTER ETH] +char \xD1 (12 4567 ) # D1 â¡» Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD2 ( 2 67 ) # D2 â¡¢ Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 (12 67 ) # D3 â¡£ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 (1 4567 ) # D4 ⡹ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD5 ( 23 5 7 ) # D5 â¡– Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 ( 2 4 67 ) # D6 ⡪ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 (12 5 8) # D7 ⢓ × [MULTIPLICATION SIGN] +char \xD8 ( 2 4 678) # D8 ⣪ Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xD9 (12 5678) # D9 ⣳ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA ( 2 78) # DA ⣂ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB ( 34 67 ) # DB ⡬ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC (12 567 ) # DC ⡳ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD ( 2 5678) # DD ⣲ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDE ( 2345 8) # DE ⢞ Þ [LATIN CAPITAL LETTER THORN] +char \xDF ( 234 8) # DF ⢎ ß [LATIN SMALL LETTER SHARP S] +char \xE0 (123 56 8) # E0 ⢷ à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 ( 2 8) # E1 ⢂ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 3 8) # E2 ⢅ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 (1 4 6 8) # E3 ⢩ ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 (1 8) # E4 ⢠ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 (1 6 8) # E5 ⢡ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 ( 345 8) # E6 ⢜ æ [LATIN SMALL LETTER AE] +char \xE7 (1234 6 8) # E7 ⢯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 4 6 8) # E8 ⢨ è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (1 5 8) # E9 ⢑ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (1 56 8) # EA ⢱ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 8) # EB ⢫ ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC ( 23 8) # EC ⢆ ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED (12 8) # ED ⢃ í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE ( 45 8) # EE ⢘ î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF ( 2 4 8) # EF ⢊ ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF0 ( 2 56 8) # F0 ⢲ ð [LATIN SMALL LETTER ETH] +char \xF1 (12 456 8) # F1 ⢻ ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 (1 3 5 8) # F2 ⢕ ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 (12 6 8) # F3 ⢣ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 456 8) # F4 ⢹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 ( 23 5 8) # F5 ⢖ õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 3 5 8) # F6 ⢔ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 ( 2 45 8) # F7 ⢚ ÷ [DIVISION SIGN] +char \xF8 ( 2 4 6 8) # F8 ⢪ ø [LATIN SMALL LETTER O WITH STROKE] +char \xF9 ( 23 6 8) # F9 ⢦ ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA (1 3 6 8) # FA ⢥ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB ( 34 6 8) # FB ⢬ û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 8) # FC ⢳ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD (1 3456 8) # FD ⢽ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \xFE ( 3 567 ) # FE â¡´ þ [LATIN SMALL LETTER THORN] +char \xFF ( 23456 8) # FF ⢾ ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] + +include common.tti diff --git a/Tables/no-oub.ttb b/Tables/no-oub.ttb new file mode 100644 index 0000000000000000000000000000000000000000..d9f7576df9892da0737026a11d5f122bc2234b55 --- /dev/null +++ b/Tables/no-oub.ttb @@ -0,0 +1,207 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Norwegian (Offentlig Utvalg for Blindeskrift) +# based on the Offentlig Utvalg for Blindeskrift (Public Commission for +# Braille) translation table for Windows 1252. +# Updated January 2008. + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# the standard representations for the Latin control characters +include control-latin.tti + +# the numbers 0-9 are represented by the letters j,a-i with dot 8 added +include numbers-dot8.tti + +# generated by ttbtest: charset=iso-8859-1 +char \x00 ( 45 78) # 00 ⣘ [NULL] +# Latin control characters # 01-1A +char \x1B (1234 8) # 1B ⢠[ESCAPE] +char \x1C (12345 8) # 1C ⢟ [INFORMATION SEPARATOR FOUR] +char \x1D (1 3 6 8) # 1D ⢥ [INFORMATION SEPARATOR THREE] +char \x1E ( 2 456 8) # 1E ⢺ [INFORMATION SEPARATOR TWO] +char \x1F (1 3 56 8) # 1F ⢵ [INFORMATION SEPARATOR ONE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 23 5 ) # 21 â – ! [EXCLAMATION MARK] +char \x22 ( 2 56 ) # 22 â ² " [QUOTATION MARK] +char \x23 ( 3456 ) # 23 â ¼ # [NUMBER SIGN] +char \x24 ( 2 5678) # 24 ⣲ $ [DOLLAR SIGN] +char \x25 ( 4 6 ) # 25 â ¨ % [PERCENT SIGN] +char \x26 ( 5 78) # 26 ⣠& [AMPERSAND] +char \x27 ( 5 ) # 27 â  ' [APOSTROPHE] +char \x28 ( 23 6 ) # 28 â ¦ ( [LEFT PARENTHESIS] +char \x29 ( 3 56 ) # 29 â ´ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 23 5 7 ) # 2B â¡– + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 3 ) # 2E â „ . [FULL STOP] +char \x2F ( 5 7 ) # 2F â¡ / [SOLIDUS] +# Hindu-Arabic numerals # 30-39 +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C ( 3 5 8) # 3C ⢔ < [LESS-THAN SIGN] +char \x3D ( 23 56 ) # 3D â ¶ = [EQUALS SIGN] +char \x3E ( 2 67 ) # 3E â¡¢ > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 ( 4 ) # 40 â ˆ @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B ( 23 678) # 5B ⣦ [ [LEFT SQUARE BRACKET] +char \x5C ( 2 8) # 5C ⢂ \ [REVERSE SOLIDUS] +char \x5D ( 3 5678) # 5D ⣴ ] [RIGHT SQUARE BRACKET] +char \x5E ( 5 8) # 5E ⢠^ [CIRCUMFLEX ACCENT] +char \x5F ( 456 ) # 5F â ¸ _ [LOW LINE] +char \x60 ( 45 ) # 60 â ˜ ` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B ( 23 8) # 7B ⢆ { [LEFT CURLY BRACKET] +char \x7C ( 56 ) # 7C â ° | [VERTICAL LINE] +char \x7D ( 567 ) # 7D â¡° } [RIGHT CURLY BRACKET] +char \x7E ( 3 8) # 7E ⢄ ~ [TILDE] +char \x7F ( 3 5 78) # 7F ⣔ [DELETE] +char \x80 ( 2 678) # 80 ⣢ [] +char \x81 (1 345 8) # 81 ⢠[] +char \x82 ( 67 ) # 82 â¡  [BREAK PERMITTED HERE] +char \x83 ( 45678) # 83 ⣸ [NO BREAK HERE] +char \x84 ( 3 567 ) # 84 â¡´ [] +char \x85 ( 3 7 ) # 85 â¡„ [NEXT LINE (NEL)] +char \x86 ( 4 7 ) # 86 ⡈ [START OF SELECTED AREA] +char \x87 ( 45 7 ) # 87 ⡘ [END OF SELECTED AREA] +char \x88 ( 4 6 8) # 88 ⢨ [CHARACTER TABULATION SET] +char \x89 ( 456 8) # 89 ⢸ [CHARACTER TABULATION WITH JUSTIFICATION] +char \x8A (1 5678) # 8A ⣱ [LINE TABULATION SET] +char \x8B ( 3 78) # 8B ⣄ [PARTIAL LINE FORWARD] +char \x8C (12345678) # 8C ⣿ [PARTIAL LINE BACKWARD] +char \x8D ( 4 78) # 8D ⣈ [REVERSE LINE FEED] +char \x8E ( 234 678) # 8E ⣮ [SINGLE SHIFT TWO] +char \x8F ( 23 67 ) # 8F ⡦ [SINGLE SHIFT THREE] +char \x90 ( 23 6 8) # 90 ⢦ [DEVICE CONTROL STRING] +char \x91 ( 3 67 ) # 91 ⡤ [PRIVATE USE ONE] +char \x92 ( 3 6 8) # 92 ⢤ [PRIVATE USE TWO] +char \x93 ( 23 567 ) # 93 ⡶ [SET TRANSMIT STATE] +char \x94 ( 23 56 8) # 94 ⢶ [CANCEL CHARACTER] +char \x95 ( 3 678) # 95 ⣤ [MESSAGE WAITING] +char \x96 ( 6 8) # 96 ⢠ [START OF GUARDED AREA] +char \x97 ( 56 8) # 97 ⢰ [END OF GUARDED AREA] +char \x98 ( 2 56 8) # 98 ⢲ [START OF STRING] +char \x99 ( 2345 8) # 99 ⢞ [] +char \x9A (1 56 8) # 9A ⢱ [SINGLE CHARACTER INTRODUCER] +char \x9B ( 678) # 9B ⣠ [CONTROL SEQUENCE INTRODUCER] +char \x9C (123456 8) # 9C ⢿ [STRING TERMINATOR] +char \x9D ( 23 5678) # 9D ⣶ [OPERATING SYSTEM COMMAND] +char \x9E ( 234 6 8) # 9E ⢮ [PRIVACY MESSAGE] +char \x9F (12 5678) # 9F ⣳ [APPLICATION PROGRAM COMMAND] +char \xA0 ( 8) # A0 ⢀   [NO-BREAK SPACE] +char \xA1 ( 23 5 8) # A1 ⢖ ¡ [INVERTED EXCLAMATION MARK] +char \xA2 ( 2 5 78) # A2 ⣒ ¢ [CENT SIGN] +char \xA3 (123 8) # A3 ⢇ £ [POUND SIGN] +char \xA4 (123 6 8) # A4 ⢧ ¤ [CURRENCY SIGN] +char \xA5 (1 3456 8) # A5 ⢽ Â¥ [YEN SIGN] +char \xA6 ( 4567 ) # A6 ⡸ ¦ [BROKEN BAR] +char \xA7 ( 4 678) # A7 ⣨ § [SECTION SIGN] +char \xA8 ( 2 5 8) # A8 ⢒ ¨ [DIAERESIS] +char \xA9 (1 3 8) # A9 ⢅ © [COPYRIGHT SIGN] +char \xAA ( 2 78) # AA ⣂ ª [FEMININE ORDINAL INDICATOR] +char \xAB ( 23 78) # AB ⣆ « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC ( 3 5 7 ) # AC â¡” ¬ [NOT SIGN] +char \xAD ( 78) # AD ⣀ ­ [SOFT HYPHEN] +char \xAE (123 5 8) # AE ⢗ ® [REGISTERED SIGN] +char \xAF ( 45 8) # AF ⢘ ¯ [MACRON] +char \xB0 ( 3 56 8) # B0 ⢴ ° [DEGREE SIGN] +char \xB1 ( 23 5 78) # B1 ⣖ ± [PLUS-MINUS SIGN] +char \xB2 ( 23 7 ) # B2 ⡆ ² [SUPERSCRIPT TWO] +char \xB3 ( 2 5 7 ) # B3 â¡’ ³ [SUPERSCRIPT THREE] +char \xB4 ( 6 ) # B4 â   ´ [ACUTE ACCENT] +char \xB5 (1 34 8) # B5 ⢠µ [MICRO SIGN] +char \xB6 ( 4 67 ) # B6 ⡨ ¶ [PILCROW SIGN] +char \xB7 ( 7 ) # B7 â¡€ · [MIDDLE DOT] +char \xB8 ( 4 8) # B8 ⢈ ¸ [CEDILLA] +char \xB9 ( 2 7 ) # B9 â¡‚ ¹ [SUPERSCRIPT ONE] +char \xBA (1 3 5 8) # BA ⢕ º [MASCULINE ORDINAL INDICATOR] +char \xBB ( 5678) # BB ⣰ » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBC ( 3456 8) # BC ⢼ ¼ [VULGAR FRACTION ONE QUARTER] +char \xBD ( 34567 ) # BD ⡼ ½ [VULGAR FRACTION ONE HALF] +char \xBE ( 345678) # BE ⣼ ¾ [VULGAR FRACTION THREE QUARTERS] +char \xBF ( 2 6 8) # BF ⢢ ¿ [INVERTED QUESTION MARK] +char \xC0 (123 5678) # C0 ⣷ À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 (123 567 ) # C1 â¡· à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 (1 678) # C2 ⣡  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 (12 678) # C3 ⣣ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 ( 345 78) # C4 ⣜ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 (1 67 ) # C5 â¡¡ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( 345 7 ) # C6 â¡œ Æ [LATIN CAPITAL LETTER AE] +char \xC7 (1234 678) # C7 ⣯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( 234 67 ) # C8 â¡® È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 (1234567 ) # C9 â¡¿ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA (12 67 ) # CA â¡£ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB (12 4 67 ) # CB â¡« Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC ( 34 78) # CC ⣌ ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD ( 34 7 ) # CD â¡Œ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE (1 4 67 ) # CE â¡© ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF (12 4567 ) # CF â¡» à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD0 (1 45678) # D0 ⣹ à [LATIN CAPITAL LETTER ETH] +char \xD1 (12 45678) # D1 ⣻ Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD2 ( 34 678) # D2 ⣬ Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 ( 34 67 ) # D3 ⡬ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 (1 4567 ) # D4 ⡹ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD5 (1 4 678) # D5 ⣩ Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 ( 2 4 678) # D6 ⣪ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 (1 34 6 8) # D7 ⢭ × [MULTIPLICATION SIGN] +char \xD8 ( 2 4 67 ) # D8 ⡪ Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xD9 ( 2345678) # D9 ⣾ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA ( 234567 ) # DA ⡾ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB (1 567 ) # DB ⡱ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC (12 567 ) # DC ⡳ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD (1234 67 ) # DD ⡯ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDE (12 4 678) # DE ⣫ Þ [LATIN CAPITAL LETTER THORN] +char \xDF ( 234 8) # DF ⢎ ß [LATIN SMALL LETTER SHARP S] +char \xE0 (123 56 8) # E0 ⢷ à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 (123 56 ) # E1 â · á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 6 8) # E2 ⢡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 (12 6 8) # E3 ⢣ ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 ( 345 8) # E4 ⢜ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 (1 6 ) # E5 â ¡ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 ( 345 ) # E6 â œ æ [LATIN SMALL LETTER AE] +char \xE7 (1234 6 8) # E7 ⢯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 ) # E8 â ® è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (123456 ) # E9 â ¿ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (12 6 ) # EA â £ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 ) # EB â « ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC ( 34 8) # EC ⢌ ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED ( 34 ) # ED â Œ í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 6 ) # EE â © î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 ) # EF â » ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF0 (1 456 8) # F0 ⢹ ð [LATIN SMALL LETTER ETH] +char \xF1 (12 456 8) # F1 ⢻ ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 ( 34 6 8) # F2 ⢬ ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 ( 34 6 ) # F3 â ¬ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 456 ) # F4 â ¹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 (1 4 6 8) # F5 ⢩ õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 2 4 6 8) # F6 ⢪ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 ( 2 567 ) # F7 ⡲ ÷ [DIVISION SIGN] +char \xF8 ( 2 4 6 ) # F8 â ª ø [LATIN SMALL LETTER O WITH STROKE] +char \xF9 ( 23456 8) # F9 ⢾ ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA ( 23456 ) # FA â ¾ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 56 ) # FB â ± û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 ) # FC â ³ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD (1234 6 ) # FD â ¯ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \xFE (12 4 6 8) # FE ⢫ þ [LATIN SMALL LETTER THORN] +char \xFF (12 56 8) # FF ⢳ ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] + +include common.tti diff --git a/Tables/no.ttb b/Tables/no.ttb new file mode 100644 index 0000000000000000000000000000000000000000..4e4f9c63d0b02407768d7e241691f2e7262b6674 --- /dev/null +++ b/Tables/no.ttb @@ -0,0 +1,21 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Norwegian + +include no-oub.ttb diff --git a/Tables/numbers-dot6.tti b/Tables/numbers-dot6.tti new file mode 100644 index 0000000000000000000000000000000000000000..5742116cfde27690d53131d3dff3a813af242005 --- /dev/null +++ b/Tables/numbers-dot6.tti @@ -0,0 +1,32 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable implements a common scheme for representing the 10 +# Hindu-Arabic numerals in braille. The digit 0 is represented by dots 346, and +# the digits 1-9 are represented by the letters a-i with dot 6 added. + +char \x30 ( 34 6 ) # â ¬ 0 [DIGIT ZERO] +char \x31 (1 6 ) # â ¡ 1 [DIGIT ONE] +char \x32 (12 6 ) # â £ 2 [DIGIT TWO] +char \x33 (1 4 6 ) # â © 3 [DIGIT THREE] +char \x34 (1 456 ) # â ¹ 4 [DIGIT FOUR] +char \x35 (1 56 ) # â ± 5 [DIGIT FIVE] +char \x36 (12 4 6 ) # â « 6 [DIGIT SIX] +char \x37 (12 456 ) # â » 7 [DIGIT SEVEN] +char \x38 (12 56 ) # â ³ 8 [DIGIT EIGHT] +char \x39 ( 2 4 6 ) # â ª 9 [DIGIT NINE] diff --git a/Tables/numbers-dot8.tti b/Tables/numbers-dot8.tti new file mode 100644 index 0000000000000000000000000000000000000000..bdf885d8d6a4df49e1868973fb191b3a345d73f6 --- /dev/null +++ b/Tables/numbers-dot8.tti @@ -0,0 +1,33 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable implements a common scheme for representing the 10 +# Hindu-Arabic numerals in braille. Dot 8 is added to the letters a-j, with the +# letters a-i representing the digits 1-9, and with the letter j representing +# the digit 0. + +char \x30 ( 2 45 8) # ⢚ 0 [DIGIT ZERO] +char \x31 (1 8) # ⢠1 [DIGIT ONE] +char \x32 (12 8) # ⢃ 2 [DIGIT TWO] +char \x33 (1 4 8) # ⢉ 3 [DIGIT THREE] +char \x34 (1 45 8) # ⢙ 4 [DIGIT FOUR] +char \x35 (1 5 8) # ⢑ 5 [DIGIT FIVE] +char \x36 (12 4 8) # ⢋ 6 [DIGIT SIX] +char \x37 (12 45 8) # ⢛ 7 [DIGIT SEVEN] +char \x38 (12 5 8) # ⢓ 8 [DIGIT EIGHT] +char \x39 ( 2 4 8) # ⢊ 9 [DIGIT NINE] diff --git a/Tables/numbers-french.tti b/Tables/numbers-french.tti new file mode 100644 index 0000000000000000000000000000000000000000..b49526d01dfcc91c3b84eabf0b98a4ae3ed96c87 --- /dev/null +++ b/Tables/numbers-french.tti @@ -0,0 +1,32 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable implements the French scheme for representing the +# 10 Hindu-Arabic numerals in braille. The digit 0 is represented by dots 3456, +# and the digits 1-9 are represented by the letters a-i with dot 6 added. + +char \x30 ( 3456 ) # â ¼ 0 [DIGIT ZERO] +char \x31 (1 6 ) # â ¡ 1 [DIGIT ONE] +char \x32 (12 6 ) # â £ 2 [DIGIT TWO] +char \x33 (1 4 6 ) # â © 3 [DIGIT THREE] +char \x34 (1 456 ) # â ¹ 4 [DIGIT FOUR] +char \x35 (1 56 ) # â ± 5 [DIGIT FIVE] +char \x36 (12 4 6 ) # â « 6 [DIGIT SIX] +char \x37 (12 456 ) # â » 7 [DIGIT SEVEN] +char \x38 (12 56 ) # â ³ 8 [DIGIT EIGHT] +char \x39 ( 2 4 6 ) # â ª 9 [DIGIT NINE] diff --git a/Tables/numbers-nemeth.tti b/Tables/numbers-nemeth.tti new file mode 100644 index 0000000000000000000000000000000000000000..87ea3986823ed411c63aa529cfb3d09b06a14b5c --- /dev/null +++ b/Tables/numbers-nemeth.tti @@ -0,0 +1,33 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable implements the Nemeth scheme for representing the +# 10 Hindu-Arabic numerals in braille. The letters a-j are lowered by one dot +# position, with the letters a-i representing the digits 1-9, and with the +# letter j representing the digit 0. + +char \x30 ( 3 56 ) # â ´ 0 [DIGIT ZERO] +char \x31 ( 2 ) # â ‚ 1 [DIGIT ONE] +char \x32 ( 23 ) # â † 2 [DIGIT TWO] +char \x33 ( 2 5 ) # â ’ 3 [DIGIT THREE] +char \x34 ( 2 56 ) # â ² 4 [DIGIT FOUR] +char \x35 ( 2 6 ) # â ¢ 5 [DIGIT FIVE] +char \x36 ( 23 5 ) # â – 6 [DIGIT SIX] +char \x37 ( 23 56 ) # â ¶ 7 [DIGIT SEVEN] +char \x38 ( 23 6 ) # â ¦ 8 [DIGIT EIGHT] +char \x39 ( 3 5 ) # â ” 9 [DIGIT NINE] diff --git a/Tables/nwc.ttb b/Tables/nwc.ttb new file mode 100644 index 0000000000000000000000000000000000000000..cd5709efaa084c6e4cdd1c18d5223869e726cd10 --- /dev/null +++ b/Tables/nwc.ttb @@ -0,0 +1,25 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Old Newari + +include devanagari.tti +include bengali.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/ny.ctb b/Tables/ny.ctb new file mode 100644 index 0000000000000000000000000000000000000000..932608d1be53c35a6bc63ff24f795df8987dcc1b --- /dev/null +++ b/Tables/ny.ctb @@ -0,0 +1,33 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - Chichewa (contracted) +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +include letters-latin.cti + +always ng 346 +always ndi 12346 +always ch 16 +always th 1456 diff --git a/Tables/or.ttb b/Tables/or.ttb new file mode 100644 index 0000000000000000000000000000000000000000..f8a67c2e590b3e45a72db63435e2b19222a55ba0 --- /dev/null +++ b/Tables/or.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Oriya + +include oriya.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/oriya.tti b/Tables/oriya.tti new file mode 100644 index 0000000000000000000000000000000000000000..020f8def114eb6c0cccb20c8c3b8028b8803e969 --- /dev/null +++ b/Tables/oriya.tti @@ -0,0 +1,109 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable defines the braille representations +# for the Oriya script. + +# Maintained by John J. Boyer, director@chpi.org, www.chpi.org +# +# This table is built and maintained by Leon Ungier +# with help and guidance from Mohammed R. Ramadan +# +# Converted from liblouis table by Samuel Thibault + +# generated by ttbtest: +char \u0B01 ( 3 ) # â „ ଠ[ORIYA SIGN CANDRABINDU] +char \u0B02 ( 56 ) # â ° ଂ [ORIYA SIGN ANUSVARA] +char \u0B03 ( 6 ) # â   ଃ [ORIYA SIGN VISARGA] +char \u0B05 (1 ) # â  à¬… [ORIYA LETTER A] +char \u0B06 ( 345 ) # â œ ଆ [ORIYA LETTER AA] +char \u0B07 ( 2 4 ) # â Š ଇ [ORIYA LETTER I] +char \u0B08 ( 3 5 ) # â ” ଈ [ORIYA LETTER II] +char \u0B09 (1 3 6 ) # â ¥ ଉ [ORIYA LETTER U] +char \u0B0A (12 56 ) # â ³ ଊ [ORIYA LETTER UU] + + +char \u0B0F (1 5 ) # â ‘ ଠ[ORIYA LETTER E] +char \u0B10 ( 34 ) # â Œ ଠ[ORIYA LETTER AI] + + +char \u0B13 (1 3 5 ) # â • ଓ [ORIYA LETTER O] +char \u0B14 ( 2 4 6 ) # â ª ଔ [ORIYA LETTER AU] +char \u0B15 (1 3 ) # â … କ [ORIYA LETTER KA] +char \u0B16 ( 4 6 ) # â ¨ ଖ [ORIYA LETTER KHA] +char \u0B17 (1234 ) # â  à¬— [ORIYA LETTER GA] +char \u0B18 (12 6 ) # â £ ଘ [ORIYA LETTER GHA] +char \u0B19 ( 34 6 ) # â ¬ ଙ [ORIYA LETTER NGA] +char \u0B1A (1 4 ) # â ‰ ଚ [ORIYA LETTER CA] +char \u0B1B (1 6 ) # â ¡ ଛ [ORIYA LETTER CHA] +char \u0B1C ( 2 45 ) # â š ଜ [ORIYA LETTER JA] +char \u0B1D ( 3 56 ) # â ´ ଠ[ORIYA LETTER JHA] +char \u0B1E ( 2 5 ) # â ’ ଞ [ORIYA LETTER NYA] +char \u0B1F ( 23456 ) # â ¾ ଟ [ORIYA LETTER TTA] +char \u0B20 ( 2 456 ) # â º ଠ [ORIYA LETTER TTHA] +char \u0B21 (12 4 6 ) # â « ଡ [ORIYA LETTER DDA] +char \u0B22 (123456 ) # â ¿ ଢ [ORIYA LETTER DDHA] +char \u0B23 ( 3456 ) # â ¼ ଣ [ORIYA LETTER NNA] +char \u0B24 ( 2345 ) # â ž ତ [ORIYA LETTER TA] +char \u0B25 (1 456 ) # â ¹ ଥ [ORIYA LETTER THA] +char \u0B26 (1 45 ) # â ™ ଦ [ORIYA LETTER DA] +char \u0B27 ( 234 6 ) # â ® ଧ [ORIYA LETTER DHA] +char \u0B28 (1 345 ) # â  à¬¨ [ORIYA LETTER NA] + +char \u0B2A (1234 ) # â  à¬ª [ORIYA LETTER PA] +char \u0B2B ( 23 5 ) # â – ଫ [ORIYA LETTER PHA] +char \u0B2C (12 ) # â ƒ ବ [ORIYA LETTER BA] +char \u0B2D ( 45 ) # â ˜ ଭ [ORIYA LETTER BHA] +char \u0B2E (1 34 ) # â  à¬® [ORIYA LETTER MA] +char \u0B2F (1 3456 ) # â ½ ଯ [ORIYA LETTER YA] +char \u0B30 (123 5 ) # â — ର [ORIYA LETTER RA] + +char \u0B32 (123 ) # â ‡ ଲ [ORIYA LETTER LA] +char \u0B33 (123 7 ) # ⡇ ଳ [ORIYA LETTER LLA] + +char \u0B35 (123 6 ) # â § ଵ [ORIYA LETTER VA] +char \u0B36 (1 4 6 ) # â © ଶ [ORIYA LETTER SHA] +char \u0B37 (1234 6 ) # â ¯ ଷ [ORIYA LETTER SSA] +char \u0B38 ( 234 ) # â Ž ସ [ORIYA LETTER SA] +char \u0B39 (12 5 ) # â “ ହ [ORIYA LETTER HA] +char \u0B3D ( 2 ) # â ‚ ଽ [ORIYA SIGN AVAGRAHA] +char \u0B3E ( 345 ) # â œ ା [ORIYA VOWEL SIGN AA] +char \u0B3F ( 2 4 ) # â Š ି [ORIYA VOWEL SIGN I] +char \u0B40 ( 3 5 ) # â ” à­€ [ORIYA VOWEL SIGN II] +char \u0B41 (1 3 6 ) # â ¥ à­ [ORIYA VOWEL SIGN U] +char \u0B42 (12 56 ) # â ³ à­‚ [ORIYA VOWEL SIGN UU] + + +char \u0B47 (1 5 ) # â ‘ à­‡ [ORIYA VOWEL SIGN E] +char \u0B48 ( 34 ) # â Œ à­ˆ [ORIYA VOWEL SIGN AI] + + +char \u0B4B (1 3 5 ) # â • à­‹ [ORIYA VOWEL SIGN O] +char \u0B4C ( 2 4 6 ) # â ª à­Œ [ORIYA VOWEL SIGN AU] +char \u0B4D ( 4 ) # â ˆ à­ [ORIYA SIGN VIRAMA] + +char \u0B66 ( 2 45 ) # â š à­¦ [ORIYA DIGIT ZERO] +char \u0B67 (1 ) # â  à­§ [ORIYA DIGIT ONE] +char \u0B68 (12 ) # â ƒ à­¨ [ORIYA DIGIT TWO] +char \u0B69 (1 4 ) # â ‰ à­© [ORIYA DIGIT THREE] +char \u0B6A (1 45 ) # â ™ à­ª [ORIYA DIGIT FOUR] +char \u0B6B (1 5 ) # â ‘ à­« [ORIYA DIGIT FIVE] +char \u0B6C (12 4 ) # â ‹ à­¬ [ORIYA DIGIT SIX] +char \u0B6D (12 45 ) # â › à­­ [ORIYA DIGIT SEVEN] +char \u0B6E (12 5 ) # â “ à­® [ORIYA DIGIT EIGHT] +char \u0B6F ( 2 4 ) # â Š à­¯ [ORIYA DIGIT NINE] diff --git a/Tables/pa.ttb b/Tables/pa.ttb new file mode 100644 index 0000000000000000000000000000000000000000..60ca40c53df43525bc70faa1b1e1fcaea47a4c18 --- /dev/null +++ b/Tables/pa.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Panjabi + +include gurmukhi.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/pi.ttb b/Tables/pi.ttb new file mode 100644 index 0000000000000000000000000000000000000000..1224ff0645239d2f55316c30b91d2304e9e29260 --- /dev/null +++ b/Tables/pi.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Pali + +include devanagari.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/pl.ttb b/Tables/pl.ttb new file mode 100644 index 0000000000000000000000000000000000000000..47ae50abb5fa1e56adb25601aaa5e61e66267129 --- /dev/null +++ b/Tables/pl.ttb @@ -0,0 +1,204 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Polish + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# the standard representations for the Latin control characters +include control-latin.tti + +# the numbers 0-9 are represented by the letters j,a-i with dot 8 added +include numbers-dot8.tti + +# generated by ttbtest: charset=iso-8859-2 +char \x00 ( 4 78) # 00 ⣈ [NULL] +# Latin control characters # 01-1A +char \x1B ( 2 4 678) # 1B ⣪ [ESCAPE] +char \x1C (12 5678) # 1C ⣳ [INFORMATION SEPARATOR FOUR] +char \x1D (12 45678) # 1D ⣻ [INFORMATION SEPARATOR THREE] +char \x1E ( 45 78) # 1E ⣘ [INFORMATION SEPARATOR TWO] +char \x1F ( 45678) # 1F ⣸ [INFORMATION SEPARATOR ONE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 23 5 ) # 21 â – ! [EXCLAMATION MARK] +char \x22 ( 5 ) # 22 â  " [QUOTATION MARK] +char \x23 ( 3456 ) # 23 â ¼ # [NUMBER SIGN] +char \x24 (12 4 6 ) # 24 â « $ [DOLLAR SIGN] +char \x25 (1 4 6 8) # 25 ⢩ % [PERCENT SIGN] +char \x26 (1234 6 8) # 26 ⢯ & [AMPERSAND] +char \x27 ( 3 ) # 27 â „ ' [APOSTROPHE] +char \x28 (123 56 ) # 28 â · ( [LEFT PARENTHESIS] +char \x29 ( 23456 ) # 29 â ¾ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 23 5 ) # 2B â – + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 3 ) # 2E â „ . [FULL STOP] +char \x2F ( 34 ) # 2F â Œ / [SOLIDUS] +# Hindu-Arabic numerals # 30-39 +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C (12 6 8) # 3C ⢣ < [LESS-THAN SIGN] +char \x3D ( 23 56 ) # 3D â ¶ = [EQUALS SIGN] +char \x3E ( 345 8) # 3E ⢜ > [GREATER-THAN SIGN] +char \x3F ( 23 6 ) # 3F â ¦ ? [QUESTION MARK] +char \x40 ( 4 7 ) # 40 ⡈ @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B ( 2 4 6 8) # 5B ⢪ [ [LEFT SQUARE BRACKET] +char \x5C (12 567 ) # 5C ⡳ \ [REVERSE SOLIDUS] +char \x5D (12 4567 ) # 5D â¡» ] [RIGHT SQUARE BRACKET] +char \x5E ( 45 7 ) # 5E ⡘ ^ [CIRCUMFLEX ACCENT] +char \x5F ( 456 ) # 5F â ¸ _ [LOW LINE] +char \x60 ( 4 ) # 60 â ˆ ` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B ( 23 567 ) # 7B ⡶ { [LEFT CURLY BRACKET] +char \x7C (12 56 ) # 7C â ³ | [VERTICAL LINE] +char \x7D ( 23 56 8) # 7D ⢶ } [RIGHT CURLY BRACKET] +char \x7E ( 45 ) # 7E â ˜ ~ [TILDE] +char \x7F ( 4567 ) # 7F ⡸ [DELETE] +char \x80 ( 2 67 ) # 80 â¡¢ [] +char \x81 (1 34 6 8) # 81 ⢭ [] +char \x82 ( 2 56 8) # 82 ⢲ [BREAK PERMITTED HERE] +char \x83 ( 2 5 8) # 83 ⢒ [NO BREAK HERE] +char \x84 ( 3 5 7 ) # 84 â¡” [] +char \x85 (1 8) # 85 ⢠[NEXT LINE (NEL)] +char \x86 ( 234 8) # 86 ⢎ [START OF SELECTED AREA] +char \x87 ( 2345 8) # 87 ⢞ [END OF SELECTED AREA] +char \x88 ( 3 56 8) # 88 ⢴ [CHARACTER TABULATION SET] +char \x89 (1 45 8) # 89 ⢙ [CHARACTER TABULATION WITH JUSTIFICATION] +char \x8A ( 23 5 8) # 8A ⢖ [LINE TABULATION SET] +char \x8B ( 5 78) # 8B ⣠[PARTIAL LINE FORWARD] +char \x8C (1 5 8) # 8C ⢑ [PARTIAL LINE BACKWARD] +char \x8D ( 234 678) # 8D ⣮ [REVERSE LINE FEED] +char \x8E ( 67 ) # 8E â¡  [SINGLE SHIFT TWO] +char \x8F (12 4 67 ) # 8F â¡« [SINGLE SHIFT THREE] +char \x90 ( 23 567 ) # 90 ⡶ [DEVICE CONTROL STRING] +char \x91 ( 2 6 8) # 91 ⢢ [PRIVATE USE ONE] +char \x92 ( 6 8) # 92 ⢠ [PRIVATE USE TWO] +char \x93 ( 34 7 ) # 93 â¡Œ [SET TRANSMIT STATE] +char \x94 ( 3 5 78) # 94 ⣔ [CANCEL CHARACTER] +char \x95 ( 45 8) # 95 ⢘ [MESSAGE WAITING] +char \x96 (1 4 67 ) # 96 â¡© [START OF GUARDED AREA] +char \x97 ( 4 8) # 97 ⢈ [END OF GUARDED AREA] +char \x98 ( 234567 ) # 98 ⡾ [START OF STRING] +char \x99 (1 3 5 8) # 99 ⢕ [] +char \x9A (12 67 ) # 9A â¡£ [SINGLE CHARACTER INTRODUCER] +char \x9B ( 56 8) # 9B ⢰ [CONTROL SEQUENCE INTRODUCER] +char \x9C ( 3 6 8) # 9C ⢤ [STRING TERMINATOR] +char \x9D ( 34 67 ) # 9D ⡬ [OPERATING SYSTEM COMMAND] +char \x9E ( 23 5 7 ) # 9E â¡– [PRIVACY MESSAGE] +char \x9F (12 4 678) # 9F ⣫ [APPLICATION PROGRAM COMMAND] +char \xA0 ( 7 ) # A0 â¡€   [NO-BREAK SPACE] +char \u0104 (1 67 ) # A1 â¡¡ Ä„ [LATIN CAPITAL LETTER A WITH OGONEK] +char \u02D8 ( 5 8) # A2 ⢠˘ [BREVE] +char \u0141 (12 67 ) # A3 â¡£ Å [LATIN CAPITAL LETTER L WITH STROKE] +char \xA4 ( 3 678) # A4 ⣤ ¤ [CURRENCY SIGN] +char \u013D ( 4 6 8) # A5 ⢨ Ľ [LATIN CAPITAL LETTER L WITH CARON] +char \u015A ( 2 4 67 ) # A6 ⡪ Åš [LATIN CAPITAL LETTER S WITH ACUTE] +char \xA7 (12345678) # A7 ⣿ § [SECTION SIGN] +char \xA8 ( 2 78) # A8 ⣂ ¨ [DIAERESIS] +char \u0160 (1 4567 ) # A9 ⡹ Å  [LATIN CAPITAL LETTER S WITH CARON] +char \u015E (12 5 8) # AA ⢓ Åž [LATIN CAPITAL LETTER S WITH CEDILLA] +char \u0164 (123 5678) # AB ⣷ Ť [LATIN CAPITAL LETTER T WITH CARON] +char \u0179 ( 234 67 ) # AC â¡® Ź [LATIN CAPITAL LETTER Z WITH ACUTE] +char \xAD ( 3 6 ) # AD â ¤ ­ [SOFT HYPHEN] +char \u017D ( 4 678) # AE ⣨ Ž [LATIN CAPITAL LETTER Z WITH CARON] +char \u017B (1234 6 8) # AF ⢯ Å» [LATIN CAPITAL LETTER Z WITH DOT ABOVE] +char \xB0 ( 3 56 ) # B0 â ´ ° [DEGREE SIGN] +char \u0105 (1 6 ) # B1 â ¡ Ä… [LATIN SMALL LETTER A WITH OGONEK] +char \u02DB ( 8) # B2 ⢀ Ë› [OGONEK] +char \u0142 (12 6 ) # B3 â £ Å‚ [LATIN SMALL LETTER L WITH STROKE] +char \xB4 ( 4 ) # B4 â ˆ ´ [ACUTE ACCENT] +char \u013E (1 34 8) # B5 ⢠ľ [LATIN SMALL LETTER L WITH CARON] +char \u015B ( 2 4 6 ) # B6 â ª Å› [LATIN SMALL LETTER S WITH ACUTE] +char \u02C7 ( 3 7 ) # B7 â¡„ ˇ [CARON] +char \xB8 ( 8) # B8 ⢀ ¸ [CEDILLA] +char \u0161 (123 567 ) # B9 â¡· Å¡ [LATIN SMALL LETTER S WITH CARON] +char \u015F ( 2 45 8) # BA ⢚ ÅŸ [LATIN SMALL LETTER S WITH CEDILLA] +char \u0165 ( 2345678) # BB ⣾ Å¥ [LATIN SMALL LETTER T WITH CARON] +char \u017A ( 234 6 ) # BC â ® ź [LATIN SMALL LETTER Z WITH ACUTE] +char \u02DD ( 45 ) # BD â ˜ Ë [DOUBLE ACUTE ACCENT] +char \u017E ( 34 678) # BE ⣬ ž [LATIN SMALL LETTER Z WITH CARON] +char \u017C (1234 6 ) # BF â ¯ ż [LATIN SMALL LETTER Z WITH DOT ABOVE] +char \u0154 ( 3 78) # C0 ⣄ Å” [LATIN CAPITAL LETTER R WITH ACUTE] +char \xC1 ( 2 7 ) # C1 â¡‚ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 (1 3 8) # C2 ⢅  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \u0102 ( 23 67 ) # C3 ⡦ Ä‚ [LATIN CAPITAL LETTER A WITH BREVE] +char \xC4 ( 567 ) # C4 â¡° Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \u0139 ( 34567 ) # C5 ⡼ Ĺ [LATIN CAPITAL LETTER L WITH ACUTE] +char \u0106 (1 4 67 ) # C6 â¡© Ć [LATIN CAPITAL LETTER C WITH ACUTE] +char \xC7 (1234 67 ) # C7 ⡯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \u010C ( 23 78) # C8 ⣆ ÄŒ [LATIN CAPITAL LETTER C WITH CARON] +char \xC9 ( 23 8) # C9 ⢆ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \u0118 (1 567 ) # CA ⡱ Ę [LATIN CAPITAL LETTER E WITH OGONEK] +char \xCB (12345 8) # CB ⢟ Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \u011A (12 4 8) # CC ⢋ Äš [LATIN CAPITAL LETTER E WITH CARON] +char \xCD ( 2 5 78) # CD ⣒ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE ( 5678) # CE ⣰ ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \u010E (1 67 ) # CF â¡¡ ÄŽ [LATIN CAPITAL LETTER D WITH CARON] +char \u0110 ( 5 7 ) # D0 â¡ Ä [LATIN CAPITAL LETTER D WITH STROKE] +char \u0143 (1 4567 ) # D1 ⡹ Ń [LATIN CAPITAL LETTER N WITH ACUTE] +char \u0147 ( 2 8) # D2 ⢂ Ň [LATIN CAPITAL LETTER N WITH CARON] +char \xD3 ( 34 67 ) # D3 ⡬ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 ( 2 4 8) # D4 ⢊ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \u0150 (1234 6 8) # D5 ⢯ Å [LATIN CAPITAL LETTER O WITH DOUBLE ACUTE] +char \xD6 ( 3 5 8) # D6 ⢔ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 ( 23 6 ) # D7 â ¦ × [MULTIPLICATION SIGN] +char \u0158 ( 3 567 ) # D8 â¡´ Ř [LATIN CAPITAL LETTER R WITH CARON] +char \u016E ( 678) # D9 ⣠ Å® [LATIN CAPITAL LETTER U WITH RING ABOVE] +char \xDA ( 2 5 7 ) # DA â¡’ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \u0170 (12345678) # DB ⣿ Å° [LATIN CAPITAL LETTER U WITH DOUBLE ACUTE] +char \xDC ( 23 6 8) # DC ⢦ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD ( 23 678) # DD ⣦ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \u0162 ( 3 5678) # DE ⣴ Å¢ [LATIN CAPITAL LETTER T WITH CEDILLA] +char \xDF ( 3456 8) # DF ⢼ ß [LATIN SMALL LETTER SHARP S] +char \u0155 (123 56 8) # E0 ⢷ Å• [LATIN SMALL LETTER R WITH ACUTE] +char \xE1 (1 6 8) # E1 ⢡ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 678) # E2 ⣡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \u0103 (1234 8) # E3 ⢠ă [LATIN SMALL LETTER A WITH BREVE] +char \xE4 ( 345 8) # E4 ⢜ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \u013A ( 345678) # E5 ⣼ ĺ [LATIN SMALL LETTER L WITH ACUTE] +char \u0107 (1 4 6 ) # E6 â © ć [LATIN SMALL LETTER C WITH ACUTE] +char \xE7 (1234 678) # E7 ⣯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \u010D ( 234 6 8) # E8 ⢮ Ä [LATIN SMALL LETTER C WITH CARON] +char \xE9 (12 6 8) # E9 ⢣ é [LATIN SMALL LETTER E WITH ACUTE] +char \u0119 (1 56 ) # EA â ± Ä™ [LATIN SMALL LETTER E WITH OGONEK] +char \xEB (12 4 6 8) # EB ⢫ ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \u011B ( 34 8) # EC ⢌ Ä› [LATIN SMALL LETTER E WITH CARON] +char \xED (1 4 6 8) # ED ⢩ í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 678) # EE ⣩ î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \u010F (12 456 8) # EF ⢻ Ä [LATIN SMALL LETTER D WITH CARON] +char \u0111 ( 23 56 8) # F0 ⢶ Ä‘ [LATIN SMALL LETTER D WITH STROKE] +char \u0144 (1 456 ) # F1 â ¹ Å„ [LATIN SMALL LETTER N WITH ACUTE] +char \u0148 ( 34 6 8) # F2 ⢬ ň [LATIN SMALL LETTER N WITH CARON] +char \xF3 ( 34 6 ) # F3 â ¬ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 45678) # F4 ⣹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \u0151 (1 567 ) # F5 ⡱ Å‘ [LATIN SMALL LETTER O WITH DOUBLE ACUTE] +char \xF6 ( 2 4 6 8) # F6 ⢪ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 (12 5678) # F7 ⣳ ÷ [DIVISION SIGN] +char \u0159 ( 78) # F8 ⣀ Å™ [LATIN SMALL LETTER R WITH CARON] +char \u016F ( 23456 8) # F9 ⢾ ů [LATIN SMALL LETTER U WITH RING ABOVE] +char \xFA (1 56 8) # FA ⢱ ú [LATIN SMALL LETTER U WITH ACUTE] +char \u0171 (1 5678) # FB ⣱ ű [LATIN SMALL LETTER U WITH DOUBLE ACUTE] +char \xFC (12 56 8) # FC ⢳ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD ( 23 5678) # FD ⣶ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \u0163 (1234567 ) # FE â¡¿ Å£ [LATIN SMALL LETTER T WITH CEDILLA] +char \u02D9 ( 8) # FF ⢀ Ë™ [DOT ABOVE] + +include common.tti diff --git a/Tables/pt.ctb b/Tables/pt.ctb new file mode 100644 index 0000000000000000000000000000000000000000..503d49620416fa5f9c0aaeeedbbb2fc830723688 --- /dev/null +++ b/Tables/pt.ctb @@ -0,0 +1,486 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - Portuguese (grade 2) +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +include letters-latin.cti +class voy aeiouáâãèêìôòõú +class con bcçdfghjklmnñpqrstvwxz + +word bem 12 +word cá 14 +word de 145 +word fim 124 +endword gue 1245 +word agora 1245 +word sobre 125 +word sôbre 125 +word ali 24 +always al 13 +word aos 13 +word ele 123 +word êle 123 +word me 134 +word não 1345 +word por 1234 +endword que 12345 +word que 12345 +word maior 1235 +word se 234 +word te 2345 +word um 136 +word vós 1236 +after con always ex 1346 +word mas 1346 +always os 13456 +word os 13456 +word ela 1356 +always ç 12346 +endword çao 12346 +word para 12346 +always é 123456 +always á 12356 +word lá 12356 +always è 2346 +midword ss 2346 +word assim 2346 +always ú 23456 +word até 23456 +always â 16 +word tudo 16 +always ê 126 +word mesmo 126 +always ì 146 +endword as 146 +word as 146 +always ô 1456 +word mais 1456 +always ù 156 +endword es 156 +word menos 156 +begmidword pl 1246 +always à 1246 +word à 1246 +begmidword gr 12456 +word grande 12456 +always ou 1256 +word ou 1256 +always õ 246 +word ainda 246 +always ò 2456 +word antes 2456 +always , 2 +begmidword br 23 +always ; 23 +begmidword con 25 +always : 25 +begmidword em 256 +always . 256 +word em 256 +begmidword en 26 +always ? 26 +word dentro 26 +begmidword pr 235 +always ! 235 +word nós 235 +always ( 2356 +midword nh 2356 +always ) 2356 +word nem 2356 +begword " 236 +midendword er 236 +word depressa 236 +begmidword in 35 +word isso 35 +begmidword tr 356 +endword " 356 +word contra 356 +begword re 3 +always ' 3 +word aõ 3 +begword com 36 +always - 36 +word com 36 +numsign 3456 +midendword ão 3456 +word são 3456 +always í 34 +word sim 34 +always ó 346 +begmidword am 345 +always ã 345 +word sem 345 + +# terminations + +endword acidade 46-1 +endword antemente 56-1 +endword bilidade 46-12 +endword bilmente 56-12 +endword cional 5-14 +endword cionalidade 46-14 +endword cionalmente 56-14 +endword dor 4-145 +endword dora 5-4 +endword dade 46-145 +endword doramente 56-145 +endword eiro 4-15 +endword eira 5-15 +endword entemente 56-15 +endword fico 4-124 +endword fica 5-124 +endword ficamente 56-124 +endword gico 4-1245 +endword gica 5-1245 +endword gicamente 56-1245 +endword ismo 4-24 +endword ista 5-24 +endword ividade 46-24 +endword ivamente 56-24 +endword logo 4-123 +endword loga 5-123 +endword lidade 46-123 +endword logamente 56-123 +endword mento 4-134 +endword menta 5-134 +endword mente 56-134 +endword nico 4-1345 +endword nica 5-1345 +endword nicidade 46-1345 +endword nicamente 56-1345 +endword oiro 4-135 +endword oira 5-135 +endword osidade 46-135 +endword osamente 56-135 +endword posto 4-1234 +endword posta 5-1234 +endword postamente 56-1234 +endword roso 4-1235 +endword rosa 5-1235 +endword riedade 46-1235 +endword riamente 56-1235 +endword tico 4-2345 +endword tica 5-2345 +endword ticidade 46-2345 +endword ticamente 56-2345 +endword uro 4-136 +endword ura 5-136 +endword uridade 46-136 +endword uramente 56-136 +endword vel 5-1236 +endword velmente 56-1236 +endword zinho 4-1356 +endword zinha 5-1356 +endword ério 4-123456 +endword éria 5-123456 +endword ário 4-12356 +endword ária 5-12356 +endword ssimo 4-2346 +endword ssima 5-2346 +endword ssimamente 56-2346 +endword úrio 4-23456 +endword úria 5-23456 +endword âncio 4-16 +endword ância 5-16 +endword êncio 4-126 +endword ência 5-126 +endword grafo 4-12456 +endword grafa 5-12456 +endword ouro 4-1256 +endword oura 5-1256 +endword írio 4-14 +endword íria 5-14 +endword ório 4-346 +endword ória 5-346 + +# two cell words + +word acolá 1-14 +word afim 1-124 +word alguém 1-1256 +word amor 1-134 +word apenas 1-1345 +word apesar 1-1234 +word aqui 1-12345 +word auxílio 1-1346 +word aliás 1-12356 +word após 1-346 +word amanhã 1-345 +word boca 12-14 +word bondoso 12-145 +word beijo 13-245 +word belo 12-123 +word Brazil 12-1235 +word baixo 12-1346 +word coisa 14-1 +word cabeça 14-12 +word cerca 14-14 +word cada 14-145 +word cede 14-15 +word cego 14-1245 +word cima 14-24 +word cujo 14-145 +word claro 14-123 +word como 14-134 +word corpo 14-1234 +word caro 14-1235 +word caso 14-234 +word carta 14-2345 +word certo 14-236 +word doce 145-14 +word desde 145-145 +word difícil 145-124 +word desejo 145-245 +word dele 145-123 +word duma 145-134 +word depois 145-1234 +word diante 145-2345 +word diverso 145-1234 +word esta 15-1 +word espécie 15-14 +word este 15-15 +word efeito 15-124 +word enorme 15-1345 +word evidente 15-1236 +word estes 15-156 +word exemplo 15-1246 +word fora 124-1 +word fácil 124-14 +word feliz 124-123 +word forma 124-134 +word força 124-135 +word fevereiro 124-1235 +word facto 124-2345 +word fato 124-2345 +word favor 124-1236 +word força 124-1456 +word gente 1245-15 +word geral 1245-1235 +word lha 125-1 +word hábito 125-12 +word lhe 125-15 +word hoje 125-245 +word homem 125-134 +word lho 125-135 +word hora 125-1235 +word história 125-2345 +word início 24-14 +word ideia 24-145 +word idéa 24-145 +word igual 24-1245 +word imediato 24-134 +word isto 24-2345 +word irmão 24-3456 +word irmã 24-1 +word julho 245-125 +word jamais 245-134 +word junto 245-1345 +word junho 245-135 +word janeiro 245-1235 +word justo 245-2345 +word juízo 245-1356 +word alfabeto 13-124 +word local 123-14 +word lado 123-145 +word logo 123-1245 +word lugar 123-1235 +word livro 123-1236 +word modo 134-145 +word mulher 134-125 +word maio 134-35 +word mim 134-134 +word menino 134-1345 +word melhor 134-1235 +word meus 134-234 +word muito 134-2345 +word março 134-12346 +word mínimo 134-34 +word manhã 134-345 +word nunca 1345-14 +word nada 1345-145 +word noite 1345-15 +word ninguém 1345-1245 +word nele 1345-123 +word numa 1345-134 +word número 1345-1235 +word nosso 1345-234 +word novo 1345-1236 +word noute 1345-1256 +word ordem 135-145 +word onde 135-15 +word objecto 135-245 +word ontem 135-2345 +word palavra 1234-1 +word pouco 1234-14 +word parte 1234-15 +word página 1234-1245 +word pelo 1234-123 +word porém 1234-134 +word pena 1234-1345 +word perto 1234-135 +word papel 1234-1234 +word porque 1234-12345 +word pior 1234-1235 +word pois 1234-234 +word ponto 1234-2345 +word povo 1234-1236 +word quando 12345-145 +word qual 12345-123 +word quem 12345-134 +word qualquer 12345-12345 +word quer 12345-1235 +word quais 12345-234 +word quanto 12345-2345 +word rapaz 1235-1234 +word raro 1235-1235 +word reto 1235-2345 +word razão 1235-1345 +word sua 234-1 +word século 234-14 +word saúde 234-145 +word suficiente 234-124 +word segundo 234-1245 +word sujeito 234-245 +word somente 234-134 +word senão 123-1345 +word sempre 234-1234 +word senhor 234-1235 +word seus 234-234 +word sobretudo 234-2345 +word simples 234-1246 +word também 2345-12 +word todo 2345-145 +word tempo 2345-1234 +word teus 2345-234 +word tanto 2345-2345 +word talvez 2345-1236 +word toda 2345-1456 +word vida 1236-1 +word verbo 1236-12 +word você 1236-14 +word verdade 1236-145 +word verão 1236-1235 +word vosso 1236-234 +word vivo 1236-1236 +word excelente 1346-123 +word este 126-15 +word outro 1256-135 +word outrora 1256-1235 +word braille 23-123 +word contudo 25-2345 +word embora 256-12 +word entre 26-15 +word enfim 26-124 +word primeiro 235-134 +word próprio 235-135 + +# three cell words + +word abaixo 1-12-1346 +word acerca 1-14-14 +word acima 1-14-24 +word acaso 1-14-234 +word adiante 1-145-2345 +word afecto 1-124-2345 +word afeto 1-124-2345 +word algum 1-1245-134 +word agosto 1-1245-2345 +word além 1-123-134 +word amigo 1-134-1245 +word aonde 1-135-15 +word aonde 1-135-15 +word aquele 1-12345-15 +word aquém 1-12345-134 +word aquilo 1-12345-135 +word abril 1-23-123 +word brasileiro 12-1235-1235 +word comigo 14-134-1245 +word conosco 14-1345-14 +word capitulo 14-1234-2345 +word certamente 14-236-134 +word debaixo 145-12-1346 +word dificilmente 145-124-134 +word diferença 145-124-1235 +word domingo 145-134-1245 +word donde 145-135-15 +word dezembro 145-1356-12 +word evidentemente 15-1236-134 +word facilmente 124-14-134 +word futuro 124-2345-1235 +word geralmente 1245-1235-134 +word igualmente 24-1245-134 +word imediatamente 24-134-134 +word menor 134-1345-1235 +word minuto 134-1345-2345 +word metade 134-2356-145 +word minha 134-2356-1 +word necessidade 1345-14-145 +word necessário 1345-14-1235 +word novembro 1345-1236-12 +word nenhum 1345-2356-134 +word possibilidade 1234-12-145 +word perfeito 1234-124-2345 +word pequeno 1234-12345-1345 +word porquanto 1234-12345-2345 +word português 1234-2345-1245 +word portanto 1234-2345-2345 +word quaisquer 12345-234-12345 +word rapariga 1235-1234-1245 +word raramente 1235-1235-134 +word sábado 234-12-145 +word seguinte 234-1245-2345 +word semana 234-134-1345 +word superior 234-1234-1235 +word senhorita 234-1235-2345 +word setembro 234-2345-12 +word simplesmente 234-1246-134 +word todavia 2456-145-1236 +word exceto 1346-14-2345 +word externo 1346-2345-1345 +word exterior 1346-2345-1235 +word àquele 1246-12345-15 +word àquilo 1246-12345-135 +word outubro 1256-2345-12 +word outono 1256-2345-1345 +word connosco 25-1345-14 +word consigo 25-234-1245 +word contigo 25-2345-1245 +word convosco 25-1236-14 +word entretanto 26-15-2345-2345 +word enquanto 26-12345-2345 +word entanto 26-2345-2345 +word primavera 235-1236-1235 +word inferior 36-124-1235 +word interno 35-2345-1345 +word interior 35-2345-1235 +word inverno 35-1236-1345 + +# compound words + +word quinta-feira 12345-1345-36-124 +word quarta-feira 12345-1235-36-124 +word segunda-feira 234-1245-36-124 +word sexta-feira 234-1346-36-124 +word terça-feira 2345-14-36-124 diff --git a/Tables/pt.ttb b/Tables/pt.ttb new file mode 100644 index 0000000000000000000000000000000000000000..26cb64fb816d1a9b11d87f3ee437c95cd259cb3b --- /dev/null +++ b/Tables/pt.ttb @@ -0,0 +1,204 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Portuguese + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# the standard representations for the Latin control characters +include control-latin.tti + +# the numbers 0-9 are represented by the letters j,a-i with dot 8 added +include numbers-dot8.tti + +# generated by ttbtest: charset=iso-8859-1 +char \x00 ( 234 678) # 00 ⣮ [NULL] +# Latin control characters # 01-1A +char \x1B (123 5678) # 1B ⣷ [ESCAPE] +char \x1C ( 34 678) # 1C ⣬ [INFORMATION SEPARATOR FOUR] +char \x1D ( 2345678) # 1D ⣾ [INFORMATION SEPARATOR THREE] +char \x1E ( 678) # 1E ⣠ [INFORMATION SEPARATOR TWO] +char \x1F ( 5 78) # 1F ⣠[INFORMATION SEPARATOR ONE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 23 5 8) # 21 ⢖ ! [EXCLAMATION MARK] +char \x22 ( 23 6 ) # 22 â ¦ " [QUOTATION MARK] +char \x23 ( 3456 ) # 23 â ¼ # [NUMBER SIGN] +char \x24 ( 56 ) # 24 â ° $ [DOLLAR SIGN] +char \x25 ( 3 5678) # 25 ⣴ % [PERCENT SIGN] +char \x26 (1234 6 8) # 26 ⢯ & [AMPERSAND] +char \x27 ( 3 7 ) # 27 â¡„ ' [APOSTROPHE] +char \x28 (12 6 8) # 28 ⢣ ( [LEFT PARENTHESIS] +char \x29 ( 345 8) # 29 ⢜ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 23 5 ) # 2B â – + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 3 ) # 2E â „ . [FULL STOP] +char \x2F ( 67 ) # 2F â¡  / [SOLIDUS] +# Hindu-Arabic numerals # 30-39 +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C ( 2 4 6 8) # 3C ⢪ < [LESS-THAN SIGN] +char \x3D ( 23 56 ) # 3D â ¶ = [EQUALS SIGN] +char \x3E (1 3 5 8) # 3E ⢕ > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 (1 56 8) # 40 ⢱ @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B (123 56 8) # 5B ⢷ [ [LEFT SQUARE BRACKET] +char \x5C ( 3 8) # 5C ⢄ \ [REVERSE SOLIDUS] +char \x5D ( 23456 8) # 5D ⢾ ] [RIGHT SQUARE BRACKET] +char \x5E ( 4 ) # 5E â ˆ ^ [CIRCUMFLEX ACCENT] +char \x5F ( 3 5 8) # 5F ⢔ _ [LOW LINE] +char \x60 ( 2 6 8) # 60 ⢢ ` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B (123 8) # 7B ⢇ { [LEFT CURLY BRACKET] +char \x7C ( 456 ) # 7C â ¸ | [VERTICAL LINE] +char \x7D ( 4567 ) # 7D ⡸ } [RIGHT CURLY BRACKET] +char \x7E ( 5 ) # 7E â  ~ [TILDE] +char \x7F ( 5 7 ) # 7F â¡ [DELETE] +char \x80 ( 2 67 ) # 80 â¡¢ [] +char \x81 (1 34 6 8) # 81 ⢭ [] +char \x82 ( 2 56 8) # 82 ⢲ [BREAK PERMITTED HERE] +char \x83 ( 2 5 8) # 83 ⢒ [NO BREAK HERE] +char \x84 ( 3 5 7 ) # 84 â¡” [] +char \x85 (1 8) # 85 ⢠[NEXT LINE (NEL)] +char \x86 ( 234 8) # 86 ⢎ [START OF SELECTED AREA] +char \x87 ( 2345 8) # 87 ⢞ [END OF SELECTED AREA] +char \x88 ( 3 56 8) # 88 ⢴ [CHARACTER TABULATION SET] +char \x89 (1 45 8) # 89 ⢙ [CHARACTER TABULATION WITH JUSTIFICATION] +char \x8A ( 23 5 8) # 8A ⢖ [LINE TABULATION SET] +char \x8B ( 345 78) # 8B ⣜ [PARTIAL LINE FORWARD] +char \x8C (1 5 8) # 8C ⢑ [PARTIAL LINE BACKWARD] +char \x8D ( 2 4 67 ) # 8D ⡪ [REVERSE LINE FEED] +char \x8E ( 4567 ) # 8E ⡸ [SINGLE SHIFT TWO] +char \x8F (12 4 67 ) # 8F â¡« [SINGLE SHIFT THREE] +char \x90 ( 23 567 ) # 90 ⡶ [DEVICE CONTROL STRING] +char \x91 ( 2 6 8) # 91 ⢢ [PRIVATE USE ONE] +char \x92 ( 6 8) # 92 ⢠ [PRIVATE USE TWO] +char \x93 (12 67 ) # 93 â¡£ [SET TRANSMIT STATE] +char \x94 ( 3 5 78) # 94 ⣔ [CANCEL CHARACTER] +char \x95 ( 45 8) # 95 ⢘ [MESSAGE WAITING] +char \x96 (1 4 67 ) # 96 â¡© [START OF GUARDED AREA] +char \x97 ( 4 8) # 97 ⢈ [END OF GUARDED AREA] +char \x98 (12 4567 ) # 98 â¡» [START OF STRING] +char \x99 (1 3 5 8) # 99 ⢕ [] +char \x9A (12 567 ) # 9A ⡳ [SINGLE CHARACTER INTRODUCER] +char \x9B ( 56 8) # 9B ⢰ [CONTROL SEQUENCE INTRODUCER] +char \x9C ( 3 6 8) # 9C ⢤ [STRING TERMINATOR] +char \x9D ( 34 7 ) # 9D â¡Œ [OPERATING SYSTEM COMMAND] +char \x9E ( 23 5 7 ) # 9E â¡– [PRIVACY MESSAGE] +char \x9F (12 4 678) # 9F ⣫ [APPLICATION PROGRAM COMMAND] +char \xA0 ( 7 ) # A0 â¡€   [NO-BREAK SPACE] +char \xA1 ( 3 67 ) # A1 ⡤ ¡ [INVERTED EXCLAMATION MARK] +char \xA2 ( 56 8) # A2 ⢰ ¢ [CENT SIGN] +char \xA3 ( 4 6 ) # A3 â ¨ £ [POUND SIGN] +char \xA4 ( 3 678) # A4 ⣤ ¤ [CURRENCY SIGN] +char \xA5 ( 4 6 8) # A5 ⢨ Â¥ [YEN SIGN] +char \xA6 ( 2 678) # A6 ⣢ ¦ [BROKEN BAR] +char \xA7 (12345678) # A7 ⣿ § [SECTION SIGN] +char \xA8 ( 2 78) # A8 ⣂ ¨ [DIAERESIS] +char \xA9 (1 4 7 ) # A9 ⡉ © [COPYRIGHT SIGN] +char \xAA ( 4 7 ) # AA ⡈ ª [FEMININE ORDINAL INDICATOR] +char \xAB ( 23 67 ) # AB ⡦ « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC ( 2 5678) # AC ⣲ ¬ [NOT SIGN] +char \xAD (12 4 8) # AD ⢋ ­ [SOFT HYPHEN] +char \xAE (123 5 8) # AE ⢗ ® [REGISTERED SIGN] +char \xAF ( 5 8) # AF ⢠¯ [MACRON] +char \xB0 ( 3 567 ) # B0 â¡´ ° [DEGREE SIGN] +char \xB1 ( 23 5 78) # B1 ⣖ ± [PLUS-MINUS SIGN] +char \xB2 ( 23 8) # B2 ⢆ ² [SUPERSCRIPT TWO] +char \xB3 ( 2 5 8) # B3 ⢒ ³ [SUPERSCRIPT THREE] +char \xB4 ( 3 5 7 ) # B4 â¡” ´ [ACUTE ACCENT] +char \xB5 (1 34 8) # B5 ⢠µ [MICRO SIGN] +char \xB6 (12345678) # B6 ⣿ ¶ [PILCROW SIGN] +char \xB7 ( 3 7 ) # B7 â¡„ · [MIDDLE DOT] +char \xB8 (1 4 8) # B8 ⢉ ¸ [CEDILLA] +char \xB9 ( 45 7 ) # B9 ⡘ ¹ [SUPERSCRIPT ONE] +char \xBA ( 34 6 8) # BA ⢬ º [MASCULINE ORDINAL INDICATOR] +char \xBB ( 23 6 8) # BB ⢦ » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBC (1 3 6 8) # BC ⢥ ¼ [VULGAR FRACTION ONE QUARTER] +char \xBD (123 6 8) # BD ⢧ ½ [VULGAR FRACTION ONE HALF] +char \xBE ( 34 78) # BE ⣌ ¾ [VULGAR FRACTION THREE QUARTERS] +char \xBF ( 3 8) # BF ⢄ ¿ [INVERTED QUESTION MARK] +char \xC0 (12 4 67 ) # C0 â¡« À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 (123 567 ) # C1 â¡· à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 (1 67 ) # C2 â¡¡  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 ( 3 567 ) # C3 â¡´ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 ( 567 ) # C4 â¡° Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 ( 34567 ) # C5 ⡼ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( 4 7 ) # C6 ⡈ Æ [LATIN CAPITAL LETTER AE] +char \xC7 (1234 67 ) # C7 ⡯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( 234 67 ) # C8 â¡® È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 (1234567 ) # C9 â¡¿ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA (12 67 ) # CA â¡£ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB (12 678) # CB ⣣ Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC (1 4 67 ) # CC â¡© ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD ( 34 7 ) # CD â¡Œ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE (1 4 678) # CE ⣩ ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF (12 4567 ) # CF â¡» à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD0 ( 345 7 ) # D0 â¡œ à [LATIN CAPITAL LETTER ETH] +char \xD1 (12 45678) # D1 ⣻ Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD2 ( 2 456 8) # D2 ⢺ Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 ( 34 67 ) # D3 ⡬ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 (1 4567 ) # D4 ⡹ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD5 ( 2 4 67 ) # D5 ⡪ Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 (1 45678) # D6 ⣹ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 ( 23 678) # D7 ⣦ × [MULTIPLICATION SIGN] +char \xD8 ( 3 567 ) # D8 â¡´ Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xD9 (1 567 ) # D9 ⡱ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA ( 234567 ) # DA ⡾ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB (1 5678) # DB ⣱ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC (12 567 ) # DC ⡳ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD (12 5678) # DD ⣳ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDE ( 3 5678) # DE ⣴ Þ [LATIN CAPITAL LETTER THORN] +char \xDF ( 3456 8) # DF ⢼ ß [LATIN SMALL LETTER SHARP S] +char \xE0 (12 4 6 ) # E0 â « à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 (123 56 ) # E1 â · á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 6 ) # E2 â ¡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 ( 345 ) # E3 â œ ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 ( 345 78) # E4 ⣜ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 ( 345678) # E5 ⣼ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 ( 4 78) # E6 ⣈ æ [LATIN SMALL LETTER AE] +char \xE7 (1234 6 ) # E7 â ¯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 ) # E8 â ® è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (123456 ) # E9 â ¿ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (12 6 ) # EA â £ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 8) # EB ⢫ ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC (1 4 6 ) # EC â © ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED ( 34 ) # ED â Œ í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 678) # EE ⣩ î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 ) # EF â » ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF0 ( 23 56 8) # F0 ⢶ ð [LATIN SMALL LETTER ETH] +char \xF1 (1 345 8) # F1 ⢠ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 ( 2 456 8) # F2 ⢺ ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 ( 34 6 ) # F3 â ¬ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 456 ) # F4 â ¹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 ( 2 4 6 ) # F5 â ª õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 2 4 678) # F6 ⣪ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 ( 2 56 ) # F7 â ² ÷ [DIVISION SIGN] +char \xF8 ( 4 6 8) # F8 ⢨ ø [LATIN SMALL LETTER O WITH STROKE] +char \xF9 (1 56 ) # F9 â ± ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA ( 23456 ) # FA â ¾ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 56 8) # FB ⢱ û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 ) # FC â ³ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD (12 56 8) # FD ⢳ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \xFE ( 3 8) # FE ⢄ þ [LATIN SMALL LETTER THORN] +char \xFF (1 3456 8) # FF ⢽ ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] + +include common.tti diff --git a/Tables/punctuation-alternate.tti b/Tables/punctuation-alternate.tti new file mode 100644 index 0000000000000000000000000000000000000000..1c059052bff185557410463f4a16d82731d3f427 --- /dev/null +++ b/Tables/punctuation-alternate.tti @@ -0,0 +1,53 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable defines alternate braille representations for the +# ASCII punctuation characters. + +char \x21 ( 23 5 8) # ⢖ ! [EXCLAMATION MARK] +char \x22 ( 23 56 8) # ⢶ " [QUOTATION MARK] +char \x23 ( 3456 8) # ⢼ # [NUMBER SIGN] +char \x24 (12 4 6 8) # ⢫ $ [DOLLAR SIGN] +char \x25 (1 4 6 8) # ⢩ % [PERCENT SIGN] +char \x26 ( 234 6 8) # ⢮ & [AMPERSAND] +char \x27 ( 3 ) # â „ ' [APOSTROPHE] +char \x28 ( 23 6 8) # ⢦ ( [LEFT PARENTHESIS] +char \x29 ( 3 56 8) # ⢴ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 8) # ⢔ * [ASTERISK] +char \x2B ( 34 6 8) # ⢬ + [PLUS SIGN] +char \x2C ( 2 8) # ⢂ , [COMMA] +char \x2D ( 3 6 ) # â ¤ - [HYPHEN-MINUS] +char \x2E ( 2 56 8) # ⢲ . [FULL STOP] +char \x2F ( 34 8) # ⢌ / [SOLIDUS] +char \x3A ( 2 5 8) # ⢒ : [COLON] +char \x3B ( 23 8) # ⢆ ; [SEMICOLON] +char \x3C (12 6 8) # ⢣ < [LESS-THAN SIGN] +char \x3D (123456 8) # ⢿ = [EQUALS SIGN] +char \x3E ( 345 8) # ⢜ > [GREATER-THAN SIGN] +char \x3F ( 2 6 8) # ⢢ ? [QUESTION MARK] +char \x40 ( 4 7 ) # ⡈ @ [COMMERCIAL AT] +char \x5B (123 56 8) # ⢷ [ [LEFT SQUARE BRACKET] +char \x5C (1 6 8) # ⢡ \ [REVERSE SOLIDUS] +char \x5D ( 23456 8) # ⢾ ] [RIGHT SQUARE BRACKET] +char \x5E ( 45 7 ) # ⡘ ^ [CIRCUMFLEX ACCENT] +char \x5F ( 456 ) # â ¸ _ [LOW LINE] +char \x60 ( 4 ) # â ˆ ` [GRAVE ACCENT] +char \x7B ( 23 678) # ⣦ { [LEFT CURLY BRACKET] +char \x7C (12 56 8) # ⢳ | [VERTICAL LINE] +char \x7D ( 3 5678) # ⣴ } [RIGHT CURLY BRACKET] +char \x7E ( 45 ) # â ˜ ~ [TILDE] diff --git a/Tables/punctuation-basic.tti b/Tables/punctuation-basic.tti new file mode 100644 index 0000000000000000000000000000000000000000..a305c93e02561ac66753bfa711ae59e73d8d99cb --- /dev/null +++ b/Tables/punctuation-basic.tti @@ -0,0 +1,33 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable defines the braille representations for the basic +# English punctuation marks. + +char \x21 ( 23 5 ) # â – ! [EXCLAMATION MARK] +char \x22 ( 23 56 ) # â ¶ " [QUOTATION MARK] +char \x27 ( 3 ) # â „ ' [APOSTROPHE] +char \x28 ( 23 6 ) # â ¦ ( [LEFT PARENTHESIS] +char \x29 ( 3 56 ) # â ´ ) [RIGHT PARENTHESIS] +char \x2C ( 2 ) # â ‚ , [COMMA] +char \x2D ( 3 6 ) # â ¤ - [HYPHEN-MINUS] +char \x2E ( 2 56 ) # â ² . [FULL STOP] +char \x3A ( 2 5 ) # â ’ : [COLON] +char \x3B ( 23 ) # â † ; [SEMICOLON] +char \x3F ( 23 6 ) # â ¦ ? [QUESTION MARK] +char \xA0 ( ) # â €   [NO-BREAK SPACE] diff --git a/Tables/ro.ttb b/Tables/ro.ttb new file mode 100644 index 0000000000000000000000000000000000000000..3d39fb7ea3beaa587e5a68371b0ff9da9933250d --- /dev/null +++ b/Tables/ro.ttb @@ -0,0 +1,51 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Romanian +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# lowercase accented letters +char \u0103 (123 56 ) # â · ă [LATIN SMALL LETTER A WITH BREVE] +char \xE2 (1 6 ) # â ¡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xEE (1 4 6 ) # â © î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \u015F (1234 6 ) # â ¯ ÅŸ [LATIN SMALL LETTER S WITH CEDILLA] +char \u0163 ( 2 4 6 ) # â ª Å£ [LATIN SMALL LETTER T WITH CEDILLA] + +# uppercase accented letters +char \xC2 (1 67 ) # â¡¡  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xCE (1 4 67 ) # â¡© ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \u0102 (123 567 ) # â¡· Ä‚ [LATIN CAPITAL LETTER A WITH BREVE] +char \u015E (1234 67 ) # ⡯ Åž [LATIN CAPITAL LETTER S WITH CEDILLA] +char \u0162 ( 2 4 67 ) # ⡪ Å¢ [LATIN CAPITAL LETTER T WITH CEDILLA] + +# the numbers 0-9 are represented by the letters j,a-i with dot 8 added +include numbers-dot8.tti + +include punctuation-basic.tti +char \x3F ( 2 6 ) # â ¢ ? [QUESTION MARK] + +include common.tti diff --git a/Tables/ru.ttb b/Tables/ru.ttb new file mode 100644 index 0000000000000000000000000000000000000000..cfcbb84bd83cbf89a6e5ffc01a632abfc51ac2a6 --- /dev/null +++ b/Tables/ru.ttb @@ -0,0 +1,68 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Russian +# by Hans Schou and Dave Mielke + +# This is the Russian braille table. It is based on the KOI8-R character set +# which to our knowledge is the most used in Russia. + +# As the Russian cyrillic definition conflicts with the latin definition, some +# decisions had to be taken. Russians need to type both latin for the command +# prompt and cyrillic while reading and writing documents and mail. + +# In the following, latin letters are quoted with apostrophes like in 'a', and +# cyrillic letters are enclosed within brackets like in [a]. + +# Dot 1 in the cyrillic definition is the cyrillic letter which looks and +# sounds like 'a'. The problem is that in the KOI8-R character set, there is +# both a latin 'a' and a cyrillic [a]. In decimal, their character numbers are +# 97 and 193 respectively. To handle conflicts like these, we have prioritized +# which characters are most important to match the standard. + +# RULES: +# 1. All cyrillic characters must follow the Russian standard. KOI8-R character +# 193 [a] must be dot-1, and so on. +# 2. Capital cyrillic letters have dot 7 on. +# 3. The latin alphabet is implemented to follow the international standard +# except it has dot 8 on. +# 4. Capital latin letters have dots 7 and 8 on. +# 5. Numbers are defined as in the American standard. This means dot-2 for +# number '1', and so on. This will conflict with the cyrillic comma which is +# also dot-2. +# 4. Special characters like !"#¤%&/()=? follow the American standard if +# possible. +# 2. Control characters are often used on Linux. These are not very well +# implemented. More work should be done. + +# Comments from Russians are very welcome as neither Hans Schou nor Dave Mielke +# understand a single word in Russian. + +include letters-cyrillic.tti +include letters-latin-dot8.tti +include numbers-nemeth.tti +include punctuation-alternate.tti + +# generated by ttbtest: charset=koi8-r +char \u2219 ( 23 8) # 95 ⢆ ∙ [BULLET OPERATOR] +char \xB0 ( 23 567 ) # 9C ⡶ ° [DEGREE SIGN] +char \xB2 ( 2 6 8) # 9D ⢢ ² [SUPERSCRIPT TWO] +char \xB7 ( 345 78) # 9E ⣜ · [MIDDLE DOT] +char \xA9 ( 34 678) # BF ⣬ © [COPYRIGHT SIGN] + +include common.tti diff --git a/Tables/sa.ttb b/Tables/sa.ttb new file mode 100644 index 0000000000000000000000000000000000000000..262b5d6d701fccff3169f629448cb6fd87da916b --- /dev/null +++ b/Tables/sa.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Sanskrit + +include devanagari.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/sat.ttb b/Tables/sat.ttb new file mode 100644 index 0000000000000000000000000000000000000000..707742d88ea7cb8e29391b384ac34eac0a8fd999 --- /dev/null +++ b/Tables/sat.ttb @@ -0,0 +1,26 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Santali + +include devanagari.tti +include bengali.tti +include oriya.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/sd.ttb b/Tables/sd.ttb new file mode 100644 index 0000000000000000000000000000000000000000..ccddb9bfcdc9ee964713d41c5f7fde6d344bb9c8 --- /dev/null +++ b/Tables/sd.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Sindhi + +include devanagari.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/si.ctb b/Tables/si.ctb new file mode 100644 index 0000000000000000000000000000000000000000..111a53a68ee7914591d5eb81ecb3f659fd946c6f --- /dev/null +++ b/Tables/si.ctb @@ -0,0 +1,81 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - Sinhalese (uncontracted) +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +always අ 1 SINHALA LETTER AYANNA +always ආ 345 SINHALA LETTER AAYANNA +always ඇ 12356 SINHALA LETTER AEYANNA +always ඈ 12456 SINHALA LETTER AEEYANNA +always ඉ 24 SINHALA LETTER IYANNA +always ඊ 35 SINHALA LETTER IIYANNA +always උ 136 SINHALA LETTER UYANNA +always ඌ 1256 SINHALA LETTER UUYANNA +always ච5-1235 SINHALA LETTER IRUYANNA +always ඎ 6-1235 SINHALA LETTER IRUUYANNA +always ච5-123 SINHALA LETTER ILUYANNA +always ච6-123 SINHALA LETTER ILUUYANNA +always එ 15 SINHALA LETTER EYANNA +always ඒ 26 SINHALA LETTER EEYANNA +always ඓ 34 SINHALA LETTER AIYANNA +always ඔ 135 SINHALA LETTER OYANNA +always ඕ 1346 SINHALA LETTER OOYANNA +always ඖ 246 SINHALA LETTER AUYANNA +always ක 13 SINHALA LETTER ALPAPRAANA KAYANNA +always ඛ 46 SINHALA LETTER MAHAAPRAANA KAYANNA +always ග 1245 SINHALA LETTER ALPAPRAANA GAYANNA +always ච126 SINHALA LETTER MAHAAPRAANA GAYANNA +always ඞ 346 SINHALA LETTER KANTAJA NAASIKYAYA +always ච 14 SINHALA LETTER ALPAPRAANA CAYANNA +always ඡ 16 SINHALA LETTER MAHAAPRAANA CAYANNA +always ජ 245 SINHALA LETTER ALPAPRAANA JAYANNA +always ඣ 356 SINHALA LETTER MAHAAPRAANA JAYANNA +always ඤ 25 SINHALA LETTER TAALUJA NAASIKYAYA +always ට 23456 SINHALA LETTER ALPAPRAANA TTAYANNA +always ඨ 2456 SINHALA LETTER MAHAAPRAANA TTAYANNA +always ඩ 1246 SINHALA LETTER ALPAPRAANA DDAYANNA +always ඪ 123456 SINHALA LETTER MAHAAPRAANA DDAYANNA +always ණ 3456 SINHALA LETTER MUURDHAJA NAYANNA +always ත 2345 SINHALA LETTER ALPAPRAANA TAYANNA +always ථ 1456 SINHALA LETTER MAHAAPRAANA TAYANNA +always ද 145 SINHALA LETTER ALPAPRAANA DAYANNA +always ධ 2346 SINHALA LETTER MAHAAPRAANA DAYANNA +always න 1345 SINHALA LETTER DANTAJA NAYANNA +always ප 1234 SINHALA LETTER ALPAPRAANA PAYANNA +always ඵ 235 SINHALA LETTER MAHAAPRAANA PAYANNA +always බ 12 SINHALA LETTER ALPAPRAANA BAYANNA +always භ 45 SINHALA LETTER MAHAAPRAANA BAYANNA +always ම 134 SINHALA LETTER MAYANNA +always ඹ 56 SINHALA LETTER AMBA BAYANNA +always ය 13456 SINHALA LETTER YAYANNA +always ර 1235 SINHALA LETTER RAYANNA +always ල 123 SINHALA LETTER DANTAJA LAYANNA +always à·€ 1236 SINHALA LETTER VAYANNA +always à· 12346 SINHALA LETTER TAALUJA SAYANNA +always à·‚ 146 SINHALA LETTER MUURDHAJA SAYANNA +always à·ƒ 234 SINHALA LETTER DANTAJA SAYANNA +always à·„ 125 SINHALA LETTER HAYANNA +always à·… 456 SINHALA LETTER MUURDHAJA LAYANNA +always à·† 124 SINHALA LETTER FAYANNA diff --git a/Tables/sk.ttb b/Tables/sk.ttb new file mode 100644 index 0000000000000000000000000000000000000000..275df5f776bc8ca5408418e65c17af635810d208 --- /dev/null +++ b/Tables/sk.ttb @@ -0,0 +1,139 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Slovak + +# Created and maintained by Mike Sivill # +# +# Converted from liblouis table by Samuel Thibault + +# generated by ttbtest: charset=latin2 +char \x21 ( 23 5 ) # 21 â – ! [EXCLAMATION MARK] +char \x22 ( 23 56 ) # 22 â ¶ " [QUOTATION MARK] +char \x27 ( 3 ) # 27 â „ ' [APOSTROPHE] +char \x28 ( 23 6 ) # 28 â ¦ ( [LEFT PARENTHESIS] +char \x29 ( 3 56 ) # 29 â ´ ) [RIGHT PARENTHESIS] +char \x2B ( 23 5 ) # 2B â – + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 2 56 ) # 2E â ² . [FULL STOP] +char \x2F ( 2 5 ) # 2F â ’ / [SOLIDUS] +char \x30 ( 2 45 ) # 30 â š 0 [DIGIT ZERO] +char \x31 (1 ) # 31 â  1 [DIGIT ONE] +char \x32 (12 ) # 32 â ƒ 2 [DIGIT TWO] +char \x33 (1 4 ) # 33 â ‰ 3 [DIGIT THREE] +char \x34 (1 45 ) # 34 â ™ 4 [DIGIT FOUR] +char \x35 (1 5 ) # 35 â ‘ 5 [DIGIT FIVE] +char \x36 (12 4 ) # 36 â ‹ 6 [DIGIT SIX] +char \x37 (12 45 ) # 37 â › 7 [DIGIT SEVEN] +char \x38 (12 5 ) # 38 â “ 8 [DIGIT EIGHT] +char \x39 ( 2 4 ) # 39 â Š 9 [DIGIT NINE] +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C (12 6 ) # 3C â £ < [LESS-THAN SIGN] +char \x3D ( 23 56 ) # 3D â ¶ = [EQUALS SIGN] +char \x3E ( 345 ) # 3E â œ > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x41 (1 ) # 41 â  A [LATIN CAPITAL LETTER A] +char \x42 (12 ) # 42 â ƒ B [LATIN CAPITAL LETTER B] +char \x43 (1 4 ) # 43 â ‰ C [LATIN CAPITAL LETTER C] +char \x44 (1 45 ) # 44 â ™ D [LATIN CAPITAL LETTER D] +char \x45 (1 5 ) # 45 â ‘ E [LATIN CAPITAL LETTER E] +char \x46 (12 4 ) # 46 â ‹ F [LATIN CAPITAL LETTER F] +char \x47 (12 45 ) # 47 â › G [LATIN CAPITAL LETTER G] +char \x48 (12 5 ) # 48 â “ H [LATIN CAPITAL LETTER H] +char \x49 ( 2 4 ) # 49 â Š I [LATIN CAPITAL LETTER I] +char \x4A ( 2 45 ) # 4A â š J [LATIN CAPITAL LETTER J] +char \x4B (1 3 ) # 4B â … K [LATIN CAPITAL LETTER K] +char \x4C (123 ) # 4C â ‡ L [LATIN CAPITAL LETTER L] +char \x4D (1 34 ) # 4D â  M [LATIN CAPITAL LETTER M] +char \x4E (1 345 ) # 4E â  N [LATIN CAPITAL LETTER N] +char \x4F (1 3 5 ) # 4F â • O [LATIN CAPITAL LETTER O] +char \x50 (1234 ) # 50 â  P [LATIN CAPITAL LETTER P] +char \x51 (12345 ) # 51 â Ÿ Q [LATIN CAPITAL LETTER Q] +char \x52 (123 5 ) # 52 â — R [LATIN CAPITAL LETTER R] +char \x53 ( 234 ) # 53 â Ž S [LATIN CAPITAL LETTER S] +char \x54 ( 2345 ) # 54 â ž T [LATIN CAPITAL LETTER T] +char \x55 (1 3 6 ) # 55 â ¥ U [LATIN CAPITAL LETTER U] +char \x56 (123 6 ) # 56 â § V [LATIN CAPITAL LETTER V] +char \x57 ( 2 456 ) # 57 â º W [LATIN CAPITAL LETTER W] +char \x58 (1 34 6 ) # 58 â ­ X [LATIN CAPITAL LETTER X] +char \x59 (1 3456 ) # 59 â ½ Y [LATIN CAPITAL LETTER Y] +char \x5A (1 3 56 ) # 5A â µ Z [LATIN CAPITAL LETTER Z] +char \x61 (1 ) # 61 â  a [LATIN SMALL LETTER A] +char \x62 (12 ) # 62 â ƒ b [LATIN SMALL LETTER B] +char \x63 (1 4 ) # 63 â ‰ c [LATIN SMALL LETTER C] +char \x64 (1 45 ) # 64 â ™ d [LATIN SMALL LETTER D] +char \x65 (1 5 ) # 65 â ‘ e [LATIN SMALL LETTER E] +char \x66 (12 4 ) # 66 â ‹ f [LATIN SMALL LETTER F] +char \x67 (12 45 ) # 67 â › g [LATIN SMALL LETTER G] +char \x68 (12 5 ) # 68 â “ h [LATIN SMALL LETTER H] +char \x69 ( 2 4 ) # 69 â Š i [LATIN SMALL LETTER I] +char \x6A ( 2 45 ) # 6A â š j [LATIN SMALL LETTER J] +char \x6B (1 3 ) # 6B â … k [LATIN SMALL LETTER K] +char \x6C (123 ) # 6C â ‡ l [LATIN SMALL LETTER L] +char \x6D (1 34 ) # 6D â  m [LATIN SMALL LETTER M] +char \x6E (1 345 ) # 6E â  n [LATIN SMALL LETTER N] +char \x6F (1 3 5 ) # 6F â • o [LATIN SMALL LETTER O] +char \x70 (1234 ) # 70 â  p [LATIN SMALL LETTER P] +char \x71 (12345 ) # 71 â Ÿ q [LATIN SMALL LETTER Q] +char \x72 (123 5 ) # 72 â — r [LATIN SMALL LETTER R] +char \x73 ( 234 ) # 73 â Ž s [LATIN SMALL LETTER S] +char \x74 ( 2345 ) # 74 â ž t [LATIN SMALL LETTER T] +char \x75 (1 3 6 ) # 75 â ¥ u [LATIN SMALL LETTER U] +char \x76 (123 6 ) # 76 â § v [LATIN SMALL LETTER V] +char \x77 ( 2 456 ) # 77 â º w [LATIN SMALL LETTER W] +char \x78 (1 34 6 ) # 78 â ­ x [LATIN SMALL LETTER X] +char \x79 (1 3456 ) # 79 â ½ y [LATIN SMALL LETTER Y] +char \x7A (1 3 56 ) # 7A â µ z [LATIN SMALL LETTER Z] +char \u013D ( 456 ) # A5 â ¸ Ľ [LATIN CAPITAL LETTER L WITH CARON] +char \u0160 (1 56 ) # A9 â ± Å  [LATIN CAPITAL LETTER S WITH CARON] +char \u0164 (12 56 ) # AB â ³ Ť [LATIN CAPITAL LETTER T WITH CARON] +char \u017D ( 234 6 ) # AE â ® Ž [LATIN CAPITAL LETTER Z WITH CARON] +char \u013E ( 456 ) # B5 â ¸ ľ [LATIN SMALL LETTER L WITH CARON] +char \u0161 (1 56 ) # B9 â ± Å¡ [LATIN SMALL LETTER S WITH CARON] +char \u0165 (12 56 ) # BB â ³ Å¥ [LATIN SMALL LETTER T WITH CARON] +char \u017E ( 234 6 ) # BE â ® ž [LATIN SMALL LETTER Z WITH CARON] +char \u0154 (123 56 ) # C0 â · Å” [LATIN CAPITAL LETTER R WITH ACUTE] +char \xC1 (1 6 ) # C1 â ¡ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC4 ( 4 ) # C4 â ˆ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \u0139 ( 4 6 ) # C5 â ¨ Ĺ [LATIN CAPITAL LETTER L WITH ACUTE] +char \u010C (1 4 6 ) # C8 â © ÄŒ [LATIN CAPITAL LETTER C WITH CARON] +char \xC9 ( 345 ) # C9 â œ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCD ( 34 ) # CD â Œ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \u010E (1 456 ) # CF â ¹ ÄŽ [LATIN CAPITAL LETTER D WITH CARON] +char \u0147 (12 4 6 ) # D2 â « Ň [LATIN CAPITAL LETTER N WITH CARON] +char \xD3 ( 2 4 6 ) # D3 â ª Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 ( 23456 ) # D4 â ¾ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xDA ( 34 6 ) # DA â ¬ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDD (1234 6 ) # DD â ¯ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \u0155 (123 56 ) # E0 â · Å• [LATIN SMALL LETTER R WITH ACUTE] +char \xE1 (1 6 ) # E1 â ¡ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE4 ( 4 ) # E4 â ˆ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \u013A ( 4 6 ) # E5 â ¨ ĺ [LATIN SMALL LETTER L WITH ACUTE] +char \u010D (1 4 6 ) # E8 â © Ä [LATIN SMALL LETTER C WITH CARON] +char \xE9 ( 345 ) # E9 â œ é [LATIN SMALL LETTER E WITH ACUTE] +char \xED ( 34 ) # ED â Œ í [LATIN SMALL LETTER I WITH ACUTE] +char \u010F (1 456 ) # EF â ¹ Ä [LATIN SMALL LETTER D WITH CARON] +char \u0148 (12 4 6 ) # F2 â « ň [LATIN SMALL LETTER N WITH CARON] +char \xF3 ( 2 4 6 ) # F3 â ª ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 ( 23456 ) # F4 â ¾ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xFA ( 34 6 ) # FA â ¬ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFD (1234 6 ) # FD â ¯ ý [LATIN SMALL LETTER Y WITH ACUTE] + +include common.tti diff --git a/Tables/spaces.tti b/Tables/spaces.tti new file mode 100644 index 0000000000000000000000000000000000000000..7798e36fa07dc803b09bfbe326e26fbd4ac4c1bd --- /dev/null +++ b/Tables/spaces.tti @@ -0,0 +1,34 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable defines all the space characters to be empty +# braille cells. + +char \x20 ( ) # â € [SPACE] +char \xA0 ( ) # â €   [NO-BREAK SPACE] +char \u2002 ( ) # â € [EN SPACE] +char \u2003 ( ) # â € [EM SPACE] +char \u2004 ( ) # â € [THREE-PER-EM SPACE] +char \u2005 ( ) # â € [FOUR-PER-EM SPACE] +char \u2006 ( ) # â € [SIX-PER-EM SPACE] +char \u2007 ( ) # â €   [FIGURE SPACE] +char \u2008 ( ) # â € [PUNCTUATION SPACE] +char \u2009 ( ) # â € [THIN SPACE] +char \u200A ( ) # â € [HAIR SPACE] +char \u202F ( ) # â €   [NARROW NO-BREAK SPACE] +char \u205F ( ) # â € [MEDIUM MATHEMATICAL SPACE] diff --git a/Tables/sv-1989.ttb b/Tables/sv-1989.ttb new file mode 100644 index 0000000000000000000000000000000000000000..dd3faeb8ba6cae14ce1495a48b851b9791af1e85 --- /dev/null +++ b/Tables/sv-1989.ttb @@ -0,0 +1,204 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Swedish (1989 standard) + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# the standard representations for the Latin control characters +include control-latin.tti + +# the numbers 0-9 are represented by the letters j,a-i with dot 8 added +include numbers-dot8.tti + +# generated by ttbtest: charset=iso-8859-1 +char \x00 ( ) # 00 â € [NULL] +# Latin control characters # 01-1A +char \x1B ( 345 78) # 1B ⣜ [ESCAPE] +char \x1C ( 2 4 678) # 1C ⣪ [INFORMATION SEPARATOR FOUR] +char \x1D (1 678) # 1D ⣡ [INFORMATION SEPARATOR THREE] +char \x1E ( 45 78) # 1E ⣘ [INFORMATION SEPARATOR TWO] +char \x1F ( 3 678) # 1F ⣤ [INFORMATION SEPARATOR ONE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 23 5 ) # 21 â – ! [EXCLAMATION MARK] +char \x22 ( 56 ) # 22 â ° " [QUOTATION MARK] +char \x23 ( 3456 ) # 23 â ¼ # [NUMBER SIGN] +char \x24 ( 2 56 ) # 24 â ² $ [DOLLAR SIGN] +char \x25 ( 4 678) # 25 ⣨ % [PERCENT SIGN] +char \x26 ( 34 6 ) # 26 â ¬ & [AMPERSAND] +char \x27 ( 5 ) # 27 â  ' [APOSTROPHE] +char \x28 ( 23 678) # 28 ⣦ ( [LEFT PARENTHESIS] +char \x29 ( 3 5678) # 29 ⣴ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 23 5 7 ) # 2B â¡– + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 3 ) # 2E â „ . [FULL STOP] +char \x2F ( 34 ) # 2F â Œ / [SOLIDUS] +# Hindu-Arabic numerals # 30-39 +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C ( 2 6 8) # 3C ⢢ < [LESS-THAN SIGN] +char \x3D ( 23 56 ) # 3D â ¶ = [EQUALS SIGN] +char \x3E ( 3 5 7 ) # 3E â¡” > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 ( 4 67 ) # 40 ⡨ @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B ( 23 5 78) # 5B ⣖ [ [LEFT SQUARE BRACKET] +char \x5C ( 4567 ) # 5C ⡸ \ [REVERSE SOLIDUS] +char \x5D ( 2 5678) # 5D ⣲ ] [RIGHT SQUARE BRACKET] +char \x5E ( 45 7 ) # 5E ⡘ ^ [CIRCUMFLEX ACCENT] +char \x5F ( 78) # 5F ⣀ _ [LOW LINE] +char \x60 ( 4 6 ) # 60 â ¨ ` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B ( 3 78) # 7B ⣄ { [LEFT CURLY BRACKET] +char \x7C ( 8) # 7C ⢀ | [VERTICAL LINE] +char \x7D ( 678) # 7D ⣠ } [RIGHT CURLY BRACKET] +char \x7E ( 45 ) # 7E â ˜ ~ [TILDE] +char \x7F ( 456 8) # 7F ⢸ [DELETE] +char \x80 ( 8) # 80 ⢀ [] +char \x81 ( 8) # 81 ⢀ [] +char \x82 ( 8) # 82 ⢀ [BREAK PERMITTED HERE] +char \x83 ( 8) # 83 ⢀ [NO BREAK HERE] +char \x84 ( 8) # 84 ⢀ [] +char \x85 ( 8) # 85 ⢀ [NEXT LINE (NEL)] +char \x86 ( 8) # 86 ⢀ [START OF SELECTED AREA] +char \x87 ( 8) # 87 ⢀ [END OF SELECTED AREA] +char \x88 ( 8) # 88 ⢀ [CHARACTER TABULATION SET] +char \x89 ( 8) # 89 ⢀ [CHARACTER TABULATION WITH JUSTIFICATION] +char \x8A ( 8) # 8A ⢀ [LINE TABULATION SET] +char \x8B ( 8) # 8B ⢀ [PARTIAL LINE FORWARD] +char \x8C ( 8) # 8C ⢀ [PARTIAL LINE BACKWARD] +char \x8D ( 8) # 8D ⢀ [REVERSE LINE FEED] +char \x8E ( 8) # 8E ⢀ [SINGLE SHIFT TWO] +char \x8F ( 8) # 8F ⢀ [SINGLE SHIFT THREE] +char \x90 ( 8) # 90 ⢀ [DEVICE CONTROL STRING] +char \x91 ( 8) # 91 ⢀ [PRIVATE USE ONE] +char \x92 ( 8) # 92 ⢀ [PRIVATE USE TWO] +char \x93 ( 8) # 93 ⢀ [SET TRANSMIT STATE] +char \x94 ( 8) # 94 ⢀ [CANCEL CHARACTER] +char \x95 ( 8) # 95 ⢀ [MESSAGE WAITING] +char \x96 ( 8) # 96 ⢀ [START OF GUARDED AREA] +char \x97 ( 8) # 97 ⢀ [END OF GUARDED AREA] +char \x98 ( 8) # 98 ⢀ [START OF STRING] +char \x99 ( 8) # 99 ⢀ [] +char \x9A ( 8) # 9A ⢀ [SINGLE CHARACTER INTRODUCER] +char \x9B ( 8) # 9B ⢀ [CONTROL SEQUENCE INTRODUCER] +char \x9C ( 8) # 9C ⢀ [STRING TERMINATOR] +char \x9D ( 8) # 9D ⢀ [OPERATING SYSTEM COMMAND] +char \x9E ( 8) # 9E ⢀ [PRIVACY MESSAGE] +char \x9F ( 8) # 9F ⢀ [APPLICATION PROGRAM COMMAND] +char \xA0 ( 8) # A0 ⢀   [NO-BREAK SPACE] +char \xA1 ( 8) # A1 ⢀ ¡ [INVERTED EXCLAMATION MARK] +char \xA2 ( 8) # A2 ⢀ ¢ [CENT SIGN] +char \xA3 ( 8) # A3 ⢀ £ [POUND SIGN] +char \xA4 ( 8) # A4 ⢀ ¤ [CURRENCY SIGN] +char \xA5 ( 8) # A5 ⢀ Â¥ [YEN SIGN] +char \xA6 ( 8) # A6 ⢀ ¦ [BROKEN BAR] +char \xA7 ( 8) # A7 ⢀ § [SECTION SIGN] +char \xA8 ( 8) # A8 ⢀ ¨ [DIAERESIS] +char \xA9 ( 8) # A9 ⢀ © [COPYRIGHT SIGN] +char \xAA ( 8) # AA ⢀ ª [FEMININE ORDINAL INDICATOR] +char \xAB ( 8) # AB ⢀ « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC ( 8) # AC ⢀ ¬ [NOT SIGN] +char \xAD ( 8) # AD ⢀ ­ [SOFT HYPHEN] +char \xAE ( 8) # AE ⢀ ® [REGISTERED SIGN] +char \xAF ( 8) # AF ⢀ ¯ [MACRON] +char \xB0 ( 8) # B0 ⢀ ° [DEGREE SIGN] +char \xB1 ( 8) # B1 ⢀ ± [PLUS-MINUS SIGN] +char \xB2 ( 8) # B2 ⢀ ² [SUPERSCRIPT TWO] +char \xB3 ( 8) # B3 ⢀ ³ [SUPERSCRIPT THREE] +char \xB4 ( 8) # B4 ⢀ ´ [ACUTE ACCENT] +char \xB5 ( 8) # B5 ⢀ µ [MICRO SIGN] +char \xB6 ( 8) # B6 ⢀ ¶ [PILCROW SIGN] +char \xB7 ( 8) # B7 ⢀ · [MIDDLE DOT] +char \xB8 ( 8) # B8 ⢀ ¸ [CEDILLA] +char \xB9 ( 8) # B9 ⢀ ¹ [SUPERSCRIPT ONE] +char \xBA ( 8) # BA ⢀ º [MASCULINE ORDINAL INDICATOR] +char \xBB ( 8) # BB ⢀ » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBC ( 8) # BC ⢀ ¼ [VULGAR FRACTION ONE QUARTER] +char \xBD ( 8) # BD ⢀ ½ [VULGAR FRACTION ONE HALF] +char \xBE ( 8) # BE ⢀ ¾ [VULGAR FRACTION THREE QUARTERS] +char \xBF ( 2 6 ) # BF â ¢ ¿ [INVERTED QUESTION MARK] +char \xC0 ( 8) # C0 ⢀ À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 ( 8) # C1 ⢀ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 ( 8) # C2 ⢀  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 ( 8) # C3 ⢀ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 ( 345 7 ) # C4 â¡œ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 (1 67 ) # C5 â¡¡ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( 345 8) # C6 ⢜ Æ [LATIN CAPITAL LETTER AE] +char \xC7 ( 2 67 ) # C7 â¡¢ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( 8) # C8 ⢀ È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 (1234567 ) # C9 â¡¿ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA ( 8) # CA ⢀ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB ( 8) # CB ⢀ Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC ( 8) # CC ⢀ ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD ( 8) # CD ⢀ à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE ( 8) # CE ⢀ ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF ( 8) # CF ⢀ à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD0 ( 8) # D0 ⢀ à [LATIN CAPITAL LETTER ETH] +char \xD1 (12 45678) # D1 ⣻ Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD2 ( 8) # D2 ⢀ Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 (1 4567 ) # D3 ⡹ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 ( 8) # D4 ⢀ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD5 ( 8) # D5 ⢀ Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 ( 2 4 67 ) # D6 ⡪ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 ( 8) # D7 ⢀ × [MULTIPLICATION SIGN] +char \xD8 ( 2 4 6 8) # D8 ⢪ Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xD9 ( 8) # D9 ⢀ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA (12 4567 ) # DA â¡» Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB ( 8) # DB ⢀ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC (12 567 ) # DC ⡳ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD (1234 67 ) # DD ⡯ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDE (12 4 6 ) # DE â « Þ [LATIN CAPITAL LETTER THORN] +char \xDF ( 8) # DF ⢀ ß [LATIN SMALL LETTER SHARP S] +char \xE0 (123 56 ) # E0 â · à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 (123 56 ) # E1 â · á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 6 ) # E2 â ¡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 ( 8) # E3 ⢀ ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 ( 345 ) # E4 â œ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 (1 6 ) # E5 â ¡ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 ( 567 ) # E6 â¡° æ [LATIN SMALL LETTER AE] +char \xE7 (1234 6 ) # E7 â ¯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 ) # E8 â ® è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (123456 ) # E9 â ¿ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (12 6 ) # EA â £ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 ) # EB â « ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC ( 34 ) # EC â Œ ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED ( 34 ) # ED â Œ í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 6 ) # EE â © î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 ) # EF â » ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF0 ( 8) # F0 ⢀ ð [LATIN SMALL LETTER ETH] +char \xF1 (12 456 ) # F1 â » ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 ( 34 6 ) # F2 â ¬ ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 ( 34 6 ) # F3 â ¬ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 456 ) # F4 â ¹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 ( 8) # F5 ⢀ õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 2 4 6 ) # F6 â ª ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 ( 8) # F7 ⢀ ÷ [DIVISION SIGN] +char \xF8 ( 3 5 8) # F8 ⢔ ø [LATIN SMALL LETTER O WITH STROKE] +char \xF9 ( 23456 ) # F9 â ¾ ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA ( 23456 ) # FA â ¾ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 56 ) # FB â ± û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 ) # FC â ³ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD (1234 6 ) # FD â ¯ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \xFE (12 4 67 ) # FE â¡« þ [LATIN SMALL LETTER THORN] +char \xFF ( 8) # FF ⢀ ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] + +include common.tti diff --git a/Tables/sv-1996.ttb b/Tables/sv-1996.ttb new file mode 100644 index 0000000000000000000000000000000000000000..45f1cd9d3455f6db7c11c872c90941da02b467be --- /dev/null +++ b/Tables/sv-1996.ttb @@ -0,0 +1,166 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Swedish (1996 standard) + +# This file contains the ISO-8859-1 compatible version of the Swedish 8-dot +# braille standard as it was defined by the Swedish Braille Authority +# (www.punktskriftsnamnden.se) on October 8, 1996. As of December 2005, this +# is the most current braille standard in Sweden. + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti + +# the numbers 0-9 are represented by the letters j,a-i with dot 8 added +include numbers-dot8.tti + +# generated by ttbtest: charset=iso-8859-1 +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 23 5 ) # 21 â – ! [EXCLAMATION MARK] +char \x22 ( 56 ) # 22 â ° " [QUOTATION MARK] +char \x23 ( 3456 ) # 23 â ¼ # [NUMBER SIGN] +char \x24 ( 23 5 8) # 24 ⢖ $ [DOLLAR SIGN] +char \x25 ( 4 678) # 25 ⣨ % [PERCENT SIGN] +char \x26 ( 34 6 8) # 26 ⢬ & [AMPERSAND] +char \x27 ( 5 ) # 27 â  ' [APOSTROPHE] +char \x28 ( 23 6 ) # 28 â ¦ ( [LEFT PARENTHESIS] +char \x29 ( 3 56 ) # 29 â ´ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 2 56 ) # 2B â ² + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 3 ) # 2E â „ . [FULL STOP] +char \x2F ( 34 ) # 2F â Œ / [SOLIDUS] +# Hindu-Arabic numerals # 30-39 +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C ( 3 5 8) # 3C ⢔ < [LESS-THAN SIGN] +char \x3D ( 23 56 ) # 3D â ¶ = [EQUALS SIGN] +char \x3E ( 2 67 ) # 3E â¡¢ > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 ( 4 8) # 40 ⢈ @ [COMMERCIAL AT] +# uppercase Latin alphabet # 41-5A +char \x5B (123 56 8) # 5B ⢷ [ [LEFT SQUARE BRACKET] +char \x5C (1 6 8) # 5C ⢡ \ [REVERSE SOLIDUS] +char \x5D ( 23456 8) # 5D ⢾ ] [RIGHT SQUARE BRACKET] +char \x5E ( 5 78) # 5E ⣠^ [CIRCUMFLEX ACCENT] +char \x5F ( 6 ) # 5F â   _ [LOW LINE] +char \x60 ( 4 6 ) # 60 â ¨ ` [GRAVE ACCENT] +# lowercase Latin alphabet # 61-7A +char \x7B ( 23 678) # 7B ⣦ { [LEFT CURLY BRACKET] +char \x7C ( 456 8) # 7C ⢸ | [VERTICAL LINE] +char \x7D ( 3 5678) # 7D ⣴ } [RIGHT CURLY BRACKET] +char \x7E ( 2 6 8) # 7E ⢢ ~ [TILDE] +char \xA0 (12345678) # A0 ⣿   [NO-BREAK SPACE] +char \xA1 ( 3 67 ) # A1 ⡤ ¡ [INVERTED EXCLAMATION MARK] +char \xA2 ( 234 6 8) # A2 ⢮ ¢ [CENT SIGN] +char \xA3 (123 8) # A3 ⢇ £ [POUND SIGN] +char \xA4 ( 2 4 78) # A4 ⣊ ¤ [CURRENCY SIGN] +char \xA5 ( 2 4 678) # A5 ⣪ Â¥ [YEN SIGN] +char \xA6 (12 678) # A6 ⣣ ¦ [BROKEN BAR] +char \xA7 ( 34 6 ) # A7 â ¬ § [SECTION SIGN] +char \xA8 ( 3 678) # A8 ⣤ ¨ [DIAERESIS] +char \xA9 (1 456 8) # A9 ⢹ © [COPYRIGHT SIGN] +char \xAA ( 2345678) # AA ⣾ ª [FEMININE ORDINAL INDICATOR] +char \xAB ( 23 78) # AB ⣆ « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC (1 345 8) # AC ⢠¬ [NOT SIGN] +char \xAD ( 23 56 8) # AD ⢶ ­ [SOFT HYPHEN] +char \xAE (12 4 6 8) # AE ⢫ ® [REGISTERED SIGN] +char \xAF (1 5 78) # AF ⣑ ¯ [MACRON] +char \xB0 (1 5678) # B0 ⣱ ° [DEGREE SIGN] +char \xB1 (1234 6 8) # B1 ⢯ ± [PLUS-MINUS SIGN] +char \xB2 ( 3 7 ) # B2 â¡„ ² [SUPERSCRIPT TWO] +char \xB3 ( 2 567 ) # B3 ⡲ ³ [SUPERSCRIPT THREE] +char \xB4 ( 2 5 8) # B4 ⢒ ´ [ACUTE ACCENT] +char \xB5 (1 34 78) # B5 ⣠µ [MICRO SIGN] +char \xB6 (12 67 ) # B6 â¡£ ¶ [PILCROW SIGN] +char \xB7 ( 8) # B7 ⢀ · [MIDDLE DOT] +char \xB8 (12 56 8) # B8 ⢳ ¸ [CEDILLA] +char \xB9 (1 4 6 8) # B9 ⢩ ¹ [SUPERSCRIPT ONE] +char \xBA (1 3 5 8) # BA ⢕ º [MASCULINE ORDINAL INDICATOR] +char \xBB ( 5678) # BB ⣰ » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBC (123 5 8) # BC ⢗ ¼ [VULGAR FRACTION ONE QUARTER] +char \xBD (1 3 6 8) # BD ⢥ ½ [VULGAR FRACTION ONE HALF] +char \xBE ( 3 5 78) # BE ⣔ ¾ [VULGAR FRACTION THREE QUARTERS] +char \xBF ( 3 8) # BF ⢄ ¿ [INVERTED QUESTION MARK] +char \xC0 (1 4 67 ) # C0 â¡© À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 (1 3 5678) # C1 ⣵ à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 ( 2 45 78) # C2 ⣚  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 (1 3 5 78) # C3 ⣕ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 ( 345 7 ) # C4 â¡œ Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 (1 67 ) # C5 â¡¡ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( 345 78) # C6 ⣜ Æ [LATIN CAPITAL LETTER AE] +char \xC7 (1234 67 ) # C7 ⡯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 (123 78) # C8 ⣇ È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 (1234567 ) # C9 â¡¿ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA ( 6 8) # CA ⢠ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB ( 2 7 ) # CB â¡‚ Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC ( 45 7 ) # CC ⡘ ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD (1 34 8) # CD ⢠à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE ( 45 8) # CE ⢘ ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF ( 67 ) # CF â¡  à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD0 ( 234 67 ) # D0 â¡® à [LATIN CAPITAL LETTER ETH] +char \xD1 (12 4567 ) # D1 â¡» Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD2 (1234 78) # D2 ⣠Ò [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 (1 78) # D3 ⣠Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 (12 45 78) # D4 ⣛ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD5 ( 234 78) # D5 ⣎ Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 ( 2 4 67 ) # D6 ⡪ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 (1 34 6 8) # D7 ⢭ × [MULTIPLICATION SIGN] +char \xD8 (1 567 ) # D8 ⡱ Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xD9 (1 45 78) # D9 ⣙ Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA (12 5 78) # DA ⣓ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB ( 2 45678) # DB ⣺ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC (12 567 ) # DC ⡳ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD (12 4 78) # DD ⣋ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDE (1234 678) # DE ⣯ Þ [LATIN CAPITAL LETTER THORN] +char \xDF (12 78) # DF ⣃ ß [LATIN SMALL LETTER SHARP S] +char \xE0 (123 56 ) # E0 â · à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 (123 5678) # E1 ⣷ á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 (1 678) # E2 ⣡ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 (1 3 678) # E3 ⣥ ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 ( 345 ) # E4 â œ ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 (1 6 ) # E5 â ¡ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 ( 345 8) # E6 ⢜ æ [LATIN SMALL LETTER AE] +char \xE7 (1234 6 ) # E7 â ¯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 234 6 ) # E8 â ® è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 (123456 ) # E9 â ¿ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA (12 6 ) # EA â £ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB (12 4 6 ) # EB â « ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC ( 34 78) # EC ⣌ ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED ( 34 8) # ED ⢌ í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (1 4 6 ) # EE â © î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF (12 456 ) # EF â » ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF0 ( 56 8) # F0 ⢰ ð [LATIN SMALL LETTER ETH] +char \xF1 (12 456 8) # F1 ⢻ ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 ( 34 678) # F2 ⣬ ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 ( 34 67 ) # F3 ⡬ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 (1 456 ) # F4 â ¹ ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 ( 234 8) # F5 ⢎ õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 ( 2 4 6 ) # F6 â ª ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 ( 2 56 8) # F7 ⢲ ÷ [DIVISION SIGN] +char \xF8 ( 45 78) # F8 ⣘ ø [LATIN SMALL LETTER O WITH STROKE] +char \xF9 ( 23456 ) # F9 â ¾ ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA ( 2 5678) # FA ⣲ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB (1 56 ) # FB â ± û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC (12 56 ) # FC â ³ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD ( 3456 8) # FD ⢼ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \xFE ( 2345 78) # FE ⣞ þ [LATIN SMALL LETTER THORN] +char \xFF (12 6 8) # FF ⢣ ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] + +include common.tti diff --git a/Tables/sv.ttb b/Tables/sv.ttb new file mode 100644 index 0000000000000000000000000000000000000000..c9047db254f251633a5e3fe22b4001d4c9853afe --- /dev/null +++ b/Tables/sv.ttb @@ -0,0 +1,21 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Swedish + +include sv-1996.ttb diff --git a/Tables/sw.ctb b/Tables/sw.ctb new file mode 100644 index 0000000000000000000000000000000000000000..be8b0032e37b4dcbd267867c6104c765a7e80488 --- /dev/null +++ b/Tables/sw.ctb @@ -0,0 +1,46 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - Swahili (contracted) +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +include letters-latin.cti + +always nd 1246 +always tw 156 +always kw 12345 +always ng' 346 +always ny 12456 +always ch 16 +always gh 126 +always gayn 126 +always sh 146 +always th 1456 +always dh 2346 +always aa 345 +always ee 26 +always ii 35 +always oo 246 +always uu 1256 +always st 34 diff --git a/Tables/sw.ttb b/Tables/sw.ttb new file mode 100644 index 0000000000000000000000000000000000000000..6206e4449936ae7441175fd1ca37da904b0894ca --- /dev/null +++ b/Tables/sw.ttb @@ -0,0 +1,31 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Swahili +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +include letters-latin.tti +include numbers-dot8.tti +include punctuation-basic.tti +include common.tti diff --git a/Tables/ta.ttb b/Tables/ta.ttb new file mode 100644 index 0000000000000000000000000000000000000000..000bc57a29104abe4eee726f896a62468c8cf54c --- /dev/null +++ b/Tables/ta.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Tamil + +include tamil.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/tamil.tti b/Tables/tamil.tti new file mode 100644 index 0000000000000000000000000000000000000000..20042ff933adb4fa47ace4e496e3c21e4220b2df --- /dev/null +++ b/Tables/tamil.tti @@ -0,0 +1,109 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable defines the braille representations +# for the Tamil script. + +# Maintained by John J. Boyer, director@chpi.org, www.chpi.org +# +# This table is built and maintained by Leon Ungier +# with help and guidance from Mohammed R. Ramadan +# +# Converted from liblouis table by Samuel Thibault + +# generated by ttbtest: + +char \u0B82 ( 56 ) # â ° ஂ [TAMIL SIGN ANUSVARA] +char \u0B83 ( 6 ) # â   ஃ [TAMIL SIGN VISARGA] +char \u0B85 (1 ) # â  à®… [TAMIL LETTER A] +char \u0B86 ( 345 ) # â œ ஆ [TAMIL LETTER AA] +char \u0B87 ( 2 4 ) # â Š இ [TAMIL LETTER I] +char \u0B88 ( 3 5 ) # â ” ஈ [TAMIL LETTER II] +char \u0B89 (1 3 6 ) # â ¥ உ [TAMIL LETTER U] +char \u0B8A (12 56 ) # â ³ ஊ [TAMIL LETTER UU] + +char \u0B8E ( 34 7 ) # â¡Œ எ [TAMIL LETTER E] +char \u0B8F (1 5 ) # â ‘ à® [TAMIL LETTER EE] +char \u0B90 ( 34 ) # â Œ à® [TAMIL LETTER AI] + +char \u0B92 ( 2 4 67 ) # ⡪ à®’ [TAMIL LETTER O] +char \u0B93 (1 3 5 ) # â • ஓ [TAMIL LETTER OO] +char \u0B94 ( 2 4 6 ) # â ª à®” [TAMIL LETTER AU] +char \u0B95 (1 3 ) # â … க [TAMIL LETTER KA] + + + +char \u0B99 ( 34 6 ) # â ¬ à®™ [TAMIL LETTER NGA] +char \u0B9A (1 4 ) # â ‰ ச [TAMIL LETTER CA] + +char \u0B9C ( 2 45 ) # â š ஜ [TAMIL LETTER JA] + +char \u0B9E ( 2 5 ) # â ’ ஞ [TAMIL LETTER NYA] +char \u0B9F ( 23456 ) # â ¾ ட [TAMIL LETTER TTA] + + + +char \u0BA3 ( 3456 ) # â ¼ ண [TAMIL LETTER NNA] +char \u0BA4 ( 2345 ) # â ž த [TAMIL LETTER TA] + + + +char \u0BA8 (1 345 ) # â  à®¨ [TAMIL LETTER NA] +char \u0BA9 ( 56 ) # â ° ன [TAMIL LETTER NNNA] +char \u0BAA (1234 ) # â  à®ª [TAMIL LETTER PA] + + + +char \u0BAE (1 34 ) # â  à®® [TAMIL LETTER MA] +char \u0BAF (1 3456 ) # â ½ ய [TAMIL LETTER YA] +char \u0BB0 (123 5 ) # â — à®° [TAMIL LETTER RA] +char \u0BB1 (123 5 7 ) # â¡— à®± [TAMIL LETTER RRA] +char \u0BB2 (123 ) # â ‡ ல [TAMIL LETTER LA] +char \u0BB3 (123 7 ) # ⡇ ள [TAMIL LETTER LLA] +char \u0BB4 (123 78) # ⣇ à®´ [TAMIL LETTER LLLA] +char \u0BB5 (123 6 ) # â § வ [TAMIL LETTER VA] +char \u0BB6 (1 4 6 ) # â © ஶ [TAMIL LETTER SHA] +char \u0BB7 (1234 6 ) # â ¯ à®· [TAMIL LETTER SSA] +char \u0BB8 ( 234 ) # â Ž ஸ [TAMIL LETTER SA] +char \u0BB9 (12 5 ) # â “ ஹ [TAMIL LETTER HA] + +char \u0BBE ( 345 ) # â œ ா [TAMIL VOWEL SIGN AA] +char \u0BBF ( 2 4 ) # â Š ி [TAMIL VOWEL SIGN I] +char \u0BC0 ( 3 5 ) # â ” ீ [TAMIL VOWEL SIGN II] +char \u0BC1 (1 3 6 ) # â ¥ ௠[TAMIL VOWEL SIGN U] +char \u0BC2 (12 56 ) # â ³ ூ [TAMIL VOWEL SIGN UU] + +char \u0BC6 ( 34 7 ) # â¡Œ ெ [TAMIL VOWEL SIGN E] +char \u0BC7 (1 5 ) # â ‘ ே [TAMIL VOWEL SIGN EE] +char \u0BC8 ( 34 ) # â Œ ை [TAMIL VOWEL SIGN AI] + +char \u0BCA ( 2 4 67 ) # ⡪ ொ [TAMIL VOWEL SIGN O] +char \u0BCB (1 3 5 ) # â • ோ [TAMIL VOWEL SIGN OO] +char \u0BCC ( 2 4 6 ) # â ª ௌ [TAMIL VOWEL SIGN AU] +char \u0BCD ( 4 ) # â ˆ ௠[TAMIL SIGN VIRAMA] + +char \u0BE6 ( 2 45 ) # â š ௦ [TAMIL DIGIT ZERO] +char \u0BE7 (1 ) # â  à¯§ [TAMIL DIGIT ONE] +char \u0BE8 (12 ) # â ƒ ௨ [TAMIL DIGIT TWO] +char \u0BE9 (1 4 ) # â ‰ ௩ [TAMIL DIGIT THREE] +char \u0BEA (1 45 ) # â ™ ௪ [TAMIL DIGIT FOUR] +char \u0BEB (1 5 ) # â ‘ ௫ [TAMIL DIGIT FIVE] +char \u0BEC (12 4 ) # â ‹ ௬ [TAMIL DIGIT SIX] +char \u0BED (12 45 ) # â › ௭ [TAMIL DIGIT SEVEN] +char \u0BEE (12 5 ) # â “ ௮ [TAMIL DIGIT EIGHT] +char \u0BEF ( 2 4 ) # â Š ௯ [TAMIL DIGIT NINE] diff --git a/Tables/te.ttb b/Tables/te.ttb new file mode 100644 index 0000000000000000000000000000000000000000..f9b9c88b92ab540a392135ac3328d9a3c9e436bf --- /dev/null +++ b/Tables/te.ttb @@ -0,0 +1,24 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Telugu + +include telugu.tti +include ascii-basic.tti + +include common.tti diff --git a/Tables/telugu.tti b/Tables/telugu.tti new file mode 100644 index 0000000000000000000000000000000000000000..aaa60effa3bf97f525c9d280bdb209a02cd3368e --- /dev/null +++ b/Tables/telugu.tti @@ -0,0 +1,109 @@ +############################################################################### +# 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) 2008-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# This BRLTTY text subtable defines the braille representations +# for the Telugu script. + +# Maintained by John J. Boyer, director@chpi.org, www.chpi.org +# +# This table is built and maintained by Leon Ungier +# with help and guidance from Mohammed R. Ramadan +# +# Converted from liblouis table by Samuel Thibault + +# generated by ttbtest: +char \u0C01 ( 3 ) # â „ à° [TELUGU SIGN CANDRABINDU] +char \u0C02 ( 56 ) # â ° à°‚ [TELUGU SIGN ANUSVARA] +char \u0C03 ( 6 ) # â   à°ƒ [TELUGU SIGN VISARGA] +char \u0C05 (1 ) # â  à°… [TELUGU LETTER A] +char \u0C06 ( 345 ) # â œ à°† [TELUGU LETTER AA] +char \u0C07 ( 2 4 ) # â Š à°‡ [TELUGU LETTER I] +char \u0C08 ( 3 5 ) # â ” à°ˆ [TELUGU LETTER II] +char \u0C09 (1 3 6 ) # â ¥ à°‰ [TELUGU LETTER U] +char \u0C0A (12 56 ) # â ³ à°Š [TELUGU LETTER UU] + +char \u0C0E ( 34 7 ) # â¡Œ à°Ž [TELUGU LETTER E] +char \u0C0F (1 5 ) # â ‘ à° [TELUGU LETTER EE] +char \u0C10 ( 34 ) # â Œ à° [TELUGU LETTER AI] + +char \u0C12 ( 2 4 67 ) # ⡪ à°’ [TELUGU LETTER O] +char \u0C13 (1 3 5 ) # â • à°“ [TELUGU LETTER OO] +char \u0C14 ( 2 4 6 ) # â ª à°” [TELUGU LETTER AU] +char \u0C15 (1 3 ) # â … à°• [TELUGU LETTER KA] +char \u0C16 ( 4 6 ) # â ¨ à°– [TELUGU LETTER KHA] +char \u0C17 (1234 ) # â  à°— [TELUGU LETTER GA] +char \u0C18 (12 6 ) # â £ à°˜ [TELUGU LETTER GHA] +char \u0C19 ( 34 6 ) # â ¬ à°™ [TELUGU LETTER NGA] +char \u0C1A (1 4 ) # â ‰ à°š [TELUGU LETTER CA] +char \u0C1B (1 6 ) # â ¡ à°› [TELUGU LETTER CHA] +char \u0C1C ( 2 45 ) # â š à°œ [TELUGU LETTER JA] +char \u0C1D ( 3 56 ) # â ´ à° [TELUGU LETTER JHA] +char \u0C1E ( 2 5 ) # â ’ à°ž [TELUGU LETTER NYA] +char \u0C1F ( 23456 ) # â ¾ à°Ÿ [TELUGU LETTER TTA] +char \u0C20 ( 2 456 ) # â º à°  [TELUGU LETTER TTHA] +char \u0C21 (12 4 6 ) # â « à°¡ [TELUGU LETTER DDA] +char \u0C22 (123456 ) # â ¿ à°¢ [TELUGU LETTER DDHA] +char \u0C23 ( 3456 ) # â ¼ à°£ [TELUGU LETTER NNA] +char \u0C24 ( 2345 ) # â ž à°¤ [TELUGU LETTER TA] +char \u0C25 (1 456 ) # â ¹ à°¥ [TELUGU LETTER THA] +char \u0C26 (1 45 ) # â ™ à°¦ [TELUGU LETTER DA] +char \u0C27 ( 234 6 ) # â ® à°§ [TELUGU LETTER DHA] +char \u0C28 (1 345 ) # â  à°¨ [TELUGU LETTER NA] + +char \u0C2A (1234 ) # â  à°ª [TELUGU LETTER PA] +char \u0C2B ( 23 5 ) # â – à°« [TELUGU LETTER PHA] +char \u0C2C (12 ) # â ƒ à°¬ [TELUGU LETTER BA] +char \u0C2D ( 45 ) # â ˜ à°­ [TELUGU LETTER BHA] +char \u0C2E (1 34 ) # â  à°® [TELUGU LETTER MA] +char \u0C2F (1 3456 ) # â ½ à°¯ [TELUGU LETTER YA] +char \u0C30 (123 5 ) # â — à°° [TELUGU LETTER RA] +char \u0C31 (123 5 7 ) # â¡— à°± [TELUGU LETTER RRA] +char \u0C32 (123 ) # â ‡ à°² [TELUGU LETTER LA] +char \u0C33 (123 7 ) # ⡇ à°³ [TELUGU LETTER LLA] + +char \u0C35 (123 6 ) # â § à°µ [TELUGU LETTER VA] +char \u0C36 (1 4 6 ) # â © à°¶ [TELUGU LETTER SHA] +char \u0C37 (1234 6 ) # â ¯ à°· [TELUGU LETTER SSA] +char \u0C38 ( 234 ) # â Ž à°¸ [TELUGU LETTER SA] +char \u0C39 (12 5 ) # â “ à°¹ [TELUGU LETTER HA] + +char \u0C3E ( 345 ) # â œ à°¾ [TELUGU VOWEL SIGN AA] +char \u0C3F ( 2 4 ) # â Š à°¿ [TELUGU VOWEL SIGN I] +char \u0C40 ( 3 5 ) # â ” à±€ [TELUGU VOWEL SIGN II] +char \u0C41 (1 3 6 ) # â ¥ à± [TELUGU VOWEL SIGN U] +char \u0C42 (12 56 ) # â ³ ూ [TELUGU VOWEL SIGN UU] + +char \u0C46 ( 34 7 ) # â¡Œ ె [TELUGU VOWEL SIGN E] +char \u0C47 (1 5 ) # â ‘ ే [TELUGU VOWEL SIGN EE] +char \u0C48 ( 34 ) # â Œ ై [TELUGU VOWEL SIGN AI] + +char \u0C4A ( 2 4 67 ) # ⡪ ొ [TELUGU VOWEL SIGN O] +char \u0C4B (1 3 5 ) # â • ో [TELUGU VOWEL SIGN OO] +char \u0C4C ( 2 4 6 ) # â ª ౌ [TELUGU VOWEL SIGN AU] +char \u0C4D ( 4 ) # â ˆ à± [TELUGU SIGN VIRAMA] + +char \u0C66 ( 2 45 ) # â š ౦ [TELUGU DIGIT ZERO] +char \u0C67 (1 ) # â  à±§ [TELUGU DIGIT ONE] +char \u0C68 (12 ) # â ƒ ౨ [TELUGU DIGIT TWO] +char \u0C69 (1 4 ) # â ‰ ౩ [TELUGU DIGIT THREE] +char \u0C6A (1 45 ) # â ™ ౪ [TELUGU DIGIT FOUR] +char \u0C6B (1 5 ) # â ‘ ౫ [TELUGU DIGIT FIVE] +char \u0C6C (12 4 ) # â ‹ ౬ [TELUGU DIGIT SIX] +char \u0C6D (12 45 ) # â › à±­ [TELUGU DIGIT SEVEN] +char \u0C6E (12 5 ) # â “ à±® [TELUGU DIGIT EIGHT] +char \u0C6F ( 2 4 ) # â Š ౯ [TELUGU DIGIT NINE] diff --git a/Tables/th.ctb b/Tables/th.ctb new file mode 100644 index 0000000000000000000000000000000000000000..266f204cac22851f322ec85b61ae759ac76a2d32 --- /dev/null +++ b/Tables/th.ctb @@ -0,0 +1,118 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - Thai (contracted) +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +# consonants +always ภ1245 THAI CHARACTER KO KAI +always ข 346 THAI CHARACTER KHO KHAI +always ฃ 2346 THAI CHARACTER KHO KHUAT +always ค 136 THAI CHARACTER KHO KHWAI +always ฅ 6-136 THAI CHARACTER KHO KHON +always ฆ 36-136 THAI CHARACTER KHO RAKHANG +always ง 12456 THAI CHARACTER NGO NGU +always จ 245 THAI CHARACTER CHO CHAN +always ฉ 34 THAI CHARACTER CHO CHING +always ช 13 THAI CHARACTER CHO CHANG +always ซ 36-13 THAI CHARACTER SO SO +always ฌ 6-346 THAI CHARACTER CHO CHOE +always ภ6-13456 THAI CHARACTER YO YING +always ฎ 6-145 THAI CHARACTER DO CHADA +always ภ6-1256 THAI CHARACTER TO PATAK +always ภ6-2345 THAI CHARACTER THO THAN +always ฑ 6-23456 THAI CHARACTER THO NANGMONTHO +always ฒ 56-23456 THAI CHARACTER THO PHUTHAO +always ณ 6-1345 THAI CHARACTER NO NEN +always ด 145 THAI CHARACTER DO DEK +always ต 1256 THAI CHARACTER TO TAO +always ถ 2345 THAI CHARACTER THO THUNG +always ท 23456 THAI CHARACTER THO THAHAN +always ธ 356-23456 THAI CHARACTER THO THONG +always น 1345 THAI CHARACTER NO NU +always บ 1236 THAI CHARACTER BO BAIMAI +always ป 12346 THAI CHARACTER PO PLA +always ผ 1234 THAI CHARACTER PHO PHUNG +always ภ1346 THAI CHARACTER FO FA +always พ 1456 THAI CHARACTER PHO PHAN +always ฟ 1246 THAI CHARACTER FO FAN +always ภ 6-1456 THAI CHARACTER PHO SAMPHAO +always ม 134 THAI CHARACTER MO MA +always ย 13456 THAI CHARACTER YO YAK +always ร 1235 THAI CHARACTER RO RUA +always ล 123 THAI CHARACTER LO LING +always ว 2456 THAI CHARACTER WO WAEN +always ศ 6-234 THAI CHARACTER SO SALA +always ษ 36-234 THAI CHARACTER SO RUSI +always ส 234 THAI CHARACTER SO SUA +always ห 125 THAI CHARACTER HO HIP +always ฬ 36-123 THAI CHARACTER LO CHULA +always อ 135 THAI CHARACTER O ANG +always ฮ 123456 THAI CHARACTER HO NOKHUK + +# vowels +always ะ 1 THAI CHARACTER SARA A +always า 16 THAI CHARACTER SARA AA +always ำ 1356 THAI CHARACTER SARA AM +always ิ 12 THAI CHARACTER SARA I +always ี 23 THAI CHARACTER SARA II +always ึ 246 THAI CHARACTER SARA UE +always ื 26 THAI CHARACTER SARA UEE +always ุ 14 THAI CHARACTER SARA U +always ู 25 THAI CHARACTER SARA UU +always เ 124 THAI CHARACTER SARA E +always ๠126 THAI CHARACTER SARA AE +always โ 24 THAI CHARACTER SARA O +always ใ 156-1 THAI CHARACTER SARA AI MAIMUAN +always ไ 156 THAI CHARACTER SARA AI MAIMALAI + +# contractions +always เๅะ 135-1 +always ออ 135 +always วั 15 +always เีย 12356 +always เี่อ 12345 +always เออ 146 +always เา 235 + +# accents etc +always ๆ 2 THAI CHARACTER MAIYAMOK +always ็ 6 THAI CHARACTER MAITAIKHU +always ่ 35 THAI CHARACTER MAI EK +always ้ 256 THAI CHARACTER MAI THO +always ๊ 2356 THAI CHARACTER MAI TRI +always ๋ 236 THAI CHARACTER MAI CHATTAWA +always ์ 356 THAI CHARACTER THANTHAKHAT + +# digits +always ๠2458 THAI DIGIT ZERO +always ๑ 18 THAI DIGIT ONE +always ๒ 128 THAI DIGIT TWO +always ๓ 148 THAI DIGIT THREE +always ๔ 1458 THAI DIGIT FOUR +always ๕ 158 THAI DIGIT FIVE +always ๖ 1248 THAI DIGIT SIX +always ๗ 12458 THAI DIGIT SEVEN +always ๘ 1258 THAI DIGIT EIGHT +always ๙ 248 THAI DIGIT NINE diff --git a/Tables/tr.ttb b/Tables/tr.ttb new file mode 100644 index 0000000000000000000000000000000000000000..14d1184ee3f1041ab0d85d1a853b2d5500017159 --- /dev/null +++ b/Tables/tr.ttb @@ -0,0 +1,61 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Turkish +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +# the standard representations for the letters of the Latin alphabet +include letters-latin.tti +char \u0131 ( 3 5 ) # â ” ı [LATIN SMALL LETTER DOTLESS I] +char \x49 ( 3 5 7 ) # â¡” I [LATIN CAPITAL LETTER I] +char \x69 ( 2 4 ) # â Š i [LATIN SMALL LETTER I] +char \u0130 ( 2 4 7 ) # â¡Š Ä° [LATIN CAPITAL LETTER I WITH DOT ABOVE] + +# lowercase accented letters +char \xE7 (1 6 ) # â ¡ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \u011F (12 6 ) # â £ ÄŸ [LATIN SMALL LETTER G WITH BREVE] +char \xF6 ( 2 4 6 ) # â ª ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \u015F (1 4 6 ) # â © ÅŸ [LATIN SMALL LETTER S WITH CEDILLA] +char \xFC (12 56 ) # â ³ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xE2 ( 345 ) # â œ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xEE ( 34 ) # â Œ î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xFB (1 56 ) # â ± û [LATIN SMALL LETTER U WITH CIRCUMFLEX] + +# uppercase accented letters +char \xC7 (1 67 ) # â¡¡ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \u011E (12 67 ) # â¡£ Äž [LATIN CAPITAL LETTER G WITH BREVE] +char \xD6 ( 2 4 67 ) # ⡪ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \u015E (1 4 67 ) # â¡© Åž [LATIN CAPITAL LETTER S WITH CEDILLA] +char \xDC (12 567 ) # ⡳ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xC2 ( 345 7 ) # â¡œ  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xCE ( 34 7 ) # â¡Œ ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xDB (1 567 ) # ⡱ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] + +# the numbers 0-9 are represented by the letters j,a-i with dot 8 added +include numbers-dot8.tti + +include punctuation-basic.tti +char \x3F ( 2 6 ) # â ¢ ? [QUESTION MARK] + +include common.tti diff --git a/Tables/vi.ttb b/Tables/vi.ttb new file mode 100644 index 0000000000000000000000000000000000000000..4a22e2347676ac0a042b2800e0b3a30b62af74df --- /dev/null +++ b/Tables/vi.ttb @@ -0,0 +1,257 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Text Table - Vietnamese + +# the standard representations for the Latin control characters +include control-latin.tti + +# generated by ttbtest: charset=iso-8859-1 +char \x00 ( 4 78) # 00 ⣈ [NULL] +# Latin control characters # 01-1A +char \x1B ( 2 4 678) # 1B ⣪ [ESCAPE] +char \x1C (12 5678) # 1C ⣳ [INFORMATION SEPARATOR FOUR] +char \x1D (12 45678) # 1D ⣻ [INFORMATION SEPARATOR THREE] +char \x1E ( 45 78) # 1E ⣘ [INFORMATION SEPARATOR TWO] +char \x1F ( 45678) # 1F ⣸ [INFORMATION SEPARATOR ONE] +char \x20 ( ) # 20 â € [SPACE] +char \x21 ( 23 5 ) # 21 â – ! [EXCLAMATION MARK] +char \x22 ( 678) # 22 ⣠ " [QUOTATION MARK] +char \x23 ( 3456 ) # 23 â ¼ # [NUMBER SIGN] +char \x24 ( 345 ) # 24 â œ $ [DOLLAR SIGN] +char \x25 ( 2 4 6 ) # 25 â ª % [PERCENT SIGN] +char \x26 ( 34 6 8) # 26 ⢬ & [AMPERSAND] +char \x27 ( 3 ) # 27 â „ ' [APOSTROPHE] +char \x28 (123 567 ) # 28 â¡· ( [LEFT PARENTHESIS] +char \x29 ( 234567 ) # 29 ⡾ ) [RIGHT PARENTHESIS] +char \x2A ( 3 5 ) # 2A â ” * [ASTERISK] +char \x2B ( 34 6 ) # 2B â ¬ + [PLUS SIGN] +char \x2C ( 2 ) # 2C â ‚ , [COMMA] +char \x2D ( 3 6 ) # 2D â ¤ - [HYPHEN-MINUS] +char \x2E ( 2 56 ) # 2E â ² . [FULL STOP] +char \x2F ( 34 ) # 2F â Œ / [SOLIDUS] +char \x30 ( 3 56 8) # 30 ⢴ 0 [DIGIT ZERO] +char \x31 ( 2 8) # 31 ⢂ 1 [DIGIT ONE] +char \x32 ( 23 8) # 32 ⢆ 2 [DIGIT TWO] +char \x33 ( 2 5 8) # 33 ⢒ 3 [DIGIT THREE] +char \x34 ( 2 56 8) # 34 ⢲ 4 [DIGIT FOUR] +char \x35 ( 2 6 8) # 35 ⢢ 5 [DIGIT FIVE] +char \x36 ( 23 5 8) # 36 ⢖ 6 [DIGIT SIX] +char \x37 ( 23 56 8) # 37 ⢶ 7 [DIGIT SEVEN] +char \x38 ( 23 6 8) # 38 ⢦ 8 [DIGIT EIGHT] +char \x39 ( 3 5 8) # 39 ⢔ 9 [DIGIT NINE] +char \x3A ( 2 5 ) # 3A â ’ : [COLON] +char \x3B ( 23 ) # 3B â † ; [SEMICOLON] +char \x3C ( 23 6 ) # 3C â ¦ < [LESS-THAN SIGN] +char \x3D ( 23 56 ) # 3D â ¶ = [EQUALS SIGN] +char \x3E ( 3 56 ) # 3E â ´ > [GREATER-THAN SIGN] +char \x3F ( 2 6 ) # 3F â ¢ ? [QUESTION MARK] +char \x40 ( 4 7 ) # 40 ⡈ @ [COMMERCIAL AT] +char \x41 (1 7 ) # 41 â¡ A [LATIN CAPITAL LETTER A] +char \x42 (12 7 ) # 42 ⡃ B [LATIN CAPITAL LETTER B] +char \x43 (1 4 7 ) # 43 ⡉ C [LATIN CAPITAL LETTER C] +char \x44 (1 3 567 ) # 44 ⡵ D [LATIN CAPITAL LETTER D] +char \x45 (1 5 7 ) # 45 â¡‘ E [LATIN CAPITAL LETTER E] +char \x46 (12 4 7 ) # 46 â¡‹ F [LATIN CAPITAL LETTER F] +char \x47 (12 45 7 ) # 47 â¡› G [LATIN CAPITAL LETTER G] +char \x48 (12 5 7 ) # 48 â¡“ H [LATIN CAPITAL LETTER H] +char \x49 ( 2 4 7 ) # 49 â¡Š I [LATIN CAPITAL LETTER I] +char \x4A ( 2 45 7 ) # 4A â¡š J [LATIN CAPITAL LETTER J] +char \x4B (1 3 7 ) # 4B â¡… K [LATIN CAPITAL LETTER K] +char \x4C (123 7 ) # 4C ⡇ L [LATIN CAPITAL LETTER L] +char \x4D (1 34 7 ) # 4D â¡ M [LATIN CAPITAL LETTER M] +char \x4E (1 345 7 ) # 4E â¡ N [LATIN CAPITAL LETTER N] +char \x4F (1 3 5 7 ) # 4F â¡• O [LATIN CAPITAL LETTER O] +char \x50 (1234 7 ) # 50 â¡ P [LATIN CAPITAL LETTER P] +char \x51 (12345 7 ) # 51 â¡Ÿ Q [LATIN CAPITAL LETTER Q] +char \x52 (123 5 7 ) # 52 â¡— R [LATIN CAPITAL LETTER R] +char \x53 ( 234 7 ) # 53 â¡Ž S [LATIN CAPITAL LETTER S] +char \x54 ( 2345 7 ) # 54 â¡ž T [LATIN CAPITAL LETTER T] +char \x55 (1 3 67 ) # 55 â¡¥ U [LATIN CAPITAL LETTER U] +char \x56 (123 67 ) # 56 ⡧ V [LATIN CAPITAL LETTER V] +char \x57 ( 2 4567 ) # 57 ⡺ W [LATIN CAPITAL LETTER W] +char \x58 (1 34 67 ) # 58 â¡­ X [LATIN CAPITAL LETTER X] +char \x59 (1 34567 ) # 59 ⡽ Y [LATIN CAPITAL LETTER Y] +char \x5A (1 3 567 ) # 5A ⡵ Z [LATIN CAPITAL LETTER Z] +char \x5B (123 56 8) # 5B ⢷ [ [LEFT SQUARE BRACKET] +char \x5C (1 6 8) # 5C ⢡ \ [REVERSE SOLIDUS] +char \x5D ( 23456 8) # 5D ⢾ ] [RIGHT SQUARE BRACKET] +char \x5E ( 45 7 ) # 5E ⡘ ^ [CIRCUMFLEX ACCENT] +char \x5F ( 4567 ) # 5F ⡸ _ [LOW LINE] +char \x60 ( 4 ) # 60 â ˆ ` [GRAVE ACCENT] +char \x61 (1 ) # 61 â  a [LATIN SMALL LETTER A] +char \x62 (12 ) # 62 â ƒ b [LATIN SMALL LETTER B] +char \x63 (1 4 ) # 63 â ‰ c [LATIN SMALL LETTER C] +char \x64 (1 3 56 ) # 64 â µ d [LATIN SMALL LETTER D] +char \x65 (1 5 ) # 65 â ‘ e [LATIN SMALL LETTER E] +char \x66 (12 4 ) # 66 â ‹ f [LATIN SMALL LETTER F] +char \x67 (12 45 ) # 67 â › g [LATIN SMALL LETTER G] +char \x68 (12 5 ) # 68 â “ h [LATIN SMALL LETTER H] +char \x69 ( 2 4 ) # 69 â Š i [LATIN SMALL LETTER I] +char \x6A ( 2 45 ) # 6A â š j [LATIN SMALL LETTER J] +char \x6B (1 3 ) # 6B â … k [LATIN SMALL LETTER K] +char \x6C (123 ) # 6C â ‡ l [LATIN SMALL LETTER L] +char \x6D (1 34 ) # 6D â  m [LATIN SMALL LETTER M] +char \x6E (1 345 ) # 6E â  n [LATIN SMALL LETTER N] +char \x6F (1 3 5 ) # 6F â • o [LATIN SMALL LETTER O] +char \x70 (1234 ) # 70 â  p [LATIN SMALL LETTER P] +char \x71 (12345 ) # 71 â Ÿ q [LATIN SMALL LETTER Q] +char \x72 (123 5 ) # 72 â — r [LATIN SMALL LETTER R] +char \x73 ( 234 ) # 73 â Ž s [LATIN SMALL LETTER S] +char \x74 ( 2345 ) # 74 â ž t [LATIN SMALL LETTER T] +char \x75 (1 3 6 ) # 75 â ¥ u [LATIN SMALL LETTER U] +char \x76 (123 6 ) # 76 â § v [LATIN SMALL LETTER V] +char \x77 ( 2 456 ) # 77 â º w [LATIN SMALL LETTER W] +char \x78 (1 34 6 ) # 78 â ­ x [LATIN SMALL LETTER X] +char \x79 (1 3456 ) # 79 â ½ y [LATIN SMALL LETTER Y] +char \x7A (1 3 56 ) # 7A â µ z [LATIN SMALL LETTER Z] +char \x7B (123 5678) # 7B ⣷ { [LEFT CURLY BRACKET] +char \x7C ( 456 8) # 7C ⢸ | [VERTICAL LINE] +char \x7D ( 2345678) # 7D ⣾ } [RIGHT CURLY BRACKET] +char \x7E ( 45 ) # 7E â ˜ ~ [TILDE] +char \x7F ( 456 ) # 7F â ¸ [DELETE] +char \x80 ( 4 8) # 80 ⢈ [] +char \x81 (1 8) # 81 ⢠[] +char \x82 (12 8) # 82 ⢃ [BREAK PERMITTED HERE] +char \x83 (1 4 8) # 83 ⢉ [NO BREAK HERE] +char \x84 (1 45 8) # 84 ⢙ [] +char \x85 (1 5 8) # 85 ⢑ [NEXT LINE (NEL)] +char \x86 (12 4 8) # 86 ⢋ [START OF SELECTED AREA] +char \x87 (12 45 8) # 87 ⢛ [END OF SELECTED AREA] +char \x88 (12 5 8) # 88 ⢓ [CHARACTER TABULATION SET] +char \x89 ( 2 4 8) # 89 ⢊ [CHARACTER TABULATION WITH JUSTIFICATION] +char \x8A ( 2 45 8) # 8A ⢚ [LINE TABULATION SET] +char \x8B (1 3 8) # 8B ⢅ [PARTIAL LINE FORWARD] +char \x8C (123 8) # 8C ⢇ [PARTIAL LINE BACKWARD] +char \x8D (1 34 8) # 8D ⢠[REVERSE LINE FEED] +char \x8E (1 345 8) # 8E ⢠[SINGLE SHIFT TWO] +char \x8F (1 3 5 8) # 8F ⢕ [SINGLE SHIFT THREE] +char \x90 (1234 8) # 90 ⢠[DEVICE CONTROL STRING] +char \x91 (12345 8) # 91 ⢟ [PRIVATE USE ONE] +char \x92 (123 5 8) # 92 ⢗ [PRIVATE USE TWO] +char \x93 ( 234 8) # 93 ⢎ [SET TRANSMIT STATE] +char \x94 ( 2345 8) # 94 ⢞ [CANCEL CHARACTER] +char \x95 (1 3 6 8) # 95 ⢥ [MESSAGE WAITING] +char \x96 (123 6 8) # 96 ⢧ [START OF GUARDED AREA] +char \x97 ( 2 456 8) # 97 ⢺ [END OF GUARDED AREA] +char \x98 (1 34 6 8) # 98 ⢭ [START OF STRING] +char \x99 (1 3456 8) # 99 ⢽ [] +char \x9A (1 3 56 8) # 9A ⢵ [SINGLE CHARACTER INTRODUCER] +char \x9B ( 2 4 6 8) # 9B ⢪ [CONTROL SEQUENCE INTRODUCER] +char \x9C (12 56 8) # 9C ⢳ [STRING TERMINATOR] +char \x9D (12 456 8) # 9D ⢻ [OPERATING SYSTEM COMMAND] +char \x9E ( 45 8) # 9E ⢘ [PRIVACY MESSAGE] +char \x9F ( 456 8) # 9F ⢸ [APPLICATION PROGRAM COMMAND] +char \xA0 ( ) # A0 â €   [NO-BREAK SPACE] +char \xA1 (12345678) # A1 ⣿ ¡ [INVERTED EXCLAMATION MARK] +char \xA2 (12345678) # A2 ⣿ ¢ [CENT SIGN] +char \xA3 (12345678) # A3 ⣿ £ [POUND SIGN] +char \xA4 (12345678) # A4 ⣿ ¤ [CURRENCY SIGN] +char \xA5 (12345678) # A5 ⣿ Â¥ [YEN SIGN] +char \xA6 (12345678) # A6 ⣿ ¦ [BROKEN BAR] +char \xA7 (12345678) # A7 ⣿ § [SECTION SIGN] +char \xA8 (12345678) # A8 ⣿ ¨ [DIAERESIS] +char \xA9 (1 4 7 ) # A9 ⡉ © [COPYRIGHT SIGN] +char \xAA (12345678) # AA ⣿ ª [FEMININE ORDINAL INDICATOR] +char \xAB ( 23 67 ) # AB ⡦ « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xAC (12345678) # AC ⣿ ¬ [NOT SIGN] +char \xAD (12345678) # AD ⣿ ­ [SOFT HYPHEN] +char \xAE (1234 7 ) # AE ⡠® [REGISTERED SIGN] +char \xAF (12345678) # AF ⣿ ¯ [MACRON] +char \xB0 (12345678) # B0 ⣿ ° [DEGREE SIGN] +char \xB1 (12345678) # B1 ⣿ ± [PLUS-MINUS SIGN] +char \xB2 (12345678) # B2 ⣿ ² [SUPERSCRIPT TWO] +char \xB3 (12345678) # B3 ⣿ ³ [SUPERSCRIPT THREE] +char \xB4 (12345678) # B4 ⣿ ´ [ACUTE ACCENT] +char \xB5 (12345678) # B5 ⣿ µ [MICRO SIGN] +char \xB6 (12345678) # B6 ⣿ ¶ [PILCROW SIGN] +char \xB7 ( 3 5 ) # B7 â ” · [MIDDLE DOT] +char \xB8 (12345678) # B8 ⣿ ¸ [CEDILLA] +char \xB9 (12345678) # B9 ⣿ ¹ [SUPERSCRIPT ONE] +char \xBA (12345678) # BA ⣿ º [MASCULINE ORDINAL INDICATOR] +char \xBB ( 3 567 ) # BB â¡´ » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] +char \xBC (12345678) # BC ⣿ ¼ [VULGAR FRACTION ONE QUARTER] +char \xBD (12345678) # BD ⣿ ½ [VULGAR FRACTION ONE HALF] +char \xBE (12345678) # BE ⣿ ¾ [VULGAR FRACTION THREE QUARTERS] +char \xBF (12345678) # BF ⣿ ¿ [INVERTED QUESTION MARK] +char \xC0 ( 567 ) # C0 â¡° À [LATIN CAPITAL LETTER A WITH GRAVE] +char \xC1 ( 3 5 7 ) # C1 â¡” à [LATIN CAPITAL LETTER A WITH ACUTE] +char \xC2 ( 7 ) # C2 â¡€  [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] +char \xC3 ( 3 67 ) # C3 ⡤ à [LATIN CAPITAL LETTER A WITH TILDE] +char \xC4 ( 67 ) # C4 â¡  Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] +char \xC5 ( 2 67 ) # C5 â¡¢ Ã… [LATIN CAPITAL LETTER A WITH RING ABOVE] +char \xC6 ( 2 67 ) # C6 â¡¢ Æ [LATIN CAPITAL LETTER AE] +char \xC7 (1234 67 ) # C7 ⡯ Ç [LATIN CAPITAL LETTER C WITH CEDILLA] +char \xC8 ( 56 8) # C8 ⢰ È [LATIN CAPITAL LETTER E WITH GRAVE] +char \xC9 ( 3 5 8) # C9 ⢔ É [LATIN CAPITAL LETTER E WITH ACUTE] +char \xCA ( 8) # CA ⢀ Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] +char \xCB ( 6 8) # CB ⢠ Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] +char \xCC ( 567 ) # CC â¡° ÃŒ [LATIN CAPITAL LETTER I WITH GRAVE] +char \xCD ( 3 5 7 ) # CD â¡” à [LATIN CAPITAL LETTER I WITH ACUTE] +char \xCE (1234567 ) # CE â¡¿ ÃŽ [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] +char \xCF ( 6 ) # CF â   à [LATIN CAPITAL LETTER I WITH DIAERESIS] +char \xD0 (12345678) # D0 ⣿ à [LATIN CAPITAL LETTER ETH] +char \xD1 (1 45 7 ) # D1 â¡™ Ñ [LATIN CAPITAL LETTER N WITH TILDE] +char \xD2 ( 67 ) # D2 â¡  Ã’ [LATIN CAPITAL LETTER O WITH GRAVE] +char \xD3 ( 3 67 ) # D3 ⡤ Ó [LATIN CAPITAL LETTER O WITH ACUTE] +char \xD4 ( 2 4 67 ) # D4 ⡪ Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] +char \xD5 ( 3 6 ) # D5 â ¤ Õ [LATIN CAPITAL LETTER O WITH TILDE] +char \xD6 (12 567 ) # D6 ⡳ Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] +char \xD7 ( 3 5 ) # D7 â ” × [MULTIPLICATION SIGN] +char \xD8 ( 56 ) # D8 â ° Ø [LATIN CAPITAL LETTER O WITH STROKE] +char \xD9 ( 3 5 ) # D9 â ” Ù [LATIN CAPITAL LETTER U WITH GRAVE] +char \xDA ( 2 6 8) # DA ⢢ Ú [LATIN CAPITAL LETTER U WITH ACUTE] +char \xDB ( 2 6 ) # DB â ¢ Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] +char \xDC ( 3 6 8) # DC ⢤ Ãœ [LATIN CAPITAL LETTER U WITH DIAERESIS] +char \xDD (1 34567 ) # DD ⡽ à [LATIN CAPITAL LETTER Y WITH ACUTE] +char \xDE (12345678) # DE ⣿ Þ [LATIN CAPITAL LETTER THORN] +char \xDF ( 234 ) # DF â Ž ß [LATIN SMALL LETTER SHARP S] +char \xE0 ( 567 ) # E0 â¡° à [LATIN SMALL LETTER A WITH GRAVE] +char \xE1 ( 3 5 7 ) # E1 â¡” á [LATIN SMALL LETTER A WITH ACUTE] +char \xE2 ( 7 ) # E2 â¡€ â [LATIN SMALL LETTER A WITH CIRCUMFLEX] +char \xE3 ( 3 67 ) # E3 ⡤ ã [LATIN SMALL LETTER A WITH TILDE] +char \xE4 ( 67 ) # E4 â¡  ä [LATIN SMALL LETTER A WITH DIAERESIS] +char \xE5 ( 2 67 ) # E5 â¡¢ Ã¥ [LATIN SMALL LETTER A WITH RING ABOVE] +char \xE6 ( 2 6 ) # E6 â ¢ æ [LATIN SMALL LETTER AE] +char \xE7 (1234 6 ) # E7 â ¯ ç [LATIN SMALL LETTER C WITH CEDILLA] +char \xE8 ( 56 8) # E8 ⢰ è [LATIN SMALL LETTER E WITH GRAVE] +char \xE9 ( 3 5 8) # E9 ⢔ é [LATIN SMALL LETTER E WITH ACUTE] +char \xEA ( 8) # EA ⢀ ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] +char \xEB ( 6 8) # EB ⢠ ë [LATIN SMALL LETTER E WITH DIAERESIS] +char \xEC ( 56 ) # EC â ° ì [LATIN SMALL LETTER I WITH GRAVE] +char \xED ( 3 5 ) # ED â ” í [LATIN SMALL LETTER I WITH ACUTE] +char \xEE (123456 ) # EE â ¿ î [LATIN SMALL LETTER I WITH CIRCUMFLEX] +char \xEF ( 6 ) # EF â   ï [LATIN SMALL LETTER I WITH DIAERESIS] +char \xF0 (12345678) # F0 ⣿ ð [LATIN SMALL LETTER ETH] +char \xF1 (1 45 ) # F1 â ™ ñ [LATIN SMALL LETTER N WITH TILDE] +char \xF2 ( 6 ) # F2 â   ò [LATIN SMALL LETTER O WITH GRAVE] +char \xF3 ( 3 6 ) # F3 â ¤ ó [LATIN SMALL LETTER O WITH ACUTE] +char \xF4 ( 2 4 6 ) # F4 â ª ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] +char \xF5 ( 3 6 ) # F5 â ¤ õ [LATIN SMALL LETTER O WITH TILDE] +char \xF6 (12 56 ) # F6 â ³ ö [LATIN SMALL LETTER O WITH DIAERESIS] +char \xF7 ( 34 ) # F7 â Œ ÷ [DIVISION SIGN] +char \xF8 ( 56 ) # F8 â ° ø [LATIN SMALL LETTER O WITH STROKE] +char \xF9 ( 3 5 ) # F9 â ” ù [LATIN SMALL LETTER U WITH GRAVE] +char \xFA ( 2 6 8) # FA ⢢ ú [LATIN SMALL LETTER U WITH ACUTE] +char \xFB ( 2 6 ) # FB â ¢ û [LATIN SMALL LETTER U WITH CIRCUMFLEX] +char \xFC ( 3 6 8) # FC ⢤ ü [LATIN SMALL LETTER U WITH DIAERESIS] +char \xFD (1 3456 ) # FD â ½ ý [LATIN SMALL LETTER Y WITH ACUTE] +char \xFE (12345678) # FE ⣿ þ [LATIN SMALL LETTER THORN] +char \xFF (1 3456 ) # FF â ½ ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] + +include common.tti diff --git a/ContractionTables/zh-tw-polyphone.cti b/Tables/zh-tw-polyphone.cti similarity index 97% rename from ContractionTables/zh-tw-polyphone.cti rename to Tables/zh-tw-polyphone.cti index 9e175554b35d1899b5dab344af24a4c25b0f6b24..ef787f7bbd72c81fa0bdd28d4a8ea0aedee7cbda 100644 --- a/ContractionTables/zh-tw-polyphone.cti +++ b/Tables/zh-tw-polyphone.cti @@ -1,6 +1,50 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + # Special Chinese dictions # This is included by zh-tw.ctb +always \u8655\u5883 12-34-4-13-13456-5 +always \u76F8\u8655 15-46-3-12-34-4 +always \u683D\u7A2E 125-23456-3-1-12346-5 +always \u7A2E\u690D 1-12346-5-1-156-2 +always \u5171\u8655 13-12346-5-12-34-4 +always \u7E2C\u91CF 245-2346-5-14-46-2 +always \u5354\u8ABF 15-346-2-124-246-2 +always \u8ABF\u7BC0 124-246-2-13-346-2 +always \u7F79\u96E3 14-16-2-1345-1236-5 +always \u53EF\u6578 123-2346-4-24-34-4 +always \u5931\u8ABF 24-156-3-124-246-2 +always \u8A55\u91CF 1234-13456-2-14-46-2 +always \u6536\u85CF 24-12356-3-245-1346-2 +always \u820D\u68C4 24-2346-4-245-16-5 +always \u860A\u85CF 256-5-245-1346-2 +always \u70BA\u4EC0 1246-5-24-2346-2 +always \u8ABF\u5408 124-246-2-1235-2346-2 +always \u8655\u4E8E 12-34-4-1256-2 +always \u82E5\u5E79 1245-25-5-13-1236-3 +always \u91CD\u5FA9 12-12346-2-12345-34-5 +always \u8ABF\u8A66 124-246-2-24-156-5 +always \u5207\u63DB 245-346-3-1235-12456-5 +always \u8655\u7F70 12-34-4-12345-345-2 +always \u8ABF\u6574 124-246-2-1-1356-4 +always \u96B1\u85CF 1456-4-245-1346-2 +always \u4EE4\u884C 14-13456-5-1235-1346-2 always \u4E00\u4E86 16-3-14-246-4 always \u4E00\u5339 16-3-1234-16-4 always \u4E00\u64AE 16-3-245-25-5 @@ -11,6 +55,7 @@ always \u4E00\u884C 16-3-1235-1346-2 always \u4E00\u89BA 16-3-13-246-5 always \u4E09\u66F4 15-1236-3-13-13456-3 always \u4E09\u7701 15-1236-3-15-13456-4 +always \u4E09\u884C 15-1236-3-1235-1346-2 always \u4E09\u91CD 15-1236-3-12-12346-2 always \u4E0A\u4E58 24-1346-5-24-1356-5 always \u4E0A\u4F9B 24-1346-5-13-12346-5 @@ -63,7 +108,6 @@ always \u4E86\u5F97 14-246-4-145-2346-2 always \u4E86\u609F 14-246-4-34-5 always \u4E86\u65B7 14-246-4-145-12456-5 always \u4E86\u7136 14-246-4-1245-1236-2 -always \u4E86\u7576 14-246-4-145-1346-3 always \u4E86\u7D50 14-246-4-13-346-2 always \u4E86\u89E3 14-246-4-13-346-4 always \u4E88\u53D6 1256-2-245-1256-4 @@ -127,7 +171,7 @@ always \u5047\u671F 13-23456-5-245-16-2 always \u504F\u597D 1234-2345-3-1235-146-5 always \u5065\u5C07 13-2345-5-13-46-5 always \u5085\u8AAA 12345-34-5-236-5 -always \u50A2\u4F19 13-23456-3-1235-3-1 +always \u50A2\u4F19 13-23456-3-1235-25-1 always \u50B3\u8A18 1-12456-5-13-16-5 always \u50D5\u5C04 1234-34-2-346-5 always \u50D5\u5F9E 1234-34-2-125-12346-5 @@ -1465,7 +1509,9 @@ always \u85E4\u5B50 124-1356-2-125-156-1 always \u85E5\u884C 246-5-1235-1346-2 always \u85E5\u92EA 246-5-1234-34-5 always \u863F\u8514 14-25-2-135-126-1 +always \u8655\u65BC 12-34-4-1256-2 always \u8655\u5206 12-34-4-12345-136-5 +always \u8655\u7406 12-34-4-14-16-4 always \u8655\u9577 12-34-5-1-1346-4 always \u865B\u673E 15-1256-3-124-13456-3 always \u865F\u54ED 1235-146-2-123-34-3 @@ -1522,6 +1568,7 @@ always \u893B\u73A9 15-346-5-12456-5 always \u896A\u5B50 35-5-125-156-1 always \u897F\u6A02 15-16-3-236-5 always \u8981\u633E 246-3-15-346-2 +always \u8981\u6C42 246-3-245-234-2 always \u8981\u8105 246-3-15-346-2 always \u8986\u6821 12345-34-5-13-246-5 always \u8986\u6C92 12345-34-5-134-126-5 @@ -1637,7 +1684,6 @@ always \u90FD\u5BDF 145-34-3-12-345-2 always \u90FD\u5C09 145-34-3-1246-5 always \u90FD\u5E02 145-34-3-24-156-5 always \u90FD\u5EC1 145-34-3-245-2346-5 -always \u90FD\u6703 145-34-3-1235-1246-5 always \u90FD\u723E 145-34-3-156-4 always \u90FD\u7763 145-34-3-145-34-3 always \u90FD\u7D71 145-34-3-124-12346-4 diff --git a/ContractionTables/zh-tw-ucb.ctb b/Tables/zh-tw-ucb.ctb similarity index 97% rename from ContractionTables/zh-tw-ucb.ctb rename to Tables/zh-tw-ucb.ctb index 24dc31cc2984ff6224844667c76bc8a95cd1be51..6dde5bea14f918bf6c238454c16065eea0855818 100644 --- a/ContractionTables/zh-tw-ucb.ctb +++ b/Tables/zh-tw-ucb.ctb @@ -2,21 +2,62 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# 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://mielke.cc/brltty/ # # This software is maintained by Dave Mielke . ############################################################################### -# Braille representation table for Chinese (Unique Chinese Braille). +# BRLTTY Contraction Table - Taiwanese Chinese (Unique Chinese Braille) +include nabcc.cti + +always \u0081 1456 +always \u0082 1456 +always \u0083 1456 +always \u0084 1456 +always \u0085 1456 +always \u0086 1456 +always \u0087 1456 +always \u0088 1456 +always \u0089 1456 +always \u008A 1456 +always \u008B 1456 +always \u008C 1456 +always \u008D 1456 +always \u008E 1456 +always \u008F 1456 +always \u0090 1456 +always \u0091 1456 +always \u0092 1456 +always \u0093 1456 +always \u0094 1456 +always \u0095 1456 +always \u0096 1456 +always \u0097 1456 +always \u0098 1456 +always \u0099 1456 +always \u009A 1456 +always \u009B 1456 +always \u009C 1456 +always \u009D 1456 +always \u009E 1456 +always \u009F 1456 +always \u00A0 0 +always \u00A1 34-2346 +always \u00A2 36-14-36 +always \u00A3 36-1237-36 +always \u00A4 456-1246 +always \u00A5 36-134567-157-13457-36 +always \u00A6 46-36 always \u00A7 1246-256 § always \u00AF 23467-278 ¯ always \u00B0 45-46-16 ° @@ -304,6 +345,342 @@ always \u33CE 137-1347 ㎠always \u33D1 23467-1234568 ã‘ always \u33D2 23467-238 ã’ always \u33D5 134-24-123 ã• +always \u3400 245-234-3 +always \u3401 124-2345-4 +always \u3402 1456 +always \u3403 1456 +always \u3404 123-35-5 +always \u3405 34-4 +always \u3406 1456-4 +always \u3407 1456 +always \u3408 1456 +always \u3409 1456 +always \u340A 1456 +always \u340B 1456 +always \u340C 24-156-5 +always \u340D 1456 +always \u340E 1456 +always \u340F 1456 +always \u3410 1456 +always \u3411 1456 +always \u3412 1456 +always \u3413 1456 +always \u3414 1456 +always \u3415 1456 +always \u3416 346-5 +always \u3417 1456 +always \u3418 1456 +always \u3419 1456 +always \u341A 1456 +always \u341B 1456 +always \u341C 12-12356-2 +always \u341D 1456 +always \u341E 1456 +always \u341F 1456 +always \u3420 1456 +always \u3421 1345-25-5 +always \u3422 1456 +always \u3423 1456 +always \u3424 245-234-2 +always \u3425 1456 +always \u3426 1456 +always \u3427 1456 +always \u3428 15-234-5 +always \u3429 15-13456-2 +always \u342A 1456 +always \u342B 15-235-3 +always \u342C 14-234-2 +always \u342D 14-1456-4 +always \u342E 15-46-3 +always \u342F 235-3 +always \u3430 15-1456-5 +always \u3431 1-136-4 +always \u3432 145-2456-5 +always \u3433 34-5 +always \u3434 1234-1236-3 +always \u3435 1456 +always \u3436 1456 +always \u3437 134-345-4 +always \u3438 245-2345-5 +always \u3439 16-5 +always \u343A 1-12346-5 +always \u343B 136-4 +always \u343C 12-1356-5 +always \u343D 1456 +always \u343E 1456 +always \u343F 1456 +always \u3440 1456 +always \u3441 1-25-3 +always \u3442 12345-1346-4 +always \u3443 146-4 +always \u3444 34-4 +always \u3445 125-25-5 +always \u3446 1456 +always \u3447 1-12356-5 +always \u3448 145-12346-5 +always \u3449 15-34-5 +always \u344A 16-5 +always \u344B 13-235-5 +always \u344C 123-456-3 +always \u344D 14-356-4 +always \u344E 1345-146-4 +always \u344F 1-34-5 +always \u3450 1456 +always \u3451 1456 +always \u3452 1456 +always \u3453 1456 +always \u3454 15-234-4 +always \u3455 1456 +always \u3456 1456 +always \u3457 1456 +always \u3458 13-246-5 +always \u3459 145-346-2 +always \u345A 1345-25-2 +always \u345B 15-34-5 +always \u345C 16-5 +always \u345D 14-12346-5 +always \u345E 13456-5 +always \u345F 135-1356-4 +always \u3460 1456 +always \u3461 1456 +always \u3462 1456 +always \u3463 14-1236-2 +always \u3464 134-246-2 +always \u3465 16-5 +always \u3466 14-16-5 +always \u3467 13-16-5 +always \u3468 234-4 +always \u3469 14-25-2 +always \u346A 12-2456-2 +always \u346B 1456 +always \u346C 1456 +always \u346D 1456 +always \u346E 1235-123456-2 +always \u346F 15-234-4 +always \u3470 1235-1246-5 +always \u3471 1235-146-4 +always \u3472 1456 +always \u3473 1-12356-5 +always \u3474 1456 +always \u3475 1235-1236-5 +always \u3476 15-16-5 +always \u3477 1-456-5 +always \u3478 2456-4 +always \u3479 1235-1246-5 +always \u347A 13-256-5 +always \u347B 134-245-5 +always \u347C 14-346-5 +always \u347D 124-1346-2 +always \u347E 15-246-2 +always \u347F 124-246-2 +always \u3480 1-345-4 +always \u3481 1256-4 +always \u3482 123-34-5 +always \u3483 156-5 +always \u3484 1345-1346-5 +always \u3485 245-16-4 +always \u3486 12-156-5 +always \u3487 134-34-5 +always \u3488 1235-1236-5 +always \u3489 124-1346-4 +always \u348A 15-2346-5 +always \u348B 1456 +always \u348C 245-235-2 +always \u348D 14-356-2 +always \u348E 15-345-4 +always \u348F 1456 +always \u3490 1456 +always \u3491 1235-1246-5 +always \u3492 1234-34-2 +always \u3493 124-345-5 +always \u3494 24-34-4 +always \u3495 1456 +always \u3496 12356-4 +always \u3497 124-2456-2 +always \u3498 1456 +always \u3499 134-2345-2 +always \u349A 123456-4 +always \u349B 145-246-5 +always \u349C 1256-2 +always \u349D 134-346-5 +always \u349E 13-256-5 +always \u349F 1345-246-4 +always \u34A0 15-346-5 +always \u34A1 234-2 +always \u34A2 1456 +always \u34A3 1456 +always \u34A4 24-2346-5 +always \u34A5 1456 +always \u34A6 14-356-4 +always \u34A7 14-16-5 +always \u34A8 1456 +always \u34A9 14-25-4 +always \u34AA 1456 +always \u34AB 13-16-5 +always \u34AC 1456 +always \u34AD 1456 +always \u34AE 1456 +always \u34AF 1456 +always \u34B0 245-45-2 +always \u34B1 1456 +always \u34B2 245-2456-2 +always \u34B3 14-46-4 +always \u34B4 13-34-4 +always \u34B5 134-146-5 +always \u34B6 1456 +always \u34B7 13-35-4 +always \u34B8 15-1246-5 +always \u34B9 1456 +always \u34BA 1456 +always \u34BB 134-146-5 +always \u34BC 134-1236-2 +always \u34BD 1456 +always \u34BE 24-156-5 +always \u34BF 14-16-2 +always \u34C0 1456 +always \u34C1 456-4 +always \u34C2 123-12356-5 +always \u34C3 12-1246-2 +always \u34C4 1-136-5 +always \u34C5 1456 +always \u34C6 1456 +always \u34C7 1456 +always \u34C8 135-1346-5 +always \u34C9 1235-456-5 +always \u34CA 145-12346-5 +always \u34CB 13-12346-5 +always \u34CC 1456 +always \u34CD 1456 +always \u34CE 14-2345-2 +always \u34CF 13-235-4 +always \u34D0 14-34-5 +always \u34D1 15-13456-5 +always \u34D2 1456 +always \u34D3 1345-1236-2 +always \u34D4 15-346-5 +always \u34D5 1456 +always \u34D6 135-16-5 +always \u34D7 13-346-2 +always \u34D8 15-34-5 +always \u34D9 1456 +always \u34DA 1456 +always \u34DB 1456 +always \u34DC 234-5 +always \u34DD 15-13456-2 +always \u34DE 245-16-5 +always \u34DF 1456 +always \u34E0 145-2345-5 +always \u34E1 12345-4 +always \u34E2 14-25-5 +always \u34E3 245-23456-5 +always \u34E4 13-346-2 +always \u34E5 1456 +always \u34E6 1456 +always \u34E7 2345-4 +always \u34E8 245-156-2 +always \u34E9 1456 +always \u34EA 14-1346-4 +always \u34EB 1456 +always \u34EC 1456 +always \u34ED 1235-2346-2 +always \u34EE 1456 +always \u34EF 14-16-2 +always \u34F0 1235-35-5 +always \u34F1 124-12356-2 +always \u34F2 1234-2345-5 +always \u34F3 1456 +always \u34F4 13-256-5 +always \u34F5 2346-5 +always \u34F6 245-346-5 +always \u34F7 16-5 +always \u34F8 13-236-2 +always \u34F9 1245-1246-5 +always \u34FA 13-2345-5 +always \u34FB 1456 +always \u34FC 12-156-5 +always \u34FD 12-12346-2 +always \u34FE 12-156-2 +always \u34FF 1456 +always \u3500 14-236-5 +always \u3501 1456 +always \u3502 14-1456-2 +always \u3503 13-236-2 +always \u3504 15-34-5 +always \u3505 15-246-5 +always \u3506 12-1236-2 +always \u3507 1456 +always \u3508 1456 +always \u3509 1-34-2 +always \u350A 145-1236-4 +always \u350B 13-2345-5 +always \u350C 1-12356-5 +always \u350D 145-25-4 +always \u350E 15-346-5 +always \u350F 14-16-5 +always \u3510 1456 +always \u3511 12-156-5 +always \u3512 15-16-2 +always \u3513 13-2345-4 +always \u3514 1456 +always \u3515 13-16-2 +always \u3516 1456 +always \u3517 12345-356-5 +always \u3518 12-34-5 +always \u3519 135-1346-4 +always \u351A 123-12356-4 +always \u351B 1456 +always \u351C 135-345-2 +always \u351D 14-46-4 +always \u351E 123-2356-5 +always \u351F 1456 +always \u3520 1235-2346-2 +always \u3521 1456 +always \u3522 13-236-2 +always \u3523 14-356-2 +always \u3524 24-136-4 +always \u3525 1234-16-2 +always \u3526 46-4 +always \u3527 15-236-5 +always \u3528 135-356-5 +always \u3529 2346-5 +always \u352A 14-34-4 +always \u352B 1456 +always \u352C 1456 +always \u352D 12-2346-5 +always \u352E 1345-25-2 +always \u352F 15-12456-4 +always \u3530 1235-1356-2 +always \u3531 1256-4 +always \u3532 1456 +always \u3533 13-1246-4 +always \u3534 16-5 +always \u3535 15-2345-5 +always \u3536 13-12346-5 +always \u3537 14-12356-5 +always \u3538 1456 +always \u3539 14-2346-5 +always \u353A 24-156-5 +always \u353B 1456 +always \u353C 15-12346-4 +always \u353D 246-5 +always \u353E 13-346-2 +always \u353F 125-12356-5 +always \u3540 1456 +always \u3541 245-236-5 +always \u3542 1456-2 +always \u3543 1456 +always \u3544 1-156-5 +always \u3545 13-23456-4 +always \u3546 1235-34-5 +always \u3547 14-345-2 +always \u3548 1235-12356-5 +always \u3549 123-2346-5 +always \u354A 1456 +always \u354B 13-13456-5 +always \u354C 23456-5 +always \u354D 1456 +always \u354E 2346-5 +always \u354F 12-34-2 always \u4E00 16-3 一 always \u4E01 145-13456-3 ä¸ always \u4E03 245-16-3 七 diff --git a/ContractionTables/zh-tw.ctb b/Tables/zh-tw.ctb similarity index 83% rename from ContractionTables/zh-tw.ctb rename to Tables/zh-tw.ctb index fecc7226feb8ddc89cadc25055d6316f077f7f66..7a07d0dbf1aa653859d6626c9bcbfe7eac424ada 100644 --- a/ContractionTables/zh-tw.ctb +++ b/Tables/zh-tw.ctb @@ -2,20 +2,23 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# 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://mielke.cc/brltty/ # # This software is maintained by Dave Mielke . ############################################################################### -# Braille representation table for Chinese (Taiwan). +# BRLTTY Contraction Table - Taiwanese Chinese (uncontracted) + +include nabcc.cti always \u0081 1456 always \u0082 1456 @@ -48,45 +51,45 @@ always \u009C 1456 always \u009D 1456 always \u009E 1456 always \u009F 1456 -always \u00A0 1456 -always \u00A1 1456 +always \u00A0 0 +always \u00A1 34-2346 always \u00A2 36-14-36 always \u00A3 36-1237-36 -always \u00A4 1456 -always \u00A5 134567-157-13457 -always \u00A6 1456 +always \u00A4 456-1246 +always \u00A5 36-134567-157-13457-36 +always \u00A6 46-36 always \u00A7 1246-256 -always \u00A8 1-2346-1 -always \u00A9 1456 -always \u00AA 1456 -always \u00AB 1456 -always \u00AC 1456 -always \u00AD 1456 -always \u00AE 1456 -always \u00AF 23467-278 +always \u00A8 456-36 +always \u00A9 12356-147-23456 +always \u00AA 36-1247-157-1347-36 +always \u00AB 126-126 +always \u00AC 36-13457-1357-23457-36 +always \u00AD 36 +always \u00AE 12356-12357-23456 +always \u00AF 156-36 always \u00B0 45-46-16 always \u00B1 346-36 -always \u00B2 1456 -always \u00B3 1456 -always \u00B4 3 +always \u00B2 457-23 +always \u00B3 457-25 +always \u00B4 4 always \u00B5 46-134 -always \u00B6 1456 -always \u00B7 46-0 -always \u00B8 1456 -always \u00B9 1456 -always \u00BA 1456 -always \u00BB 1456 -always \u00BC 1456 -always \u00BD 1456 -always \u00BE 1456 -always \u00BF 1456 -always \u00C0 1456 -always \u00C1 1456 -always \u00C2 1456 -always \u00C3 1456 -always \u00C4 1456 -always \u00C5 1456 -always \u00C6 1456 +always \u00B6 1246-1234 +always \u00B7 46 +always \u00B8 2346-4 +always \u00B9 457-2 +always \u00BA 36-1347-17-2347-36 +always \u00BB 345-345 +always \u00BC 2-34-256 +always \u00BD 2-34-23 +always \u00BE 25-34-256 +always \u00BF 34-1456 +always \u00C0 456-17 +always \u00C1 457-17 +always \u00C2 346-17 +always \u00C3 45-17 +always \u00C4 36-17 +always \u00C5 1357-17 +always \u00C6 17-157 always \u00C7 1456 always \u00C8 1456 always \u00C9 1456 @@ -8104,7 +8107,7 @@ always \u2014 36-36 always \u2015 36-36 always \u2016 1246-123 always \u2017 1456 -always \u2018 3 +always \u2018 4 always \u2019 3 always \u201A 1456 always \u201B 1456 @@ -9558,7 +9561,7 @@ always \u25C2 1456 always \u25C3 1456 always \u25C4 1456 always \u25C5 1456 -always \u25C6 23467-3457 +always \u25C6 1246-1256 always \u25C7 23467-7 always \u25C8 1456 always \u25C9 1456 @@ -12176,7 +12179,7 @@ always \u2FFC 1456 always \u2FFD 1456 always \u2FFE 1456 always \u2FFF 1456 -always \u3000 1456 +always \u3000 0 always \u3001 6-0 always \u3002 36-0 always \u3003 4-3456 @@ -13200,19 +13203,19 @@ always \u33FC 1456 always \u33FD 1456 always \u33FE 1456 always \u33FF 1456 -always \u3400 1456 -always \u3401 1456 +always \u3400 245-234-3 +always \u3401 124-2345-4 always \u3402 1456 always \u3403 1456 -always \u3404 1456 -always \u3405 1456 -always \u3406 1456 +always \u3404 123-35-5 +always \u3405 34-4 +always \u3406 1456-4 always \u3407 1456 always \u3408 1456 always \u3409 1456 always \u340A 1456 always \u340B 1456 -always \u340C 1456 +always \u340C 24-156-5 always \u340D 1456 always \u340E 1456 always \u340F 1456 @@ -13222,328 +13225,328 @@ always \u3412 1456 always \u3413 1456 always \u3414 1456 always \u3415 1456 -always \u3416 1456 +always \u3416 346-5 always \u3417 1456 always \u3418 1456 always \u3419 1456 always \u341A 1456 always \u341B 1456 -always \u341C 1456 +always \u341C 12-12356-2 always \u341D 1456 always \u341E 1456 always \u341F 1456 always \u3420 1456 -always \u3421 1456 +always \u3421 1345-25-5 always \u3422 1456 always \u3423 1456 -always \u3424 1456 +always \u3424 245-234-2 always \u3425 1456 always \u3426 1456 always \u3427 1456 -always \u3428 1456 -always \u3429 1456 +always \u3428 15-234-5 +always \u3429 15-13456-2 always \u342A 1456 -always \u342B 1456 -always \u342C 1456 -always \u342D 1456 -always \u342E 1456 -always \u342F 1456 -always \u3430 1456 -always \u3431 1456 -always \u3432 1456 -always \u3433 1456 -always \u3434 1456 +always \u342B 15-235-3 +always \u342C 14-234-2 +always \u342D 14-1456-4 +always \u342E 15-46-3 +always \u342F 235-3 +always \u3430 15-1456-5 +always \u3431 1-136-4 +always \u3432 145-2456-5 +always \u3433 34-5 +always \u3434 1234-1236-3 always \u3435 1456 always \u3436 1456 -always \u3437 1456 -always \u3438 1456 -always \u3439 1456 -always \u343A 1456 -always \u343B 1456 -always \u343C 1456 +always \u3437 134-345-4 +always \u3438 245-2345-5 +always \u3439 16-5 +always \u343A 1-12346-5 +always \u343B 136-4 +always \u343C 12-1356-5 always \u343D 1456 always \u343E 1456 always \u343F 1456 always \u3440 1456 -always \u3441 1456 -always \u3442 1456 -always \u3443 1456 -always \u3444 1456 -always \u3445 1456 +always \u3441 1-25-3 +always \u3442 12345-1346-4 +always \u3443 146-4 +always \u3444 34-4 +always \u3445 125-25-5 always \u3446 1456 -always \u3447 1456 -always \u3448 1456 -always \u3449 1456 -always \u344A 1456 -always \u344B 1456 -always \u344C 1456 -always \u344D 1456 -always \u344E 1456 -always \u344F 1456 +always \u3447 1-12356-5 +always \u3448 145-12346-5 +always \u3449 15-34-5 +always \u344A 16-5 +always \u344B 13-235-5 +always \u344C 123-456-3 +always \u344D 14-356-4 +always \u344E 1345-146-4 +always \u344F 1-34-5 always \u3450 1456 always \u3451 1456 always \u3452 1456 always \u3453 1456 -always \u3454 1456 +always \u3454 15-234-4 always \u3455 1456 always \u3456 1456 always \u3457 1456 -always \u3458 1456 -always \u3459 1456 -always \u345A 1456 -always \u345B 1456 -always \u345C 1456 -always \u345D 1456 -always \u345E 1456 -always \u345F 1456 +always \u3458 13-246-5 +always \u3459 145-346-2 +always \u345A 1345-25-2 +always \u345B 15-34-5 +always \u345C 16-5 +always \u345D 14-12346-5 +always \u345E 13456-5 +always \u345F 135-1356-4 always \u3460 1456 always \u3461 1456 always \u3462 1456 -always \u3463 1456 -always \u3464 1456 -always \u3465 1456 -always \u3466 1456 -always \u3467 1456 -always \u3468 1456 -always \u3469 1456 -always \u346A 1456 +always \u3463 14-1236-2 +always \u3464 134-246-2 +always \u3465 16-5 +always \u3466 14-16-5 +always \u3467 13-16-5 +always \u3468 234-4 +always \u3469 14-25-2 +always \u346A 12-2456-2 always \u346B 1456 always \u346C 1456 always \u346D 1456 -always \u346E 1456 -always \u346F 1456 -always \u3470 1456 -always \u3471 1456 +always \u346E 1235-123456-2 +always \u346F 15-234-4 +always \u3470 1235-1246-5 +always \u3471 1235-146-4 always \u3472 1456 -always \u3473 1456 +always \u3473 1-12356-5 always \u3474 1456 -always \u3475 1456 -always \u3476 1456 -always \u3477 1456 -always \u3478 1456 -always \u3479 1456 -always \u347A 1456 -always \u347B 1456 -always \u347C 1456 -always \u347D 1456 -always \u347E 1456 -always \u347F 1456 -always \u3480 1456 -always \u3481 1456 -always \u3482 1456 -always \u3483 1456 -always \u3484 1456 -always \u3485 1456 -always \u3486 1456 -always \u3487 1456 -always \u3488 1456 -always \u3489 1456 -always \u348A 1456 +always \u3475 1235-1236-5 +always \u3476 15-16-5 +always \u3477 1-456-5 +always \u3478 2456-4 +always \u3479 1235-1246-5 +always \u347A 13-256-5 +always \u347B 134-245-5 +always \u347C 14-346-5 +always \u347D 124-1346-2 +always \u347E 15-246-2 +always \u347F 124-246-2 +always \u3480 1-345-4 +always \u3481 1256-4 +always \u3482 123-34-5 +always \u3483 156-5 +always \u3484 1345-1346-5 +always \u3485 245-16-4 +always \u3486 12-156-5 +always \u3487 134-34-5 +always \u3488 1235-1236-5 +always \u3489 124-1346-4 +always \u348A 15-2346-5 always \u348B 1456 -always \u348C 1456 -always \u348D 1456 -always \u348E 1456 +always \u348C 245-235-2 +always \u348D 14-356-2 +always \u348E 15-345-4 always \u348F 1456 always \u3490 1456 -always \u3491 1456 -always \u3492 1456 -always \u3493 1456 -always \u3494 1456 +always \u3491 1235-1246-5 +always \u3492 1234-34-2 +always \u3493 124-345-5 +always \u3494 24-34-4 always \u3495 1456 -always \u3496 1456 -always \u3497 1456 +always \u3496 12356-4 +always \u3497 124-2456-2 always \u3498 1456 -always \u3499 1456 -always \u349A 1456 -always \u349B 1456 -always \u349C 1456 -always \u349D 1456 -always \u349E 1456 -always \u349F 1456 -always \u34A0 1456 -always \u34A1 1456 +always \u3499 134-2345-2 +always \u349A 123456-4 +always \u349B 145-246-5 +always \u349C 1256-2 +always \u349D 134-346-5 +always \u349E 13-256-5 +always \u349F 1345-246-4 +always \u34A0 15-346-5 +always \u34A1 234-2 always \u34A2 1456 always \u34A3 1456 -always \u34A4 1456 +always \u34A4 24-2346-5 always \u34A5 1456 -always \u34A6 1456 -always \u34A7 1456 +always \u34A6 14-356-4 +always \u34A7 14-16-5 always \u34A8 1456 -always \u34A9 1456 +always \u34A9 14-25-4 always \u34AA 1456 -always \u34AB 1456 +always \u34AB 13-16-5 always \u34AC 1456 always \u34AD 1456 always \u34AE 1456 always \u34AF 1456 -always \u34B0 1456 +always \u34B0 245-45-2 always \u34B1 1456 -always \u34B2 1456 -always \u34B3 1456 -always \u34B4 1456 -always \u34B5 1456 +always \u34B2 245-2456-2 +always \u34B3 14-46-4 +always \u34B4 13-34-4 +always \u34B5 134-146-5 always \u34B6 1456 -always \u34B7 1456 -always \u34B8 1456 +always \u34B7 13-35-4 +always \u34B8 15-1246-5 always \u34B9 1456 always \u34BA 1456 -always \u34BB 1456 -always \u34BC 1456 +always \u34BB 134-146-5 +always \u34BC 134-1236-2 always \u34BD 1456 -always \u34BE 1456 -always \u34BF 1456 +always \u34BE 24-156-5 +always \u34BF 14-16-2 always \u34C0 1456 -always \u34C1 1456 -always \u34C2 1456 -always \u34C3 1456 -always \u34C4 1456 +always \u34C1 456-4 +always \u34C2 123-12356-5 +always \u34C3 12-1246-2 +always \u34C4 1-136-5 always \u34C5 1456 always \u34C6 1456 always \u34C7 1456 -always \u34C8 1456 -always \u34C9 1456 -always \u34CA 1456 -always \u34CB 1456 +always \u34C8 135-1346-5 +always \u34C9 1235-456-5 +always \u34CA 145-12346-5 +always \u34CB 13-12346-5 always \u34CC 1456 always \u34CD 1456 -always \u34CE 1456 -always \u34CF 1456 -always \u34D0 1456 -always \u34D1 1456 +always \u34CE 14-2345-2 +always \u34CF 13-235-4 +always \u34D0 14-34-5 +always \u34D1 15-13456-5 always \u34D2 1456 -always \u34D3 1456 -always \u34D4 1456 +always \u34D3 1345-1236-2 +always \u34D4 15-346-5 always \u34D5 1456 -always \u34D6 1456 -always \u34D7 1456 -always \u34D8 1456 +always \u34D6 135-16-5 +always \u34D7 13-346-2 +always \u34D8 15-34-5 always \u34D9 1456 always \u34DA 1456 always \u34DB 1456 -always \u34DC 1456 -always \u34DD 1456 -always \u34DE 1456 +always \u34DC 234-5 +always \u34DD 15-13456-2 +always \u34DE 245-16-5 always \u34DF 1456 -always \u34E0 1456 -always \u34E1 1456 -always \u34E2 1456 -always \u34E3 1456 -always \u34E4 1456 +always \u34E0 145-2345-5 +always \u34E1 12345-4 +always \u34E2 14-25-5 +always \u34E3 245-23456-5 +always \u34E4 13-346-2 always \u34E5 1456 always \u34E6 1456 -always \u34E7 1456 -always \u34E8 1456 +always \u34E7 2345-4 +always \u34E8 245-156-2 always \u34E9 1456 -always \u34EA 1456 +always \u34EA 14-1346-4 always \u34EB 1456 always \u34EC 1456 -always \u34ED 1456 +always \u34ED 1235-2346-2 always \u34EE 1456 -always \u34EF 1456 -always \u34F0 1456 -always \u34F1 1456 -always \u34F2 1456 +always \u34EF 14-16-2 +always \u34F0 1235-35-5 +always \u34F1 124-12356-2 +always \u34F2 1234-2345-5 always \u34F3 1456 -always \u34F4 1456 -always \u34F5 1456 -always \u34F6 1456 -always \u34F7 1456 -always \u34F8 1456 -always \u34F9 1456 -always \u34FA 1456 +always \u34F4 13-256-5 +always \u34F5 2346-5 +always \u34F6 245-346-5 +always \u34F7 16-5 +always \u34F8 13-236-2 +always \u34F9 1245-1246-5 +always \u34FA 13-2345-5 always \u34FB 1456 -always \u34FC 1456 -always \u34FD 1456 -always \u34FE 1456 +always \u34FC 12-156-5 +always \u34FD 12-12346-2 +always \u34FE 12-156-2 always \u34FF 1456 -always \u3500 1456 +always \u3500 14-236-5 always \u3501 1456 -always \u3502 1456 -always \u3503 1456 -always \u3504 1456 -always \u3505 1456 -always \u3506 1456 +always \u3502 14-1456-2 +always \u3503 13-236-2 +always \u3504 15-34-5 +always \u3505 15-246-5 +always \u3506 12-1236-2 always \u3507 1456 always \u3508 1456 -always \u3509 1456 -always \u350A 1456 -always \u350B 1456 -always \u350C 1456 -always \u350D 1456 -always \u350E 1456 -always \u350F 1456 +always \u3509 1-34-2 +always \u350A 145-1236-4 +always \u350B 13-2345-5 +always \u350C 1-12356-5 +always \u350D 145-25-4 +always \u350E 15-346-5 +always \u350F 14-16-5 always \u3510 1456 -always \u3511 1456 -always \u3512 1456 -always \u3513 1456 +always \u3511 12-156-5 +always \u3512 15-16-2 +always \u3513 13-2345-4 always \u3514 1456 -always \u3515 1456 +always \u3515 13-16-2 always \u3516 1456 -always \u3517 1456 -always \u3518 1456 -always \u3519 1456 -always \u351A 1456 +always \u3517 12345-356-5 +always \u3518 12-34-5 +always \u3519 135-1346-4 +always \u351A 123-12356-4 always \u351B 1456 -always \u351C 1456 -always \u351D 1456 -always \u351E 1456 +always \u351C 135-345-2 +always \u351D 14-46-4 +always \u351E 123-2356-5 always \u351F 1456 -always \u3520 1456 +always \u3520 1235-2346-2 always \u3521 1456 -always \u3522 1456 -always \u3523 1456 -always \u3524 1456 -always \u3525 1456 -always \u3526 1456 -always \u3527 1456 -always \u3528 1456 -always \u3529 1456 -always \u352A 1456 +always \u3522 13-236-2 +always \u3523 14-356-2 +always \u3524 24-136-4 +always \u3525 1234-16-2 +always \u3526 46-4 +always \u3527 15-236-5 +always \u3528 135-356-5 +always \u3529 2346-5 +always \u352A 14-34-4 always \u352B 1456 always \u352C 1456 -always \u352D 1456 -always \u352E 1456 -always \u352F 1456 -always \u3530 1456 -always \u3531 1456 +always \u352D 12-2346-5 +always \u352E 1345-25-2 +always \u352F 15-12456-4 +always \u3530 1235-1356-2 +always \u3531 1256-4 always \u3532 1456 -always \u3533 1456 -always \u3534 1456 -always \u3535 1456 -always \u3536 1456 -always \u3537 1456 +always \u3533 13-1246-4 +always \u3534 16-5 +always \u3535 15-2345-5 +always \u3536 13-12346-5 +always \u3537 14-12356-5 always \u3538 1456 -always \u3539 1456 -always \u353A 1456 +always \u3539 14-2346-5 +always \u353A 24-156-5 always \u353B 1456 -always \u353C 1456 -always \u353D 1456 -always \u353E 1456 -always \u353F 1456 +always \u353C 15-12346-4 +always \u353D 246-5 +always \u353E 13-346-2 +always \u353F 125-12356-5 always \u3540 1456 -always \u3541 1456 -always \u3542 1456 +always \u3541 245-236-5 +always \u3542 1456-2 always \u3543 1456 -always \u3544 1456 -always \u3545 1456 -always \u3546 1456 -always \u3547 1456 -always \u3548 1456 -always \u3549 1456 +always \u3544 1-156-5 +always \u3545 13-23456-4 +always \u3546 1235-34-5 +always \u3547 14-345-2 +always \u3548 1235-12356-5 +always \u3549 123-2346-5 always \u354A 1456 -always \u354B 1456 -always \u354C 1456 +always \u354B 13-13456-5 +always \u354C 23456-5 always \u354D 1456 -always \u354E 1456 -always \u354F 1456 -always \u3550 1456 -always \u3551 1456 -always \u3552 1456 +always \u354E 2346-5 +always \u354F 12-34-2 +always \u3550 15-346-4 +always \u3551 245-236-2 +always \u3552 1246-2 always \u3553 1456 always \u3554 1456 -always \u3555 1456 -always \u3556 1456 -always \u3557 1456 +always \u3555 1235-12456-5 +always \u3556 15-34-5 +always \u3557 234-5 always \u3558 1456 always \u3559 1456 always \u355A 1456 @@ -13600,37 +13603,37 @@ always \u358C 1456 always \u358D 1456 always \u358E 1456 always \u358F 1456 -always \u3590 1456 -always \u3591 1456 -always \u3592 1456 -always \u3593 1456 -always \u3594 1456 -always \u3595 1456 -always \u3596 1456 -always \u3597 1456 +always \u3590 1246-4 +always \u3591 15-346-5 +always \u3592 124-16-2 +always \u3593 1235-12346-2 +always \u3594 124-123456-4 +always \u3595 135-126-5 +always \u3596 1345-346-5 +always \u3597 1456-2 always \u3598 1456 always \u3599 1456 always \u359A 1456 always \u359B 1456 always \u359C 1456 always \u359D 1456 -always \u359E 1456 -always \u359F 1456 -always \u35A0 1456 -always \u35A1 1456 -always \u35A2 1456 -always \u35A3 1456 -always \u35A4 1456 -always \u35A5 1456 -always \u35A6 1456 -always \u35A7 1456 -always \u35A8 1456 -always \u35A9 1456 -always \u35AA 1456 -always \u35AB 1456 +always \u359E 2356-3 +always \u359F 24-12356-5 +always \u35A0 135-345-5 +always \u35A1 346-5 +always \u35A2 13-16-2 +always \u35A3 124-12356-5 +always \u35A4 1235-1236-2 +always \u35A5 13-235-4 +always \u35A6 145-12346-4 +always \u35A7 123456-4 +always \u35A8 14-34-5 +always \u35A9 15-12356-4 +always \u35AA 13-25-2 +always \u35AB 14-13456-2 always \u35AC 1456 -always \u35AD 1456 -always \u35AE 1456 +always \u35AD 124-2345-4 +always \u35AE 14-123456-2 always \u35AF 1456 always \u35B0 1456 always \u35B1 1456 @@ -13638,1902 +13641,1902 @@ always \u35B2 1456 always \u35B3 1456 always \u35B4 1456 always \u35B5 1456 -always \u35B6 1456 -always \u35B7 1456 -always \u35B8 1456 -always \u35B9 1456 -always \u35BA 1456 -always \u35BB 1456 -always \u35BC 1456 -always \u35BD 1456 -always \u35BE 1456 -always \u35BF 1456 +always \u35B6 346-5 +always \u35B7 24-156-2 +always \u35B8 15-236-2 +always \u35B9 12345-136-5 +always \u35BA 12-123456-4 +always \u35BB 1245-12356-2 +always \u35BC 145-25-4 +always \u35BD 125-2346-2 +always \u35BE 2346-5 +always \u35BF 15-346-2 always \u35C0 1456 -always \u35C1 1456 -always \u35C2 1456 -always \u35C3 1456 -always \u35C4 1456 -always \u35C5 1456 -always \u35C6 1456 -always \u35C7 1456 -always \u35C8 1456 -always \u35C9 1456 -always \u35CA 1456 -always \u35CB 1456 -always \u35CC 1456 +always \u35C1 2346-5 +always \u35C2 24-1356-4 +always \u35C3 123456-4 +always \u35C4 134-1236-2 +always \u35C5 1235-34-2 +always \u35C6 13-2346-2 +always \u35C7 15-23456-2 +always \u35C8 134-1236-5 +always \u35C9 135-16-5 +always \u35CA 13-16-2 +always \u35CB 1235-12356-2 +always \u35CC 1-156-5 always \u35CD 1456 always \u35CE 1456 always \u35CF 1456 always \u35D0 1456 -always \u35D1 1456 -always \u35D2 1456 +always \u35D1 135-2456-5 +always \u35D2 2456-5 always \u35D3 1456 always \u35D4 1456 -always \u35D5 1456 -always \u35D6 1456 -always \u35D7 1456 -always \u35D8 1456 -always \u35D9 1456 -always \u35DA 1456 -always \u35DB 1456 -always \u35DC 1456 +always \u35D5 13-12356-5 +always \u35D6 145-1236-5 +always \u35D7 135-2456-4 +always \u35D8 135-126-2 +always \u35D9 1345-345-5 +always \u35DA 14-16-5 +always \u35DB 15-246-5 +always \u35DC 15-234-5 always \u35DD 1456 always \u35DE 1456 always \u35DF 1456 always \u35E0 1456 always \u35E1 1456 -always \u35E2 1456 -always \u35E3 1456 -always \u35E4 1456 -always \u35E5 1456 -always \u35E6 1456 -always \u35E7 1456 -always \u35E8 1456 -always \u35E9 1456 +always \u35E2 145-12346-5 +always \u35E3 124-16-5 +always \u35E4 245-34-5 +always \u35E5 123-25-5 +always \u35E6 14-146-2 +always \u35E7 1-156-5 +always \u35E8 2456-4 +always \u35E9 15-16-3 always \u35EA 1456 -always \u35EB 1456 +always \u35EB 245-346-5 always \u35EC 1456 always \u35ED 1456 always \u35EE 1456 always \u35EF 1456 -always \u35F0 1456 -always \u35F1 1456 -always \u35F2 1456 -always \u35F3 1456 -always \u35F4 1456 -always \u35F5 1456 +always \u35F0 12-34-5 +always \u35F1 13-16-2 +always \u35F2 1235-25-5 +always \u35F3 124-345-4 +always \u35F4 2345-2 +always \u35F5 15-1256-5 always \u35F6 1456 -always \u35F7 1456 +always \u35F7 15-2456-4 always \u35F8 1456 always \u35F9 1456 always \u35FA 1456 always \u35FB 1456 -always \u35FC 1456 -always \u35FD 1456 +always \u35FC 346-5 +always \u35FD 15-46-4 always \u35FE 1456 -always \u35FF 1456 -always \u3600 1456 -always \u3601 1456 -always \u3602 1456 +always \u35FF 15-23456-5 +always \u3600 125-25-5 +always \u3601 16-5 +always \u3602 245-156-2 always \u3603 1456 always \u3604 1456 -always \u3605 1456 -always \u3606 1456 -always \u3607 1456 -always \u3608 1456 -always \u3609 1456 -always \u360A 1456 -always \u360B 1456 -always \u360C 1456 -always \u360D 1456 -always \u360E 1456 +always \u3605 15-2345-2 +always \u3606 124-2456-2 +always \u3607 1245-12346-2 +always \u3608 16-3 +always \u3609 1-156-5 +always \u360A 16-5 +always \u360B 15-2345-2 +always \u360C 13-1256-5 +always \u360D 13-16-2 +always \u360E 1235-1236-4 always \u360F 1456 -always \u3610 1456 -always \u3611 1456 +always \u3610 1234-146-5 +always \u3611 14-16-5 always \u3612 1456 -always \u3613 1456 -always \u3614 1456 -always \u3615 1456 -always \u3616 1456 +always \u3613 14-1236-2 +always \u3614 245-1236-4 +always \u3615 1235-1236-4 +always \u3616 2345-2 always \u3617 1456 always \u3618 1456 -always \u3619 1456 -always \u361A 1456 +always \u3619 2345-2 +always \u361A 1235-1236-4 always \u361B 1456 -always \u361C 1456 -always \u361D 1456 -always \u361E 1456 +always \u361C 12-156-4 +always \u361D 1345-2345-4 +always \u361E 1235-25-5 always \u361F 1456 -always \u3620 1456 -always \u3621 1456 -always \u3622 1456 -always \u3623 1456 +always \u3620 135-16-5 +always \u3621 15-23456-2 +always \u3622 12346-4 +always \u3623 15-45-2 always \u3624 1456 -always \u3625 1456 -always \u3626 1456 -always \u3627 1456 -always \u3628 1456 -always \u3629 1456 -always \u362A 1456 -always \u362B 1456 -always \u362C 1456 -always \u362D 1456 +always \u3625 234-2 +always \u3626 245-1456-2 +always \u3627 15-1256-5 +always \u3628 1345-356-5 +always \u3629 135-16-5 +always \u362A 1235-146-5 +always \u362B 13-13456-4 +always \u362C 146-5 +always \u362D 146-5 always \u362E 1456 always \u362F 1456 always \u3630 1456 always \u3631 1456 -always \u3632 1456 +always \u3632 13-1256-2 always \u3633 1456 -always \u3634 1456 -always \u3635 1456 -always \u3636 1456 -always \u3637 1456 -always \u3638 1456 -always \u3639 1456 -always \u363A 1456 +always \u3634 125-25-5 +always \u3635 135-34-5 +always \u3636 13-346-2 +always \u3637 2456-5 +always \u3638 125-1346-5 +always \u3639 245-156-2 +always \u363A 12345-345-2 always \u363B 1456 always \u363C 1456 always \u363D 1456 always \u363E 1456 -always \u363F 1456 -always \u3640 1456 -always \u3641 1456 -always \u3642 1456 +always \u363F 1345-346-5 +always \u3640 14-234-5 +always \u3641 134-1346-4 +always \u3642 145-1246-5 always \u3643 1456 -always \u3644 1456 -always \u3645 1456 +always \u3644 135-16-5 +always \u3645 135-146-4 always \u3646 1456 -always \u3647 1456 -always \u3648 1456 -always \u3649 1456 -always \u364A 1456 +always \u3647 12-34-5 +always \u3648 1235-1236-2 +always \u3649 124-2345-4 +always \u364A 12-1346-2 always \u364B 1456 always \u364C 1456 always \u364D 1456 always \u364E 1456 -always \u364F 1456 -always \u3650 1456 -always \u3651 1456 -always \u3652 1456 -always \u3653 1456 -always \u3654 1456 -always \u3655 1456 +always \u364F 12345-34-5 +always \u3650 145-25-4 +always \u3651 1256-4 +always \u3652 346-4 +always \u3653 123-1246-2 +always \u3654 1235-1236-2 +always \u3655 123-2356-5 always \u3656 1456 -always \u3657 1456 +always \u3657 123-2356-5 always \u3658 1456 -always \u3659 1456 +always \u3659 14-12346-4 always \u365A 1456 -always \u365B 1456 -always \u365C 1456 -always \u365D 1456 -always \u365E 1456 -always \u365F 1456 -always \u3660 1456 +always \u365B 135-34-4 +always \u365C 12-156-2 +always \u365D 15-346-2 +always \u365E 1345-346-5 +always \u365F 14-1346-4 +always \u3660 16-5 always \u3661 1456 -always \u3662 1456 -always \u3663 1456 -always \u3664 1456 -always \u3665 1456 +always \u3662 134-1236-2 +always \u3663 1-1346-5 +always \u3664 15-23456-5 +always \u3665 13-123456-4 always \u3666 1456 always \u3667 1456 -always \u3668 1456 -always \u3669 1456 -always \u366A 1456 -always \u366B 1456 -always \u366C 1456 +always \u3668 13-16-5 +always \u3669 14-246-2 +always \u366A 346-5 +always \u366B 13-16-2 +always \u366C 1456-2 always \u366D 1456 -always \u366E 1456 -always \u366F 1456 -always \u3670 1456 -always \u3671 1456 -always \u3672 1456 -always \u3673 1456 -always \u3674 1456 -always \u3675 1456 -always \u3676 1456 -always \u3677 1456 -always \u3678 1456 -always \u3679 1456 -always \u367A 1456 -always \u367B 1456 -always \u367C 1456 +always \u366E 145-345-3 +always \u366F 16-5 +always \u3670 15-346-5 +always \u3671 1235-146-5 +always \u3672 235-4 +always \u3673 1235-1236-4 +always \u3674 12-1236-5 +always \u3675 124-2456-2 +always \u3676 124-1346-2 +always \u3677 1-156-2 +always \u3678 135-146-5 +always \u3679 134-1356-2 +always \u367A 13-1246-5 +always \u367B 12-1236-2 +always \u367C 14-356-4 always \u367D 1456 -always \u367E 1456 +always \u367E 15-16-5 always \u367F 1456 always \u3680 1456 -always \u3681 1456 -always \u3682 1456 -always \u3683 1456 +always \u3681 245-246-2 +always \u3682 1245-1346-2 +always \u3683 256-2 always \u3684 1456 -always \u3685 1456 -always \u3686 1456 +always \u3685 14-12346-2 +always \u3686 12345-34-5 always \u3687 1456 always \u3688 1456 -always \u3689 1456 +always \u3689 13-34-4 always \u368A 1456 always \u368B 1456 -always \u368C 1456 -always \u368D 1456 +always \u368C 1235-35-5 +always \u368D 13-25-2 always \u368E 1456 -always \u368F 1456 -always \u3690 1456 +always \u368F 13-146-4 +always \u3690 124-146-5 always \u3691 1456 -always \u3692 1456 -always \u3693 1456 -always \u3694 1456 -always \u3695 1456 -always \u3696 1456 -always \u3697 1456 -always \u3698 1456 +always \u3692 24-1236-4 +always \u3693 14-2456-2 +always \u3694 1345-346-5 +always \u3695 12345-34-2 +always \u3696 13-146-4 +always \u3697 245-346-2 +always \u3698 135-1236-5 always \u3699 1456 always \u369A 1456 -always \u369B 1456 -always \u369C 1456 -always \u369D 1456 -always \u369E 1456 -always \u369F 1456 +always \u369B 15-16-5 +always \u369C 15-1256-5 +always \u369D 123-1246-2 +always \u369E 134-1356-4 +always \u369F 12-25-5 always \u36A0 1456 -always \u36A1 1456 -always \u36A2 1456 -always \u36A3 1456 -always \u36A4 1456 -always \u36A5 1456 -always \u36A6 1456 -always \u36A7 1456 +always \u36A1 13-16-4 +always \u36A2 1345-34-2 +always \u36A3 15-246-2 +always \u36A4 16-5 +always \u36A5 1256-2 +always \u36A6 16-2 +always \u36A7 2345-4 always \u36A8 1456 -always \u36A9 1456 -always \u36AA 1456 -always \u36AB 1456 +always \u36A9 1245-1236-4 +always \u36AA 1235-146-5 +always \u36AB 24-345-5 always \u36AC 1456 -always \u36AD 1456 +always \u36AD 234-2 always \u36AE 1456 -always \u36AF 1456 -always \u36B0 1456 +always \u36AF 15-1456-2 +always \u36B0 135-16-4 always \u36B1 1456 -always \u36B2 1456 +always \u36B2 145-2345-4 always \u36B3 1456 -always \u36B4 1456 +always \u36B4 135-34-5 always \u36B5 1456 -always \u36B6 1456 -always \u36B7 1456 +always \u36B6 15-156-5 +always \u36B7 156-4 always \u36B8 1456 -always \u36B9 1456 -always \u36BA 1456 +always \u36B9 134-146-4 +always \u36BA 256-5 always \u36BB 1456 always \u36BC 1456 -always \u36BD 1456 +always \u36BD 245-246-4 always \u36BE 1456 -always \u36BF 1456 +always \u36BF 1234-146-2 always \u36C0 1456 always \u36C1 1456 -always \u36C2 1456 -always \u36C3 1456 +always \u36C2 1345-25-4 +always \u36C3 13-346-2 always \u36C4 1456 -always \u36C5 1456 -always \u36C6 1456 +always \u36C5 156-5 +always \u36C6 145-25-4 always \u36C7 1456 always \u36C8 1456 always \u36C9 1456 -always \u36CA 1456 +always \u36CA 145-25-4 always \u36CB 1456 always \u36CC 1456 -always \u36CD 1456 +always \u36CD 245-346-5 always \u36CE 1456 -always \u36CF 1456 -always \u36D0 1456 -always \u36D1 1456 -always \u36D2 1456 +always \u36CF 12356-5 +always \u36D0 15-12356-4 +always \u36D1 245-1236-5 +always \u36D2 145-12356-5 always \u36D3 1456 -always \u36D4 1456 -always \u36D5 1456 +always \u36D4 1234-1356-2 +always \u36D5 16-5 always \u36D6 1456 -always \u36D7 1456 -always \u36D8 1456 -always \u36D9 1456 -always \u36DA 1456 -always \u36DB 1456 -always \u36DC 1456 -always \u36DD 1456 -always \u36DE 1456 +always \u36D7 125-25-5 +always \u36D8 1234-126-5 +always \u36D9 245-346-5 +always \u36DA 124-12346-4 +always \u36DB 15-1456-5 +always \u36DC 234-2 +always \u36DD 135-356-5 +always \u36DE 14-12346-5 always \u36DF 1456 always \u36E0 1456 always \u36E1 1456 always \u36E2 1456 always \u36E3 1456 always \u36E4 1456 -always \u36E5 1456 -always \u36E6 1456 -always \u36E7 1456 -always \u36E8 1456 -always \u36E9 1456 -always \u36EA 1456 +always \u36E5 124-345-5 +always \u36E6 14-1236-4 +always \u36E7 134-1236-4 +always \u36E8 245-46-4 +always \u36E9 1-12356-2 +always \u36EA 2345-5 always \u36EB 1456 -always \u36EC 1456 +always \u36EC 14-34-5 always \u36ED 1456 -always \u36EE 1456 -always \u36EF 1456 +always \u36EE 15-146-4 +always \u36EF 134-2345-4 always \u36F0 1456 -always \u36F1 1456 -always \u36F2 1456 -always \u36F3 1456 -always \u36F4 1456 +always \u36F1 1245-1246-5 +always \u36F2 12345-345-5 +always \u36F3 12-345-5 +always \u36F4 1345-146-4 always \u36F5 1456 -always \u36F6 1456 +always \u36F6 12-12356-2 always \u36F7 1456 -always \u36F8 1456 -always \u36F9 1456 +always \u36F8 24-34-5 +always \u36F9 1234-2345-2 always \u36FA 1456 -always \u36FB 1456 -always \u36FC 1456 +always \u36FB 123-1246-4 +always \u36FC 24-345-5 always \u36FD 1456 -always \u36FE 1456 -always \u36FF 1456 +always \u36FE 15-2345-2 +always \u36FF 1-156-5 always \u3700 1456 always \u3701 1456 always \u3702 1456 -always \u3703 1456 -always \u3704 1456 -always \u3705 1456 -always \u3706 1456 -always \u3707 1456 -always \u3708 1456 +always \u3703 14-2345-5 +always \u3704 15-256-2 +always \u3705 15-1256-5 +always \u3706 134-16-5 +always \u3707 1235-1246-5 +always \u3708 134-34-5 always \u3709 1456 -always \u370A 1456 -always \u370B 1456 -always \u370C 1456 -always \u370D 1456 -always \u370E 1456 -always \u370F 1456 -always \u3710 1456 -always \u3711 1456 -always \u3712 1456 -always \u3713 1456 +always \u370A 1234-1346-5 +always \u370B 16-5 +always \u370C 13-12356-5 +always \u370D 124-1346-2 +always \u370E 245-16-2 +always \u370F 256-2 +always \u3710 24-34-5 +always \u3711 12345-34-2 +always \u3712 16-5 +always \u3713 145-345-2 always \u3714 1456 -always \u3715 1456 -always \u3716 1456 -always \u3717 1456 -always \u3718 1456 -always \u3719 1456 -always \u371A 1456 -always \u371B 1456 -always \u371C 1456 -always \u371D 1456 -always \u371E 1456 +always \u3715 14-2345-2 +always \u3716 245-146-2 +always \u3717 245-1236-4 +always \u3718 13-1256-5 +always \u3719 14-34-5 +always \u371A 15-34-5 +always \u371B 1345-136-5 +always \u371C 146-5 +always \u371D 1236-4 +always \u371E 245-2345-5 always \u371F 1456 always \u3720 1456 always \u3721 1456 always \u3722 1456 -always \u3723 1456 -always \u3724 1456 -always \u3725 1456 -always \u3726 1456 -always \u3727 1456 -always \u3728 1456 -always \u3729 1456 -always \u372A 1456 -always \u372B 1456 +always \u3723 1245-1236-2 +always \u3724 24-136-4 +always \u3725 134-2456-2 +always \u3726 1235-1236-5 +always \u3727 236-5 +always \u3728 156-2 +always \u3729 146-5 +always \u372A 15-2345-4 +always \u372B 134-345-5 always \u372C 1456 always \u372D 1456 -always \u372E 1456 +always \u372E 14-1236-5 always \u372F 1456 -always \u3730 1456 -always \u3731 1456 -always \u3732 1456 -always \u3733 1456 -always \u3734 1456 -always \u3735 1456 -always \u3736 1456 -always \u3737 1456 -always \u3738 1456 -always \u3739 1456 -always \u373A 1456 -always \u373B 1456 -always \u373C 1456 -always \u373D 1456 -always \u373E 1456 -always \u373F 1456 -always \u3740 1456 -always \u3741 1456 -always \u3742 1456 -always \u3743 1456 -always \u3744 1456 -always \u3745 1456 +always \u3730 236-5 +always \u3731 145-12346-5 +always \u3732 12346-4 +always \u3733 1235-2356-2 +always \u3734 134-1356-5 +always \u3735 1345-246-4 +always \u3736 12456-4 +always \u3737 134-16-2 +always \u3738 1345-346-5 +always \u3739 245-1256-2 +always \u373A 125-1236-5 +always \u373B 14-2345-5 +always \u373C 1-156-2 +always \u373D 125-156-4 +always \u373E 1235-2456-2 +always \u373F 15-1256-5 +always \u3740 1235-146-5 +always \u3741 15-256-2 +always \u3742 1-156-5 +always \u3743 12345-1236-5 +always \u3744 12-123456-2 +always \u3745 13-12356-5 always \u3746 1456 -always \u3747 1456 -always \u3748 1456 -always \u3749 1456 -always \u374A 1456 -always \u374B 1456 -always \u374C 1456 -always \u374D 1456 -always \u374E 1456 -always \u374F 1456 -always \u3750 1456 -always \u3751 1456 +always \u3747 12-123456-2 +always \u3748 14-12456-2 +always \u3749 1-34-5 +always \u374A 24-12356-4 +always \u374B 14-246-2 +always \u374C 13-346-2 +always \u374D 15-346-4 +always \u374E 145-13456-5 +always \u374F 13-346-5 +always \u3750 1245-12346-2 +always \u3751 134-1346-2 always \u3752 1456 -always \u3753 1456 -always \u3754 1456 -always \u3755 1456 -always \u3756 1456 -always \u3757 1456 -always \u3758 1456 -always \u3759 1456 +always \u3753 13-2346-2 +always \u3754 246-5 +always \u3755 1345-13456-2 +always \u3756 16-2 +always \u3757 14-1346-2 +always \u3758 235-2 +always \u3759 1456-2 always \u375A 1456 -always \u375B 1456 +always \u375B 15-34-5 always \u375C 1456 -always \u375D 1456 -always \u375E 1456 -always \u375F 1456 -always \u3760 1456 -always \u3761 1456 -always \u3762 1456 -always \u3763 1456 -always \u3764 1456 -always \u3765 1456 -always \u3766 1456 -always \u3767 1456 +always \u375D 14-1456-2 +always \u375E 23456-5 +always \u375F 134-146-2 +always \u3760 134-13456-2 +always \u3761 125-1246-5 +always \u3762 1256-4 +always \u3763 346-5 +always \u3764 13-12356-5 +always \u3765 134-16-4 +always \u3766 13-256-5 +always \u3767 123456-4 always \u3768 1456 always \u3769 1456 -always \u376A 1456 -always \u376B 1456 +always \u376A 145-2345-5 +always \u376B 14-12346-2 always \u376C 1456 -always \u376D 1456 -always \u376E 1456 -always \u376F 1456 -always \u3770 1456 -always \u3771 1456 -always \u3772 1456 +always \u376D 15-13456-4 +always \u376E 245-1246-5 +always \u376F 245-246-2 +always \u3770 134-2345-2 +always \u3771 134-1356-5 +always \u3772 245-1456-4 always \u3773 1456 -always \u3774 1456 -always \u3775 1456 -always \u3776 1456 +always \u3774 12456-2 +always \u3775 145-2346-2 +always \u3776 2456-5 always \u3777 1456 -always \u3778 1456 -always \u3779 1456 -always \u377A 1456 -always \u377B 1456 +always \u3778 135-2345-5 +always \u3779 1345-12356-2 +always \u377A 14-2345-2 +always \u377B 13-1456-4 always \u377C 1456 -always \u377D 1456 -always \u377E 1456 -always \u377F 1456 +always \u377D 12-1246-2 +always \u377E 125-25-4 +always \u377F 135-126-2 always \u3780 1456 -always \u3781 1456 -always \u3782 1456 -always \u3783 1456 +always \u3781 246-5 +always \u3782 124-1246-4 +always \u3783 13-16-2 always \u3784 1456 -always \u3785 1456 -always \u3786 1456 -always \u3787 1456 +always \u3785 13-25-4 +always \u3786 13-16-4 +always \u3787 1246-4 always \u3788 1456 always \u3789 1456 -always \u378A 1456 -always \u378B 1456 -always \u378C 1456 +always \u378A 15-1256-5 +always \u378B 1345-2345-4 +always \u378C 256-5 always \u378D 1456 -always \u378E 1456 -always \u378F 1456 -always \u3790 1456 -always \u3791 1456 -always \u3792 1456 -always \u3793 1456 -always \u3794 1456 -always \u3795 1456 -always \u3796 1456 -always \u3797 1456 -always \u3798 1456 -always \u3799 1456 -always \u379A 1456 -always \u379B 1456 +always \u378E 135-345-4 +always \u378F 1-2346-2 +always \u3790 13-1256-3 +always \u3791 1246-4 +always \u3792 15-16-5 +always \u3793 245-16-4 +always \u3794 16-2 +always \u3795 15-346-5 +always \u3796 245-156-5 +always \u3797 245-234-2 +always \u3798 124-123456-2 +always \u3799 1345-246-5 +always \u379A 245-16-5 +always \u379B 13-16-4 always \u379C 1456 always \u379D 1456 always \u379E 1456 -always \u379F 1456 -always \u37A0 1456 -always \u37A1 1456 +always \u379F 145-2345-5 +always \u37A0 14-146-2 +always \u37A1 1-1236-4 always \u37A2 1456 always \u37A3 1456 -always \u37A4 1456 -always \u37A5 1456 -always \u37A6 1456 -always \u37A7 1456 -always \u37A8 1456 -always \u37A9 1456 -always \u37AA 1456 -always \u37AB 1456 -always \u37AC 1456 -always \u37AD 1456 +always \u37A4 1456-2 +always \u37A5 245-136-2 +always \u37A6 13-16-4 +always \u37A7 1235-1246-5 +always \u37A8 125-2456-4 +always \u37A9 14-1236-2 +always \u37AA 1345-146-2 +always \u37AB 13-1256-5 +always \u37AC 245-1456-5 +always \u37AD 145-2456-5 always \u37AE 1456 -always \u37AF 1456 -always \u37B0 1456 +always \u37AF 13-346-2 +always \u37B0 15-1256-4 always \u37B1 1456 -always \u37B2 1456 -always \u37B3 1456 -always \u37B4 1456 +always \u37B2 235-5 +always \u37B3 145-12356-4 +always \u37B4 12-156-2 always \u37B5 1456 -always \u37B6 1456 -always \u37B7 1456 -always \u37B8 1456 -always \u37B9 1456 -always \u37BA 1456 -always \u37BB 1456 -always \u37BC 1456 -always \u37BD 1456 -always \u37BE 1456 -always \u37BF 1456 -always \u37C0 1456 -always \u37C1 1456 -always \u37C2 1456 +always \u37B6 134-1456-4 +always \u37B7 1235-456-2 +always \u37B8 15-1246-5 +always \u37B9 123-2346-4 +always \u37BA 125-34-2 +always \u37BB 1235-146-5 +always \u37BC 12-1356-2 +always \u37BD 15-236-5 +always \u37BE 1345-16-2 +always \u37BF 12-156-5 +always \u37C0 14-2345-2 +always \u37C1 1236-5 +always \u37C2 12-156-4 always \u37C3 1456 -always \u37C4 1456 -always \u37C5 1456 -always \u37C6 1456 -always \u37C7 1456 -always \u37C8 1456 -always \u37C9 1456 -always \u37CA 1456 -always \u37CB 1456 -always \u37CC 1456 -always \u37CD 1456 -always \u37CE 1456 -always \u37CF 1456 -always \u37D0 1456 -always \u37D1 1456 +always \u37C4 15-46-2 +always \u37C5 46-2 +always \u37C6 1235-35-2 +always \u37C7 245-25-2 +always \u37C8 245-234-2 +always \u37C9 14-146-2 +always \u37CA 12345-34-2 +always \u37CB 145-1246-5 +always \u37CC 134-1346-2 +always \u37CD 14-1346-2 +always \u37CE 124-25-4 +always \u37CF 1235-1236-2 +always \u37D0 134-1346-4 +always \u37D1 135-126-2 always \u37D2 1456 -always \u37D3 1456 -always \u37D4 1456 +always \u37D3 245-16-2 +always \u37D4 1235-1236-2 always \u37D5 1456 -always \u37D6 1456 +always \u37D6 14-12346-5 always \u37D7 1456 -always \u37D8 1456 -always \u37D9 1456 -always \u37DA 1456 -always \u37DB 1456 -always \u37DC 1456 -always \u37DD 1456 -always \u37DE 1456 -always \u37DF 1456 -always \u37E0 1456 +always \u37D8 124-246-2 +always \u37D9 14-146-4 +always \u37DA 245-16-2 +always \u37DB 125-1236-5 +always \u37DC 134-16-2 +always \u37DD 1234-356-2 +always \u37DE 1-1236-5 +always \u37DF 15-46-5 +always \u37E0 13-1346-4 always \u37E1 1456 -always \u37E2 1456 +always \u37E2 245-16-2 always \u37E3 1456 -always \u37E4 1456 +always \u37E4 14-34-5 always \u37E5 1456 -always \u37E6 1456 -always \u37E7 1456 -always \u37E8 1456 -always \u37E9 1456 -always \u37EA 1456 -always \u37EB 1456 -always \u37EC 1456 -always \u37ED 1456 +always \u37E6 256-5 +always \u37E7 2346-5 +always \u37E8 245-45-2 +always \u37E9 134-1456-2 +always \u37EA 1246-4 +always \u37EB 245-45-2 +always \u37EC 24-34-4 +always \u37ED 134-1456-2 always \u37EE 1456 always \u37EF 1456 -always \u37F0 1456 -always \u37F1 1456 -always \u37F2 1456 -always \u37F3 1456 -always \u37F4 1456 -always \u37F5 1456 -always \u37F6 1456 -always \u37F7 1456 +always \u37F0 134-13456-4 +always \u37F1 246-4 +always \u37F2 13-236-2 +always \u37F3 14-16-5 +always \u37F4 123-2356-5 +always \u37F5 13-1346-4 +always \u37F6 45-2 +always \u37F7 145-345-1 always \u37F8 1456 -always \u37F9 1456 -always \u37FA 1456 -always \u37FB 1456 -always \u37FC 1456 -always \u37FD 1456 +always \u37F9 14-146-2 +always \u37FA 14-12356-2 +always \u37FB 245-2345-5 +always \u37FC 146-2 +always \u37FD 135-246-4 always \u37FE 1456 -always \u37FF 1456 -always \u3800 1456 +always \u37FF 134-1346-2 +always \u3800 145-146-4 always \u3801 1456 -always \u3802 1456 +always \u3802 146-2 always \u3803 1456 -always \u3804 1456 -always \u3805 1456 +always \u3804 15-16-2 +always \u3805 12345-34-2 always \u3806 1456 -always \u3807 1456 -always \u3808 1456 -always \u3809 1456 -always \u380A 1456 -always \u380B 1456 +always \u3807 13-234-5 +always \u3808 1245-123456-5 +always \u3809 124-12346-2 +always \u380A 245-1256-3 +always \u380B 2346-5 always \u380C 1456 -always \u380D 1456 -always \u380E 1456 -always \u380F 1456 -always \u3810 1456 -always \u3811 1456 -always \u3812 1456 -always \u3813 1456 -always \u3814 1456 -always \u3815 1456 -always \u3816 1456 -always \u3817 1456 -always \u3818 1456 -always \u3819 1456 -always \u381A 1456 -always \u381B 1456 -always \u381C 1456 -always \u381D 1456 +always \u380D 13-16-2 +always \u380E 13-16-2 +always \u380F 1235-35-2 +always \u3810 13-246-5 +always \u3811 125-1246-5 +always \u3812 135-246-4 +always \u3813 134-1356-2 +always \u3814 135-2456-5 +always \u3815 1246-4 +always \u3816 13-16-5 +always \u3817 146-5 +always \u3818 1256-4 +always \u3819 1235-146-2 +always \u381A 145-1246-5 +always \u381B 25-5 +always \u381C 1345-16-5 +always \u381D 245-12456-2 always \u381E 1456 -always \u381F 1456 -always \u3820 1456 -always \u3821 1456 -always \u3822 1456 -always \u3823 1456 +always \u381F 14-16-2 +always \u3820 14-34-2 +always \u3821 1345-246-4 +always \u3822 1235-35-5 +always \u3823 14-2456-5 always \u3824 1456 -always \u3825 1456 +always \u3825 14-1256-5 always \u3826 1456 -always \u3827 1456 -always \u3828 1456 +always \u3827 134-16-2 +always \u3828 1256-5 always \u3829 1456 -always \u382A 1456 +always \u382A 13-1256-5 always \u382B 1456 always \u382C 1456 -always \u382D 1456 +always \u382D 1-1236-4 always \u382E 1456 -always \u382F 1456 +always \u382F 16-4 always \u3830 1456 -always \u3831 1456 -always \u3832 1456 +always \u3831 13-16-5 +always \u3832 135-16-4 always \u3833 1456 -always \u3834 1456 +always \u3834 1245-136-5 always \u3835 1456 -always \u3836 1456 -always \u3837 1456 -always \u3838 1456 -always \u3839 1456 -always \u383A 1456 +always \u3836 12345-1236-2 +always \u3837 13-2346-2 +always \u3838 123-34-5 +always \u3839 13-346-5 +always \u383A 134-246-2 always \u383B 1456 always \u383C 1456 -always \u383D 1456 +always \u383D 124-12346-2 always \u383E 1456 -always \u383F 1456 -always \u3840 1456 -always \u3841 1456 -always \u3842 1456 +always \u383F 245-156-4 +always \u3840 135-16-5 +always \u3841 123-2456-4 +always \u3842 14-16-5 always \u3843 1456 -always \u3844 1456 -always \u3845 1456 +always \u3844 15-123456-4 +always \u3845 1345-25-4 always \u3846 1456 -always \u3847 1456 -always \u3848 1456 -always \u3849 1456 -always \u384A 1456 -always \u384B 1456 -always \u384C 1456 +always \u3847 13-16-2 +always \u3848 134-136-2 +always \u3849 15-2345-2 +always \u384A 245-23456-5 +always \u384B 2346-5 +always \u384C 134-146-5 always \u384D 1456 always \u384E 1456 -always \u384F 1456 +always \u384F 124-12356-2 always \u3850 1456 -always \u3851 1456 +always \u3851 245-246-4 always \u3852 1456 always \u3853 1456 -always \u3854 1456 +always \u3854 34-5 always \u3855 1456 -always \u3856 1456 -always \u3857 1456 -always \u3858 1456 -always \u3859 1456 +always \u3856 12-456-2 +always \u3857 124-16-2 +always \u3858 14-2345-2 +always \u3859 135-16-5 always \u385A 1456 -always \u385B 1456 -always \u385C 1456 -always \u385D 1456 -always \u385E 1456 +always \u385B 134-1346-2 +always \u385C 15-236-4 +always \u385D 12345-1356-5 +always \u385E 14-356-4 always \u385F 1456 -always \u3860 1456 -always \u3861 1456 -always \u3862 1456 -always \u3863 1456 +always \u3860 1-1356-5 +always \u3861 12-34-2 +always \u3862 134-1236-5 +always \u3863 14-12346-2 always \u3864 1456 -always \u3865 1456 +always \u3865 1456-4 always \u3866 1456 -always \u3867 1456 -always \u3868 1456 -always \u3869 1456 -always \u386A 1456 -always \u386B 1456 +always \u3867 1-1356-5 +always \u3868 245-2345-3 +always \u3869 14-12456-2 +always \u386A 1345-346-2 +always \u386B 16-5 always \u386C 1456 -always \u386D 1456 -always \u386E 1456 -always \u386F 1456 -always \u3870 1456 -always \u3871 1456 -always \u3872 1456 -always \u3873 1456 +always \u386D 13-16-5 +always \u386E 13-16-2 +always \u386F 1-2456-2 +always \u3870 1256-4 +always \u3871 13-234-4 +always \u3872 1235-12456-2 +always \u3873 145-16-4 always \u3874 1456 -always \u3875 1456 -always \u3876 1456 -always \u3877 1456 -always \u3878 1456 -always \u3879 1456 -always \u387A 1456 -always \u387B 1456 -always \u387C 1456 -always \u387D 1456 -always \u387E 1456 -always \u387F 1456 -always \u3880 1456 -always \u3881 1456 -always \u3882 1456 -always \u3883 1456 -always \u3884 1456 -always \u3885 1456 -always \u3886 1456 +always \u3875 14-13456-2 +always \u3876 13-16-5 +always \u3877 135-136-4 +always \u3878 1-345-4 +always \u3879 245-156-5 +always \u387A 145-1236-5 +always \u387B 14-246-5 +always \u387C 16-5 +always \u387D 1-146-5 +always \u387E 15-2345-5 +always \u387F 12-156-5 +always \u3880 245-156-5 +always \u3881 12-156-4 +always \u3882 2345-4 +always \u3883 14-1346-2 +always \u3884 145-12356-5 +always \u3885 14-12346-5 +always \u3886 12-1236-2 always \u3887 1456 -always \u3888 1456 -always \u3889 1456 -always \u388A 1456 -always \u388B 1456 +always \u3888 124-1246-2 +always \u3889 12-345-2 +always \u388A 2456-4 +always \u388B 12-156-4 always \u388C 1456 -always \u388D 1456 -always \u388E 1456 -always \u388F 1456 +always \u388D 13456-2 +always \u388E 12-345-5 +always \u388F 124-12356-2 always \u3890 1456 -always \u3891 1456 -always \u3892 1456 -always \u3893 1456 -always \u3894 1456 +always \u3891 124-1246-2 +always \u3892 12-345-2 +always \u3893 246-4 +always \u3894 125-12346-4 always \u3895 1456 always \u3896 1456 -always \u3897 1456 -always \u3898 1456 -always \u3899 1456 -always \u389A 1456 -always \u389B 1456 +always \u3897 245-246-5 +always \u3898 14-2345-2 +always \u3899 245-1456-2 +always \u389A 14-34-4 +always \u389B 2345-5 always \u389C 1456 always \u389D 1456 -always \u389E 1456 -always \u389F 1456 -always \u38A0 1456 -always \u38A1 1456 +always \u389E 16-5 +always \u389F 12-1236-4 +always \u38A0 13-235-4 +always \u38A1 13-46-4 always \u38A2 1456 -always \u38A3 1456 +always \u38A3 13-13456-5 always \u38A4 1456 -always \u38A5 1456 +always \u38A5 145-12346-5 always \u38A6 1456 -always \u38A7 1456 -always \u38A8 1456 -always \u38A9 1456 +always \u38A7 13-45-5 +always \u38A8 1235-1236-5 +always \u38A9 145-16-5 always \u38AA 1456 always \u38AB 1456 -always \u38AC 1456 +always \u38AC 1235-12346-2 always \u38AD 1456 -always \u38AE 1456 -always \u38AF 1456 -always \u38B0 1456 +always \u38AE 12-156-2 +always \u38AF 134-1456-2 +always \u38B0 135-16-5 always \u38B1 1456 -always \u38B2 1456 -always \u38B3 1456 +always \u38B2 15-256-5 +always \u38B3 14-34-2 always \u38B4 1456 -always \u38B5 1456 -always \u38B6 1456 +always \u38B5 24-2346-5 +always \u38B6 135-16-5 always \u38B7 1456 -always \u38B8 1456 +always \u38B8 135-16-5 always \u38B9 1456 -always \u38BA 1456 -always \u38BB 1456 -always \u38BC 1456 -always \u38BD 1456 -always \u38BE 1456 +always \u38BA 15-2345-2 +always \u38BB 1246-4 +always \u38BC 135-346-5 +always \u38BD 156-4 +always \u38BE 13-45-5 always \u38BF 1456 -always \u38C0 1456 -always \u38C1 1456 -always \u38C2 1456 -always \u38C3 1456 -always \u38C4 1456 -always \u38C5 1456 -always \u38C6 1456 -always \u38C7 1456 -always \u38C8 1456 +always \u38C0 1-136-5 +always \u38C1 135-356-5 +always \u38C2 16-5 +always \u38C3 1256-4 +always \u38C4 245-1256-2 +always \u38C5 125-1236-5 +always \u38C6 134-16-2 +always \u38C7 1345-16-4 +always \u38C8 15-156-5 always \u38C9 1456 always \u38CA 1456 always \u38CB 1456 -always \u38CC 1456 -always \u38CD 1456 -always \u38CE 1456 -always \u38CF 1456 -always \u38D0 1456 -always \u38D1 1456 -always \u38D2 1456 -always \u38D3 1456 +always \u38CC 24-1236-5 +always \u38CD 124-2456-2 +always \u38CE 134-34-5 +always \u38CF 13-13456-5 +always \u38D0 135-2345-5 +always \u38D1 1245-12346-2 +always \u38D2 245-1356-5 +always \u38D3 245-1236-5 always \u38D4 1456 always \u38D5 1456 always \u38D6 1456 always \u38D7 1456 always \u38D8 1456 -always \u38D9 1456 -always \u38DA 1456 -always \u38DB 1456 -always \u38DC 1456 +always \u38D9 145-16-2 +always \u38DA 124-12346-2 +always \u38DB 124-345-5 +always \u38DC 15-13456-2 always \u38DD 1456 -always \u38DE 1456 -always \u38DF 1456 -always \u38E0 1456 +always \u38DE 145-25-2 +always \u38DF 15-16-5 +always \u38E0 124-12346-2 always \u38E1 1456 -always \u38E2 1456 -always \u38E3 1456 -always \u38E4 1456 -always \u38E5 1456 +always \u38E2 124-16-2 +always \u38E3 24-1236-4 +always \u38E4 13-2345-5 +always \u38E5 1-156-5 always \u38E6 1456 -always \u38E7 1456 +always \u38E7 1456-5 always \u38E8 1456 always \u38E9 1456 -always \u38EA 1456 -always \u38EB 1456 -always \u38EC 1456 +always \u38EA 1235-12456-4 +always \u38EB 1-12346-4 +always \u38EC 245-16-5 always \u38ED 1456 always \u38EE 1456 -always \u38EF 1456 -always \u38F0 1456 -always \u38F1 1456 -always \u38F2 1456 +always \u38EF 15-346-5 +always \u38F0 15-346-5 +always \u38F1 125-2346-2 +always \u38F2 1246-2 always \u38F3 1456 always \u38F4 1456 -always \u38F5 1456 -always \u38F6 1456 -always \u38F7 1456 +always \u38F5 124-345-5 +always \u38F6 1-1236-3 +always \u38F7 1345-13456-5 always \u38F8 1456 always \u38F9 1456 always \u38FA 1456 -always \u38FB 1456 -always \u38FC 1456 -always \u38FD 1456 -always \u38FE 1456 -always \u38FF 1456 +always \u38FB 16-5 +always \u38FC 1245-136-4 +always \u38FD 24-34-5 +always \u38FE 12-345-5 +always \u38FF 1-25-2 always \u3900 1456 -always \u3901 1456 -always \u3902 1456 -always \u3903 1456 -always \u3904 1456 -always \u3905 1456 -always \u3906 1456 -always \u3907 1456 -always \u3908 1456 -always \u3909 1456 -always \u390A 1456 +always \u3901 134-2345-4 +always \u3902 13-16-2 +always \u3903 12345-1346-2 +always \u3904 1234-356-5 +always \u3905 2456-5 +always \u3906 12345-1236-5 +always \u3907 146-4 +always \u3908 245-1456-5 +always \u3909 245-23456-5 +always \u390A 15-246-5 always \u390B 1456 always \u390C 1456 -always \u390D 1456 +always \u390D 245-246-4 always \u390E 1456 -always \u390F 1456 +always \u390F 124-12346-2 always \u3910 1456 -always \u3911 1456 +always \u3911 234-5 always \u3912 1456 -always \u3913 1456 -always \u3914 1456 -always \u3915 1456 -always \u3916 1456 +always \u3913 135-136-5 +always \u3914 12345-34-2 +always \u3915 12-34-5 +always \u3916 1-34-5 always \u3917 1456 -always \u3918 1456 +always \u3918 12-34-5 always \u3919 1456 -always \u391A 1456 -always \u391B 1456 -always \u391C 1456 +always \u391A 1235-1346-2 +always \u391B 1345-1456-2 +always \u391C 13-236-2 always \u391D 1456 -always \u391E 1456 -always \u391F 1456 -always \u3920 1456 -always \u3921 1456 -always \u3922 1456 +always \u391E 12-345-5 +always \u391F 123-12346-4 +always \u3920 14-346-5 +always \u3921 14-16-5 +always \u3922 15-1256-5 always \u3923 1456 -always \u3924 1456 -always \u3925 1456 -always \u3926 1456 -always \u3927 1456 -always \u3928 1456 -always \u3929 1456 -always \u392A 1456 -always \u392B 1456 -always \u392C 1456 +always \u3924 1256-2 +always \u3925 1235-2456-5 +always \u3926 14-16-5 +always \u3927 1235-12356-2 +always \u3928 13-12346-4 +always \u3929 123-2346-5 +always \u392A 45-5 +always \u392B 145-2346-2 +always \u392C 1235-1246-5 always \u392D 1456 -always \u392E 1456 -always \u392F 1456 -always \u3930 1456 -always \u3931 1456 -always \u3932 1456 -always \u3933 1456 -always \u3934 1456 -always \u3935 1456 -always \u3936 1456 +always \u392E 123-456-2 +always \u392F 13-235-4 +always \u3930 125-1236-4 +always \u3931 12345-34-5 +always \u3932 245-346-5 +always \u3933 135-356-4 +always \u3934 15-16-2 +always \u3935 245-156-2 +always \u3936 1234-1346-2 always \u3937 1456 -always \u3938 1456 -always \u3939 1456 -always \u393A 1456 +always \u3938 15-16-5 +always \u3939 245-234-2 +always \u393A 1235-456-4 always \u393B 1456 always \u393C 1456 -always \u393D 1456 -always \u393E 1456 +always \u393D 12-12356-2 +always \u393E 15-1236-5 always \u393F 1456 -always \u3940 1456 -always \u3941 1456 -always \u3942 1456 -always \u3943 1456 -always \u3944 1456 -always \u3945 1456 -always \u3946 1456 -always \u3947 1456 -always \u3948 1456 -always \u3949 1456 -always \u394A 1456 +always \u3940 145-2346-2 +always \u3941 145-2346-2 +always \u3942 124-2346-5 +always \u3943 134-136-5 +always \u3944 14-13456-2 +always \u3945 24-12356-5 +always \u3946 145-2345-5 +always \u3947 245-1236-2 +always \u3948 145-346-2 +always \u3949 12-2346-5 +always \u394A 1234-1356-2 always \u394B 1456 -always \u394C 1456 -always \u394D 1456 -always \u394E 1456 -always \u394F 1456 -always \u3950 1456 +always \u394C 13-1256-2 +always \u394D 13-16-5 +always \u394E 14-2456-2 +always \u394F 124-2345-4 +always \u3950 45-5 always \u3951 1456 -always \u3952 1456 -always \u3953 1456 -always \u3954 1456 -always \u3955 1456 +always \u3952 245-2456-4 +always \u3953 245-16-4 +always \u3954 1256-2 +always \u3955 14-2345-2 always \u3956 1456 always \u3957 1456 always \u3958 1456 always \u3959 1456 -always \u395A 1456 -always \u395B 1456 -always \u395C 1456 -always \u395D 1456 -always \u395E 1456 -always \u395F 1456 -always \u3960 1456 -always \u3961 1456 -always \u3962 1456 -always \u3963 1456 +always \u395A 1256-2 +always \u395B 13-16-2 +always \u395C 1246-5 +always \u395D 134-16-4 +always \u395E 245-1246-5 +always \u395F 15-346-2 +always \u3960 15-1256-4 +always \u3961 15-16-5 +always \u3962 245-234-2 +always \u3963 1235-1246-5 always \u3964 1456 -always \u3965 1456 -always \u3966 1456 -always \u3967 1456 -always \u3968 1456 -always \u3969 1456 -always \u396A 1456 +always \u3965 1256-2 +always \u3966 245-346-5 +always \u3967 24-123456-5 +always \u3968 12-1246-2 +always \u3969 145-25-4 +always \u396A 14-12356-2 always \u396B 1456 -always \u396C 1456 -always \u396D 1456 -always \u396E 1456 -always \u396F 1456 +always \u396C 1234-1346-2 +always \u396D 124-2456-5 +always \u396E 1-12356-5 +always \u396F 1456-4 always \u3970 1456 -always \u3971 1456 -always \u3972 1456 -always \u3973 1456 -always \u3974 1456 -always \u3975 1456 -always \u3976 1456 -always \u3977 1456 -always \u3978 1456 -always \u3979 1456 -always \u397A 1456 +always \u3971 12345-356-4 +always \u3972 24-136-5 +always \u3973 45-2 +always \u3974 16-2 +always \u3975 1235-123456-5 +always \u3976 15-2346-5 +always \u3977 346-5 +always \u3978 134-1456-4 +always \u3979 12345-136-4 +always \u397A 1235-2346-2 always \u397B 1456 -always \u397C 1456 -always \u397D 1456 -always \u397E 1456 -always \u397F 1456 -always \u3980 1456 -always \u3981 1456 -always \u3982 1456 -always \u3983 1456 -always \u3984 1456 -always \u3985 1456 +always \u397C 1456-4 +always \u397D 245-2346-5 +always \u397E 1345-16-5 +always \u397F 146-5 +always \u3980 12345-1356-2 +always \u3981 14-2345-2 +always \u3982 12-1346-2 +always \u3983 12-1236-4 +always \u3984 134-345-2 +always \u3985 145-16-5 always \u3986 1456 -always \u3987 1456 +always \u3987 14-34-5 always \u3988 1456 -always \u3989 1456 -always \u398A 1456 +always \u3989 16-5 +always \u398A 1235-35-2 always \u398B 1456 -always \u398C 1456 -always \u398D 1456 -always \u398E 1456 -always \u398F 1456 -always \u3990 1456 -always \u3991 1456 -always \u3992 1456 -always \u3993 1456 -always \u3994 1456 -always \u3995 1456 -always \u3996 1456 -always \u3997 1456 +always \u398C 124-1246-5 +always \u398D 2346-5 +always \u398E 1235-35-5 +always \u398F 15-123456-4 +always \u3990 1345-16-5 +always \u3991 14-2345-4 +always \u3992 14-16-2 +always \u3993 15-2345-5 +always \u3994 2345-5 +always \u3995 14-12346-2 +always \u3996 134-136-5 +always \u3997 13-2345-5 always \u3998 1456 always \u3999 1456 -always \u399A 1456 -always \u399B 1456 -always \u399C 1456 -always \u399D 1456 -always \u399E 1456 -always \u399F 1456 +always \u399A 135-2345-4 +always \u399B 1256-2 +always \u399C 1235-25-5 +always \u399D 134-246-4 +always \u399E 12-12356-2 +always \u399F 1235-2456-5 always \u39A0 1456 -always \u39A1 1456 -always \u39A2 1456 -always \u39A3 1456 -always \u39A4 1456 -always \u39A5 1456 -always \u39A6 1456 -always \u39A7 1456 -always \u39A8 1456 -always \u39A9 1456 -always \u39AA 1456 +always \u39A1 14-2346-5 +always \u39A2 13-346-2 +always \u39A3 1246-5 +always \u39A4 16-5 +always \u39A5 1235-12456-2 +always \u39A6 1235-2346-5 +always \u39A7 245-1236-4 +always \u39A8 14-1236-2 +always \u39A9 1456-4 +always \u39AA 15-346-5 always \u39AB 1456 -always \u39AC 1456 -always \u39AD 1456 -always \u39AE 1456 -always \u39AF 1456 +always \u39AC 14-25-4 +always \u39AD 14-13456-2 +always \u39AE 245-2345-2 +always \u39AF 1235-25-5 always \u39B0 1456 -always \u39B1 1456 +always \u39B1 25-4 always \u39B2 1456 always \u39B3 1456 -always \u39B4 1456 +always \u39B4 13-2346-2 always \u39B5 1456 -always \u39B6 1456 -always \u39B7 1456 -always \u39B8 1456 -always \u39B9 1456 -always \u39BA 1456 -always \u39BB 1456 -always \u39BC 1456 -always \u39BD 1456 -always \u39BE 1456 -always \u39BF 1456 -always \u39C0 1456 -always \u39C1 1456 -always \u39C2 1456 +always \u39B6 145-346-2 +always \u39B7 235-4 +always \u39B8 13-16-4 +always \u39B9 1346-5 +always \u39BA 1245-34-4 +always \u39BB 15-16-2 +always \u39BC 24-456-5 +always \u39BD 15-1256-5 +always \u39BE 16-2 +always \u39BF 1235-34-5 +always \u39C0 13-16-2 +always \u39C1 245-1256-5 +always \u39C2 124-2345-2 always \u39C3 1456 -always \u39C4 1456 -always \u39C5 1456 +always \u39C4 245-2345-4 +always \u39C5 134-34-5 always \u39C6 1456 -always \u39C7 1456 -always \u39C8 1456 -always \u39C9 1456 -always \u39CA 1456 -always \u39CB 1456 -always \u39CC 1456 -always \u39CD 1456 -always \u39CE 1456 +always \u39C7 134-146-4 +always \u39C8 1456-4 +always \u39C9 13-2456-5 +always \u39CA 135-345-2 +always \u39CB 15-2345-4 +always \u39CC 134-146-5 +always \u39CD 12345-1346-4 +always \u39CE 23456-2 always \u39CF 1456 -always \u39D0 1456 -always \u39D1 1456 -always \u39D2 1456 +always \u39D0 15-12346-4 +always \u39D1 1246-2 +always \u39D2 15-236-2 always \u39D3 1456 -always \u39D4 1456 -always \u39D5 1456 -always \u39D6 1456 -always \u39D7 1456 -always \u39D8 1456 -always \u39D9 1456 -always \u39DA 1456 +always \u39D4 13-2356-5 +always \u39D5 13-234-5 +always \u39D6 2346-5 +always \u39D7 125-156-4 +always \u39D8 245-1246-5 +always \u39D9 135-16-5 +always \u39DA 35-4 always \u39DB 1456 -always \u39DC 1456 +always \u39DC 14-346-5 always \u39DD 1456 always \u39DE 1456 -always \u39DF 1456 +always \u39DF 123-2356-4 always \u39E0 1456 -always \u39E1 1456 +always \u39E1 1235-2456-5 always \u39E2 1456 -always \u39E3 1456 -always \u39E4 1456 -always \u39E5 1456 -always \u39E6 1456 +always \u39E3 1-34-5 +always \u39E4 12-12346-5 +always \u39E5 15-2345-4 +always \u39E6 15-45-5 always \u39E7 1456 -always \u39E8 1456 -always \u39E9 1456 -always \u39EA 1456 -always \u39EB 1456 -always \u39EC 1456 -always \u39ED 1456 +always \u39E8 245-234-2 +always \u39E9 1234-356-5 +always \u39EA 13-1246-4 +always \u39EB 156-2 +always \u39EC 13-12346-4 +always \u39ED 245-235-2 always \u39EE 1456 -always \u39EF 1456 -always \u39F0 1456 -always \u39F1 1456 -always \u39F2 1456 -always \u39F3 1456 -always \u39F4 1456 -always \u39F5 1456 +always \u39EF 14-146-4 +always \u39F0 14-16-5 +always \u39F1 12-136-5 +always \u39F2 15-1236-4 +always \u39F3 135-126-2 +always \u39F4 25-4 +always \u39F5 1234-12356-2 always \u39F6 1456 -always \u39F7 1456 +always \u39F7 145-25-5 always \u39F8 1456 -always \u39F9 1456 -always \u39FA 1456 -always \u39FB 1456 -always \u39FC 1456 -always \u39FD 1456 +always \u39F9 124-2346-5 +always \u39FA 124-345-5 +always \u39FB 1-156-4 +always \u39FC 135-246-5 +always \u39FD 13-34-5 always \u39FE 1456 always \u39FF 1456 -always \u3A00 1456 -always \u3A01 1456 -always \u3A02 1456 -always \u3A03 1456 -always \u3A04 1456 -always \u3A05 1456 -always \u3A06 1456 -always \u3A07 1456 -always \u3A08 1456 -always \u3A09 1456 -always \u3A0A 1456 -always \u3A0B 1456 -always \u3A0C 1456 +always \u3A00 135-13456-4 +always \u3A01 1-156-2 +always \u3A02 145-12346-4 +always \u3A03 12-1356-2 +always \u3A04 1-146-5 +always \u3A05 1345-356-5 +always \u3A06 14-1456-4 +always \u3A07 1234-126-2 +always \u3A08 13-16-4 +always \u3A09 134-1456-4 +always \u3A0A 1246-4 +always \u3A0B 12-2346-4 +always \u3A0C 13-12356-5 always \u3A0D 1456 -always \u3A0E 1456 +always \u3A0E 1245-34-2 always \u3A0F 1456 -always \u3A10 1456 +always \u3A10 135-34-4 always \u3A11 1456 -always \u3A12 1456 -always \u3A13 1456 -always \u3A14 1456 -always \u3A15 1456 -always \u3A16 1456 -always \u3A17 1456 -always \u3A18 1456 -always \u3A19 1456 -always \u3A1A 1456 -always \u3A1B 1456 -always \u3A1C 1456 -always \u3A1D 1456 -always \u3A1E 1456 -always \u3A1F 1456 -always \u3A20 1456 -always \u3A21 1456 +always \u3A12 123-1246-2 +always \u3A13 14-146-2 +always \u3A14 1235-1236-5 +always \u3A15 13456-2 +always \u3A16 1-156-5 +always \u3A17 13-346-2 +always \u3A18 15-13456-4 +always \u3A19 15-346-2 +always \u3A1A 15-256-2 +always \u3A1B 24-1236-4 +always \u3A1C 245-2345-2 +always \u3A1D 15-346-5 +always \u3A1E 15-34-5 +always \u3A1F 1235-2456-2 +always \u3A20 134-16-5 +always \u3A21 1235-123456-2 always \u3A22 1456 always \u3A23 1456 -always \u3A24 1456 -always \u3A25 1456 -always \u3A26 1456 -always \u3A27 1456 -always \u3A28 1456 -always \u3A29 1456 -always \u3A2A 1456 -always \u3A2B 1456 +always \u3A24 1235-1246-5 +always \u3A25 1345-345-5 +always \u3A26 15-12346-4 +always \u3A27 135-136-5 +always \u3A28 14-234-5 +always \u3A29 13-346-2 +always \u3A2A 1235-456-5 +always \u3A2B 14-1236-4 always \u3A2C 1456 -always \u3A2D 1456 -always \u3A2E 1456 -always \u3A2F 1456 -always \u3A30 1456 -always \u3A31 1456 -always \u3A32 1456 -always \u3A33 1456 -always \u3A34 1456 -always \u3A35 1456 -always \u3A36 1456 -always \u3A37 1456 -always \u3A38 1456 -always \u3A39 1456 -always \u3A3A 1456 -always \u3A3B 1456 -always \u3A3C 1456 -always \u3A3D 1456 -always \u3A3E 1456 -always \u3A3F 1456 -always \u3A40 1456 -always \u3A41 1456 +always \u3A2D 1235-34-5 +always \u3A2E 145-12356-3 +always \u3A2F 1235-25-5 +always \u3A30 13-2346-2 +always \u3A31 246-2 +always \u3A32 245-2346-5 +always \u3A33 13-1246-4 +always \u3A34 13-2345-5 +always \u3A35 13-2345-4 +always \u3A36 12-12356-2 +always \u3A37 13-1456-5 +always \u3A38 134-345-5 +always \u3A39 1235-1246-5 +always \u3A3A 134-136-2 +always \u3A3B 245-1236-2 +always \u3A3C 14-236-5 +always \u3A3D 1234-16-4 +always \u3A3E 46-5 +always \u3A3F 13-1256-5 +always \u3A40 13-1256-5 +always \u3A41 245-236-5 always \u3A42 1456 always \u3A43 1456 -always \u3A44 1456 +always \u3A44 24-2456-3 always \u3A45 1456 -always \u3A46 1456 -always \u3A47 1456 -always \u3A48 1456 -always \u3A49 1456 +always \u3A46 13-234-5 +always \u3A47 1235-35-5 +always \u3A48 15-2345-5 +always \u3A49 15-346-2 always \u3A4A 1456 -always \u3A4B 1456 -always \u3A4C 1456 -always \u3A4D 1456 -always \u3A4E 1456 +always \u3A4B 15-34-5 +always \u3A4C 12345-356-5 +always \u3A4D 245-2346-5 +always \u3A4E 346-5 always \u3A4F 1456 always \u3A50 1456 always \u3A51 1456 -always \u3A52 1456 -always \u3A53 1456 -always \u3A54 1456 +always \u3A52 245-1456-2 +always \u3A53 1235-1246-4 +always \u3A54 124-123456-2 always \u3A55 1456 -always \u3A56 1456 -always \u3A57 1456 -always \u3A58 1456 +always \u3A56 245-46-2 +always \u3A57 15-16-2 +always \u3A58 16-4 always \u3A59 1456 -always \u3A5A 1456 -always \u3A5B 1456 -always \u3A5C 1456 -always \u3A5D 1456 -always \u3A5E 1456 -always \u3A5F 1456 -always \u3A60 1456 -always \u3A61 1456 -always \u3A62 1456 +always \u3A5A 134-1356-2 +always \u3A5B 124-12456-2 +always \u3A5C 14-1236-4 +always \u3A5D 1235-146-2 +always \u3A5E 245-156-5 +always \u3A5F 1-2456-5 +always \u3A60 1234-246-4 +always \u3A61 14-25-4 +always \u3A62 134-16-2 always \u3A63 1456 always \u3A64 1456 always \u3A65 1456 -always \u3A66 1456 -always \u3A67 1456 -always \u3A68 1456 -always \u3A69 1456 -always \u3A6A 1456 +always \u3A66 15-346-2 +always \u3A67 135-126-2 +always \u3A68 1235-1246-5 +always \u3A69 245-16-4 +always \u3A6A 15-346-2 always \u3A6B 1456 always \u3A6C 1456 -always \u3A6D 1456 -always \u3A6E 1456 -always \u3A6F 1456 -always \u3A70 1456 -always \u3A71 1456 -always \u3A72 1456 -always \u3A73 1456 -always \u3A74 1456 -always \u3A75 1456 -always \u3A76 1456 +always \u3A6D 135-126-2 +always \u3A6E 245-2345-2 +always \u3A6F 135-1236-4 +always \u3A70 13-246-4 +always \u3A71 13-236-2 +always \u3A72 123-123456-4 +always \u3A73 15-12346-4 +always \u3A74 13-1256-2 +always \u3A75 2346-5 +always \u3A76 1345-346-5 always \u3A77 1456 -always \u3A78 1456 -always \u3A79 1456 +always \u3A78 145-346-2 +always \u3A79 145-346-2 always \u3A7A 1456 -always \u3A7B 1456 +always \u3A7B 13-1246-4 always \u3A7C 1456 -always \u3A7D 1456 -always \u3A7E 1456 +always \u3A7D 245-16-2 +always \u3A7E 12-1246-2 always \u3A7F 1456 -always \u3A80 1456 -always \u3A81 1456 +always \u3A80 1256-2 +always \u3A81 245-1456-2 always \u3A82 1456 -always \u3A83 1456 -always \u3A84 1456 +always \u3A83 123-2346-4 +always \u3A84 12345-34-2 always \u3A85 1456 -always \u3A86 1456 -always \u3A87 1456 -always \u3A88 1456 -always \u3A89 1456 -always \u3A8A 1456 -always \u3A8B 1456 -always \u3A8C 1456 -always \u3A8D 1456 -always \u3A8E 1456 -always \u3A8F 1456 -always \u3A90 1456 -always \u3A91 1456 -always \u3A92 1456 -always \u3A93 1456 -always \u3A94 1456 -always \u3A95 1456 -always \u3A96 1456 -always \u3A97 1456 -always \u3A98 1456 -always \u3A99 1456 -always \u3A9A 1456 -always \u3A9B 1456 -always \u3A9C 1456 -always \u3A9D 1456 -always \u3A9E 1456 +always \u3A86 145-16-4 +always \u3A87 15-2345-5 +always \u3A88 13-1246-5 +always \u3A89 1235-2346-2 +always \u3A8A 245-256-2 +always \u3A8B 1235-1236-5 +always \u3A8C 124-12346-4 +always \u3A8D 135-126-2 +always \u3A8E 24-1236-4 +always \u3A8F 135-16-4 +always \u3A90 14-34-5 +always \u3A91 346-5 +always \u3A92 1345-16-2 +always \u3A93 12-2356-2 +always \u3A94 15-1236-5 +always \u3A95 145-246-5 +always \u3A96 14-34-5 +always \u3A97 124-12356-4 +always \u3A98 14-2345-4 +always \u3A99 123-2346-4 +always \u3A9A 15-1236-5 +always \u3A9B 1-136-4 +always \u3A9C 12-2356-4 +always \u3A9D 14-2345-5 +always \u3A9E 134-146-5 always \u3A9F 1456 -always \u3AA0 1456 -always \u3AA1 1456 -always \u3AA2 1456 -always \u3AA3 1456 -always \u3AA4 1456 +always \u3AA0 245-2345-5 +always \u3AA1 123-2346-4 +always \u3AA2 24-146-4 +always \u3AA3 245-246-5 +always \u3AA4 135-16-5 always \u3AA5 1456 -always \u3AA6 1456 +always \u3AA6 1456-5 always \u3AA7 1456 -always \u3AA8 1456 -always \u3AA9 1456 -always \u3AAA 1456 -always \u3AAB 1456 -always \u3AAC 1456 -always \u3AAD 1456 -always \u3AAE 1456 -always \u3AAF 1456 +always \u3AA8 24-1236-5 +always \u3AA9 15-34-5 +always \u3AAA 15-345-5 +always \u3AAB 1245-1246-5 +always \u3AAC 1-25-2 +always \u3AAD 14-34-2 +always \u3AAE 14-13456-2 +always \u3AAF 12-345-2 always \u3AB0 1456 -always \u3AB1 1456 +always \u3AB1 1235-12456-5 always \u3AB2 1456 always \u3AB3 1456 -always \u3AB4 1456 -always \u3AB5 1456 -always \u3AB6 1456 -always \u3AB7 1456 +always \u3AB4 13-23456-2 +always \u3AB5 135-1236-5 +always \u3AB6 1235-34-2 +always \u3AB7 145-12356-4 always \u3AB8 1456 -always \u3AB9 1456 +always \u3AB9 14-12356-4 always \u3ABA 1456 -always \u3ABB 1456 -always \u3ABC 1456 -always \u3ABD 1456 -always \u3ABE 1456 -always \u3ABF 1456 -always \u3AC0 1456 -always \u3AC1 1456 -always \u3AC2 1456 -always \u3AC3 1456 -always \u3AC4 1456 -always \u3AC5 1456 +always \u3ABB 13-45-5 +always \u3ABC 123-2346-4 +always \u3ABD 15-25-4 +always \u3ABE 13-2346-2 +always \u3ABF 1-2346-2 +always \u3AC0 145-13456-4 +always \u3AC1 145-12456-5 +always \u3AC2 1-34-5 +always \u3AC3 2345-4 +always \u3AC4 1234-1346-2 +always \u3AC5 12-345-2 always \u3AC6 1456 always \u3AC7 1456 always \u3AC8 1456 always \u3AC9 1456 -always \u3ACA 1456 +always \u3ACA 16-4 always \u3ACB 1456 always \u3ACC 1456 -always \u3ACD 1456 -always \u3ACE 1456 -always \u3ACF 1456 -always \u3AD0 1456 -always \u3AD1 1456 -always \u3AD2 1456 -always \u3AD3 1456 -always \u3AD4 1456 +always \u3ACD 234-2 +always \u3ACE 13-123456-4 +always \u3ACF 246-4 +always \u3AD0 246-4 +always \u3AD1 24-156-2 +always \u3AD2 13-12346-4 +always \u3AD3 245-16-4 +always \u3AD4 13-136-5 always \u3AD5 1456 always \u3AD6 1456 -always \u3AD7 1456 -always \u3AD8 1456 -always \u3AD9 1456 -always \u3ADA 1456 -always \u3ADB 1456 -always \u3ADC 1456 +always \u3AD7 1235-12356-5 +always \u3AD8 134-16-5 +always \u3AD9 12345-34-2 +always \u3ADA 1235-34-3 +always \u3ADB 13-456-5 +always \u3ADC 145-1236-5 always \u3ADD 1456 always \u3ADE 1456 -always \u3ADF 1456 +always \u3ADF 2345-2 always \u3AE0 1456 always \u3AE1 1456 -always \u3AE2 1456 +always \u3AE2 245-1256-5 always \u3AE3 1456 -always \u3AE4 1456 -always \u3AE5 1456 +always \u3AE4 12-1346-4 +always \u3AE5 134-13456-4 always \u3AE6 1456 -always \u3AE7 1456 +always \u3AE7 135-146-5 always \u3AE8 1456 always \u3AE9 1456 always \u3AEA 1456 -always \u3AEB 1456 +always \u3AEB 15-2345-4 always \u3AEC 1456 always \u3AED 1456 always \u3AEE 1456 -always \u3AEF 1456 -always \u3AF0 1456 -always \u3AF1 1456 -always \u3AF2 1456 -always \u3AF3 1456 +always \u3AEF 134-146-5 +always \u3AF0 14-1346-4 +always \u3AF1 1345-1236-4 +always \u3AF2 1234-356-5 +always \u3AF3 12-136-2 always \u3AF4 1456 always \u3AF5 1456 -always \u3AF6 1456 +always \u3AF6 245-12356-4 always \u3AF7 1456 -always \u3AF8 1456 -always \u3AF9 1456 +always \u3AF8 245-346-5 +always \u3AF9 145-2456-5 always \u3AFA 1456 -always \u3AFB 1456 -always \u3AFC 1456 -always \u3AFD 1456 +always \u3AFB 123-123456-5 +always \u3AFC 145-346-2 +always \u3AFD 14-34-5 always \u3AFE 1456 always \u3AFF 1456 always \u3B00 1456 always \u3B01 1456 -always \u3B02 1456 -always \u3B03 1456 -always \u3B04 1456 -always \u3B05 1456 -always \u3B06 1456 -always \u3B07 1456 +always \u3B02 1256-2 +always \u3B03 124-2456-2 +always \u3B04 12-1236-5 +always \u3B05 134-1236-5 +always \u3B06 134-2345-2 +always \u3B07 1235-12456-5 always \u3B08 1456 -always \u3B09 1456 -always \u3B0A 1456 -always \u3B0B 1456 -always \u3B0C 1456 -always \u3B0D 1456 -always \u3B0E 1456 -always \u3B0F 1456 -always \u3B10 1456 +always \u3B09 1345-12456-4 +always \u3B0A 1235-12456-4 +always \u3B0B 1235-12356-2 +always \u3B0C 13-13456-5 +always \u3B0D 135-126-2 +always \u3B0E 15-2345-4 +always \u3B0F 14-16-5 +always \u3B10 13-1456-4 always \u3B11 1456 -always \u3B12 1456 -always \u3B13 1456 -always \u3B14 1456 -always \u3B15 1456 +always \u3B12 134-1346-4 +always \u3B13 1234-246-5 +always \u3B14 1235-146-2 +always \u3B15 46-2 always \u3B16 1456 -always \u3B17 1456 -always \u3B18 1456 -always \u3B19 1456 -always \u3B1A 1456 +always \u3B17 15-2345-5 +always \u3B18 15-34-5 +always \u3B19 1246-4 +always \u3B1A 12-2346-5 always \u3B1B 1456 -always \u3B1C 1456 -always \u3B1D 1456 -always \u3B1E 1456 +always \u3B1C 13-1456-5 +always \u3B1D 245-1356-2 +always \u3B1E 1235-2346-5 always \u3B1F 1456 -always \u3B20 1456 -always \u3B21 1456 +always \u3B20 24-2456-5 +always \u3B21 14-13456-2 always \u3B22 1456 -always \u3B23 1456 +always \u3B23 145-1246-5 always \u3B24 1456 -always \u3B25 1456 -always \u3B26 1456 -always \u3B27 1456 +always \u3B25 1234-34-5 +always \u3B26 236-5 +always \u3B27 135-126-2 always \u3B28 1456 -always \u3B29 1456 -always \u3B2A 1456 -always \u3B2B 1456 -always \u3B2C 1456 -always \u3B2D 1456 -always \u3B2E 1456 -always \u3B2F 1456 -always \u3B30 1456 -always \u3B31 1456 +always \u3B29 1235-1246-5 +always \u3B2A 145-346-2 +always \u3B2B 2345-5 +always \u3B2C 13-1256-5 +always \u3B2D 13-246-5 +always \u3B2E 123-2356-5 +always \u3B2F 14-346-5 +always \u3B30 1256-2 +always \u3B31 124-16-5 always \u3B32 1456 -always \u3B33 1456 -always \u3B34 1456 -always \u3B35 1456 -always \u3B36 1456 +always \u3B33 34-4 +always \u3B34 1235-12346-4 +always \u3B35 15-246-2 +always \u3B36 1235-146-5 always \u3B37 1456 always \u3B38 1456 always \u3B39 1456 always \u3B3A 1456 -always \u3B3B 1456 -always \u3B3C 1456 +always \u3B3B 1235-456-4 +always \u3B3C 12345-34-5 always \u3B3D 1456 always \u3B3E 1456 -always \u3B3F 1456 +always \u3B3F 145-123456-5 always \u3B40 1456 -always \u3B41 1456 -always \u3B42 1456 +always \u3B41 1245-1356-2 +always \u3B42 13-246-4 always \u3B43 1456 -always \u3B44 1456 +always \u3B44 15-1456-5 always \u3B45 1456 always \u3B46 1456 -always \u3B47 1456 -always \u3B48 1456 -always \u3B49 1456 +always \u3B47 45-5 +always \u3B48 13-236-2 +always \u3B49 1235-35-2 always \u3B4A 1456 -always \u3B4B 1456 -always \u3B4C 1456 +always \u3B4B 135-1346-5 +always \u3B4C 134-12356-2 always \u3B4D 1456 always \u3B4E 1456 -always \u3B4F 1456 +always \u3B4F 1246-4 always \u3B50 1456 -always \u3B51 1456 -always \u3B52 1456 -always \u3B53 1456 -always \u3B54 1456 +always \u3B51 134-356-5 +always \u3B52 15-156-5 +always \u3B53 135-2345-5 +always \u3B54 14-34-2 always \u3B55 1456 always \u3B56 1456 always \u3B57 1456 -always \u3B58 1456 -always \u3B59 1456 -always \u3B5A 1456 -always \u3B5B 1456 -always \u3B5C 1456 -always \u3B5D 1456 -always \u3B5E 1456 -always \u3B5F 1456 -always \u3B60 1456 -always \u3B61 1456 +always \u3B58 1235-2346-2 +always \u3B59 24-2346-2 +always \u3B5A 14-1256-4 +always \u3B5B 1234-2456-5 +always \u3B5C 1245-12346-2 +always \u3B5D 245-234-2 +always \u3B5E 14-346-5 +always \u3B5F 13-12346-4 +always \u3B60 15-2345-4 +always \u3B61 15-16-5 always \u3B62 1456 always \u3B63 1456 -always \u3B64 1456 +always \u3B64 1345-246-4 always \u3B65 1456 always \u3B66 1456 always \u3B67 1456 -always \u3B68 1456 -always \u3B69 1456 +always \u3B68 15-346-2 +always \u3B69 14-356-5 always \u3B6A 1456 -always \u3B6B 1456 -always \u3B6C 1456 -always \u3B6D 1456 -always \u3B6E 1456 -always \u3B6F 1456 -always \u3B70 1456 -always \u3B71 1456 -always \u3B72 1456 +always \u3B6B 245-12456-2 +always \u3B6C 1-25-2 +always \u3B6D 12345-356-5 +always \u3B6E 125-25-5 +always \u3B6F 145-346-2 +always \u3B70 13-16-5 +always \u3B71 1235-2346-2 +always \u3B72 13-16-2 always \u3B73 1456 always \u3B74 1456 always \u3B75 1456 always \u3B76 1456 always \u3B77 1456 -always \u3B78 1456 -always \u3B79 1456 -always \u3B7A 1456 -always \u3B7B 1456 -always \u3B7C 1456 -always \u3B7D 1456 -always \u3B7E 1456 -always \u3B7F 1456 -always \u3B80 1456 -always \u3B81 1456 -always \u3B82 1456 -always \u3B83 1456 -always \u3B84 1456 +always \u3B78 124-34-2 +always \u3B79 15-2345-2 +always \u3B7A 2345-4 +always \u3B7B 124-1346-2 +always \u3B7C 124-345-5 +always \u3B7D 145-16-4 +always \u3B7E 13-236-2 +always \u3B7F 1346-2 +always \u3B80 1235-1236-2 +always \u3B81 246-2 +always \u3B82 13-1256-2 +always \u3B83 1245-1246-2 +always \u3B84 135-1346-4 always \u3B85 1456 -always \u3B86 1456 -always \u3B87 1456 -always \u3B88 1456 +always \u3B86 1345-346-5 +always \u3B87 124-2345-5 +always \u3B88 1345-2456-5 always \u3B89 1456 always \u3B8A 1456 -always \u3B8B 1456 -always \u3B8C 1456 +always \u3B8B 234-4 +always \u3B8C 134-2345-2 always \u3B8D 1456 always \u3B8E 1456 -always \u3B8F 1456 -always \u3B90 1456 -always \u3B91 1456 +always \u3B8F 1345-2456-5 +always \u3B90 15-13456-4 +always \u3B91 245-16-5 always \u3B92 1456 -always \u3B93 1456 -always \u3B94 1456 -always \u3B95 1456 -always \u3B96 1456 -always \u3B97 1456 -always \u3B98 1456 -always \u3B99 1456 -always \u3B9A 1456 -always \u3B9B 1456 +always \u3B93 13-136-5 +always \u3B94 124-12346-2 +always \u3B95 156-2 +always \u3B96 13-23456-2 +always \u3B97 245-1456-2 +always \u3B98 134-146-5 +always \u3B99 2346-5 +always \u3B9A 14-16-5 +always \u3B9B 12-156-2 always \u3B9C 1456 -always \u3B9D 1456 -always \u3B9E 1456 -always \u3B9F 1456 +always \u3B9D 1235-2346-2 +always \u3B9E 13-346-2 +always \u3B9F 13-16-2 always \u3BA0 1456 -always \u3BA1 1456 -always \u3BA2 1456 -always \u3BA3 1456 +always \u3BA1 13-12456-5 +always \u3BA2 1235-12356-2 +always \u3BA3 13-2456-5 always \u3BA4 1456 -always \u3BA5 1456 -always \u3BA6 1456 +always \u3BA5 12345-136-5 +always \u3BA6 15-2346-5 always \u3BA7 1456 -always \u3BA8 1456 +always \u3BA8 13-16-2 always \u3BA9 1456 -always \u3BAA 1456 -always \u3BAB 1456 +always \u3BAA 245-235-2 +always \u3BAB 1235-2346-2 always \u3BAC 1456 -always \u3BAD 1456 -always \u3BAE 1456 -always \u3BAF 1456 -always \u3BB0 1456 +always \u3BAD 15-2345-2 +always \u3BAE 13-346-2 +always \u3BAF 1235-35-2 +always \u3BB0 135-16-2 always \u3BB1 1456 always \u3BB2 1456 -always \u3BB3 1456 +always \u3BB3 1-136-5 always \u3BB4 1456 always \u3BB5 1456 -always \u3BB6 1456 +always \u3BB6 24-156-5 always \u3BB7 1456 -always \u3BB8 1456 -always \u3BB9 1456 -always \u3BBA 1456 +always \u3BB8 15-12346-5 +always \u3BB9 1-156-4 +always \u3BBA 135-136-4 always \u3BBB 1456 always \u3BBC 1456 always \u3BBD 1456 -always \u3BBE 1456 -always \u3BBF 1456 -always \u3BC0 1456 -always \u3BC1 1456 -always \u3BC2 1456 +always \u3BBE 14-1346-4 +always \u3BBF 135-16-5 +always \u3BC0 15-2345-4 +always \u3BC1 135-1346-5 +always \u3BC2 145-2456-5 always \u3BC3 1456 always \u3BC4 1456 -always \u3BC5 1456 -always \u3BC6 1456 -always \u3BC7 1456 -always \u3BC8 1456 -always \u3BC9 1456 -always \u3BCA 1456 -always \u3BCB 1456 -always \u3BCC 1456 -always \u3BCD 1456 -always \u3BCE 1456 -always \u3BCF 1456 -always \u3BD0 1456 +always \u3BC5 1234-16-2 +always \u3BC6 12-1236-4 +always \u3BC7 135-16-5 +always \u3BC8 15-34-5 +always \u3BC9 1235-25-5 +always \u3BCA 1235-136-2 +always \u3BCB 13456-4 +always \u3BCC 12-12456-2 +always \u3BCD 13-46-4 +always \u3BCE 1345-136-5 +always \u3BCF 13-34-4 +always \u3BD0 12345-1346-4 always \u3BD1 1456 always \u3BD2 1456 -always \u3BD3 1456 -always \u3BD4 1456 +always \u3BD3 124-345-5 +always \u3BD4 245-1246-5 always \u3BD5 1456 -always \u3BD6 1456 -always \u3BD7 1456 -always \u3BD8 1456 -always \u3BD9 1456 -always \u3BDA 1456 -always \u3BDB 1456 -always \u3BDC 1456 -always \u3BDD 1456 -always \u3BDE 1456 -always \u3BDF 1456 -always \u3BE0 1456 -always \u3BE1 1456 -always \u3BE2 1456 +always \u3BD6 145-2346-2 +always \u3BD7 1245-1236-4 +always \u3BD8 123-12456-4 +always \u3BD9 12-2346-5 +always \u3BDA 145-345-2 +always \u3BDB 1235-34-2 +always \u3BDC 245-1246-5 +always \u3BDD 14-34-5 +always \u3BDE 13-45-5 +always \u3BDF 14-34-5 +always \u3BE0 245-2345-5 +always \u3BE1 1234-146-5 +always \u3BE2 1-136-5 always \u3BE3 1456 -always \u3BE4 1456 -always \u3BE5 1456 -always \u3BE6 1456 +always \u3BE4 14-16-5 +always \u3BE5 245-146-2 +always \u3BE6 245-16-2 always \u3BE7 1456 always \u3BE8 1456 -always \u3BE9 1456 -always \u3BEA 1456 -always \u3BEB 1456 -always \u3BEC 1456 -always \u3BED 1456 -always \u3BEE 1456 -always \u3BEF 1456 -always \u3BF0 1456 -always \u3BF1 1456 -always \u3BF2 1456 -always \u3BF3 1456 +always \u3BE9 124-16-5 +always \u3BEA 14-13456-2 +always \u3BEB 245-1256-2 +always \u3BEC 14-2345-4 +always \u3BED 14-34-4 +always \u3BEE 24-34-4 +always \u3BEF 13-12346-5 +always \u3BF0 1-2346-2 +always \u3BF1 135-246-4 +always \u3BF2 13-1456-5 +always \u3BF3 245-13456-2 always \u3BF4 1456 always \u3BF5 1456 -always \u3BF6 1456 -always \u3BF7 1456 -always \u3BF8 1456 -always \u3BF9 1456 -always \u3BFA 1456 -always \u3BFB 1456 +always \u3BF6 125-12346-3 +always \u3BF7 1234-34-2 +always \u3BF8 13-1456-4 +always \u3BF9 135-246-4 +always \u3BFA 13-2345-5 +always \u3BFB 13-123456-4 always \u3BFC 1456 always \u3BFD 1456 always \u3BFE 1456 -always \u3BFF 1456 -always \u3C00 1456 -always \u3C01 1456 -always \u3C02 1456 -always \u3C03 1456 -always \u3C04 1456 -always \u3C05 1456 -always \u3C06 1456 +always \u3BFF 14-346-5 +always \u3C00 14-16-2 +always \u3C01 14-25-4 +always \u3C02 24-136-4 +always \u3C03 134-2345-2 +always \u3C04 13-2345-5 +always \u3C05 145-16-2 +always \u3C06 135-356-5 always \u3C07 1456 -always \u3C08 1456 +always \u3C08 14-2345-4 always \u3C09 1456 -always \u3C0A 1456 -always \u3C0B 1456 -always \u3C0C 1456 -always \u3C0D 1456 -always \u3C0E 1456 +always \u3C0A 15-256-2 +always \u3C0B 1234-1456-2 +always \u3C0C 245-236-5 +always \u3C0D 14-12346-2 +always \u3C0E 125-1246-5 always \u3C0F 1456 -always \u3C10 1456 +always \u3C10 13-236-2 always \u3C11 1456 -always \u3C12 1456 +always \u3C12 24-2346-2 always \u3C13 1456 -always \u3C14 1456 +always \u3C14 15-346-5 always \u3C15 1456 -always \u3C16 1456 -always \u3C17 1456 -always \u3C18 1456 -always \u3C19 1456 -always \u3C1A 1456 -always \u3C1B 1456 +always \u3C16 14-1236-4 +always \u3C17 245-34-5 +always \u3C18 16-2 +always \u3C19 1345-25-2 +always \u3C1A 14-16-2 +always \u3C1B 236-5 always \u3C1C 1456 -always \u3C1D 1456 +always \u3C1D 16-4 always \u3C1E 1456 -always \u3C1F 1456 -always \u3C20 1456 -always \u3C21 1456 +always \u3C1F 13-16-5 +always \u3C20 123-1346-5 +always \u3C21 15-346-5 always \u3C22 1456 -always \u3C23 1456 -always \u3C24 1456 -always \u3C25 1456 -always \u3C26 1456 +always \u3C23 125-156-5 +always \u3C24 123-2346-4 +always \u3C25 1235-1246-5 +always \u3C26 245-1256-5 always \u3C27 1456 always \u3C28 1456 always \u3C29 1456 -always \u3C2A 1456 +always \u3C2A 35-2 always \u3C2B 1456 -always \u3C2C 1456 +always \u3C2C 15-256-2 always \u3C2D 1456 -always \u3C2E 1456 -always \u3C2F 1456 -always \u3C30 1456 -always \u3C31 1456 -always \u3C32 1456 -always \u3C33 1456 -always \u3C34 1456 -always \u3C35 1456 -always \u3C36 1456 -always \u3C37 1456 -always \u3C38 1456 -always \u3C39 1456 -always \u3C3A 1456 -always \u3C3B 1456 -always \u3C3C 1456 -always \u3C3D 1456 -always \u3C3E 1456 +always \u3C2E 24-136-5 +always \u3C2F 123-12356-5 +always \u3C30 245-346-5 +always \u3C31 24-345-5 +always \u3C32 15-1256-5 +always \u3C33 23456-5 +always \u3C34 1234-126-2 +always \u3C35 125-34-2 +always \u3C36 234-4 +always \u3C37 125-156-5 +always \u3C38 14-2345-4 +always \u3C39 13-1456-5 +always \u3C3A 15-23456-2 +always \u3C3B 16-4 +always \u3C3C 245-346-5 +always \u3C3D 134-16-4 +always \u3C3E 13-246-5 always \u3C3F 1456 -always \u3C40 1456 -always \u3C41 1456 +always \u3C40 12-156-4 +always \u3C41 24-156-5 always \u3C42 1456 -always \u3C43 1456 -always \u3C44 1456 -always \u3C45 1456 +always \u3C43 1456-4 +always \u3C44 134-126-5 +always \u3C45 16-5 always \u3C46 1456 -always \u3C47 1456 -always \u3C48 1456 -always \u3C49 1456 +always \u3C47 15-2346-5 +always \u3C48 13-1456-5 +always \u3C49 346-5 always \u3C4A 1456 -always \u3C4B 1456 -always \u3C4C 1456 -always \u3C4D 1456 +always \u3C4B 245-236-5 +always \u3C4C 12-2346-5 +always \u3C4D 14-12456-2 always \u3C4E 1456 -always \u3C4F 1456 +always \u3C4F 1-1356-5 always \u3C50 1456 always \u3C51 1456 always \u3C52 1456 always \u3C53 1456 always \u3C54 1456 always \u3C55 1456 -always \u3C56 1456 +always \u3C56 245-1246-5 always \u3C57 1456 -always \u3C58 1456 -always \u3C59 1456 -always \u3C5A 1456 -always \u3C5B 1456 -always \u3C5C 1456 +always \u3C58 1236-5 +always \u3C59 15-234-4 +always \u3C5A 245-1236-2 +always \u3C5B 12-12456-4 +always \u3C5C 1-345-2 always \u3C5D 1456 -always \u3C5E 1456 -always \u3C5F 1456 +always \u3C5E 13-16-2 +always \u3C5F 135-126-2 always \u3C60 1456 always \u3C61 1456 -always \u3C62 1456 -always \u3C63 1456 +always \u3C62 14-1346-2 +always \u3C63 124-1246-4 always \u3C64 1456 -always \u3C65 1456 -always \u3C66 1456 -always \u3C67 1456 -always \u3C68 1456 -always \u3C69 1456 -always \u3C6A 1456 -always \u3C6B 1456 -always \u3C6C 1456 -always \u3C6D 1456 -always \u3C6E 1456 -always \u3C6F 1456 -always \u3C70 1456 -always \u3C71 1456 -always \u3C72 1456 -always \u3C73 1456 -always \u3C74 1456 -always \u3C75 1456 -always \u3C76 1456 +always \u3C65 14-13456-2 +always \u3C66 2346-5 +always \u3C67 25-5 +always \u3C68 14-2345-5 +always \u3C69 145-34-2 +always \u3C6A 134-136-5 +always \u3C6B 14-1236-5 +always \u3C6C 1246-4 +always \u3C6D 145-12456-5 +always \u3C6E 123-2356-5 +always \u3C6F 2456-2 +always \u3C70 125-2456-4 +always \u3C71 1235-1246-5 +always \u3C72 16-5 +always \u3C73 134-126-5 +always \u3C74 125-156-5 +always \u3C75 135-136-5 +always \u3C76 135-1356-5 always \u3C77 1456 -always \u3C78 1456 -always \u3C79 1456 -always \u3C7A 1456 -always \u3C7B 1456 +always \u3C78 135-16-5 +always \u3C79 14-16-5 +always \u3C7A 14-34-2 +always \u3C7B 14-25-4 always \u3C7C 1456 -always \u3C7D 1456 +always \u3C7D 145-1236-5 always \u3C7E 1456 -always \u3C7F 1456 -always \u3C80 1456 +always \u3C7F 245-236-5 +always \u3C80 12-136-2 always \u3C81 1456 -always \u3C82 1456 -always \u3C83 1456 -always \u3C84 1456 -always \u3C85 1456 -always \u3C86 1456 +always \u3C82 12-1356-2 +always \u3C83 13-234-5 +always \u3C84 123-12356-5 +always \u3C85 13-16-5 +always \u3C86 14-13456-2 always \u3C87 1456 -always \u3C88 1456 -always \u3C89 1456 -always \u3C8A 1456 -always \u3C8B 1456 -always \u3C8C 1456 +always \u3C88 24-146-2 +always \u3C89 123-2456-5 +always \u3C8A 1245-1246-5 +always \u3C8B 12-25-5 +always \u3C8C 1345-1356-5 always \u3C8D 1456 -always \u3C8E 1456 -always \u3C8F 1456 +always \u3C8E 14-12356-2 +always \u3C8F 135-146-4 always \u3C90 1456 always \u3C91 1456 -always \u3C92 1456 -always \u3C93 1456 +always \u3C92 135-146-5 +always \u3C93 1245-12346-2 always \u3C94 1456 -always \u3C95 1456 +always \u3C95 14-356-5 always \u3C96 1456 always \u3C97 1456 -always \u3C98 1456 +always \u3C98 245-1256-2 always \u3C99 1456 always \u3C9A 1456 -always \u3C9B 1456 -always \u3C9C 1456 -always \u3C9D 1456 -always \u3C9E 1456 -always \u3C9F 1456 -always \u3CA0 1456 -always \u3CA1 1456 -always \u3CA2 1456 +always \u3C9B 1-156-4 +always \u3C9C 124-1236-2 +always \u3C9D 1245-12346-4 +always \u3C9E 125-34-2 +always \u3C9F 13456-4 +always \u3CA0 134-146-2 +always \u3CA1 1345-2456-5 +always \u3CA2 135-2345-5 always \u3CA3 1456 always \u3CA4 1456 -always \u3CA5 1456 -always \u3CA6 1456 -always \u3CA7 1456 -always \u3CA8 1456 +always \u3CA5 124-1346-2 +always \u3CA6 1235-1236-5 +always \u3CA7 125-146-5 +always \u3CA8 1245-12346-2 always \u3CA9 1456 always \u3CAA 1456 -always \u3CAB 1456 +always \u3CAB 1234-34-2 always \u3CAC 1456 -always \u3CAD 1456 +always \u3CAD 124-1236-4 always \u3CAE 1456 -always \u3CAF 1456 -always \u3CB0 1456 -always \u3CB1 1456 -always \u3CB2 1456 -always \u3CB3 1456 -always \u3CB4 1456 +always \u3CAF 1245-1236-2 +always \u3CB0 1345-13456-2 +always \u3CB1 14-346-5 +always \u3CB2 145-346-2 +always \u3CB3 145-346-2 +always \u3CB4 1-12346-5 always \u3CB5 1456 -always \u3CB6 1456 -always \u3CB7 1456 +always \u3CB6 14-1256-5 +always \u3CB7 145-1236-5 always \u3CB8 1456 -always \u3CB9 1456 -always \u3CBA 1456 -always \u3CBB 1456 -always \u3CBC 1456 -always \u3CBD 1456 -always \u3CBE 1456 -always \u3CBF 1456 -always \u3CC0 1456 -always \u3CC1 1456 -always \u3CC2 1456 -always \u3CC3 1456 -always \u3CC4 1456 -always \u3CC5 1456 -always \u3CC6 1456 -always \u3CC7 1456 -always \u3CC8 1456 +always \u3CB9 13-1246-4 +always \u3CBA 13-16-2 +always \u3CBB 1345-16-5 +always \u3CBC 16-5 +always \u3CBD 1345-2345-5 +always \u3CBE 1256-4 +always \u3CBF 456-4 +always \u3CC0 13-25-5 +always \u3CC1 125-2346-5 +always \u3CC2 2345-2 +always \u3CC3 245-1246-5 +always \u3CC4 15-2345-2 +always \u3CC5 13-246-4 +always \u3CC6 24-34-4 +always \u3CC7 12345-34-5 +always \u3CC8 1234-356-5 always \u3CC9 1456 always \u3CCA 1456 always \u3CCB 1456 always \u3CCC 1456 -always \u3CCD 1456 -always \u3CCE 1456 -always \u3CCF 1456 -always \u3CD0 1456 -always \u3CD1 1456 -always \u3CD2 1456 +always \u3CCD 135-34-5 +always \u3CCE 135-2345-5 +always \u3CCF 12-156-4 +always \u3CD0 15-345-5 +always \u3CD1 16-5 +always \u3CD2 135-2345-5 always \u3CD3 1456 -always \u3CD4 1456 -always \u3CD5 1456 +always \u3CD4 145-1246-5 +always \u3CD5 14-1236-2 always \u3CD6 1456 -always \u3CD7 1456 +always \u3CD7 12-2456-5 always \u3CD8 1456 -always \u3CD9 1456 -always \u3CDA 1456 -always \u3CDB 1456 +always \u3CD9 15-45-5 +always \u3CDA 1256-5 +always \u3CDB 1256-2 always \u3CDC 1456 always \u3CDD 1456 always \u3CDE 1456 always \u3CDF 1456 -always \u3CE0 1456 +always \u3CE0 124-345-5 always \u3CE1 1456 always \u3CE2 1456 always \u3CE3 1456 always \u3CE4 1456 -always \u3CE5 1456 -always \u3CE6 1456 -always \u3CE7 1456 -always \u3CE8 1456 +always \u3CE5 13-1256-5 +always \u3CE6 15-346-5 +always \u3CE7 15-16-2 +always \u3CE8 13-2345-4 always \u3CE9 1456 -always \u3CEA 1456 -always \u3CEB 1456 -always \u3CEC 1456 -always \u3CED 1456 -always \u3CEE 1456 +always \u3CEA 1234-1236-5 +always \u3CEB 124-345-5 +always \u3CEC 15-45-2 +always \u3CED 15-2345-2 +always \u3CEE 1345-246-5 always \u3CEF 1456 always \u3CF0 1456 always \u3CF1 1456 always \u3CF2 1456 always \u3CF3 1456 -always \u3CF4 1456 -always \u3CF5 1456 -always \u3CF6 1456 -always \u3CF7 1456 +always \u3CF4 134-16-5 +always \u3CF5 13-16-5 +always \u3CF6 13-12356-5 +always \u3CF7 123456-4 always \u3CF8 1456 -always \u3CF9 1456 -always \u3CFA 1456 -always \u3CFB 1456 -always \u3CFC 1456 -always \u3CFD 1456 +always \u3CF9 456-4 +always \u3CFA 234-2 +always \u3CFB 125-2346-2 +always \u3CFC 135-16-5 +always \u3CFD 134-16-4 always \u3CFE 1456 -always \u3CFF 1456 -always \u3D00 1456 -always \u3D01 1456 +always \u3CFF 15-346-5 +always \u3D00 12345-1236-5 +always \u3D01 16-5 always \u3D02 1456 -always \u3D03 1456 -always \u3D04 1456 +always \u3D03 14-356-5 +always \u3D04 13456-2 always \u3D05 1456 -always \u3D06 1456 -always \u3D07 1456 -always \u3D08 1456 -always \u3D09 1456 +always \u3D06 13-1456-5 +always \u3D07 24-2346-5 +always \u3D08 1456-5 +always \u3D09 13-16-4 always \u3D0A 1456 -always \u3D0B 1456 +always \u3D0B 15-34-5 always \u3D0C 1456 always \u3D0D 1456 always \u3D0E 1456 -always \u3D0F 1456 -always \u3D10 1456 -always \u3D11 1456 -always \u3D12 1456 -always \u3D13 1456 -always \u3D14 1456 -always \u3D15 1456 -always \u3D16 1456 +always \u3D0F 456-4 +always \u3D10 134-2345-5 +always \u3D11 15-34-5 +always \u3D12 16-5 +always \u3D13 125-2456-4 +always \u3D14 15-2346-5 +always \u3D15 13-16-2 +always \u3D16 14-25-5 always \u3D17 1456 -always \u3D18 1456 -always \u3D19 1456 -always \u3D1A 1456 -always \u3D1B 1456 -always \u3D1C 1456 -always \u3D1D 1456 +always \u3D18 134-146-5 +always \u3D19 1-345-2 +always \u3D1A 15-1246-5 +always \u3D1B 1-156-5 +always \u3D1C 135-2345-5 +always \u3D1D 14-16-2 always \u3D1E 1456 always \u3D1F 1456 always \u3D20 1456 @@ -15541,4247 +15544,4247 @@ always \u3D21 1456 always \u3D22 1456 always \u3D23 1456 always \u3D24 1456 -always \u3D25 1456 -always \u3D26 1456 +always \u3D25 245-246-5 +always \u3D26 13-12456-5 always \u3D27 1456 -always \u3D28 1456 +always \u3D28 1-136-5 always \u3D29 1456 -always \u3D2A 1456 -always \u3D2B 1456 -always \u3D2C 1456 -always \u3D2D 1456 -always \u3D2E 1456 +always \u3D2A 1345-346-5 +always \u3D2B 13-256-5 +always \u3D2C 15-346-5 +always \u3D2D 246-4 +always \u3D2E 15-346-5 always \u3D2F 1456 -always \u3D30 1456 +always \u3D30 1345-1356-2 always \u3D31 1456 always \u3D32 1456 -always \u3D33 1456 -always \u3D34 1456 -always \u3D35 1456 -always \u3D36 1456 +always \u3D33 14-12346-4 +always \u3D34 12-136-2 +always \u3D35 134-16-5 +always \u3D36 245-236-5 always \u3D37 1456 -always \u3D38 1456 +always \u3D38 1345-345-5 always \u3D39 1456 always \u3D3A 1456 always \u3D3B 1456 -always \u3D3C 1456 -always \u3D3D 1456 -always \u3D3E 1456 -always \u3D3F 1456 -always \u3D40 1456 +always \u3D3C 15-34-5 +always \u3D3D 15-346-5 +always \u3D3E 135-126-2 +always \u3D3F 145-13456-4 +always \u3D40 245-12456-5 always \u3D41 1456 -always \u3D42 1456 -always \u3D43 1456 -always \u3D44 1456 -always \u3D45 1456 -always \u3D46 1456 +always \u3D42 12-456-4 +always \u3D43 12-2346-5 +always \u3D44 1235-1236-5 +always \u3D45 145-1236-5 +always \u3D46 1235-146-5 always \u3D47 1456 always \u3D48 1456 always \u3D49 1456 -always \u3D4A 1456 -always \u3D4B 1456 -always \u3D4C 1456 -always \u3D4D 1456 -always \u3D4E 1456 -always \u3D4F 1456 -always \u3D50 1456 -always \u3D51 1456 -always \u3D52 1456 -always \u3D53 1456 -always \u3D54 1456 -always \u3D55 1456 -always \u3D56 1456 -always \u3D57 1456 -always \u3D58 1456 +always \u3D4A 24-136-4 +always \u3D4B 134-16-5 +always \u3D4C 12-1236-5 +always \u3D4D 134-136-5 +always \u3D4E 1235-1236-4 +always \u3D4F 245-1246-4 +always \u3D50 13-236-2 +always \u3D51 1235-2346-5 +always \u3D52 12345-356-5 +always \u3D53 24-156-2 +always \u3D54 12-2346-4 +always \u3D55 24-136-5 +always \u3D56 1345-1256-5 +always \u3D57 12345-34-5 +always \u3D58 134-1236-5 always \u3D59 1456 always \u3D5A 1456 always \u3D5B 1456 always \u3D5C 1456 -always \u3D5D 1456 -always \u3D5E 1456 +always \u3D5D 16-5 +always \u3D5E 12-12356-2 always \u3D5F 1456 always \u3D60 1456 -always \u3D61 1456 -always \u3D62 1456 -always \u3D63 1456 -always \u3D64 1456 -always \u3D65 1456 -always \u3D66 1456 -always \u3D67 1456 -always \u3D68 1456 -always \u3D69 1456 -always \u3D6A 1456 -always \u3D6B 1456 -always \u3D6C 1456 -always \u3D6D 1456 -always \u3D6E 1456 -always \u3D6F 1456 -always \u3D70 1456 -always \u3D71 1456 -always \u3D72 1456 -always \u3D73 1456 -always \u3D74 1456 -always \u3D75 1456 +always \u3D61 135-146-2 +always \u3D62 14-356-2 +always \u3D63 123-2346-4 +always \u3D64 145-2345-5 +always \u3D65 135-16-5 +always \u3D66 15-1246-2 +always \u3D67 13-2346-2 +always \u3D68 135-16-5 +always \u3D69 16-5 +always \u3D6A 15-2345-2 +always \u3D6B 1345-16-4 +always \u3D6C 13456-2 +always \u3D6D 1-34-4 +always \u3D6E 12-123456-2 +always \u3D6F 12345-1356-2 +always \u3D70 15-1256-5 +always \u3D71 1234-246-4 +always \u3D72 34-4 +always \u3D73 14-246-2 +always \u3D74 245-1346-2 +always \u3D75 125-12356-5 always \u3D76 1456 -always \u3D77 1456 -always \u3D78 1456 -always \u3D79 1456 -always \u3D7A 1456 -always \u3D7B 1456 +always \u3D77 135-2345-5 +always \u3D78 246-5 +always \u3D79 1235-12456-2 +always \u3D7A 1234-2456-2 +always \u3D7B 15-12356-5 always \u3D7C 1456 -always \u3D7D 1456 -always \u3D7E 1456 -always \u3D7F 1456 +always \u3D7D 145-1246-5 +always \u3D7E 13-13456-5 +always \u3D7F 15-16-2 always \u3D80 1456 -always \u3D81 1456 +always \u3D81 13-25-2 always \u3D82 1456 always \u3D83 1456 -always \u3D84 1456 -always \u3D85 1456 -always \u3D86 1456 -always \u3D87 1456 -always \u3D88 1456 -always \u3D89 1456 +always \u3D84 2345-2 +always \u3D85 15-236-2 +always \u3D86 12-34-2 +always \u3D87 1235-1356-2 +always \u3D88 13456-2 +always \u3D89 23456-3 always \u3D8A 1456 always \u3D8B 1456 -always \u3D8C 1456 -always \u3D8D 1456 -always \u3D8E 1456 +always \u3D8C 14-2345-2 +always \u3D8D 15-2345-4 +always \u3D8E 1235-12456-2 always \u3D8F 1456 always \u3D90 1456 -always \u3D91 1456 -always \u3D92 1456 -always \u3D93 1456 -always \u3D94 1456 -always \u3D95 1456 -always \u3D96 1456 -always \u3D97 1456 -always \u3D98 1456 +always \u3D91 14-2345-5 +always \u3D92 24-1236-4 +always \u3D93 245-1346-2 +always \u3D94 135-356-5 +always \u3D95 13-2345-4 +always \u3D96 24-34-5 +always \u3D97 12345-1236-5 +always \u3D98 145-2345-5 always \u3D99 1456 -always \u3D9A 1456 -always \u3D9B 1456 +always \u3D9A 135-345-5 +always \u3D9B 1256-2 always \u3D9C 1456 always \u3D9D 1456 -always \u3D9E 1456 -always \u3D9F 1456 -always \u3DA0 1456 -always \u3DA1 1456 +always \u3D9E 1345-1346-4 +always \u3D9F 14-356-4 +always \u3DA0 16-5 +always \u3DA1 145-2456-5 always \u3DA2 1456 -always \u3DA3 1456 -always \u3DA4 1456 +always \u3DA3 12-1236-2 +always \u3DA4 12-146-4 always \u3DA5 1456 -always \u3DA6 1456 -always \u3DA7 1456 +always \u3DA6 13-1456-5 +always \u3DA7 1345-136-5 always \u3DA8 1456 always \u3DA9 1456 always \u3DAA 1456 -always \u3DAB 1456 -always \u3DAC 1456 -always \u3DAD 1456 +always \u3DAB 14-246-4 +always \u3DAC 134-356-2 +always \u3DAD 13-234-5 always \u3DAE 1456 -always \u3DAF 1456 -always \u3DB0 1456 +always \u3DAF 14-234-5 +always \u3DB0 1235-1236-2 always \u3DB1 1456 -always \u3DB2 1456 -always \u3DB3 1456 -always \u3DB4 1456 -always \u3DB5 1456 -always \u3DB6 1456 +always \u3DB2 235-5 +always \u3DB3 13-1456-5 +always \u3DB4 12-156-4 +always \u3DB5 1245-136-5 +always \u3DB6 1345-12346-2 always \u3DB7 1456 always \u3DB8 1456 -always \u3DB9 1456 -always \u3DBA 1456 +always \u3DB9 1235-12346-5 +always \u3DBA 124-2345-5 always \u3DBB 1456 always \u3DBC 1456 always \u3DBD 1456 always \u3DBE 1456 -always \u3DBF 1456 -always \u3DC0 1456 +always \u3DBF 135-126-2 +always \u3DC0 245-235-2 always \u3DC1 1456 -always \u3DC2 1456 -always \u3DC3 1456 -always \u3DC4 1456 -always \u3DC5 1456 -always \u3DC6 1456 -always \u3DC7 1456 -always \u3DC8 1456 -always \u3DC9 1456 -always \u3DCA 1456 -always \u3DCB 1456 +always \u3DC2 24-34-5 +always \u3DC3 245-1246-4 +always \u3DC4 1235-1246-5 +always \u3DC5 12-146-4 +always \u3DC6 145-12356-5 +always \u3DC7 13-2356-5 +always \u3DC8 2346-5 +always \u3DC9 1246-5 +always \u3DCA 12345-136-2 +always \u3DCB 124-1236-2 always \u3DCC 1456 -always \u3DCD 1456 -always \u3DCE 1456 -always \u3DCF 1456 -always \u3DD0 1456 +always \u3DCD 14-123456-2 +always \u3DCE 1235-2346-5 +always \u3DCF 235-4 +always \u3DD0 1235-1246-4 always \u3DD1 1456 -always \u3DD2 1456 -always \u3DD3 1456 -always \u3DD4 1456 -always \u3DD5 1456 -always \u3DD6 1456 -always \u3DD7 1456 -always \u3DD8 1456 +always \u3DD2 1256-2 +always \u3DD3 125-12346-4 +always \u3DD4 2345-5 +always \u3DD5 245-234-2 +always \u3DD6 1-146-5 +always \u3DD7 13-235-4 +always \u3DD8 124-2456-2 always \u3DD9 1456 always \u3DDA 1456 always \u3DDB 1456 always \u3DDC 1456 always \u3DDD 1456 always \u3DDE 1456 -always \u3DDF 1456 -always \u3DE0 1456 -always \u3DE1 1456 -always \u3DE2 1456 +always \u3DDF 124-1246-5 +always \u3DE0 14-1456-2 +always \u3DE1 13-235-4 +always \u3DE2 1-345-4 always \u3DE3 1456 -always \u3DE4 1456 +always \u3DE4 1235-2346-5 always \u3DE5 1456 -always \u3DE6 1456 +always \u3DE6 15-1256-5 always \u3DE7 1456 always \u3DE8 1456 always \u3DE9 1456 -always \u3DEA 1456 -always \u3DEB 1456 -always \u3DEC 1456 +always \u3DEA 245-1246-5 +always \u3DEB 245-13456-4 +always \u3DEC 134-126-5 always \u3DED 1456 always \u3DEE 1456 -always \u3DEF 1456 -always \u3DF0 1456 +always \u3DEF 135-1356-5 +always \u3DF0 14-16-2 always \u3DF1 1456 always \u3DF2 1456 -always \u3DF3 1456 -always \u3DF4 1456 -always \u3DF5 1456 -always \u3DF6 1456 -always \u3DF7 1456 -always \u3DF8 1456 -always \u3DF9 1456 +always \u3DF3 2345-5 +always \u3DF4 13-2346-2 +always \u3DF5 134-126-5 +always \u3DF6 135-356-5 +always \u3DF7 13-45-4 +always \u3DF8 145-346-2 +always \u3DF9 24-146-5 always \u3DFA 1456 -always \u3DFB 1456 -always \u3DFC 1456 +always \u3DFB 34-2 +always \u3DFC 2345-5 always \u3DFD 1456 -always \u3DFE 1456 +always \u3DFE 13-236-2 always \u3DFF 1456 -always \u3E00 1456 -always \u3E01 1456 +always \u3E00 124-2456-2 +always \u3E01 1235-1236-4 always \u3E02 1456 -always \u3E03 1456 -always \u3E04 1456 -always \u3E05 1456 +always \u3E03 145-2345-4 +always \u3E04 13-16-5 +always \u3E05 13-346-2 always \u3E06 1456 always \u3E07 1456 always \u3E08 1456 -always \u3E09 1456 -always \u3E0A 1456 -always \u3E0B 1456 -always \u3E0C 1456 -always \u3E0D 1456 -always \u3E0E 1456 -always \u3E0F 1456 -always \u3E10 1456 -always \u3E11 1456 -always \u3E12 1456 -always \u3E13 1456 +always \u3E09 15-346-5 +always \u3E0A 14-345-5 +always \u3E0B 12345-1236-2 +always \u3E0C 1235-25-5 +always \u3E0D 15-16-5 +always \u3E0E 1345-346-5 +always \u3E0F 134-16-2 +always \u3E10 1245-1236-2 +always \u3E11 245-12456-5 +always \u3E12 1456-2 +always \u3E13 134-16-5 always \u3E14 1456 -always \u3E15 1456 +always \u3E15 13-236-2 always \u3E16 1456 -always \u3E17 1456 -always \u3E18 1456 +always \u3E17 124-12346-2 +always \u3E18 12456-5 always \u3E19 1456 -always \u3E1A 1456 -always \u3E1B 1456 -always \u3E1C 1456 -always \u3E1D 1456 -always \u3E1E 1456 +always \u3E1A 14-16-4 +always \u3E1B 24-146-2 +always \u3E1C 123-12346-5 +always \u3E1D 123-1236-4 +always \u3E1E 135-1236-4 always \u3E1F 1456 -always \u3E20 1456 +always \u3E20 124-246-4 always \u3E21 1456 -always \u3E22 1456 -always \u3E23 1456 -always \u3E24 1456 -always \u3E25 1456 -always \u3E26 1456 -always \u3E27 1456 +always \u3E22 135-356-5 +always \u3E23 346-5 +always \u3E24 1234-2345-5 +always \u3E25 12-1236-2 +always \u3E26 1235-34-5 +always \u3E27 123-136-5 always \u3E28 1456 -always \u3E29 1456 -always \u3E2A 1456 -always \u3E2B 1456 -always \u3E2C 1456 +always \u3E29 1236-5 +always \u3E2A 12-123456-2 +always \u3E2B 245-2345-2 +always \u3E2C 135-356-5 always \u3E2D 1456 -always \u3E2E 1456 +always \u3E2E 12345-136-2 always \u3E2F 1456 -always \u3E30 1456 -always \u3E31 1456 -always \u3E32 1456 -always \u3E33 1456 +always \u3E30 124-25-2 +always \u3E31 124-25-2 +always \u3E32 125-25-2 +always \u3E33 14-13456-2 always \u3E34 1456 -always \u3E35 1456 +always \u3E35 13-1246-4 always \u3E36 1456 -always \u3E37 1456 -always \u3E38 1456 -always \u3E39 1456 +always \u3E37 24-156-5 +always \u3E38 1235-12356-4 +always \u3E39 14-346-5 always \u3E3A 1456 -always \u3E3B 1456 +always \u3E3B 15-156-5 always \u3E3C 1456 -always \u3E3D 1456 -always \u3E3E 1456 -always \u3E3F 1456 -always \u3E40 1456 -always \u3E41 1456 -always \u3E42 1456 -always \u3E43 1456 -always \u3E44 1456 -always \u3E45 1456 +always \u3E3D 135-356-5 +always \u3E3E 1245-136-5 +always \u3E3F 145-34-2 +always \u3E40 135-126-2 +always \u3E41 14-46-2 +always \u3E42 245-156-5 +always \u3E43 135-16-5 +always \u3E44 13-16-5 +always \u3E45 125-12346-4 always \u3E46 1456 -always \u3E47 1456 -always \u3E48 1456 -always \u3E49 1456 -always \u3E4A 1456 +always \u3E47 1235-2346-2 +always \u3E48 14-16-2 +always \u3E49 45-2 +always \u3E4A 236-5 always \u3E4B 1456 -always \u3E4C 1456 -always \u3E4D 1456 -always \u3E4E 1456 -always \u3E4F 1456 -always \u3E50 1456 -always \u3E51 1456 -always \u3E52 1456 -always \u3E53 1456 +always \u3E4C 12-1236-4 +always \u3E4D 145-16-2 +always \u3E4E 14-356-2 +always \u3E4F 13-1456-4 +always \u3E50 12-12346-2 +always \u3E51 15-156-5 +always \u3E52 1234-34-4 +always \u3E53 16-5 always \u3E54 1456 always \u3E55 1456 -always \u3E56 1456 -always \u3E57 1456 -always \u3E58 1456 -always \u3E59 1456 -always \u3E5A 1456 -always \u3E5B 1456 -always \u3E5C 1456 -always \u3E5D 1456 -always \u3E5E 1456 -always \u3E5F 1456 -always \u3E60 1456 -always \u3E61 1456 +always \u3E56 1235-12456-5 +always \u3E57 124-146-2 +always \u3E58 1245-34-2 +always \u3E59 13456-2 +always \u3E5A 13456-2 +always \u3E5B 1245-146-2 +always \u3E5C 1456-2 +always \u3E5D 24-156-5 +always \u3E5E 1456-2 +always \u3E5F 13-236-2 +always \u3E60 124-123456-2 +always \u3E61 15-45-2 always \u3E62 1456 always \u3E63 1456 -always \u3E64 1456 -always \u3E65 1456 +always \u3E64 245-346-5 +always \u3E65 1-34-5 always \u3E66 1456 always \u3E67 1456 -always \u3E68 1456 +always \u3E68 234-5 always \u3E69 1456 always \u3E6A 1456 -always \u3E6B 1456 -always \u3E6C 1456 -always \u3E6D 1456 -always \u3E6E 1456 +always \u3E6B 15-16-5 +always \u3E6C 24-156-4 +always \u3E6D 16-5 +always \u3E6E 134-126-5 always \u3E6F 1456 always \u3E70 1456 -always \u3E71 1456 -always \u3E72 1456 -always \u3E73 1456 +always \u3E71 1235-34-2 +always \u3E72 15-246-5 +always \u3E73 34-2 always \u3E74 1456 -always \u3E75 1456 -always \u3E76 1456 -always \u3E77 1456 -always \u3E78 1456 +always \u3E75 13-13456-5 +always \u3E76 124-13456-2 +always \u3E77 24-156-4 +always \u3E78 1345-16-2 always \u3E79 1456 -always \u3E7A 1456 +always \u3E7A 124-345-5 always \u3E7B 1456 -always \u3E7C 1456 -always \u3E7D 1456 -always \u3E7E 1456 -always \u3E7F 1456 -always \u3E80 1456 -always \u3E81 1456 -always \u3E82 1456 -always \u3E83 1456 -always \u3E84 1456 -always \u3E85 1456 +always \u3E7C 12-34-4 +always \u3E7D 12-1236-4 +always \u3E7E 1234-246-4 +always \u3E7F 145-246-4 +always \u3E80 1345-146-2 +always \u3E81 1345-146-4 +always \u3E82 13-1236-4 +always \u3E83 13-12356-4 +always \u3E84 1256-4 +always \u3E85 1235-12356-2 always \u3E86 1456 always \u3E87 1456 always \u3E88 1456 -always \u3E89 1456 -always \u3E8A 1456 +always \u3E89 1235-34-5 +always \u3E8A 46-5 always \u3E8B 1456 -always \u3E8C 1456 +always \u3E8C 15-2345-5 always \u3E8D 1456 -always \u3E8E 1456 -always \u3E8F 1456 -always \u3E90 1456 -always \u3E91 1456 -always \u3E92 1456 -always \u3E93 1456 -always \u3E94 1456 -always \u3E95 1456 -always \u3E96 1456 -always \u3E97 1456 -always \u3E98 1456 +always \u3E8E 1245-12346-2 +always \u3E8F 14-12356-2 +always \u3E90 1-146-4 +always \u3E91 245-1236-2 +always \u3E92 14-246-5 +always \u3E93 1234-246-5 +always \u3E94 1235-2456-5 +always \u3E95 12345-1236-2 +always \u3E96 1235-1236-4 +always \u3E97 145-1236-5 +always \u3E98 1-1236-5 always \u3E99 1456 -always \u3E9A 1456 -always \u3E9B 1456 -always \u3E9C 1456 -always \u3E9D 1456 -always \u3E9E 1456 -always \u3E9F 1456 -always \u3EA0 1456 -always \u3EA1 1456 +always \u3E9A 124-345-4 +always \u3E9B 1-34-5 +always \u3E9C 135-1236-4 +always \u3E9D 13-2345-5 +always \u3E9E 1256-2 +always \u3E9F 1-25-2 +always \u3EA0 234-5 +always \u3EA1 14-16-5 always \u3EA2 1456 always \u3EA3 1456 always \u3EA4 1456 -always \u3EA5 1456 -always \u3EA6 1456 +always \u3EA5 12-1236-2 +always \u3EA6 14-2345-2 always \u3EA7 1456 always \u3EA8 1456 -always \u3EA9 1456 -always \u3EAA 1456 -always \u3EAB 1456 -always \u3EAC 1456 -always \u3EAD 1456 -always \u3EAE 1456 +always \u3EA9 13-234-5 +always \u3EAA 1234-34-2 +always \u3EAB 245-234-2 +always \u3EAC 13-12346-4 +always \u3EAD 125-156-4 +always \u3EAE 1256-2 always \u3EAF 1456 always \u3EB0 1456 -always \u3EB1 1456 -always \u3EB2 1456 -always \u3EB3 1456 +always \u3EB1 1245-1356-2 +always \u3EB2 1345-234-4 +always \u3EB3 134-356-2 always \u3EB4 1456 -always \u3EB5 1456 +always \u3EB5 13-234-2 always \u3EB6 1456 -always \u3EB7 1456 -always \u3EB8 1456 -always \u3EB9 1456 -always \u3EBA 1456 +always \u3EB7 15-1256-5 +always \u3EB8 1234-13456-2 +always \u3EB9 135-2345-5 +always \u3EBA 134-146-5 always \u3EBB 1456 always \u3EBC 1456 always \u3EBD 1456 always \u3EBE 1456 -always \u3EBF 1456 -always \u3EC0 1456 +always \u3EBF 16-2 +always \u3EC0 234-2 always \u3EC1 1456 -always \u3EC2 1456 +always \u3EC2 1234-13456-2 always \u3EC3 1456 -always \u3EC4 1456 -always \u3EC5 1456 +always \u3EC4 135-146-4 +always \u3EC5 1235-1246-5 always \u3EC6 1456 always \u3EC7 1456 always \u3EC8 1456 -always \u3EC9 1456 -always \u3ECA 1456 -always \u3ECB 1456 -always \u3ECC 1456 -always \u3ECD 1456 -always \u3ECE 1456 -always \u3ECF 1456 +always \u3EC9 135-34-5 +always \u3ECA 134-1346-2 +always \u3ECB 14-345-5 +always \u3ECC 124-34-2 +always \u3ECD 34-2 +always \u3ECE 14-16-5 +always \u3ECF 14-13456-2 always \u3ED0 1456 -always \u3ED1 1456 -always \u3ED2 1456 +always \u3ED1 13-16-5 +always \u3ED2 13-256-5 always \u3ED3 1456 -always \u3ED4 1456 -always \u3ED5 1456 -always \u3ED6 1456 -always \u3ED7 1456 +always \u3ED4 145-25-4 +always \u3ED5 13-236-2 +always \u3ED6 145-2456-5 +always \u3ED7 135-356-5 always \u3ED8 1456 always \u3ED9 1456 always \u3EDA 1456 always \u3EDB 1456 always \u3EDC 1456 -always \u3EDD 1456 -always \u3EDE 1456 -always \u3EDF 1456 -always \u3EE0 1456 -always \u3EE1 1456 +always \u3EDD 14-345-5 +always \u3EDE 135-2345-5 +always \u3EDF 15-1246-2 +always \u3EE0 124-34-2 +always \u3EE1 145-346-2 always \u3EE2 1456 always \u3EE3 1456 always \u3EE4 1456 always \u3EE5 1456 always \u3EE6 1456 -always \u3EE7 1456 +always \u3EE7 145-25-5 always \u3EE8 1456 always \u3EE9 1456 -always \u3EEA 1456 -always \u3EEB 1456 -always \u3EEC 1456 -always \u3EED 1456 -always \u3EEE 1456 -always \u3EEF 1456 -always \u3EF0 1456 +always \u3EEA 15-1246-5 +always \u3EEB 135-16-5 +always \u3EEC 124-34-2 +always \u3EED 15-2346-5 +always \u3EEE 245-1236-5 +always \u3EEF 124-34-2 +always \u3EF0 134-2345-4 always \u3EF1 1456 -always \u3EF2 1456 +always \u3EF2 14-1256-4 always \u3EF3 1456 always \u3EF4 1456 -always \u3EF5 1456 -always \u3EF6 1456 -always \u3EF7 1456 -always \u3EF8 1456 +always \u3EF5 1-1236-5 +always \u3EF6 135-16-4 +always \u3EF7 13-16-2 +always \u3EF8 245-136-2 always \u3EF9 1456 -always \u3EFA 1456 +always \u3EFA 14-16-5 always \u3EFB 1456 always \u3EFC 1456 -always \u3EFD 1456 +always \u3EFD 15-1246-5 always \u3EFE 1456 -always \u3EFF 1456 +always \u3EFF 24-34-4 always \u3F00 1456 always \u3F01 1456 -always \u3F02 1456 +always \u3F02 2346-2 always \u3F03 1456 always \u3F04 1456 always \u3F05 1456 always \u3F06 1456 -always \u3F07 1456 -always \u3F08 1456 -always \u3F09 1456 -always \u3F0A 1456 -always \u3F0B 1456 -always \u3F0C 1456 -always \u3F0D 1456 -always \u3F0E 1456 -always \u3F0F 1456 -always \u3F10 1456 -always \u3F11 1456 -always \u3F12 1456 -always \u3F13 1456 +always \u3F07 245-235-2 +always \u3F08 14-25-2 +always \u3F09 1456-5 +always \u3F0A 124-123456-2 +always \u3F0B 13-34-4 +always \u3F0C 1256-4 +always \u3F0D 14-356-4 +always \u3F0E 135-356-5 +always \u3F0F 1345-356-4 +always \u3F10 1234-2345-2 +always \u3F11 14-2345-5 +always \u3F12 245-234-4 +always \u3F13 14-2345-2 always \u3F14 1456 always \u3F15 1456 -always \u3F16 1456 -always \u3F17 1456 -always \u3F18 1456 -always \u3F19 1456 +always \u3F16 14-16-5 +always \u3F17 145-13456-4 +always \u3F18 35-4 +always \u3F19 1-12356-5 always \u3F1A 1456 -always \u3F1B 1456 -always \u3F1C 1456 -always \u3F1D 1456 -always \u3F1E 1456 -always \u3F1F 1456 -always \u3F20 1456 +always \u3F1B 15-13456-2 +always \u3F1C 1346-5 +always \u3F1D 12345-1236-5 +always \u3F1E 1234-1356-5 +always \u3F1F 135-2456-2 +always \u3F20 124-25-2 always \u3F21 1456 -always \u3F22 1456 -always \u3F23 1456 -always \u3F24 1456 -always \u3F25 1456 -always \u3F26 1456 -always \u3F27 1456 -always \u3F28 1456 -always \u3F29 1456 -always \u3F2A 1456 -always \u3F2B 1456 -always \u3F2C 1456 -always \u3F2D 1456 -always \u3F2E 1456 -always \u3F2F 1456 -always \u3F30 1456 -always \u3F31 1456 -always \u3F32 1456 -always \u3F33 1456 -always \u3F34 1456 -always \u3F35 1456 -always \u3F36 1456 -always \u3F37 1456 -always \u3F38 1456 +always \u3F22 2346-4 +always \u3F23 135-2456-4 +always \u3F24 245-16-5 +always \u3F25 12-34-2 +always \u3F26 13-12346-4 +always \u3F27 124-12346-2 +always \u3F28 1235-1236-2 +always \u3F29 12-1356-2 +always \u3F2A 13-23456-2 +always \u3F2B 1235-12456-5 +always \u3F2C 15-13456-5 +always \u3F2D 145-2345-5 +always \u3F2E 134-2456-2 +always \u3F2F 145-12346-5 +always \u3F30 2346-2 +always \u3F31 1245-12456-4 +always \u3F32 14-346-5 +always \u3F33 24-1356-4 +always \u3F34 12356-4 +always \u3F35 145-16-5 +always \u3F36 1256-2 +always \u3F37 12-12456-2 +always \u3F38 1245-12346-2 always \u3F39 1456 -always \u3F3A 1456 -always \u3F3B 1456 -always \u3F3C 1456 -always \u3F3D 1456 -always \u3F3E 1456 -always \u3F3F 1456 -always \u3F40 1456 -always \u3F41 1456 -always \u3F42 1456 +always \u3F3A 124-1346-2 +always \u3F3B 245-12346-2 +always \u3F3C 1234-246-2 +always \u3F3D 24-456-4 +always \u3F3E 14-34-5 +always \u3F3F 124-12346-2 +always \u3F40 1-1356-5 +always \u3F41 14-16-5 +always \u3F42 15-345-5 always \u3F43 1456 always \u3F44 1456 always \u3F45 1456 always \u3F46 1456 -always \u3F47 1456 -always \u3F48 1456 -always \u3F49 1456 -always \u3F4A 1456 -always \u3F4B 1456 -always \u3F4C 1456 +always \u3F47 13-2356-5 +always \u3F48 16-5 +always \u3F49 1235-1236-4 +always \u3F4A 15-346-5 +always \u3F4B 14-25-2 +always \u3F4C 14-234-5 always \u3F4D 1456 -always \u3F4E 1456 +always \u3F4E 145-1236-4 always \u3F4F 1456 always \u3F50 1456 -always \u3F51 1456 +always \u3F51 124-1236-2 always \u3F52 1456 always \u3F53 1456 always \u3F54 1456 -always \u3F55 1456 -always \u3F56 1456 +always \u3F55 234-2 +always \u3F56 1345-1236-2 always \u3F57 1456 -always \u3F58 1456 -always \u3F59 1456 -always \u3F5A 1456 -always \u3F5B 1456 -always \u3F5C 1456 -always \u3F5D 1456 -always \u3F5E 1456 -always \u3F5F 1456 -always \u3F60 1456 +always \u3F58 13-1346-4 +always \u3F59 13-256-5 +always \u3F5A 12-156-5 +always \u3F5B 123-12356-5 +always \u3F5C 12456-4 +always \u3F5D 14-16-5 +always \u3F5E 14-234-2 +always \u3F5F 14-346-5 +always \u3F60 15-23456-2 always \u3F61 1456 -always \u3F62 1456 -always \u3F63 1456 -always \u3F64 1456 -always \u3F65 1456 -always \u3F66 1456 +always \u3F62 1236-4 +always \u3F63 1256-5 +always \u3F64 13-1256-2 +always \u3F65 1245-12356-2 +always \u3F66 15-256-2 always \u3F67 1456 -always \u3F68 1456 -always \u3F69 1456 -always \u3F6A 1456 -always \u3F6B 1456 -always \u3F6C 1456 -always \u3F6D 1456 +always \u3F68 245-25-2 +always \u3F69 245-1236-5 +always \u3F6A 125-1356-4 +always \u3F6B 235-4 +always \u3F6C 12345-34-5 +always \u3F6D 1245-12456-4 always \u3F6E 1456 -always \u3F6F 1456 -always \u3F70 1456 -always \u3F71 1456 -always \u3F72 1456 -always \u3F73 1456 -always \u3F74 1456 +always \u3F6F 15-16-2 +always \u3F70 24-34-5 +always \u3F71 13-246-4 +always \u3F72 13-246-4 +always \u3F73 1235-1236-5 +always \u3F74 1-1346-5 always \u3F75 1456 always \u3F76 1456 -always \u3F77 1456 -always \u3F78 1456 -always \u3F79 1456 -always \u3F7A 1456 +always \u3F77 24-1246-5 +always \u3F78 12-136-2 +always \u3F79 12345-1236-5 +always \u3F7A 13-16-2 always \u3F7B 1456 always \u3F7C 1456 -always \u3F7D 1456 -always \u3F7E 1456 +always \u3F7D 13-34-5 +always \u3F7E 34-5 always \u3F7F 1456 -always \u3F80 1456 -always \u3F81 1456 +always \u3F80 245-346-5 +always \u3F81 24-34-5 always \u3F82 1456 -always \u3F83 1456 -always \u3F84 1456 -always \u3F85 1456 -always \u3F86 1456 -always \u3F87 1456 -always \u3F88 1456 -always \u3F89 1456 -always \u3F8A 1456 -always \u3F8B 1456 -always \u3F8C 1456 -always \u3F8D 1456 +always \u3F83 124-25-2 +always \u3F84 145-34-2 +always \u3F85 15-156-5 +always \u3F86 1245-1236-2 +always \u3F87 134-34-5 +always \u3F88 12345-34-5 +always \u3F89 14-13456-2 +always \u3F8A 13-16-2 +always \u3F8B 15-234-5 +always \u3F8C 15-45-4 +always \u3F8D 1345-2456-2 always \u3F8E 1456 -always \u3F8F 1456 -always \u3F90 1456 -always \u3F91 1456 -always \u3F92 1456 +always \u3F8F 13-346-5 +always \u3F90 14-16-5 +always \u3F91 145-345-2 +always \u3F92 13-16-5 always \u3F93 1456 -always \u3F94 1456 -always \u3F95 1456 -always \u3F96 1456 -always \u3F97 1456 -always \u3F98 1456 -always \u3F99 1456 +always \u3F94 14-1256-4 +always \u3F95 24-136-4 +always \u3F96 14-16-4 +always \u3F97 14-1346-4 +always \u3F98 13-1356-4 +always \u3F99 1456-4 always \u3F9A 1456 -always \u3F9B 1456 -always \u3F9C 1456 -always \u3F9D 1456 -always \u3F9E 1456 -always \u3F9F 1456 -always \u3FA0 1456 -always \u3FA1 1456 -always \u3FA2 1456 +always \u3F9B 245-1456-4 +always \u3F9C 245-346-5 +always \u3F9D 12-2346-5 +always \u3F9E 234-4 +always \u3F9F 135-34-5 +always \u3FA0 1235-456-2 +always \u3FA1 245-236-5 +always \u3FA2 14-2456-5 always \u3FA3 1456 always \u3FA4 1456 -always \u3FA5 1456 -always \u3FA6 1456 -always \u3FA7 1456 -always \u3FA8 1456 +always \u3FA5 15-1256-5 +always \u3FA6 135-1346-5 +always \u3FA7 123-2346-5 +always \u3FA8 245-16-4 always \u3FA9 1456 -always \u3FAA 1456 +always \u3FAA 24-1356-4 always \u3FAB 1456 always \u3FAC 1456 -always \u3FAD 1456 -always \u3FAE 1456 -always \u3FAF 1456 -always \u3FB0 1456 -always \u3FB1 1456 +always \u3FAD 1-12356-5 +always \u3FAE 1235-456-2 +always \u3FAF 124-1246-2 +always \u3FB0 1235-34-2 +always \u3FB1 135-356-5 always \u3FB2 1456 always \u3FB3 1456 always \u3FB4 1456 -always \u3FB5 1456 -always \u3FB6 1456 +always \u3FB5 13-16-5 +always \u3FB6 13-34-4 always \u3FB7 1456 -always \u3FB8 1456 -always \u3FB9 1456 -always \u3FBA 1456 -always \u3FBB 1456 -always \u3FBC 1456 -always \u3FBD 1456 -always \u3FBE 1456 -always \u3FBF 1456 +always \u3FB8 13-146-4 +always \u3FB9 12-2456-2 +always \u3FBA 134-345-5 +always \u3FBB 1-34-5 +always \u3FBC 124-1246-4 +always \u3FBD 124-1246-2 +always \u3FBE 14-2345-2 +always \u3FBF 14-1346-2 always \u3FC0 1456 always \u3FC1 1456 always \u3FC2 1456 -always \u3FC3 1456 -always \u3FC4 1456 -always \u3FC5 1456 +always \u3FC3 145-2456-5 +always \u3FC4 2456-5 +always \u3FC5 15-2345-4 always \u3FC6 1456 -always \u3FC7 1456 +always \u3FC7 15-16-2 always \u3FC8 1456 -always \u3FC9 1456 -always \u3FCA 1456 -always \u3FCB 1456 +always \u3FC9 124-1246-2 +always \u3FCA 245-1236-4 +always \u3FCB 15-146-5 always \u3FCC 1456 -always \u3FCD 1456 -always \u3FCE 1456 -always \u3FCF 1456 +always \u3FCD 13-346-5 +always \u3FCE 12345-136-5 +always \u3FCF 245-256-2 always \u3FD0 1456 -always \u3FD1 1456 -always \u3FD2 1456 -always \u3FD3 1456 -always \u3FD4 1456 -always \u3FD5 1456 -always \u3FD6 1456 -always \u3FD7 1456 -always \u3FD8 1456 -always \u3FD9 1456 -always \u3FDA 1456 -always \u3FDB 1456 -always \u3FDC 1456 +always \u3FD1 246-5 +always \u3FD2 145-146-4 +always \u3FD3 13-23456-2 +always \u3FD4 14-356-4 +always \u3FD5 2345-2 +always \u3FD6 14-34-2 +always \u3FD7 124-1246-2 +always \u3FD8 13456-2 +always \u3FD9 1234-16-5 +always \u3FDA 14-25-5 +always \u3FDB 14-16-2 +always \u3FDC 135-346-4 always \u3FDD 1456 -always \u3FDE 1456 -always \u3FDF 1456 +always \u3FDE 134-146-5 +always \u3FDF 135-2456-2 always \u3FE0 1456 always \u3FE1 1456 -always \u3FE2 1456 -always \u3FE3 1456 -always \u3FE4 1456 -always \u3FE5 1456 -always \u3FE6 1456 -always \u3FE7 1456 -always \u3FE8 1456 -always \u3FE9 1456 -always \u3FEA 1456 -always \u3FEB 1456 +always \u3FE2 246-5 +always \u3FE3 1235-2346-2 +always \u3FE4 12-123456-4 +always \u3FE5 1235-34-2 +always \u3FE6 1345-13456-5 +always \u3FE7 12-12356-2 +always \u3FE8 14-16-5 +always \u3FE9 124-1346-4 +always \u3FEA 1235-12456-2 +always \u3FEB 135-16-5 always \u3FEC 1456 -always \u3FED 1456 -always \u3FEE 1456 -always \u3FEF 1456 -always \u3FF0 1456 -always \u3FF1 1456 +always \u3FED 12-2346-5 +always \u3FEE 46-5 +always \u3FEF 145-345-2 +always \u3FF0 146-2 +always \u3FF1 15-236-2 always \u3FF2 1456 always \u3FF3 1456 always \u3FF4 1456 -always \u3FF5 1456 +always \u3FF5 1245-1236-4 always \u3FF6 1456 -always \u3FF7 1456 -always \u3FF8 1456 -always \u3FF9 1456 -always \u3FFA 1456 +always \u3FF7 125-146-5 +always \u3FF8 12456-4 +always \u3FF9 124-345-5 +always \u3FFA 135-146-2 always \u3FFB 1456 -always \u3FFC 1456 +always \u3FFC 2345-2 always \u3FFD 1456 -always \u3FFE 1456 -always \u3FFF 1456 -always \u4000 1456 -always \u4001 1456 +always \u3FFE 1-34-5 +always \u3FFF 23456-4 +always \u4000 12345-1236-2 +always \u4001 234-5 always \u4002 1456 -always \u4003 1456 -always \u4004 1456 -always \u4005 1456 -always \u4006 1456 -always \u4007 1456 -always \u4008 1456 -always \u4009 1456 -always \u400A 1456 -always \u400B 1456 +always \u4003 124-1246-2 +always \u4004 134-1356-2 +always \u4005 24-2346-5 +always \u4006 13-1456-5 +always \u4007 13-34-4 +always \u4008 245-16-5 +always \u4009 245-246-2 +always \u400A 13-246-4 +always \u400B 2345-2 always \u400C 1456 -always \u400D 1456 -always \u400E 1456 -always \u400F 1456 -always \u4010 1456 -always \u4011 1456 +always \u400D 123-1236-5 +always \u400E 134-2345-4 +always \u400F 15-2345-5 +always \u4010 15-1236-4 +always \u4011 1345-345-5 always \u4012 1456 -always \u4013 1456 -always \u4014 1456 -always \u4015 1456 +always \u4013 1235-12456-5 +always \u4014 1345-234-2 +always \u4015 12-1356-5 always \u4016 1456 -always \u4017 1456 -always \u4018 1456 -always \u4019 1456 -always \u401A 1456 -always \u401B 1456 -always \u401C 1456 +always \u4017 13-236-2 +always \u4018 15-16-2 +always \u4019 245-16-5 +always \u401A 1346-2 +always \u401B 134-356-5 +always \u401C 13-34-4 always \u401D 1456 always \u401E 1456 -always \u401F 1456 -always \u4020 1456 -always \u4021 1456 -always \u4022 1456 -always \u4023 1456 -always \u4024 1456 -always \u4025 1456 -always \u4026 1456 -always \u4027 1456 -always \u4028 1456 -always \u4029 1456 -always \u402A 1456 -always \u402B 1456 -always \u402C 1456 +always \u401F 12345-1236-2 +always \u4020 245-1256-2 +always \u4021 12-1236-5 +always \u4022 24-123456-5 +always \u4023 135-16-5 +always \u4024 134-146-5 +always \u4025 24-25-5 +always \u4026 13-34-4 +always \u4027 1235-12346-4 +always \u4028 1235-12456-5 +always \u4029 14-25-5 +always \u402A 1235-1346-2 +always \u402B 13-23456-2 +always \u402C 245-45-2 always \u402D 1456 -always \u402E 1456 -always \u402F 1456 -always \u4030 1456 +always \u402E 134-1346-2 +always \u402F 135-34-4 +always \u4030 13-34-4 always \u4031 1456 -always \u4032 1456 -always \u4033 1456 -always \u4034 1456 -always \u4035 1456 -always \u4036 1456 -always \u4037 1456 -always \u4038 1456 -always \u4039 1456 +always \u4032 134-34-5 +always \u4033 2456-5 +always \u4034 13456-4 +always \u4035 24-123456-5 +always \u4036 14-1346-4 +always \u4037 13-346-2 +always \u4038 145-16-5 +always \u4039 13-346-2 always \u403A 1456 -always \u403B 1456 -always \u403C 1456 -always \u403D 1456 -always \u403E 1456 -always \u403F 1456 +always \u403B 1234-1456-5 +always \u403C 1245-136-5 +always \u403D 2345-2 +always \u403E 145-34-4 +always \u403F 145-16-5 always \u4040 1456 -always \u4041 1456 -always \u4042 1456 +always \u4041 14-1346-4 +always \u4042 15-2345-5 always \u4043 1456 -always \u4044 1456 -always \u4045 1456 -always \u4046 1456 -always \u4047 1456 -always \u4048 1456 -always \u4049 1456 -always \u404A 1456 -always \u404B 1456 -always \u404C 1456 -always \u404D 1456 -always \u404E 1456 -always \u404F 1456 -always \u4050 1456 -always \u4051 1456 -always \u4052 1456 -always \u4053 1456 -always \u4054 1456 -always \u4055 1456 -always \u4056 1456 -always \u4057 1456 -always \u4058 1456 -always \u4059 1456 -always \u405A 1456 -always \u405B 1456 -always \u405C 1456 -always \u405D 1456 -always \u405E 1456 -always \u405F 1456 -always \u4060 1456 +always \u4044 15-13456-5 +always \u4045 135-356-5 +always \u4046 1236-4 +always \u4047 134-16-5 +always \u4048 245-16-5 +always \u4049 245-16-5 +always \u404A 25-5 +always \u404B 24-2346-2 +always \u404C 1256-5 +always \u404D 13-23456-5 +always \u404E 12-1356-2 +always \u404F 246-4 +always \u4050 13456-5 +always \u4051 46-2 +always \u4052 13-16-2 +always \u4053 13-346-5 +always \u4054 1235-1236-5 +always \u4055 134-1456-2 +always \u4056 14-12356-3 +always \u4057 123-2456-4 +always \u4058 246-4 +always \u4059 2345-4 +always \u405A 15-123456-4 +always \u405B 13-1246-4 +always \u405C 1235-456-4 +always \u405D 13456-2 +always \u405E 24-1356-4 +always \u405F 12-345-2 +always \u4060 14-2345-2 always \u4061 1456 -always \u4062 1456 -always \u4063 1456 -always \u4064 1456 -always \u4065 1456 -always \u4066 1456 -always \u4067 1456 -always \u4068 1456 -always \u4069 1456 -always \u406A 1456 -always \u406B 1456 -always \u406C 1456 +always \u4062 15-45-2 +always \u4063 12-12456-2 +always \u4064 12-2346-5 +always \u4065 1345-16-5 +always \u4066 245-1256-5 +always \u4067 134-246-2 +always \u4068 1235-25-5 +always \u4069 1256-2 +always \u406A 1345-1236-4 +always \u406B 1235-34-2 +always \u406C 245-1356-2 always \u406D 1456 -always \u406E 1456 -always \u406F 1456 -always \u4070 1456 -always \u4071 1456 -always \u4072 1456 -always \u4073 1456 -always \u4074 1456 -always \u4075 1456 -always \u4076 1456 -always \u4077 1456 -always \u4078 1456 -always \u4079 1456 -always \u407A 1456 -always \u407B 1456 -always \u407C 1456 -always \u407D 1456 -always \u407E 1456 -always \u407F 1456 -always \u4080 1456 -always \u4081 1456 -always \u4082 1456 -always \u4083 1456 -always \u4084 1456 +always \u406E 245-2345-2 +always \u406F 24-2346-5 +always \u4070 13-46-4 +always \u4071 146-5 +always \u4072 134-2456-2 +always \u4073 134-1346-4 +always \u4074 1-1236-4 +always \u4075 135-2345-4 +always \u4076 13-246-4 +always \u4077 13-236-2 +always \u4078 1345-12346-2 +always \u4079 135-16-5 +always \u407A 24-156-5 +always \u407B 14-16-5 +always \u407C 134-126-5 +always \u407D 14-346-5 +always \u407E 134-346-5 +always \u407F 134-126-5 +always \u4080 15-16-3 +always \u4081 12-1236-2 +always \u4082 245-1256-2 +always \u4083 13-246-5 +always \u4084 1235-25-5 always \u4085 1456 -always \u4086 1456 -always \u4087 1456 -always \u4088 1456 -always \u4089 1456 -always \u408A 1456 +always \u4086 15-1256-5 +always \u4087 1345-1346-2 +always \u4088 124-12346-2 +always \u4089 1235-12356-2 +always \u408A 1256-5 always \u408B 1456 always \u408C 1456 -always \u408D 1456 -always \u408E 1456 +always \u408D 135-126-2 +always \u408E 125-12456-4 always \u408F 1456 -always \u4090 1456 +always \u4090 12-25-5 always \u4091 1456 -always \u4092 1456 +always \u4092 13-346-2 always \u4093 1456 -always \u4094 1456 -always \u4095 1456 -always \u4096 1456 +always \u4094 15-13456-5 +always \u4095 1235-1246-5 +always \u4096 24-156-2 always \u4097 1456 always \u4098 1456 always \u4099 1456 -always \u409A 1456 -always \u409B 1456 -always \u409C 1456 -always \u409D 1456 -always \u409E 1456 +always \u409A 246-2 +always \u409B 1256-2 +always \u409C 135-1346-5 +always \u409D 13-346-2 +always \u409E 1-2346-5 always \u409F 1456 -always \u40A0 1456 -always \u40A1 1456 -always \u40A2 1456 -always \u40A3 1456 -always \u40A4 1456 -always \u40A5 1456 -always \u40A6 1456 -always \u40A7 1456 +always \u40A0 24-2346-2 +always \u40A1 145-16-4 +always \u40A2 145-12346-4 +always \u40A3 245-156-2 +always \u40A4 12345-34-5 +always \u40A5 134-1456-2 +always \u40A6 1-136-4 +always \u40A7 1-136-4 always \u40A8 1456 -always \u40A9 1456 -always \u40AA 1456 -always \u40AB 1456 -always \u40AC 1456 +always \u40A9 2345-5 +always \u40AA 145-246-5 +always \u40AB 1235-12346-2 +always \u40AC 13-12346-4 always \u40AD 1456 -always \u40AE 1456 -always \u40AF 1456 -always \u40B0 1456 -always \u40B1 1456 -always \u40B2 1456 -always \u40B3 1456 -always \u40B4 1456 +always \u40AE 14-236-5 +always \u40AF 13-2356-5 +always \u40B0 14-345-5 +always \u40B1 245-1246-5 +always \u40B2 12345-345-4 +always \u40B3 245-25-4 +always \u40B4 2345-2 always \u40B5 1456 -always \u40B6 1456 +always \u40B6 13-346-2 always \u40B7 1456 -always \u40B8 1456 -always \u40B9 1456 -always \u40BA 1456 -always \u40BB 1456 -always \u40BC 1456 -always \u40BD 1456 -always \u40BE 1456 -always \u40BF 1456 -always \u40C0 1456 +always \u40B8 13-25-2 +always \u40B9 15-25-4 +always \u40BA 12456-4 +always \u40BB 1-1356-5 +always \u40BC 1345-346-5 +always \u40BD 145-246-5 +always \u40BE 14-2456-4 +always \u40BF 124-345-5 +always \u40C0 245-1246-5 always \u40C1 1456 -always \u40C2 1456 +always \u40C2 13-123456-4 always \u40C3 1456 always \u40C4 1456 always \u40C5 1456 always \u40C6 1456 -always \u40C7 1456 +always \u40C7 134-2345-2 always \u40C8 1456 -always \u40C9 1456 -always \u40CA 1456 -always \u40CB 1456 +always \u40C9 134-1456-2 +always \u40CA 13-1256-4 +always \u40CB 1256-2 always \u40CC 1456 -always \u40CD 1456 -always \u40CE 1456 +always \u40CD 1-146-5 +always \u40CE 125-2346-2 always \u40CF 1456 always \u40D0 1456 -always \u40D1 1456 -always \u40D2 1456 -always \u40D3 1456 -always \u40D4 1456 -always \u40D5 1456 -always \u40D6 1456 -always \u40D7 1456 +always \u40D1 1234-1236-2 +always \u40D2 1235-2346-2 +always \u40D3 13-12356-5 +always \u40D4 1235-12346-2 +always \u40D5 14-146-2 +always \u40D6 34-5 +always \u40D7 12-25-5 always \u40D8 1456 -always \u40D9 1456 -always \u40DA 1456 -always \u40DB 1456 +always \u40D9 14-34-5 +always \u40DA 245-34-5 +always \u40DB 14-2345-2 always \u40DC 1456 -always \u40DD 1456 -always \u40DE 1456 +always \u40DD 245-246-5 +always \u40DE 24-34-2 always \u40DF 1456 always \u40E0 1456 -always \u40E1 1456 +always \u40E1 245-136-2 always \u40E2 1456 -always \u40E3 1456 -always \u40E4 1456 -always \u40E5 1456 +always \u40E3 1235-1246-4 +always \u40E4 15-34-5 +always \u40E5 12-456-2 always \u40E6 1456 -always \u40E7 1456 +always \u40E7 14-12346-2 always \u40E8 1456 -always \u40E9 1456 -always \u40EA 1456 -always \u40EB 1456 -always \u40EC 1456 -always \u40ED 1456 -always \u40EE 1456 -always \u40EF 1456 +always \u40E9 1345-146-2 +always \u40EA 124-1236-2 +always \u40EB 145-1236-4 +always \u40EC 1246-4 +always \u40ED 13-1236-4 +always \u40EE 145-345-2 +always \u40EF 14-16-5 always \u40F0 1456 -always \u40F1 1456 -always \u40F2 1456 -always \u40F3 1456 +always \u40F1 15-2345-5 +always \u40F2 1234-1236-2 +always \u40F3 14-345-5 always \u40F4 1456 -always \u40F5 1456 -always \u40F6 1456 -always \u40F7 1456 -always \u40F8 1456 -always \u40F9 1456 -always \u40FA 1456 -always \u40FB 1456 +always \u40F5 1345-246-4 +always \u40F6 1235-2356-2 +always \u40F7 13456-2 +always \u40F8 15-2345-5 +always \u40F9 14-1236-5 +always \u40FA 134-126-2 +always \u40FB 135-345-5 always \u40FC 1456 -always \u40FD 1456 -always \u40FE 1456 +always \u40FD 12345-34-2 +always \u40FE 135-16-4 always \u40FF 1456 -always \u4100 1456 -always \u4101 1456 -always \u4102 1456 +always \u4100 1235-25-5 +always \u4101 16-5 +always \u4102 14-234-5 always \u4103 1456 always \u4104 1456 -always \u4105 1456 -always \u4106 1456 -always \u4107 1456 -always \u4108 1456 -always \u4109 1456 +always \u4105 13-45-5 +always \u4106 1235-25-2 +always \u4107 12-1356-2 +always \u4108 145-12356-5 +always \u4109 2346-2 always \u410A 1456 -always \u410B 1456 -always \u410C 1456 -always \u410D 1456 -always \u410E 1456 -always \u410F 1456 -always \u4110 1456 -always \u4111 1456 -always \u4112 1456 -always \u4113 1456 -always \u4114 1456 -always \u4115 1456 +always \u410B 2345-4 +always \u410C 1-1246-5 +always \u410D 145-34-5 +always \u410E 245-16-4 +always \u410F 1256-2 +always \u4110 245-45-5 +always \u4111 1235-25-2 +always \u4112 1345-346-5 +always \u4113 1235-1356-2 +always \u4114 13-1256-4 +always \u4115 24-2346-5 always \u4116 1456 always \u4117 1456 -always \u4118 1456 -always \u4119 1456 -always \u411A 1456 -always \u411B 1456 -always \u411C 1456 -always \u411D 1456 +always \u4118 1234-1356-2 +always \u4119 134-13456-2 +always \u411A 245-146-2 +always \u411B 14-12356-2 +always \u411C 14-16-2 +always \u411D 12-123456-4 always \u411E 1456 -always \u411F 1456 -always \u4120 1456 +always \u411F 245-1246-5 +always \u4120 24-1236-5 always \u4121 1456 -always \u4122 1456 +always \u4122 245-16-2 always \u4123 1456 -always \u4124 1456 -always \u4125 1456 -always \u4126 1456 -always \u4127 1456 -always \u4128 1456 -always \u4129 1456 -always \u412A 1456 -always \u412B 1456 -always \u412C 1456 -always \u412D 1456 +always \u4124 14-2456-5 +always \u4125 14-13456-2 +always \u4126 14-246-4 +always \u4127 1245-1356-2 +always \u4128 1256-2 +always \u4129 1345-146-2 +always \u412A 12-25-5 +always \u412B 245-16-4 +always \u412C 16-2 +always \u412D 1345-2345-2 always \u412E 1456 -always \u412F 1456 -always \u4130 1456 +always \u412F 13-2345-4 +always \u4130 23456-2 always \u4131 1456 -always \u4132 1456 +always \u4132 12-1246-2 always \u4133 1456 always \u4134 1456 always \u4135 1456 -always \u4136 1456 -always \u4137 1456 -always \u4138 1456 -always \u4139 1456 -always \u413A 1456 -always \u413B 1456 -always \u413C 1456 -always \u413D 1456 -always \u413E 1456 -always \u413F 1456 -always \u4140 1456 -always \u4141 1456 -always \u4142 1456 -always \u4143 1456 -always \u4144 1456 +always \u4136 135-16-5 +always \u4137 145-1236-5 +always \u4138 1234-126-5 +always \u4139 1345-2345-2 +always \u413A 1-156-5 +always \u413B 12-146-2 +always \u413C 124-2345-4 +always \u413D 124-2345-4 +always \u413E 1245-12356-5 +always \u413F 16-5 +always \u4140 14-346-5 +always \u4141 1236-5 +always \u4142 1235-2346-2 +always \u4143 245-235-2 +always \u4144 14-16-5 always \u4145 1456 -always \u4146 1456 -always \u4147 1456 -always \u4148 1456 -always \u4149 1456 -always \u414A 1456 -always \u414B 1456 +always \u4146 125-156-5 +always \u4147 15-34-5 +always \u4148 45-5 +always \u4149 23456-5 +always \u414A 145-34-5 +always \u414B 12456-4 always \u414C 1456 -always \u414D 1456 -always \u414E 1456 -always \u414F 1456 -always \u4150 1456 -always \u4151 1456 -always \u4152 1456 -always \u4153 1456 +always \u414D 145-12346-5 +always \u414E 234-4 +always \u414F 1235-1246-5 +always \u4150 13-2345-4 +always \u4151 1245-1246-2 +always \u4152 134-1346-2 +always \u4153 13-1256-4 always \u4154 1456 always \u4155 1456 -always \u4156 1456 -always \u4157 1456 -always \u4158 1456 -always \u4159 1456 -always \u415A 1456 +always \u4156 1236-4 +always \u4157 15-1246-5 +always \u4158 14-2456-2 +always \u4159 1235-123456-5 +always \u415A 245-46-4 always \u415B 1456 -always \u415C 1456 +always \u415C 145-25-5 always \u415D 1456 -always \u415E 1456 -always \u415F 1456 -always \u4160 1456 -always \u4161 1456 -always \u4162 1456 -always \u4163 1456 -always \u4164 1456 -always \u4165 1456 -always \u4166 1456 -always \u4167 1456 +always \u415E 1345-345-5 +always \u415F 245-1236-4 +always \u4160 124-16-2 +always \u4161 15-1256-4 +always \u4162 13-234-5 +always \u4163 1235-456-2 +always \u4164 245-16-5 +always \u4165 13-346-2 +always \u4166 134-146-2 +always \u4167 2345-5 always \u4168 1456 -always \u4169 1456 -always \u416A 1456 +always \u4169 1-156-4 +always \u416A 124-1246-2 always \u416B 1456 -always \u416C 1456 -always \u416D 1456 -always \u416E 1456 -always \u416F 1456 -always \u4170 1456 -always \u4171 1456 -always \u4172 1456 -always \u4173 1456 -always \u4174 1456 -always \u4175 1456 -always \u4176 1456 -always \u4177 1456 -always \u4178 1456 -always \u4179 1456 -always \u417A 1456 -always \u417B 1456 -always \u417C 1456 -always \u417D 1456 -always \u417E 1456 -always \u417F 1456 -always \u4180 1456 +always \u416C 2456-5 +always \u416D 1234-1346-2 +always \u416E 245-1346-5 +always \u416F 124-1346-2 +always \u4170 136-4 +always \u4171 1235-123456-5 +always \u4172 245-16-2 +always \u4173 12-34-2 +always \u4174 15-25-4 +always \u4175 1-25-2 +always \u4176 1345-12356-5 +always \u4177 124-34-2 +always \u4178 125-34-2 +always \u4179 14-12356-2 +always \u417A 134-246-4 +always \u417B 14-16-2 +always \u417C 134-1236-2 +always \u417D 13-34-4 +always \u417E 245-136-2 +always \u417F 1235-35-2 +always \u4180 134-356-4 always \u4181 1456 -always \u4182 1456 -always \u4183 1456 -always \u4184 1456 -always \u4185 1456 +always \u4182 14-2345-2 +always \u4183 145-146-4 +always \u4184 24-1236-5 +always \u4185 245-156-2 always \u4186 1456 always \u4187 1456 -always \u4188 1456 -always \u4189 1456 -always \u418A 1456 -always \u418B 1456 +always \u4188 1-156-5 +always \u4189 135-345-5 +always \u418A 245-1246-5 +always \u418B 245-234-3 always \u418C 1456 -always \u418D 1456 +always \u418D 14-12346-2 always \u418E 1456 -always \u418F 1456 -always \u4190 1456 -always \u4191 1456 -always \u4192 1456 -always \u4193 1456 +always \u418F 12345-356-5 +always \u4190 13-25-2 +always \u4191 12-1356-2 +always \u4192 13-234-5 +always \u4193 2346-5 always \u4194 1456 -always \u4195 1456 -always \u4196 1456 -always \u4197 1456 -always \u4198 1456 -always \u4199 1456 -always \u419A 1456 -always \u419B 1456 -always \u419C 1456 -always \u419D 1456 -always \u419E 1456 -always \u419F 1456 -always \u41A0 1456 -always \u41A1 1456 -always \u41A2 1456 -always \u41A3 1456 +always \u4195 13-236-2 +always \u4196 1235-12346-2 +always \u4197 13-246-5 +always \u4198 245-12456-2 +always \u4199 246-2 +always \u419A 124-12346-2 +always \u419B 12-345-2 +always \u419C 234-5 +always \u419D 24-34-5 +always \u419E 246-4 +always \u419F 13-2346-2 +always \u41A0 1235-12456-5 +always \u41A1 14-1346-2 +always \u41A2 13-236-2 +always \u41A3 12-136-2 always \u41A4 1456 always \u41A5 1456 -always \u41A6 1456 +always \u41A6 24-136-5 always \u41A7 1456 -always \u41A8 1456 -always \u41A9 1456 +always \u41A8 134-13456-2 +always \u41A9 134-13456-2 always \u41AA 1456 -always \u41AB 1456 -always \u41AC 1456 +always \u41AB 12-456-3 +always \u41AC 256-4 always \u41AD 1456 -always \u41AE 1456 -always \u41AF 1456 +always \u41AE 13-1456-5 +always \u41AF 12-25-5 always \u41B0 1456 -always \u41B1 1456 +always \u41B1 124-1236-4 always \u41B2 1456 -always \u41B3 1456 +always \u41B3 245-235-2 always \u41B4 1456 -always \u41B5 1456 +always \u41B5 12-1356-2 always \u41B6 1456 -always \u41B7 1456 -always \u41B8 1456 -always \u41B9 1456 +always \u41B7 1256-5 +always \u41B8 12-1356-2 +always \u41B9 124-12346-4 always \u41BA 1456 -always \u41BB 1456 +always \u41BB 245-246-5 always \u41BC 1456 -always \u41BD 1456 -always \u41BE 1456 -always \u41BF 1456 -always \u41C0 1456 +always \u41BD 13-1256-5 +always \u41BE 14-1236-2 +always \u41BF 16-5 +always \u41C0 1245-12346-2 always \u41C1 1456 always \u41C2 1456 -always \u41C3 1456 +always \u41C3 15-156-5 always \u41C4 1456 -always \u41C5 1456 +always \u41C5 12345-345-2 always \u41C6 1456 -always \u41C7 1456 -always \u41C8 1456 +always \u41C7 134-1356-2 +always \u41C8 13-1246-5 always \u41C9 1456 always \u41CA 1456 -always \u41CB 1456 -always \u41CC 1456 -always \u41CD 1456 -always \u41CE 1456 -always \u41CF 1456 -always \u41D0 1456 -always \u41D1 1456 -always \u41D2 1456 +always \u41CB 1235-2456-5 +always \u41CC 245-246-5 +always \u41CD 12-25-5 +always \u41CE 245-236-5 +always \u41CF 145-1246-5 +always \u41D0 14-16-5 +always \u41D1 135-345-5 +always \u41D2 13-346-5 always \u41D3 1456 -always \u41D4 1456 +always \u41D4 14-25-5 always \u41D5 1456 -always \u41D6 1456 +always \u41D6 256-4 always \u41D7 1456 -always \u41D8 1456 -always \u41D9 1456 +always \u41D8 1235-34-5 +always \u41D9 1456-4 always \u41DA 1456 -always \u41DB 1456 -always \u41DC 1456 +always \u41DB 1-156-4 +always \u41DC 14-2345-4 always \u41DD 1456 -always \u41DE 1456 -always \u41DF 1456 -always \u41E0 1456 -always \u41E1 1456 -always \u41E2 1456 -always \u41E3 1456 -always \u41E4 1456 -always \u41E5 1456 -always \u41E6 1456 -always \u41E7 1456 -always \u41E8 1456 -always \u41E9 1456 +always \u41DE 13-1236-4 +always \u41DF 13-2345-5 +always \u41E0 1-12356-5 +always \u41E1 1-34-5 +always \u41E2 123-34-4 +always \u41E3 1345-345-5 +always \u41E4 145-1246-5 +always \u41E5 125-2346-2 +always \u41E6 46-4 +always \u41E7 1-34-5 +always \u41E8 13-12346-5 +always \u41E9 16-5 always \u41EA 1456 always \u41EB 1456 -always \u41EC 1456 -always \u41ED 1456 -always \u41EE 1456 -always \u41EF 1456 +always \u41EC 12-456-4 +always \u41ED 14-146-4 +always \u41EE 1245-136-5 +always \u41EF 1245-12346-2 always \u41F0 1456 -always \u41F1 1456 -always \u41F2 1456 +always \u41F1 1345-345-5 +always \u41F2 245-2346-5 always \u41F3 1456 always \u41F4 1456 -always \u41F5 1456 -always \u41F6 1456 -always \u41F7 1456 -always \u41F8 1456 -always \u41F9 1456 -always \u41FA 1456 -always \u41FB 1456 -always \u41FC 1456 -always \u41FD 1456 -always \u41FE 1456 +always \u41F5 16-2 +always \u41F6 13-236-2 +always \u41F7 135-16-4 +always \u41F8 12-1356-2 +always \u41F9 13-256-5 +always \u41FA 12-12356-2 +always \u41FB 1235-1246-5 +always \u41FC 12-156-5 +always \u41FD 1-156-5 +always \u41FE 2345-2 always \u41FF 1456 always \u4200 1456 -always \u4201 1456 -always \u4202 1456 -always \u4203 1456 -always \u4204 1456 -always \u4205 1456 -always \u4206 1456 -always \u4207 1456 -always \u4208 1456 -always \u4209 1456 -always \u420A 1456 -always \u420B 1456 +always \u4201 14-123456-2 +always \u4202 135-13456-5 +always \u4203 1-146-4 +always \u4204 1235-1236-2 +always \u4205 1256-5 +always \u4206 145-2456-5 +always \u4207 1-146-5 +always \u4208 12345-356-2 +always \u4209 24-345-5 +always \u420A 14-13456-2 +always \u420B 124-345-5 always \u420C 1456 -always \u420D 1456 -always \u420E 1456 -always \u420F 1456 -always \u4210 1456 -always \u4211 1456 -always \u4212 1456 -always \u4213 1456 +always \u420D 134-1346-2 +always \u420E 346-5 +always \u420F 135-146-2 +always \u4210 123-1246-5 +always \u4211 13-35-4 +always \u4212 1345-1236-4 +always \u4213 13-2346-2 always \u4214 1456 -always \u4215 1456 +always \u4215 12-156-2 always \u4216 1456 -always \u4217 1456 -always \u4218 1456 -always \u4219 1456 -always \u421A 1456 -always \u421B 1456 -always \u421C 1456 +always \u4217 15-25-4 +always \u4218 245-156-2 +always \u4219 1-12356-5 +always \u421A 124-2456-2 +always \u421B 123-2356-5 +always \u421C 245-1456-5 always \u421D 1456 -always \u421E 1456 -always \u421F 1456 -always \u4220 1456 +always \u421E 145-34-4 +always \u421F 245-2346-5 +always \u4220 1235-12456-4 always \u4221 1456 -always \u4222 1456 -always \u4223 1456 -always \u4224 1456 +always \u4222 15-2456-4 +always \u4223 1-1356-5 +always \u4224 245-2345-2 always \u4225 1456 always \u4226 1456 -always \u4227 1456 +always \u4227 1246-4 always \u4228 1456 always \u4229 1456 -always \u422A 1456 -always \u422B 1456 -always \u422C 1456 -always \u422D 1456 -always \u422E 1456 +always \u422A 15-16-5 +always \u422B 1345-345-5 +always \u422C 1234-34-2 +always \u422D 1235-2356-2 +always \u422E 13-1256-4 always \u422F 1456 always \u4230 1456 always \u4231 1456 -always \u4232 1456 -always \u4233 1456 -always \u4234 1456 +always \u4232 1234-1236-2 +always \u4233 124-345-5 +always \u4234 245-2345-5 always \u4235 1456 -always \u4236 1456 -always \u4237 1456 -always \u4238 1456 -always \u4239 1456 +always \u4236 1245-12346-2 +always \u4237 14-25-5 +always \u4238 1235-34-2 +always \u4239 15-12356-4 always \u423A 1456 -always \u423B 1456 -always \u423C 1456 +always \u423B 1234-34-2 +always \u423C 134-346-5 always \u423D 1456 -always \u423E 1456 -always \u423F 1456 -always \u4240 1456 -always \u4241 1456 -always \u4242 1456 -always \u4243 1456 -always \u4244 1456 -always \u4245 1456 -always \u4246 1456 +always \u423E 24-25-5 +always \u423F 134-2456-5 +always \u4240 24-34-5 +always \u4241 14-13456-2 +always \u4242 14-356-4 +always \u4243 13-46-4 +always \u4244 14-1356-2 +always \u4245 1-156-5 +always \u4246 145-246-4 always \u4247 1456 -always \u4248 1456 -always \u4249 1456 -always \u424A 1456 -always \u424B 1456 -always \u424C 1456 -always \u424D 1456 -always \u424E 1456 -always \u424F 1456 +always \u4248 15-1236-4 +always \u4249 1235-34-2 +always \u424A 12345-1236-5 +always \u424B 134-356-5 +always \u424C 15-1246-5 +always \u424D 13-2345-4 +always \u424E 124-1346-2 +always \u424F 15-346-5 always \u4250 1456 -always \u4251 1456 -always \u4252 1456 -always \u4253 1456 +always \u4251 134-126-2 +always \u4252 12345-1236-2 +always \u4253 14-356-2 always \u4254 1456 -always \u4255 1456 -always \u4256 1456 +always \u4255 245-1356-2 +always \u4256 14-13456-2 always \u4257 1456 -always \u4258 1456 -always \u4259 1456 -always \u425A 1456 -always \u425B 1456 -always \u425C 1456 -always \u425D 1456 -always \u425E 1456 -always \u425F 1456 -always \u4260 1456 -always \u4261 1456 -always \u4262 1456 -always \u4263 1456 -always \u4264 1456 -always \u4265 1456 +always \u4258 245-12346-2 +always \u4259 256-2 +always \u425A 134-1356-2 +always \u425B 1256-5 +always \u425C 1-156-5 +always \u425D 245-16-4 +always \u425E 145-1236-4 +always \u425F 1235-25-5 +always \u4260 1246-2 +always \u4261 124-1236-2 +always \u4262 15-2346-5 +always \u4263 15-346-5 +always \u4264 15-12356-4 +always \u4265 15-12346-4 always \u4266 1456 -always \u4267 1456 -always \u4268 1456 +always \u4267 14-234-2 +always \u4268 16-5 always \u4269 1456 -always \u426A 1456 -always \u426B 1456 -always \u426C 1456 -always \u426D 1456 -always \u426E 1456 -always \u426F 1456 -always \u4270 1456 +always \u426A 14-356-5 +always \u426B 14-16-2 +always \u426C 12345-356-5 +always \u426D 14-346-5 +always \u426E 14-1456-5 +always \u426F 15-2345-5 +always \u4270 246-2 always \u4271 1456 -always \u4272 1456 -always \u4273 1456 -always \u4274 1456 -always \u4275 1456 +always \u4272 135-346-5 +always \u4273 15-2345-4 +always \u4274 1245-1346-2 +always \u4275 1-12456-5 always \u4276 1456 -always \u4277 1456 -always \u4278 1456 -always \u4279 1456 -always \u427A 1456 -always \u427B 1456 -always \u427C 1456 -always \u427D 1456 -always \u427E 1456 -always \u427F 1456 -always \u4280 1456 +always \u4277 145-1236-5 +always \u4278 135-2345-5 +always \u4279 14-13456-2 +always \u427A 1235-12346-2 +always \u427B 245-16-2 +always \u427C 14-246-5 +always \u427D 135-1236-4 +always \u427E 134-16-5 +always \u427F 1235-34-2 +always \u4280 1235-34-2 always \u4281 1456 -always \u4282 1456 -always \u4283 1456 -always \u4284 1456 -always \u4285 1456 -always \u4286 1456 -always \u4287 1456 -always \u4288 1456 -always \u4289 1456 -always \u428A 1456 +always \u4282 245-2346-5 +always \u4283 1234-356-5 +always \u4284 245-235-2 +always \u4285 134-13456-2 +always \u4286 13-234-5 +always \u4287 135-34-5 +always \u4288 134-356-2 +always \u4289 15-1236-4 +always \u428A 134-356-5 always \u428B 1456 always \u428C 1456 -always \u428D 1456 -always \u428E 1456 +always \u428D 14-16-2 +always \u428E 245-45-4 always \u428F 1456 -always \u4290 1456 -always \u4291 1456 +always \u4290 136-5 +always \u4291 15-46-4 always \u4292 1456 -always \u4293 1456 +always \u4293 24-156-5 always \u4294 1456 always \u4295 1456 -always \u4296 1456 -always \u4297 1456 -always \u4298 1456 -always \u4299 1456 +always \u4296 14-1236-4 +always \u4297 1235-456-2 +always \u4298 13-234-5 +always \u4299 2345-2 always \u429A 1456 -always \u429B 1456 -always \u429C 1456 -always \u429D 1456 -always \u429E 1456 -always \u429F 1456 -always \u42A0 1456 -always \u42A1 1456 +always \u429B 15-345-4 +always \u429C 124-12456-2 +always \u429D 15-346-5 +always \u429E 1-2346-2 +always \u429F 134-136-2 +always \u42A0 15-16-5 +always \u42A1 134-1236-2 always \u42A2 1456 -always \u42A3 1456 -always \u42A4 1456 -always \u42A5 1456 -always \u42A6 1456 -always \u42A7 1456 -always \u42A8 1456 -always \u42A9 1456 -always \u42AA 1456 -always \u42AB 1456 -always \u42AC 1456 -always \u42AD 1456 -always \u42AE 1456 -always \u42AF 1456 -always \u42B0 1456 +always \u42A3 1235-456-2 +always \u42A4 124-1236-2 +always \u42A5 15-246-5 +always \u42A6 23456-2 +always \u42A7 135-16-5 +always \u42A8 14-25-2 +always \u42A9 12345-1236-2 +always \u42AA 14-16-5 +always \u42AB 245-1246-4 +always \u42AC 12-345-5 +always \u42AD 12-12356-2 +always \u42AE 145-16-2 +always \u42AF 123-456-5 +always \u42B0 12-34-4 always \u42B1 1456 -always \u42B2 1456 -always \u42B3 1456 -always \u42B4 1456 -always \u42B5 1456 -always \u42B6 1456 +always \u42B2 12-1236-4 +always \u42B3 134-16-2 +always \u42B4 245-2345-5 +always \u42B5 245-234-2 +always \u42B6 1-136-5 always \u42B7 1456 always \u42B8 1456 always \u42B9 1456 -always \u42BA 1456 -always \u42BB 1456 -always \u42BC 1456 -always \u42BD 1456 -always \u42BE 1456 -always \u42BF 1456 -always \u42C0 1456 -always \u42C1 1456 -always \u42C2 1456 -always \u42C3 1456 -always \u42C4 1456 +always \u42BA 13-34-4 +always \u42BB 2345-4 +always \u42BC 12-156-4 +always \u42BD 13-2356-5 +always \u42BE 134-34-5 +always \u42BF 135-126-2 +always \u42C0 123-35-5 +always \u42C1 13-1356-4 +always \u42C2 246-2 +always \u42C3 134-146-5 +always \u42C4 456-4 always \u42C5 1456 always \u42C6 1456 always \u42C7 1456 -always \u42C8 1456 -always \u42C9 1456 +always \u42C8 1245-34-2 +always \u42C9 13-236-2 always \u42CA 1456 -always \u42CB 1456 -always \u42CC 1456 +always \u42CB 134-1456-2 +always \u42CC 13-46-4 always \u42CD 1456 -always \u42CE 1456 -always \u42CF 1456 -always \u42D0 1456 -always \u42D1 1456 +always \u42CE 1-1236-5 +always \u42CF 125-25-5 +always \u42D0 236-5 +always \u42D1 135-13456-4 always \u42D2 1456 -always \u42D3 1456 -always \u42D4 1456 -always \u42D5 1456 -always \u42D6 1456 +always \u42D3 1-12356-5 +always \u42D4 135-16-5 +always \u42D5 1245-136-5 +always \u42D6 1256-5 always \u42D7 1456 -always \u42D8 1456 -always \u42D9 1456 -always \u42DA 1456 -always \u42DB 1456 -always \u42DC 1456 +always \u42D8 12-25-5 +always \u42D9 156-4 +always \u42DA 16-5 +always \u42DB 134-16-2 +always \u42DC 245-13456-5 always \u42DD 1456 -always \u42DE 1456 -always \u42DF 1456 -always \u42E0 1456 +always \u42DE 456-4 +always \u42DF 13-16-5 +always \u42E0 135-34-4 always \u42E1 1456 -always \u42E2 1456 -always \u42E3 1456 -always \u42E4 1456 -always \u42E5 1456 -always \u42E6 1456 -always \u42E7 1456 -always \u42E8 1456 -always \u42E9 1456 +always \u42E2 135-346-5 +always \u42E3 12345-1236-2 +always \u42E4 246-5 +always \u42E5 14-16-2 +always \u42E6 12345-1236-2 +always \u42E7 245-1256-2 +always \u42E8 12345-34-4 +always \u42E9 156-2 always \u42EA 1456 always \u42EB 1456 always \u42EC 1456 -always \u42ED 1456 -always \u42EE 1456 -always \u42EF 1456 -always \u42F0 1456 -always \u42F1 1456 -always \u42F2 1456 -always \u42F3 1456 -always \u42F4 1456 -always \u42F5 1456 -always \u42F6 1456 -always \u42F7 1456 -always \u42F8 1456 -always \u42F9 1456 +always \u42ED 1235-25-5 +always \u42EE 13-1456-5 +always \u42EF 245-16-4 +always \u42F0 13-1256-2 +always \u42F1 14-2456-2 +always \u42F2 12-2346-4 +always \u42F3 135-356-5 +always \u42F4 1345-234-5 +always \u42F5 16-5 +always \u42F6 15-1256-5 +always \u42F7 14-234-2 +always \u42F8 15-256-2 +always \u42F9 12345-34-2 always \u42FA 1456 -always \u42FB 1456 -always \u42FC 1456 -always \u42FD 1456 -always \u42FE 1456 +always \u42FB 1345-1456-2 +always \u42FC 124-13456-4 +always \u42FD 135-1356-4 +always \u42FE 1-345-4 always \u42FF 1456 always \u4300 1456 always \u4301 1456 -always \u4302 1456 -always \u4303 1456 -always \u4304 1456 -always \u4305 1456 -always \u4306 1456 -always \u4307 1456 -always \u4308 1456 +always \u4302 12356-5 +always \u4303 24-25-5 +always \u4304 13-1356-4 +always \u4305 124-1346-2 +always \u4306 13-1246-5 +always \u4307 1235-1246-5 +always \u4308 124-345-5 always \u4309 1456 -always \u430A 1456 +always \u430A 246-2 always \u430B 1456 -always \u430C 1456 -always \u430D 1456 -always \u430E 1456 -always \u430F 1456 -always \u4310 1456 +always \u430C 245-16-5 +always \u430D 1235-1236-5 +always \u430E 14-236-5 +always \u430F 134-16-5 +always \u4310 134-16-5 always \u4311 1456 -always \u4312 1456 -always \u4313 1456 -always \u4314 1456 -always \u4315 1456 -always \u4316 1456 -always \u4317 1456 -always \u4318 1456 -always \u4319 1456 -always \u431A 1456 -always \u431B 1456 -always \u431C 1456 -always \u431D 1456 -always \u431E 1456 -always \u431F 1456 -always \u4320 1456 -always \u4321 1456 -always \u4322 1456 -always \u4323 1456 -always \u4324 1456 -always \u4325 1456 -always \u4326 1456 -always \u4327 1456 -always \u4328 1456 -always \u4329 1456 -always \u432A 1456 -always \u432B 1456 -always \u432C 1456 +always \u4312 14-34-5 +always \u4313 12345-1236-2 +always \u4314 12356-5 +always \u4315 134-16-2 +always \u4316 13-346-2 +always \u4317 12345-34-4 +always \u4318 134-16-2 +always \u4319 1235-456-4 +always \u431A 15-34-5 +always \u431B 246-2 +always \u431C 1345-346-5 +always \u431D 13-1456-5 +always \u431E 14-2345-4 +always \u431F 135-16-5 +always \u4320 245-13456-5 +always \u4321 124-16-4 +always \u4322 14-13456-2 +always \u4323 125-12456-4 +always \u4324 1-156-4 +always \u4325 1456-4 +always \u4326 145-146-4 +always \u4327 12-12356-2 +always \u4328 245-2456-5 +always \u4329 134-16-5 +always \u432A 2345-2 +always \u432B 14-1236-4 +always \u432C 12-12346-2 always \u432D 1456 always \u432E 1456 -always \u432F 1456 -always \u4330 1456 -always \u4331 1456 +always \u432F 13-12456-5 +always \u4330 24-2346-5 +always \u4331 14-25-5 always \u4332 1456 always \u4333 1456 -always \u4334 1456 -always \u4335 1456 +always \u4334 14-25-5 +always \u4335 1-34-2 always \u4336 1456 -always \u4337 1456 -always \u4338 1456 -always \u4339 1456 -always \u433A 1456 -always \u433B 1456 -always \u433C 1456 -always \u433D 1456 -always \u433E 1456 -always \u433F 1456 -always \u4340 1456 -always \u4341 1456 -always \u4342 1456 -always \u4343 1456 -always \u4344 1456 -always \u4345 1456 -always \u4346 1456 -always \u4347 1456 -always \u4348 1456 -always \u4349 1456 -always \u434A 1456 -always \u434B 1456 -always \u434C 1456 -always \u434D 1456 -always \u434E 1456 +always \u4337 12-12356-2 +always \u4338 13-45-5 +always \u4339 13-235-4 +always \u433A 156-4 +always \u433B 16-5 +always \u433C 1245-1246-5 +always \u433D 245-2456-4 +always \u433E 1245-136-2 +always \u433F 12345-34-2 +always \u4340 14-1236-2 +always \u4341 15-1246-5 +always \u4342 1256-2 +always \u4343 246-2 +always \u4344 145-2345-4 +always \u4345 14-13456-2 +always \u4346 1-34-5 +always \u4347 124-345-5 +always \u4348 1234-13456-2 +always \u4349 245-2345-2 +always \u434A 13-236-2 +always \u434B 12-1246-2 +always \u434C 135-34-5 +always \u434D 13-34-4 +always \u434E 245-123456-5 always \u434F 1456 -always \u4350 1456 -always \u4351 1456 -always \u4352 1456 -always \u4353 1456 -always \u4354 1456 -always \u4355 1456 -always \u4356 1456 -always \u4357 1456 -always \u4358 1456 -always \u4359 1456 -always \u435A 1456 -always \u435B 1456 -always \u435C 1456 -always \u435D 1456 -always \u435E 1456 -always \u435F 1456 -always \u4360 1456 -always \u4361 1456 -always \u4362 1456 -always \u4363 1456 -always \u4364 1456 -always \u4365 1456 -always \u4366 1456 +always \u4350 1235-1236-4 +always \u4351 1235-1236-4 +always \u4352 134-12356-4 +always \u4353 1235-34-5 +always \u4354 1235-12346-2 +always \u4355 145-16-4 +always \u4356 12345-34-2 +always \u4357 15-45-5 +always \u4358 134-16-2 +always \u4359 134-356-2 +always \u435A 14-1346-5 +always \u435B 13-34-5 +always \u435C 1-146-5 +always \u435D 124-345-5 +always \u435E 1256-5 +always \u435F 125-12346-5 +always \u4360 14-16-2 +always \u4361 14-246-5 +always \u4362 34-2 +always \u4363 14-356-2 +always \u4364 13-16-4 +always \u4365 14-356-5 +always \u4366 14-16-2 always \u4367 1456 -always \u4368 1456 -always \u4369 1456 -always \u436A 1456 -always \u436B 1456 +always \u4368 135-126-2 +always \u4369 1346-4 +always \u436A 123-1246-5 +always \u436B 124-25-2 always \u436C 1456 always \u436D 1456 -always \u436E 1456 -always \u436F 1456 +always \u436E 1-146-5 +always \u436F 13-1246-4 always \u4370 1456 -always \u4371 1456 -always \u4372 1456 -always \u4373 1456 -always \u4374 1456 +always \u4371 15-1256-2 +always \u4372 1345-2456-2 +always \u4373 12-25-5 +always \u4374 145-25-5 always \u4375 1456 -always \u4376 1456 -always \u4377 1456 -always \u4378 1456 +always \u4376 145-12346-5 +always \u4377 13-1246-5 +always \u4378 135-126-2 always \u4379 1456 -always \u437A 1456 -always \u437B 1456 -always \u437C 1456 -always \u437D 1456 -always \u437E 1456 -always \u437F 1456 -always \u4380 1456 -always \u4381 1456 -always \u4382 1456 -always \u4383 1456 -always \u4384 1456 -always \u4385 1456 -always \u4386 1456 +always \u437A 1235-12456-2 +always \u437B 15-45-4 +always \u437C 245-1236-2 +always \u437D 14-16-5 +always \u437E 124-1246-2 +always \u437F 1235-456-2 +always \u4380 15-236-5 +always \u4381 1235-34-2 +always \u4382 135-146-4 +always \u4383 1245-1236-4 +always \u4384 124-246-2 +always \u4385 12345-34-5 +always \u4386 14-246-5 always \u4387 1456 -always \u4388 1456 -always \u4389 1456 -always \u438A 1456 -always \u438B 1456 -always \u438C 1456 +always \u4388 16-5 +always \u4389 24-34-5 +always \u438A 1234-126-5 +always \u438B 1235-2346-5 +always \u438C 245-34-5 always \u438D 1456 -always \u438E 1456 -always \u438F 1456 -always \u4390 1456 -always \u4391 1456 -always \u4392 1456 -always \u4393 1456 +always \u438E 1345-345-5 +always \u438F 1236-5 +always \u4390 12-146-4 +always \u4391 14-34-5 +always \u4392 1-1236-4 +always \u4393 124-345-5 always \u4394 1456 always \u4395 1456 always \u4396 1456 -always \u4397 1456 -always \u4398 1456 +always \u4397 245-246-2 +always \u4398 15-34-5 always \u4399 1456 -always \u439A 1456 +always \u439A 13-12456-5 always \u439B 1456 always \u439C 1456 -always \u439D 1456 +always \u439D 12-34-2 always \u439E 1456 -always \u439F 1456 -always \u43A0 1456 -always \u43A1 1456 -always \u43A2 1456 -always \u43A3 1456 -always \u43A4 1456 +always \u439F 156-2 +always \u43A0 156-2 +always \u43A1 1345-12456-4 +always \u43A2 245-16-4 +always \u43A3 15-156-5 +always \u43A4 12-34-2 always \u43A5 1456 -always \u43A6 1456 -always \u43A7 1456 -always \u43A8 1456 +always \u43A6 2345-4 +always \u43A7 135-1346-5 +always \u43A8 1236-5 always \u43A9 1456 -always \u43AA 1456 -always \u43AB 1456 -always \u43AC 1456 +always \u43AA 1345-2346-5 +always \u43AB 12-456-5 +always \u43AC 135-345-5 always \u43AD 1456 -always \u43AE 1456 -always \u43AF 1456 -always \u43B0 1456 -always \u43B1 1456 -always \u43B2 1456 -always \u43B3 1456 -always \u43B4 1456 -always \u43B5 1456 -always \u43B6 1456 -always \u43B7 1456 -always \u43B8 1456 -always \u43B9 1456 -always \u43BA 1456 -always \u43BB 1456 -always \u43BC 1456 -always \u43BD 1456 -always \u43BE 1456 -always \u43BF 1456 -always \u43C0 1456 -always \u43C1 1456 -always \u43C2 1456 -always \u43C3 1456 -always \u43C4 1456 -always \u43C5 1456 -always \u43C6 1456 -always \u43C7 1456 -always \u43C8 1456 +always \u43AE 124-16-5 +always \u43AF 1235-1236-5 +always \u43B0 125-25-2 +always \u43B1 135-345-5 +always \u43B2 1-2346-2 +always \u43B3 35-5 +always \u43B4 24-1356-5 +always \u43B5 135-16-5 +always \u43B6 156-5 +always \u43B7 1-34-5 +always \u43B8 34-5 +always \u43B9 123456-2 +always \u43BA 1-156-4 +always \u43BB 1-12356-4 +always \u43BC 14-34-5 +always \u43BD 123456-2 +always \u43BE 13-123456-4 +always \u43BF 245-234-2 +always \u43C0 14-345-5 +always \u43C1 125-2456-4 +always \u43C2 15-12356-4 +always \u43C3 134-2345-2 +always \u43C4 1-156-5 +always \u43C5 245-16-5 +always \u43C6 245-146-2 +always \u43C7 1234-246-5 +always \u43C8 14-2345-2 always \u43C9 1456 -always \u43CA 1456 -always \u43CB 1456 -always \u43CC 1456 -always \u43CD 1456 -always \u43CE 1456 +always \u43CA 14-12346-2 +always \u43CB 15-34-5 +always \u43CC 245-16-5 +always \u43CD 45-5 +always \u43CE 12345-1356-2 always \u43CF 1456 -always \u43D0 1456 -always \u43D1 1456 -always \u43D2 1456 -always \u43D3 1456 -always \u43D4 1456 -always \u43D5 1456 -always \u43D6 1456 -always \u43D7 1456 -always \u43D8 1456 -always \u43D9 1456 -always \u43DA 1456 -always \u43DB 1456 +always \u43D0 13-236-2 +always \u43D1 145-16-5 +always \u43D2 1234-2345-5 +always \u43D3 13-12456-4 +always \u43D4 1345-234-4 +always \u43D5 1245-136-4 +always \u43D6 1-136-5 +always \u43D7 13-2456-5 +always \u43D8 1234-16-4 +always \u43D9 124-1236-4 +always \u43DA 12-146-4 +always \u43DB 12-123456-4 always \u43DC 1456 -always \u43DD 1456 -always \u43DE 1456 -always \u43DF 1456 -always \u43E0 1456 -always \u43E1 1456 -always \u43E2 1456 -always \u43E3 1456 -always \u43E4 1456 +always \u43DD 12-123456-2 +always \u43DE 134-126-5 +always \u43DF 135-346-5 +always \u43E0 245-16-5 +always \u43E1 24-156-5 +always \u43E2 135-16-4 +always \u43E3 13-236-2 +always \u43E4 15-156-5 always \u43E5 1456 -always \u43E6 1456 -always \u43E7 1456 -always \u43E8 1456 +always \u43E6 1235-35-2 +always \u43E7 1345-345-2 +always \u43E8 1235-1246-4 always \u43E9 1456 -always \u43EA 1456 +always \u43EA 156-5 always \u43EB 1456 -always \u43EC 1456 +always \u43EC 134-12356-2 always \u43ED 1456 -always \u43EE 1456 -always \u43EF 1456 -always \u43F0 1456 -always \u43F1 1456 -always \u43F2 1456 -always \u43F3 1456 -always \u43F4 1456 -always \u43F5 1456 -always \u43F6 1456 -always \u43F7 1456 -always \u43F8 1456 -always \u43F9 1456 +always \u43EE 15-16-2 +always \u43EF 1-156-5 +always \u43F0 1245-136-4 +always \u43F1 13-1256-2 +always \u43F2 145-346-2 +always \u43F3 1-2346-5 +always \u43F4 24-146-5 +always \u43F5 134-1356-4 +always \u43F6 135-16-5 +always \u43F7 1235-1236-5 +always \u43F8 1256-2 +always \u43F9 15-2345-5 always \u43FA 1456 -always \u43FB 1456 -always \u43FC 1456 -always \u43FD 1456 +always \u43FB 1345-1356-2 +always \u43FC 245-1236-2 +always \u43FD 135-34-5 always \u43FE 1456 -always \u43FF 1456 -always \u4400 1456 -always \u4401 1456 -always \u4402 1456 -always \u4403 1456 -always \u4404 1456 -always \u4405 1456 -always \u4406 1456 -always \u4407 1456 -always \u4408 1456 -always \u4409 1456 -always \u440A 1456 +always \u43FF 245-16-4 +always \u4400 13-16-5 +always \u4401 1345-246-4 +always \u4402 14-34-5 +always \u4403 13-235-4 +always \u4404 1235-1236-5 +always \u4405 16-2 +always \u4406 245-2456-4 +always \u4407 12-123456-2 +always \u4408 1-156-2 +always \u4409 125-156-5 +always \u440A 145-345-2 always \u440B 1456 -always \u440C 1456 -always \u440D 1456 +always \u440C 124-2345-4 +always \u440D 1-12356-5 always \u440E 1456 -always \u440F 1456 +always \u440F 12-123456-4 always \u4410 1456 -always \u4411 1456 +always \u4411 1-2346-2 always \u4412 1456 -always \u4413 1456 -always \u4414 1456 -always \u4415 1456 -always \u4416 1456 -always \u4417 1456 -always \u4418 1456 -always \u4419 1456 -always \u441A 1456 +always \u4413 1245-12356-2 +always \u4414 135-1456-5 +always \u4415 13-16-2 +always \u4416 16-2 +always \u4417 145-34-4 +always \u4418 13-236-2 +always \u4419 13-2346-2 +always \u441A 13-16-2 always \u441B 1456 always \u441C 1456 -always \u441D 1456 -always \u441E 1456 -always \u441F 1456 -always \u4420 1456 -always \u4421 1456 -always \u4422 1456 -always \u4423 1456 -always \u4424 1456 -always \u4425 1456 +always \u441D 15-25-4 +always \u441E 1245-25-5 +always \u441F 15-46-5 +always \u4420 1235-456-4 +always \u4421 245-16-2 +always \u4422 1-34-5 +always \u4423 245-25-5 +always \u4424 12-156-2 +always \u4425 12346-4 always \u4426 1456 -always \u4427 1456 -always \u4428 1456 -always \u4429 1456 -always \u442A 1456 +always \u4427 123-146-5 +always \u4428 13-34-4 +always \u4429 123-2456-4 +always \u442A 12345-1236-5 always \u442B 1456 -always \u442C 1456 -always \u442D 1456 -always \u442E 1456 -always \u442F 1456 +always \u442C 245-146-2 +always \u442D 1-156-5 +always \u442E 12-1236-4 +always \u442F 14-356-2 always \u4430 1456 always \u4431 1456 -always \u4432 1456 -always \u4433 1456 -always \u4434 1456 -always \u4435 1456 -always \u4436 1456 +always \u4432 1-2346-2 +always \u4433 1256-2 +always \u4434 13-1246-5 +always \u4435 1235-456-2 +always \u4436 13-1456-4 always \u4437 1456 -always \u4438 1456 -always \u4439 1456 -always \u443A 1456 +always \u4438 13-25-2 +always \u4439 15-146-5 +always \u443A 124-1236-5 always \u443B 1456 -always \u443C 1456 -always \u443D 1456 -always \u443E 1456 -always \u443F 1456 -always \u4440 1456 -always \u4441 1456 -always \u4442 1456 -always \u4443 1456 -always \u4444 1456 -always \u4445 1456 -always \u4446 1456 -always \u4447 1456 -always \u4448 1456 -always \u4449 1456 -always \u444A 1456 -always \u444B 1456 -always \u444C 1456 -always \u444D 1456 -always \u444E 1456 -always \u444F 1456 -always \u4450 1456 -always \u4451 1456 +always \u443C 15-16-5 +always \u443D 134-1236-2 +always \u443E 145-25-2 +always \u443F 146-2 +always \u4440 1234-16-5 +always \u4441 34-5 +always \u4442 2456-4 +always \u4443 134-1356-2 +always \u4444 1234-16-5 +always \u4445 134-1356-2 +always \u4446 46-4 +always \u4447 1-156-5 +always \u4448 135-126-2 +always \u4449 13456-2 +always \u444A 1246-2 +always \u444B 1345-146-2 +always \u444C 14-1236-2 +always \u444D 2345-5 +always \u444E 12-1236-4 +always \u444F 245-45-2 +always \u4450 1-136-4 +always \u4451 1234-34-2 always \u4452 1456 -always \u4453 1456 -always \u4454 1456 -always \u4455 1456 +always \u4453 124-2456-2 +always \u4454 12345-356-5 +always \u4455 24-34-4 always \u4456 1456 -always \u4457 1456 -always \u4458 1456 -always \u4459 1456 -always \u445A 1456 -always \u445B 1456 -always \u445C 1456 -always \u445D 1456 -always \u445E 1456 -always \u445F 1456 -always \u4460 1456 +always \u4457 145-1346-5 +always \u4458 12-345-2 +always \u4459 1245-1236-2 +always \u445A 124-2345-2 +always \u445B 12-156-4 +always \u445C 124-345-5 +always \u445D 13-23456-4 +always \u445E 24-123456-5 +always \u445F 1235-456-2 +always \u4460 14-246-4 always \u4461 1456 always \u4462 1456 always \u4463 1456 -always \u4464 1456 -always \u4465 1456 +always \u4464 13-1456-5 +always \u4465 2346-5 always \u4466 1456 -always \u4467 1456 -always \u4468 1456 +always \u4467 12345-34-2 +always \u4468 145-25-5 always \u4469 1456 -always \u446A 1456 +always \u446A 2346-5 always \u446B 1456 -always \u446C 1456 -always \u446D 1456 +always \u446C 246-5 +always \u446D 145-16-5 always \u446E 1456 -always \u446F 1456 -always \u4470 1456 -always \u4471 1456 -always \u4472 1456 -always \u4473 1456 -always \u4474 1456 -always \u4475 1456 -always \u4476 1456 +always \u446F 145-16-5 +always \u4470 135-34-5 +always \u4471 134-1236-2 +always \u4472 12-2346-5 +always \u4473 14-123456-2 +always \u4474 245-16-2 +always \u4475 134-34-5 +always \u4476 245-1236-2 always \u4477 1456 always \u4478 1456 always \u4479 1456 always \u447A 1456 -always \u447B 1456 +always \u447B 234-2 always \u447C 1456 -always \u447D 1456 +always \u447D 145-345-2 always \u447E 1456 -always \u447F 1456 -always \u4480 1456 -always \u4481 1456 -always \u4482 1456 -always \u4483 1456 -always \u4484 1456 -always \u4485 1456 -always \u4486 1456 -always \u4487 1456 -always \u4488 1456 -always \u4489 1456 +always \u447F 15-34-5 +always \u4480 12345-34-2 +always \u4481 13-16-5 +always \u4482 13-46-4 +always \u4483 245-146-5 +always \u4484 135-126-2 +always \u4485 124-1356-2 +always \u4486 12-2346-5 +always \u4487 12345-34-5 +always \u4488 135-34-4 +always \u4489 34-4 always \u448A 1456 -always \u448B 1456 -always \u448C 1456 -always \u448D 1456 -always \u448E 1456 +always \u448B 46-4 +always \u448C 134-13456-5 +always \u448D 1234-1346-4 +always \u448E 134-1346-4 always \u448F 1456 -always \u4490 1456 +always \u4490 134-1356-2 always \u4491 235678-45 -always \u4492 1456 -always \u4493 1456 -always \u4494 1456 -always \u4495 1456 -always \u4496 1456 -always \u4497 1456 +always \u4492 124-246-2 +always \u4493 123-2456-4 +always \u4494 135-2456-5 +always \u4495 15-246-4 +always \u4496 15-1456-5 +always \u4497 245-16-5 always \u4498 1456 always \u4499 1456 -always \u449A 1456 -always \u449B 1456 -always \u449C 1456 -always \u449D 1456 -always \u449E 1456 +always \u449A 24-146-4 +always \u449B 1235-1356-2 +always \u449C 1345-234-2 +always \u449D 15-246-2 +always \u449E 12-136-2 always \u449F 1456 -always \u44A0 1456 -always \u44A1 1456 -always \u44A2 1456 -always \u44A3 1456 -always \u44A4 1456 -always \u44A5 1456 -always \u44A6 1456 -always \u44A7 1456 -always \u44A8 1456 -always \u44A9 1456 -always \u44AA 1456 -always \u44AB 1456 -always \u44AC 1456 -always \u44AD 1456 +always \u44A0 12345-1236-4 +always \u44A1 1456-4 +always \u44A2 1346-2 +always \u44A3 1245-1236-4 +always \u44A4 1245-156-5 +always \u44A5 12345-345-5 +always \u44A6 12345-1236-5 +always \u44A7 245-1256-5 +always \u44A8 24-156-4 +always \u44A9 1235-2346-2 +always \u44AA 135-2345-5 +always \u44AB 145-2456-5 +always \u44AC 134-126-5 +always \u44AD 145-1356-4 always \u44AE 1456 always \u44AF 1456 always \u44B0 1456 always \u44B1 1456 -always \u44B2 1456 -always \u44B3 1456 -always \u44B4 1456 -always \u44B5 1456 +always \u44B2 12-345-5 +always \u44B3 145-25-4 +always \u44B4 234-4 +always \u44B5 1235-146-5 always \u44B6 1456 always \u44B7 1456 -always \u44B8 1456 -always \u44B9 1456 -always \u44BA 1456 -always \u44BB 1456 +always \u44B8 15-2345-2 +always \u44B9 14-356-5 +always \u44BA 13-1456-4 +always \u44BB 245-16-4 always \u44BC 1456 -always \u44BD 1456 +always \u44BD 134-356-2 always \u44BE 1456 always \u44BF 1456 always \u44C0 1456 always \u44C1 1456 -always \u44C2 1456 -always \u44C3 1456 -always \u44C4 1456 -always \u44C5 1456 -always \u44C6 1456 -always \u44C7 1456 -always \u44C8 1456 -always \u44C9 1456 -always \u44CA 1456 +always \u44C2 2345-2 +always \u44C3 16-5 +always \u44C4 1456-2 +always \u44C5 245-16-2 +always \u44C6 1-2346-2 +always \u44C7 15-16-5 +always \u44C8 16-5 +always \u44C9 346-2 +always \u44CA 2346-5 always \u44CB 1456 -always \u44CC 1456 -always \u44CD 1456 -always \u44CE 1456 +always \u44CC 1-156-5 +always \u44CD 1235-1236-4 +always \u44CE 12-25-5 always \u44CF 1456 -always \u44D0 1456 -always \u44D1 1456 -always \u44D2 1456 -always \u44D3 1456 +always \u44D0 12-123456-2 +always \u44D1 135-13456-4 +always \u44D2 123-2356-4 +always \u44D3 12-12356-2 always \u44D4 1456 -always \u44D5 1456 -always \u44D6 1456 +always \u44D5 124-25-4 +always \u44D6 245-235-2 always \u44D7 1456 -always \u44D8 1456 +always \u44D8 13-234-5 always \u44D9 1456 -always \u44DA 1456 -always \u44DB 1456 +always \u44DA 245-34-2 +always \u44DB 12345-34-4 always \u44DC 1456 -always \u44DD 1456 -always \u44DE 1456 -always \u44DF 1456 -always \u44E0 1456 +always \u44DD 134-1356-2 +always \u44DE 14-16-5 +always \u44DF 14-346-5 +always \u44E0 124-345-5 always \u44E1 1456 -always \u44E2 1456 -always \u44E3 1456 +always \u44E2 13-34-5 +always \u44E3 14-46-4 always \u44E4 1456 -always \u44E5 1456 -always \u44E6 1456 -always \u44E7 1456 +always \u44E5 14-345-5 +always \u44E6 145-2345-4 +always \u44E7 245-156-5 always \u44E8 1456 always \u44E9 1456 always \u44EA 1456 -always \u44EB 1456 +always \u44EB 13-16-5 always \u44EC 1456 -always \u44ED 1456 -always \u44EE 1456 -always \u44EF 1456 +always \u44ED 12-345-5 +always \u44EE 134-146-5 +always \u44EF 145-34-2 always \u44F0 1456 -always \u44F1 1456 -always \u44F2 1456 -always \u44F3 1456 -always \u44F4 1456 +always \u44F1 12-2456-2 +always \u44F2 1245-1246-5 +always \u44F3 1235-136-4 +always \u44F4 1245-12456-2 always \u44F5 1456 -always \u44F6 1456 -always \u44F7 1456 +always \u44F6 14-2456-5 +always \u44F7 15-13456-5 always \u44F8 1456 -always \u44F9 1456 -always \u44FA 1456 +always \u44F9 16-5 +always \u44FA 134-356-4 always \u44FB 1456 -always \u44FC 1456 -always \u44FD 1456 +always \u44FC 1235-2346-5 +always \u44FD 13-16-5 always \u44FE 1456 -always \u44FF 1456 +always \u44FF 1235-1236-4 always \u4500 1456 -always \u4501 1456 -always \u4502 1456 -always \u4503 1456 -always \u4504 1456 +always \u4501 14-16-5 +always \u4502 125-156-4 +always \u4503 125-34-4 +always \u4504 246-2 always \u4505 1456 -always \u4506 1456 -always \u4507 1456 -always \u4508 1456 -always \u4509 1456 +always \u4506 14-16-2 +always \u4507 245-16-4 +always \u4508 13-1236-4 +always \u4509 14-16-5 always \u450A 1456 always \u450B 1456 always \u450C 1456 always \u450D 1456 -always \u450E 1456 -always \u450F 1456 +always \u450E 15-34-5 +always \u450F 12-12356-5 always \u4510 1456 -always \u4511 1456 -always \u4512 1456 -always \u4513 1456 -always \u4514 1456 -always \u4515 1456 -always \u4516 1456 -always \u4517 1456 -always \u4518 1456 -always \u4519 1456 -always \u451A 1456 -always \u451B 1456 -always \u451C 1456 +always \u4511 15-346-2 +always \u4512 135-356-5 +always \u4513 15-1256-4 +always \u4514 13-13456-5 +always \u4515 1234-34-2 +always \u4516 14-13456-2 +always \u4517 15-46-2 +always \u4518 125-25-5 +always \u4519 145-246-5 +always \u451A 12-123456-2 +always \u451B 245-13456-4 +always \u451C 1345-1236-2 always \u451D 1456 -always \u451E 1456 -always \u451F 1456 -always \u4520 1456 -always \u4521 1456 -always \u4522 1456 -always \u4523 1456 +always \u451E 14-1256-5 +always \u451F 12-156-2 +always \u4520 24-146-4 +always \u4521 1256-2 +always \u4522 1235-35-2 +always \u4523 14-16-2 always \u4524 1456 always \u4525 1456 always \u4526 1456 -always \u4527 1456 +always \u4527 14-16-2 always \u4528 1456 always \u4529 1456 -always \u452A 1456 +always \u452A 145-1246-5 always \u452B 1456 -always \u452C 1456 -always \u452D 1456 +always \u452C 16-5 +always \u452D 1345-13456-5 always \u452E 1456 -always \u452F 1456 -always \u4530 1456 +always \u452F 1235-34-2 +always \u4530 12345-34-2 always \u4531 1456 -always \u4532 1456 -always \u4533 1456 -always \u4534 1456 +always \u4532 12-1356-2 +always \u4533 1345-1236-4 +always \u4534 245-2346-5 always \u4535 1456 -always \u4536 1456 -always \u4537 1456 -always \u4538 1456 -always \u4539 1456 -always \u453A 1456 +always \u4536 124-16-2 +always \u4537 245-1456-2 +always \u4538 135-246-4 +always \u4539 15-1246-5 +always \u453A 1246-2 always \u453B 1456 -always \u453C 1456 -always \u453D 1456 -always \u453E 1456 -always \u453F 1456 -always \u4540 1456 -always \u4541 1456 +always \u453C 15-2346-5 +always \u453D 2456-5 +always \u453E 2346-5 +always \u453F 13-346-5 +always \u4540 123-12456-4 +always \u4541 12345-356-4 always \u4542 1456 -always \u4543 1456 +always \u4543 1456-5 always \u4544 1456 -always \u4545 1456 -always \u4546 1456 -always \u4547 1456 -always \u4548 1456 -always \u4549 1456 -always \u454A 1456 -always \u454B 1456 -always \u454C 1456 -always \u454D 1456 -always \u454E 1456 -always \u454F 1456 +always \u4545 15-146-4 +always \u4546 145-12356-5 +always \u4547 1235-1246-5 +always \u4548 15-346-5 +always \u4549 125-2346-2 +always \u454A 124-1236-2 +always \u454B 12-1346-4 +always \u454C 1-156-5 +always \u454D 16-5 +always \u454E 12345-34-2 +always \u454F 2346-2 always \u4550 1456 -always \u4551 1456 +always \u4551 13-256-5 always \u4552 1456 -always \u4553 1456 -always \u4554 1456 -always \u4555 1456 +always \u4553 12-345-2 +always \u4554 15-2345-2 +always \u4555 134-1236-5 always \u4556 1456 -always \u4557 1456 -always \u4558 1456 -always \u4559 1456 -always \u455A 1456 -always \u455B 1456 +always \u4557 135-16-5 +always \u4558 14-13456-2 +always \u4559 13-346-2 +always \u455A 123-1246-5 +always \u455B 13-23456-2 always \u455C 1456 always \u455D 1456 -always \u455E 1456 +always \u455E 14-1346-5 always \u455F 1456 -always \u4560 1456 -always \u4561 1456 -always \u4562 1456 -always \u4563 1456 +always \u4560 12345-356-5 +always \u4561 14-34-4 +always \u4562 1-345-4 +always \u4563 1235-2346-2 always \u4564 1456 -always \u4565 1456 -always \u4566 1456 -always \u4567 1456 -always \u4568 1456 -always \u4569 1456 -always \u456A 1456 -always \u456B 1456 +always \u4565 1345-16-4 +always \u4566 13456-2 +always \u4567 15-246-5 +always \u4568 124-1356-2 +always \u4569 14-146-4 +always \u456A 125-2346-2 +always \u456B 123-1246-2 always \u456C 1456 -always \u456D 1456 -always \u456E 1456 -always \u456F 1456 -always \u4570 1456 -always \u4571 1456 -always \u4572 1456 -always \u4573 1456 -always \u4574 1456 -always \u4575 1456 -always \u4576 1456 -always \u4577 1456 +always \u456D 245-2345-2 +always \u456E 13-1256-2 +always \u456F 1234-246-2 +always \u4570 135-1236-5 +always \u4571 145-12356-4 +always \u4572 14-1456-4 +always \u4573 134-16-2 +always \u4574 1-25-2 +always \u4575 15-346-2 +always \u4576 1235-34-5 +always \u4577 134-16-2 always \u4578 1456 -always \u4579 1456 -always \u457A 1456 -always \u457B 1456 -always \u457C 1456 -always \u457D 1456 -always \u457E 1456 -always \u457F 1456 +always \u4579 125-345-2 +always \u457A 245-12346-2 +always \u457B 13-2346-2 +always \u457C 1345-1236-2 +always \u457D 1-34-2 +always \u457E 2345-2 +always \u457F 1235-1236-5 always \u4580 1456 -always \u4581 1456 -always \u4582 1456 -always \u4583 1456 -always \u4584 1456 -always \u4585 1456 -always \u4586 1456 -always \u4587 1456 -always \u4588 1456 +always \u4581 16-5 +always \u4582 14-12456-2 +always \u4583 236-5 +always \u4584 1245-1236-2 +always \u4585 14-13456-2 +always \u4586 1345-46-5 +always \u4587 1256-5 +always \u4588 1345-236-5 always \u4589 1456 -always \u458A 1456 -always \u458B 1456 -always \u458C 1456 -always \u458D 1456 -always \u458E 1456 -always \u458F 1456 -always \u4590 1456 -always \u4591 1456 +always \u458A 16-2 +always \u458B 1345-236-5 +always \u458C 245-1456-2 +always \u458D 245-2345-2 +always \u458E 15-23456-2 +always \u458F 12-34-4 +always \u4590 13-1456-5 +always \u4591 134-16-5 always \u4592 1456 -always \u4593 1456 -always \u4594 1456 -always \u4595 1456 -always \u4596 1456 -always \u4597 1456 -always \u4598 1456 +always \u4593 1345-345-5 +always \u4594 1235-1236-5 +always \u4595 125-34-4 +always \u4596 15-23456-2 +always \u4597 2345-2 +always \u4598 124-34-2 always \u4599 1456 always \u459A 1456 -always \u459B 1456 -always \u459C 1456 -always \u459D 1456 -always \u459E 1456 -always \u459F 1456 -always \u45A0 1456 -always \u45A1 1456 -always \u45A2 1456 -always \u45A3 1456 -always \u45A4 1456 -always \u45A5 1456 +always \u459B 15-25-4 +always \u459C 1456-2 +always \u459D 12-12346-2 +always \u459E 1-12356-4 +always \u459F 134-1346-4 +always \u45A0 45-2 +always \u45A1 1345-1256-5 +always \u45A2 134-246-2 +always \u45A3 15-146-5 +always \u45A4 12456-4 +always \u45A5 14-16-2 always \u45A6 1456 -always \u45A7 1456 -always \u45A8 1456 -always \u45A9 1456 -always \u45AA 1456 -always \u45AB 1456 +always \u45A7 1345-345-5 +always \u45A8 24-156-2 +always \u45A9 135-16-5 +always \u45AA 245-156-2 +always \u45AB 135-1346-5 always \u45AC 1456 -always \u45AD 1456 -always \u45AE 1456 -always \u45AF 1456 -always \u45B0 1456 +always \u45AD 13-45-5 +always \u45AE 15-46-4 +always \u45AF 13-1246-5 +always \u45B0 1234-2456-5 always \u45B1 1456 -always \u45B2 1456 -always \u45B3 1456 -always \u45B4 1456 +always \u45B2 15-256-2 +always \u45B3 1-345-5 +always \u45B4 246-2 always \u45B5 1456 always \u45B6 1456 always \u45B7 1456 -always \u45B8 1456 -always \u45B9 1456 -always \u45BA 1456 -always \u45BB 1456 -always \u45BC 1456 -always \u45BD 1456 +always \u45B8 2346-2 +always \u45B9 46-2 +always \u45BA 124-246-2 +always \u45BB 234-2 +always \u45BC 13-236-2 +always \u45BD 14-16-2 always \u45BE 1456 -always \u45BF 1456 +always \u45BF 14-16-2 always \u45C0 1456 -always \u45C1 1456 -always \u45C2 1456 -always \u45C3 1456 -always \u45C4 1456 -always \u45C5 1456 -always \u45C6 1456 -always \u45C7 1456 -always \u45C8 1456 +always \u45C1 13-16-5 +always \u45C2 1235-34-4 +always \u45C3 1-1236-5 +always \u45C4 12345-34-4 +always \u45C5 12-1346-2 +always \u45C6 13-12456-4 +always \u45C7 13-1256-2 +always \u45C8 134-1356-2 always \u45C9 1456 -always \u45CA 1456 -always \u45CB 1456 +always \u45CA 12-1356-2 +always \u45CB 134-12356-2 always \u45CC 1456 -always \u45CD 1456 +always \u45CD 14-16-4 always \u45CE 1456 always \u45CF 1456 always \u45D0 1456 -always \u45D1 1456 -always \u45D2 1456 +always \u45D1 16-5 +always \u45D2 135-13456-5 always \u45D3 1456 -always \u45D4 1456 -always \u45D5 1456 -always \u45D6 1456 +always \u45D4 1235-12356-2 +always \u45D5 12456-4 +always \u45D6 12-156-5 always \u45D7 1456 -always \u45D8 1456 -always \u45D9 1456 -always \u45DA 1456 +always \u45D8 13-2346-2 +always \u45D9 1235-1236-2 +always \u45DA 135-126-2 always \u45DB 1456 -always \u45DC 1456 -always \u45DD 1456 -always \u45DE 1456 -always \u45DF 1456 -always \u45E0 1456 -always \u45E1 1456 -always \u45E2 1456 -always \u45E3 1456 -always \u45E4 1456 +always \u45DC 14-234-2 +always \u45DD 245-1236-2 +always \u45DE 245-1236-2 +always \u45DF 16-5 +always \u45E0 15-45-2 +always \u45E1 2345-2 +always \u45E2 15-25-4 +always \u45E3 13-146-4 +always \u45E4 235-2 always \u45E5 1456 always \u45E6 1456 always \u45E7 1456 -always \u45E8 1456 +always \u45E8 1256-2 always \u45E9 1456 -always \u45EA 1456 -always \u45EB 1456 +always \u45EA 1-2346-5 +always \u45EB 134-345-2 always \u45EC 1456 always \u45ED 1456 -always \u45EE 1456 -always \u45EF 1456 -always \u45F0 1456 -always \u45F1 1456 -always \u45F2 1456 +always \u45EE 24-456-4 +always \u45EF 13-1456-5 +always \u45F0 13-12456-5 +always \u45F1 1234-34-2 +always \u45F2 14-1456-5 always \u45F3 1456 -always \u45F4 1456 +always \u45F4 124-13456-2 always \u45F5 1456 -always \u45F6 1456 -always \u45F7 1456 +always \u45F6 14-345-5 +always \u45F7 16-5 always \u45F8 1456 -always \u45F9 1456 -always \u45FA 1456 -always \u45FB 1456 +always \u45F9 245-156-5 +always \u45FA 2345-4 +always \u45FB 13-346-2 always \u45FC 1456 -always \u45FD 1456 -always \u45FE 1456 -always \u45FF 1456 -always \u4600 1456 -always \u4601 1456 +always \u45FD 1246-5 +always \u45FE 15-2345-4 +always \u45FF 1345-13456-2 +always \u4600 12345-34-5 +always \u4601 13-2346-2 always \u4602 1456 -always \u4603 1456 -always \u4604 1456 -always \u4605 1456 -always \u4606 1456 -always \u4607 1456 -always \u4608 1456 -always \u4609 1456 -always \u460A 1456 +always \u4603 134-126-5 +always \u4604 12345-34-5 +always \u4605 1345-2456-2 +always \u4606 15-2345-4 +always \u4607 123456-2 +always \u4608 14-16-5 +always \u4609 245-1236-2 +always \u460A 134-346-5 always \u460B 1456 -always \u460C 1456 -always \u460D 1456 +always \u460C 1345-16-5 +always \u460D 12-2456-5 always \u460E 1456 -always \u460F 1456 -always \u4610 1456 -always \u4611 1456 +always \u460F 15-1256-5 +always \u4610 1345-1256-5 +always \u4611 134-2456-5 always \u4612 1456 -always \u4613 1456 +always \u4613 123-1236-5 always \u4614 1456 -always \u4615 1456 +always \u4615 1235-1346-2 always \u4616 1456 always \u4617 1456 -always \u4618 1456 -always \u4619 1456 -always \u461A 1456 +always \u4618 1256-5 +always \u4619 1246-5 +always \u461A 1-34-2 always \u461B 1456 always \u461C 1456 -always \u461D 1456 +always \u461D 16-5 always \u461E 1456 always \u461F 1456 -always \u4620 1456 -always \u4621 1456 -always \u4622 1456 -always \u4623 1456 -always \u4624 1456 -always \u4625 1456 -always \u4626 1456 +always \u4620 12345-34-2 +always \u4621 135-16-4 +always \u4622 1-34-4 +always \u4623 125-156-4 +always \u4624 24-34-5 +always \u4625 15-23456-2 +always \u4626 1345-16-2 always \u4627 1456 -always \u4628 1456 -always \u4629 1456 +always \u4628 13-246-4 +always \u4629 15-45-5 always \u462A 1456 -always \u462B 1456 -always \u462C 1456 -always \u462D 1456 -always \u462E 1456 +always \u462B 1345-12356-5 +always \u462C 1245-12346-2 +always \u462D 145-346-2 +always \u462E 15-345-5 always \u462F 1456 always \u4630 1456 -always \u4631 1456 +always \u4631 1256-5 always \u4632 1456 always \u4633 1456 always \u4634 1456 -always \u4635 1456 -always \u4636 1456 +always \u4635 14-34-5 +always \u4636 1235-1236-5 always \u4637 1456 -always \u4638 1456 -always \u4639 1456 -always \u463A 1456 -always \u463B 1456 -always \u463C 1456 -always \u463D 1456 -always \u463E 1456 -always \u463F 1456 -always \u4640 1456 -always \u4641 1456 +always \u4638 16-5 +always \u4639 125-1246-5 +always \u463A 1-1236-5 +always \u463B 15-34-5 +always \u463C 12456-4 +always \u463D 1345-16-2 +always \u463E 13-12456-4 +always \u463F 13-236-2 +always \u4640 135-1356-4 +always \u4641 245-1236-2 always \u4642 1456 -always \u4643 1456 -always \u4644 1456 -always \u4645 1456 -always \u4646 1456 -always \u4647 1456 -always \u4648 1456 -always \u4649 1456 -always \u464A 1456 +always \u4643 145-25-5 +always \u4644 245-16-5 +always \u4645 246-5 +always \u4646 13-1246-5 +always \u4647 1345-12456-4 +always \u4648 1235-12356-2 +always \u4649 15-256-2 +always \u464A 15-346-5 always \u464B 1456 -always \u464C 1456 +always \u464C 1235-1246-5 always \u464D 1456 -always \u464E 1456 -always \u464F 1456 -always \u4650 1456 +always \u464E 15-346-2 +always \u464F 135-126-2 +always \u4650 123-2346-5 always \u4651 1456 -always \u4652 1456 -always \u4653 1456 +always \u4652 15-1256-5 +always \u4653 135-2456-4 always \u4654 1456 -always \u4655 1456 +always \u4655 12-34-5 always \u4656 1456 -always \u4657 1456 -always \u4658 1456 -always \u4659 1456 -always \u465A 1456 -always \u465B 1456 -always \u465C 1456 -always \u465D 1456 +always \u4657 124-16-5 +always \u4658 12-34-4 +always \u4659 12-156-2 +always \u465A 1345-246-4 +always \u465B 13-12456-5 +always \u465C 12345-1356-2 +always \u465D 15-346-5 always \u465E 1456 -always \u465F 1456 -always \u4660 1456 -always \u4661 1456 -always \u4662 1456 -always \u4663 1456 -always \u4664 1456 -always \u4665 1456 -always \u4666 1456 +always \u465F 145-25-5 +always \u4660 13-236-2 +always \u4661 1235-1246-5 +always \u4662 125-1356-5 +always \u4663 15-345-5 +always \u4664 145-25-4 +always \u4665 14-13456-2 +always \u4666 134-1356-2 always \u4667 1456 -always \u4668 1456 -always \u4669 1456 -always \u466A 1456 +always \u4668 13-25-4 +always \u4669 134-1356-2 +always \u466A 14-12346-2 always \u466B 1456 -always \u466C 1456 +always \u466C 13456-5 always \u466D 1456 -always \u466E 1456 -always \u466F 1456 -always \u4670 1456 -always \u4671 1456 +always \u466E 13-12456-5 +always \u466F 245-34-5 +always \u4670 14-16-2 +always \u4671 145-34-2 always \u4672 1456 -always \u4673 1456 +always \u4673 2346-5 always \u4674 1456 always \u4675 1456 always \u4676 1456 -always \u4677 1456 -always \u4678 1456 -always \u4679 1456 -always \u467A 1456 +always \u4677 145-2346-2 +always \u4678 145-2346-2 +always \u4679 13-46-4 +always \u467A 14-2345-2 always \u467B 1456 -always \u467C 1456 -always \u467D 1456 +always \u467C 24-146-5 +always \u467D 15-16-5 always \u467E 1456 -always \u467F 1456 +always \u467F 1246-5 always \u4680 1456 always \u4681 1456 -always \u4682 1456 -always \u4683 1456 -always \u4684 1456 -always \u4685 1456 -always \u4686 1456 -always \u4687 1456 -always \u4688 1456 -always \u4689 1456 +always \u4682 1235-2346-5 +always \u4683 234-2 +always \u4684 14-34-5 +always \u4685 14-2456-2 +always \u4686 12356-4 +always \u4687 24-1356-4 +always \u4688 13-45-5 +always \u4689 245-16-5 always \u468A 1456 -always \u468B 1456 +always \u468B 256-5 always \u468C 1456 -always \u468D 1456 +always \u468D 245-16-5 always \u468E 1456 -always \u468F 1456 -always \u4690 1456 -always \u4691 1456 -always \u4692 1456 -always \u4693 1456 +always \u468F 14-1356-5 +always \u4690 13-16-2 +always \u4691 134-2456-2 +always \u4692 12-456-2 +always \u4693 1345-2345-4 always \u4694 1456 -always \u4695 1456 -always \u4696 1456 +always \u4695 14-16-5 +always \u4696 14-13456-2 always \u4697 1456 -always \u4698 1456 +always \u4698 12-136-2 always \u4699 1456 -always \u469A 1456 -always \u469B 1456 +always \u469A 15-2345-4 +always \u469B 1235-34-2 always \u469C 1456 -always \u469D 1456 -always \u469E 1456 -always \u469F 1456 -always \u46A0 1456 +always \u469D 125-34-2 +always \u469E 145-2456-4 +always \u469F 145-2456-4 +always \u46A0 1235-123456-5 always \u46A1 1456 -always \u46A2 1456 -always \u46A3 1456 +always \u46A2 12-2346-5 +always \u46A3 124-16-2 always \u46A4 1456 -always \u46A5 1456 -always \u46A6 1456 -always \u46A7 1456 -always \u46A8 1456 -always \u46A9 1456 +always \u46A5 1345-25-5 +always \u46A6 1-156-5 +always \u46A7 14-234-2 +always \u46A8 12345-356-5 +always \u46A9 13-246-4 always \u46AA 1456 -always \u46AB 1456 -always \u46AC 1456 +always \u46AB 146-2 +always \u46AC 14-1456-2 always \u46AD 1456 -always \u46AE 1456 -always \u46AF 1456 -always \u46B0 1456 -always \u46B1 1456 -always \u46B2 1456 -always \u46B3 1456 -always \u46B4 1456 -always \u46B5 1456 +always \u46AE 1245-1356-2 +always \u46AF 124-146-4 +always \u46B0 1234-16-4 +always \u46B1 15-1456-5 +always \u46B2 24-1236-5 +always \u46B3 15-346-5 +always \u46B4 35-5 +always \u46B5 124-146-4 always \u46B6 1456 -always \u46B7 1456 -always \u46B8 1456 -always \u46B9 1456 -always \u46BA 1456 -always \u46BB 1456 -always \u46BC 1456 -always \u46BD 1456 -always \u46BE 1456 -always \u46BF 1456 -always \u46C0 1456 -always \u46C1 1456 -always \u46C2 1456 -always \u46C3 1456 -always \u46C4 1456 -always \u46C5 1456 -always \u46C6 1456 -always \u46C7 1456 -always \u46C8 1456 -always \u46C9 1456 +always \u46B7 15-16-5 +always \u46B8 15-346-5 +always \u46B9 1234-16-4 +always \u46BA 246-2 +always \u46BB 246-2 +always \u46BC 1345-1256-5 +always \u46BD 1235-146-5 +always \u46BE 1345-1456-2 +always \u46BF 1456-5 +always \u46C0 12345-1236-4 +always \u46C1 1345-1236-2 +always \u46C2 12-156-2 +always \u46C3 456-5 +always \u46C4 45-4 +always \u46C5 15-23456-2 +always \u46C6 1-12356-5 +always \u46C7 45-4 +always \u46C8 24-156-5 +always \u46C9 134-16-5 always \u46CA 1456 -always \u46CB 1456 -always \u46CC 1456 -always \u46CD 1456 -always \u46CE 1456 -always \u46CF 1456 -always \u46D0 1456 -always \u46D1 1456 -always \u46D2 1456 +always \u46CB 13-2346-2 +always \u46CC 1234-146-2 +always \u46CD 12345-356-5 +always \u46CE 1235-34-5 +always \u46CF 1345-16-2 +always \u46D0 245-156-2 +always \u46D1 134-16-5 +always \u46D2 135-2345-5 always \u46D3 1456 -always \u46D4 1456 -always \u46D5 1456 -always \u46D6 1456 -always \u46D7 1456 -always \u46D8 1456 -always \u46D9 1456 -always \u46DA 1456 -always \u46DB 1456 -always \u46DC 1456 -always \u46DD 1456 -always \u46DE 1456 -always \u46DF 1456 -always \u46E0 1456 -always \u46E1 1456 +always \u46D4 1345-345-2 +always \u46D5 1256-5 +always \u46D6 2346-5 +always \u46D7 1-156-4 +always \u46D8 1345-1456-2 +always \u46D9 15-1256-5 +always \u46DA 14-236-5 +always \u46DB 1235-1246-5 +always \u46DC 15-256-5 +always \u46DD 1345-146-2 +always \u46DE 1235-1236-4 +always \u46DF 13-23456-2 +always \u46E0 145-12356-5 +always \u46E1 1235-35-5 always \u46E2 1456 always \u46E3 1456 -always \u46E4 1456 -always \u46E5 1456 -always \u46E6 1456 -always \u46E7 1456 -always \u46E8 1456 -always \u46E9 1456 -always \u46EA 1456 -always \u46EB 1456 -always \u46EC 1456 -always \u46ED 1456 -always \u46EE 1456 -always \u46EF 1456 -always \u46F0 1456 -always \u46F1 1456 -always \u46F2 1456 -always \u46F3 1456 -always \u46F4 1456 -always \u46F5 1456 -always \u46F6 1456 -always \u46F7 1456 -always \u46F8 1456 -always \u46F9 1456 -always \u46FA 1456 -always \u46FB 1456 -always \u46FC 1456 -always \u46FD 1456 -always \u46FE 1456 -always \u46FF 1456 -always \u4700 1456 -always \u4701 1456 +always \u46E4 245-34-5 +always \u46E5 15-16-5 +always \u46E6 15-12346-5 +always \u46E7 134-16-2 +always \u46E8 15-1456-5 +always \u46E9 34-5 +always \u46EA 245-235-2 +always \u46EB 1-1356-5 +always \u46EC 12-12356-2 +always \u46ED 15-13456-5 +always \u46EE 13-234-5 +always \u46EF 13-1256-5 +always \u46F0 1235-123456-2 +always \u46F1 124-16-2 +always \u46F2 134-1236-2 +always \u46F3 13-2345-4 +always \u46F4 245-16-4 +always \u46F5 24-12356-5 +always \u46F6 14-356-4 +always \u46F7 12456-4 +always \u46F8 12-2346-5 +always \u46F9 245-1236-5 +always \u46FA 13-346-5 +always \u46FB 234-5 +always \u46FC 1235-1246-4 +always \u46FD 1-345-4 +always \u46FE 15-34-5 +always \u46FF 13-2346-2 +always \u4700 1345-146-4 +always \u4701 15-16-5 always \u4702 1456 always \u4703 1456 -always \u4704 1456 -always \u4705 1456 -always \u4706 1456 -always \u4707 1456 +always \u4704 12-156-2 +always \u4705 1246-2 +always \u4706 134-126-5 +always \u4707 13-123456-4 always \u4708 1456 always \u4709 1456 -always \u470A 1456 -always \u470B 1456 -always \u470C 1456 -always \u470D 1456 -always \u470E 1456 +always \u470A 125-146-5 +always \u470B 1235-1246-5 +always \u470C 14-12456-2 +always \u470D 14-246-2 +always \u470E 14-146-2 always \u470F 1456 always \u4710 1456 -always \u4711 1456 -always \u4712 1456 -always \u4713 1456 -always \u4714 1456 -always \u4715 1456 -always \u4716 1456 -always \u4717 1456 -always \u4718 1456 -always \u4719 1456 -always \u471A 1456 -always \u471B 1456 -always \u471C 1456 -always \u471D 1456 -always \u471E 1456 -always \u471F 1456 -always \u4720 1456 -always \u4721 1456 -always \u4722 1456 -always \u4723 1456 +always \u4711 245-23456-5 +always \u4712 146-5 +always \u4713 1345-346-5 +always \u4714 15-1246-2 +always \u4715 134-2456-5 +always \u4716 124-1236-5 +always \u4717 15-1456-5 +always \u4718 13-13456-4 +always \u4719 1236-2 +always \u471A 124-345-5 +always \u471B 12-1236-2 +always \u471C 1246-5 +always \u471D 124-12456-4 +always \u471E 13-16-5 +always \u471F 12-136-2 +always \u4720 12-2346-5 +always \u4721 15-1256-5 +always \u4722 15-2345-4 +always \u4723 15-1456-3 always \u4724 1456 always \u4725 1456 always \u4726 1456 -always \u4727 1456 +always \u4727 1345-146-4 always \u4728 1456 -always \u4729 1456 -always \u472A 1456 -always \u472B 1456 -always \u472C 1456 -always \u472D 1456 -always \u472E 1456 -always \u472F 1456 +always \u4729 2345-5 +always \u472A 245-234-2 +always \u472B 1235-12346-2 +always \u472C 15-12346-4 +always \u472D 13-256-5 +always \u472E 14-246-2 +always \u472F 13-1256-2 always \u4730 1456 -always \u4731 1456 -always \u4732 1456 +always \u4731 134-1236-4 +always \u4732 14-346-5 always \u4733 1456 -always \u4734 1456 -always \u4735 1456 -always \u4736 1456 +always \u4734 12-34-5 +always \u4735 12-156-4 +always \u4736 15-46-2 always \u4737 1456 -always \u4738 1456 -always \u4739 1456 -always \u473A 1456 -always \u473B 1456 -always \u473C 1456 -always \u473D 1456 +always \u4738 134-356-4 +always \u4739 24-34-5 +always \u473A 245-2346-5 +always \u473B 12-156-4 +always \u473C 13-34-2 +always \u473D 1256-2 always \u473E 1456 always \u473F 1456 -always \u4740 1456 -always \u4741 1456 -always \u4742 1456 -always \u4743 1456 +always \u4740 14-246-2 +always \u4741 14-146-2 +always \u4742 24-34-5 +always \u4743 1-2346-2 always \u4744 1456 always \u4745 1456 always \u4746 1456 always \u4747 1456 -always \u4748 1456 +always \u4748 2346-5 always \u4749 1456 -always \u474A 1456 -always \u474B 1456 -always \u474C 1456 -always \u474D 1456 +always \u474A 24-345-5 +always \u474B 125-12346-5 +always \u474C 13-236-2 +always \u474D 13-256-5 always \u474E 1456 -always \u474F 1456 -always \u4750 1456 +always \u474F 14-12356-2 +always \u4750 1246-2 always \u4751 1456 -always \u4752 1456 -always \u4753 1456 +always \u4752 1-34-5 +always \u4753 14-345-5 always \u4754 1456 -always \u4755 1456 -always \u4756 1456 +always \u4755 1-2346-2 +always \u4756 1-146-4 always \u4757 1456 -always \u4758 1456 +always \u4758 16-5 always \u4759 1456 -always \u475A 1456 +always \u475A 1345-16-2 always \u475B 1456 always \u475C 1456 -always \u475D 1456 -always \u475E 1456 -always \u475F 1456 -always \u4760 1456 -always \u4761 1456 -always \u4762 1456 -always \u4763 1456 -always \u4764 1456 -always \u4765 1456 +always \u475D 16-4 +always \u475E 1235-146-5 +always \u475F 23456-5 +always \u4760 1235-12456-2 +always \u4761 134-1236-5 +always \u4762 134-1236-5 +always \u4763 245-1256-2 +always \u4764 14-146-4 +always \u4765 1235-146-2 always \u4766 1456 -always \u4767 1456 -always \u4768 1456 -always \u4769 1456 -always \u476A 1456 -always \u476B 1456 -always \u476C 1456 -always \u476D 1456 -always \u476E 1456 -always \u476F 1456 -always \u4770 1456 +always \u4767 134-136-2 +always \u4768 15-2345-2 +always \u4769 1-136-5 +always \u476A 24-34-2 +always \u476B 125-25-2 +always \u476C 1-34-5 +always \u476D 13-12356-5 +always \u476E 15-45-5 +always \u476F 16-5 +always \u4770 124-16-2 always \u4771 1456 -always \u4772 1456 -always \u4773 1456 +always \u4772 13-1456-5 +always \u4773 245-1236-2 always \u4774 1456 -always \u4775 1456 -always \u4776 1456 -always \u4777 1456 -always \u4778 1456 -always \u4779 1456 -always \u477A 1456 +always \u4775 135-34-5 +always \u4776 14-46-2 +always \u4777 1-156-5 +always \u4778 13-16-5 +always \u4779 12456-4 +always \u477A 13-12456-5 always \u477B 1456 -always \u477C 1456 -always \u477D 1456 -always \u477E 1456 -always \u477F 1456 -always \u4780 1456 -always \u4781 1456 -always \u4782 1456 -always \u4783 1456 -always \u4784 1456 -always \u4785 1456 -always \u4786 1456 -always \u4787 1456 -always \u4788 1456 -always \u4789 1456 -always \u478A 1456 -always \u478B 1456 -always \u478C 1456 -always \u478D 1456 +always \u477C 245-13456-2 +always \u477D 2456-5 +always \u477E 12345-34-5 +always \u477F 13-1246-5 +always \u4780 13-12356-5 +always \u4781 15-2345-5 +always \u4782 1245-12456-4 +always \u4783 1-156-5 +always \u4784 135-246-5 +always \u4785 16-2 +always \u4786 15-25-4 +always \u4787 145-346-2 +always \u4788 13-1246-4 +always \u4789 24-1356-5 +always \u478A 15-256-5 +always \u478B 12-136-5 +always \u478C 24-2346-2 +always \u478D 245-13456-2 always \u478E 1456 always \u478F 1456 -always \u4790 1456 -always \u4791 1456 -always \u4792 1456 -always \u4793 1456 -always \u4794 1456 -always \u4795 1456 -always \u4796 1456 +always \u4790 12-123456-4 +always \u4791 1235-12346-2 +always \u4792 145-12346-5 +always \u4793 12-1356-3 +always \u4794 1246-4 +always \u4795 145-346-2 +always \u4796 24-34-4 always \u4797 1456 -always \u4798 1456 -always \u4799 1456 -always \u479A 1456 +always \u4798 13-16-2 +always \u4799 125-345-2 +always \u479A 245-16-2 always \u479B 1456 -always \u479C 1456 -always \u479D 1456 -always \u479E 1456 -always \u479F 1456 +always \u479C 12345-34-5 +always \u479D 146-4 +always \u479E 12345-34-2 +always \u479F 1234-126-5 always \u47A0 1456 -always \u47A1 1456 -always \u47A2 1456 -always \u47A3 1456 -always \u47A4 1456 -always \u47A5 1456 -always \u47A6 1456 -always \u47A7 1456 -always \u47A8 1456 -always \u47A9 1456 -always \u47AA 1456 -always \u47AB 1456 -always \u47AC 1456 -always \u47AD 1456 +always \u47A1 124-1236-4 +always \u47A2 1-345-5 +always \u47A3 12-2346-4 +always \u47A4 245-1256-2 +always \u47A5 234-5 +always \u47A6 1235-2346-2 +always \u47A7 1235-12356-5 +always \u47A8 13-1246-4 +always \u47A9 2346-5 +always \u47AA 13-46-5 +always \u47AB 256-4 +always \u47AC 124-12356-5 +always \u47AD 245-234-4 always \u47AE 1456 -always \u47AF 1456 -always \u47B0 1456 -always \u47B1 1456 +always \u47AF 12345-34-5 +always \u47B0 125-25-2 +always \u47B1 1235-34-2 always \u47B2 1456 -always \u47B3 1456 +always \u47B3 135-126-2 always \u47B4 1456 -always \u47B5 1456 -always \u47B6 1456 -always \u47B7 1456 -always \u47B8 1456 -always \u47B9 1456 +always \u47B5 13-236-4 +always \u47B6 145-16-5 +always \u47B7 13-236-2 +always \u47B8 12345-34-5 +always \u47B9 1235-456-2 always \u47BA 1456 -always \u47BB 1456 -always \u47BC 1456 -always \u47BD 1456 -always \u47BE 1456 +always \u47BB 235-4 +always \u47BC 12-1246-4 +always \u47BD 15-25-4 +always \u47BE 12-156-2 always \u47BF 1456 always \u47C0 1456 always \u47C1 1456 -always \u47C2 1456 -always \u47C3 1456 -always \u47C4 1456 -always \u47C5 1456 -always \u47C6 1456 +always \u47C2 134-1236-2 +always \u47C3 245-345-5 +always \u47C4 245-16-5 +always \u47C5 13-2345-5 +always \u47C6 135-16-5 always \u47C7 1456 -always \u47C8 1456 -always \u47C9 1456 -always \u47CA 1456 -always \u47CB 1456 -always \u47CC 1456 -always \u47CD 1456 +always \u47C8 1-156-2 +always \u47C9 1-34-2 +always \u47CA 245-1256-2 +always \u47CB 1-1236-4 +always \u47CC 13-16-2 +always \u47CD 145-2345-2 always \u47CE 1456 -always \u47CF 1456 -always \u47D0 1456 -always \u47D1 1456 -always \u47D2 1456 +always \u47CF 14-16-5 +always \u47D0 14-16-5 +always \u47D1 14-345-4 +always \u47D2 245-45-2 always \u47D3 1456 -always \u47D4 1456 -always \u47D5 1456 -always \u47D6 1456 -always \u47D7 1456 -always \u47D8 1456 -always \u47D9 1456 -always \u47DA 1456 -always \u47DB 1456 -always \u47DC 1456 -always \u47DD 1456 -always \u47DE 1456 -always \u47DF 1456 -always \u47E0 1456 -always \u47E1 1456 -always \u47E2 1456 -always \u47E3 1456 -always \u47E4 1456 -always \u47E5 1456 -always \u47E6 1456 -always \u47E7 1456 -always \u47E8 1456 -always \u47E9 1456 -always \u47EA 1456 +always \u47D4 12345-34-5 +always \u47D5 12-345-5 +always \u47D6 124-1346-5 +always \u47D7 24-156-5 +always \u47D8 1235-1346-5 +always \u47D9 245-346-5 +always \u47DA 245-16-2 +always \u47DB 135-126-2 +always \u47DC 1345-345-5 +always \u47DD 124-12356-5 +always \u47DE 12-34-2 +always \u47DF 245-34-5 +always \u47E0 236-5 +always \u47E1 145-16-5 +always \u47E2 12-136-2 +always \u47E3 12-34-5 +always \u47E4 135-16-5 +always \u47E5 134-1346-2 +always \u47E6 135-345-2 +always \u47E7 124-2345-2 +always \u47E8 134-1456-2 +always \u47E9 14-346-4 +always \u47EA 12345-1356-4 always \u47EB 1456 -always \u47EC 1456 -always \u47ED 1456 -always \u47EE 1456 -always \u47EF 1456 -always \u47F0 1456 +always \u47EC 245-234-5 +always \u47ED 124-246-2 +always \u47EE 12345-34-2 +always \u47EF 123-25-5 +always \u47F0 13-2345-4 always \u47F1 1456 always \u47F2 1456 always \u47F3 1456 -always \u47F4 1456 -always \u47F5 1456 -always \u47F6 1456 -always \u47F7 1456 -always \u47F8 1456 -always \u47F9 1456 -always \u47FA 1456 -always \u47FB 1456 -always \u47FC 1456 +always \u47F4 1-136-5 +always \u47F5 245-234-2 +always \u47F6 245-25-5 +always \u47F7 12-156-5 +always \u47F8 123-1246-2 +always \u47F9 14-346-5 +always \u47FA 135-1346-4 +always \u47FB 145-34-5 +always \u47FC 34-4 always \u47FD 1456 -always \u47FE 1456 -always \u47FF 1456 -always \u4800 1456 +always \u47FE 13-236-4 +always \u47FF 14-34-5 +always \u4800 12-1346-4 always \u4801 1456 -always \u4802 1456 -always \u4803 1456 -always \u4804 1456 -always \u4805 1456 -always \u4806 1456 -always \u4807 1456 -always \u4808 1456 -always \u4809 1456 -always \u480A 1456 -always \u480B 1456 +always \u4802 12-34-2 +always \u4803 14-46-4 +always \u4804 124-2345-4 +always \u4805 123-123456-4 +always \u4806 12-1346-2 +always \u4807 13-236-2 +always \u4808 124-34-2 +always \u4809 1235-35-5 +always \u480A 12345-356-5 +always \u480B 135-16-4 always \u480C 1456 -always \u480D 1456 -always \u480E 1456 -always \u480F 1456 -always \u4810 1456 -always \u4811 1456 -always \u4812 1456 -always \u4813 1456 -always \u4814 1456 +always \u480D 245-23456-2 +always \u480E 25-5 +always \u480F 13-16-5 +always \u4810 245-1256-5 +always \u4811 123-1246-4 +always \u4812 1235-34-2 +always \u4813 245-34-5 +always \u4814 15-1246-5 always \u4815 1456 always \u4816 1456 -always \u4817 1456 -always \u4818 1456 -always \u4819 1456 -always \u481A 1456 -always \u481B 1456 -always \u481C 1456 +always \u4817 245-234-5 +always \u4818 1234-16-5 +always \u4819 135-356-5 +always \u481A 35-5 +always \u481B 13-246-4 +always \u481C 1245-12346-2 always \u481D 1456 -always \u481E 1456 -always \u481F 1456 -always \u4820 1456 -always \u4821 1456 -always \u4822 1456 -always \u4823 1456 -always \u4824 1456 -always \u4825 1456 -always \u4826 1456 -always \u4827 1456 -always \u4828 1456 -always \u4829 1456 -always \u482A 1456 -always \u482B 1456 -always \u482C 1456 -always \u482D 1456 -always \u482E 1456 -always \u482F 1456 -always \u4830 1456 -always \u4831 1456 -always \u4832 1456 +always \u481E 245-34-5 +always \u481F 145-346-2 +always \u4820 12-156-5 +always \u4821 245-25-2 +always \u4822 134-1356-5 +always \u4823 15-45-4 +always \u4824 145-25-4 +always \u4825 135-346-2 +always \u4826 1-2346-5 +always \u4827 12-34-2 +always \u4828 12-1236-5 +always \u4829 13-1246-5 +always \u482A 145-12456-5 +always \u482B 125-12356-5 +always \u482C 145-1356-5 +always \u482D 14-2456-2 +always \u482E 124-1356-2 +always \u482F 236-5 +always \u4830 245-45-2 +always \u4831 24-34-4 +always \u4832 14-13456-2 always \u4833 1456 -always \u4834 1456 -always \u4835 1456 -always \u4836 1456 -always \u4837 1456 +always \u4834 245-1456-4 +always \u4835 12345-34-5 +always \u4836 24-2346-5 +always \u4837 124-246-4 always \u4838 1456 -always \u4839 1456 +always \u4839 2456-2 always \u483A 1456 -always \u483B 1456 -always \u483C 1456 -always \u483D 1456 -always \u483E 1456 -always \u483F 1456 -always \u4840 1456 -always \u4841 1456 -always \u4842 1456 -always \u4843 1456 +always \u483B 245-235-2 +always \u483C 145-246-5 +always \u483D 1235-2456-2 +always \u483E 24-1236-4 +always \u483F 2356-5 +always \u4840 1-1236-4 +always \u4841 14-12346-4 +always \u4842 13-234-5 +always \u4843 14-16-5 always \u4844 1456 -always \u4845 1456 -always \u4846 1456 -always \u4847 1456 -always \u4848 1456 -always \u4849 1456 -always \u484A 1456 -always \u484B 1456 -always \u484C 1456 -always \u484D 1456 -always \u484E 1456 -always \u484F 1456 -always \u4850 1456 -always \u4851 1456 -always \u4852 1456 -always \u4853 1456 -always \u4854 1456 -always \u4855 1456 -always \u4856 1456 -always \u4857 1456 -always \u4858 1456 -always \u4859 1456 -always \u485A 1456 -always \u485B 1456 -always \u485C 1456 -always \u485D 1456 -always \u485E 1456 -always \u485F 1456 +always \u4845 134-1456-4 +always \u4846 1245-12346-2 +always \u4847 236-5 +always \u4848 13-236-2 +always \u4849 123-1346-4 +always \u484A 12345-1236-2 +always \u484B 245-16-2 +always \u484C 1235-12346-2 +always \u484D 12345-34-2 +always \u484E 14-34-2 +always \u484F 1235-12346-2 +always \u4850 124-25-2 +always \u4851 134-1456-2 +always \u4852 124-2345-2 +always \u4853 13-45-5 +always \u4854 245-16-4 +always \u4855 1-1356-4 +always \u4856 13-13456-5 +always \u4857 13-12346-4 +always \u4858 124-2345-2 +always \u4859 14-1346-2 +always \u485A 134-146-5 +always \u485B 1456-5 +always \u485C 14-34-5 +always \u485D 256-4 +always \u485E 13-1256-2 +always \u485F 1234-16-5 always \u4860 1456 -always \u4861 1456 -always \u4862 1456 +always \u4861 15-346-2 +always \u4862 135-2345-5 always \u4863 1456 always \u4864 1456 -always \u4865 1456 -always \u4866 1456 -always \u4867 1456 -always \u4868 1456 -always \u4869 1456 -always \u486A 1456 -always \u486B 1456 -always \u486C 1456 +always \u4865 1245-12346-2 +always \u4866 15-1346-4 +always \u4867 34-4 +always \u4868 12-345-5 +always \u4869 13-34-4 +always \u486A 12-1236-2 +always \u486B 1234-1356-2 +always \u486C 134-1236-5 always \u486D 1456 always \u486E 1456 -always \u486F 1456 -always \u4870 1456 -always \u4871 1456 -always \u4872 1456 +always \u486F 24-456-5 +always \u4870 123-1356-4 +always \u4871 1-12456-4 +always \u4872 12-1236-2 always \u4873 1456 -always \u4874 1456 -always \u4875 1456 -always \u4876 1456 -always \u4877 1456 +always \u4874 12-456-2 +always \u4875 15-1246-5 +always \u4876 135-356-5 +always \u4877 123-2456-5 always \u4878 1456 -always \u4879 1456 -always \u487A 1456 -always \u487B 1456 -always \u487C 1456 +always \u4879 1-156-5 +always \u487A 1246-5 +always \u487B 134-1456-2 +always \u487C 14-13456-2 always \u487D 1456 -always \u487E 1456 -always \u487F 1456 -always \u4880 1456 -always \u4881 1456 +always \u487E 1345-356-5 +always \u487F 14-13456-2 +always \u4880 245-16-5 +always \u4881 236-5 always \u4882 1456 -always \u4883 1456 -always \u4884 1456 -always \u4885 1456 +always \u4883 16-5 +always \u4884 15-16-4 +always \u4885 12-136-2 always \u4886 1456 -always \u4887 1456 -always \u4888 1456 -always \u4889 1456 -always \u488A 1456 -always \u488B 1456 -always \u488C 1456 -always \u488D 1456 +always \u4887 1245-12346-4 +always \u4888 12-136-2 +always \u4889 1345-12346-2 +always \u488A 234-2 +always \u488B 13-16-5 +always \u488C 135-126-2 +always \u488D 12345-1346-4 always \u488E 1456 always \u488F 1456 -always \u4890 1456 -always \u4891 1456 +always \u4890 245-34-2 +always \u4891 145-16-4 always \u4892 1456 -always \u4893 1456 -always \u4894 1456 -always \u4895 1456 -always \u4896 1456 -always \u4897 1456 +always \u4893 1256-2 +always \u4894 13-2346-2 +always \u4895 15-1256-5 +always \u4896 14-1256-5 +always \u4897 1235-2346-2 always \u4898 1456 -always \u4899 1456 -always \u489A 1456 -always \u489B 1456 +always \u4899 135-2456-5 +always \u489A 13-12346-5 +always \u489B 13-235-4 always \u489C 1456 -always \u489D 1456 -always \u489E 1456 -always \u489F 1456 -always \u48A0 1456 -always \u48A1 1456 -always \u48A2 1456 -always \u48A3 1456 -always \u48A4 1456 -always \u48A5 1456 -always \u48A6 1456 -always \u48A7 1456 +always \u489D 23456-5 +always \u489E 1345-34-5 +always \u489F 234-2 +always \u48A0 15-12346-5 +always \u48A1 15-346-5 +always \u48A2 245-1346-5 +always \u48A3 246-2 +always \u48A4 24-34-5 +always \u48A5 2345-2 +always \u48A6 24-2356-5 +always \u48A7 14-246-5 always \u48A8 1456 -always \u48A9 1456 -always \u48AA 1456 -always \u48AB 1456 +always \u48A9 1256-5 +always \u48AA 135-126-2 +always \u48AB 15-1246-2 always \u48AC 1456 -always \u48AD 1456 -always \u48AE 1456 -always \u48AF 1456 -always \u48B0 1456 -always \u48B1 1456 -always \u48B2 1456 -always \u48B3 1456 +always \u48AD 2345-5 +always \u48AE 14-356-5 +always \u48AF 14-1456-2 +always \u48B0 124-2456-2 +always \u48B1 145-34-2 +always \u48B2 236-5 +always \u48B3 13-16-4 always \u48B4 1456 -always \u48B5 1456 +always \u48B5 256-2 always \u48B6 1456 always \u48B7 1456 always \u48B8 1456 -always \u48B9 1456 +always \u48B9 13-1256-4 always \u48BA 1456 -always \u48BB 1456 +always \u48BB 12-136-2 always \u48BC 1456 -always \u48BD 1456 -always \u48BE 1456 +always \u48BD 15-46-5 +always \u48BE 15-2345-4 always \u48BF 1456 -always \u48C0 1456 -always \u48C1 1456 -always \u48C2 1456 +always \u48C0 13-1246-4 +always \u48C1 1256-4 +always \u48C2 14-356-4 always \u48C3 1456 -always \u48C4 1456 -always \u48C5 1456 -always \u48C6 1456 -always \u48C7 1456 -always \u48C8 1456 +always \u48C4 124-34-2 +always \u48C5 12-136-2 +always \u48C6 15-13456-2 +always \u48C7 245-234-2 +always \u48C8 1235-1346-5 always \u48C9 1456 -always \u48CA 1456 -always \u48CB 1456 -always \u48CC 1456 -always \u48CD 1456 +always \u48CA 145-1346-4 +always \u48CB 245-2456-4 +always \u48CC 145-16-4 +always \u48CD 2345-4 always \u48CE 1456 always \u48CF 1456 always \u48D0 1456 -always \u48D1 1456 +always \u48D1 12-1236-2 always \u48D2 1456 -always \u48D3 1456 -always \u48D4 1456 -always \u48D5 1456 -always \u48D6 1456 +always \u48D3 14-16-2 +always \u48D4 15-25-4 +always \u48D5 134-345-4 +always \u48D6 134-345-4 always \u48D7 1456 -always \u48D8 1456 -always \u48D9 1456 -always \u48DA 1456 +always \u48D8 124-1346-2 +always \u48D9 1234-356-2 +always \u48DA 14-12356-2 always \u48DB 1456 -always \u48DC 1456 -always \u48DD 1456 -always \u48DE 1456 -always \u48DF 1456 -always \u48E0 1456 -always \u48E1 1456 -always \u48E2 1456 -always \u48E3 1456 -always \u48E4 1456 -always \u48E5 1456 -always \u48E6 1456 -always \u48E7 1456 -always \u48E8 1456 -always \u48E9 1456 -always \u48EA 1456 -always \u48EB 1456 -always \u48EC 1456 -always \u48ED 1456 -always \u48EE 1456 -always \u48EF 1456 -always \u48F0 1456 -always \u48F1 1456 -always \u48F2 1456 +always \u48DC 245-25-2 +always \u48DD 124-34-2 +always \u48DE 2346-5 +always \u48DF 245-1236-2 +always \u48E0 13-346-2 +always \u48E1 124-16-2 +always \u48E2 13-16-2 +always \u48E3 145-1346-4 +always \u48E4 13-246-5 +always \u48E5 135-16-4 +always \u48E6 14-356-5 +always \u48E7 16-5 +always \u48E8 12-123456-2 +always \u48E9 12-123456-2 +always \u48EA 1234-126-5 +always \u48EB 14-16-2 +always \u48EC 125-2456-4 +always \u48ED 124-2456-5 +always \u48EE 1234-126-5 +always \u48EF 124-2345-4 +always \u48F0 13-1256-5 +always \u48F1 15-1256-5 +always \u48F2 12345-1236-5 always \u48F3 1456 -always \u48F4 1456 -always \u48F5 1456 -always \u48F6 1456 +always \u48F4 15-1256-5 +always \u48F5 156-5 +always \u48F6 1235-25-2 always \u48F7 1456 -always \u48F8 1456 -always \u48F9 1456 +always \u48F8 1245-1236-4 +always \u48F9 12345-345-2 always \u48FA 1456 always \u48FB 1456 -always \u48FC 1456 -always \u48FD 1456 -always \u48FE 1456 +always \u48FC 14-46-2 +always \u48FD 124-16-4 +always \u48FE 134-16-5 always \u48FF 1456 always \u4900 1456 -always \u4901 1456 -always \u4902 1456 -always \u4903 1456 -always \u4904 1456 -always \u4905 1456 -always \u4906 1456 +always \u4901 245-136-2 +always \u4902 134-356-2 +always \u4903 1456-5 +always \u4904 134-2345-4 +always \u4905 124-34-2 +always \u4906 123-1246-2 always \u4907 1456 always \u4908 1456 -always \u4909 1456 -always \u490A 1456 -always \u490B 1456 +always \u4909 134-16-5 +always \u490A 1245-12346-2 +always \u490B 13-25-2 always \u490C 1456 -always \u490D 1456 -always \u490E 1456 -always \u490F 1456 -always \u4910 1456 -always \u4911 1456 -always \u4912 1456 -always \u4913 1456 -always \u4914 1456 -always \u4915 1456 -always \u4916 1456 -always \u4917 1456 -always \u4918 1456 -always \u4919 1456 -always \u491A 1456 -always \u491B 1456 -always \u491C 1456 -always \u491D 1456 -always \u491E 1456 -always \u491F 1456 -always \u4920 1456 -always \u4921 1456 +always \u490D 134-16-2 +always \u490E 13-1256-2 +always \u490F 1234-16-4 +always \u4910 13-1456-4 +always \u4911 456-5 +always \u4912 13-16-4 +always \u4913 134-1356-2 +always \u4914 13-2345-5 +always \u4915 15-236-5 +always \u4916 135-146-5 +always \u4917 13-1236-4 +always \u4918 12-1236-4 +always \u4919 14-16-5 +always \u491A 14-16-4 +always \u491B 245-234-2 +always \u491C 145-123456-5 +always \u491D 13456-5 +always \u491E 256-4 +always \u491F 12-136-2 +always \u4920 13-16-3 +always \u4921 1245-1236-4 always \u4922 1456 -always \u4923 1456 +always \u4923 14-236-5 always \u4924 1456 -always \u4925 1456 -always \u4926 1456 -always \u4927 1456 -always \u4928 1456 -always \u4929 1456 -always \u492A 1456 -always \u492B 1456 +always \u4925 13-1246-4 +always \u4926 236-5 +always \u4927 1235-1246-5 +always \u4928 1234-16-5 +always \u4929 12-345-2 +always \u492A 145-25-4 +always \u492B 12-1236-2 always \u492C 1456 -always \u492D 1456 -always \u492E 1456 -always \u492F 1456 -always \u4930 1456 -always \u4931 1456 -always \u4932 1456 -always \u4933 1456 -always \u4934 1456 -always \u4935 1456 -always \u4936 1456 -always \u4937 1456 -always \u4938 1456 +always \u492D 123-12456-5 +always \u492E 24-2346-5 +always \u492F 15-13456-2 +always \u4930 12346-4 +always \u4931 24-156-5 +always \u4932 12-156-5 +always \u4933 346-5 +always \u4934 1235-1236-2 +always \u4935 12345-356-5 +always \u4936 346-5 +always \u4937 2345-2 +always \u4938 125-12456-5 always \u4939 1456 -always \u493A 1456 -always \u493B 1456 -always \u493C 1456 +always \u493A 1456-4 +always \u493B 145-25-5 +always \u493C 15-2345-5 always \u493D 1456 always \u493E 1456 -always \u493F 1456 -always \u4940 1456 -always \u4941 1456 -always \u4942 1456 -always \u4943 1456 -always \u4944 1456 -always \u4945 1456 -always \u4946 1456 -always \u4947 1456 -always \u4948 1456 +always \u493F 245-346-5 +always \u4940 12-1236-4 +always \u4941 1235-1236-2 +always \u4942 134-1356-5 +always \u4943 236-5 +always \u4944 245-34-5 +always \u4945 245-2345-5 +always \u4946 13-1456-4 +always \u4947 24-1236-5 +always \u4948 134-34-4 always \u4949 1456 always \u494A 1456 always \u494B 1456 -always \u494C 1456 -always \u494D 1456 -always \u494E 1456 -always \u494F 1456 -always \u4950 1456 -always \u4951 1456 -always \u4952 1456 +always \u494C 1-1356-5 +always \u494D 1-156-5 +always \u494E 12-123456-2 +always \u494F 1256-4 +always \u4950 134-12356-2 +always \u4951 12456-5 +always \u4952 12-12356-2 always \u4953 1456 -always \u4954 1456 -always \u4955 1456 -always \u4956 1456 -always \u4957 1456 -always \u4958 1456 -always \u4959 1456 +always \u4954 15-34-5 +always \u4955 1234-346-4 +always \u4956 124-2345-2 +always \u4957 123-12456-4 +always \u4958 245-34-5 +always \u4959 15-1246-5 always \u495A 1456 -always \u495B 1456 -always \u495C 1456 -always \u495D 1456 -always \u495E 1456 -always \u495F 1456 +always \u495B 13-346-2 +always \u495C 13-2345-5 +always \u495D 146-2 +always \u495E 13-246-4 +always \u495F 346-5 always \u4960 1456 -always \u4961 1456 -always \u4962 1456 -always \u4963 1456 -always \u4964 1456 -always \u4965 1456 +always \u4961 346-5 +always \u4962 14-12346-2 +always \u4963 125-146-2 +always \u4964 135-146-2 +always \u4965 14-2345-2 always \u4966 1456 -always \u4967 1456 -always \u4968 1456 -always \u4969 1456 -always \u496A 1456 -always \u496B 1456 -always \u496C 1456 -always \u496D 1456 -always \u496E 1456 -always \u496F 1456 -always \u4970 1456 -always \u4971 1456 +always \u4967 1235-12456-2 +always \u4968 14-1256-5 +always \u4969 1246-2 +always \u496A 15-2345-4 +always \u496B 124-346-4 +always \u496C 135-126-2 +always \u496D 1-1356-5 +always \u496E 1-34-2 +always \u496F 135-345-5 +always \u4970 134-1356-5 +always \u4971 15-346-4 always \u4972 1456 always \u4973 1456 always \u4974 1456 -always \u4975 1456 -always \u4976 1456 -always \u4977 1456 -always \u4978 1456 +always \u4975 15-246-4 +always \u4976 14-16-5 +always \u4977 1-345-2 +always \u4978 134-16-2 always \u4979 1456 -always \u497A 1456 +always \u497A 346-2 always \u497B 1456 always \u497C 1456 always \u497D 1456 -always \u497E 1456 +always \u497E 15-346-4 always \u497F 1456 always \u4980 1456 always \u4981 1456 -always \u4982 1456 +always \u4982 24-1236-5 always \u4983 1456 always \u4984 1456 -always \u4985 1456 -always \u4986 1456 -always \u4987 1456 -always \u4988 1456 +always \u4985 24-1236-5 +always \u4986 13-236-2 +always \u4987 13-16-5 +always \u4988 12345-1346-4 always \u4989 1456 -always \u498A 1456 -always \u498B 1456 -always \u498C 1456 -always \u498D 1456 -always \u498E 1456 -always \u498F 1456 -always \u4990 1456 -always \u4991 1456 -always \u4992 1456 +always \u498A 1345-246-4 +always \u498B 146-2 +always \u498C 12-34-5 +always \u498D 34-5 +always \u498E 13-12456-4 +always \u498F 15-346-5 +always \u4990 124-13456-4 +always \u4991 15-346-5 +always \u4992 145-1346-5 always \u4993 1456 -always \u4994 1456 +always \u4994 124-1236-4 always \u4995 1456 -always \u4996 1456 -always \u4997 1456 -always \u4998 1456 -always \u4999 1456 -always \u499A 1456 -always \u499B 1456 -always \u499C 1456 +always \u4996 15-23456-2 +always \u4997 15-1256-5 +always \u4998 135-16-5 +always \u4999 15-156-5 +always \u499A 1235-25-5 +always \u499B 1-1356-5 +always \u499C 34-2 always \u499D 1456 -always \u499E 1456 -always \u499F 1456 -always \u49A0 1456 -always \u49A1 1456 -always \u49A2 1456 -always \u49A3 1456 -always \u49A4 1456 -always \u49A5 1456 -always \u49A6 1456 -always \u49A7 1456 -always \u49A8 1456 +always \u499E 1245-123456-5 +always \u499F 12-2356-5 +always \u49A0 24-156-4 +always \u49A1 1235-12456-2 +always \u49A2 123-25-5 +always \u49A3 12345-34-5 +always \u49A4 12-2356-5 +always \u49A5 15-2345-2 +always \u49A6 245-1456-2 +always \u49A7 245-346-2 +always \u49A8 14-1236-2 always \u49A9 1456 -always \u49AA 1456 +always \u49AA 23456-5 always \u49AB 1456 -always \u49AC 1456 +always \u49AC 245-236-5 always \u49AD 1456 -always \u49AE 1456 -always \u49AF 1456 +always \u49AE 12-123456-4 +always \u49AF 1-156-5 always \u49B0 1456 -always \u49B1 1456 -always \u49B2 1456 -always \u49B3 1456 -always \u49B4 1456 -always \u49B5 1456 -always \u49B6 1456 -always \u49B7 1456 +always \u49B1 123-1246-4 +always \u49B2 245-2345-5 +always \u49B3 1235-1346-5 +always \u49B4 16-5 +always \u49B5 1345-16-4 +always \u49B6 1-1356-5 +always \u49B7 12-2356-5 always \u49B8 1456 -always \u49B9 1456 +always \u49B9 24-156-2 always \u49BA 1456 -always \u49BB 1456 -always \u49BC 1456 -always \u49BD 1456 -always \u49BE 1456 +always \u49BB 245-156-5 +always \u49BC 13-236-2 +always \u49BD 15-1256-5 +always \u49BE 256-4 always \u49BF 1456 always \u49C0 1456 -always \u49C1 1456 -always \u49C2 1456 -always \u49C3 1456 -always \u49C4 1456 -always \u49C5 1456 -always \u49C6 1456 -always \u49C7 1456 +always \u49C1 12-34-5 +always \u49C2 145-146-5 +always \u49C3 145-2345-5 +always \u49C4 13-2346-5 +always \u49C5 124-16-5 +always \u49C6 1235-12346-2 +always \u49C7 1345-16-4 always \u49C8 1456 -always \u49C9 1456 +always \u49C9 14-16-4 always \u49CA 1456 -always \u49CB 1456 +always \u49CB 15-2345-4 always \u49CC 1456 -always \u49CD 1456 -always \u49CE 1456 +always \u49CD 15-16-5 +always \u49CE 15-45-5 always \u49CF 1456 always \u49D0 1456 always \u49D1 1456 -always \u49D2 1456 +always \u49D2 14-2456-2 always \u49D3 1456 -always \u49D4 1456 -always \u49D5 1456 -always \u49D6 1456 -always \u49D7 1456 -always \u49D8 1456 -always \u49D9 1456 -always \u49DA 1456 -always \u49DB 1456 -always \u49DC 1456 -always \u49DD 1456 -always \u49DE 1456 -always \u49DF 1456 -always \u49E0 1456 +always \u49D4 134-34-5 +always \u49D5 12-1356-2 +always \u49D6 13-2345-5 +always \u49D7 135-16-5 +always \u49D8 245-16-2 +always \u49D9 14-13456-2 +always \u49DA 1235-146-5 +always \u49DB 135-1346-5 +always \u49DC 124-1346-2 +always \u49DD 145-16-5 +always \u49DE 12345-34-5 +always \u49DF 15-2345-5 +always \u49E0 24-12456-5 always \u49E1 1456 always \u49E2 1456 always \u49E3 1456 -always \u49E4 1456 -always \u49E5 1456 -always \u49E6 1456 -always \u49E7 1456 -always \u49E8 1456 +always \u49E4 1234-34-2 +always \u49E5 1235-1246-5 +always \u49E6 1246-2 +always \u49E7 16-4 +always \u49E8 346-5 always \u49E9 1456 -always \u49EA 1456 -always \u49EB 1456 +always \u49EA 12-2346-5 +always \u49EB 1235-146-2 always \u49EC 1456 always \u49ED 1456 -always \u49EE 1456 -always \u49EF 1456 -always \u49F0 1456 +always \u49EE 15-2345-4 +always \u49EF 12-1236-2 +always \u49F0 1235-123456-5 always \u49F1 1456 -always \u49F2 1456 -always \u49F3 1456 +always \u49F2 1235-1236-5 +always \u49F3 245-156-2 always \u49F4 1456 -always \u49F5 1456 -always \u49F6 1456 -always \u49F7 1456 +always \u49F5 245-16-2 +always \u49F6 123-1246-2 +always \u49F7 1245-12356-2 always \u49F8 1456 always \u49F9 1456 -always \u49FA 1456 +always \u49FA 15-235-2 always \u49FB 1456 -always \u49FC 1456 -always \u49FD 1456 +always \u49FC 1235-34-2 +always \u49FD 245-1246-4 always \u49FE 1456 -always \u49FF 1456 -always \u4A00 1456 -always \u4A01 1456 +always \u49FF 245-236-5 +always \u4A00 145-16-2 +always \u4A01 12-2346-5 always \u4A02 1456 always \u4A03 1456 -always \u4A04 1456 -always \u4A05 1456 -always \u4A06 1456 +always \u4A04 2345-5 +always \u4A05 14-246-2 +always \u4A06 135-16-2 always \u4A07 1456 always \u4A08 1456 always \u4A09 1456 always \u4A0A 1456 -always \u4A0B 1456 -always \u4A0C 1456 -always \u4A0D 1456 -always \u4A0E 1456 -always \u4A0F 1456 -always \u4A10 1456 -always \u4A11 1456 -always \u4A12 1456 -always \u4A13 1456 -always \u4A14 1456 +always \u4A0B 1345-236-5 +always \u4A0C 135-146-2 +always \u4A0D 13456-4 +always \u4A0E 1235-12346-2 +always \u4A0F 245-156-2 +always \u4A10 245-23456-5 +always \u4A11 124-16-2 +always \u4A12 1256-5 +always \u4A13 14-356-2 +always \u4A14 135-146-2 always \u4A15 1456 -always \u4A16 1456 -always \u4A17 1456 -always \u4A18 1456 -always \u4A19 1456 +always \u4A16 13-16-5 +always \u4A17 12345-34-2 +always \u4A18 15-2345-5 +always \u4A19 245-136-2 always \u4A1A 1456 -always \u4A1B 1456 +always \u4A1B 15-2346-5 always \u4A1C 1456 always \u4A1D 1456 -always \u4A1E 1456 +always \u4A1E 1256-4 always \u4A1F 1456 -always \u4A20 1456 -always \u4A21 1456 -always \u4A22 1456 -always \u4A23 1456 -always \u4A24 1456 -always \u4A25 1456 -always \u4A26 1456 +always \u4A20 2456-4 +always \u4A21 1235-1236-2 +always \u4A22 145-1236-5 +always \u4A23 13-2346-2 +always \u4A24 145-16-2 +always \u4A25 1235-34-5 +always \u4A26 1234-1346-2 always \u4A27 1456 always \u4A28 1456 -always \u4A29 1456 -always \u4A2A 1456 -always \u4A2B 1456 -always \u4A2C 1456 +always \u4A29 14-13456-2 +always \u4A2A 134-2456-2 +always \u4A2B 134-2456-5 +always \u4A2C 14-2345-2 always \u4A2D 1456 -always \u4A2E 1456 -always \u4A2F 1456 -always \u4A30 1456 -always \u4A31 1456 -always \u4A32 1456 -always \u4A33 1456 -always \u4A34 1456 -always \u4A35 1456 -always \u4A36 1456 -always \u4A37 1456 -always \u4A38 1456 +always \u4A2E 15-236-4 +always \u4A2F 1-136-5 +always \u4A30 1234-126-5 +always \u4A31 12345-34-5 +always \u4A32 1345-12356-2 +always \u4A33 15-16-5 +always \u4A34 145-1246-5 +always \u4A35 145-1236-5 +always \u4A36 256-4 +always \u4A37 15-2345-5 +always \u4A38 1456-4 always \u4A39 1456 -always \u4A3A 1456 -always \u4A3B 1456 -always \u4A3C 1456 -always \u4A3D 1456 -always \u4A3E 1456 -always \u4A3F 1456 -always \u4A40 1456 +always \u4A3A 145-1246-5 +always \u4A3B 135-1356-5 +always \u4A3C 1235-34-5 +always \u4A3D 12345-356-4 +always \u4A3E 12345-356-4 +always \u4A3F 245-2345-2 +always \u4A40 135-356-5 always \u4A41 1456 always \u4A42 1456 -always \u4A43 1456 -always \u4A44 1456 -always \u4A45 1456 -always \u4A46 1456 +always \u4A43 24-156-5 +always \u4A44 124-2345-4 +always \u4A45 1-1236-4 +always \u4A46 13-2345-4 always \u4A47 1456 -always \u4A48 1456 -always \u4A49 1456 -always \u4A4A 1456 -always \u4A4B 1456 -always \u4A4C 1456 -always \u4A4D 1456 +always \u4A48 1235-1246-5 +always \u4A49 12345-34-4 +always \u4A4A 12456-4 +always \u4A4B 134-126-4 +always \u4A4C 245-246-2 +always \u4A4D 14-246-4 always \u4A4E 1456 -always \u4A4F 1456 -always \u4A50 1456 -always \u4A51 1456 -always \u4A52 1456 -always \u4A53 1456 -always \u4A54 1456 -always \u4A55 1456 +always \u4A4F 134-346-5 +always \u4A50 13-2346-2 +always \u4A51 1235-12346-2 +always \u4A52 1256-2 +always \u4A53 245-16-2 +always \u4A54 145-25-5 +always \u4A55 1346-2 always \u4A56 1456 -always \u4A57 1456 -always \u4A58 1456 -always \u4A59 1456 -always \u4A5A 1456 -always \u4A5B 1456 -always \u4A5C 1456 -always \u4A5D 1456 -always \u4A5E 1456 -always \u4A5F 1456 +always \u4A57 135-345-5 +always \u4A58 145-16-5 +always \u4A59 15-45-5 +always \u4A5A 145-16-5 +always \u4A5B 135-16-5 +always \u4A5C 1-12356-5 +always \u4A5D 1234-146-2 +always \u4A5E 1345-2345-2 +always \u4A5F 16-2 always \u4A60 1456 -always \u4A61 1456 -always \u4A62 1456 -always \u4A63 1456 -always \u4A64 1456 -always \u4A65 1456 -always \u4A66 1456 -always \u4A67 1456 -always \u4A68 1456 -always \u4A69 1456 -always \u4A6A 1456 -always \u4A6B 1456 -always \u4A6C 1456 +always \u4A61 13-23456-2 +always \u4A62 145-345-2 +always \u4A63 145-25-4 +always \u4A64 15-16-5 +always \u4A65 145-1236-5 +always \u4A66 124-246-2 +always \u4A67 15-346-5 +always \u4A68 12-1346-5 +always \u4A69 45-4 +always \u4A6A 13-12456-4 +always \u4A6B 14-46-4 +always \u4A6C 135-1356-4 always \u4A6D 1456 -always \u4A6E 1456 -always \u4A6F 1456 -always \u4A70 1456 -always \u4A71 1456 +always \u4A6E 14-34-5 +always \u4A6F 13-16-2 +always \u4A70 15-45-5 +always \u4A71 24-34-5 always \u4A72 1456 -always \u4A73 1456 -always \u4A74 1456 -always \u4A75 1456 -always \u4A76 1456 +always \u4A73 24-34-4 +always \u4A74 1235-34-2 +always \u4A75 256-5 +always \u4A76 12-1236-4 always \u4A77 1456 -always \u4A78 1456 -always \u4A79 1456 +always \u4A78 1245-12346-2 +always \u4A79 2346-2 always \u4A7A 1456 -always \u4A7B 1456 -always \u4A7C 1456 +always \u4A7B 135-345-5 +always \u4A7C 12345-1356-2 always \u4A7D 1456 -always \u4A7E 1456 -always \u4A7F 1456 -always \u4A80 1456 -always \u4A81 1456 -always \u4A82 1456 +always \u4A7E 1-2346-5 +always \u4A7F 12345-136-2 +always \u4A80 13-12456-4 +always \u4A81 135-34-4 +always \u4A82 13-2346-2 always \u4A83 1456 -always \u4A84 1456 -always \u4A85 1456 -always \u4A86 1456 -always \u4A87 1456 -always \u4A88 1456 -always \u4A89 1456 -always \u4A8A 1456 -always \u4A8B 1456 -always \u4A8C 1456 -always \u4A8D 1456 +always \u4A84 1235-456-2 +always \u4A85 145-34-2 +always \u4A86 124-16-4 +always \u4A87 135-126-2 +always \u4A88 245-2345-4 +always \u4A89 14-345-5 +always \u4A8A 14-12346-2 +always \u4A8B 1246-5 +always \u4A8C 1-1236-5 +always \u4A8D 14-1236-2 always \u4A8E 1456 -always \u4A8F 1456 -always \u4A90 1456 -always \u4A91 1456 -always \u4A92 1456 +always \u4A8F 1345-345-5 +always \u4A90 135-16-5 +always \u4A91 124-25-2 +always \u4A92 13-246-5 always \u4A93 1456 -always \u4A94 1456 -always \u4A95 1456 -always \u4A96 1456 -always \u4A97 1456 -always \u4A98 1456 -always \u4A99 1456 -always \u4A9A 1456 -always \u4A9B 1456 -always \u4A9C 1456 -always \u4A9D 1456 -always \u4A9E 1456 +always \u4A94 135-34-4 +always \u4A95 13-1256-2 +always \u4A96 1234-126-5 +always \u4A97 15-23456-2 +always \u4A98 1246-4 +always \u4A99 12345-34-2 +always \u4A9A 1235-2346-5 +always \u4A9B 12345-1236-2 +always \u4A9C 12-1236-5 +always \u4A9D 1235-34-5 +always \u4A9E 125-345-2 always \u4A9F 1456 always \u4AA0 1456 always \u4AA1 1456 always \u4AA2 1456 always \u4AA3 1456 -always \u4AA4 1456 -always \u4AA5 1456 -always \u4AA6 1456 -always \u4AA7 1456 -always \u4AA8 1456 -always \u4AA9 1456 +always \u4AA4 12345-1236-2 +always \u4AA5 145-346-2 +always \u4AA6 1235-12346-2 +always \u4AA7 12-156-2 +always \u4AA8 135-146-2 +always \u4AA9 1456-2 always \u4AAA 1456 always \u4AAB 1456 -always \u4AAC 1456 -always \u4AAD 1456 -always \u4AAE 1456 -always \u4AAF 1456 +always \u4AAC 135-126-2 +always \u4AAD 1245-12456-4 +always \u4AAE 12-12356-4 +always \u4AAF 13456-2 always \u4AB0 1456 -always \u4AB1 1456 +always \u4AB1 13-2456-4 always \u4AB2 1456 -always \u4AB3 1456 -always \u4AB4 1456 -always \u4AB5 1456 +always \u4AB3 256-4 +always \u4AB4 1-136-4 +always \u4AB5 23456-4 always \u4AB6 1456 -always \u4AB7 1456 -always \u4AB8 1456 -always \u4AB9 1456 -always \u4ABA 1456 -always \u4ABB 1456 +always \u4AB7 1235-12356-5 +always \u4AB8 134-1456-2 +always \u4AB9 1234-356-2 +always \u4ABA 13-2346-2 +always \u4ABB 135-2345-5 always \u4ABC 1456 -always \u4ABD 1456 -always \u4ABE 1456 -always \u4ABF 1456 -always \u4AC0 1456 -always \u4AC1 1456 -always \u4AC2 1456 -always \u4AC3 1456 -always \u4AC4 1456 -always \u4AC5 1456 -always \u4AC6 1456 -always \u4AC7 1456 -always \u4AC8 1456 -always \u4AC9 1456 -always \u4ACA 1456 -always \u4ACB 1456 -always \u4ACC 1456 -always \u4ACD 1456 +always \u4ABD 1235-146-5 +always \u4ABE 134-16-2 +always \u4ABF 24-1356-4 +always \u4AC0 13-136-4 +always \u4AC1 135-16-5 +always \u4AC2 145-25-4 +always \u4AC3 12-123456-2 +always \u4AC4 12-35-5 +always \u4AC5 15-1236-5 +always \u4AC6 12-1356-2 +always \u4AC7 1245-1236-2 +always \u4AC8 125-136-5 +always \u4AC9 134-146-5 +always \u4ACA 135-126-2 +always \u4ACB 124-1246-2 +always \u4ACC 1234-16-4 +always \u4ACD 12345-34-4 always \u4ACE 1456 always \u4ACF 1456 -always \u4AD0 1456 +always \u4AD0 14-1456-2 always \u4AD1 1456 -always \u4AD2 1456 -always \u4AD3 1456 -always \u4AD4 1456 -always \u4AD5 1456 -always \u4AD6 1456 -always \u4AD7 1456 -always \u4AD8 1456 -always \u4AD9 1456 +always \u4AD2 134-136-2 +always \u4AD3 34-2 +always \u4AD4 245-16-5 +always \u4AD5 1-156-5 +always \u4AD6 12-136-4 +always \u4AD7 15-23456-2 +always \u4AD8 1235-2346-2 +always \u4AD9 15-1346-4 always \u4ADA 1456 -always \u4ADB 1456 +always \u4ADB 1235-12356-2 always \u4ADC 1456 -always \u4ADD 1456 -always \u4ADE 1456 -always \u4ADF 1456 -always \u4AE0 1456 -always \u4AE1 1456 +always \u4ADD 12345-34-4 +always \u4ADE 1245-146-2 +always \u4ADF 1235-123456-2 +always \u4AE0 1234-356-2 +always \u4AE1 245-2345-5 always \u4AE2 1456 -always \u4AE3 1456 -always \u4AE4 1456 -always \u4AE5 1456 -always \u4AE6 1456 +always \u4AE3 15-16-2 +always \u4AE4 134-13456-2 +always \u4AE5 123-1246-4 +always \u4AE6 13-2346-2 always \u4AE7 1456 -always \u4AE8 1456 -always \u4AE9 1456 -always \u4AEA 1456 -always \u4AEB 1456 -always \u4AEC 1456 -always \u4AED 1456 -always \u4AEE 1456 +always \u4AE8 146-5 +always \u4AE9 15-1236-4 +always \u4AEA 24-456-4 +always \u4AEB 14-12356-2 +always \u4AEC 1-136-4 +always \u4AED 1235-1246-5 +always \u4AEE 245-1236-2 always \u4AEF 1456 -always \u4AF0 1456 -always \u4AF1 1456 -always \u4AF2 1456 -always \u4AF3 1456 -always \u4AF4 1456 -always \u4AF5 1456 -always \u4AF6 1456 -always \u4AF7 1456 -always \u4AF8 1456 -always \u4AF9 1456 -always \u4AFA 1456 -always \u4AFB 1456 -always \u4AFC 1456 +always \u4AF0 14-1456-5 +always \u4AF1 1345-345-2 +always \u4AF2 1235-1236-5 +always \u4AF3 145-34-2 +always \u4AF4 13-1456-5 +always \u4AF5 134-2345-2 +always \u4AF6 12345-1236-2 +always \u4AF7 2346-5 +always \u4AF8 1345-146-2 +always \u4AF9 1235-12346-2 +always \u4AFA 1235-12346-2 +always \u4AFB 15-236-2 +always \u4AFC 15-236-5 always \u4AFD 1456 -always \u4AFE 1456 +always \u4AFE 135-16-5 always \u4AFF 1456 -always \u4B00 1456 -always \u4B01 1456 -always \u4B02 1456 -always \u4B03 1456 -always \u4B04 1456 -always \u4B05 1456 -always \u4B06 1456 -always \u4B07 1456 -always \u4B08 1456 -always \u4B09 1456 -always \u4B0A 1456 -always \u4B0B 1456 +always \u4B00 234-4 +always \u4B01 16-2 +always \u4B02 15-236-5 +always \u4B03 15-345-5 +always \u4B04 1256-5 +always \u4B05 14-16-5 +always \u4B06 14-16-5 +always \u4B07 45-5 +always \u4B08 145-1246-5 +always \u4B09 1235-146-5 +always \u4B0A 245-346-5 +always \u4B0B 14-1356-2 always \u4B0C 1456 always \u4B0D 1456 -always \u4B0E 1456 -always \u4B0F 1456 -always \u4B10 1456 -always \u4B11 1456 +always \u4B0E 13-25-2 +always \u4B0F 135-34-5 +always \u4B10 1246-4 +always \u4B11 1246-5 always \u4B12 1456 -always \u4B13 1456 -always \u4B14 1456 -always \u4B15 1456 -always \u4B16 1456 -always \u4B17 1456 +always \u4B13 1236-5 +always \u4B14 15-1256-5 +always \u4B15 24-1346-4 +always \u4B16 1235-1356-2 +always \u4B17 46-2 always \u4B18 1456 -always \u4B19 1456 +always \u4B19 246-2 always \u4B1A 1456 -always \u4B1B 1456 +always \u4B1B 135-16-5 always \u4B1C 1456 -always \u4B1D 1456 -always \u4B1E 1456 -always \u4B1F 1456 +always \u4B1D 1235-1356-2 +always \u4B1E 124-146-2 +always \u4B1F 14-234-2 always \u4B20 1456 -always \u4B21 1456 +always \u4B21 1-34-5 always \u4B22 1456 -always \u4B23 1456 -always \u4B24 1456 -always \u4B25 1456 -always \u4B26 1456 -always \u4B27 1456 -always \u4B28 1456 +always \u4B23 245-16-5 +always \u4B24 12-146-2 +always \u4B25 16-5 +always \u4B26 145-12356-5 +always \u4B27 45-2 +always \u4B28 245-34-5 always \u4B29 1456 -always \u4B2A 1456 -always \u4B2B 1456 -always \u4B2C 1456 +always \u4B2A 135-126-2 +always \u4B2B 245-1236-4 +always \u4B2C 46-4 always \u4B2D 1456 -always \u4B2E 1456 -always \u4B2F 1456 -always \u4B30 1456 -always \u4B31 1456 +always \u4B2E 16-2 +always \u4B2F 1345-2345-2 +always \u4B30 24-146-5 +always \u4B31 135-136-5 always \u4B32 1456 -always \u4B33 1456 -always \u4B34 1456 -always \u4B35 1456 -always \u4B36 1456 -always \u4B37 1456 +always \u4B33 135-1236-4 +always \u4B34 134-126-5 +always \u4B35 2456-5 +always \u4B36 136-5 +always \u4B37 24-2346-4 always \u4B38 1456 -always \u4B39 1456 -always \u4B3A 1456 -always \u4B3B 1456 -always \u4B3C 1456 -always \u4B3D 1456 -always \u4B3E 1456 -always \u4B3F 1456 -always \u4B40 1456 -always \u4B41 1456 -always \u4B42 1456 -always \u4B43 1456 -always \u4B44 1456 -always \u4B45 1456 -always \u4B46 1456 -always \u4B47 1456 -always \u4B48 1456 -always \u4B49 1456 -always \u4B4A 1456 -always \u4B4B 1456 -always \u4B4C 1456 -always \u4B4D 1456 -always \u4B4E 1456 +always \u4B39 1-156-5 +always \u4B3A 46-5 +always \u4B3B 13-2345-5 +always \u4B3C 45-5 +always \u4B3D 145-1246-5 +always \u4B3E 124-16-2 +always \u4B3F 1246-4 +always \u4B40 15-256-5 +always \u4B41 1-156-5 +always \u4B42 16-5 +always \u4B43 1245-136-4 +always \u4B44 24-156-5 +always \u4B45 1235-34-2 +always \u4B46 1345-2346-5 +always \u4B47 16-5 +always \u4B48 13-2345-5 +always \u4B49 15-1246-4 +always \u4B4A 13456-4 +always \u4B4B 135-146-4 +always \u4B4C 1235-34-2 +always \u4B4D 1235-34-2 +always \u4B4E 15-346-2 always \u4B4F 1456 -always \u4B50 1456 -always \u4B51 1456 +always \u4B50 46-5 +always \u4B51 14-2345-2 always \u4B52 1456 -always \u4B53 1456 +always \u4B53 136-5 always \u4B54 1456 -always \u4B55 1456 -always \u4B56 1456 -always \u4B57 1456 -always \u4B58 1456 -always \u4B59 1456 -always \u4B5A 1456 -always \u4B5B 1456 +always \u4B55 13-2345-5 +always \u4B56 1-34-5 +always \u4B57 13456-4 +always \u4B58 2345-5 +always \u4B59 13-1456-4 +always \u4B5A 12-456-2 +always \u4B5B 145-1236-5 always \u4B5C 1456 -always \u4B5D 1456 -always \u4B5E 1456 -always \u4B5F 1456 -always \u4B60 1456 -always \u4B61 1456 -always \u4B62 1456 -always \u4B63 1456 -always \u4B64 1456 -always \u4B65 1456 -always \u4B66 1456 -always \u4B67 1456 -always \u4B68 1456 -always \u4B69 1456 -always \u4B6A 1456 -always \u4B6B 1456 -always \u4B6C 1456 -always \u4B6D 1456 -always \u4B6E 1456 -always \u4B6F 1456 -always \u4B70 1456 -always \u4B71 1456 -always \u4B72 1456 -always \u4B73 1456 -always \u4B74 1456 -always \u4B75 1456 -always \u4B76 1456 -always \u4B77 1456 -always \u4B78 1456 -always \u4B79 1456 -always \u4B7A 1456 +always \u4B5D 123-2356-5 +always \u4B5E 16-5 +always \u4B5F 346-5 +always \u4B60 13-2345-4 +always \u4B61 136-5 +always \u4B62 1345-13456-2 +always \u4B63 245-156-2 +always \u4B64 245-2345-4 +always \u4B65 15-236-5 +always \u4B66 135-126-2 +always \u4B67 134-16-4 +always \u4B68 24-1246-5 +always \u4B69 134-16-5 +always \u4B6A 14-46-2 +always \u4B6B 245-16-4 +always \u4B6C 245-16-4 +always \u4B6D 24-12356-4 +always \u4B6E 135-16-5 +always \u4B6F 135-126-2 +always \u4B70 135-1356-4 +always \u4B71 135-346-2 +always \u4B72 1345-16-4 +always \u4B73 1246-5 +always \u4B74 1235-12456-2 +always \u4B75 12345-1236-2 +always \u4B76 245-16-2 +always \u4B77 14-234-2 +always \u4B78 12345-34-5 +always \u4B79 1346-2 +always \u4B7A 1346-2 always \u4B7B 1456 -always \u4B7C 1456 -always \u4B7D 1456 -always \u4B7E 1456 -always \u4B7F 1456 -always \u4B80 1456 -always \u4B81 1456 -always \u4B82 1456 +always \u4B7C 245-16-2 +always \u4B7D 245-256-2 +always \u4B7E 124-25-2 +always \u4B7F 16-5 +always \u4B80 135-126-2 +always \u4B81 1234-2345-2 +always \u4B82 135-126-2 always \u4B83 1456 -always \u4B84 1456 +always \u4B84 15-45-2 always \u4B85 1456 always \u4B86 1456 -always \u4B87 1456 -always \u4B88 1456 -always \u4B89 1456 -always \u4B8A 1456 -always \u4B8B 1456 +always \u4B87 1256-5 +always \u4B88 12-156-2 +always \u4B89 14-34-2 +always \u4B8A 16-2 +always \u4B8B 14-16-5 always \u4B8C 1456 -always \u4B8D 1456 -always \u4B8E 1456 -always \u4B8F 1456 +always \u4B8D 1345-246-4 +always \u4B8E 15-16-5 +always \u4B8F 34-2 always \u4B90 1456 -always \u4B91 1456 +always \u4B91 14-356-5 always \u4B92 1456 -always \u4B93 1456 -always \u4B94 1456 -always \u4B95 1456 +always \u4B93 1-146-5 +always \u4B94 125-1246-4 +always \u4B95 12-25-5 always \u4B96 1456 -always \u4B97 1456 -always \u4B98 1456 -always \u4B99 1456 -always \u4B9A 1456 -always \u4B9B 1456 -always \u4B9C 1456 -always \u4B9D 1456 -always \u4B9E 1456 -always \u4B9F 1456 +always \u4B97 1236-5 +always \u4B98 156-2 +always \u4B99 1256-5 +always \u4B9A 14-1356-5 +always \u4B9B 12345-34-5 +always \u4B9C 24-345-5 +always \u4B9D 1235-12456-2 +always \u4B9E 12-34-5 +always \u4B9F 15-12356-4 always \u4BA0 1456 -always \u4BA1 1456 -always \u4BA2 1456 +always \u4BA1 135-16-5 +always \u4BA2 145-346-2 always \u4BA3 1456 -always \u4BA4 1456 -always \u4BA5 1456 +always \u4BA4 145-16-2 +always \u4BA5 14-16-5 always \u4BA6 1456 -always \u4BA7 1456 -always \u4BA8 1456 -always \u4BA9 1456 -always \u4BAA 1456 -always \u4BAB 1456 -always \u4BAC 1456 -always \u4BAD 1456 -always \u4BAE 1456 -always \u4BAF 1456 -always \u4BB0 1456 -always \u4BB1 1456 -always \u4BB2 1456 -always \u4BB3 1456 -always \u4BB4 1456 -always \u4BB5 1456 +always \u4BA7 1235-1236-2 +always \u4BA8 125-2456-4 +always \u4BA9 13-34-2 +always \u4BAA 12-1356-2 +always \u4BAB 14-12356-2 +always \u4BAC 134-126-5 +always \u4BAD 134-16-5 +always \u4BAE 134-2456-5 +always \u4BAF 146-5 +always \u4BB0 145-1236-4 +always \u4BB1 1-34-2 +always \u4BB2 1235-456-2 +always \u4BB3 12345-1236-2 +always \u4BB4 145-1356-5 +always \u4BB5 124-12346-2 always \u4BB6 1456 -always \u4BB7 1456 -always \u4BB8 1456 -always \u4BB9 1456 -always \u4BBA 1456 -always \u4BBB 1456 -always \u4BBC 1456 +always \u4BB7 145-34-2 +always \u4BB8 1235-34-2 +always \u4BB9 1246-5 +always \u4BBA 13-16-5 +always \u4BBB 12-156-5 +always \u4BBC 14-1456-2 always \u4BBD 1456 -always \u4BBE 1456 -always \u4BBF 1456 -always \u4BC0 1456 -always \u4BC1 1456 -always \u4BC2 1456 +always \u4BBE 1234-1346-2 +always \u4BBF 13-2345-4 +always \u4BC0 1345-346-5 +always \u4BC1 14-25-2 +always \u4BC2 13-16-2 always \u4BC3 1456 always \u4BC4 1456 -always \u4BC5 1456 -always \u4BC6 1456 +always \u4BC5 1345-346-5 +always \u4BC6 16-5 always \u4BC7 1456 -always \u4BC8 1456 -always \u4BC9 1456 -always \u4BCA 1456 -always \u4BCB 1456 +always \u4BC8 12456-2 +always \u4BC9 23456-5 +always \u4BCA 245-23456-5 +always \u4BCB 135-126-2 always \u4BCC 1456 -always \u4BCD 1456 -always \u4BCE 1456 -always \u4BCF 1456 -always \u4BD0 1456 +always \u4BCD 14-13456-2 +always \u4BCE 13-1236-5 +always \u4BCF 1235-25-2 +always \u4BD0 1235-2456-2 always \u4BD1 1456 -always \u4BD2 1456 -always \u4BD3 1456 -always \u4BD4 1456 +always \u4BD2 1235-1356-2 +always \u4BD3 123-1246-2 +always \u4BD4 245-136-2 always \u4BD5 1456 -always \u4BD6 1456 -always \u4BD7 1456 -always \u4BD8 1456 -always \u4BD9 1456 -always \u4BDA 1456 -always \u4BDB 1456 -always \u4BDC 1456 -always \u4BDD 1456 +always \u4BD6 14-1346-2 +always \u4BD7 135-16-5 +always \u4BD8 1235-12456-5 +always \u4BD9 1234-126-5 +always \u4BDA 12356-4 +always \u4BDB 13-2345-4 +always \u4BDC 124-16-5 +always \u4BDD 15-1246-4 always \u4BDE 1456 -always \u4BDF 1456 -always \u4BE0 1456 -always \u4BE1 1456 -always \u4BE2 1456 -always \u4BE3 1456 -always \u4BE4 1456 -always \u4BE5 1456 -always \u4BE6 1456 -always \u4BE7 1456 -always \u4BE8 1456 +always \u4BDF 145-1246-5 +always \u4BE0 146-4 +always \u4BE1 13-2345-4 +always \u4BE2 134-126-2 +always \u4BE3 13-1246-5 +always \u4BE4 123-2356-5 +always \u4BE5 1236-5 +always \u4BE6 134-345-5 +always \u4BE7 245-13456-4 +always \u4BE8 12345-136-2 always \u4BE9 1456 -always \u4BEA 1456 -always \u4BEB 1456 -always \u4BEC 1456 +always \u4BEA 123-146-4 +always \u4BEB 1235-146-5 +always \u4BEC 145-25-4 always \u4BED 1456 -always \u4BEE 1456 +always \u4BEE 1345-2456-2 always \u4BEF 1456 -always \u4BF0 1456 -always \u4BF1 1456 -always \u4BF2 1456 +always \u4BF0 13-346-5 +always \u4BF1 12345-34-5 +always \u4BF2 1234-345-2 always \u4BF3 1456 -always \u4BF4 1456 -always \u4BF5 1456 -always \u4BF6 1456 +always \u4BF4 12-1346-2 +always \u4BF5 1345-346-5 +always \u4BF6 134-1236-2 always \u4BF7 1456 -always \u4BF8 1456 +always \u4BF8 245-156-5 always \u4BF9 1456 -always \u4BFA 1456 +always \u4BFA 123-25-5 always \u4BFB 1456 -always \u4BFC 1456 -always \u4BFD 1456 -always \u4BFE 1456 -always \u4BFF 1456 -always \u4C00 1456 -always \u4C01 1456 -always \u4C02 1456 -always \u4C03 1456 -always \u4C04 1456 +always \u4BFC 145-16-2 +always \u4BFD 12345-34-4 +always \u4BFE 124-246-2 +always \u4BFF 125-34-2 +always \u4C00 25-4 +always \u4C01 12345-356-5 +always \u4C02 245-2456-5 +always \u4C03 1234-1356-2 +always \u4C04 24-156-5 always \u4C05 1456 -always \u4C06 1456 -always \u4C07 1456 -always \u4C08 1456 -always \u4C09 1456 -always \u4C0A 1456 -always \u4C0B 1456 -always \u4C0C 1456 -always \u4C0D 1456 -always \u4C0E 1456 -always \u4C0F 1456 -always \u4C10 1456 +always \u4C06 1245-12356-2 +always \u4C07 245-16-2 +always \u4C08 12-345-4 +always \u4C09 1234-1236-2 +always \u4C0A 135-126-2 +always \u4C0B 134-1236-2 +always \u4C0C 125-12346-4 +always \u4C0D 245-156-5 +always \u4C0E 13-1246-5 +always \u4C0F 13-16-5 +always \u4C10 14-1236-2 always \u4C11 1456 -always \u4C12 1456 -always \u4C13 1456 -always \u4C14 1456 -always \u4C15 1456 -always \u4C16 1456 +always \u4C12 134-1356-2 +always \u4C13 134-2345-2 +always \u4C14 1234-1236-2 +always \u4C15 14-34-2 +always \u4C16 245-12456-2 always \u4C17 1456 -always \u4C18 1456 -always \u4C19 1456 -always \u4C1A 1456 -always \u4C1B 1456 -always \u4C1C 1456 -always \u4C1D 1456 -always \u4C1E 1456 -always \u4C1F 1456 -always \u4C20 1456 -always \u4C21 1456 -always \u4C22 1456 -always \u4C23 1456 +always \u4C18 14-234-2 +always \u4C19 16-4 +always \u4C1A 123456-2 +always \u4C1B 14-16-5 +always \u4C1C 14-16-5 +always \u4C1D 125-1356-5 +always \u4C1E 1-34-4 +always \u4C1F 1235-123456-2 +always \u4C20 24-136-2 +always \u4C21 12-156-5 +always \u4C22 15-13456-5 +always \u4C23 456-4 always \u4C24 1456 -always \u4C25 1456 -always \u4C26 1456 +always \u4C25 1235-25-5 +always \u4C26 1234-16-4 always \u4C27 1456 -always \u4C28 1456 -always \u4C29 1456 -always \u4C2A 1456 -always \u4C2B 1456 -always \u4C2C 1456 -always \u4C2D 1456 +always \u4C28 134-356-5 +always \u4C29 12-2346-4 +always \u4C2A 134-356-5 +always \u4C2B 12-146-2 +always \u4C2C 13-1256-2 +always \u4C2D 1345-12356-5 always \u4C2E 1456 -always \u4C2F 1456 -always \u4C30 1456 -always \u4C31 1456 -always \u4C32 1456 +always \u4C2F 1345-16-4 +always \u4C30 1245-34-2 +always \u4C31 14-13456-2 +always \u4C32 23456-5 always \u4C33 1456 -always \u4C34 1456 +always \u4C34 245-16-5 always \u4C35 1456 always \u4C36 1456 -always \u4C37 1456 +always \u4C37 135-1346-5 always \u4C38 1456 -always \u4C39 1456 -always \u4C3A 1456 -always \u4C3B 1456 -always \u4C3C 1456 -always \u4C3D 1456 -always \u4C3E 1456 -always \u4C3F 1456 +always \u4C39 125-2346-2 +always \u4C3A 13-346-5 +always \u4C3B 1256-2 +always \u4C3C 15-1456-2 +always \u4C3D 135-356-5 +always \u4C3E 135-345-5 +always \u4C3F 124-25-2 always \u4C40 1456 -always \u4C41 1456 -always \u4C42 1456 -always \u4C43 1456 -always \u4C44 1456 -always \u4C45 1456 -always \u4C46 1456 -always \u4C47 1456 -always \u4C48 1456 -always \u4C49 1456 -always \u4C4A 1456 -always \u4C4B 1456 -always \u4C4C 1456 -always \u4C4D 1456 -always \u4C4E 1456 -always \u4C4F 1456 +always \u4C41 245-246-2 +always \u4C42 234-4 +always \u4C43 145-16-4 +always \u4C44 13-346-5 +always \u4C45 134-126-5 +always \u4C46 24-1356-2 +always \u4C47 24-1236-5 +always \u4C48 245-16-2 +always \u4C49 24-1236-5 +always \u4C4A 134-16-4 +always \u4C4B 145-1236-4 +always \u4C4C 16-2 +always \u4C4D 13-1356-5 +always \u4C4E 13-1356-5 +always \u4C4F 124-12356-4 always \u4C50 1456 -always \u4C51 1456 -always \u4C52 1456 -always \u4C53 1456 -always \u4C54 1456 -always \u4C55 1456 -always \u4C56 1456 +always \u4C51 15-236-2 +always \u4C52 16-5 +always \u4C53 124-13456-2 +always \u4C54 124-246-2 +always \u4C55 134-12356-2 +always \u4C56 14-234-2 always \u4C57 1456 -always \u4C58 1456 +always \u4C58 14-16-2 always \u4C59 1456 -always \u4C5A 1456 -always \u4C5B 1456 -always \u4C5C 1456 -always \u4C5D 1456 -always \u4C5E 1456 -always \u4C5F 1456 -always \u4C60 1456 -always \u4C61 1456 +always \u4C5A 14-34-5 +always \u4C5B 15-1256-5 +always \u4C5C 245-25-5 +always \u4C5D 135-345-5 +always \u4C5E 14-234-2 +always \u4C5F 13-1256-5 +always \u4C60 1-1236-5 +always \u4C61 13-1256-2 always \u4C62 1456 -always \u4C63 1456 -always \u4C64 1456 -always \u4C65 1456 +always \u4C63 125-34-2 +always \u4C64 15-2345-5 +always \u4C65 1-156-2 always \u4C66 1456 always \u4C67 1456 -always \u4C68 1456 +always \u4C68 1-156-5 always \u4C69 1456 always \u4C6A 1456 -always \u4C6B 1456 +always \u4C6B 14-345-5 always \u4C6C 1456 -always \u4C6D 1456 -always \u4C6E 1456 -always \u4C6F 1456 -always \u4C70 1456 -always \u4C71 1456 -always \u4C72 1456 +always \u4C6D 13-1356-5 +always \u4C6E 2346-2 +always \u4C6F 134-34-2 +always \u4C70 1-12346-5 +always \u4C71 145-16-5 +always \u4C72 2345-2 always \u4C73 1456 -always \u4C74 1456 +always \u4C74 13-1356-5 always \u4C75 1456 -always \u4C76 1456 -always \u4C77 1456 +always \u4C76 14-1346-2 +always \u4C77 1256-2 always \u4C78 1456 -always \u4C79 1456 -always \u4C7A 1456 -always \u4C7B 1456 -always \u4C7C 1456 +always \u4C79 1345-345-5 +always \u4C7A 1235-2456-2 +always \u4C7B 1235-35-2 +always \u4C7C 1-1236-4 always \u4C7D 1456 -always \u4C7E 1456 -always \u4C7F 1456 -always \u4C80 1456 -always \u4C81 1456 -always \u4C82 1456 -always \u4C83 1456 -always \u4C84 1456 +always \u4C7E 14-12356-2 +always \u4C7F 12-1236-5 +always \u4C80 145-346-2 +always \u4C81 1246-5 +always \u4C82 15-45-2 +always \u4C83 125-146-4 +always \u4C84 134-1456-2 always \u4C85 1456 always \u4C86 1456 always \u4C87 1456 always \u4C88 1456 always \u4C89 1456 -always \u4C8A 1456 -always \u4C8B 1456 -always \u4C8C 1456 -always \u4C8D 1456 -always \u4C8E 1456 -always \u4C8F 1456 -always \u4C90 1456 -always \u4C91 1456 -always \u4C92 1456 -always \u4C93 1456 -always \u4C94 1456 -always \u4C95 1456 -always \u4C96 1456 -always \u4C97 1456 -always \u4C98 1456 -always \u4C99 1456 -always \u4C9A 1456 -always \u4C9B 1456 -always \u4C9C 1456 +always \u4C8A 124-25-4 +always \u4C8B 245-136-2 +always \u4C8C 123-12456-4 +always \u4C8D 124-1356-2 +always \u4C8E 1345-356-4 +always \u4C8F 14-146-2 +always \u4C90 14-34-4 +always \u4C91 16-2 +always \u4C92 15-346-5 +always \u4C93 2345-4 +always \u4C94 245-13456-2 +always \u4C95 1234-34-4 +always \u4C96 12-12356-2 +always \u4C97 15-2345-2 +always \u4C98 13-12456-4 +always \u4C99 13-346-2 +always \u4C9A 14-2456-5 +always \u4C9B 134-1356-2 +always \u4C9C 346-5 always \u4C9D 1456 -always \u4C9E 1456 -always \u4C9F 1456 +always \u4C9E 14-16-5 +always \u4C9F 1456-5 always \u4CA0 1456 always \u4CA1 1456 -always \u4CA2 1456 -always \u4CA3 1456 +always \u4CA2 124-1356-2 +always \u4CA3 1256-2 always \u4CA4 1456 always \u4CA5 1456 -always \u4CA6 1456 -always \u4CA7 1456 -always \u4CA8 1456 +always \u4CA6 12-345-2 +always \u4CA7 145-34-5 +always \u4CA8 1235-12346-2 always \u4CA9 1456 -always \u4CAA 1456 +always \u4CAA 15-16-5 always \u4CAB 1456 -always \u4CAC 1456 +always \u4CAC 245-16-2 always \u4CAD 1456 -always \u4CAE 1456 -always \u4CAF 1456 -always \u4CB0 1456 -always \u4CB1 1456 +always \u4CAE 45-2 +always \u4CAF 13-16-2 +always \u4CB0 256-5 +always \u4CB1 12345-1346-4 always \u4CB2 1456 -always \u4CB3 1456 -always \u4CB4 1456 -always \u4CB5 1456 +always \u4CB3 1235-1346-2 +always \u4CB4 1-136-5 +always \u4CB5 1235-34-5 always \u4CB6 1456 always \u4CB7 1456 -always \u4CB8 1456 -always \u4CB9 1456 -always \u4CBA 1456 -always \u4CBB 1456 +always \u4CB8 13-346-5 +always \u4CB9 1234-356-2 +always \u4CBA 13-1236-5 +always \u4CBB 15-45-2 always \u4CBC 1456 -always \u4CBD 1456 -always \u4CBE 1456 -always \u4CBF 1456 -always \u4CC0 1456 -always \u4CC1 1456 -always \u4CC2 1456 -always \u4CC3 1456 -always \u4CC4 1456 -always \u4CC5 1456 -always \u4CC6 1456 -always \u4CC7 1456 -always \u4CC8 1456 -always \u4CC9 1456 -always \u4CCA 1456 -always \u4CCB 1456 +always \u4CBD 145-146-4 +always \u4CBE 245-246-4 +always \u4CBF 245-156-2 +always \u4CC0 145-346-2 +always \u4CC1 135-345-2 +always \u4CC2 124-246-2 +always \u4CC3 12456-4 +always \u4CC4 245-156-2 +always \u4CC5 1-156-4 +always \u4CC6 135-2456-2 +always \u4CC7 34-4 +always \u4CC8 135-146-4 +always \u4CC9 145-1236-5 +always \u4CCA 135-345-2 +always \u4CCB 124-12346-2 always \u4CCC 1456 always \u4CCD 1456 -always \u4CCE 1456 -always \u4CCF 1456 -always \u4CD0 1456 -always \u4CD1 1456 -always \u4CD2 1456 -always \u4CD3 1456 -always \u4CD4 1456 -always \u4CD5 1456 -always \u4CD6 1456 -always \u4CD7 1456 -always \u4CD8 1456 -always \u4CD9 1456 -always \u4CDA 1456 -always \u4CDB 1456 -always \u4CDC 1456 -always \u4CDD 1456 -always \u4CDE 1456 -always \u4CDF 1456 -always \u4CE0 1456 +always \u4CCE 13-234-5 +always \u4CCF 13-1246-5 +always \u4CD0 245-156-5 +always \u4CD1 234-4 +always \u4CD2 45-2 +always \u4CD3 14-146-4 +always \u4CD4 13-234-5 +always \u4CD5 12345-12356-2 +always \u4CD6 1345-356-5 +always \u4CD7 2346-2 +always \u4CD8 2346-2 +always \u4CD9 15-13456-4 +always \u4CDA 1235-2346-2 +always \u4CDB 2345-5 +always \u4CDC 124-34-2 +always \u4CDD 135-34-5 +always \u4CDE 135-1356-4 +always \u4CDF 123-12356-5 +always \u4CE0 12-1246-2 always \u4CE1 1456 -always \u4CE2 1456 -always \u4CE3 1456 +always \u4CE2 245-16-2 +always \u4CE3 45-2 always \u4CE4 1456 always \u4CE5 1456 always \u4CE6 1456 -always \u4CE7 1456 -always \u4CE8 1456 +always \u4CE7 1235-12356-2 +always \u4CE8 1235-456-2 always \u4CE9 1456 -always \u4CEA 1456 -always \u4CEB 1456 -always \u4CEC 1456 -always \u4CED 1456 -always \u4CEE 1456 -always \u4CEF 1456 -always \u4CF0 1456 -always \u4CF1 1456 -always \u4CF2 1456 -always \u4CF3 1456 -always \u4CF4 1456 -always \u4CF5 1456 +always \u4CEA 13-45-5 +always \u4CEB 123-1246-2 +always \u4CEC 2346-5 +always \u4CED 13-16-2 +always \u4CEE 134-126-5 +always \u4CEF 12-12346-2 +always \u4CF0 135-146-4 +always \u4CF1 34-5 +always \u4CF2 1-136-5 +always \u4CF3 15-1256-5 +always \u4CF4 145-345-2 +always \u4CF5 12-156-5 always \u4CF6 1456 -always \u4CF7 1456 -always \u4CF8 1456 -always \u4CF9 1456 -always \u4CFA 1456 -always \u4CFB 1456 +always \u4CF7 245-12346-2 +always \u4CF8 134-345-2 +always \u4CF9 123-12356-5 +always \u4CFA 2345-5 +always \u4CFB 245-1236-2 always \u4CFC 1456 -always \u4CFD 1456 +always \u4CFD 1235-2346-5 always \u4CFE 1456 -always \u4CFF 1456 -always \u4D00 1456 -always \u4D01 1456 -always \u4D02 1456 -always \u4D03 1456 -always \u4D04 1456 -always \u4D05 1456 -always \u4D06 1456 -always \u4D07 1456 -always \u4D08 1456 -always \u4D09 1456 -always \u4D0A 1456 -always \u4D0B 1456 -always \u4D0C 1456 +always \u4CFF 14-1236-2 +always \u4D00 124-12346-2 +always \u4D01 1256-5 +always \u4D02 1235-1346-5 +always \u4D03 1345-146-2 +always \u4D04 14-16-5 +always \u4D05 12345-136-2 +always \u4D06 1234-34-2 +always \u4D07 14-13456-2 +always \u4D08 146-4 +always \u4D09 15-45-2 +always \u4D0A 16-2 +always \u4D0B 15-45-2 +always \u4D0C 134-1356-2 always \u4D0D 1456 -always \u4D0E 1456 -always \u4D0F 1456 -always \u4D10 1456 -always \u4D11 1456 -always \u4D12 1456 -always \u4D13 1456 -always \u4D14 1456 -always \u4D15 1456 -always \u4D16 1456 -always \u4D17 1456 -always \u4D18 1456 -always \u4D19 1456 -always \u4D1A 1456 -always \u4D1B 1456 -always \u4D1C 1456 -always \u4D1D 1456 -always \u4D1E 1456 -always \u4D1F 1456 -always \u4D20 1456 -always \u4D21 1456 -always \u4D22 1456 +always \u4D0E 14-356-4 +always \u4D0F 2345-5 +always \u4D10 135-146-4 +always \u4D11 145-346-2 +always \u4D12 14-13456-2 +always \u4D13 24-156-3 +always \u4D14 13-246-3 +always \u4D15 14-346-5 +always \u4D16 13-13456-3 +always \u4D17 13-1256-2 +always \u4D18 124-16-3 +always \u4D19 1234-16-5 +always \u4D1A 13-1346-4 +always \u4D1B 13-246-4 +always \u4D1C 1235-2356-2 +always \u4D1D 135-34-5 +always \u4D1E 145-16-2 +always \u4D1F 1235-12456-2 +always \u4D20 246-4 +always \u4D21 14-16-5 +always \u4D22 134-16-2 always \u4D23 1456 always \u4D24 1456 always \u4D25 1456 -always \u4D26 1456 +always \u4D26 1245-136-2 always \u4D27 1456 always \u4D28 1456 -always \u4D29 1456 -always \u4D2A 1456 -always \u4D2B 1456 -always \u4D2C 1456 -always \u4D2D 1456 -always \u4D2E 1456 +always \u4D29 1234-246-2 +always \u4D2A 14-34-5 +always \u4D2B 14-13456-2 +always \u4D2C 16-5 +always \u4D2D 245-2456-2 +always \u4D2E 24-1236-5 always \u4D2F 1456 -always \u4D30 1456 -always \u4D31 1456 -always \u4D32 1456 -always \u4D33 1456 -always \u4D34 1456 -always \u4D35 1456 -always \u4D36 1456 -always \u4D37 1456 +always \u4D30 24-34-2 +always \u4D31 124-25-2 +always \u4D32 134-126-5 +always \u4D33 1235-2346-5 +always \u4D34 124-346-5 +always \u4D35 135-13456-4 +always \u4D36 1234-1356-2 +always \u4D37 1235-123456-2 always \u4D38 1456 -always \u4D39 1456 -always \u4D3A 1456 -always \u4D3B 1456 -always \u4D3C 1456 -always \u4D3D 1456 -always \u4D3E 1456 -always \u4D3F 1456 -always \u4D40 1456 -always \u4D41 1456 -always \u4D42 1456 -always \u4D43 1456 -always \u4D44 1456 -always \u4D45 1456 -always \u4D46 1456 -always \u4D47 1456 +always \u4D39 13-25-4 +always \u4D3A 135-34-5 +always \u4D3B 14-16-2 +always \u4D3C 12-1236-4 +always \u4D3D 135-2456-5 +always \u4D3E 245-25-2 +always \u4D3F 134-1356-2 +always \u4D40 15-25-4 +always \u4D41 245-46-5 +always \u4D42 1-156-2 +always \u4D43 123-456-5 +always \u4D44 135-16-2 +always \u4D45 146-2 +always \u4D46 134-1356-2 +always \u4D47 15-2345-5 always \u4D48 1456 -always \u4D49 1456 +always \u4D49 124-12356-2 always \u4D4A 1456 -always \u4D4B 1456 +always \u4D4B 1246-4 always \u4D4C 1456 always \u4D4D 1456 always \u4D4E 1456 -always \u4D4F 1456 -always \u4D50 1456 -always \u4D51 1456 -always \u4D52 1456 -always \u4D53 1456 -always \u4D54 1456 -always \u4D55 1456 -always \u4D56 1456 -always \u4D57 1456 -always \u4D58 1456 -always \u4D59 1456 -always \u4D5A 1456 -always \u4D5B 1456 -always \u4D5C 1456 -always \u4D5D 1456 -always \u4D5E 1456 -always \u4D5F 1456 -always \u4D60 1456 -always \u4D61 1456 -always \u4D62 1456 -always \u4D63 1456 -always \u4D64 1456 -always \u4D65 1456 -always \u4D66 1456 -always \u4D67 1456 -always \u4D68 1456 -always \u4D69 1456 -always \u4D6A 1456 -always \u4D6B 1456 -always \u4D6C 1456 -always \u4D6D 1456 -always \u4D6E 1456 -always \u4D6F 1456 +always \u4D4F 14-146-4 +always \u4D50 12-1236-4 +always \u4D51 1345-16-5 +always \u4D52 1345-16-5 +always \u4D53 14-16-2 +always \u4D54 145-12346-4 +always \u4D55 13-1256-5 +always \u4D56 13-2345-5 +always \u4D57 12345-34-2 +always \u4D58 24-345-5 +always \u4D59 1-345-4 +always \u4D5A 124-146-4 +always \u4D5B 13-2345-5 +always \u4D5C 1345-12346-4 +always \u4D5D 23456-5 +always \u4D5E 13-13456-5 +always \u4D5F 13-1236-4 +always \u4D60 145-16-2 +always \u4D61 13-2345-4 +always \u4D62 134-356-5 +always \u4D63 145-345-2 +always \u4D64 13-2345-4 +always \u4D65 24-2346-5 +always \u4D66 15-346-5 +always \u4D67 125-2456-5 +always \u4D68 134-1346-2 +always \u4D69 14-16-2 +always \u4D6A 13-123456-5 +always \u4D6B 1256-5 +always \u4D6C 124-345-5 +always \u4D6D 1-2346-5 +always \u4D6E 46-5 +always \u4D6F 124-12456-4 always \u4D70 1456 -always \u4D71 1456 -always \u4D72 1456 -always \u4D73 1456 -always \u4D74 1456 -always \u4D75 1456 -always \u4D76 1456 +always \u4D71 1235-2346-5 +always \u4D72 145-246-5 +always \u4D73 1246-5 +always \u4D74 256-5 +always \u4D75 1-345-2 +always \u4D76 245-1256-2 always \u4D77 1456 always \u4D78 1456 always \u4D79 1456 -always \u4D7A 1456 -always \u4D7B 1456 +always \u4D7A 124-13456-4 +always \u4D7B 13-34-4 always \u4D7C 1456 -always \u4D7D 1456 -always \u4D7E 1456 -always \u4D7F 1456 -always \u4D80 1456 -always \u4D81 1456 -always \u4D82 1456 -always \u4D83 1456 -always \u4D84 1456 -always \u4D85 1456 +always \u4D7D 245-345-5 +always \u4D7E 12345-34-2 +always \u4D7F 124-346-5 +always \u4D80 124-345-5 +always \u4D81 124-345-5 +always \u4D82 1-25-2 +always \u4D83 1235-1236-2 +always \u4D84 1234-13456-2 +always \u4D85 1235-2346-2 always \u4D86 1456 -always \u4D87 1456 -always \u4D88 1456 -always \u4D89 1456 -always \u4D8A 1456 +always \u4D87 1-12356-5 +always \u4D88 135-126-2 +always \u4D89 14-234-2 +always \u4D8A 1345-1256-5 always \u4D8B 1456 -always \u4D8C 1456 -always \u4D8D 1456 -always \u4D8E 1456 -always \u4D8F 1456 -always \u4D90 1456 -always \u4D91 1456 -always \u4D92 1456 -always \u4D93 1456 -always \u4D94 1456 -always \u4D95 1456 -always \u4D96 1456 -always \u4D97 1456 -always \u4D98 1456 -always \u4D99 1456 -always \u4D9A 1456 -always \u4D9B 1456 -always \u4D9C 1456 -always \u4D9D 1456 -always \u4D9E 1456 -always \u4D9F 1456 -always \u4DA0 1456 -always \u4DA1 1456 -always \u4DA2 1456 -always \u4DA3 1456 -always \u4DA4 1456 -always \u4DA5 1456 -always \u4DA6 1456 -always \u4DA7 1456 +always \u4D8C 1234-146-5 +always \u4D8D 145-16-5 +always \u4D8E 24-345-5 +always \u4D8F 124-16-4 +always \u4D90 123-2356-5 +always \u4D91 124-16-5 +always \u4D92 245-16-2 +always \u4D93 13-16-5 +always \u4D94 12-156-2 +always \u4D95 1234-345-2 +always \u4D96 13-1456-5 +always \u4D97 123-2346-5 +always \u4D98 14-16-5 +always \u4D99 13-1256-5 +always \u4D9A 245-1256-4 +always \u4D9B 14-345-5 +always \u4D9C 13-34-5 +always \u4D9D 245-23456-5 +always \u4D9E 245-16-2 +always \u4D9F 15-2345-5 +always \u4DA0 13-2345-4 +always \u4DA1 24-156-2 +always \u4DA2 15-2345-2 +always \u4DA3 2456-2 +always \u4DA4 1235-35-2 +always \u4DA5 13-1256-4 +always \u4DA6 125-2346-2 +always \u4DA7 246-4 always \u4DA8 1456 -always \u4DA9 1456 -always \u4DAA 1456 -always \u4DAB 1456 +always \u4DA9 13-16-5 +always \u4DAA 12-345-2 +always \u4DAB 123-1236-4 always \u4DAC 1456 always \u4DAD 1456 -always \u4DAE 1456 +always \u4DAE 2345-2 always \u4DAF 1456 always \u4DB0 1456 -always \u4DB1 1456 -always \u4DB2 1456 -always \u4DB3 1456 +always \u4DB1 124-12346-2 +always \u4DB2 1345-1236-2 +always \u4DB3 236-5 always \u4DB4 1456 -always \u4DB5 1456 +always \u4DB5 12-156-2 always \u4DB6 1456 always \u4DB7 1456 always \u4DB8 1456 @@ -19858,10 +19861,10 @@ always \u4DFE 1456 always \u4DFF 1456 always \u4E00 16-3 always \u4E01 145-13456-3 -always \u4E02 1456 +always \u4E02 123-146-4 always \u4E03 245-16-3 -always \u4E04 1456 -always \u4E05 1456 +always \u4E04 24-1346-5 +always \u4E05 15-23456-5 always \u4E06 1456 always \u4E07 12456-5 always \u4E08 1-1346-5 @@ -19874,12 +19877,12 @@ always \u4E0E 1256-4 always \u4E0F 134-2345-4 always \u4E10 13-2456-5 always \u4E11 12-12356-4 -always \u4E12 1456 +always \u4E12 12-12356-4 always \u4E13 1-12456-3 always \u4E14 245-346-4 always \u4E15 1234-16-3 always \u4E16 24-156-5 -always \u4E17 1456 +always \u4E17 24-156-5 always \u4E18 245-234-3 always \u4E19 135-13456-4 always \u4E1A 346-5 @@ -19888,28 +19891,28 @@ always \u4E1C 145-12346-3 always \u4E1D 15-156-3 always \u4E1E 12-1356-2 always \u4E1F 145-234-3 -always \u4E20 1456 -always \u4E21 1456 +always \u4E20 245-234-3 +always \u4E21 14-46-4 always \u4E22 145-234-3 -always \u4E23 1456 +always \u4E23 234-4 always \u4E24 14-46-4 always \u4E25 2345-2 always \u4E26 135-13456-5 always \u4E27 15-1346-5 -always \u4E28 1456 -always \u4E29 1456 +always \u4E28 13-123456-4 +always \u4E29 13-234-3 always \u4E2A 13-2346-5 always \u4E2B 23456-3 -always \u4E2C 1456 +always \u4E2C 245-46-2 always \u4E2D 1-12346-3 always \u4E2E 13-16-4 -always \u4E2F 1456 +always \u4E2F 13-346-5 always \u4E30 12345-1356-3 always \u4E31 13-12456-5 always \u4E32 12-12456-5 always \u4E33 12-1236-4 always \u4E34 14-1456-2 -always \u4E35 1456 +always \u4E35 1-25-4 always \u4E36 378-14567 always \u4E37 1456 always \u4E38 12456-2 @@ -19920,15 +19923,15 @@ always \u4E3C 13-13456-4 always \u4E3D 14-16-5 always \u4E3E 13-1256-4 always \u4E3F 1234-346-4 -always \u4E40 1456 -always \u4E41 1456 +always \u4E40 12345-34-2 +always \u4E41 16-2 always \u4E42 16-5 always \u4E43 1345-2456-4 always \u4E44 1456 always \u4E45 13-234-4 -always \u4E46 1456 +always \u4E46 13-234-4 always \u4E47 1-2346-2 -always \u4E48 134-2346-1 +always \u4E48 246-3 always \u4E49 16-5 always \u4E4A 1456 always \u4E4B 1-156-3 @@ -19937,13 +19940,13 @@ always \u4E4D 1-345-5 always \u4E4E 1235-34-3 always \u4E4F 12345-345-2 always \u4E50 14-2346-5 -always \u4E51 1456 +always \u4E51 1-12346-5 always \u4E52 1234-13456-3 always \u4E53 1234-1346-3 always \u4E54 245-246-2 -always \u4E55 1456 +always \u4E55 1235-34-4 always \u4E56 13-2356-3 -always \u4E57 1456 +always \u4E57 12-1356-2 always \u4E58 12-1356-2 always \u4E59 16-4 always \u4E5A 235678-246 @@ -19954,38 +19957,38 @@ always \u4E5E 245-16-4 always \u4E5F 346-4 always \u4E60 15-16-2 always \u4E61 15-46-3 -always \u4E62 1456 -always \u4E63 1456 +always \u4E62 13-2456-5 +always \u4E63 13-234-4 always \u4E64 1456 always \u4E65 1456 always \u4E66 24-34-3 always \u4E67 1456 -always \u4E68 1456 +always \u4E68 24-156-4 always \u4E69 13-16-3 -always \u4E6A 1456 -always \u4E6B 1456 +always \u4E6A 1345-1346-2 +always \u4E6B 13-23456-3 always \u4E6C 1456 -always \u4E6D 1456 +always \u4E6D 24-156-2 always \u4E6E 1456 always \u4E6F 1456 always \u4E70 134-2456-4 always \u4E71 14-12456-5 always \u4E72 1456 always \u4E73 1245-34-4 -always \u4E74 1456 -always \u4E75 1456 -always \u4E76 1456 -always \u4E77 1456 -always \u4E78 1456 -always \u4E79 1456 +always \u4E74 15-236-2 +always \u4E75 2345-4 +always \u4E76 12345-34-4 +always \u4E77 24-345-3 +always \u4E78 1345-345-4 +always \u4E79 13-1236-3 always \u4E7A 1456 always \u4E7B 1456 always \u4E7C 1456 always \u4E7D 1456 always \u4E7E 13-1236-3 always \u4E7F 12-156-5 -always \u4E80 1456 -always \u4E81 1456 +always \u4E80 13-1246-3 +always \u4E81 13-1236-3 always \u4E82 14-12456-5 always \u4E83 14-1456-2 always \u4E84 16-5 @@ -19994,32 +19997,32 @@ always \u4E86 14-2346-1 always \u4E87 1456 always \u4E88 1256-4 always \u4E89 1-1356-3 -always \u4E8A 1456 +always \u4E8A 24-156-5 always \u4E8B 24-156-5 always \u4E8C 156-5 always \u4E8D 12-34-5 always \u4E8E 1256-2 always \u4E8F 123-1246-3 -always \u4E90 1456 +always \u4E90 1256-2 always \u4E91 256-2 always \u4E92 1235-34-5 always \u4E93 245-16-2 always \u4E94 34-4 always \u4E95 13-13456-4 -always \u4E96 1456 -always \u4E97 1456 +always \u4E96 15-156-5 +always \u4E97 15-1246-5 always \u4E98 13-136-5 always \u4E99 13-136-5 always \u4E9A 23456-4 always \u4E9B 15-346-3 -always \u4E9C 1456 -always \u4E9D 1456 +always \u4E9C 23456-5 +always \u4E9D 245-16-2 always \u4E9E 23456-4 always \u4E9F 245-16-5 always \u4EA0 124-12356-2 always \u4EA1 456-2 always \u4EA2 123-1346-5 -always \u4EA3 1456 +always \u4EA3 124-345-5 always \u4EA4 13-246-3 always \u4EA5 1235-2456-5 always \u4EA6 16-5 @@ -20031,22 +20034,22 @@ always \u4EAB 15-46-4 always \u4EAC 13-13456-3 always \u4EAD 124-13456-2 always \u4EAE 14-46-5 -always \u4EAF 1456 -always \u4EB0 1456 -always \u4EB1 1456 +always \u4EAF 15-46-4 +always \u4EB0 13-13456-3 +always \u4EB1 346-5 always \u4EB2 245-1456-3 always \u4EB3 135-126-5 -always \u4EB4 1456 +always \u4EB4 234-5 always \u4EB5 15-346-5 always \u4EB6 145-1236-4 -always \u4EB7 1456 -always \u4EB8 1456 +always \u4EB7 14-2345-2 +always \u4EB8 145-25-4 always \u4EB9 1246-4 always \u4EBA 1245-136-2 -always \u4EBB 1456 -always \u4EBC 1456 +always \u4EBB 1245-136-2 +always \u4EBC 13-16-2 always \u4EBD 1456 -always \u4EBE 1456 +always \u4EBE 456-2 always \u4EBF 16-5 always \u4EC0 24-156-2 always \u4EC1 1245-136-2 @@ -20060,11 +20063,11 @@ always \u4EC8 135-345-3 always \u4EC9 1-1346-4 always \u4ECA 13-1456-3 always \u4ECB 13-346-5 -always \u4ECC 1456 +always \u4ECC 135-13456-3 always \u4ECD 1245-1356-2 always \u4ECE 245-12346-2 -always \u4ECF 1456 -always \u4ED0 1456 +always \u4ECF 12345-126-2 +always \u4ED0 15-1236-4 always \u4ED1 14-123456-2 always \u4ED2 1456 always \u4ED3 245-1346-3 @@ -20075,27 +20078,27 @@ always \u4ED7 1-1346-5 always \u4ED8 12345-34-5 always \u4ED9 15-2345-3 always \u4EDA 15-45-3 -always \u4EDB 1456 +always \u4EDB 124-25-3 always \u4EDC 1235-12346-2 always \u4EDD 124-12346-2 always \u4EDE 1245-136-5 always \u4EDF 245-2345-3 -always \u4EE0 1456 +always \u4EE0 13-1236-2 always \u4EE1 16-5 -always \u4EE2 1456 +always \u4EE2 145-16-2 always \u4EE3 145-2456-5 always \u4EE4 14-13456-5 always \u4EE5 16-4 -always \u4EE6 1456 -always \u4EE7 1456 +always \u4EE6 12-146-5 +always \u4EE7 12-1346-2 always \u4EE8 15-345-3 always \u4EE9 135-345-1 always \u4EEA 16-2 -always \u4EEB 1456 +always \u4EEB 134-34-5 always \u4EEC 134-136-1 -always \u4EED 1456 -always \u4EEE 1456 -always \u4EEF 1456 +always \u4EED 1245-136-5 +always \u4EEE 13-23456-4 +always \u4EEF 12-146-5 always \u4EF0 46-4 always \u4EF1 245-2345-2 always \u4EF2 1-12346-5 @@ -20104,27 +20107,27 @@ always \u4EF4 12456-5 always \u4EF5 34-4 always \u4EF6 13-2345-5 always \u4EF7 13-23456-5 -always \u4EF8 1456 -always \u4EF9 1456 -always \u4EFA 1456 +always \u4EF8 246-4 +always \u4EF9 12345-1356-3 +always \u4EFA 245-1346-3 always \u4EFB 1245-136-5 -always \u4EFC 1456 +always \u4EFC 456-2 always \u4EFD 12345-136-5 -always \u4EFE 1456 +always \u4EFE 145-16-3 always \u4EFF 12345-1346-4 always \u4F00 1-12346-3 always \u4F01 245-16-5 always \u4F02 1234-356-5 -always \u4F03 1456 +always \u4F03 1256-2 always \u4F04 145-246-5 always \u4F05 145-123456-4 -always \u4F06 1456 -always \u4F07 1456 +always \u4F06 123456-5 +always \u4F07 16-5 always \u4F08 15-1456-4 always \u4F09 123-1346-5 always \u4F0A 16-3 always \u4F0B 13-16-2 -always \u4F0C 1456 +always \u4F0C 2456-5 always \u4F0D 34-4 always \u4F0E 13-16-5 always \u4F0F 12345-34-2 @@ -20134,60 +20137,60 @@ always \u4F12 13-1456-5 always \u4F13 135-356-3 always \u4F14 12-136-2 always \u4F15 12345-34-3 -always \u4F16 1456 +always \u4F16 124-1346-4 always \u4F17 1-12346-5 always \u4F18 234-3 always \u4F19 1235-25-4 always \u4F1A 1235-1246-5 always \u4F1B 1256-4 -always \u4F1C 1456 +always \u4F1C 245-1246-5 always \u4F1D 256-2 always \u4F1E 15-1236-4 always \u4F1F 1246-4 always \u4F20 12-12456-2 -always \u4F21 1456 +always \u4F21 12-2346-3 always \u4F22 135-345-1 -always \u4F23 1456 +always \u4F23 15-2345-5 always \u4F24 24-1346-3 always \u4F25 12-1346-3 always \u4F26 14-123456-2 always \u4F27 245-1346-3 -always \u4F28 1456 -always \u4F29 1456 +always \u4F28 15-256-5 +always \u4F29 15-1456-5 always \u4F2A 1246-5 always \u4F2B 1-34-5 always \u4F2C 135-345-1 always \u4F2D 15-45-2 -always \u4F2E 1456 +always \u4F2E 1345-34-2 always \u4F2F 135-126-2 always \u4F30 13-34-3 -always \u4F31 1456 -always \u4F32 1456 +always \u4F31 1345-16-4 +always \u4F32 1345-16-4 always \u4F33 15-346-5 always \u4F34 135-1236-5 -always \u4F35 1456 +always \u4F35 15-1256-5 always \u4F36 14-13456-2 -always \u4F37 1456 +always \u4F37 1-12356-5 always \u4F38 24-136-3 -always \u4F39 1456 +always \u4F39 245-1256-3 always \u4F3A 15-156-5 always \u4F3B 135-1356-3 always \u4F3C 15-156-5 always \u4F3D 245-346-2 always \u4F3E 1234-16-3 always \u4F3F 16-5 -always \u4F40 1456 +always \u4F40 15-156-5 always \u4F41 2456-4 -always \u4F42 1456 +always \u4F42 1-1356-3 always \u4F43 145-2345-5 -always \u4F44 1456 -always \u4F45 1456 +always \u4F44 1235-1236-2 +always \u4F45 134-2456-5 always \u4F46 145-1236-5 always \u4F47 1-34-5 always \u4F48 135-34-5 always \u4F49 245-1256-3 -always \u4F4A 1456 -always \u4F4B 1456 +always \u4F4A 135-16-4 +always \u4F4B 24-146-5 always \u4F4C 245-156-4 always \u4F4D 1246-5 always \u4F4E 145-16-3 @@ -20221,12 +20224,12 @@ always \u4F69 1234-356-5 always \u4F6A 1235-1246-2 always \u4F6B 1235-2346-5 always \u4F6C 14-146-4 -always \u4F6D 1456 +always \u4F6D 15-46-2 always \u4F6E 13-2346-2 always \u4F6F 46-2 always \u4F70 135-2456-4 -always \u4F71 1456 -always \u4F72 1456 +always \u4F71 12345-345-4 +always \u4F72 134-13456-2 always \u4F73 13-23456-3 always \u4F74 156-5 always \u4F75 135-13456-5 @@ -20250,31 +20253,31 @@ always \u4F86 14-2456-2 always \u4F87 16-2 always \u4F88 12-156-4 always \u4F89 123-35-3 -always \u4F8A 1456 +always \u4F8A 13-456-3 always \u4F8B 14-16-5 -always \u4F8C 1456 +always \u4F8C 1456-3 always \u4F8D 24-156-5 -always \u4F8E 1456 +always \u4F8E 134-16-4 always \u4F8F 1-34-3 always \u4F90 15-1256-5 always \u4F91 234-5 always \u4F92 1236-3 -always \u4F93 1456 +always \u4F93 14-34-5 always \u4F94 134-12356-2 always \u4F95 156-2 always \u4F96 14-123456-2 always \u4F97 124-12346-3 always \u4F98 12-345-5 -always \u4F99 1456 +always \u4F99 12-156-5 always \u4F9A 15-256-5 always \u4F9B 13-12346-3 always \u4F9C 1-12356-3 always \u4F9D 16-3 always \u4F9E 1245-34-4 -always \u4F9F 1456 +always \u4F9F 13-2345-5 always \u4FA0 15-23456-2 -always \u4FA1 1456 -always \u4FA2 1456 +always \u4FA1 13-23456-5 +always \u4FA2 125-2456-5 always \u4FA3 14-1256-4 always \u4FA4 1456 always \u4FA5 13-246-4 @@ -20283,26 +20286,26 @@ always \u4FA7 245-2346-5 always \u4FA8 245-246-2 always \u4FA9 123-2356-5 always \u4FAA 12-2456-2 -always \u4FAB 1456 +always \u4FAB 1345-13456-5 always \u4FAC 1345-12346-2 -always \u4FAD 1456 +always \u4FAD 13-1456-4 always \u4FAE 34-4 always \u4FAF 1235-12356-2 -always \u4FB0 1456 -always \u4FB1 1456 +always \u4FB0 13-235-4 +always \u4FB1 12-1356-4 always \u4FB2 1-136-5 always \u4FB3 245-25-5 -always \u4FB4 1456 +always \u4FB4 12-12356-4 always \u4FB5 245-1456-3 always \u4FB6 14-1256-4 always \u4FB7 13-1256-2 -always \u4FB8 1456 +always \u4FB8 24-34-5 always \u4FB9 124-13456-4 always \u4FBA 24-136-5 always \u4FBB 124-25-3 -always \u4FBC 1456 -always \u4FBD 1456 -always \u4FBE 1456 +always \u4FBC 135-126-2 +always \u4FBD 1345-1236-2 +always \u4FBE 1235-146-3 always \u4FBF 135-2345-5 always \u4FC0 124-1246-4 always \u4FC1 1256-2 @@ -20310,22 +20313,22 @@ always \u4FC2 15-16-5 always \u4FC3 245-34-5 always \u4FC4 2346-5 always \u4FC5 245-234-2 -always \u4FC6 1456 +always \u4FC6 15-1256-2 always \u4FC7 13-456-4 -always \u4FC8 1456 +always \u4FC8 123-34-5 always \u4FC9 34-5 always \u4FCA 13-256-5 always \u4FCB 16-5 -always \u4FCC 1456 +always \u4FCC 12345-34-4 always \u4FCD 14-46-2 always \u4FCE 125-34-4 always \u4FCF 245-246-5 always \u4FD0 14-16-5 always \u4FD1 235-4 -always \u4FD2 1456 +always \u4FD2 1235-123456-5 always \u4FD3 13-13456-5 always \u4FD4 245-2345-5 -always \u4FD5 1456 +always \u4FD5 15-1236-5 always \u4FD6 1234-2456-4 always \u4FD7 15-34-2 always \u4FD8 12345-34-2 @@ -20338,55 +20341,55 @@ always \u4FDE 1256-2 always \u4FDF 15-156-5 always \u4FE0 15-23456-2 always \u4FE1 15-1456-5 -always \u4FE2 1456 +always \u4FE2 15-234-3 always \u4FE3 1256-2 -always \u4FE4 1456 -always \u4FE5 1456 +always \u4FE4 124-16-5 +always \u4FE5 12-2346-3 always \u4FE6 12-12356-2 always \u4FE7 1456 always \u4FE8 2345-4 always \u4FE9 14-46-4 always \u4FEA 14-16-5 -always \u4FEB 1456 +always \u4FEB 14-2456-2 always \u4FEC 135-345-1 always \u4FED 13-2345-4 always \u4FEE 15-234-3 always \u4FEF 12345-34-4 -always \u4FF0 1456 +always \u4FF0 1235-2346-5 always \u4FF1 13-1256-5 -always \u4FF2 1456 +always \u4FF2 15-246-5 always \u4FF3 1234-2456-2 always \u4FF4 13-2345-5 always \u4FF5 135-246-4 always \u4FF6 12-34-5 always \u4FF7 12345-356-5 always \u4FF8 12345-1356-5 -always \u4FF9 1456 +always \u4FF9 23456-5 always \u4FFA 1236-4 -always \u4FFB 1456 -always \u4FFC 1456 -always \u4FFD 1456 +always \u4FFB 135-356-5 +always \u4FFC 1256-5 +always \u4FFD 15-1456-3 always \u4FFE 135-16-5 -always \u4FFF 1456 +always \u4FFF 13-2345-5 always \u5000 12-1346-3 -always \u5001 1456 -always \u5002 1456 -always \u5003 1456 -always \u5004 1456 +always \u5001 12-156-2 +always \u5002 135-13456-5 +always \u5003 125-1236-2 +always \u5004 246-2 always \u5005 245-1246-5 always \u5006 14-46-4 always \u5007 12456-4 -always \u5008 1456 +always \u5008 14-2456-2 always \u5009 245-1346-3 -always \u500A 1456 +always \u500A 125-12346-5 always \u500B 13-2346-5 always \u500C 13-12456-3 always \u500D 135-356-5 always \u500E 124-2345-4 always \u500F 24-34-5 -always \u5010 1456 +always \u5010 24-34-3 always \u5011 134-136-2 -always \u5012 145-146-4 +always \u5012 145-146-5 always \u5013 124-1236-2 always \u5014 13-236-2 always \u5015 12-1246-2 @@ -20397,14 +20400,14 @@ always \u5019 1235-12356-5 always \u501A 16-4 always \u501B 245-16-3 always \u501C 124-16-5 -always \u501D 1456 +always \u501D 13-1236-5 always \u501E 13-13456-5 always \u501F 13-346-5 always \u5020 1235-1246-3 always \u5021 12-1346-5 always \u5022 13-346-3 always \u5023 12345-1346-4 -always \u5024 1456 +always \u5024 1-156-2 always \u5025 123-12346-3 always \u5026 13-45-5 always \u5027 125-12346-3 @@ -20414,29 +20417,29 @@ always \u502A 1345-16-2 always \u502B 14-123456-2 always \u502C 1-25-2 always \u502D 25-3 -always \u502E 1456 +always \u502E 14-25-4 always \u502F 15-12346-3 always \u5030 14-1356-2 always \u5031 1235-123456-5 -always \u5032 1456 +always \u5032 145-12346-3 always \u5033 125-156-5 -always \u5034 1456 +always \u5034 135-136-5 always \u5035 34-4 -always \u5036 1456 +always \u5036 13-1256-5 always \u5037 1345-2456-5 -always \u5038 1456 -always \u5039 1456 +always \u5038 245-2456-4 +always \u5039 13-2345-4 always \u503A 1-2456-5 -always \u503B 1456 +always \u503B 346-3 always \u503C 1-156-2 -always \u503D 1456 +always \u503D 24-345-5 always \u503E 245-13456-3 always \u503F 1456 always \u5040 13456-3 always \u5041 12-1356-3 -always \u5042 1456 +always \u5042 13-2345-3 always \u5043 2345-4 -always \u5044 1456 +always \u5044 1345-12456-5 always \u5045 1-12346-4 always \u5046 12-123456-4 always \u5047 13-23456-4 @@ -20448,16 +20451,16 @@ always \u504C 1245-25-5 always \u504D 124-16-2 always \u504E 1246-3 always \u504F 1234-2345-3 -always \u5050 1456 +always \u5050 2345-5 always \u5051 12345-1356-3 -always \u5052 1456 +always \u5052 124-1346-4 always \u5053 25-5 -always \u5054 1456 +always \u5054 2346-5 always \u5055 15-346-2 -always \u5056 1456 +always \u5056 12-2346-4 always \u5057 24-1356-4 -always \u5058 1456 -always \u5059 1456 +always \u5058 123-1236-4 +always \u5059 145-16-5 always \u505A 125-25-5 always \u505B 12-345-3 always \u505C 124-13456-2 @@ -20470,8 +20473,8 @@ always \u5062 245-234-3 always \u5063 2345-3 always \u5064 234-4 always \u5065 13-2345-5 -always \u5066 1456 -always \u5067 1456 +always \u5066 15-1256-3 +always \u5067 1-345-3 always \u5068 12-2456-3 always \u5069 12345-34-5 always \u506A 135-16-3 @@ -20481,45 +20484,45 @@ always \u506D 134-2345-4 always \u506E 13-16-2 always \u506F 16-4 always \u5070 15-346-5 -always \u5071 1456 +always \u5071 15-256-2 always \u5072 15-156-3 always \u5073 145-12456-3 always \u5074 245-2346-5 always \u5075 1-136-3 always \u5076 12356-4 always \u5077 124-12356-3 -always \u5078 1456 -always \u5079 1456 +always \u5078 124-12356-3 +always \u5079 135-356-5 always \u507A 125-1236-2 always \u507B 14-1256-4 -always \u507C 1456 +always \u507C 13-346-2 always \u507D 1246-5 always \u507E 12345-136-5 always \u507F 12-1346-2 always \u5080 123-1246-4 -always \u5081 1456 +always \u5081 15-12356-4 always \u5082 12-156-4 always \u5083 15-34-5 -always \u5084 1456 +always \u5084 15-23456-3 always \u5085 12345-34-5 -always \u5086 1456 +always \u5086 45-5 always \u5087 1245-12346-4 always \u5088 14-16-5 -always \u5089 1456 -always \u508A 1456 +always \u5089 1245-34-5 +always \u508A 256-4 always \u508B 13-12356-5 always \u508C 134-345-5 always \u508D 135-1346-3 always \u508E 145-2345-3 -always \u508F 1456 -always \u5090 1456 +always \u508F 124-1346-2 +always \u5090 1235-146-5 always \u5091 13-346-2 always \u5092 15-16-3 -always \u5093 1456 +always \u5093 24-1236-5 always \u5094 245-2345-5 always \u5095 13-236-2 always \u5096 245-1346-3 -always \u5097 1456 +always \u5097 12-34-5 always \u5098 15-1236-4 always \u5099 135-356-5 always \u509A 15-246-5 @@ -20527,19 +20530,19 @@ always \u509B 235-4 always \u509C 246-2 always \u509D 124-1236-5 always \u509E 15-25-3 -always \u509F 1456 -always \u50A0 1456 -always \u50A1 1456 +always \u509F 46-4 +always \u50A0 12345-345-3 +always \u50A1 135-13456-5 always \u50A2 13-23456-3 always \u50A3 145-2456-4 -always \u50A4 1456 +always \u50A4 125-2456-5 always \u50A5 124-1346-4 always \u50A6 1456 always \u50A7 135-1456-3 always \u50A8 12-34-2 always \u50A9 1345-25-2 -always \u50AA 1456 -always \u50AB 1456 +always \u50AA 245-1236-3 +always \u50AB 14-356-4 always \u50AC 245-1246-3 always \u50AD 235-3 always \u50AE 125-146-3 @@ -20553,17 +20556,17 @@ always \u50B5 1-2456-5 always \u50B6 12-34-4 always \u50B7 24-1346-3 always \u50B8 15-23456-2 -always \u50B9 1456 +always \u50B9 13-13456-5 always \u50BA 12-156-5 always \u50BB 24-345-4 -always \u50BC 1456 +always \u50BC 1235-1236-5 always \u50BD 1-1346-3 always \u50BE 245-13456-3 always \u50BF 2345-5 -always \u50C0 1456 +always \u50C0 145-16-5 always \u50C1 15-346-5 always \u50C2 14-1256-4 -always \u50C3 1456 +always \u50C3 135-356-5 always \u50C4 1234-246-5 always \u50C5 13-1456-4 always \u50C6 14-2345-2 @@ -20572,29 +20575,29 @@ always \u50C8 134-1236-5 always \u50C9 245-2345-3 always \u50CA 15-2345-3 always \u50CB 14-1236-5 -always \u50CC 1456 -always \u50CD 1456 +always \u50CC 13456-2 +always \u50CD 145-12346-5 always \u50CE 1-12456-5 always \u50CF 15-46-5 -always \u50D0 1456 +always \u50D0 24-1236-5 always \u50D1 245-246-2 -always \u50D2 1456 +always \u50D2 13-235-4 always \u50D3 124-1246-4 always \u50D4 125-123456-4 always \u50D5 1234-34-2 always \u50D6 15-16-3 always \u50D7 14-146-5 -always \u50D8 1456 -always \u50D9 1456 +always \u50D8 12-1346-4 +always \u50D9 13-456-3 always \u50DA 14-246-2 always \u50DB 245-16-3 -always \u50DC 1456 +always \u50DC 145-1356-5 always \u50DD 1-1236-4 -always \u50DE 1456 -always \u50DF 1456 +always \u50DE 1246-4 +always \u50DF 13-16-3 always \u50E0 12345-1236-3 -always \u50E1 1456 -always \u50E2 1456 +always \u50E1 1235-1246-5 +always \u50E2 12-12456-4 always \u50E3 124-346-4 always \u50E4 145-1236-5 always \u50E5 13-246-4 @@ -20603,7 +20606,7 @@ always \u50E7 15-1356-3 always \u50E8 12345-136-5 always \u50E9 15-2345-5 always \u50EA 1256-5 -always \u50EB 1456 +always \u50EB 2346-5 always \u50EC 13-246-3 always \u50ED 13-2345-5 always \u50EE 124-12346-2 @@ -20612,20 +20615,20 @@ always \u50F0 135-126-2 always \u50F1 13-34-5 always \u50F2 1456 always \u50F3 14-16-5 -always \u50F4 1456 +always \u50F4 15-2345-5 always \u50F5 13-46-3 always \u50F6 134-1456-4 -always \u50F7 1456 +always \u50F7 346-5 always \u50F8 13-1456-5 always \u50F9 13-23456-5 -always \u50FA 1456 +always \u50FA 245-246-5 always \u50FB 1234-16-5 -always \u50FC 1456 +always \u50FC 12345-1356-3 always \u50FD 1-12356-5 always \u50FE 2456-5 always \u50FF 15-2456-5 always \u5100 16-2 -always \u5101 1456 +always \u5101 13-256-5 always \u5102 1345-12346-2 always \u5103 12-1236-2 always \u5104 16-5 @@ -20637,8 +20640,8 @@ always \u5109 13-2345-4 always \u510A 12-34-5 always \u510B 145-1236-3 always \u510C 13-246-3 -always \u510D 1456 -always \u510E 1456 +always \u510D 24-345-4 +always \u510E 125-2456-5 always \u510F 1456 always \u5110 135-1456-3 always \u5111 1236-5 @@ -20646,39 +20649,39 @@ always \u5112 1245-34-2 always \u5113 124-2456-2 always \u5114 12-12356-2 always \u5115 12-2456-2 -always \u5116 1456 +always \u5116 14-1236-2 always \u5117 1345-16-4 always \u5118 13-1456-4 -always \u5119 1456 +always \u5119 245-2345-5 always \u511A 134-1356-2 -always \u511B 1456 +always \u511B 34-4 always \u511C 1345-1356-2 -always \u511D 1456 -always \u511E 1456 +always \u511D 245-235-2 +always \u511E 1345-16-4 always \u511F 12-1346-2 always \u5120 14-346-5 always \u5121 14-356-4 always \u5122 14-1256-4 -always \u5123 1456 +always \u5123 123-456-5 always \u5124 135-146-5 always \u5125 145-34-2 always \u5126 135-246-3 -always \u5127 1456 -always \u5128 1456 +always \u5127 125-1236-4 +always \u5128 1-156-2 always \u5129 15-156-5 always \u512A 234-3 -always \u512B 1456 -always \u512C 1456 +always \u512B 1235-146-2 +always \u512C 12-136-5 always \u512D 12-136-5 always \u512E 14-16-5 -always \u512F 1456 +always \u512F 124-1356-2 always \u5130 1246-4 always \u5131 14-12346-4 always \u5132 12-34-2 always \u5133 12-1236-2 always \u5134 1245-1346-2 always \u5135 24-34-5 -always \u5136 1456 +always \u5136 1235-1246-5 always \u5137 14-16-5 always \u5138 14-25-2 always \u5139 125-1236-4 @@ -20686,11 +20689,11 @@ always \u513A 1345-25-2 always \u513B 124-1346-4 always \u513C 2345-4 always \u513D 14-356-2 -always \u513E 1456 +always \u513E 1345-1346-5 always \u513F 1245-136-2 always \u5140 34-5 always \u5141 256-4 -always \u5142 1456 +always \u5142 125-1236-3 always \u5143 45-2 always \u5144 15-235-3 always \u5145 12-12346-3 @@ -20698,21 +20701,21 @@ always \u5146 1-146-5 always \u5147 15-235-3 always \u5148 15-2345-3 always \u5149 13-456-3 -always \u514A 1456 +always \u514A 145-1246-5 always \u514B 123-2346-5 always \u514C 145-1246-5 always \u514D 134-2345-4 -always \u514E 1456 -always \u514F 1456 -always \u5150 1456 +always \u514E 124-34-5 +always \u514F 12-1346-2 +always \u5150 156-2 always \u5151 145-1246-5 always \u5152 156-2 -always \u5153 1456 +always \u5153 15-1456-3 always \u5154 124-34-5 always \u5155 15-156-5 always \u5156 2345-4 always \u5157 2345-4 -always \u5158 1456 +always \u5158 24-156-4 always \u5159 2-356-1245 always \u515A 145-1346-4 always \u515B 2-356-356-356-1245 @@ -20720,17 +20723,17 @@ always \u515C 145-12356-3 always \u515D 14-1245 always \u515E 134-1245 always \u515F 15-1456-3 -always \u5160 1456 +always \u5160 145-12356-3 always \u5161 2-356-356-1245 always \u5162 13-13456-3 -always \u5163 14-16-2-123-2346-5 -always \u5164 1456 +always \u5163 14-16 +always \u5164 1235-456-2 always \u5165 1245-34-5 -always \u5166 1456 +always \u5166 456-2 always \u5167 1345-356-5 always \u5168 245-45-2 always \u5169 14-46-4 -always \u516A 1456 +always \u516A 1256-2 always \u516B 135-345-3 always \u516C 13-12346-3 always \u516D 14-234-5 @@ -20738,7 +20741,7 @@ always \u516E 15-16-3 always \u516F 1456 always \u5170 14-1236-2 always \u5171 13-12346-5 -always \u5172 1456 +always \u5172 124-2345-3 always \u5173 13-12456-3 always \u5174 15-13456-3 always \u5175 135-13456-3 @@ -20750,25 +20753,25 @@ always \u517A 1456 always \u517B 46-4 always \u517C 13-2345-3 always \u517D 24-12356-5 -always \u517E 1456 -always \u517F 1456 +always \u517E 13-16-5 +always \u517F 16-5 always \u5180 13-16-5 always \u5181 12-1236-4 always \u5182 13-235-3 always \u5183 1456 -always \u5184 1456 +always \u5184 1245-1236-4 always \u5185 1345-356-5 always \u5186 1456 always \u5187 134-12356-4 always \u5188 235678-12467 always \u5189 1245-1236-4 always \u518A 245-2346-5 -always \u518B 1456 +always \u518B 13-235-3 always \u518C 245-2346-5 always \u518D 125-2456-5 -always \u518E 1456 +always \u518E 13-35-4 always \u518F 13-235-4 -always \u5190 1456 +always \u5190 134-146-5 always \u5191 1-12356-5 always \u5192 134-146-5 always \u5193 13-12356-5 @@ -20778,52 +20781,52 @@ always \u5196 134-16-5 always \u5197 1245-12346-4 always \u5198 1456-2 always \u5199 15-346-4 -always \u519A 1456 +always \u519A 123-1236-4 always \u519B 13-256-3 always \u519C 1345-12346-2 -always \u519D 1456 +always \u519D 16-2 always \u519E 134-16-2 -always \u519F 1456 +always \u519F 24-156-5 always \u51A0 13-12456-5 -always \u51A1 1456 +always \u51A1 134-1356-2 always \u51A2 1-12346-4 -always \u51A3 1456 +always \u51A3 13-1256-5 always \u51A4 45-3 always \u51A5 134-13456-2 -always \u51A6 1456 +always \u51A6 123-12356-5 always \u51A7 1456 -always \u51A8 1456 -always \u51A9 1456 +always \u51A8 12345-34-5 +always \u51A9 15-346-4 always \u51AA 134-16-5 always \u51AB 135-13456-3 always \u51AC 145-12346-3 -always \u51AD 1456 -always \u51AE 1456 +always \u51AD 124-2456-2 +always \u51AE 13-1346-3 always \u51AF 12345-1356-2 always \u51B0 135-13456-3 always \u51B1 1235-34-5 always \u51B2 12-12346-3 always \u51B3 13-236-2 -always \u51B4 1456 +always \u51B4 1235-34-5 always \u51B5 123-456-5 always \u51B6 346-4 always \u51B7 14-1356-4 -always \u51B8 1456 +always \u51B8 1234-1236-5 always \u51B9 12345-34-2 -always \u51BA 1456 +always \u51BA 134-1456-4 always \u51BB 145-12346-5 always \u51BC 24-1356-4 always \u51BD 14-346-5 always \u51BE 15-23456-2 -always \u51BF 1456 +always \u51BF 13-2345-3 always \u51C0 13-13456-5 -always \u51C1 1456 -always \u51C2 1456 -always \u51C3 1456 +always \u51C1 24-34-5 +always \u51C2 134-356-4 +always \u51C3 124-34-2 always \u51C4 245-16-3 always \u51C5 13-34-5 always \u51C6 1-123456-4 -always \u51C7 1456 +always \u51C7 15-12346-3 always \u51C8 13-13456-5 always \u51C9 14-46-2 always \u51CA 245-13456-5 @@ -20834,74 +20837,74 @@ always \u51CE 135-345-1 always \u51CF 13-2345-4 always \u51D0 1456-3 always \u51D1 245-12356-5 -always \u51D2 1456 -always \u51D3 1456 +always \u51D2 16-2 +always \u51D3 14-16-5 always \u51D4 245-1346-3 -always \u51D5 1456 +always \u51D5 134-13456-4 always \u51D6 1456 always \u51D7 245-1246-3 always \u51D8 15-156-3 -always \u51D9 1456 -always \u51DA 1456 +always \u51D9 145-25-2 +always \u51DA 13-1456-5 always \u51DB 14-1456-4 always \u51DC 14-1456-4 always \u51DD 1345-13456-2 always \u51DE 15-16-3 -always \u51DF 1456 -always \u51E0 13-16-3 +always \u51DF 145-34-2 +always \u51E0 13-16-4 always \u51E1 12345-1236-2 -always \u51E2 1456 -always \u51E3 1456 +always \u51E2 12345-1236-2 +always \u51E3 12345-1236-2 always \u51E4 12345-1356-5 -always \u51E5 1456 -always \u51E6 1456 +always \u51E5 13-1256-3 +always \u51E6 12-34-4 always \u51E7 1456 -always \u51E8 1456 +always \u51E8 12345-1356-3 always \u51E9 1456 always \u51EA 1456 always \u51EB 12345-34-2 -always \u51EC 1456 +always \u51EC 12345-1356-3 always \u51ED 1234-13456-2 -always \u51EE 1456 +always \u51EE 12345-1356-3 always \u51EF 123-2456-4 always \u51F0 1235-456-2 always \u51F1 123-2456-4 -always \u51F2 1456 +always \u51F2 13-1236-3 always \u51F3 145-1356-5 -always \u51F4 1456 +always \u51F4 1234-13456-2 always \u51F5 123-1236-4 always \u51F6 15-235-3 -always \u51F7 1456 +always \u51F7 123-2356-5 always \u51F8 124-34-2 always \u51F9 146-3 always \u51FA 12-34-3 always \u51FB 13-16-2 -always \u51FC 1456 +always \u51FC 145-1346-5 always \u51FD 1235-1236-2 -always \u51FE 1456 +always \u51FE 1235-1236-2 always \u51FF 125-146-2 always \u5200 145-146-3 always \u5201 145-246-3 always \u5202 235678-12456 always \u5203 1245-136-5 -always \u5204 1456 -always \u5205 1456 +always \u5204 1245-136-5 +always \u5205 12-456-3 always \u5206 12345-136-3 always \u5207 245-346-5 always \u5208 16-5 always \u5209 13-16-3 always \u520A 123-1236-3 -always \u520B 1456 +always \u520B 245-2345-5 always \u520C 245-123456-4 always \u520D 12-34-2 always \u520E 123456-4 -always \u520F 1456 +always \u520F 13-16-3 always \u5210 145-1236-4 always \u5211 15-13456-2 always \u5212 1235-35-2 always \u5213 12456-2 -always \u5214 1456 -always \u5215 1456 +always \u5214 13-236-2 +always \u5215 14-16-2 always \u5216 236-5 always \u5217 14-346-5 always \u5218 14-234-2 @@ -20911,28 +20914,28 @@ always \u521B 12-456-5 always \u521C 12345-34-2 always \u521D 12-34-3 always \u521E 245-1256-5 -always \u521F 1456 +always \u521F 13-1256-3 always \u5220 24-1236-3 always \u5221 134-1456-4 -always \u5222 1456 -always \u5223 1456 +always \u5222 14-13456-2 +always \u5223 1-12346-3 always \u5224 1234-1236-5 always \u5225 135-346-2 -always \u5226 1456 -always \u5227 1456 +always \u5226 13-346-2 +always \u5227 13-346-2 always \u5228 135-146-5 always \u5229 14-16-5 always \u522A 24-1236-3 always \u522B 135-346-2 -always \u522C 1456 +always \u522C 12-1236-4 always \u522D 13-13456-3 always \u522E 13-35-3 -always \u522F 1456 +always \u522F 13-136-3 always \u5230 145-146-5 always \u5231 12-456-5 always \u5232 123-1246-3 always \u5233 123-34-3 -always \u5234 1456 +always \u5234 145-25-5 always \u5235 156-5 always \u5236 1-156-5 always \u5237 24-35-3 @@ -20940,51 +20943,51 @@ always \u5238 245-45-5 always \u5239 12-345-5 always \u523A 245-156-5 always \u523B 123-2346-5 -always \u523C 1456 +always \u523C 13-346-2 always \u523D 123-2356-5 -always \u523E 1456 +always \u523E 245-156-5 always \u523F 13-1246-5 always \u5240 13-2456-3 always \u5241 145-25-5 always \u5242 13-16-5 always \u5243 124-16-5 always \u5244 13-13456-3 -always \u5245 1456 +always \u5245 14-12356-2 always \u5246 14-25-2 always \u5247 125-2346-2 -always \u5248 1456 +always \u5248 45-3 always \u5249 245-25-5 always \u524A 15-246-3 always \u524B 123-2346-5 always \u524C 14-345-5 always \u524D 245-2345-2 always \u524E 12-345-5 -always \u524F 1456 +always \u524F 12-456-5 always \u5250 13-35-4 always \u5251 13-2345-5 always \u5252 245-25-5 -always \u5253 1456 +always \u5253 14-16-2 always \u5254 124-16-3 always \u5255 12345-356-5 always \u5256 1234-12356-4 -always \u5257 1456 -always \u5258 1456 -always \u5259 1456 +always \u5257 12-1236-4 +always \u5258 245-16-2 +always \u5259 12-456-5 always \u525A 125-156-5 always \u525B 13-1346-3 always \u525C 12456-3 always \u525D 135-126-3 always \u525E 13-16-4 always \u525F 145-25-2 -always \u5260 1456 +always \u5260 245-13456-2 always \u5261 24-1236-5 always \u5262 1-25-2 -always \u5263 1456 -always \u5264 1456 +always \u5263 13-2345-5 +always \u5264 13-16-5 always \u5265 135-126-3 -always \u5266 1456 +always \u5266 2345-3 always \u5267 13-1256-5 -always \u5268 1456 +always \u5268 1235-25-5 always \u5269 24-1356-5 always \u526A 13-2345-4 always \u526B 145-25-2 @@ -20992,29 +20995,29 @@ always \u526C 145-12456-3 always \u526D 34-3 always \u526E 13-35-4 always \u526F 12345-34-5 -always \u5270 1456 -always \u5271 1456 +always \u5270 24-1356-5 +always \u5271 13-2345-5 always \u5272 13-2346-3 -always \u5273 1456 +always \u5273 1-345-3 always \u5274 13-2456-3 always \u5275 12-456-5 -always \u5276 1456 +always \u5276 13-45-3 always \u5277 12-1236-4 always \u5278 1-12456-4 -always \u5279 1456 +always \u5279 14-34-5 always \u527A 14-16-2 always \u527B 12345-12356-2 always \u527C 24-1236-3 always \u527D 1234-246-5 -always \u527E 1456 +always \u527E 123-12356-3 always \u527F 13-246-4 always \u5280 13-35-3 always \u5281 245-246-2 always \u5282 13-236-2 always \u5283 1235-35-5 always \u5284 1-345-2 -always \u5285 1456 -always \u5286 1456 +always \u5285 1-25-5 +always \u5286 14-2345-2 always \u5287 13-1256-5 always \u5288 1234-16-3 always \u5289 14-234-2 @@ -21022,21 +21025,21 @@ always \u528A 123-2356-5 always \u528B 13-246-4 always \u528C 13-1246-5 always \u528D 13-2345-5 -always \u528E 1456 -always \u528F 1456 -always \u5290 1456 +always \u528E 13-2345-5 +always \u528F 124-1346-3 +always \u5290 1235-25-3 always \u5291 13-16-5 -always \u5292 1456 +always \u5292 13-2345-5 always \u5293 16-5 -always \u5294 1456 -always \u5295 1456 +always \u5294 13-2345-5 +always \u5295 1-156-2 always \u5296 12-1236-2 always \u5297 13-2345-4 always \u5298 134-16-2 always \u5299 14-16-2 -always \u529A 1456 +always \u529A 1-34-2 always \u529B 14-16-5 -always \u529C 1456 +always \u529C 23456-3 always \u529D 245-45-5 always \u529E 135-1236-5 always \u529F 13-12346-3 @@ -21044,10 +21047,10 @@ always \u52A0 13-23456-3 always \u52A1 34-5 always \u52A2 134-2456-5 always \u52A3 14-346-5 -always \u52A4 1456 -always \u52A5 1456 +always \u52A4 13-1456-5 +always \u52A5 123-1356-3 always \u52A6 15-346-2 -always \u52A7 1456 +always \u52A7 1-156-4 always \u52A8 145-12346-5 always \u52A9 1-34-5 always \u52AA 1345-34-4 @@ -21055,92 +21058,92 @@ always \u52AB 13-346-2 always \u52AC 245-1256-2 always \u52AD 24-146-5 always \u52AE 16-5 -always \u52AF 1456 -always \u52B0 1456 +always \u52AF 1-34-3 +always \u52B0 134-246-4 always \u52B1 14-16-5 always \u52B2 13-1456-5 always \u52B3 14-146-2 -always \u52B4 1456 -always \u52B5 1456 -always \u52B6 1456 -always \u52B7 1456 -always \u52B8 1456 -always \u52B9 1456 -always \u52BA 1456 +always \u52B4 14-146-2 +always \u52B5 13-45-5 +always \u52B6 123-12356-4 +always \u52B7 46-2 +always \u52B8 35-3 +always \u52B9 15-246-5 +always \u52BA 134-12356-2 always \u52BB 123-456-3 always \u52BC 13-346-2 -always \u52BD 1456 +always \u52BD 14-346-5 always \u52BE 1235-2346-2 always \u52BF 24-156-5 always \u52C0 123-2346-5 always \u52C1 13-1456-5 always \u52C2 1235-146-2 always \u52C3 135-126-2 -always \u52C4 1456 -always \u52C5 1456 -always \u52C6 1456 +always \u52C4 134-1456-4 +always \u52C5 12-156-5 +always \u52C6 14-1346-2 always \u52C7 235-4 -always \u52C8 1456 +always \u52C8 235-4 always \u52C9 134-2345-4 -always \u52CA 1456 +always \u52CA 123-2346-5 always \u52CB 15-256-3 -always \u52CC 1456 +always \u52CC 13-45-5 always \u52CD 245-13456-2 -always \u52CE 1456 -always \u52CF 1456 -always \u52D0 1456 -always \u52D1 1456 +always \u52CE 14-34-5 +always \u52CF 1234-12356-4 +always \u52D0 134-1356-4 +always \u52D1 14-2456-5 always \u52D2 14-2346-5 always \u52D3 123-2456-5 -always \u52D4 1456 +always \u52D4 134-2345-4 always \u52D5 145-12346-5 always \u52D6 15-1256-5 always \u52D7 15-1256-5 always \u52D8 123-1236-3 always \u52D9 34-5 -always \u52DA 1456 +always \u52DA 16-5 always \u52DB 15-256-3 -always \u52DC 1456 +always \u52DC 12346-4 always \u52DD 24-1356-5 always \u52DE 14-146-2 always \u52DF 134-34-5 -always \u52E0 1456 -always \u52E1 1456 +always \u52E0 14-34-5 +always \u52E1 1234-246-5 always \u52E2 24-156-5 always \u52E3 13-16-3 always \u52E4 245-1456-2 -always \u52E5 1456 +always \u52E5 245-46-4 always \u52E6 13-246-4 -always \u52E7 1456 -always \u52E8 1456 +always \u52E7 245-45-5 +always \u52E8 46-4 always \u52E9 16-5 -always \u52EA 1456 +always \u52EA 13-236-2 always \u52EB 12345-1236-2 -always \u52EC 1456 -always \u52ED 1456 -always \u52EE 1456 +always \u52EC 13-45-5 +always \u52ED 124-12346-2 +always \u52EE 13-1256-5 always \u52EF 145-1236-3 always \u52F0 15-346-2 always \u52F1 134-2456-5 -always \u52F2 1456 +always \u52F2 15-256-3 always \u52F3 15-256-3 always \u52F4 14-1256-5 always \u52F5 14-16-5 -always \u52F6 1456 +always \u52F6 12-2346-5 always \u52F7 1245-1346-2 always \u52F8 245-45-5 always \u52F9 135-146-3 always \u52FA 24-146-2 always \u52FB 256-2 always \u52FC 13-234-3 -always \u52FD 1456 +always \u52FD 135-146-5 always \u52FE 13-12356-3 always \u52FF 34-5 always \u5300 256-2 always \u5301 1456 always \u5302 1456 -always \u5303 1456 -always \u5304 1456 +always \u5303 13-2456-5 +always \u5304 13-2456-5 always \u5305 135-146-3 always \u5306 245-12346-3 always \u5307 1456 @@ -21148,49 +21151,49 @@ always \u5308 15-235-3 always \u5309 1234-1356-3 always \u530A 13-1256-2 always \u530B 124-146-2 -always \u530C 1456 +always \u530C 13-2346-2 always \u530D 1234-34-2 always \u530E 25-5 always \u530F 1234-146-2 always \u5310 12345-34-2 always \u5311 245-235-3 always \u5312 145-345-2 -always \u5313 1456 -always \u5314 1456 +always \u5313 13-234-5 +always \u5314 245-235-3 always \u5315 135-16-4 always \u5316 1235-35-5 always \u5317 135-356-4 -always \u5318 1456 +always \u5318 1345-146-4 always \u5319 12-156-2 always \u531A 12345-1346-3 -always \u531B 1456 +always \u531B 13-234-5 always \u531C 16-2 always \u531D 125-345-3 -always \u531E 1456 +always \u531E 13-46-5 always \u531F 123-1346-5 always \u5320 13-46-5 always \u5321 123-456-3 always \u5322 1235-34-3 always \u5323 15-23456-2 -always \u5324 1456 -always \u5325 1456 +always \u5324 245-1256-3 +always \u5325 135-2345-5 always \u5326 13-1246-4 -always \u5327 1456 -always \u5328 1456 -always \u5329 1456 +always \u5327 245-346-5 +always \u5328 125-1346-3 +always \u5329 123-456-3 always \u532A 12345-356-4 -always \u532B 1456 -always \u532C 1456 +always \u532B 1235-34-3 +always \u532C 124-12356-2 always \u532D 13-1246-4 always \u532E 123-1246-5 always \u532F 1235-1246-5 always \u5330 145-1236-3 always \u5331 123-1246-5 -always \u5332 1456 -always \u5333 1456 +always \u5332 14-2345-2 +always \u5333 14-2345-2 always \u5334 15-12456-5 -always \u5335 1456 -always \u5336 1456 +always \u5335 145-34-2 +always \u5336 13-234-5 always \u5337 245-1256-2 always \u5338 15-16-5 always \u5339 1234-16-3 @@ -21202,21 +21205,21 @@ always \u533E 135-2345-4 always \u533F 1345-16-5 always \u5340 245-1256-3 always \u5341 24-156-2 -always \u5342 1456 +always \u5342 15-1456-5 always \u5343 245-2345-3 always \u5344 1346-1346 always \u5345 15-345-5 -always \u5346 1456 +always \u5346 125-34-2 always \u5347 24-1356-3 always \u5348 34-4 always \u5349 1235-1246-5 always \u534A 135-1236-5 -always \u534B 1456 +always \u534B 24-156-5 always \u534C 15-16-5 always \u534D 12456-5 always \u534E 1235-35-2 always \u534F 1235-35-2 -always \u5350 1456 +always \u5350 12456-5 always \u5351 135-356-3 always \u5352 125-34-2 always \u5353 1-25-2 @@ -21224,28 +21227,28 @@ always \u5354 15-346-2 always \u5355 145-1236-3 always \u5356 134-2456-5 always \u5357 1345-1236-2 -always \u5358 1456 -always \u5359 1456 +always \u5358 145-1236-3 +always \u5359 13-16-2 always \u535A 135-126-2 -always \u535B 1456 +always \u535B 24-2356-5 always \u535C 135-34-4 -always \u535D 1456 +always \u535D 123-456-5 always \u535E 135-2345-5 -always \u535F 1456 +always \u535F 135-34-4 always \u5360 1-1236-5 always \u5361 123-345-4 always \u5362 14-34-2 always \u5363 234-4 always \u5364 14-34-4 -always \u5365 1456 +always \u5365 15-16-3 always \u5366 13-35-5 always \u5367 25-5 -always \u5368 1456 +always \u5368 15-346-5 always \u5369 13-346-2 -always \u536A 1456 +always \u536A 13-346-2 always \u536B 1246-5 always \u536C 1346-2 -always \u536D 1456 +always \u536D 245-235-2 always \u536E 1-156-3 always \u536F 134-146-4 always \u5370 1456-5 @@ -21254,25 +21257,25 @@ always \u5372 24-146-5 always \u5373 13-16-2 always \u5374 245-236-5 always \u5375 14-12456-4 -always \u5376 1456 +always \u5376 24-156-5 always \u5377 13-45-4 always \u5378 15-346-5 always \u5379 15-1256-5 always \u537A 13-1456-4 always \u537B 245-236-5 always \u537C 34-5 -always \u537D 1456 -always \u537E 1456 +always \u537D 13-16-2 +always \u537E 2346-5 always \u537F 245-13456-3 -always \u5380 1456 +always \u5380 15-16-3 always \u5381 1456 always \u5382 12-1346-4 -always \u5383 1456 +always \u5383 1-1236-3 always \u5384 2346-5 always \u5385 124-13456-3 always \u5386 14-16-5 -always \u5387 1456 -always \u5388 1456 +always \u5387 1-2346-2 +always \u5388 1235-1236-4 always \u5389 14-16-5 always \u538A 23456-4 always \u538B 23456-3 @@ -21280,10 +21283,10 @@ always \u538C 2345-5 always \u538D 24-2346-5 always \u538E 1-156-4 always \u538F 1-345-4 -always \u5390 1456 +always \u5390 1234-1346-2 always \u5391 1456 always \u5392 1235-2346-2 -always \u5393 1456 +always \u5393 23456-2 always \u5394 1-156-5 always \u5395 245-2346-5 always \u5396 12345-1346-2 @@ -21291,13 +21294,13 @@ always \u5397 124-16-2 always \u5398 14-16-2 always \u5399 24-2346-5 always \u539A 1235-12356-5 -always \u539B 1456 +always \u539B 124-13456-3 always \u539C 125-1246-3 always \u539D 245-25-5 always \u539E 12345-356-5 always \u539F 45-2 -always \u53A0 1456 -always \u53A1 1456 +always \u53A0 245-2346-5 +always \u53A1 45-2 always \u53A2 15-46-3 always \u53A3 2345-4 always \u53A4 14-16-5 @@ -21306,59 +21309,59 @@ always \u53A6 15-23456-5 always \u53A7 145-2345-3 always \u53A8 12-34-2 always \u53A9 13-234-5 -always \u53AA 1456 -always \u53AB 1456 +always \u53AA 245-1456-2 +always \u53AB 146-2 always \u53AC 13-1246-4 always \u53AD 2345-5 always \u53AE 15-156-3 -always \u53AF 1456 -always \u53B0 1456 -always \u53B1 1456 +always \u53AF 14-16-5 +always \u53B0 12-1346-4 +always \u53B1 14-1236-2 always \u53B2 14-16-5 -always \u53B3 1456 +always \u53B3 2345-2 always \u53B4 2345-4 -always \u53B5 1456 +always \u53B5 45-2 always \u53B6 378-12678 -always \u53B7 1456 -always \u53B8 1456 +always \u53B7 13-12346-3 +always \u53B8 14-1456-2 always \u53B9 1245-12356-2 -always \u53BA 1456 +always \u53BA 245-1256-5 always \u53BB 245-1256-5 always \u53BC 1456 -always \u53BD 1456 -always \u53BE 1456 +always \u53BD 14-356-4 +always \u53BE 145-34-3 always \u53BF 15-2345-5 -always \u53C0 1456 -always \u53C1 1456 +always \u53C0 1-12456-3 +always \u53C1 15-1236-3 always \u53C2 245-1236-3 always \u53C3 245-1236-3 -always \u53C4 1456 -always \u53C5 1456 -always \u53C6 1456 -always \u53C7 1456 +always \u53C4 245-1236-3 +always \u53C5 245-1236-3 +always \u53C6 2456-5 +always \u53C7 145-2456-5 always \u53C8 234-5 always \u53C9 12-345-3 always \u53CA 13-16-2 always \u53CB 234-4 always \u53CC 24-456-3 always \u53CD 12345-1236-4 -always \u53CE 1456 -always \u53CF 1456 -always \u53D0 1456 +always \u53CE 24-12356-3 +always \u53CF 13-2356-5 +always \u53D0 135-345-2 always \u53D1 12345-345-3 -always \u53D2 1456 -always \u53D3 1456 +always \u53D2 1245-25-5 +always \u53D3 24-156-5 always \u53D4 24-34-2 -always \u53D5 1456 +always \u53D5 1-25-2 always \u53D6 245-1256-4 always \u53D7 24-12356-5 -always \u53D8 135-245-5 +always \u53D8 135-2345-5 always \u53D9 15-1256-5 -always \u53DA 1456 +always \u53DA 13-23456-4 always \u53DB 1234-1236-5 -always \u53DC 1456 -always \u53DD 1456 -always \u53DE 1456 +always \u53DC 15-12356-4 +always \u53DD 13-146-5 +always \u53DE 1246-5 always \u53DF 15-12356-4 always \u53E0 145-346-2 always \u53E1 1245-1246-5 @@ -21367,7 +21370,7 @@ always \u53E3 123-12356-4 always \u53E4 13-34-4 always \u53E5 13-1256-5 always \u53E6 14-13456-5 -always \u53E7 1456 +always \u53E7 13-35-4 always \u53E8 145-146-3 always \u53E9 123-12356-5 always \u53EA 1-156-4 @@ -21380,24 +21383,24 @@ always \u53F0 124-2456-2 always \u53F1 12-156-5 always \u53F2 24-156-4 always \u53F3 234-5 -always \u53F4 1456 +always \u53F4 245-234-2 always \u53F5 1234-126-4 always \u53F6 346-5 always \u53F7 1235-146-5 always \u53F8 15-156-3 always \u53F9 124-1236-5 -always \u53FA 1456 +always \u53FA 12-156-4 always \u53FB 14-2346-5 always \u53FC 145-246-3 always \u53FD 13-16-3 always \u53FE 1456 -always \u53FF 1456 -always \u5400 1456 +always \u53FF 1235-12346-3 +always \u5400 134-346-3 always \u5401 15-1256-3 -always \u5402 1456 +always \u5402 134-1346-2 always \u5403 12-156-3 always \u5404 13-2346-5 -always \u5405 1456 +always \u5405 15-45-3 always \u5406 246-3 always \u5407 125-156-4 always \u5408 1235-2346-2 @@ -21412,22 +21415,22 @@ always \u5410 124-34-4 always \u5411 15-46-5 always \u5412 1-345-5 always \u5413 15-23456-5 -always \u5414 1456 +always \u5414 346-4 always \u5415 14-1256-4 -always \u5416 1456 +always \u5416 345-3 always \u5417 134-345-1 always \u5418 12356-4 always \u5419 15-236-3 -always \u541A 1456 +always \u541A 16-3 always \u541B 13-256-3 always \u541C 12-12356-4 always \u541D 14-1456-5 always \u541E 124-123456-3 always \u541F 1456-2 always \u5420 12345-356-5 -always \u5421 1456 -always \u5422 1456 -always \u5423 1456 +always \u5421 135-16-4 +always \u5422 245-1456-5 +always \u5423 245-1456-5 always \u5424 13-346-5 always \u5425 1234-12356-3 always \u5426 12345-12356-4 @@ -21436,13 +21439,13 @@ always \u5428 124-123456-2 always \u5429 12345-136-3 always \u542A 2346-2 always \u542B 1235-1236-2 -always \u542C 1456-2 +always \u542C 124-13456-3 always \u542D 123-1356-3 always \u542E 24-123456-4 always \u542F 245-16-4 always \u5430 1235-12346-2 always \u5431 125-156-3 -always \u5432 1456 +always \u5432 24-136-4 always \u5433 34-2 always \u5434 34-2 always \u5435 12-146-4 @@ -21450,30 +21453,30 @@ always \u5436 1345-345-5 always \u5437 15-236-5 always \u5438 15-16-3 always \u5439 12-1246-3 -always \u543A 1456 +always \u543A 145-12356-3 always \u543B 123456-4 always \u543C 1235-12356-4 always \u543D 12356-2 always \u543E 34-2 -always \u543F 1456 +always \u543F 13-146-5 always \u5440 23456-3 always \u5441 13-256-5 always \u5442 14-1256-4 always \u5443 2346-5 -always \u5444 1456 +always \u5444 13-2346-2 always \u5445 134-356-2 always \u5446 145-2456-3 always \u5447 245-16-4 always \u5448 12-1356-2 -always \u5449 1456 +always \u5449 34-2 always \u544A 13-146-5 -always \u544B 1456 -always \u544C 1456 -always \u544D 1456 +always \u544B 12345-34-3 +always \u544C 13-246-5 +always \u544D 1235-12346-3 always \u544E 12-156-4 always \u544F 24-1356-3 always \u5450 1345-345-5 -always \u5451 1456 +always \u5451 124-123456-3 always \u5452 12345-34-4 always \u5453 16-5 always \u5454 124-2456-5 @@ -21485,9 +21488,9 @@ always \u5459 13-2346-3 always \u545A 1456 always \u545B 245-46-5 always \u545C 34-3 -always \u545D 1456 -always \u545E 1456 -always \u545F 1456 +always \u545D 2346-5 +always \u545E 24-156-3 +always \u545F 245-45-4 always \u5460 1234-136-4 always \u5461 123456-4 always \u5462 1345-2346-1 @@ -21497,12 +21500,12 @@ always \u5465 1245-1236-2 always \u5466 234-3 always \u5467 145-16-4 always \u5468 1-12356-3 -always \u5469 1456 -always \u546A 1456 +always \u5469 24-156-5 +always \u546A 1-12356-5 always \u546B 124-346-3 always \u546C 14-13456-2 -always \u546D 1456 -always \u546E 1456 +always \u546D 16-5 +always \u546E 245-16-5 always \u546F 1234-13456-2 always \u5470 125-156-4 always \u5471 13-35-3 @@ -21513,7 +21516,7 @@ always \u5475 1235-2346-3 always \u5476 1345-146-2 always \u5477 15-23456-2 always \u5478 1234-356-3 -always \u5479 1456 +always \u5479 16-5 always \u547A 15-246-3 always \u547B 24-136-3 always \u547C 1235-34-3 @@ -21523,14 +21526,14 @@ always \u547F 245-1256-3 always \u5480 13-1256-4 always \u5481 15-2345-2 always \u5482 125-345-3 -always \u5483 1456 +always \u5483 124-25-3 always \u5484 145-25-5 -always \u5485 1456 +always \u5485 1234-12356-5 always \u5486 1234-146-2 always \u5487 135-346-2 always \u5488 12345-34-2 -always \u5489 1456 -always \u548A 1456 +always \u5489 46-3 +always \u548A 1235-2346-2 always \u548B 1-345-5 always \u548C 1235-2346-2 always \u548D 1235-2456-2 @@ -21539,24 +21542,24 @@ always \u548F 235-4 always \u5490 12345-34-5 always \u5491 145-345-3 always \u5492 1-12356-5 -always \u5493 1456 -always \u5494 1456 +always \u5493 35-4 +always \u5494 123-345-4 always \u5495 13-34-3 always \u5496 123-345-3 -always \u5497 1456 +always \u5497 125-25-4 always \u5498 135-34-5 always \u5499 14-12346-2 always \u549A 145-12346-3 always \u549B 1345-13456-2 always \u549C 1456 -always \u549D 1456 -always \u549E 1456 -always \u549F 1456 +always \u549D 15-156-3 +always \u549E 15-2345-5 +always \u549F 1235-25-5 always \u54A0 245-16-3 always \u54A1 156-5 always \u54A2 2346-5 -always \u54A3 1456 -always \u54A4 1456 +always \u54A3 13-456-3 +always \u54A4 1-345-5 always \u54A5 15-16-3 always \u54A6 16-2 always \u54A7 14-346-4 @@ -21570,14 +21573,14 @@ always \u54AE 1-34-3 always \u54AF 123-2346-5 always \u54B0 24-2356-5 always \u54B1 125-1236-2 -always \u54B2 1456 +always \u54B2 15-246-5 always \u54B3 123-2346-2 -always \u54B4 1456 -always \u54B5 1456 +always \u54B4 1235-1246-3 +always \u54B5 123-35-3 always \u54B6 1235-2356-5 always \u54B7 124-146-2 always \u54B8 15-2345-2 -always \u54B9 1456 +always \u54B9 2346-5 always \u54BA 15-45-4 always \u54BB 15-234-3 always \u54BC 13-2346-3 @@ -21594,13 +21597,13 @@ always \u54C6 12-156-4 always \u54C7 35-3 always \u54C8 1235-345-3 always \u54C9 125-2456-3 -always \u54CA 1456 -always \u54CB 1456 -always \u54CC 1456 +always \u54CA 1256-5 +always \u54CB 145-16-5 +always \u54CC 1234-2456-5 always \u54CD 15-46-4 always \u54CE 2456-3 always \u54CF 13-136-2 -always \u54D0 1456 +always \u54D0 123-456-3 always \u54D1 23456-4 always \u54D2 145-345-2 always \u54D3 15-246-3 @@ -21610,7 +21613,7 @@ always \u54D6 1345-2345-2 always \u54D7 1235-35-2 always \u54D8 1456 always \u54D9 123-2356-5 -always \u54DA 1456 +always \u54DA 145-25-4 always \u54DB 1456 always \u54DC 13-16-5 always \u54DD 1345-12346-2 @@ -21619,7 +21622,7 @@ always \u54DF 246-3 always \u54E0 1235-146-5 always \u54E1 45-2 always \u54E2 14-12346-5 -always \u54E3 1456 +always \u54E3 1234-12356-4 always \u54E4 134-1346-2 always \u54E5 13-2346-3 always \u54E6 2346-2 @@ -21628,29 +21631,29 @@ always \u54E8 24-146-5 always \u54E9 14-16-4 always \u54EA 1345-345-4 always \u54EB 125-34-2 -always \u54EC 1456 +always \u54EC 1235-2346-2 always \u54ED 123-34-3 always \u54EE 15-246-5 -always \u54EF 1456 -always \u54F0 1456 +always \u54EF 15-2345-5 +always \u54F0 14-146-2 always \u54F1 1234-126-5 always \u54F2 1-2346-2 always \u54F3 1-345-2 -always \u54F4 1456 -always \u54F5 1456 -always \u54F6 1456 +always \u54F4 14-46-5 +always \u54F5 135-345-3 +always \u54F6 134-346-3 always \u54F7 14-2346-5 always \u54F8 15-1246-3 -always \u54F9 1456 +always \u54F9 12345-12356-2 always \u54FA 135-34-4 always \u54FB 1235-1236-5 always \u54FC 1235-1356-3 always \u54FD 13-1356-4 -always \u54FE 1456 +always \u54FE 24-25-3 always \u54FF 13-2346-4 -always \u5500 1456 +always \u5500 234-4 always \u5501 2345-5 -always \u5502 1456 +always \u5502 13-34-4 always \u5503 13-34-4 always \u5504 135-2456-5 always \u5505 1235-1236-3 @@ -21661,37 +21664,37 @@ always \u5509 2456-3 always \u550A 13-23456-2 always \u550B 124-34-2 always \u550C 15-2345-2 -always \u550D 1456 +always \u550D 1235-12456-4 always \u550E 14-16-5 always \u550F 15-16-3 always \u5510 124-1346-2 always \u5511 24-156-5 always \u5512 134-234-3 -always \u5513 1456 +always \u5513 12-2346-3 always \u5514 34-2 -always \u5515 1456 -always \u5516 1456 +always \u5515 125-146-5 +always \u5516 23456-4 always \u5517 145-12356-3 -always \u5518 1456 -always \u5519 1456 +always \u5518 245-16-4 +always \u5519 145-16-2 always \u551A 245-1456-5 always \u551B 134-345-4 always \u551C 1456 -always \u551D 1456 -always \u551E 1456 +always \u551D 1235-12346-4 +always \u551E 145-12356-4 always \u551F 1456 always \u5520 14-146-2 -always \u5521 1456 +always \u5521 14-46-4 always \u5522 15-25-4 -always \u5523 1456 +always \u5523 125-146-5 always \u5524 1235-12456-5 always \u5525 1456 always \u5526 24-345-3 always \u5527 13-16-3 -always \u5528 1456 -always \u5529 1456 +always \u5528 125-25-4 +always \u5529 25-3 always \u552A 12345-1356-4 -always \u552B 1456 +always \u552B 1456-2 always \u552C 1235-34-4 always \u552D 245-16-5 always \u552E 24-12356-5 @@ -21706,45 +21709,45 @@ always \u5536 13-346-5 always \u5537 234-1 always \u5538 1345-2345-5 always \u5539 1256-3 -always \u553A 1456 +always \u553A 124-2345-4 always \u553B 14-2456-4 always \u553C 24-345-5 -always \u553D 1456 +always \u553D 15-16-3 always \u553E 124-25-5 -always \u553F 1456 +always \u553F 1235-34-3 always \u5540 26-2 always \u5541 1-12356-3 -always \u5542 1456 +always \u5542 1345-12356-5 always \u5543 123-136-4 always \u5544 1-25-2 always \u5545 1-25-2 always \u5546 24-1346-3 -always \u5547 1456 +always \u5547 145-16-2 always \u5548 1235-1356-5 -always \u5549 1456 +always \u5549 14-1236-2 always \u554A 345-3 always \u554B 15-246-3 -always \u554C 1456 +always \u554C 15-46-3 always \u554D 124-123456-3 always \u554E 34-5 always \u554F 123456-5 always \u5550 245-1246-5 always \u5551 24-345-5 always \u5552 1235-34-3 -always \u5553 1456 -always \u5554 1456 +always \u5553 245-16-4 +always \u5554 245-16-4 always \u5555 124-146-2 always \u5556 145-1236-5 always \u5557 145-1236-5 -always \u5558 1456 -always \u5559 1456 -always \u555A 1456 -always \u555B 1456 +always \u5558 346-5 +always \u5559 125-156-4 +always \u555A 135-16-4 +always \u555B 245-1246-5 always \u555C 12-25-5 -always \u555D 1456 +always \u555D 1235-2346-2 always \u555E 23456-4 always \u555F 245-16-4 -always \u5560 1456 +always \u5560 1-2346-2 always \u5561 12345-356-3 always \u5562 14-46-4 always \u5563 15-2345-2 @@ -21752,25 +21755,25 @@ always \u5564 1234-16-2 always \u5565 24-345-2 always \u5566 14-345-3 always \u5567 125-2346-2 -always \u5568 1456 -always \u5569 1456 +always \u5568 245-13456-3 +always \u5569 13-35-5 always \u556A 1234-345-3 -always \u556B 1456 +always \u556B 1-2346-4 always \u556C 15-2346-5 always \u556D 1-12456-4 always \u556E 1345-346-5 -always \u556F 1456 -always \u5570 1456 -always \u5571 1456 -always \u5572 1456 -always \u5573 1456 -always \u5574 1456 +always \u556F 13-25-1 +always \u5570 14-25-3 +always \u5571 2345-3 +always \u5572 145-16-5 +always \u5573 245-45-2 +always \u5574 124-1236-3 always \u5575 135-126-3 always \u5576 145-13456-5 always \u5577 14-1346-3 always \u5578 15-246-5 always \u5579 1456 -always \u557A 1456 +always \u557A 124-1346-2 always \u557B 12-156-5 always \u557C 124-16-2 always \u557D 1236-2 @@ -21781,8 +21784,8 @@ always \u5581 235-2 always \u5582 1246-5 always \u5583 1345-1236-2 always \u5584 24-1236-5 -always \u5585 1456 -always \u5586 1456 +always \u5585 1256-5 +always \u5586 1-2346-2 always \u5587 14-345-4 always \u5588 13-346-3 always \u5589 1235-12356-2 @@ -21792,23 +21795,23 @@ always \u558C 1-34-5 always \u558D 12-2456-2 always \u558E 13-25-3 always \u558F 1245-2346-4 -always \u5590 1456 +always \u5590 1256-5 always \u5591 1456-3 always \u5592 125-1236-2 always \u5593 246-3 always \u5594 126-3 always \u5595 134-2345-4 -always \u5596 1456 -always \u5597 1456 +always \u5596 1235-34-2 +always \u5597 256-4 always \u5598 12-12456-4 always \u5599 1235-1246-5 always \u559A 1235-12456-5 -always \u559B 1456 +always \u559B 1235-12456-5 always \u559C 15-16-4 always \u559D 1235-2346-3 -always \u559E 1456 +always \u559E 13-16-3 always \u559F 123-1246-5 -always \u55A0 1456 +always \u55A0 1-12346-4 always \u55A1 1246-4 always \u55A2 24-345-5 always \u55A3 15-1256-4 @@ -21817,31 +21820,31 @@ always \u55A5 145-25-2 always \u55A6 1345-346-5 always \u55A7 15-45-3 always \u55A8 14-46-5 -always \u55A9 1456 +always \u55A9 1256-5 always \u55AA 15-1346-5 always \u55AB 12-156-3 always \u55AC 245-246-2 always \u55AD 1236-5 always \u55AE 145-1236-3 -always \u55AF 1456 -always \u55B0 1456 +always \u55AF 1234-136-3 +always \u55B0 245-1236-3 always \u55B1 14-16-2 always \u55B2 246-3 always \u55B3 12-345-3 -always \u55B4 1456 +always \u55B4 1246-3 always \u55B5 134-246-3 -always \u55B6 1456 +always \u55B6 13456-2 always \u55B7 1234-136-3 always \u55B8 1456 -always \u55B9 1456 -always \u55BA 1456 +always \u55B9 123-1246-2 +always \u55BA 15-16-5 always \u55BB 1256-5 -always \u55BC 1456 +always \u55BC 13-346-2 always \u55BD 14-12356-2 always \u55BE 123-34-5 always \u55BF 125-146-5 always \u55C0 15-236-5 -always \u55C1 1456 +always \u55C1 124-16-2 always \u55C2 246-2 always \u55C3 1235-2346-5 always \u55C4 24-345-5 @@ -21863,16 +21866,16 @@ always \u55D3 15-1346-4 always \u55D4 12-136-3 always \u55D5 1245-34-5 always \u55D6 15-12356-3 -always \u55D7 1456 -always \u55D8 1456 +always \u55D7 35-3 +always \u55D8 13-16-3 always \u55D9 1234-1346-4 always \u55DA 34-3 always \u55DB 15-2345-2 always \u55DC 24-156-5 always \u55DD 13-2346-2 -always \u55DE 1456 +always \u55DE 125-156-3 always \u55DF 13-346-3 -always \u55E0 1456 +always \u55E0 14-25-5 always \u55E1 12346-3 always \u55E2 35-5 always \u55E3 15-156-5 @@ -21882,24 +21885,24 @@ always \u55E6 15-25-3 always \u55E7 36-1245-1-123-36 always \u55E8 1235-2456-5 always \u55E9 15-25-4 -always \u55EA 1456 +always \u55EA 245-1456-2 always \u55EB 1345-346-5 -always \u55EC 1456 +always \u55EC 1235-2346-3 always \u55ED 1456 -always \u55EE 1456 +always \u55EE 15-2456-5 always \u55EF 136-4 -always \u55F0 1456 -always \u55F1 1456 +always \u55F0 13-2346-5 +always \u55F1 1345-345-2 always \u55F2 145-346-3 always \u55F3 2456-5 always \u55F4 1456 -always \u55F5 1456 +always \u55F5 124-12346-3 always \u55F6 135-16-5 always \u55F7 146-2 -always \u55F8 1456 +always \u55F8 146-2 always \u55F9 14-2345-2 always \u55FA 125-1246-3 -always \u55FB 1456 +always \u55FB 1-2346-3 always \u55FC 134-126-5 always \u55FD 15-12356-5 always \u55FE 15-12356-4 @@ -21907,21 +21910,21 @@ always \u55FF 124-1236-4 always \u5600 125-2346-2 always \u5601 125-345-3 always \u5602 13-246-5 -always \u5603 1456 +always \u5603 12-12346-3 always \u5604 13-246-3 -always \u5605 1456 +always \u5605 123-2456-4 always \u5606 124-1236-5 -always \u5607 1456 +always \u5607 15-1236-3 always \u5608 245-146-2 always \u5609 13-23456-3 -always \u560A 1456 -always \u560B 1456 +always \u560A 2456-2 +always \u560B 15-246-3 always \u560C 1234-246-3 always \u560D 14-12356-2 always \u560E 13-345-3 always \u560F 13-34-4 always \u5610 15-246-3 -always \u5611 1456 +always \u5611 1235-34-3 always \u5612 1235-1246-5 always \u5613 13-25-3 always \u5614 12356-4 @@ -21929,27 +21932,27 @@ always \u5615 15-2345-3 always \u5616 125-2346-2 always \u5617 12-1346-2 always \u5618 15-1256-3 -always \u5619 1456 -always \u561A 1456 +always \u5619 1234-126-2 +always \u561A 145-2346-2 always \u561B 134-345-1 always \u561C 134-345-4 always \u561D 1235-34-2 -always \u561E 1456 +always \u561E 14-356-1 always \u561F 145-34-3 -always \u5620 1456 -always \u5621 1456 -always \u5622 1456 -always \u5623 1456 +always \u5620 13-345-3 +always \u5621 124-1346-3 +always \u5622 346-4 +always \u5623 135-1356-3 always \u5624 13456-3 always \u5625 1456 -always \u5626 1456 +always \u5626 13-246-5 always \u5627 134-16-5 -always \u5628 1456 +always \u5628 15-246-5 always \u5629 1235-35-2 always \u562A 134-2456-4 -always \u562B 1456 +always \u562B 1245-1236-2 always \u562C 12-2356-5 -always \u562D 1456 +always \u562D 1234-1356-3 always \u562E 14-146-2 always \u562F 15-246-5 always \u5630 13-16-3 @@ -21959,55 +21962,55 @@ always \u5633 123-2356-5 always \u5634 125-1246-4 always \u5635 15-246-3 always \u5636 15-156-3 -always \u5637 1456 +always \u5637 1235-146-2 always \u5638 34-4 always \u5639 14-246-2 always \u563A 245-246-2 always \u563B 15-16-3 -always \u563C 1456 +always \u563C 15-234-5 always \u563D 124-1236-3 always \u563E 124-1236-2 always \u563F 1235-356-3 always \u5640 15-123456-5 always \u5641 34-5 always \u5642 125-123456-4 -always \u5643 1456 -always \u5644 1456 +always \u5643 12345-1236-3 +always \u5644 12-156-3 always \u5645 1235-1246-3 always \u5646 245-1236-4 -always \u5647 1456 +always \u5647 12-456-2 always \u5648 245-34-5 always \u5649 145-1236-5 always \u564A 1256-5 -always \u564B 1456 +always \u564B 124-123456-3 always \u564C 245-1356-3 -always \u564D 1456 +always \u564D 13-246-5 always \u564E 346-3 -always \u564F 1456 -always \u5650 1456 -always \u5651 1456 -always \u5652 1456 +always \u564F 15-16-3 +always \u5650 245-16-5 +always \u5651 1235-146-2 +always \u5652 14-2345-2 always \u5653 15-1256-3 -always \u5654 1456 -always \u5655 1456 -always \u5656 1456 +always \u5654 145-1356-3 +always \u5655 1235-1246-3 +always \u5656 1456-2 always \u5657 1234-34-3 always \u5658 13-236-3 always \u5659 245-1456-2 always \u565A 15-256-2 -always \u565B 1456 +always \u565B 1345-346-5 always \u565C 14-34-3 -always \u565D 1456 +always \u565D 15-156-3 always \u565E 2345-4 -always \u565F 1456 +always \u565F 13456-5 always \u5660 145-345-2 -always \u5661 1456 +always \u5661 145-1236-3 always \u5662 1256-4 always \u5663 1-12356-5 always \u5664 13-1456-5 always \u5665 1345-12346-2 always \u5666 236-3 -always \u5667 1456 +always \u5667 1235-1246-5 always \u5668 245-16-5 always \u5669 2346-5 always \u566A 125-146-5 @@ -22021,15 +22024,15 @@ always \u5671 15-236-3 always \u5672 123-2356-5 always \u5673 1256-4 always \u5674 1234-136-3 -always \u5675 1456 +always \u5675 145-146-5 always \u5676 13-2346-2 always \u5677 135-345-1 always \u5678 145-123456-5 always \u5679 145-1346-3 always \u567A 1456 -always \u567B 1456 -always \u567C 1456 -always \u567D 1456 +always \u567B 15-2456-1 +always \u567C 1234-16-3 +always \u567D 1234-16-4 always \u567E 1456-3 always \u567F 125-1246-4 always \u5680 1345-13456-2 @@ -22040,10 +22043,10 @@ always \u5684 1235-25-5 always \u5685 1245-34-2 always \u5686 1235-146-3 always \u5687 15-23456-5 -always \u5688 1456 -always \u5689 1456 -always \u568A 1456 -always \u568B 1456 +always \u5688 23456-5 +always \u5689 145-25-3 +always \u568A 15-16-5 +always \u568B 12-12356-2 always \u568C 13-16-5 always \u568D 13-1456-5 always \u568E 1235-146-2 @@ -22052,58 +22055,58 @@ always \u5690 12-1346-2 always \u5691 1456 always \u5692 1456 always \u5693 135-345-1 -always \u5694 1456 +always \u5694 124-16-5 always \u5695 14-34-3 -always \u5696 1456 +always \u5696 1235-1246-5 always \u5697 135-126-3 always \u5698 234-3 always \u5699 1345-346-5 always \u569A 1456-2 -always \u569B 1456 +always \u569B 1235-34-5 always \u569C 134-126-5 always \u569D 1235-456-3 -always \u569E 1456 -always \u569F 1456 -always \u56A0 1456 +always \u569E 1-2346-2 +always \u569F 14-16-2 +always \u56A0 14-234-2 always \u56A1 1456 -always \u56A2 1456 +always \u56A2 1345-1346-2 always \u56A3 15-246-3 -always \u56A4 1456 +always \u56A4 134-126-2 always \u56A5 2345-5 always \u56A6 14-16-5 always \u56A7 14-34-2 always \u56A8 14-12346-2 -always \u56A9 1456 +always \u56A9 12345-34-2 always \u56AA 145-1236-5 always \u56AB 12-136-5 always \u56AC 1234-1456-2 always \u56AD 1234-16-4 always \u56AE 15-46-5 -always \u56AF 1456 -always \u56B0 1456 -always \u56B1 1456 +always \u56AF 1235-25-5 +always \u56B0 134-126-2 +always \u56B1 15-16-5 always \u56B2 145-25-4 always \u56B3 123-34-5 always \u56B4 2345-2 always \u56B5 12-1236-2 always \u56B6 13456-3 always \u56B7 1245-1346-4 -always \u56B8 1456 -always \u56B9 1456 -always \u56BA 1456 -always \u56BB 1456 +always \u56B8 145-2345-4 +always \u56B9 14-345-3 +always \u56BA 124-345-5 +always \u56BB 15-246-3 always \u56BC 13-236-2 always \u56BD 12-25-3 always \u56BE 1235-12456-3 -always \u56BF 1456 +always \u56BF 1235-25-5 always \u56C0 1-12456-4 always \u56C1 1345-346-5 always \u56C2 15-246-3 always \u56C3 245-345-5 -always \u56C4 1456 +always \u56C4 14-16-2 always \u56C5 12-1236-4 always \u56C6 12-2456-5 -always \u56C7 1456 +always \u56C7 14-16-5 always \u56C8 16-5 always \u56C9 14-25-3 always \u56CA 1345-1346-2 @@ -22111,61 +22114,61 @@ always \u56CB 125-1236-5 always \u56CC 15-34-3 always \u56CD 15-16-4 always \u56CE 1456 -always \u56CF 1456 -always \u56D0 1456 +always \u56CF 13-2345-3 +always \u56D0 125-345-2 always \u56D1 1-34-4 -always \u56D2 1456 +always \u56D2 14-1236-2 always \u56D3 1345-346-5 always \u56D4 1345-1346-2 always \u56D5 1456 always \u56D6 1456 always \u56D7 1246-2 -always \u56D8 1456 -always \u56D9 1456 +always \u56D8 1235-1246-2 +always \u56D9 1456-3 always \u56DA 245-234-2 always \u56DB 15-156-5 -always \u56DC 1456 +always \u56DC 1345-1456-2 always \u56DD 13-2345-4 always \u56DE 1235-1246-2 always \u56DF 15-1456-5 always \u56E0 1456-3 always \u56E1 1345-1236-3 always \u56E2 124-12456-2 -always \u56E3 1456 +always \u56E3 124-12456-2 always \u56E4 124-123456-2 always \u56E5 123-1346-5 -always \u56E6 1456 +always \u56E6 45-3 always \u56E7 13-235-4 -always \u56E8 1456 -always \u56E9 1456 +always \u56E8 1234-2345-3 +always \u56E9 256-5 always \u56EA 245-12346-3 always \u56EB 1235-34-2 -always \u56EC 1456 +always \u56EC 1235-1246-2 always \u56ED 45-2 always \u56EE 2346-2 -always \u56EF 1456 +always \u56EF 13-25-2 always \u56F0 123-123456-5 always \u56F1 245-12346-3 -always \u56F2 1456 -always \u56F3 1456 +always \u56F2 1246-2 +always \u56F3 124-34-2 always \u56F4 1246-2 always \u56F5 14-123456-2 -always \u56F6 1456 +always \u56F6 13-25-2 always \u56F7 13-256-3 -always \u56F8 1456 +always \u56F8 1245-156-5 always \u56F9 14-13456-2 always \u56FA 13-34-5 -always \u56FB 1456 -always \u56FC 1456 +always \u56FB 13-25-2 +always \u56FC 124-2456-3 always \u56FD 13-25-2 always \u56FE 124-34-2 always \u56FF 234-5 -always \u5700 1456 +always \u5700 13-25-2 always \u5701 1456-2 always \u5702 1235-123456-5 always \u5703 1234-34-4 always \u5704 1256-4 -always \u5705 1456 +always \u5705 1235-1236-2 always \u5706 45-2 always \u5707 14-123456-2 always \u5708 245-45-3 @@ -22174,82 +22177,82 @@ always \u570A 245-13456-3 always \u570B 13-25-2 always \u570C 12-12456-3 always \u570D 1246-2 -always \u570E 1456 -always \u570F 1456 -always \u5710 1456 -always \u5711 1456 +always \u570E 45-2 +always \u570F 245-45-3 +always \u5710 123-34-3 +always \u5711 12345-34-5 always \u5712 45-2 always \u5713 45-2 always \u5714 2346-5 always \u5715 1456 always \u5716 124-34-2 -always \u5717 1456 +always \u5717 124-34-2 always \u5718 124-12456-2 -always \u5719 1456 +always \u5719 14-236-5 always \u571A 1235-1246-5 always \u571B 16-5 always \u571C 45-2 -always \u571D 1456 +always \u571D 14-12456-2 always \u571E 14-12456-2 always \u571F 124-34-4 always \u5720 23456-5 -always \u5721 1456 +always \u5721 124-34-4 always \u5722 124-13456-4 always \u5723 123-34-3 -always \u5724 1456 -always \u5725 1456 +always \u5724 1234-34-4 +always \u5725 14-34-5 always \u5726 1456 -always \u5727 1456 +always \u5727 23456-3 always \u5728 125-2456-5 always \u5729 15-1256-3 always \u572A 16-3 -always \u572B 1456 +always \u572B 1256-5 always \u572C 34-3 always \u572D 13-1246-3 always \u572E 1234-16-4 always \u572F 16-2 always \u5730 145-16-5 -always \u5731 1456 -always \u5732 1456 +always \u5731 245-2345-3 +always \u5732 245-2345-3 always \u5733 13-256-5 always \u5734 1-25-2 -always \u5735 1456 -always \u5736 1456 +always \u5735 145-1346-5 +always \u5736 245-23456-5 always \u5737 1456 always \u5738 1456 always \u5739 123-456-5 always \u573A 12-1346-4 always \u573B 245-16-2 -always \u573C 1456 -always \u573D 1456 +always \u573C 1345-346-5 +always \u573D 134-126-5 always \u573E 15-2346-5 -always \u573F 1456 +always \u573F 13-23456-2 always \u5740 1-156-4 always \u5741 1-156-4 -always \u5742 1456 -always \u5743 1456 -always \u5744 1456 +always \u5742 135-1236-4 +always \u5743 15-256-3 +always \u5744 124-12356-2 always \u5745 245-1456-4 -always \u5746 1456 +always \u5746 12345-136-2 always \u5747 13-256-3 -always \u5748 1456 +always \u5748 123-1356-3 always \u5749 124-123456-2 always \u574A 12345-1346-3 always \u574B 12345-136-5 always \u574C 135-136-5 always \u574D 124-1236-3 always \u574E 123-1236-4 -always \u574F 1234-356-2 +always \u574F 1235-2356-5 always \u5750 125-25-5 always \u5751 123-1356-3 always \u5752 135-16-5 -always \u5753 1456 -always \u5754 1456 -always \u5755 1456 -always \u5756 1456 +always \u5753 15-13456-2 +always \u5754 145-16-5 +always \u5755 13-13456-3 +always \u5756 13-16-5 always \u5757 123-2356-5 -always \u5758 1456 -always \u5759 1456 +always \u5758 145-16-4 +always \u5759 13-13456-3 always \u575A 13-2345-3 always \u575B 124-1236-2 always \u575C 14-16-5 @@ -22259,18 +22262,18 @@ always \u575F 12345-136-2 always \u5760 1-1246-5 always \u5761 1234-126-3 always \u5762 1234-1236-4 -always \u5763 1456 +always \u5763 124-1346-3 always \u5764 123-123456-3 -always \u5765 1456 +always \u5765 245-1256-3 always \u5766 124-1236-4 -always \u5767 1456 +always \u5767 1-156-3 always \u5768 124-25-2 always \u5769 13-1236-3 always \u576A 1234-13456-2 always \u576B 145-2345-5 -always \u576C 1456 +always \u576C 13-35-5 always \u576D 1345-16-2 -always \u576E 1456 +always \u576E 124-2456-2 always \u576F 1234-356-3 always \u5770 13-235-3 always \u5771 46-4 @@ -22280,109 +22283,109 @@ always \u5774 14-234-5 always \u5775 245-234-3 always \u5776 134-34-5 always \u5777 123-2346-5 -always \u5778 1456 -always \u5779 1456 -always \u577A 1456 +always \u5778 13-12356-5 +always \u5779 15-236-5 +always \u577A 135-345-2 always \u577B 12-156-2 always \u577C 12-2346-5 always \u577D 14-13456-2 -always \u577E 1456 -always \u577F 1456 +always \u577E 1-34-5 +always \u577F 12345-34-5 always \u5780 1235-34-3 -always \u5781 1456 +always \u5781 1-156-5 always \u5782 12-1246-2 always \u5783 14-2346-5 always \u5784 14-12346-4 -always \u5785 1456 +always \u5785 14-12346-4 always \u5786 14-34-2 -always \u5787 1456 +always \u5787 146-5 always \u5788 1456 -always \u5789 1456 +always \u5789 1234-146-2 always \u578A 1456 always \u578B 15-13456-2 always \u578C 124-12346-4 -always \u578D 1456 -always \u578E 1456 +always \u578D 13-16-5 +always \u578E 123-2346-5 always \u578F 14-34-5 -always \u5790 1456 -always \u5791 1456 +always \u5790 245-156-2 +always \u5791 12-156-4 always \u5792 14-356-4 always \u5793 13-2456-3 always \u5794 1456-3 always \u5795 1235-12356-5 -always \u5796 1456 +always \u5796 145-1246-3 always \u5797 1-146-5 always \u5798 12345-34-2 always \u5799 13-456-3 always \u579A 246-2 always \u579B 145-25-4 -always \u579C 1456 +always \u579C 145-25-4 always \u579D 13-1246-4 always \u579E 12-345-2 always \u579F 46-2 always \u57A0 1456-2 -always \u57A1 1456 +always \u57A1 12345-345-2 always \u57A2 13-12356-5 always \u57A3 45-2 always \u57A4 145-346-2 always \u57A5 15-346-2 always \u57A6 123-136-4 -always \u57A7 1456 -always \u57A8 1456 +always \u57A7 13-235-3 +always \u57A8 24-12356-4 always \u57A9 2346-5 always \u57AA 1456 always \u57AB 145-2345-5 -always \u57AC 1456 +always \u57AC 1235-12346-2 always \u57AD 34-5 always \u57AE 123-35-4 always \u57AF 1456 always \u57B0 1456 -always \u57B1 1456 +always \u57B1 145-1346-5 always \u57B2 123-2456-4 always \u57B3 1456 -always \u57B4 1456 +always \u57B4 1345-146-4 always \u57B5 135-345-1 always \u57B6 15-13456-3 -always \u57B7 1456 +always \u57B7 15-2345-5 always \u57B8 12456-2 always \u57B9 135-1346-3 always \u57BA 1234-12356-2 -always \u57BB 1456 +always \u57BB 135-345-5 always \u57BC 16-5 always \u57BD 1456-5 -always \u57BE 1456 +always \u57BE 1235-1236-5 always \u57BF 15-1256-5 -always \u57C0 1456 +always \u57C0 12-1246-2 always \u57C1 245-136-5 always \u57C2 13-1356-4 always \u57C3 2456-3 -always \u57C4 1456 -always \u57C5 1456 +always \u57C4 1234-1356-2 +always \u57C5 12345-1346-2 always \u57C6 245-236-5 always \u57C7 235-4 -always \u57C8 1456 -always \u57C9 1456 -always \u57CA 1456 +always \u57C8 15-256-5 +always \u57C9 13-23456-2 +always \u57CA 145-16-5 always \u57CB 134-2456-2 always \u57CC 14-1346-5 -always \u57CD 1456 +always \u57CD 15-45-5 always \u57CE 12-1356-2 always \u57CF 2345-2 always \u57D0 13-1456-3 -always \u57D1 1456 +always \u57D1 1-2346-2 always \u57D2 14-2346-5 -always \u57D3 1456 +always \u57D3 14-346-5 always \u57D4 1234-34-4 always \u57D5 12-1356-2 always \u57D6 1456 -always \u57D7 1456 +always \u57D7 135-34-5 always \u57D8 24-156-2 always \u57D9 15-45-3 always \u57DA 13-25-3 -always \u57DB 1456 +always \u57DB 13-235-3 always \u57DC 346-4 -always \u57DD 1456 -always \u57DE 1456 +always \u57DD 1345-2345-5 +always \u57DE 145-16-4 always \u57DF 1256-5 always \u57E0 135-34-5 always \u57E1 34-5 @@ -22390,16 +22393,16 @@ always \u57E2 245-45-2 always \u57E3 15-1246-5 always \u57E4 1234-16-2 always \u57E5 12-1356-3 -always \u57E6 1456 +always \u57E6 12456-4 always \u57E7 13-1256-5 -always \u57E8 1456 +always \u57E8 14-123456-4 always \u57E9 1-1356-3 -always \u57EA 1456 -always \u57EB 1456 +always \u57EA 123-12346-3 +always \u57EB 12-12346-4 always \u57EC 145-12346-3 always \u57ED 145-2456-5 always \u57EE 124-1236-5 -always \u57EF 1456 +always \u57EF 1236-4 always \u57F0 245-2456-5 always \u57F1 24-34-2 always \u57F2 135-1356-4 @@ -22414,12 +22417,12 @@ always \u57FA 13-16-3 always \u57FB 1-123456-4 always \u57FC 245-16-2 always \u57FD 15-146-4 -always \u57FE 1456 -always \u57FF 1456 +always \u57FE 13-1256-5 +always \u57FF 1345-16-2 always \u5800 123-34-3 always \u5801 123-25-5 always \u5802 124-1346-2 -always \u5803 1456 +always \u5803 123-123456-3 always \u5804 1345-16-4 always \u5805 13-2345-3 always \u5806 145-1246-3 @@ -22435,31 +22438,31 @@ always \u580F 1456 always \u5810 2456-2 always \u5811 245-2345-5 always \u5812 1456 -always \u5813 1456 +always \u5813 1236-5 always \u5814 135-345-1 always \u5815 145-25-5 -always \u5816 1456 -always \u5817 1456 -always \u5818 1456 +always \u5816 1345-146-4 +always \u5817 124-34-3 +always \u5818 12-1356-2 always \u5819 1456-3 -always \u581A 1456 +always \u581A 1235-123456-2 always \u581B 135-16-5 always \u581C 14-2345-5 always \u581D 13-25-3 always \u581E 145-346-2 -always \u581F 1456 +always \u581F 1-12456-5 always \u5820 1235-12356-5 always \u5821 135-146-4 -always \u5822 1456 +always \u5822 135-146-4 always \u5823 1256-2 always \u5824 124-16-2 always \u5825 134-1356-2 -always \u5826 1456 +always \u5826 13-346-3 always \u5827 1245-12456-2 always \u5828 13-346-2 always \u5829 13-1356-5 always \u582A 123-1236-3 -always \u582B 1456 +always \u582B 125-12346-3 always \u582C 1256-3 always \u582D 1235-456-2 always \u582E 2346-5 @@ -22474,20 +22477,20 @@ always \u5836 124-25-3 always \u5837 1236-4 always \u5838 12345-1356-2 always \u5839 1-12346-5 -always \u583A 1456 +always \u583A 13-346-5 always \u583B 1-136-3 -always \u583C 1456 +always \u583C 12345-1356-3 always \u583D 13-1346-3 -always \u583E 1456 +always \u583E 12-12456-4 always \u583F 13-2345-4 always \u5840 1456 always \u5841 1456 -always \u5842 1456 -always \u5843 1456 -always \u5844 1456 -always \u5845 1456 +always \u5842 15-46-5 +always \u5843 1235-456-3 +always \u5844 14-1356-2 +always \u5845 145-12456-5 always \u5846 1456 -always \u5847 1456 +always \u5847 15-45-3 always \u5848 13-16-2 always \u5849 13-16-2 always \u584A 123-2356-5 @@ -22496,47 +22499,47 @@ always \u584C 124-345-3 always \u584D 12-1356-2 always \u584E 235-4 always \u584F 123-2456-4 -always \u5850 1456 +always \u5850 15-34-5 always \u5851 15-34-5 always \u5852 24-156-2 always \u5853 134-16-5 always \u5854 124-345-4 always \u5855 12346-4 -always \u5856 1456 +always \u5856 12-1356-2 always \u5857 124-34-2 always \u5858 124-1346-2 always \u5859 245-236-5 always \u585A 1-12346-4 always \u585B 14-16-5 -always \u585C 1456 +always \u585C 1234-1356-2 always \u585D 135-1346-5 always \u585E 15-2456-5 -always \u585F 1456 -always \u5860 1456 -always \u5861 1456 +always \u585F 125-1346-5 +always \u5860 145-1246-3 +always \u5861 124-2345-2 always \u5862 34-5 always \u5863 12-1356-4 always \u5864 15-45-3 always \u5865 13-2346-2 -always \u5866 1456 -always \u5867 1456 +always \u5866 1-136-5 +always \u5867 2456-5 always \u5868 13-12346-3 -always \u5869 1456 -always \u586A 1456 +always \u5869 2345-2 +always \u586A 123-1236-4 always \u586B 124-2345-2 -always \u586C 1456 +always \u586C 45-2 always \u586D 123456-3 -always \u586E 1456 +always \u586E 15-346-5 always \u586F 14-234-3 always \u5870 1456 -always \u5871 135-345-1 -always \u5872 1456 -always \u5873 1456 +always \u5871 14-1346-4 +always \u5872 12-1346-2 +always \u5873 1234-1356-2 always \u5874 135-1356-5 always \u5875 12-136-2 always \u5876 14-34-5 -always \u5877 1456 -always \u5878 1456 +always \u5877 14-34-4 +always \u5878 12356-4 always \u5879 245-2345-5 always \u587A 134-356-2 always \u587B 134-126-5 @@ -22548,7 +22551,7 @@ always \u5880 12-156-2 always \u5881 134-1236-5 always \u5882 135-246-3 always \u5883 13-13456-5 -always \u5884 1456 +always \u5884 245-16-3 always \u5885 24-34-5 always \u5886 145-346-2 always \u5887 1-1346-3 @@ -22556,8 +22559,8 @@ always \u5888 123-1236-5 always \u5889 235-3 always \u588A 145-2345-5 always \u588B 12-136-4 -always \u588C 1456 -always \u588D 1456 +always \u588C 1-156-3 +always \u588D 15-16-5 always \u588E 13-25-3 always \u588F 245-46-4 always \u5890 13-1456-4 @@ -22565,12 +22568,12 @@ always \u5891 145-16-3 always \u5892 145-16-3 always \u5893 134-34-5 always \u5894 245-1246-3 -always \u5895 1456 -always \u5896 1456 -always \u5897 1456 +always \u5895 2345-5 +always \u5896 124-345-4 +always \u5897 125-1356-3 always \u5898 245-16-2 always \u5899 245-46-2 -always \u589A 1456 +always \u589A 14-46-2 always \u589B 1456 always \u589C 1-1246-5 always \u589D 245-246-3 @@ -22578,28 +22581,28 @@ always \u589E 125-1356-3 always \u589F 15-1256-3 always \u58A0 24-1236-5 always \u58A1 24-1236-5 -always \u58A2 1456 +always \u58A2 135-345-2 always \u58A3 1234-34-2 -always \u58A4 1456 +always \u58A4 123-2356-5 always \u58A5 145-12346-4 always \u58A6 12345-1236-2 -always \u58A7 1456 +always \u58A7 245-236-5 always \u58A8 134-126-5 always \u58A9 145-123456-3 -always \u58AA 1456 +always \u58AA 145-123456-3 always \u58AB 245-256-3 always \u58AC 145-16-5 -always \u58AD 1456 +always \u58AD 24-1356-5 always \u58AE 145-25-5 always \u58AF 145-25-5 -always \u58B0 1456 +always \u58B0 124-1236-2 always \u58B1 145-1356-5 -always \u58B2 1456 +always \u58B2 34-4 always \u58B3 12345-136-2 -always \u58B4 1456 -always \u58B5 1456 -always \u58B6 1456 -always \u58B7 1456 +always \u58B4 1235-456-2 +always \u58B5 124-1236-2 +always \u58B6 145-345-3 +always \u58B7 346-5 always \u58B8 1456 always \u58B9 1456 always \u58BA 1256-5 @@ -22608,23 +22611,23 @@ always \u58BC 13-16-2 always \u58BD 245-246-3 always \u58BE 123-136-4 always \u58BF 16-5 -always \u58C0 1456 +always \u58C0 1234-16-2 always \u58C1 135-16-5 always \u58C2 145-2345-5 -always \u58C3 1456 -always \u58C4 1456 +always \u58C3 13-46-3 +always \u58C4 346-4 always \u58C5 235-4 always \u58C6 15-236-2 always \u58C7 124-1236-2 always \u58C8 14-1236-4 always \u58C9 13-1256-5 -always \u58CA 1456 -always \u58CB 1456 -always \u58CC 1456 -always \u58CD 1456 +always \u58CA 1235-2356-5 +always \u58CB 145-1346-5 +always \u58CC 1245-1346-4 +always \u58CD 245-2345-5 always \u58CE 15-256-3 always \u58CF 13-2345-5 -always \u58D0 1456 +always \u58D0 15-16-4 always \u58D1 1235-25-5 always \u58D2 2456-5 always \u58D3 23456-3 @@ -22636,17 +22639,17 @@ always \u58D8 14-356-4 always \u58D9 123-456-5 always \u58DA 14-34-2 always \u58DB 2345-2 -always \u58DC 1456 +always \u58DC 124-1236-2 always \u58DD 1246-4 always \u58DE 1235-2356-5 always \u58DF 14-12346-4 -always \u58E0 1456 -always \u58E1 1456 +always \u58E0 14-12346-4 +always \u58E1 1245-1246-5 always \u58E2 14-16-5 always \u58E3 14-1456-2 always \u58E4 1245-1346-4 always \u58E5 1456 -always \u58E6 1456 +always \u58E6 15-256-3 always \u58E7 2345-2 always \u58E8 14-356-2 always \u58E9 135-345-5 @@ -22657,62 +22660,62 @@ always \u58ED 1456 always \u58EE 1-456-5 always \u58EF 1-456-5 always \u58F0 24-1356-3 -always \u58F1 1456 -always \u58F2 1456 +always \u58F1 16-3 +always \u58F2 134-2456-5 always \u58F3 123-2346-2 always \u58F4 1-34-4 -always \u58F5 1456 +always \u58F5 1-456-5 always \u58F6 123-123456-4 -always \u58F7 1456 -always \u58F8 1456 +always \u58F7 1235-34-2 +always \u58F8 123-123456-4 always \u58F9 16-3 always \u58FA 1235-34-2 -always \u58FB 1456 +always \u58FB 15-1256-5 always \u58FC 123-123456-4 always \u58FD 24-12356-5 always \u58FE 134-1346-4 always \u58FF 125-123456-4 -always \u5900 1456 -always \u5901 1456 -always \u5902 1456 +always \u5900 24-12356-5 +always \u5901 16-3 +always \u5902 1-156-4 always \u5903 13-34-3 always \u5904 12-34-5 -always \u5905 1456 +always \u5905 13-46-5 always \u5906 12345-1356-2 always \u5907 135-356-5 always \u5908 1456 -always \u5909 1456 +always \u5909 135-2345-5 always \u590A 378-2378 -always \u590B 1456 +always \u590B 245-256-3 always \u590C 14-13456-2 always \u590D 12345-34-5 always \u590E 125-25-5 always \u590F 15-23456-5 -always \u5910 1456 +always \u5910 15-235-5 always \u5911 1456 always \u5912 1345-146-2 -always \u5913 1456 +always \u5913 15-23456-5 always \u5914 123-1246-2 always \u5915 15-16-5 always \u5916 2356-5 always \u5917 45-5 -always \u5918 1456 +always \u5918 134-146-4 always \u5919 15-34-5 always \u591A 145-25-3 -always \u591B 1456 +always \u591B 145-25-3 always \u591C 346-5 -always \u591D 1456 +always \u591D 245-13456-2 always \u591E 1456 always \u591F 13-12356-5 always \u5920 13-12356-5 -always \u5921 1456 +always \u5921 245-16-5 always \u5922 134-1356-5 -always \u5923 1456 +always \u5923 134-1356-5 always \u5924 1456-2 always \u5925 1235-25-4 -always \u5926 1456 +always \u5926 12-136-5 always \u5927 145-345-5 -always \u5928 1456 +always \u5928 125-2346-5 always \u5929 124-2345-3 always \u592A 124-2456-5 always \u592B 12345-34-3 @@ -22720,81 +22723,81 @@ always \u592C 13-2356-5 always \u592D 246-3 always \u592E 46-3 always \u592F 1235-1346-4 -always \u5930 1456 +always \u5930 13-146-4 always \u5931 24-156-3 -always \u5932 1456 -always \u5933 1456 +always \u5932 135-136-4 +always \u5933 124-2456-5 always \u5934 124-12356-2 -always \u5935 1456 -always \u5936 1456 +always \u5935 2345-4 +always \u5936 135-16-4 always \u5937 16-2 always \u5938 123-35-3 always \u5939 13-23456-2 always \u593A 145-25-2 always \u593B 1456 always \u593C 135-345-1 -always \u593D 1456 +always \u593D 256-5 always \u593E 13-23456-2 -always \u593F 1456 +always \u593F 1234-345-3 always \u5940 134-1346-2 always \u5941 14-2345-2 always \u5942 1235-12456-5 -always \u5943 1456 +always \u5943 145-16-5 always \u5944 2345-3 always \u5945 1234-146-5 -always \u5946 1456 +always \u5946 245-45-4 always \u5947 245-16-2 always \u5948 1345-2456-5 always \u5949 12345-1356-5 always \u594A 15-346-2 always \u594B 12345-136-5 -always \u594C 1456 +always \u594C 145-2345-4 always \u594D 1456 always \u594E 123-1246-2 always \u594F 125-12356-5 always \u5950 1235-12456-5 always \u5951 245-16-5 -always \u5952 1456 +always \u5952 123-2456-3 always \u5953 24-2346-3 always \u5954 135-136-3 always \u5955 16-5 always \u5956 13-46-4 always \u5957 124-146-5 always \u5958 125-1346-5 -always \u5959 1456 +always \u5959 135-136-4 always \u595A 15-16-3 -always \u595B 1456 +always \u595B 15-46-4 always \u595C 12345-356-4 -always \u595D 1456 -always \u595E 1456 -always \u595F 1456 +always \u595D 145-246-3 +always \u595E 15-256-5 +always \u595F 123-1356-3 always \u5960 145-2345-5 always \u5961 146-5 always \u5962 24-2346-3 -always \u5963 1456 -always \u5964 1456 +always \u5963 12346-4 +always \u5964 1234-1236-4 always \u5965 146-5 -always \u5966 1456 +always \u5966 34-5 always \u5967 146-5 -always \u5968 1456 +always \u5968 13-46-4 always \u5969 14-2345-2 always \u596A 145-25-2 always \u596B 256-3 -always \u596C 1456 +always \u596C 13-46-4 always \u596D 24-156-5 always \u596E 12345-136-5 -always \u596F 1456 +always \u596F 1235-25-5 always \u5970 135-356-5 always \u5971 14-2345-2 always \u5972 145-25-2 always \u5973 1345-1256-4 always \u5974 1345-34-2 -always \u5975 1456 +always \u5975 145-13456-3 always \u5976 1345-2456-4 always \u5977 245-2345-3 always \u5978 13-2345-3 always \u5979 1248-345-3 -always \u597A 1456 +always \u597A 13-234-4 always \u597B 1345-1236-2 always \u597C 12-345-4 always \u597D 1235-146-4 @@ -22809,29 +22812,29 @@ always \u5985 1235-12346-2 always \u5986 1-456-3 always \u5987 12345-34-5 always \u5988 134-345-3 -always \u5989 1456 +always \u5989 145-1236-3 always \u598A 1245-136-5 -always \u598B 1456 -always \u598C 1456 +always \u598B 12345-34-3 +always \u598C 13-13456-5 always \u598D 2345-2 always \u598E 1235-2456-5 always \u598F 123456-5 always \u5990 1-12346-3 -always \u5991 1456 +always \u5991 1234-345-3 always \u5992 145-34-5 always \u5993 13-16-5 -always \u5994 1456 -always \u5995 1456 +always \u5994 123-1356-3 +always \u5995 1-12346-5 always \u5996 246-3 always \u5997 13-1456-5 always \u5998 256-2 always \u5999 134-246-5 -always \u599A 1456 +always \u599A 1234-356-3 always \u599B 1456 -always \u599C 1456 +always \u599C 236-5 always \u599D 1-456-3 always \u599E 1345-234-3 -always \u599F 1456 +always \u599F 2345-5 always \u59A0 1345-345-5 always \u59A1 15-1456-3 always \u59A2 12345-136-2 @@ -22844,36 +22847,36 @@ always \u59A8 12345-1346-2 always \u59A9 34-4 always \u59AA 1256-5 always \u59AB 13-1246-3 -always \u59AC 1456 -always \u59AD 1456 +always \u59AC 145-34-5 +always \u59AD 135-345-2 always \u59AE 1345-16-2 always \u59AF 1-12356-2 -always \u59B0 1456 +always \u59B0 1-25-2 always \u59B1 1-146-3 always \u59B2 145-345-2 always \u59B3 13457-16-4 always \u59B4 12456-4 always \u59B5 124-12356-4 always \u59B6 15-45-2 -always \u59B7 1456 -always \u59B8 1456 +always \u59B7 1-156-2 +always \u59B8 2346-3 always \u59B9 134-356-5 always \u59BA 134-126-5 always \u59BB 245-16-3 always \u59BC 135-16-5 always \u59BD 24-136-3 always \u59BE 245-346-5 -always \u59BF 1456 +always \u59BF 2346-3 always \u59C0 1235-2346-2 always \u59C1 15-1256-4 -always \u59C2 1456 +always \u59C2 12345-345-2 always \u59C3 1-1356-3 -always \u59C4 1456 +always \u59C4 134-1456-2 always \u59C5 135-1236-5 always \u59C6 134-34-4 always \u59C7 12345-34-5 always \u59C8 14-13456-2 -always \u59C9 1456 +always \u59C9 125-156-4 always \u59CA 13-346-4 always \u59CB 24-156-4 always \u59CC 1245-1236-4 @@ -22885,34 +22888,34 @@ always \u59D1 13-34-3 always \u59D2 15-156-5 always \u59D3 15-13456-5 always \u59D4 1246-4 -always \u59D5 1456 +always \u59D5 125-156-3 always \u59D6 13-1256-5 always \u59D7 24-1236-3 always \u59D8 1234-1456-3 -always \u59D9 1456 +always \u59D9 1245-136-5 always \u59DA 246-2 always \u59DB 124-12346-4 always \u59DC 13-46-3 always \u59DD 24-34-3 always \u59DE 13-16-2 -always \u59DF 1456 +always \u59DF 13-2456-3 always \u59E0 24-1346-5 always \u59E1 13-35-3 -always \u59E2 1456 +always \u59E2 13-45-3 always \u59E3 13-246-4 always \u59E4 13-12356-5 always \u59E5 14-146-4 always \u59E6 13-2345-3 -always \u59E7 1456 +always \u59E7 13-2345-3 always \u59E8 16-2 always \u59E9 1345-2345-5 always \u59EA 1-156-2 -always \u59EB 1456 +always \u59EB 13-16-3 always \u59EC 13-16-3 always \u59ED 15-2345-5 always \u59EE 1235-1356-2 -always \u59EF 1456 -always \u59F0 1456 +always \u59EF 13-456-3 +always \u59F0 13-256-3 always \u59F1 123-35-3 always \u59F2 2345-5 always \u59F3 134-13456-4 @@ -22920,8 +22923,8 @@ always \u59F4 14-346-5 always \u59F5 1234-356-5 always \u59F6 2345-4 always \u59F7 234-5 -always \u59F8 1456 -always \u59F9 1456 +always \u59F8 2345-2 +always \u59F9 12-345-5 always \u59FA 15-1456-3 always \u59FB 1456-3 always \u59FC 24-156-2 @@ -22930,7 +22933,7 @@ always \u59FE 245-45-3 always \u59FF 125-156-3 always \u5A00 15-12346-3 always \u5A01 1246-3 -always \u5A02 1456 +always \u5A02 1235-12346-2 always \u5A03 35-2 always \u5A04 14-12356-2 always \u5A05 23456-5 @@ -22939,44 +22942,44 @@ always \u5A07 13-246-3 always \u5A08 14-45-4 always \u5A09 1234-13456-3 always \u5A0A 15-2345-5 -always \u5A0B 1456 +always \u5A0B 24-146-5 always \u5A0C 14-16-4 -always \u5A0D 1456 -always \u5A0E 1456 +always \u5A0D 12-1356-2 +always \u5A0E 15-246-5 always \u5A0F 134-1346-2 always \u5A10 1456 always \u5A11 15-25-3 -always \u5A12 1456 +always \u5A12 34-4 always \u5A13 1246-4 -always \u5A14 1456 +always \u5A14 123-2346-5 always \u5A15 14-2456-5 always \u5A16 12-25-5 always \u5A17 124-13456-4 always \u5A18 1345-46-2 always \u5A19 13456-4 -always \u5A1A 1456 +always \u5A1A 1345-1236-2 always \u5A1B 1256-2 always \u5A1C 1345-345-5 -always \u5A1D 1456 +always \u5A1D 1234-356-3 always \u5A1E 1345-356-4 always \u5A1F 13-45-3 always \u5A20 12-136-2 -always \u5A21 1456 -always \u5A22 1456 +always \u5A21 1-156-5 +always \u5A22 1235-1236-2 always \u5A23 145-16-5 -always \u5A24 1456 +always \u5A24 1-456-3 always \u5A25 2346-2 -always \u5A26 1456 -always \u5A27 1456 -always \u5A28 1456 +always \u5A26 1234-1456-2 +always \u5A27 124-1246-5 +always \u5A28 1235-1236-5 always \u5A29 134-2345-4 -always \u5A2A 1456 -always \u5A2B 1456 -always \u5A2C 1456 +always \u5A2A 34-2 +always \u5A2B 2345-2 +always \u5A2C 34-4 always \u5A2D 15-16-3 always \u5A2E 2345-2 -always \u5A2F 1456 -always \u5A30 1456 +always \u5A2F 1256-2 +always \u5A30 15-156-5 always \u5A31 1256-2 always \u5A32 35-3 always \u5A33 135-345-1 @@ -22986,28 +22989,28 @@ always \u5A36 245-1256-4 always \u5A37 24-1246-5 always \u5A38 245-16-3 always \u5A39 15-2345-2 -always \u5A3A 1456 -always \u5A3B 1456 +always \u5A3A 1-1246-3 +always \u5A3B 145-12346-3 always \u5A3C 12-1346-3 -always \u5A3D 1456 +always \u5A3D 14-34-5 always \u5A3E 2456-4 -always \u5A3F 1456 +always \u5A3F 2346-3 always \u5A40 2346-3 always \u5A41 14-12356-4 always \u5A42 134-2345-2 always \u5A43 245-12346-2 always \u5A44 1234-12356-4 -always \u5A45 1456 +always \u5A45 13-1256-2 always \u5A46 1234-126-2 always \u5A47 245-2456-4 always \u5A48 145-13456-2 always \u5A49 12456-4 always \u5A4A 135-246-4 -always \u5A4B 1456 +always \u5A4B 15-246-3 always \u5A4C 24-34-4 always \u5A4D 245-16-4 -always \u5A4E 1456 -always \u5A4F 1456 +always \u5A4E 1235-1246-3 +always \u5A4F 12345-34-5 always \u5A50 25-4 always \u5A51 25-4 always \u5A52 124-1236-2 @@ -23017,7 +23020,7 @@ always \u5A55 13-346-3 always \u5A56 124-2345-3 always \u5A57 1345-16-2 always \u5A58 245-45-2 -always \u5A59 1456 +always \u5A59 13-13456-5 always \u5A5A 1235-123456-3 always \u5A5B 13-13456-3 always \u5A5C 245-2345-3 @@ -23025,83 +23028,83 @@ always \u5A5D 145-2345-5 always \u5A5E 15-13456-5 always \u5A5F 1235-34-5 always \u5A60 12456-2 -always \u5A61 1456 +always \u5A61 14-2456-2 always \u5A62 135-16-5 -always \u5A63 1456 +always \u5A63 1456-3 always \u5A64 1-12356-3 always \u5A65 12-25-5 always \u5A66 12345-34-5 always \u5A67 245-13456-5 -always \u5A68 1456 +always \u5A68 14-123456-2 always \u5A69 2345-4 always \u5A6A 14-1236-2 -always \u5A6B 1456 +always \u5A6B 123-123456-3 always \u5A6C 1456-2 always \u5A6D 23456-5 always \u5A6E 1456 -always \u5A6F 1456 +always \u5A6F 14-16-5 always \u5A70 145-2345-4 -always \u5A71 1456 +always \u5A71 15-2345-2 always \u5A72 1456 -always \u5A73 1456 +always \u5A73 1235-35-5 always \u5A74 13456-3 always \u5A75 12-1236-2 always \u5A76 24-136-4 always \u5A77 124-13456-2 always \u5A78 145-1346-5 -always \u5A79 1456 +always \u5A79 246-4 always \u5A7A 34-5 always \u5A7B 1345-1236-5 always \u5A7C 12-25-5 always \u5A7D 13-23456-4 -always \u5A7E 1456 +always \u5A7E 124-12356-3 always \u5A7F 15-1256-5 -always \u5A80 1456 -always \u5A81 1456 -always \u5A82 1456 +always \u5A80 1256-2 +always \u5A81 1246-3 +always \u5A82 124-16-2 always \u5A83 1245-12356-2 always \u5A84 134-356-4 -always \u5A85 1456 -always \u5A86 1456 -always \u5A87 1456 +always \u5A85 145-1236-3 +always \u5A86 1245-12456-4 +always \u5A87 245-1456-3 always \u5A88 1456 -always \u5A89 1456 +always \u5A89 34-3 always \u5A8A 245-2345-2 always \u5A8B 12-123456-3 always \u5A8C 134-146-2 -always \u5A8D 1456 +always \u5A8D 12345-34-5 always \u5A8E 135-345-1 always \u5A8F 145-12456-3 always \u5A90 15-16-3 -always \u5A91 1456 +always \u5A91 1-12346-5 always \u5A92 134-356-2 always \u5A93 1235-456-2 always \u5A94 134-2345-2 always \u5A95 2345-4 -always \u5A96 1456 +always \u5A96 13456-3 always \u5A97 15-45-3 always \u5A98 1456 -always \u5A99 1456 +always \u5A99 1246-3 always \u5A9A 134-356-5 always \u5A9B 45-2 always \u5A9C 1-136-3 always \u5A9D 245-234-3 always \u5A9E 24-156-5 always \u5A9F 15-346-5 -always \u5AA0 1456 -always \u5AA1 1456 +always \u5AA0 124-25-4 +always \u5AA1 14-2345-5 always \u5AA2 134-146-5 -always \u5AA3 1456 -always \u5AA4 1456 +always \u5AA3 1245-1236-4 +always \u5AA4 15-156-3 always \u5AA5 1234-2345-3 always \u5AA6 1246-5 always \u5AA7 35-3 -always \u5AA8 1456 +always \u5AA8 13-234-5 always \u5AA9 1235-34-2 always \u5AAA 146-4 always \u5AAB 1456 always \u5AAC 135-146-4 -always \u5AAD 1456 +always \u5AAD 15-1256-3 always \u5AAE 124-12356-3 always \u5AAF 13-1246-3 always \u5AB0 125-12356-3 @@ -23123,9 +23126,9 @@ always \u5ABF 123-1246-5 always \u5AC0 245-1456-2 always \u5AC1 13-23456-5 always \u5AC2 15-146-4 -always \u5AC3 1456 +always \u5AC3 1-136-3 always \u5AC4 45-2 -always \u5AC5 1456 +always \u5AC5 12-345-3 always \u5AC6 235-2 always \u5AC7 134-13456-2 always \u5AC8 13456-3 @@ -23134,12 +23137,12 @@ always \u5ACA 15-34-5 always \u5ACB 1345-246-4 always \u5ACC 15-2345-2 always \u5ACD 124-146-3 -always \u5ACE 1456 -always \u5ACF 1456 -always \u5AD0 1456 -always \u5AD1 1456 +always \u5ACE 1234-1346-2 +always \u5ACF 14-1346-2 +always \u5AD0 1345-146-4 +always \u5AD1 135-146-2 always \u5AD2 2456-5 -always \u5AD3 1456 +always \u5AD3 1234-16-5 always \u5AD4 1234-1456-2 always \u5AD5 16-5 always \u5AD6 1234-246-2 @@ -23156,10 +23159,10 @@ always \u5AE0 14-16-2 always \u5AE1 145-16-2 always \u5AE2 13-1246-3 always \u5AE3 2345-3 -always \u5AE4 1456 +always \u5AE4 13-1456-5 always \u5AE5 1-12456-3 always \u5AE6 12-1346-2 -always \u5AE7 1456 +always \u5AE7 245-2346-5 always \u5AE8 1235-1236-3 always \u5AE9 1345-136-5 always \u5AEA 14-146-5 @@ -23167,8 +23170,8 @@ always \u5AEB 134-126-2 always \u5AEC 1-2346-3 always \u5AED 1235-34-5 always \u5AEE 1235-34-5 -always \u5AEF 1456 -always \u5AF0 1456 +always \u5AEF 146-5 +always \u5AF0 1345-136-5 always \u5AF1 245-46-2 always \u5AF2 1456 always \u5AF3 1234-346-5 @@ -23180,52 +23183,52 @@ always \u5AF8 1-1236-4 always \u5AF9 134-146-2 always \u5AFA 15-2345-2 always \u5AFB 15-2345-2 -always \u5AFC 1456 +always \u5AFC 134-126-5 always \u5AFD 14-246-2 -always \u5AFE 1456 +always \u5AFE 14-2345-2 always \u5AFF 1235-35-5 -always \u5B00 1456 +always \u5B00 13-1246-3 always \u5B01 145-1356-3 always \u5B02 1-156-3 always \u5B03 15-1256-3 always \u5B04 1456 always \u5B05 1235-35-5 -always \u5B06 1456 +always \u5B06 15-16-3 always \u5B07 1235-1246-5 always \u5B08 1245-146-2 always \u5B09 15-16-3 -always \u5B0A 1456 +always \u5B0A 2345-5 always \u5B0B 12-1236-2 always \u5B0C 13-246-3 -always \u5B0D 1456 -always \u5B0E 1456 +always \u5B0D 134-356-4 +always \u5B0E 12345-1236-5 always \u5B0F 12345-1236-3 always \u5B10 15-2345-3 -always \u5B11 1456 -always \u5B12 1456 +always \u5B11 16-5 +always \u5B12 1246-5 always \u5B13 13-246-5 always \u5B14 12345-34-5 -always \u5B15 1456 +always \u5B15 24-156-5 always \u5B16 135-16-5 always \u5B17 24-1236-5 -always \u5B18 1456 +always \u5B18 15-1246-5 always \u5B19 245-46-2 always \u5B1A 14-2345-2 always \u5B1B 15-45-3 always \u5B1C 1456 always \u5B1D 1345-246-4 always \u5B1E 145-12346-4 -always \u5B1F 1456 +always \u5B1F 16-5 always \u5B20 245-1236-2 always \u5B21 2456-5 -always \u5B22 1456 +always \u5B22 1345-46-2 always \u5B23 1345-1356-2 always \u5B24 134-345-3 always \u5B25 124-246-4 always \u5B26 12-12356-2 always \u5B27 13-1456-5 always \u5B28 245-156-2 -always \u5B29 1456 +always \u5B29 1256-2 always \u5B2A 1234-1456-2 always \u5B2B 1456 always \u5B2C 1245-34-2 @@ -23233,40 +23236,40 @@ always \u5B2D 1345-2456-4 always \u5B2E 2345-3 always \u5B2F 124-2456-2 always \u5B30 13456-3 -always \u5B31 1456 +always \u5B31 245-1236-2 always \u5B32 1345-246-4 always \u5B33 1456 always \u5B34 13456-2 -always \u5B35 1456 +always \u5B35 134-2345-2 always \u5B36 1456 always \u5B37 134-345-3 always \u5B38 24-136-4 -always \u5B39 1456 -always \u5B3A 1456 -always \u5B3B 1456 +always \u5B39 15-13456-5 +always \u5B3A 1345-16-5 +always \u5B3B 145-34-2 always \u5B3C 14-234-4 always \u5B3D 45-3 always \u5B3E 14-1236-4 always \u5B3F 2345-4 always \u5B40 24-456-3 -always \u5B41 1456 -always \u5B42 1456 +always \u5B41 14-13456-2 +always \u5B42 13-246-4 always \u5B43 1345-46-2 -always \u5B44 1456 +always \u5B44 14-1236-4 always \u5B45 15-2345-3 -always \u5B46 1456 +always \u5B46 13456-3 always \u5B47 24-456-3 always \u5B48 24-2356-3 -always \u5B49 1456 -always \u5B4A 1456 +always \u5B49 245-45-2 +always \u5B4A 134-16-4 always \u5B4B 14-16-2 always \u5B4C 14-45-4 always \u5B4D 2345-2 always \u5B4E 1-34-4 -always \u5B4F 1456 +always \u5B4F 14-1236-4 always \u5B50 125-156-4 always \u5B51 13-346-2 -always \u5B52 1456 +always \u5B52 13-236-2 always \u5B53 13-236-2 always \u5B54 123-12346-4 always \u5B55 256-5 @@ -23278,63 +23281,63 @@ always \u5B5A 12345-34-2 always \u5B5B 135-126-2 always \u5B5C 125-156-3 always \u5B5D 15-246-5 -always \u5B5E 1456 +always \u5B5E 15-1456-5 always \u5B5F 134-1356-5 -always \u5B60 1456 -always \u5B61 1456 +always \u5B60 15-156-5 +always \u5B61 124-2456-3 always \u5B62 135-146-3 always \u5B63 13-16-5 always \u5B64 13-34-3 always \u5B65 1345-34-2 always \u5B66 15-236-2 always \u5B67 1456 -always \u5B68 1456 +always \u5B68 1-12456-4 always \u5B69 1235-2456-2 always \u5B6A 14-45-2 always \u5B6B 15-123456-3 always \u5B6C 1235-2356-5 -always \u5B6D 1456 +always \u5B6D 134-346-3 always \u5B6E 245-12346-2 -always \u5B6F 1456 +always \u5B6F 245-2345-3 always \u5B70 24-34-2 always \u5B71 12-1236-2 always \u5B72 23456-3 always \u5B73 125-156-3 -always \u5B74 1456 +always \u5B74 1345-16-4 always \u5B75 12345-34-3 -always \u5B76 1456 +always \u5B76 125-156-3 always \u5B77 14-16-2 always \u5B78 15-236-2 -always \u5B79 1456 +always \u5B79 135-126-5 always \u5B7A 1245-34-2 always \u5B7B 1345-2456-2 -always \u5B7C 1456 +always \u5B7C 1345-346-5 always \u5B7D 1345-346-5 -always \u5B7E 1456 +always \u5B7E 13456-3 always \u5B7F 14-45-2 always \u5B80 134-2345-2 always \u5B81 1-34-5 -always \u5B82 1456 +always \u5B82 1245-12346-4 always \u5B83 124-345-3 always \u5B84 13-1246-4 always \u5B85 1-2456-2 -always \u5B86 1456 +always \u5B86 245-235-2 always \u5B87 1256-4 always \u5B88 24-12356-4 always \u5B89 1236-3 -always \u5B8A 1456 +always \u5B8A 124-34-2 always \u5B8B 15-12346-5 always \u5B8C 12456-2 -always \u5B8D 1456 +always \u5B8D 1245-12356-5 always \u5B8E 246-3 always \u5B8F 1235-12346-2 -always \u5B90 1456 -always \u5B91 1456 +always \u5B90 16-2 +always \u5B91 13-13456-4 always \u5B92 1-123456-3 always \u5B93 134-16-5 -always \u5B94 1456 +always \u5B94 1-34-4 always \u5B95 145-1346-5 -always \u5B96 1456 +always \u5B96 1235-12346-2 always \u5B97 125-12346-3 always \u5B98 13-12456-3 always \u5B99 1-12356-5 @@ -23343,7 +23346,7 @@ always \u5B9B 12456-4 always \u5B9C 16-2 always \u5B9D 135-146-4 always \u5B9E 24-156-2 -always \u5B9F 1456 +always \u5B9F 24-156-2 always \u5BA0 12-12346-4 always \u5BA1 24-136-4 always \u5BA2 123-2346-5 @@ -23353,58 +23356,58 @@ always \u5BA5 234-5 always \u5BA6 1235-12456-5 always \u5BA7 16-2 always \u5BA8 124-246-4 -always \u5BA9 1456 +always \u5BA9 24-156-4 always \u5BAA 15-2345-5 always \u5BAB 13-12346-3 always \u5BAC 12-1356-2 always \u5BAD 245-256-2 always \u5BAE 13-12346-3 -always \u5BAF 1456 +always \u5BAF 15-246-3 always \u5BB0 125-2456-4 -always \u5BB1 1456 -always \u5BB2 1456 +always \u5BB1 1-345-5 +always \u5BB2 135-146-4 always \u5BB3 1235-2456-5 always \u5BB4 2345-5 always \u5BB5 15-246-3 always \u5BB6 13-23456-3 -always \u5BB7 1456 +always \u5BB7 24-136-4 always \u5BB8 12-136-2 always \u5BB9 1245-12346-2 -always \u5BBA 1456 -always \u5BBB 1456 -always \u5BBC 1456 +always \u5BBA 1235-456-4 +always \u5BBB 134-16-5 +always \u5BBC 123-12356-5 always \u5BBD 123-12456-3 always \u5BBE 135-1456-3 always \u5BBF 15-34-5 always \u5BC0 245-2456-5 always \u5BC1 125-1236-4 always \u5BC2 13-16-2 -always \u5BC3 1456 +always \u5BC3 45-3 always \u5BC4 13-16-5 always \u5BC5 1456-2 always \u5BC6 134-16-5 always \u5BC7 123-12356-5 -always \u5BC8 1456 -always \u5BC9 1456 +always \u5BC8 245-13456-3 +always \u5BC9 245-236-5 always \u5BCA 1-136-3 always \u5BCB 13-2345-4 always \u5BCC 12345-34-5 always \u5BCD 1345-13456-2 always \u5BCE 135-13456-5 -always \u5BCF 1456 +always \u5BCF 1235-12456-2 always \u5BD0 134-356-5 always \u5BD1 245-1456-4 always \u5BD2 1235-1236-2 always \u5BD3 1256-5 always \u5BD4 24-156-2 -always \u5BD5 1456 +always \u5BD5 1345-13456-2 always \u5BD6 13-1456-5 -always \u5BD7 1456 +always \u5BD7 1345-13456-2 always \u5BD8 1-156-5 always \u5BD9 1256-4 -always \u5BDA 1456 -always \u5BDB 1456 -always \u5BDC 1456 +always \u5BDA 135-146-4 +always \u5BDB 123-12456-3 +always \u5BDC 1345-13456-2 always \u5BDD 245-1456-4 always \u5BDE 134-126-5 always \u5BDF 12-345-2 @@ -23421,31 +23424,31 @@ always \u5BE9 24-136-4 always \u5BEA 1246-4 always \u5BEB 15-346-4 always \u5BEC 123-12456-3 -always \u5BED 1456 +always \u5BED 1235-1246-5 always \u5BEE 14-246-2 always \u5BEF 13-256-5 always \u5BF0 1235-12456-2 always \u5BF1 16-5 always \u5BF2 16-2 -always \u5BF3 1456 -always \u5BF4 1456 +always \u5BF3 135-146-4 +always \u5BF4 245-1456-5 always \u5BF5 12-12346-4 always \u5BF6 135-146-4 -always \u5BF7 1456 +always \u5BF7 12345-1356-3 always \u5BF8 245-123456-5 always \u5BF9 145-1246-5 always \u5BFA 15-156-5 always \u5BFB 15-256-2 always \u5BFC 145-146-4 -always \u5BFD 1456 -always \u5BFE 1456 +always \u5BFD 14-1256-5 +always \u5BFE 145-1246-5 always \u5BFF 24-12356-5 -always \u5C00 1456 +always \u5C00 1234-126-4 always \u5C01 12345-1356-3 -always \u5C02 1456 +always \u5C02 1-12456-3 always \u5C03 12345-34-3 always \u5C04 24-2346-5 -always \u5C05 1456 +always \u5C05 123-2346-5 always \u5C06 13-46-3 always \u5C07 13-46-3 always \u5C08 1-12456-3 @@ -23459,42 +23462,42 @@ always \u5C0F 15-246-4 always \u5C10 13-16-3 always \u5C11 24-146-4 always \u5C12 156-4 -always \u5C13 1456 +always \u5C13 156-4 always \u5C14 156-4 always \u5C15 135-345-1 always \u5C16 13-2345-3 -always \u5C17 1456 +always \u5C17 24-34-2 always \u5C18 12-136-2 -always \u5C19 1456 +always \u5C19 24-1346-5 always \u5C1A 24-1346-5 always \u5C1B 1456 -always \u5C1C 1456 +always \u5C1C 13-345-2 always \u5C1D 12-1346-2 -always \u5C1E 1456 +always \u5C1E 14-246-5 always \u5C1F 15-2345-4 -always \u5C20 1456 +always \u5C20 15-2345-4 always \u5C21 1456 always \u5C22 456-3 -always \u5C23 1456 +always \u5C23 456-3 always \u5C24 234-2 always \u5C25 14-246-5 -always \u5C26 1456 +always \u5C26 14-246-5 always \u5C27 246-2 always \u5C28 134-1346-2 -always \u5C29 1456 +always \u5C29 456-3 always \u5C2A 456-3 -always \u5C2B 1456 +always \u5C2B 456-3 always \u5C2C 13-345-5 -always \u5C2D 1456 -always \u5C2E 1456 -always \u5C2F 1456 +always \u5C2D 246-2 +always \u5C2E 145-25-5 +always \u5C2F 123-1246-5 always \u5C30 1-12346-4 always \u5C31 13-234-5 -always \u5C32 1456 +always \u5C32 13-1236-3 always \u5C33 13-34-4 always \u5C34 13-1236-3 -always \u5C35 1456 -always \u5C36 1456 +always \u5C35 124-1246-2 +always \u5C36 13-1236-3 always \u5C37 13-1236-3 always \u5C38 24-156-3 always \u5C39 1456-4 @@ -23507,7 +23510,7 @@ always \u5C3F 1345-246-5 always \u5C40 13-1256-2 always \u5C41 1234-16-5 always \u5C42 245-1356-2 -always \u5C43 1456 +always \u5C43 15-16-5 always \u5C44 135-16-3 always \u5C45 13-1256-3 always \u5C46 13-346-5 @@ -23522,20 +23525,20 @@ always \u5C4E 24-156-4 always \u5C4F 1234-13456-2 always \u5C50 13-16-3 always \u5C51 15-346-5 -always \u5C52 1456 -always \u5C53 1456 +always \u5C52 12-136-2 +always \u5C53 15-16-5 always \u5C54 1345-16-2 always \u5C55 1-1236-4 always \u5C56 15-16-3 always \u5C57 1456 always \u5C58 134-1236-3 always \u5C59 2346-3 -always \u5C5A 1456 -always \u5C5B 1456 +always \u5C5A 14-12356-5 +always \u5C5B 1234-13456-2 always \u5C5C 124-16-5 always \u5C5D 12345-356-5 always \u5C5E 24-34-4 -always \u5C5F 1456 +always \u5C5F 15-346-5 always \u5C60 124-34-2 always \u5C61 14-1256-4 always \u5C62 14-1256-4 @@ -23547,42 +23550,42 @@ always \u5C67 15-346-5 always \u5C68 14-1256-4 always \u5C69 245-246-3 always \u5C6A 14-246-2 -always \u5C6B 1456 +always \u5C6B 13-236-2 always \u5C6C 24-34-4 always \u5C6D 15-16-5 always \u5C6E 12-2346-5 always \u5C6F 124-123456-2 -always \u5C70 1456 +always \u5C70 1345-16-5 always \u5C71 24-1236-3 always \u5C72 1456 always \u5C73 15-2345-3 always \u5C74 14-16-5 -always \u5C75 1456 +always \u5C75 15-236-3 always \u5C76 1456 always \u5C77 1456 -always \u5C78 1456 +always \u5C78 14-12346-2 always \u5C79 16-5 always \u5C7A 245-16-4 always \u5C7B 1245-136-5 always \u5C7C 34-5 -always \u5C7D 1456 +always \u5C7D 1235-1236-5 always \u5C7E 24-136-3 always \u5C7F 1256-4 -always \u5C80 1456 +always \u5C80 12-34-3 always \u5C81 15-1246-5 always \u5C82 245-16-4 always \u5C83 1456 -always \u5C84 1456 -always \u5C85 1456 +always \u5C84 236-5 +always \u5C85 135-1236-4 always \u5C86 246-4 -always \u5C87 1456 +always \u5C87 1346-2 always \u5C88 15-23456-3 always \u5C89 34-5 always \u5C8A 13-346-2 always \u5C8B 2346-5 always \u5C8C 13-16-2 always \u5C8D 245-2345-3 -always \u5C8E 1456 +always \u5C8E 12345-136-3 always \u5C8F 12456-2 always \u5C90 245-16-2 always \u5C91 245-136-2 @@ -23593,12 +23596,12 @@ always \u5C95 13-346-5 always \u5C96 245-1256-3 always \u5C97 13-1346-3 always \u5C98 15-2345-5 -always \u5C99 1456 +always \u5C99 146-5 always \u5C9A 14-1236-2 always \u5C9B 145-146-4 -always \u5C9C 1456 +always \u5C9C 135-345-3 always \u5C9D 125-2346-2 -always \u5C9E 1456 +always \u5C9E 125-25-5 always \u5C9F 46-4 always \u5CA0 13-1256-5 always \u5CA1 13-1346-3 @@ -23618,24 +23621,24 @@ always \u5CAE 124-25-2 always \u5CAF 1234-356-3 always \u5CB0 234-4 always \u5CB1 145-2456-5 -always \u5CB2 1456 +always \u5CB2 123-456-5 always \u5CB3 236-5 -always \u5CB4 1456 +always \u5CB4 245-1256-3 always \u5CB5 1235-34-5 always \u5CB6 1234-126-5 always \u5CB7 134-1456-2 always \u5CB8 1236-5 -always \u5CB9 1456 -always \u5CBA 1456 -always \u5CBB 1456 +always \u5CB9 124-246-2 +always \u5CBA 14-13456-2 +always \u5CBB 12-156-2 always \u5CBC 1456 -always \u5CBD 1456 +always \u5CBD 145-12346-3 always \u5CBE 1456 always \u5CBF 123-1246-3 -always \u5CC0 1456 -always \u5CC1 1456 -always \u5CC2 1456 -always \u5CC3 1456 +always \u5CC0 15-234-5 +always \u5CC1 134-146-4 +always \u5CC2 124-12346-2 +always \u5CC3 15-236-2 always \u5CC4 16-5 always \u5CC5 1456 always \u5CC6 1235-2346-3 @@ -23645,91 +23648,91 @@ always \u5CC9 2346-2 always \u5CCA 12345-34-5 always \u5CCB 15-256-2 always \u5CCC 145-346-2 -always \u5CCD 1456 +always \u5CCD 14-34-5 always \u5CCE 1236-3 always \u5CCF 156-4 always \u5CD0 13-2456-3 -always \u5CD1 1456 +always \u5CD1 245-45-2 always \u5CD2 124-12346-2 always \u5CD3 16-2 always \u5CD4 134-34-4 -always \u5CD5 1456 +always \u5CD5 24-156-2 always \u5CD6 1236-3 always \u5CD7 1246-2 always \u5CD8 1235-12456-2 always \u5CD9 1-156-5 always \u5CDA 134-16-5 always \u5CDB 14-16-4 -always \u5CDC 1456 -always \u5CDD 1456 +always \u5CDC 13-16-3 +always \u5CDD 124-12346-2 always \u5CDE 123-1246-2 always \u5CDF 234-5 always \u5CE0 1456 always \u5CE1 15-23456-2 -always \u5CE2 1456 -always \u5CE3 1456 +always \u5CE2 14-16-4 +always \u5CE3 246-2 always \u5CE4 245-246-2 always \u5CE5 1-1356-3 always \u5CE6 14-12456-2 -always \u5CE7 1456 +always \u5CE7 13-246-3 always \u5CE8 2346-2 -always \u5CE9 1456 +always \u5CE9 2346-2 always \u5CEA 1256-5 -always \u5CEB 1456 +always \u5CEB 346-2 always \u5CEC 135-34-3 always \u5CED 245-246-5 always \u5CEE 245-256-3 -always \u5CEF 1456 +always \u5CEF 12345-1356-3 always \u5CF0 12345-1356-3 always \u5CF1 1345-146-2 -always \u5CF2 1456 -always \u5CF3 1456 +always \u5CF2 14-16-4 +always \u5CF3 234-2 always \u5CF4 15-2345-5 -always \u5CF5 1456 +always \u5CF5 1235-12346-2 always \u5CF6 145-146-4 always \u5CF7 24-136-3 always \u5CF8 135-345-1 always \u5CF9 124-34-2 -always \u5CFA 1456 +always \u5CFA 13-1356-4 always \u5CFB 13-256-5 -always \u5CFC 1456 +always \u5CFC 1235-146-5 always \u5CFD 15-23456-2 -always \u5CFE 1456 +always \u5CFE 1456-3 always \u5CFF 1256-4 always \u5D00 14-1346-4 always \u5D01 123-1236-4 always \u5D02 14-146-3 always \u5D03 14-2456-2 -always \u5D04 1456 -always \u5D05 1456 +always \u5D04 15-2345-4 +always \u5D05 245-236-5 always \u5D06 123-12346-3 always \u5D07 12-12346-2 -always \u5D08 1456 -always \u5D09 1456 +always \u5D08 12-12346-2 +always \u5D09 124-345-5 always \u5D0A 1456 always \u5D0B 1235-35-2 always \u5D0C 13-1256-3 always \u5D0D 14-2456-2 always \u5D0E 245-16-2 always \u5D0F 134-1456-2 -always \u5D10 1456 +always \u5D10 123-123456-3 always \u5D11 123-123456-3 always \u5D12 125-34-2 -always \u5D13 1456 +always \u5D13 13-34-5 always \u5D14 245-1246-3 -always \u5D15 1456 +always \u5D15 23456-2 always \u5D16 26-2 always \u5D17 13-1346-3 -always \u5D18 1456 +always \u5D18 14-123456-2 always \u5D19 14-123456-2 always \u5D1A 14-13456-2 always \u5D1B 13-236-2 -always \u5D1C 1456 +always \u5D1C 145-25-3 always \u5D1D 1-1356-3 always \u5D1E 13-25-3 always \u5D1F 1456-2 always \u5D20 145-12346-3 -always \u5D21 1456 +always \u5D21 1235-1236-2 always \u5D22 1-1356-3 always \u5D23 1246-4 always \u5D24 246-2 @@ -23738,12 +23741,12 @@ always \u5D26 2345-3 always \u5D27 15-12346-3 always \u5D28 13-346-2 always \u5D29 135-1356-3 -always \u5D2A 1456 -always \u5D2B 1456 -always \u5D2C 1456 +always \u5D2A 125-34-2 +always \u5D2B 13-236-2 +always \u5D2C 145-12346-3 always \u5D2D 1-1236-4 always \u5D2E 13-34-5 -always \u5D2F 1456 +always \u5D2F 1456-2 always \u5D30 125-156-3 always \u5D31 125-2346-2 always \u5D32 1235-456-2 @@ -23755,68 +23758,68 @@ always \u5D37 245-234-2 always \u5D38 145-123456-5 always \u5D39 124-16-2 always \u5D3A 16-4 -always \u5D3B 1456 +always \u5D3B 1-156-5 always \u5D3C 24-156-5 always \u5D3D 125-2456-4 -always \u5D3E 1456 +always \u5D3E 246-4 always \u5D3F 2346-5 always \u5D40 1-34-5 always \u5D41 123-1236-3 always \u5D42 14-1256-5 always \u5D43 2345-4 -always \u5D44 1456 +always \u5D44 134-356-4 always \u5D45 13-1236-3 -always \u5D46 1456 +always \u5D46 13-16-3 always \u5D47 13-16-3 -always \u5D48 1456 +always \u5D48 1235-12456-4 always \u5D49 124-13456-2 always \u5D4A 24-1356-5 always \u5D4B 134-356-2 always \u5D4C 245-2345-3 -always \u5D4D 1456 +always \u5D4D 34-5 always \u5D4E 1256-2 -always \u5D4F 1456 +always \u5D4F 125-12346-3 always \u5D50 14-1236-2 always \u5D51 1235-2346-2 always \u5D52 2345-2 -always \u5D53 1456 -always \u5D54 1456 +always \u5D53 2345-2 +always \u5D54 1246-4 always \u5D55 125-12346-3 -always \u5D56 1456 -always \u5D57 1456 +always \u5D56 12-345-2 +always \u5D57 15-1246-5 always \u5D58 1245-12346-2 always \u5D59 135-345-1 -always \u5D5A 1456 +always \u5D5A 245-1456-3 always \u5D5B 1256-2 always \u5D5C 1456 always \u5D5D 14-1256-4 always \u5D5E 124-34-2 -always \u5D5F 1456 -always \u5D60 1456 -always \u5D61 1456 +always \u5D5F 145-1246-3 +always \u5D60 15-16-3 +always \u5D61 12346-3 always \u5D62 245-1346-3 always \u5D63 145-1346-3 -always \u5D64 1456 +always \u5D64 1235-12346-2 always \u5D65 13-346-2 -always \u5D66 1456 +always \u5D66 2456-2 always \u5D67 14-234-2 always \u5D68 34-4 always \u5D69 15-12346-3 -always \u5D6A 1456 +always \u5D6A 245-246-3 always \u5D6B 125-156-3 always \u5D6C 1246-2 -always \u5D6D 1456 -always \u5D6E 1456 +always \u5D6D 135-1356-3 +always \u5D6E 145-2345-3 always \u5D6F 245-25-2 -always \u5D70 1456 +always \u5D70 245-2345-4 always \u5D71 235-4 always \u5D72 1345-346-5 -always \u5D73 1456 -always \u5D74 1456 +always \u5D73 245-25-2 +always \u5D74 13-16-2 always \u5D75 1456 always \u5D76 1456 always \u5D77 15-12346-4 -always \u5D78 1456 +always \u5D78 125-12346-3 always \u5D79 13-46-5 always \u5D7A 14-246-2 always \u5D7B 1456 @@ -23827,31 +23830,31 @@ always \u5D7F 145-13456-4 always \u5D80 124-34-3 always \u5D81 14-1256-4 always \u5D82 1-1346-5 -always \u5D83 1456 +always \u5D83 1-1236-4 always \u5D84 1-1236-4 -always \u5D85 1456 +always \u5D85 146-2 always \u5D86 245-146-2 always \u5D87 245-1256-3 always \u5D88 245-46-3 always \u5D89 125-1246-4 always \u5D8A 125-1246-4 -always \u5D8B 1456 -always \u5D8C 1456 +always \u5D8B 145-146-4 +always \u5D8C 145-146-4 always \u5D8D 15-16-2 -always \u5D8E 1456 -always \u5D8F 1456 -always \u5D90 1456 -always \u5D91 1456 +always \u5D8E 1256-5 +always \u5D8F 135-126-2 +always \u5D90 14-12346-2 +always \u5D91 15-46-4 always \u5D92 245-1356-2 always \u5D93 135-126-3 always \u5D94 245-2345-3 always \u5D95 13-246-3 -always \u5D96 1456 +always \u5D96 2345-4 always \u5D97 14-146-3 -always \u5D98 1456 +always \u5D98 1-1236-5 always \u5D99 14-1456-2 always \u5D9A 14-246-2 -always \u5D9B 1456 +always \u5D9B 14-246-2 always \u5D9C 13-1456-3 always \u5D9D 145-1356-5 always \u5D9E 145-25-5 @@ -23859,15 +23862,15 @@ always \u5D9F 125-123456-3 always \u5DA0 245-246-2 always \u5DA1 13-1246-5 always \u5DA2 246-2 -always \u5DA3 1456 -always \u5DA4 1456 -always \u5DA5 1456 -always \u5DA6 1456 +always \u5DA3 245-246-2 +always \u5DA4 246-2 +always \u5DA5 13-236-2 +always \u5DA6 1-1236-3 always \u5DA7 16-5 always \u5DA8 15-236-3 always \u5DA9 1345-146-3 always \u5DAA 346-5 -always \u5DAB 1456 +always \u5DAB 346-5 always \u5DAC 16-2 always \u5DAD 2346-5 always \u5DAE 15-2345-4 @@ -23875,56 +23878,56 @@ always \u5DAF 1-345-2 always \u5DB0 15-346-5 always \u5DB1 123-2346-4 always \u5DB2 15-1246-4 -always \u5DB3 1456 +always \u5DB3 145-16-5 always \u5DB4 146-5 always \u5DB5 125-1246-5 always \u5DB6 1456 always \u5DB7 1345-16-5 always \u5DB8 1245-12346-2 -always \u5DB9 1456 +always \u5DB9 145-146-4 always \u5DBA 14-13456-4 -always \u5DBB 1456 +always \u5DBB 125-345-2 always \u5DBC 1256-4 always \u5DBD 236-5 -always \u5DBE 1456 +always \u5DBE 1456-4 always \u5DBF 1456 always \u5DC0 125-345-2 -always \u5DC1 1456 +always \u5DC1 14-16-5 always \u5DC2 15-16-3 always \u5DC3 14-12346-2 -always \u5DC4 1456 +always \u5DC4 14-12346-2 always \u5DC5 145-2345-3 always \u5DC6 13456-2 always \u5DC7 15-16-3 -always \u5DC8 1456 +always \u5DC8 13-1256-2 always \u5DC9 12-1236-2 -always \u5DCA 1456 +always \u5DCA 13456-4 always \u5DCB 123-1246-3 -always \u5DCC 1456 +always \u5DCC 2345-2 always \u5DCD 1246-2 -always \u5DCE 1456 +always \u5DCE 1345-146-2 always \u5DCF 245-45-2 -always \u5DD0 1456 +always \u5DD0 12-146-4 always \u5DD1 245-12456-2 always \u5DD2 14-12456-2 -always \u5DD3 1456 +always \u5DD3 145-2345-3 always \u5DD4 145-2345-3 always \u5DD5 1345-346-5 always \u5DD6 2345-2 -always \u5DD7 1456 +always \u5DD7 2345-2 always \u5DD8 2345-4 -always \u5DD9 1456 -always \u5DDA 1456 +always \u5DD9 1345-146-2 +always \u5DDA 2345-4 always \u5DDB 378-23678 -always \u5DDC 1456 +always \u5DDC 13-1246-5 always \u5DDD 12-12456-3 always \u5DDE 1-12356-3 always \u5DDF 1235-456-3 always \u5DE0 13-13456-3 always \u5DE1 15-256-2 always \u5DE2 12-146-2 -always \u5DE3 1456 -always \u5DE4 1456 +always \u5DE3 12-146-2 +always \u5DE4 14-346-3 always \u5DE5 13-12346-3 always \u5DE6 125-25-4 always \u5DE7 245-246-4 @@ -23941,37 +23944,37 @@ always \u5DF1 13-16-4 always \u5DF2 16-4 always \u5DF3 15-156-5 always \u5DF4 135-345-3 -always \u5DF5 1456 -always \u5DF6 1456 +always \u5DF5 1-156-3 +always \u5DF6 1-146-3 always \u5DF7 15-46-5 -always \u5DF8 1456 +always \u5DF8 16-2 always \u5DF9 13-1456-4 -always \u5DFA 1456 -always \u5DFB 1456 +always \u5DFA 15-256-5 +always \u5DFB 13-45-5 always \u5DFC 1456 always \u5DFD 15-256-5 always \u5DFE 13-1456-3 always \u5DFF 12345-34-2 -always \u5E00 1456 +always \u5E00 125-345-3 always \u5E01 135-16-5 always \u5E02 24-156-5 always \u5E03 135-34-5 always \u5E04 145-13456-3 always \u5E05 24-2356-5 always \u5E06 12345-1236-2 -always \u5E07 1456 +always \u5E07 1345-346-5 always \u5E08 24-156-3 -always \u5E09 1456 +always \u5E09 12345-136-3 always \u5E0A 1234-345-5 -always \u5E0B 1456 +always \u5E0B 1-156-4 always \u5E0C 15-16-3 -always \u5E0D 1456 +always \u5E0D 1235-34-5 always \u5E0E 145-1236-5 always \u5E0F 1246-2 always \u5E10 1-1346-5 always \u5E11 124-1346-4 -always \u5E12 1456 -always \u5E13 1456 +always \u5E12 145-2456-5 +always \u5E13 134-345-5 always \u5E14 1234-356-5 always \u5E15 1234-345-5 always \u5E16 124-346-4 @@ -23982,7 +23985,7 @@ always \u5E1A 1-12356-4 always \u5E1B 135-126-2 always \u5E1C 1-156-5 always \u5E1D 145-16-5 -always \u5E1E 1456 +always \u5E1E 134-126-5 always \u5E1F 16-5 always \u5E20 16-5 always \u5E21 1234-13456-2 @@ -23994,37 +23997,37 @@ always \u5E26 145-2456-5 always \u5E27 1-1356-5 always \u5E28 24-1246-5 always \u5E29 245-246-5 -always \u5E2A 1456 +always \u5E2A 1-136-3 always \u5E2B 24-156-3 -always \u5E2C 1456 +always \u5E2C 245-256-2 always \u5E2D 15-16-2 always \u5E2E 135-1346-3 -always \u5E2F 1456 -always \u5E30 1456 +always \u5E2F 145-2456-5 +always \u5E30 13-1246-3 always \u5E31 12-12356-2 -always \u5E32 1456 +always \u5E32 1234-13456-2 always \u5E33 1-1346-5 always \u5E34 24-345-3 -always \u5E35 1456 +always \u5E35 12456-3 always \u5E36 145-2456-5 always \u5E37 1246-2 always \u5E38 12-1346-2 -always \u5E39 1456 -always \u5E3A 1456 +always \u5E39 24-345-5 +always \u5E3A 245-16-2 always \u5E3B 125-2346-2 always \u5E3C 13-25-2 always \u5E3D 134-146-5 always \u5E3E 145-34-4 -always \u5E3F 1456 +always \u5E3F 1235-12356-2 always \u5E40 1-1356-5 always \u5E41 15-1256-3 always \u5E42 134-16-5 always \u5E43 1246-2 always \u5E44 25-5 always \u5E45 12345-34-2 -always \u5E46 1456 -always \u5E47 1456 -always \u5E48 1456 +always \u5E46 16-5 +always \u5E47 135-1346-3 +always \u5E48 1234-13456-2 always \u5E49 1456 always \u5E4A 13-12346-3 always \u5E4B 1234-1236-2 @@ -24032,21 +24035,21 @@ always \u5E4C 1235-456-4 always \u5E4D 145-146-3 always \u5E4E 134-16-5 always \u5E4F 13-23456-5 -always \u5E50 1456 -always \u5E51 1456 -always \u5E52 1456 +always \u5E50 124-1356-2 +always \u5E51 1235-1246-3 +always \u5E52 1-12346-3 always \u5E53 15-136-3 always \u5E54 134-1236-5 always \u5E55 134-34-5 -always \u5E56 1456 +always \u5E56 135-246-3 always \u5E57 13-25-2 always \u5E58 125-2346-2 always \u5E59 134-34-5 -always \u5E5A 1456 +always \u5E5A 135-1346-3 always \u5E5B 1-1346-5 always \u5E5C 13-235-4 always \u5E5D 12-1236-4 -always \u5E5E 1456 +always \u5E5E 12345-34-2 always \u5E5F 1-156-5 always \u5E60 1235-34-3 always \u5E61 12345-1236-3 @@ -24065,13 +24068,13 @@ always \u5E6D 134-346-5 always \u5E6E 12-34-2 always \u5E6F 13-346-2 always \u5E70 15-2345-4 -always \u5E71 1456 -always \u5E72 13-1236-5 +always \u5E71 14-1236-2 +always \u5E72 13-1236-3 always \u5E73 1234-13456-2 always \u5E74 1345-2345-2 always \u5E75 13-2345-3 always \u5E76 135-13456-5 -always \u5E77 1456 +always \u5E77 135-13456-5 always \u5E78 15-13456-5 always \u5E79 13-1236-5 always \u5E7A 378-14678 @@ -24081,11 +24084,11 @@ always \u5E7D 234-3 always \u5E7E 13-16-4 always \u5E7F 13-456-4 always \u5E80 1234-16-4 -always \u5E81 1456 +always \u5E81 124-13456-3 always \u5E82 125-2346-5 -always \u5E83 1456 +always \u5E83 13-456-4 always \u5E84 1-456-3 -always \u5E85 1456 +always \u5E85 134-126-1 always \u5E86 245-13456-5 always \u5E87 135-16-5 always \u5E88 245-1456-2 @@ -24094,7 +24097,7 @@ always \u5E8A 12-456-2 always \u5E8B 13-1246-4 always \u5E8C 23456-4 always \u5E8D 135-2456-5 -always \u5E8E 1456 +always \u5E8E 13-346-5 always \u5E8F 15-1256-5 always \u5E90 14-34-2 always \u5E91 34-4 @@ -24104,16 +24107,16 @@ always \u5E94 13456-3 always \u5E95 145-16-4 always \u5E96 1234-146-2 always \u5E97 145-2345-5 -always \u5E98 1456 +always \u5E98 23456-3 always \u5E99 134-246-5 always \u5E9A 13-1356-3 always \u5E9B 245-156-5 always \u5E9C 12345-34-4 -always \u5E9D 1456 +always \u5E9D 124-12346-2 always \u5E9E 1234-1346-2 always \u5E9F 12345-356-5 always \u5EA0 15-46-2 -always \u5EA1 1456 +always \u5EA1 16-4 always \u5EA2 1-156-5 always \u5EA3 124-246-3 always \u5EA4 1-156-5 @@ -24121,13 +24124,13 @@ always \u5EA5 15-234-3 always \u5EA6 145-34-5 always \u5EA7 125-25-5 always \u5EA8 15-246-3 -always \u5EA9 1456 +always \u5EA9 124-34-2 always \u5EAA 13-1246-4 always \u5EAB 123-34-5 always \u5EAC 1234-1346-2 always \u5EAD 124-13456-2 always \u5EAE 234-4 -always \u5EAF 1456 +always \u5EAF 135-34-3 always \u5EB0 135-13456-4 always \u5EB1 12-1356-4 always \u5EB2 14-2456-2 @@ -24138,16 +24141,16 @@ always \u5EB6 24-34-5 always \u5EB7 123-1346-3 always \u5EB8 235-3 always \u5EB9 124-25-2 -always \u5EBA 1456 -always \u5EBB 1456 -always \u5EBC 1456 -always \u5EBD 1456 +always \u5EBA 15-12346-3 +always \u5EBB 24-34-5 +always \u5EBC 245-13456-4 +always \u5EBD 1256-5 always \u5EBE 1256-4 -always \u5EBF 1456 -always \u5EC0 1456 +always \u5EBF 134-246-5 +always \u5EC0 15-12356-3 always \u5EC1 245-2346-5 always \u5EC2 15-46-3 -always \u5EC3 1456 +always \u5EC3 12345-356-5 always \u5EC4 13-234-5 always \u5EC5 1235-2346-2 always \u5EC6 1235-1246-5 @@ -24157,10 +24160,10 @@ always \u5EC9 14-2345-2 always \u5ECA 14-1346-2 always \u5ECB 15-12356-4 always \u5ECC 1-2456-5 -always \u5ECD 1456 +always \u5ECD 1234-12356-4 always \u5ECE 245-13456-3 -always \u5ECF 1456 -always \u5ED0 1456 +always \u5ECF 13-234-5 +always \u5ED0 13-234-5 always \u5ED1 245-1456-2 always \u5ED2 146-2 always \u5ED3 123-25-5 @@ -24187,25 +24190,25 @@ always \u5EE7 245-46-2 always \u5EE8 13-346-5 always \u5EE9 14-1456-4 always \u5EEA 14-1456-4 -always \u5EEB 1456 +always \u5EEB 14-246-2 always \u5EEC 14-34-2 always \u5EED 1456 always \u5EEE 13456-2 always \u5EEF 15-2345-3 -always \u5EF0 1456 +always \u5EF0 124-13456-3 always \u5EF1 235-3 always \u5EF2 14-16-2 always \u5EF3 124-13456-3 always \u5EF4 378-1235678 -always \u5EF5 1456 +always \u5EF5 15-256-2 always \u5EF6 2345-2 always \u5EF7 124-13456-2 -always \u5EF8 1456 -always \u5EF9 1456 +always \u5EF8 145-16-2 +always \u5EF9 1234-126-5 always \u5EFA 13-2345-5 -always \u5EFB 1456 -always \u5EFC 1456 -always \u5EFD 1456 +always \u5EFB 1235-1246-2 +always \u5EFC 1345-2456-4 +always \u5EFD 1235-1246-2 always \u5EFE 13-12346-4 always \u5EFF 1345-2345-5 always \u5F00 123-2456-3 @@ -24214,34 +24217,34 @@ always \u5F02 16-2 always \u5F03 245-16-5 always \u5F04 1345-12346-5 always \u5F05 12345-136-2 -always \u5F06 1456 +always \u5F06 13-1256-4 always \u5F07 2345-3 always \u5F08 16-5 -always \u5F09 1456 +always \u5F09 125-1346-5 always \u5F0A 135-16-5 always \u5F0B 16-5 -always \u5F0C 1456 -always \u5F0D 1456 -always \u5F0E 1456 +always \u5F0C 16-3 +always \u5F0D 156-5 +always \u5F0E 15-1236-3 always \u5F0F 24-156-5 -always \u5F10 1456 +always \u5F10 156-5 always \u5F11 24-156-5 always \u5F12 24-156-5 always \u5F13 13-12346-3 always \u5F14 145-246-5 always \u5F15 1456-4 -always \u5F16 1456 +always \u5F16 1235-34-5 always \u5F17 12345-34-2 always \u5F18 1235-12346-2 -always \u5F19 1456 +always \u5F19 34-3 always \u5F1A 124-1246-2 always \u5F1B 12-156-2 -always \u5F1C 1456 +always \u5F1C 13-46-5 always \u5F1D 135-345-5 -always \u5F1E 1456 +always \u5F1E 24-136-4 always \u5F1F 145-16-5 always \u5F20 1-1346-3 -always \u5F21 1456 +always \u5F21 13-236-2 always \u5F22 124-146-3 always \u5F23 12345-34-4 always \u5F24 145-16-4 @@ -24251,45 +24254,45 @@ always \u5F27 1235-34-2 always \u5F28 12-146-3 always \u5F29 1345-34-4 always \u5F2A 135-345-1 -always \u5F2B 1456 -always \u5F2C 1456 +always \u5F2B 1-136-4 +always \u5F2C 16-2 always \u5F2D 134-16-4 always \u5F2E 245-45-3 always \u5F2F 12456-3 always \u5F30 24-146-3 always \u5F31 1245-25-5 -always \u5F32 1456 +always \u5F32 15-45-3 always \u5F33 135-345-1 -always \u5F34 1456 +always \u5F34 145-123456-3 always \u5F35 1-1346-3 always \u5F36 13-46-5 always \u5F37 245-46-2 always \u5F38 1234-1356-2 always \u5F39 124-1236-2 always \u5F3A 245-46-2 -always \u5F3B 1456 +always \u5F3B 135-16-5 always \u5F3C 135-16-5 -always \u5F3D 1456 -always \u5F3E 1456 -always \u5F3F 1456 +always \u5F3D 24-2346-5 +always \u5F3E 145-1236-5 +always \u5F3F 13-2345-4 always \u5F40 13-12356-5 always \u5F41 1456 -always \u5F42 1456 +always \u5F42 12345-345-3 always \u5F43 135-16-5 always \u5F44 123-12356-3 always \u5F45 1456 always \u5F46 135-346-5 -always \u5F47 1456 +always \u5F47 15-246-3 always \u5F48 124-1236-2 always \u5F49 1235-25-5 always \u5F4A 13-46-3 always \u5F4B 1235-12346-2 always \u5F4C 134-16-2 -always \u5F4D 1456 +always \u5F4D 123-25-5 always \u5F4E 12456-3 always \u5F4F 13-236-2 always \u5F50 378-678 -always \u5F51 1456 +always \u5F51 13-16-5 always \u5F52 13-1246-3 always \u5F53 145-1346-3 always \u5F54 14-34-5 @@ -24298,39 +24301,39 @@ always \u5F56 124-12456-5 always \u5F57 1235-1246-5 always \u5F58 1-156-5 always \u5F59 1235-1246-5 -always \u5F5A 1456 -always \u5F5B 1456 -always \u5F5C 1456 +always \u5F5A 1235-1246-5 +always \u5F5B 16-2 +always \u5F5C 16-2 always \u5F5D 16-2 always \u5F5E 16-2 -always \u5F5F 1456 -always \u5F60 1456 +always \u5F5F 1235-25-5 +always \u5F60 1235-25-5 always \u5F61 24-1236-3 always \u5F62 15-13456-2 -always \u5F63 1456 +always \u5F63 123456-2 always \u5F64 124-12346-2 always \u5F65 2345-5 always \u5F66 2345-5 always \u5F67 1256-5 -always \u5F68 1456 +always \u5F68 12-156-3 always \u5F69 245-2456-4 always \u5F6A 135-246-3 always \u5F6B 145-246-3 always \u5F6C 135-1456-3 always \u5F6D 1234-1356-2 -always \u5F6E 1456 +always \u5F6E 235-4 always \u5F6F 1234-246-3 always \u5F70 1-1346-3 always \u5F71 13456-4 -always \u5F72 1456 +always \u5F72 12-156-3 always \u5F73 12-156-5 always \u5F74 135-126-2 -always \u5F75 1456 +always \u5F75 124-25-4 always \u5F76 13-16-2 always \u5F77 12345-1346-4 always \u5F78 1-12346-3 always \u5F79 16-5 -always \u5F7A 1456 +always \u5F7A 456-2 always \u5F7B 12-2346-5 always \u5F7C 135-16-4 always \u5F7D 145-16-3 @@ -24339,7 +24342,7 @@ always \u5F7F 12345-34-2 always \u5F80 456-4 always \u5F81 1-1356-3 always \u5F82 245-34-2 -always \u5F83 1456 +always \u5F83 456-4 always \u5F84 13-13456-5 always \u5F85 145-2456-5 always \u5F86 15-16-3 @@ -24349,13 +24352,13 @@ always \u5F89 46-2 always \u5F8A 1235-1246-2 always \u5F8B 14-1256-5 always \u5F8C 1235-12356-5 -always \u5F8D 1456 -always \u5F8E 1456 -always \u5F8F 1456 +always \u5F8D 35-3 +always \u5F8E 12-1356-4 +always \u5F8F 1-156-5 always \u5F90 15-1256-2 always \u5F91 13-13456-5 always \u5F92 124-34-2 -always \u5F93 1456 +always \u5F93 245-12346-2 always \u5F94 1456 always \u5F95 14-2456-2 always \u5F96 245-12346-2 @@ -24365,17 +24368,17 @@ always \u5F99 15-16-4 always \u5F9A 1456 always \u5F9B 245-16-3 always \u5F9C 12-1346-2 -always \u5F9D 1456 +always \u5F9D 1-156-5 always \u5F9E 245-12346-2 always \u5F9F 1-12356-3 always \u5FA0 14-2456-2 always \u5FA1 1256-5 -always \u5FA2 1456 -always \u5FA3 1456 -always \u5FA4 1456 +always \u5FA2 15-346-5 +always \u5FA3 13-346-5 +always \u5FA4 13-2345-5 always \u5FA5 12-156-3 always \u5FA6 13-23456-4 -always \u5FA7 1456 +always \u5FA7 135-2345-5 always \u5FA8 1235-456-2 always \u5FA9 12345-34-5 always \u5FAA 15-256-2 @@ -24384,17 +24387,17 @@ always \u5FAC 1234-1346-2 always \u5FAD 246-2 always \u5FAE 1246-2 always \u5FAF 15-16-3 -always \u5FB0 1456 -always \u5FB1 1456 +always \u5FB0 1-1356-3 +always \u5FB1 1234-246-5 always \u5FB2 12-156-2 -always \u5FB3 1456 -always \u5FB4 1456 +always \u5FB3 145-2346-2 +always \u5FB4 1-1356-3 always \u5FB5 1-1356-3 always \u5FB6 135-346-2 always \u5FB7 145-2346-2 -always \u5FB8 1456 +always \u5FB8 12-12346-3 always \u5FB9 12-2346-5 -always \u5FBA 1456 +always \u5FBA 13-246-4 always \u5FBB 1246-5 always \u5FBC 13-246-4 always \u5FBD 1235-1246-3 @@ -24402,65 +24405,65 @@ always \u5FBE 134-356-2 always \u5FBF 14-12346-5 always \u5FC0 15-46-3 always \u5FC1 135-146-5 -always \u5FC2 1456 +always \u5FC2 245-1256-2 always \u5FC3 15-1456-3 always \u5FC4 1456 always \u5FC5 135-16-5 always \u5FC6 16-5 -always \u5FC7 1456 -always \u5FC8 1456 +always \u5FC7 14-2346-5 +always \u5FC8 1245-136-2 always \u5FC9 145-146-3 -always \u5FCA 1456 -always \u5FCB 1456 +always \u5FCA 145-13456-5 +always \u5FCB 13-2456-4 always \u5FCC 13-16-5 always \u5FCD 1245-136-4 -always \u5FCE 1456 +always \u5FCE 1245-136-2 always \u5FCF 245-2345-4 always \u5FD0 124-1236-4 always \u5FD1 124-2346-5 always \u5FD2 124-2346-5 -always \u5FD3 1456 +always \u5FD3 13-1236-3 always \u5FD4 245-16-5 always \u5FD5 145-2456-5 always \u5FD6 245-123456-4 always \u5FD7 1-156-5 always \u5FD8 456-5 always \u5FD9 134-1346-2 -always \u5FDA 1456 -always \u5FDB 1456 -always \u5FDC 1456 +always \u5FDA 15-16-3 +always \u5FDB 12345-1236-2 +always \u5FDC 13456-3 always \u5FDD 124-2345-4 always \u5FDE 134-1456-2 -always \u5FDF 1456 +always \u5FDF 134-1456-2 always \u5FE0 1-12346-3 always \u5FE1 12-12346-3 -always \u5FE2 1456 +always \u5FE2 34-5 always \u5FE3 13-16-2 always \u5FE4 34-4 always \u5FE5 15-16-5 -always \u5FE6 1456 +always \u5FE6 346-5 always \u5FE7 234-3 always \u5FE8 12456-5 -always \u5FE9 1456 +always \u5FE9 245-12346-3 always \u5FEA 15-12346-3 always \u5FEB 123-2356-5 -always \u5FEC 1456 +always \u5FEC 1256-5 always \u5FED 135-2345-5 always \u5FEE 1-156-5 always \u5FEF 245-16-2 -always \u5FF0 1456 +always \u5FF0 245-1246-5 always \u5FF1 12-136-2 -always \u5FF2 1456 +always \u5FF2 124-2456-5 always \u5FF3 124-123456-2 always \u5FF4 245-2345-2 always \u5FF5 1345-2345-5 -always \u5FF6 1456 +always \u5FF6 1235-123456-2 always \u5FF7 15-235-3 always \u5FF8 1345-234-4 -always \u5FF9 1456 +always \u5FF9 456-4 always \u5FFA 15-2345-3 always \u5FFB 15-1456-3 -always \u5FFC 1456 +always \u5FFC 123-1346-3 always \u5FFD 1235-34-3 always \u5FFE 123-2456-5 always \u5FFF 12345-136-5 @@ -24471,8 +24474,8 @@ always \u6003 34-4 always \u6004 12356-5 always \u6005 12-1346-5 always \u6006 12-456-5 -always \u6007 1456 -always \u6008 1456 +always \u6007 13-1256-5 +always \u6008 16-5 always \u6009 135-146-4 always \u600A 12-146-3 always \u600B 134-1456-2 @@ -24488,18 +24491,18 @@ always \u6014 1-1356-3 always \u6015 1234-345-5 always \u6016 135-34-5 always \u6017 124-346-3 -always \u6018 1456 +always \u6018 13-34-5 always \u6019 1235-34-5 always \u601A 13-1256-5 always \u601B 145-345-2 always \u601C 14-13456-2 always \u601D 15-156-3 always \u601E 1-12356-5 -always \u601F 1456 +always \u601F 145-16-5 always \u6020 145-2456-5 always \u6021 16-2 always \u6022 124-34-2 -always \u6023 1456 +always \u6023 234-2 always \u6024 12345-34-3 always \u6025 13-16-2 always \u6026 1234-1356-3 @@ -24512,15 +24515,15 @@ always \u602C 15-16-5 always \u602D 135-16-5 always \u602E 234-3 always \u602F 245-346-5 -always \u6030 1456 -always \u6031 1456 +always \u6030 15-45-5 +always \u6031 245-12346-3 always \u6032 135-13456-4 always \u6033 1235-456-4 always \u6034 15-1256-5 always \u6035 12-34-5 -always \u6036 1456 +always \u6036 1234-16-3 always \u6037 1-34-2 -always \u6038 1456 +always \u6038 15-16-3 always \u6039 124-1236-3 always \u603A 1456 always \u603B 125-12346-4 @@ -24536,32 +24539,32 @@ always \u6044 15-16-5 always \u6045 14-146-4 always \u6046 1235-1356-2 always \u6047 123-456-3 -always \u6048 1456 +always \u6048 134-34-2 always \u6049 1-156-4 -always \u604A 1456 +always \u604A 15-346-2 always \u604B 14-2345-5 always \u604C 124-246-3 always \u604D 1235-456-4 -always \u604E 1456 -always \u604F 1456 +always \u604E 145-346-2 +always \u604F 1235-146-4 always \u6050 123-12346-4 -always \u6051 1456 +always \u6051 13-1246-4 always \u6052 1235-1356-2 always \u6053 15-16-3 always \u6054 13-246-4 always \u6055 24-34-5 always \u6056 1456 -always \u6057 1456 +always \u6057 123-35-4 always \u6058 245-234-3 always \u6059 46-5 always \u605A 1246-5 always \u605B 1235-1246-2 -always \u605C 1456 +always \u605C 12-156-5 always \u605D 13-23456-2 always \u605E 16-2 always \u605F 15-235-3 -always \u6060 1456 -always \u6061 1456 +always \u6060 13-2356-5 +always \u6061 14-1456-5 always \u6062 1235-1246-3 always \u6063 125-156-5 always \u6064 15-1256-5 @@ -24577,11 +24580,11 @@ always \u606D 13-12346-3 always \u606E 245-45-2 always \u606F 15-16-2 always \u6070 245-23456-5 -always \u6071 1456 +always \u6071 236-5 always \u6072 1234-1356-3 always \u6073 123-136-4 -always \u6074 1456 -always \u6075 1456 +always \u6074 145-2346-2 +always \u6075 1235-1246-5 always \u6076 2346-5 always \u6077 1456 always \u6078 124-12346-5 @@ -24590,11 +24593,11 @@ always \u607A 123-2456-4 always \u607B 245-2346-5 always \u607C 1345-146-4 always \u607D 256-5 -always \u607E 1456 +always \u607E 134-1346-2 always \u607F 235-4 always \u6080 235-4 always \u6081 45-3 -always \u6082 1456 +always \u6082 1234-16-3 always \u6083 123-123456-4 always \u6084 245-246-4 always \u6085 236-5 @@ -24603,47 +24606,47 @@ always \u6087 1256-5 always \u6088 13-346-5 always \u6089 15-16-3 always \u608A 1-2346-2 -always \u608B 1456 +always \u608B 14-1456-5 always \u608C 124-16-5 always \u608D 1235-1236-5 always \u608E 1235-146-5 -always \u608F 1456 +always \u608F 245-346-5 always \u6090 124-16-5 -always \u6091 1456 +always \u6091 135-34-5 always \u6092 16-5 -always \u6093 1456 +always \u6093 245-2345-5 always \u6094 1235-1246-4 always \u6095 15-16-3 always \u6096 135-356-5 always \u6097 134-1236-2 -always \u6098 1456 -always \u6099 1456 +always \u6098 16-3 +always \u6099 1235-1356-3 always \u609A 15-12346-4 always \u609B 245-45-3 always \u609C 12-1356-4 always \u609D 123-1246-3 -always \u609E 1456 +always \u609E 34-5 always \u609F 34-5 always \u60A0 234-3 -always \u60A1 1456 +always \u60A1 14-16-2 always \u60A2 14-46-5 always \u60A3 1235-12456-5 -always \u60A4 1456 -always \u60A5 1456 +always \u60A4 245-12346-3 +always \u60A5 16-5 always \u60A6 236-5 -always \u60A7 1456 +always \u60A7 14-16-5 always \u60A8 1345-1456-2 -always \u60A9 1456 -always \u60AA 1456 +always \u60A9 1345-146-4 +always \u60AA 2346-5 always \u60AB 245-236-5 always \u60AC 15-45-2 always \u60AD 245-2345-3 -always \u60AE 1456 +always \u60AE 34-5 always \u60AF 134-1456-4 always \u60B0 245-12346-2 always \u60B1 12345-356-4 always \u60B2 135-356-3 -always \u60B3 1456 +always \u60B3 145-25-2 always \u60B4 245-1246-5 always \u60B5 12-1346-5 always \u60B6 134-136-3 @@ -24658,7 +24661,7 @@ always \u60BE 123-12346-3 always \u60BF 124-2345-4 always \u60C0 14-123456-2 always \u60C1 15-16-3 -always \u60C2 1456 +always \u60C2 123-1236-4 always \u60C3 123-123456-3 always \u60C4 1345-16-5 always \u60C5 245-13456-2 @@ -24666,39 +24669,39 @@ always \u60C6 12-12356-2 always \u60C7 1-123456-3 always \u60C8 13-25-4 always \u60C9 12-1236-3 -always \u60CA 14-46-2 +always \u60CA 13-13456-3 always \u60CB 12456-5 always \u60CC 45-3 always \u60CD 13-1456-3 always \u60CE 13-16-5 always \u60CF 14-1456-2 -always \u60D0 1456 +always \u60D0 1256-5 always \u60D1 1235-25-5 -always \u60D2 1456 +always \u60D2 1235-2346-2 always \u60D3 245-45-2 always \u60D4 124-1236-2 always \u60D5 124-16-5 -always \u60D6 1456 -always \u60D7 1456 +always \u60D6 124-16-5 +always \u60D7 1345-346-3 always \u60D8 456-4 always \u60D9 12-25-5 always \u60DA 1235-34-3 always \u60DB 1235-123456-3 always \u60DC 15-16-2 always \u60DD 12-1346-4 -always \u60DE 1456 +always \u60DE 15-1456-3 always \u60DF 1246-2 always \u60E0 1235-1246-5 always \u60E1 2346-5 always \u60E2 15-25-4 -always \u60E3 1456 +always \u60E3 125-12346-4 always \u60E4 13-2345-3 -always \u60E5 1456 +always \u60E5 235-4 always \u60E6 145-2345-5 always \u60E7 13-1256-5 always \u60E8 245-1236-4 always \u60E9 12-1356-2 -always \u60EA 1456 +always \u60EA 145-2346-2 always \u60EB 135-356-5 always \u60EC 245-346-5 always \u60ED 245-1236-2 @@ -24717,44 +24720,44 @@ always \u60F9 1245-2346-4 always \u60FA 15-13456-3 always \u60FB 245-2346-5 always \u60FC 135-2345-4 -always \u60FD 1456 +always \u60FD 1235-123456-3 always \u60FE 125-12346-3 always \u60FF 124-16-2 always \u6100 245-246-4 always \u6101 12-12356-2 -always \u6102 1456 +always \u6102 135-356-5 always \u6103 15-45-3 always \u6104 1246-3 always \u6105 13-2346-2 always \u6106 245-2345-3 -always \u6107 1456 +always \u6107 1246-4 always \u6108 1256-5 always \u6109 1256-2 always \u610A 135-16-5 always \u610B 15-45-3 -always \u610C 1456 +always \u610C 1235-12456-5 always \u610D 134-1456-4 always \u610E 135-16-5 always \u610F 16-5 always \u6110 134-2345-4 -always \u6111 1456 +always \u6111 235-4 always \u6112 123-2456-5 always \u6113 145-1346-5 always \u6114 1456-3 always \u6115 2346-5 always \u6116 12-136-2 -always \u6117 1456 +always \u6117 134-12356-5 always \u6118 245-23456-5 -always \u6119 1456 +always \u6119 123-2346-5 always \u611A 1256-2 always \u611B 2456-5 always \u611C 245-346-5 always \u611D 2345-4 -always \u611E 1456 +always \u611E 1345-25-5 always \u611F 13-1236-4 always \u6120 256-5 -always \u6121 1456 -always \u6122 1456 +always \u6121 125-12346-4 +always \u6122 15-2456-3 always \u6123 14-1356-5 always \u6124 12345-136-5 always \u6125 1456 @@ -24762,32 +24765,32 @@ always \u6126 123-1246-5 always \u6127 123-1246-5 always \u6128 245-236-5 always \u6129 13-12346-3 -always \u612A 1456 +always \u612A 256-2 always \u612B 15-34-5 always \u612C 15-34-5 -always \u612D 1456 +always \u612D 245-16-2 always \u612E 246-2 always \u612F 15-12346-4 -always \u6130 1456 -always \u6131 1456 +always \u6130 1235-456-4 +always \u6131 13-16-2 always \u6132 13-34-4 -always \u6133 1456 +always \u6133 13-1256-5 always \u6134 12-456-5 -always \u6135 1456 +always \u6135 1345-16-5 always \u6136 15-346-2 always \u6137 123-2456-4 -always \u6138 1456 -always \u6139 1456 -always \u613A 1456 +always \u6138 1-1356-4 +always \u6139 235-4 +always \u613A 245-146-4 always \u613B 15-123456-5 -always \u613C 1456 -always \u613D 1456 +always \u613C 24-136-5 +always \u613D 135-126-2 always \u613E 123-2456-5 always \u613F 45-5 always \u6140 15-346-2 always \u6141 1235-123456-5 -always \u6142 1456 -always \u6143 1456 +always \u6142 235-4 +always \u6143 46-4 always \u6144 14-16-5 always \u6145 15-146-3 always \u6146 124-146-3 @@ -24807,31 +24810,31 @@ always \u6153 1234-246-3 always \u6154 134-34-5 always \u6155 134-34-5 always \u6156 13-25-2 -always \u6157 1456 +always \u6157 12-156-5 always \u6158 245-1236-4 -always \u6159 1456 +always \u6159 245-1236-2 always \u615A 245-1236-2 always \u615B 245-1246-2 -always \u615C 1456 +always \u615C 134-1456-4 always \u615D 124-2346-5 always \u615E 1-1346-3 always \u615F 124-12346-5 -always \u6160 1456 +always \u6160 146-5 always \u6161 24-456-4 always \u6162 134-1236-5 always \u6163 13-12456-5 -always \u6164 1456 +always \u6164 245-236-5 always \u6165 245-146-5 always \u6166 13-234-5 always \u6167 1235-1246-5 always \u6168 123-2456-5 -always \u6169 1456 +always \u6169 14-2345-2 always \u616A 12356-5 always \u616B 15-12346-4 always \u616C 245-1456-2 -always \u616D 1456 +always \u616D 1456-5 always \u616E 14-1256-5 -always \u616F 1456 +always \u616F 24-1346-3 always \u6170 1246-5 always \u6171 124-12456-2 always \u6172 134-1236-2 @@ -24840,53 +24843,53 @@ always \u6174 1-2346-2 always \u6175 235-3 always \u6176 245-13456-5 always \u6177 123-1346-3 -always \u6178 1456 +always \u6178 145-16-5 always \u6179 1-156-2 always \u617A 14-1256-2 -always \u617B 1456 +always \u617B 13-45-5 always \u617C 245-16-3 -always \u617D 1456 +always \u617D 245-16-3 always \u617E 1256-5 -always \u617F 1456 +always \u617F 1234-13456-2 always \u6180 14-246-2 -always \u6181 1456 +always \u6181 245-12346-3 always \u6182 234-3 always \u6183 12-456-3 -always \u6184 1456 -always \u6185 1456 -always \u6186 1456 -always \u6187 1456 -always \u6188 1456 +always \u6184 1-156-5 +always \u6185 124-12346-5 +always \u6186 12-1356-3 +always \u6187 245-16-5 +always \u6188 245-1256-3 always \u6189 1234-1356-2 always \u618A 135-356-5 always \u618B 135-346-3 always \u618C 12-123456-2 always \u618D 13-246-3 always \u618E 125-1356-3 -always \u618F 1456 +always \u618F 12-156-5 always \u6190 14-2345-2 always \u6191 1234-13456-2 always \u6192 123-1246-5 always \u6193 1235-1246-5 always \u6194 245-246-2 -always \u6195 1456 +always \u6195 12-1356-2 always \u6196 1456-5 -always \u6197 1456 -always \u6198 1456 -always \u6199 1456 +always \u6197 1456-5 +always \u6198 15-16-4 +always \u6199 15-16-4 always \u619A 145-1236-5 always \u619B 124-1236-2 -always \u619C 1456 +always \u619C 145-25-4 always \u619D 145-1246-5 -always \u619E 1456 +always \u619E 145-1246-5 always \u619F 15-34-5 -always \u61A0 1456 +always \u61A0 13-236-2 always \u61A1 245-2346-5 always \u61A2 15-246-3 -always \u61A3 1456 +always \u61A3 12345-1236-2 always \u61A4 12345-136-5 -always \u61A5 1456 -always \u61A6 1456 +always \u61A5 14-146-2 +always \u61A6 14-146-5 always \u61A7 12-12346-3 always \u61A8 1235-1236-3 always \u61A9 245-16-5 @@ -24903,20 +24906,20 @@ always \u61B3 124-1236-4 always \u61B4 24-1356-2 always \u61B5 1234-16-3 always \u61B6 16-5 -always \u61B7 1456 +always \u61B7 12-34-4 always \u61B8 15-2345-3 -always \u61B9 1456 +always \u61B9 1345-146-2 always \u61BA 145-1236-5 -always \u61BB 1456 +always \u61BB 124-1236-4 always \u61BC 13-13456-4 -always \u61BD 1456 +always \u61BD 15-12346-3 always \u61BE 1235-1236-5 always \u61BF 13-246-3 -always \u61C0 1456 +always \u61C0 2356-5 always \u61C1 13-45-5 always \u61C2 145-12346-4 always \u61C3 245-1456-2 -always \u61C4 1456 +always \u61C4 245-1456-2 always \u61C5 245-1256-2 always \u61C6 245-146-4 always \u61C7 123-136-4 @@ -24926,27 +24929,27 @@ always \u61CA 146-4 always \u61CB 134-146-5 always \u61CC 16-5 always \u61CD 14-1456-4 -always \u61CE 1456 -always \u61CF 1456 -always \u61D0 1456 +always \u61CE 15-2346-5 +always \u61CF 13-256-5 +always \u61D0 1235-2356-2 always \u61D1 134-136-5 always \u61D2 14-1236-4 -always \u61D3 1456 +always \u61D3 2456-5 always \u61D4 14-1456-4 -always \u61D5 1456 +always \u61D5 2345-3 always \u61D6 13-35-3 -always \u61D7 1456 +always \u61D7 15-23456-5 always \u61D8 12-156-5 -always \u61D9 1456 -always \u61DA 1456 -always \u61DB 1456 -always \u61DC 1456 -always \u61DD 1456 +always \u61D9 1256-4 +always \u61DA 1456-5 +always \u61DB 145-2456-3 +always \u61DC 134-1356-5 +always \u61DD 2456-5 always \u61DE 134-1356-2 always \u61DF 145-1246-5 always \u61E0 245-16-2 -always \u61E1 1456 -always \u61E2 1456 +always \u61E1 134-126-4 +always \u61E2 14-1236-2 always \u61E3 134-136-5 always \u61E4 12-12356-2 always \u61E5 1-156-5 @@ -24956,15 +24959,15 @@ always \u61E8 2345-3 always \u61E9 46-4 always \u61EA 135-126-2 always \u61EB 1-156-2 -always \u61EC 1456 +always \u61EC 123-456-5 always \u61ED 123-456-5 always \u61EE 234-4 -always \u61EF 1456 +always \u61EF 12345-34-3 always \u61F0 14-234-2 always \u61F1 134-346-5 always \u61F2 12-1356-2 always \u61F3 1456 -always \u61F4 1456 +always \u61F4 12-1236-5 always \u61F5 134-1356-2 always \u61F6 14-1236-4 always \u61F7 1235-2356-2 @@ -24978,10 +24981,10 @@ always \u61FE 1-2346-2 always \u61FF 16-5 always \u6200 14-2345-5 always \u6201 1345-1236-4 -always \u6202 1456 +always \u6202 134-16-2 always \u6203 124-1346-4 always \u6204 13-236-2 -always \u6205 1456 +always \u6205 13-1346-5 always \u6206 1-456-5 always \u6207 1-456-5 always \u6208 13-2346-3 @@ -24995,7 +24998,7 @@ always \u620F 15-16-5 always \u6210 12-1356-2 always \u6211 25-4 always \u6212 13-346-5 -always \u6213 1456 +always \u6213 13-2346-3 always \u6214 245-1236-2 always \u6215 245-46-2 always \u6216 1235-25-5 @@ -25004,9 +25007,9 @@ always \u6218 1-1236-5 always \u6219 145-12346-5 always \u621A 245-16-3 always \u621B 13-23456-2 -always \u621C 1456 -always \u621D 1456 -always \u621E 1456 +always \u621C 145-346-2 +always \u621D 125-356-2 +always \u621E 13-23456-2 always \u621F 13-16-4 always \u6220 1-156-2 always \u6221 123-1236-3 @@ -25014,29 +25017,29 @@ always \u6222 13-16-2 always \u6223 123-1246-2 always \u6224 13-2456-5 always \u6225 145-1356-4 -always \u6226 1456 +always \u6226 1-1236-5 always \u6227 12-456-3 -always \u6228 1456 +always \u6228 13-2346-3 always \u6229 13-2345-4 always \u622A 13-346-2 always \u622B 1256-5 always \u622C 13-2345-4 always \u622D 2345-4 always \u622E 14-34-5 -always \u622F 1456 +always \u622F 15-16-5 always \u6230 1-1236-5 -always \u6231 1456 +always \u6231 15-16-5 always \u6232 15-16-5 always \u6233 12-25-3 always \u6234 145-2456-5 -always \u6235 1456 +always \u6235 245-1256-2 always \u6236 1235-34-5 always \u6237 1235-34-5 -always \u6238 1456 -always \u6239 1456 +always \u6238 1235-34-5 +always \u6239 2346-5 always \u623A 24-156-5 -always \u623B 1456 -always \u623C 1456 +always \u623B 14-16-5 +always \u623C 134-146-4 always \u623D 1235-34-5 always \u623E 14-16-5 always \u623F 12345-1346-2 @@ -25044,8 +25047,8 @@ always \u6240 15-25-4 always \u6241 135-2345-4 always \u6242 145-2345-5 always \u6243 13-235-3 -always \u6244 1456 -always \u6245 1456 +always \u6244 24-1346-4 +always \u6245 16-2 always \u6246 16-4 always \u6247 24-1236-5 always \u6248 1235-34-5 @@ -25055,23 +25058,23 @@ always \u624B 24-12356-4 always \u624C 1456 always \u624D 245-2456-2 always \u624E 1-345-2 -always \u624F 1456 +always \u624F 245-234-2 always \u6250 14-2346-5 always \u6251 1234-34-3 always \u6252 1234-345-2 always \u6253 145-345-4 always \u6254 1245-1356-3 -always \u6255 1456 +always \u6255 12345-34-2 always \u6256 1456 -always \u6257 1456 +always \u6257 125-2456-5 always \u6258 124-25-3 always \u6259 13-34-4 always \u625A 12-345-3 always \u625B 123-1346-2 always \u625C 145-123456-5 -always \u625D 1456 +always \u625D 123-34-3 always \u625E 1256-3 -always \u625F 1456 +always \u625F 24-136-3 always \u6260 1-1346-5 always \u6261 34-5 always \u6262 245-2345-3 @@ -25080,7 +25083,7 @@ always \u6264 13-1236-4 always \u6265 145-246-3 always \u6266 16-4 always \u6267 1-156-2 -always \u6268 1456 +always \u6268 1245-136-5 always \u6269 123-25-5 always \u626A 134-136-2 always \u626B 15-146-4 @@ -25093,10 +25096,10 @@ always \u6271 12-345-2 always \u6272 245-2345-2 always \u6273 135-1236-3 always \u6274 13-23456-2 -always \u6275 1456 +always \u6275 1256-2 always \u6276 12345-34-2 always \u6277 146-5 -always \u6278 1456 +always \u6278 15-16-3 always \u6279 1234-16-3 always \u627A 1-156-4 always \u627B 125-156-5 @@ -25106,21 +25109,21 @@ always \u627E 1-146-4 always \u627F 12-1356-2 always \u6280 13-16-5 always \u6281 2345-4 -always \u6282 1456 +always \u6282 123-456-2 always \u6283 135-2345-5 always \u6284 12-146-3 -always \u6285 1456 +always \u6285 13-1256-3 always \u6286 123456-4 always \u6287 1235-34-2 always \u6288 236-5 always \u6289 13-236-2 always \u628A 135-345-4 -always \u628B 1456 +always \u628B 245-1456-5 always \u628C 1-136-4 -always \u628D 1456 +always \u628D 1-1356-4 always \u628E 256-4 always \u628F 12456-2 -always \u6290 1456 +always \u6290 1345-34-5 always \u6291 16-5 always \u6292 24-34-3 always \u6293 1-35-3 @@ -25129,12 +25132,12 @@ always \u6295 124-12356-2 always \u6296 145-12356-4 always \u6297 123-1346-5 always \u6298 1-2346-2 -always \u6299 1456 +always \u6299 1234-12356-2 always \u629A 12345-34-4 always \u629B 1234-146-3 -always \u629C 1456 -always \u629D 1456 -always \u629E 1456 +always \u629C 135-345-2 +always \u629D 146-4 +always \u629E 125-2346-2 always \u629F 124-12456-2 always \u62A0 123-12356-3 always \u62A1 14-123456-2 @@ -25142,8 +25145,8 @@ always \u62A2 245-46-4 always \u62A3 1456 always \u62A4 1235-34-5 always \u62A5 135-146-5 -always \u62A6 1456 -always \u62A7 1456 +always \u62A6 135-13456-4 +always \u62A7 1-156-4 always \u62A8 1234-1356-3 always \u62A9 124-1236-3 always \u62AA 1234-34-3 @@ -25154,24 +25157,24 @@ always \u62AE 1-136-4 always \u62AF 1-345-3 always \u62B0 46-4 always \u62B1 135-146-5 -always \u62B2 1456 +always \u62B2 1235-2346-3 always \u62B3 1345-16-4 always \u62B4 16-5 always \u62B5 145-16-4 always \u62B6 12-156-5 -always \u62B7 1456 +always \u62B7 1234-16-3 always \u62B8 125-345-3 always \u62B9 134-126-4 -always \u62BA 1456 +always \u62BA 134-356-5 always \u62BB 24-136-5 always \u62BC 23456-3 always \u62BD 12-12356-3 always \u62BE 245-1256-3 always \u62BF 134-1456-4 -always \u62C0 1456 -always \u62C1 1456 +always \u62C0 12-34-5 +always \u62C1 13-23456-3 always \u62C2 12345-34-2 -always \u62C3 1456 +always \u62C3 1-1236-4 always \u62C4 1-34-4 always \u62C5 145-1236-3 always \u62C6 12-2456-3 @@ -25189,7 +25192,7 @@ always \u62D1 245-2345-2 always \u62D2 13-1256-5 always \u62D3 124-25-5 always \u62D4 135-345-2 -always \u62D5 1456 +always \u62D5 124-25-3 always \u62D6 124-25-3 always \u62D7 146-5 always \u62D8 13-1256-3 @@ -25197,11 +25200,11 @@ always \u62D9 1-25-2 always \u62DA 1234-1236-5 always \u62DB 1-146-3 always \u62DC 135-2456-5 -always \u62DD 1456 -always \u62DE 1456 +always \u62DD 135-2456-5 +always \u62DE 145-16-4 always \u62DF 1345-16-4 -always \u62E0 1456 -always \u62E1 1456 +always \u62E0 13-1256-5 +always \u62E1 123-25-5 always \u62E2 14-12346-4 always \u62E3 13-2345-4 always \u62E4 1456 @@ -25210,7 +25213,7 @@ always \u62E6 14-1236-2 always \u62E7 1345-13456-2 always \u62E8 135-126-3 always \u62E9 125-2346-2 -always \u62EA 1456 +always \u62EA 245-2345-3 always \u62EB 1235-136-2 always \u62EC 13-35-3 always \u62ED 24-156-5 @@ -25236,13 +25239,13 @@ always \u6300 134-126-5 always \u6301 12-156-2 always \u6302 13-35-5 always \u6303 1-156-5 -always \u6304 1456 -always \u6305 1456 -always \u6306 1456 +always \u6304 123-25-5 +always \u6305 145-25-4 +always \u6306 145-25-4 always \u6307 1-156-4 always \u6308 245-346-5 always \u6309 1236-5 -always \u630A 1456 +always \u630A 1345-12346-5 always \u630B 1-136-5 always \u630C 13-2346-2 always \u630D 13-246-5 @@ -25250,17 +25253,17 @@ always \u630E 123-34-3 always \u630F 145-12346-5 always \u6310 1345-1256-2 always \u6311 124-246-3 -always \u6312 1456 +always \u6312 14-346-5 always \u6313 1-345-3 always \u6314 14-1256-4 always \u6315 145-346-2 always \u6316 35-3 -always \u6317 1456 +always \u6317 13-236-2 always \u6318 1456 -always \u6319 1456 +always \u6319 13-1256-4 always \u631A 1-156-5 always \u631B 14-45-2 -always \u631C 1456 +always \u631C 23456-5 always \u631D 1-35-3 always \u631E 124-345-5 always \u631F 13-23456-2 @@ -25270,7 +25273,7 @@ always \u6322 13-246-4 always \u6323 1-1356-3 always \u6324 13-16-4 always \u6325 1235-1246-3 -always \u6326 1456 +always \u6326 15-256-2 always \u6327 1456 always \u6328 2456-3 always \u6329 124-25-3 @@ -25278,16 +25281,16 @@ always \u632A 1345-25-2 always \u632B 245-25-5 always \u632C 135-126-2 always \u632D 13-1356-4 -always \u632E 1456 +always \u632E 124-16-4 always \u632F 1-136-5 -always \u6330 1456 -always \u6331 1456 +always \u6330 12-1356-2 +always \u6331 15-25-3 always \u6332 15-25-3 always \u6333 123-1356-3 always \u6334 134-356-4 -always \u6335 1456 +always \u6335 14-12346-5 always \u6336 13-1256-2 -always \u6337 1456 +always \u6337 1234-1356-2 always \u6338 13-2345-4 always \u6339 16-5 always \u633A 124-13456-4 @@ -25295,7 +25298,7 @@ always \u633B 24-1236-3 always \u633C 1345-2346-2 always \u633D 12456-4 always \u633E 13-23456-2 -always \u633F 1456 +always \u633F 12-345-3 always \u6340 12345-1356-3 always \u6341 13-246-4 always \u6342 34-5 @@ -25314,8 +25317,8 @@ always \u634E 24-146-3 always \u634F 1345-346-3 always \u6350 13-45-3 always \u6351 125-2346-2 -always \u6352 1456 -always \u6353 1456 +always \u6352 15-12346-4 +always \u6353 346-2 always \u6354 13-236-2 always \u6355 135-34-4 always \u6356 1235-12456-2 @@ -25323,55 +25326,55 @@ always \u6357 135-34-5 always \u6358 125-123456-5 always \u6359 16-5 always \u635A 1-2456-3 -always \u635B 1456 -always \u635C 1456 -always \u635D 1456 +always \u635B 14-1256-4 +always \u635C 15-12356-3 +always \u635D 124-25-3 always \u635E 14-146-3 always \u635F 15-123456-4 -always \u6360 1456 +always \u6360 135-1346-3 always \u6361 13-2345-4 always \u6362 1235-12456-5 always \u6363 145-146-4 always \u6364 1456 always \u6365 12456-5 -always \u6366 1456 +always \u6366 245-1456-2 always \u6367 1234-1356-4 always \u6368 24-2346-4 always \u6369 14-346-5 -always \u636A 1456 +always \u636A 134-1456-2 always \u636B 134-136-2 -always \u636C 1456 +always \u636C 12345-34-4 always \u636D 135-2456-4 always \u636E 13-1256-5 always \u636F 145-146-4 always \u6370 25-4 always \u6371 2456-2 always \u6372 13-45-4 -always \u6373 1456 -always \u6374 1456 +always \u6373 236-5 +always \u6374 125-12346-4 always \u6375 124-2345-4 always \u6376 12-1246-2 always \u6377 13-346-2 always \u6378 124-34-3 -always \u6379 1456 +always \u6379 135-136-5 always \u637A 1345-345-5 always \u637B 1345-2345-4 always \u637C 1345-25-2 always \u637D 125-34-2 -always \u637E 1456 -always \u637F 1456 +always \u637E 25-5 +always \u637F 15-16-3 always \u6380 15-2345-3 always \u6381 12-1356-2 always \u6382 145-2345-3 always \u6383 15-146-4 always \u6384 14-123456-2 always \u6385 245-13456-5 -always \u6386 1456 +always \u6386 13-1346-3 always \u6387 145-25-2 always \u6388 24-12356-5 always \u6389 145-246-5 always \u638A 1234-12356-2 -always \u638B 1456 +always \u638B 145-16-4 always \u638C 1-1346-4 always \u638D 13-123456-4 always \u638E 13-16-4 @@ -25379,14 +25382,14 @@ always \u638F 124-146-3 always \u6390 245-23456-3 always \u6391 245-16-2 always \u6392 1234-2456-2 -always \u6393 1456 +always \u6393 24-34-2 always \u6394 245-2345-3 -always \u6395 1456 +always \u6395 14-13456-5 always \u6396 16-5 always \u6397 23456-5 always \u6398 13-236-2 always \u6399 1-1356-3 -always \u639A 1456 +always \u639A 14-46-4 always \u639B 13-35-5 always \u639C 16-4 always \u639D 1235-25-5 @@ -25398,7 +25401,7 @@ always \u63A2 124-1236-5 always \u63A3 12-2346-5 always \u63A4 135-13456-3 always \u63A5 13-346-3 -always \u63A6 1456 +always \u63A6 124-16-5 always \u63A7 123-12346-5 always \u63A8 124-1246-3 always \u63A9 2345-4 @@ -25410,7 +25413,7 @@ always \u63AE 245-2345-2 always \u63AF 123-136-5 always \u63B0 135-2456-3 always \u63B1 24-12356-4 -always \u63B2 1456 +always \u63B2 13-346-3 always \u63B3 14-34-4 always \u63B4 13-25-2 always \u63B5 1456 @@ -25419,13 +25422,13 @@ always \u63B7 1-156-2 always \u63B8 145-1236-4 always \u63B9 1456 always \u63BA 245-1236-3 -always \u63BB 1456 +always \u63BB 15-146-3 always \u63BC 13-12456-5 always \u63BD 1234-1356-5 always \u63BE 45-5 -always \u63BF 1456 +always \u63BF 1345-25-5 always \u63C0 13-2345-4 -always \u63C1 1456 +always \u63C1 1-136-3 always \u63C2 13-234-3 always \u63C3 13-2345-4 always \u63C4 1256-2 @@ -25441,10 +25444,10 @@ always \u63CD 125-12356-5 always \u63CE 15-45-3 always \u63CF 134-246-2 always \u63D0 124-16-2 -always \u63D1 1456 +always \u63D1 1345-346-3 always \u63D2 12-345-3 always \u63D3 24-156-5 -always \u63D4 1456 +always \u63D4 125-12346-4 always \u63D5 1-136-5 always \u63D6 16-3 always \u63D7 24-123456-4 @@ -25454,21 +25457,21 @@ always \u63DA 46-2 always \u63DB 1235-12456-5 always \u63DC 2345-4 always \u63DD 125-12456-5 -always \u63DE 1456 +always \u63DE 1236-4 always \u63DF 15-1256-3 always \u63E0 23456-5 always \u63E1 25-5 -always \u63E2 1456 +always \u63E2 123-2346-5 always \u63E3 12-2356-4 always \u63E4 13-16-2 always \u63E5 124-16-5 -always \u63E6 1456 +always \u63E6 14-345-2 always \u63E7 14-345-5 always \u63E8 12-1356-2 always \u63E9 123-2456-4 always \u63EA 13-234-3 always \u63EB 13-234-3 -always \u63EC 1456 +always \u63EC 124-34-2 always \u63ED 13-346-3 always \u63EE 1235-1246-3 always \u63EF 13-1356-3 @@ -25479,24 +25482,24 @@ always \u63F3 15-346-5 always \u63F4 45-2 always \u63F5 245-2345-2 always \u63F6 346-2 -always \u63F7 1456 -always \u63F8 1456 +always \u63F7 12-345-3 +always \u63F8 1-345-3 always \u63F9 135-356-3 -always \u63FA 1456 +always \u63FA 246-2 always \u63FB 1456 always \u63FC 1456 always \u63FD 14-1236-4 -always \u63FE 1456 +always \u63FE 123456-5 always \u63FF 245-1456-5 always \u6400 12-1236-3 always \u6401 13-2346-3 always \u6402 14-12356-4 -always \u6403 1456 -always \u6404 1456 +always \u6403 125-12346-4 +always \u6404 13-1356-3 always \u6405 13-246-4 always \u6406 13-12356-3 -always \u6407 1456 -always \u6408 1456 +always \u6407 245-1456-5 +always \u6408 235-4 always \u6409 245-236-5 always \u640A 12-12356-3 always \u640B 12-2356-3 @@ -25505,7 +25508,7 @@ always \u640D 15-123456-4 always \u640E 15-123456-3 always \u640F 135-126-2 always \u6410 12-34-5 -always \u6411 1456 +always \u6411 1245-12346-4 always \u6412 135-1356-5 always \u6413 245-25-3 always \u6414 15-146-3 @@ -25513,11 +25516,11 @@ always \u6415 123-2346-5 always \u6416 246-2 always \u6417 145-146-4 always \u6418 1-156-3 -always \u6419 1456 +always \u6419 1345-34-5 always \u641A 15-346-2 always \u641B 13-2345-3 always \u641C 15-12356-3 -always \u641D 1456 +always \u641D 245-234-4 always \u641E 13-146-4 always \u641F 15-2345-4 always \u6420 24-25-5 @@ -25529,7 +25532,7 @@ always \u6425 12-1246-2 always \u6426 1345-25-5 always \u6427 24-1236-3 always \u6428 124-345-5 -always \u6429 1456 +always \u6429 13-346-2 always \u642A 124-1346-2 always \u642B 1234-1236-2 always \u642C 135-1236-3 @@ -25537,48 +25540,48 @@ always \u642D 145-345-3 always \u642E 14-16-5 always \u642F 124-146-3 always \u6430 1235-34-2 -always \u6431 1456 -always \u6432 1456 +always \u6431 1-156-5 +always \u6432 35-3 always \u6433 15-23456-2 always \u6434 245-2345-3 always \u6435 123456-5 always \u6436 245-46-4 always \u6437 124-2345-2 -always \u6438 1456 +always \u6438 1-136-3 always \u6439 2346-5 always \u643A 15-16-3 -always \u643B 1456 -always \u643C 1456 +always \u643B 1345-25-5 +always \u643C 245-45-2 always \u643D 12-345-2 always \u643E 1-345-5 always \u643F 13-2346-2 always \u6440 34-4 always \u6441 136-5 -always \u6442 1456 +always \u6442 24-2346-5 always \u6443 13-1346-5 always \u6444 24-2346-5 always \u6445 24-34-3 always \u6446 135-2456-4 always \u6447 246-2 always \u6448 135-1456-5 -always \u6449 1456 +always \u6449 15-12356-3 always \u644A 124-1236-3 always \u644B 15-345-5 -always \u644C 1456 +always \u644C 12-1236-4 always \u644D 15-25-3 always \u644E 13-234-3 -always \u644F 1456 +always \u644F 12-12346-3 always \u6450 12-456-3 always \u6451 13-25-2 always \u6452 135-13456-5 always \u6453 12345-1356-2 always \u6454 24-2356-3 -always \u6455 1456 -always \u6456 1456 +always \u6455 145-16-5 +always \u6456 245-16-5 always \u6457 1456 always \u6458 1-2456-3 always \u6459 14-2345-4 -always \u645A 1456 +always \u645A 124-1346-2 always \u645B 12-156-3 always \u645C 13-12456-5 always \u645D 14-34-5 @@ -25586,22 +25589,22 @@ always \u645E 14-25-2 always \u645F 14-12356-4 always \u6460 125-12346-4 always \u6461 13-2456-5 -always \u6462 1456 -always \u6463 1456 -always \u6464 1456 +always \u6462 1235-34-5 +always \u6463 1-345-3 +always \u6464 12-456-4 always \u6465 124-1346-5 always \u6466 1235-35-5 always \u6467 245-1246-3 always \u6468 1345-2456-2 always \u6469 134-126-2 -always \u646A 1456 +always \u646A 13-46-3 always \u646B 13-1246-3 always \u646C 13456-5 always \u646D 1-156-2 always \u646E 146-2 always \u646F 1-156-5 always \u6470 1345-346-5 -always \u6471 1456 +always \u6471 134-1236-2 always \u6472 24-1236-3 always \u6473 123-12356-3 always \u6474 24-34-3 @@ -25612,96 +25615,96 @@ always \u6478 134-126-3 always \u6479 134-126-2 always \u647A 1-2346-2 always \u647B 245-1236-3 -always \u647C 1456 +always \u647C 123-1356-3 always \u647D 135-246-3 -always \u647E 1456 +always \u647E 13-46-5 always \u647F 1456-3 -always \u6480 1456 -always \u6481 1456 +always \u6480 13-12356-5 +always \u6481 245-2345-3 always \u6482 14-236-5 -always \u6483 1456 +always \u6483 13-16-2 always \u6484 13456-3 always \u6485 13-236-3 -always \u6486 1456 +always \u6486 1234-346-3 always \u6487 1234-346-4 always \u6488 14-146-3 always \u6489 145-123456-3 always \u648A 15-2345-5 always \u648B 1245-12456-2 always \u648C 123-1246-5 -always \u648D 1456 -always \u648E 1456 +always \u648D 125-1236-4 +always \u648E 16-5 always \u648F 15-256-2 always \u6490 12-1356-3 always \u6491 12-1356-3 always \u6492 15-345-4 always \u6493 1345-146-2 -always \u6494 1456 +always \u6494 1235-1356-5 always \u6495 15-156-3 always \u6496 245-2345-4 always \u6497 1235-456-2 always \u6498 145-345-3 always \u6499 125-123456-4 always \u649A 1345-2345-4 -always \u649B 1456 +always \u649B 14-1456-4 always \u649C 1-1356-4 always \u649D 1235-1246-3 always \u649E 1-456-5 always \u649F 13-246-4 always \u64A0 13-16-4 -always \u64A1 1456 +always \u64A1 245-146-3 always \u64A2 145-1236-4 always \u64A3 145-1236-4 always \u64A4 12-2346-5 always \u64A5 135-126-3 always \u64A6 12-2346-4 -always \u64A7 1456 -always \u64A8 1456 +always \u64A7 13-236-2 +always \u64A8 15-246-3 always \u64A9 14-246-2 -always \u64AA 1456 +always \u64AA 135-136-5 always \u64AB 12345-34-4 always \u64AC 245-246-3 always \u64AD 135-126-5 always \u64AE 245-25-3 -always \u64AF 1456 +always \u64AF 1-25-2 always \u64B0 1-12456-5 always \u64B1 124-25-4 always \u64B2 1234-34-3 always \u64B3 245-1456-5 -always \u64B4 1456 +always \u64B4 145-123456-3 always \u64B5 1345-2345-4 always \u64B6 1456 always \u64B7 13-346-2 always \u64B8 14-34-4 -always \u64B9 1456 +always \u64B9 13-246-4 always \u64BA 245-12456-3 always \u64BB 124-345-5 always \u64BC 1235-1236-5 always \u64BD 245-246-5 always \u64BE 1-35-3 always \u64BF 13-2345-4 -always \u64C0 1456 +always \u64C0 13-1236-4 always \u64C1 235-4 always \u64C2 14-356-2 always \u64C3 123-25-4 always \u64C4 14-34-4 always \u64C5 24-1236-5 -always \u64C6 1456 +always \u64C6 1-25-2 always \u64C7 125-2346-2 -always \u64C8 1456 +always \u64C8 1234-34-3 always \u64C9 12-25-5 always \u64CA 13-16-2 always \u64CB 145-1346-4 -always \u64CC 1456 +always \u64CC 15-25-4 always \u64CD 245-146-3 always \u64CE 245-13456-2 always \u64CF 13-13456-5 always \u64D0 1235-12456-5 -always \u64D1 1456 +always \u64D1 13-346-3 always \u64D2 245-1456-2 -always \u64D3 1456 +always \u64D3 123-2356-4 always \u64D4 145-1236-3 -always \u64D5 1456 +always \u64D5 15-16-3 always \u64D6 13-2346-5 always \u64D7 1234-16-5 always \u64D8 135-126-5 @@ -25711,33 +25714,33 @@ always \u64DB 346-5 always \u64DC 1456 always \u64DD 1456 always \u64DE 15-12356-4 -always \u64DF 1456 +always \u64DF 134-16-2 always \u64E0 13-16-4 -always \u64E1 1456 +always \u64E1 124-2456-2 always \u64E2 1-25-2 always \u64E3 145-146-4 always \u64E4 15-13456-4 -always \u64E5 1456 +always \u64E5 14-1236-4 always \u64E6 245-345-3 -always \u64E7 1456 +always \u64E7 13-1256-4 always \u64E8 346-2 always \u64E9 1245-34-4 -always \u64EA 1456 +always \u64EA 346-5 always \u64EB 346-5 always \u64EC 1345-16-4 always \u64ED 1235-34-5 -always \u64EE 1456 +always \u64EE 13-16-2 always \u64EF 135-1456-5 always \u64F0 1345-13456-2 always \u64F1 13-2346-3 always \u64F2 1-156-2 always \u64F3 13-346-2 always \u64F4 123-25-5 -always \u64F5 1456 -always \u64F6 1456 +always \u64F5 134-126-2 +always \u64F6 13-2345-5 always \u64F7 13-346-2 always \u64F8 14-346-5 -always \u64F9 1456 +always \u64F9 124-1236-3 always \u64FA 135-2456-4 always \u64FB 15-12356-4 always \u64FC 14-34-4 @@ -25746,22 +25749,22 @@ always \u64FE 1245-146-4 always \u64FF 1-156-2 always \u6500 1234-1236-3 always \u6501 46-4 -always \u6502 1456 +always \u6502 14-356-5 always \u6503 15-345-5 always \u6504 24-34-3 -always \u6505 1456 +always \u6505 125-1236-4 always \u6506 1345-2345-4 always \u6507 15-2345-4 -always \u6508 1456 +always \u6508 13-256-5 always \u6509 1235-25-5 -always \u650A 1456 -always \u650B 1456 +always \u650A 14-16-5 +always \u650B 14-345-5 always \u650C 1235-1236-5 always \u650D 13456-2 always \u650E 14-34-2 always \u650F 14-12346-4 always \u6510 245-2345-3 -always \u6511 1456 +always \u6511 245-2345-3 always \u6512 125-1236-4 always \u6513 245-2345-3 always \u6514 14-1236-2 @@ -25774,8 +25777,8 @@ always \u651A 1456 always \u651B 245-12456-3 always \u651C 15-16-3 always \u651D 24-2346-5 -always \u651E 1456 -always \u651F 1456 +always \u651E 14-25-4 +always \u651F 13-256-5 always \u6520 134-16-2 always \u6521 14-16-2 always \u6522 125-1236-4 @@ -25783,8 +25786,8 @@ always \u6523 14-45-2 always \u6524 124-1236-3 always \u6525 125-12456-5 always \u6526 14-16-5 -always \u6527 1456 -always \u6528 1456 +always \u6527 145-2345-3 +always \u6528 35-3 always \u6529 145-1346-4 always \u652A 13-246-4 always \u652B 13-236-2 @@ -25792,41 +25795,41 @@ always \u652C 14-1236-4 always \u652D 14-16-5 always \u652E 1345-1346-4 always \u652F 1-156-3 -always \u6530 1456 -always \u6531 1456 +always \u6530 13-1246-5 +always \u6531 13-1246-4 always \u6532 245-16-3 always \u6533 15-1456-2 always \u6534 1234-34-3 -always \u6535 1456 +always \u6535 15-1246-3 always \u6536 24-12356-3 always \u6537 123-146-2 always \u6538 234-3 always \u6539 13-2456-4 -always \u653A 1456 +always \u653A 16-4 always \u653B 13-12346-3 -always \u653C 1456 +always \u653C 13-1236-3 always \u653D 135-1236-3 always \u653E 12345-1346-5 always \u653F 1-1356-5 -always \u6540 1456 +always \u6540 135-126-2 always \u6541 145-2345-3 -always \u6542 1456 +always \u6542 123-12356-5 always \u6543 134-1456-4 -always \u6544 1456 +always \u6544 34-5 always \u6545 13-34-5 always \u6546 13-2346-2 -always \u6547 1456 +always \u6547 245-2346-5 always \u6548 15-246-5 always \u6549 134-16-4 always \u654A 12-34-5 -always \u654B 1456 +always \u654B 13-2346-2 always \u654C 145-16-2 -always \u654D 1456 -always \u654E 1456 +always \u654D 15-1256-5 +always \u654E 13-246-5 always \u654F 134-1456-4 -always \u6550 1456 +always \u6550 12-136-2 always \u6551 13-234-5 -always \u6552 1456 +always \u6552 1-136-5 always \u6553 145-25-2 always \u6554 1256-4 always \u6555 12-156-5 @@ -25834,14 +25837,14 @@ always \u6556 146-2 always \u6557 135-2456-5 always \u6558 15-1256-5 always \u6559 13-246-5 -always \u655A 1456 +always \u655A 145-25-2 always \u655B 14-2345-5 always \u655C 1345-346-5 always \u655D 135-16-5 always \u655E 12-1346-4 -always \u655F 1456 -always \u6560 1456 -always \u6561 1456 +always \u655F 145-2345-4 +always \u6560 145-25-2 +always \u6561 16-5 always \u6562 13-1236-4 always \u6563 15-1236-5 always \u6564 123-2346-4 @@ -25849,15 +25852,15 @@ always \u6565 2345-5 always \u6566 145-123456-3 always \u6567 245-16-4 always \u6568 124-12356-4 -always \u6569 1456 +always \u6569 15-246-5 always \u656A 145-25-2 -always \u656B 1456 +always \u656B 13-246-5 always \u656C 13-13456-5 -always \u656D 1456 -always \u656E 1456 +always \u656D 46-2 +always \u656E 15-23456-2 always \u656F 134-1456-4 always \u6570 24-34-5 -always \u6571 1456 +always \u6571 2456-2 always \u6572 245-246-3 always \u6573 2456-2 always \u6574 1-1356-4 @@ -25869,7 +25872,7 @@ always \u6579 14-246-2 always \u657A 245-1256-3 always \u657B 15-235-5 always \u657C 15-16-4 -always \u657D 1456 +always \u657D 13-246-4 always \u657E 1456 always \u657F 13-246-4 always \u6580 1-25-2 @@ -25877,16 +25880,16 @@ always \u6581 16-5 always \u6582 14-2345-5 always \u6583 135-16-5 always \u6584 14-16-5 -always \u6585 1456 -always \u6586 1456 +always \u6585 15-246-5 +always \u6586 15-246-5 always \u6587 123456-2 -always \u6588 1456 -always \u6589 1456 -always \u658A 1456 +always \u6588 15-236-2 +always \u6589 245-16-2 +always \u658A 245-16-2 always \u658B 1-2456-3 always \u658C 135-1456-3 -always \u658D 1456 -always \u658E 1456 +always \u658D 13-236-2 +always \u658E 1-2456-3 always \u658F 1456 always \u6590 12345-356-4 always \u6591 135-1236-3 @@ -25896,9 +25899,9 @@ always \u6594 1256-4 always \u6595 14-1236-2 always \u6596 1246-4 always \u6597 145-12356-4 -always \u6598 1456 +always \u6598 24-1356-3 always \u6599 14-246-5 -always \u659A 1456 +always \u659A 13-23456-4 always \u659B 1235-34-2 always \u659C 15-346-2 always \u659D 13-23456-4 @@ -25907,10 +25910,10 @@ always \u659F 1-136-3 always \u65A0 13-246-5 always \u65A1 25-5 always \u65A2 124-12356-4 -always \u65A3 1456 +always \u65A3 12-34-5 always \u65A4 13-1456-3 always \u65A5 12-156-5 -always \u65A6 1456 +always \u65A6 1456-2 always \u65A7 12345-34-4 always \u65A8 245-46-3 always \u65A9 1-1236-4 @@ -25921,20 +25924,20 @@ always \u65AD 145-12456-5 always \u65AE 1-25-2 always \u65AF 15-156-3 always \u65B0 15-1456-3 -always \u65B1 1456 +always \u65B1 1-25-2 always \u65B2 1-25-2 always \u65B3 245-1456-2 -always \u65B4 1456 -always \u65B5 1456 +always \u65B4 14-1456-2 +always \u65B5 1-25-2 always \u65B6 12-34-5 always \u65B7 145-12456-5 always \u65B8 1-34-4 always \u65B9 12345-1346-3 -always \u65BA 1456 +always \u65BA 15-346-5 always \u65BB 1235-1346-2 always \u65BC 1256-2 always \u65BD 24-156-3 -always \u65BE 1456 +always \u65BE 1234-356-5 always \u65BF 234-2 always \u65C0 1456 always \u65C1 1234-1346-2 @@ -25943,43 +25946,43 @@ always \u65C3 1-1236-3 always \u65C4 134-146-2 always \u65C5 14-1256-4 always \u65C6 1234-356-5 -always \u65C7 1456 -always \u65C8 1456 -always \u65C9 1456 -always \u65CA 1456 +always \u65C7 1234-16-3 +always \u65C8 14-234-2 +always \u65C9 12345-34-3 +always \u65CA 12345-1346-4 always \u65CB 15-45-2 always \u65CC 13-13456-3 always \u65CD 13-13456-3 always \u65CE 1345-16-2 always \u65CF 125-34-2 always \u65D0 1-146-5 -always \u65D1 1456 +always \u65D1 16-4 always \u65D2 14-234-2 always \u65D3 24-146-3 -always \u65D4 1456 +always \u65D4 13-2345-5 always \u65D5 1456 always \u65D6 16-4 always \u65D7 245-16-2 -always \u65D8 1456 -always \u65D9 1456 +always \u65D8 1-156-5 +always \u65D9 12345-1236-3 always \u65DA 1234-246-3 always \u65DB 12345-1236-3 -always \u65DC 1456 +always \u65DC 1-1236-3 always \u65DD 13-2356-5 always \u65DE 15-1246-5 always \u65DF 1256-2 always \u65E0 34-2 always \u65E1 125-1236-3 always \u65E2 13-16-5 -always \u65E3 1456 -always \u65E4 1456 +always \u65E3 13-16-5 +always \u65E4 1235-25-5 always \u65E5 1245-156-5 always \u65E6 145-1236-5 always \u65E7 13-234-5 always \u65E8 1-156-4 always \u65E9 125-146-4 -always \u65EA 1456 -always \u65EB 1456 +always \u65EA 15-346-2 +always \u65EB 124-246-3 always \u65EC 15-256-2 always \u65ED 15-1256-5 always \u65EE 15-1256-5 @@ -25992,16 +25995,16 @@ always \u65F4 15-1256-3 always \u65F5 12-1236-4 always \u65F6 24-156-2 always \u65F7 123-456-5 -always \u65F8 1456 -always \u65F9 1456 +always \u65F8 46-2 +always \u65F9 24-156-2 always \u65FA 456-5 always \u65FB 134-1456-2 always \u65FC 134-1456-2 always \u65FD 124-123456-3 -always \u65FE 1456 -always \u65FF 1456 +always \u65FE 12-123456-3 +always \u65FF 34-4 always \u6600 256-2 -always \u6601 1456 +always \u6601 135-356-5 always \u6602 1346-2 always \u6603 125-2346-5 always \u6604 135-1236-4 @@ -26022,73 +26025,73 @@ always \u6612 1235-34-3 always \u6613 16-5 always \u6614 15-16-2 always \u6615 15-1456-3 -always \u6616 1456 -always \u6617 1456 -always \u6618 1456 +always \u6616 2345-2 +always \u6617 125-2346-5 +always \u6618 12345-1346-4 always \u6619 124-1236-2 -always \u661A 1456 -always \u661B 1456 +always \u661A 24-136-5 +always \u661B 13-1256-5 always \u661C 46-2 always \u661D 125-1236-4 -always \u661E 1456 +always \u661E 135-13456-4 always \u661F 15-13456-3 always \u6620 13456-5 always \u6621 15-45-5 always \u6622 1234-356-4 -always \u6623 1456 +always \u6623 1-136-4 always \u6624 14-13456-3 always \u6625 12-123456-3 always \u6626 1235-146-5 always \u6627 134-356-5 always \u6628 125-25-2 -always \u6629 1456 -always \u662A 1456 +always \u6629 134-126-5 +always \u662A 135-2345-5 always \u662B 15-1256-3 -always \u662C 1456 +always \u662C 1235-123456-3 always \u662D 1-146-3 always \u662E 125-12346-5 always \u662F 24-156-5 -always \u6630 1456 +always \u6630 24-156-5 always \u6631 1256-5 always \u6632 12345-356-5 always \u6633 145-346-2 always \u6634 134-146-4 always \u6635 1345-16-5 always \u6636 12-1346-4 -always \u6637 1456 -always \u6638 1456 +always \u6637 123456-3 +always \u6638 145-12346-3 always \u6639 2456-4 always \u663A 135-13456-4 -always \u663B 1456 +always \u663B 1346-2 always \u663C 1-12356-5 -always \u663D 1456 +always \u663D 14-12346-2 always \u663E 15-2345-4 -always \u663F 1456 -always \u6640 1456 +always \u663F 123-456-5 +always \u6640 124-246-4 always \u6641 1-146-5 always \u6642 24-156-2 always \u6643 1235-456-4 -always \u6644 1456 +always \u6644 1235-456-4 always \u6645 15-45-3 -always \u6646 1456 +always \u6646 123-1246-2 always \u6647 15-1256-3 -always \u6648 1456 +always \u6648 13-246-4 always \u6649 13-1456-5 always \u664A 1-156-4 always \u664B 13-1456-5 always \u664C 24-1346-4 -always \u664D 1456 -always \u664E 1456 +always \u664D 124-12346-2 +always \u664E 1235-12346-4 always \u664F 2345-5 -always \u6650 1456 +always \u6650 13-2456-3 always \u6651 15-46-4 always \u6652 24-2456-5 always \u6653 15-246-4 always \u6654 346-5 always \u6655 256-3 always \u6656 1235-1246-3 -always \u6657 1456 -always \u6658 1456 +always \u6657 1235-1236-2 +always \u6658 1235-1236-5 always \u6659 13-256-5 always \u665A 12456-4 always \u665B 15-2345-5 @@ -26096,28 +26099,28 @@ always \u665C 123-123456-3 always \u665D 1-12356-5 always \u665E 15-16-3 always \u665F 24-1356-5 -always \u6660 1456 +always \u6660 24-1356-2 always \u6661 135-34-3 always \u6662 1-2346-3 -always \u6663 1456 +always \u6663 1-2346-3 always \u6664 34-5 always \u6665 1235-1236-5 always \u6666 1235-1246-5 -always \u6667 1456 +always \u6667 1235-146-5 always \u6668 12-136-2 -always \u6669 1456 +always \u6669 12456-4 always \u666A 124-2345-4 -always \u666B 1456 +always \u666B 1-25-2 always \u666C 125-1246-5 -always \u666D 1456 +always \u666D 1-12356-4 always \u666E 1234-34-4 always \u666F 13-13456-4 always \u6670 15-16-3 always \u6671 24-1236-4 always \u6672 16-4 -always \u6673 1456 +always \u6673 15-16-5 always \u6674 245-13456-2 -always \u6675 1456 +always \u6675 245-16-4 always \u6676 13-13456-3 always \u6677 13-1246-4 always \u6678 1-136-4 @@ -26125,15 +26128,15 @@ always \u6679 16-5 always \u667A 1-156-5 always \u667B 1236-4 always \u667C 12456-4 -always \u667D 1456 +always \u667D 14-1456-2 always \u667E 14-46-5 -always \u667F 1456 +always \u667F 12-1346-3 always \u6680 456-4 -always \u6681 1456 +always \u6681 15-246-4 always \u6682 1-1236-5 always \u6683 1456 always \u6684 15-45-3 -always \u6685 1456 +always \u6685 15-45-4 always \u6686 16-2 always \u6687 15-23456-2 always \u6688 256-3 @@ -26142,62 +26145,62 @@ always \u668A 12345-34-4 always \u668B 134-1456-4 always \u668C 123-1246-2 always \u668D 346-5 -always \u668E 1456 -always \u668F 1456 +always \u668E 13456-5 +always \u668F 145-34-4 always \u6690 1246-4 always \u6691 24-34-4 -always \u6692 1456 -always \u6693 1456 +always \u6692 245-13456-2 +always \u6693 134-146-5 always \u6694 1345-1236-2 always \u6695 13-2345-4 always \u6696 1345-12456-4 always \u6697 1236-5 always \u6698 46-2 always \u6699 12-123456-3 -always \u669A 1456 -always \u669B 1456 -always \u669C 1456 +always \u669A 246-2 +always \u669B 15-25-4 +always \u669C 13-1456-5 always \u669D 134-13456-2 -always \u669E 1456 +always \u669E 13-246-4 always \u669F 123-2456-4 always \u66A0 13-146-4 always \u66A1 12346-4 always \u66A2 12-1346-5 -always \u66A3 1456 -always \u66A4 1456 -always \u66A5 1456 -always \u66A6 1456 +always \u66A3 245-16-5 +always \u66A4 1235-146-5 +always \u66A5 2345-5 +always \u66A6 14-16-5 always \u66A7 2456-5 always \u66A8 13-16-5 always \u66A9 13-1246-5 always \u66AA 134-136-4 always \u66AB 1-1236-5 -always \u66AC 1456 -always \u66AD 1456 +always \u66AC 15-346-5 +always \u66AD 1235-146-5 always \u66AE 134-34-5 always \u66AF 134-126-5 always \u66B0 245-12346-3 always \u66B1 1345-16-5 always \u66B2 1-1346-3 -always \u66B3 1456 +always \u66B3 1235-1246-5 always \u66B4 135-146-5 always \u66B5 1235-1236-4 -always \u66B6 1456 +always \u66B6 15-45-2 always \u66B7 12-12456-2 always \u66B8 14-246-2 always \u66B9 15-2345-3 always \u66BA 145-1236-5 always \u66BB 13-13456-4 -always \u66BC 1456 +always \u66BC 1234-346-3 always \u66BD 14-1456-2 always \u66BE 124-123456-3 -always \u66BF 1456 +always \u66BF 15-16-4 always \u66C0 16-5 -always \u66C1 1456 -always \u66C2 1456 -always \u66C3 1456 +always \u66C1 13-16-5 +always \u66C2 1235-456-5 +always \u66C3 124-2456-5 always \u66C4 346-5 -always \u66C5 1456 +always \u66C5 346-5 always \u66C6 14-16-5 always \u66C7 124-1236-2 always \u66C8 124-12346-2 @@ -26205,17 +26208,17 @@ always \u66C9 15-246-4 always \u66CA 12345-356-5 always \u66CB 245-1456-4 always \u66CC 1-146-5 -always \u66CD 1456 -always \u66CE 1456 +always \u66CD 1235-146-5 +always \u66CE 16-5 always \u66CF 15-46-4 -always \u66D0 1456 -always \u66D1 1456 +always \u66D0 15-13456-3 +always \u66D1 15-136-3 always \u66D2 13-246-4 -always \u66D3 1456 -always \u66D4 1456 -always \u66D5 1456 +always \u66D3 135-146-5 +always \u66D4 13-13456-5 +always \u66D5 2345-5 always \u66D6 2456-5 -always \u66D7 1456 +always \u66D7 346-5 always \u66D8 1245-34-2 always \u66D9 24-34-5 always \u66DA 134-1356-2 @@ -26223,54 +26226,54 @@ always \u66DB 15-256-3 always \u66DC 246-5 always \u66DD 1234-34-5 always \u66DE 14-16-5 -always \u66DF 1456 +always \u66DF 12-136-2 always \u66E0 123-456-5 -always \u66E1 1456 +always \u66E1 145-346-2 always \u66E2 1456 always \u66E3 2345-5 always \u66E4 1235-25-5 -always \u66E5 1456 +always \u66E5 14-34-2 always \u66E6 15-16-3 -always \u66E7 1456 +always \u66E7 1245-12346-2 always \u66E8 14-12346-2 always \u66E9 1345-1346-4 -always \u66EA 1456 +always \u66EA 14-25-4 always \u66EB 14-12456-2 always \u66EC 24-2456-5 always \u66ED 124-1346-4 always \u66EE 2345-4 -always \u66EF 1456 +always \u66EF 12-34-2 always \u66F0 236-3 -always \u66F1 1456 +always \u66F1 236-3 always \u66F2 245-1256-4 always \u66F3 16-5 always \u66F4 13-1356-5 -always \u66F5 1456 +always \u66F5 346-5 always \u66F6 1235-34-3 always \u66F7 1235-2346-2 always \u66F8 24-34-3 always \u66F9 245-146-2 -always \u66FA 1456 +always \u66FA 245-146-2 always \u66FB 1456 always \u66FC 134-1236-5 -always \u66FD 1456 +always \u66FD 245-1356-3 always \u66FE 245-1356-2 always \u66FF 124-16-5 always \u6700 125-1246-5 always \u6701 245-1236-4 -always \u6702 1456 +always \u6702 15-1256-5 always \u6703 1235-1246-5 always \u6704 1456-5 always \u6705 245-346-5 -always \u6706 1456 -always \u6707 1456 +always \u6706 12345-136-3 +always \u6707 1234-16-2 always \u6708 236-5 always \u6709 234-4 always \u670A 13-12456-4 always \u670B 1234-1356-2 -always \u670C 1456 +always \u670C 135-1236-3 always \u670D 12345-34-2 -always \u670E 1456 +always \u670E 14-13456-2 always \u670F 12345-356-4 always \u6710 245-1256-2 always \u6711 1456 @@ -26278,26 +26281,26 @@ always \u6712 1345-1256-5 always \u6713 124-246-4 always \u6714 24-25-5 always \u6715 1-136-5 -always \u6716 1456 +always \u6716 14-1346-4 always \u6717 14-1346-4 always \u6718 13-45-3 -always \u6719 1456 -always \u671A 1456 +always \u6719 134-13456-2 +always \u671A 1235-456-3 always \u671B 456-5 -always \u671C 1456 +always \u671C 124-123456-3 always \u671D 12-146-2 -always \u671E 1456 +always \u671E 13-16-3 always \u671F 245-16-2 always \u6720 13456-3 always \u6721 125-12346-3 always \u6722 456-5 always \u6723 124-12346-2 -always \u6724 1456 +always \u6724 14-1346-4 always \u6725 1456 always \u6726 134-1356-2 always \u6727 14-12346-2 always \u6728 134-34-5 -always \u6729 1456 +always \u6729 145-1356-4 always \u672A 1246-5 always \u672B 134-126-5 always \u672C 135-136-4 @@ -26306,15 +26309,15 @@ always \u672E 1-34-2 always \u672F 24-34-5 always \u6730 1456 always \u6731 1-34-3 -always \u6732 1456 +always \u6732 1245-136-2 always \u6733 135-345-3 always \u6734 1234-34-2 always \u6735 145-25-4 -always \u6736 1456 -always \u6737 1456 +always \u6736 145-25-4 +always \u6737 145-146-3 always \u6738 14-16-5 always \u6739 245-234-2 -always \u673A 13-16-4 +always \u673A 13-16-3 always \u673B 13-234-3 always \u673C 135-16-4 always \u673D 15-234-4 @@ -26324,13 +26327,13 @@ always \u6740 24-345-3 always \u6741 1456 always \u6742 125-345-2 always \u6743 245-45-2 -always \u6744 1456 +always \u6744 245-2345-3 always \u6745 1256-2 always \u6746 13-1236-3 always \u6747 34-3 always \u6748 12-345-3 always \u6749 24-1236-3 -always \u674A 1456 +always \u674A 15-256-2 always \u674B 12345-1236-2 always \u674C 34-5 always \u674D 125-156-4 @@ -26338,16 +26341,16 @@ always \u674E 14-16-4 always \u674F 15-13456-5 always \u6750 245-2456-2 always \u6751 245-123456-3 -always \u6752 1456 +always \u6752 1245-136-5 always \u6753 24-146-2 -always \u6754 1456 +always \u6754 124-25-3 always \u6755 145-16-5 always \u6756 1-1346-5 always \u6757 134-1346-2 -always \u6758 1456 +always \u6758 12-156-5 always \u6759 16-5 always \u675A 13-34-4 -always \u675B 1456 +always \u675B 13-12346-3 always \u675C 145-34-5 always \u675D 1-156-5 always \u675E 245-16-4 @@ -26359,14 +26362,14 @@ always \u6763 1456 always \u6764 1456 always \u6765 14-2456-2 always \u6766 1456 -always \u6767 1456 +always \u6767 134-1346-2 always \u6768 46-2 always \u6769 134-345-5 always \u676A 134-246-4 -always \u676B 1456 +always \u676B 15-156-5 always \u676C 45-2 always \u676D 1235-1346-2 -always \u676E 1456 +always \u676E 12345-356-5 always \u676F 135-356-3 always \u6770 13-346-2 always \u6771 145-12346-3 @@ -26384,56 +26387,56 @@ always \u677C 1-34-5 always \u677D 12-12356-4 always \u677E 15-12346-3 always \u677F 135-1236-4 -always \u6780 1456 +always \u6780 15-12346-3 always \u6781 13-16-2 -always \u6782 1456 +always \u6782 236-5 always \u6783 13-1456-5 -always \u6784 13-12356-3 +always \u6784 13-12356-5 always \u6785 13-16-3 always \u6786 134-146-2 always \u6787 1234-16-2 -always \u6788 1456 +always \u6788 135-16-5 always \u6789 456-4 -always \u678A 1456 +always \u678A 1346-5 always \u678B 12345-1346-3 always \u678C 12345-136-2 always \u678D 16-5 always \u678E 12345-34-2 -always \u678F 1456 +always \u678F 1345-1236-2 always \u6790 15-16-3 always \u6791 1235-34-5 always \u6792 23456-2 always \u6793 145-12356-4 always \u6794 15-256-2 always \u6795 1-136-4 -always \u6796 1456 +always \u6796 246-3 always \u6797 14-1456-2 always \u6798 1245-1246-5 always \u6799 2346-2 always \u679A 134-356-2 -always \u679B 1456 +always \u679B 1-146-5 always \u679C 13-25-4 always \u679D 1-156-3 always \u679E 245-12346-3 always \u679F 256-5 always \u67A0 1456 -always \u67A1 1456 +always \u67A1 145-12356-4 always \u67A2 24-34-3 always \u67A3 125-146-4 always \u67A4 1456 always \u67A5 14-16-5 always \u67A6 1456 -always \u67A7 1456 +always \u67A7 13-2345-5 always \u67A8 12-1356-2 always \u67A9 1456 always \u67AA 245-46-3 always \u67AB 12345-1356-3 -always \u67AC 1456 +always \u67AC 1345-1236-2 always \u67AD 15-246-3 always \u67AE 15-2345-3 always \u67AF 123-34-3 always \u67B0 1234-13456-2 -always \u67B1 1456 +always \u67B1 16-2 always \u67B2 15-16-4 always \u67B3 13-16-4 always \u67B4 13-2356-4 @@ -26444,10 +26447,10 @@ always \u67B8 13-12356-4 always \u67B9 12345-34-2 always \u67BA 134-126-5 always \u67BB 16-5 -always \u67BC 1456 -always \u67BD 1456 -always \u67BE 1456 -always \u67BF 1456 +always \u67BC 346-5 +always \u67BD 346-5 +always \u67BE 24-156-5 +always \u67BF 1345-346-5 always \u67C0 135-16-4 always \u67C1 145-25-5 always \u67C2 16-2 @@ -26455,7 +26458,7 @@ always \u67C3 14-13456-2 always \u67C4 135-13456-4 always \u67C5 1345-16-4 always \u67C6 14-345-3 -always \u67C7 1456 +always \u67C7 1235-2346-2 always \u67C8 1234-1236-2 always \u67C9 12345-1236-2 always \u67CA 1-12346-3 @@ -26469,9 +26472,9 @@ always \u67D1 13-1236-3 always \u67D2 245-16-3 always \u67D3 1245-1236-4 always \u67D4 1245-12356-2 -always \u67D5 1456 -always \u67D6 1456 -always \u67D7 1456 +always \u67D5 134-146-5 +always \u67D6 1-146-3 +always \u67D7 15-12346-3 always \u67D8 1-2346-5 always \u67D9 15-23456-2 always \u67DA 234-5 @@ -26481,7 +26484,7 @@ always \u67DD 124-25-5 always \u67DE 125-25-5 always \u67DF 1345-1236-2 always \u67E0 1345-13456-2 -always \u67E1 1456 +always \u67E1 235-4 always \u67E2 145-16-4 always \u67E3 1-156-2 always \u67E4 1-345-3 @@ -26505,18 +26508,18 @@ always \u67F5 1-345-5 always \u67F6 15-156-5 always \u67F7 12-34-5 always \u67F8 1234-356-3 -always \u67F9 1456 +always \u67F9 24-156-5 always \u67FA 13-2356-4 -always \u67FB 1456 +always \u67FB 12-345-2 always \u67FC 246-4 always \u67FD 12-1356-3 -always \u67FE 1456 +always \u67FE 13-234-5 always \u67FF 24-156-5 always \u6800 1-156-3 -always \u6801 1456 -always \u6802 1456 +always \u6801 14-234-4 +always \u6802 134-356-2 always \u6803 1456 -always \u6804 1456 +always \u6804 1245-12346-2 always \u6805 1-345-5 always \u6806 1456 always \u6807 135-246-3 @@ -26528,39 +26531,39 @@ always \u680C 14-34-2 always \u680D 1456 always \u680E 14-16-5 always \u680F 14-1236-2 -always \u6810 1456 +always \u6810 235-4 always \u6811 24-34-5 always \u6812 15-256-2 always \u6813 24-12456-3 always \u6814 245-16-5 -always \u6815 1456 +always \u6815 1-136-3 always \u6816 15-16-3 always \u6817 14-16-5 always \u6818 16-2 -always \u6819 1456 +always \u6819 15-46-2 always \u681A 1-136-5 -always \u681B 1456 +always \u681B 14-16-5 always \u681C 15-34-5 always \u681D 124-2345-5 -always \u681E 1456 +always \u681E 123-1236-3 always \u681F 135-13456-3 always \u6820 1245-136-4 always \u6821 15-246-5 -always \u6822 1456 -always \u6823 1456 -always \u6824 1456 +always \u6822 135-126-2 +always \u6823 1245-136-4 +always \u6824 135-13456-5 always \u6825 125-156-3 always \u6826 12-12356-2 -always \u6827 1456 +always \u6827 16-5 always \u6828 13-346-2 always \u6829 15-1256-4 always \u682A 1-34-3 always \u682B 125-123456-5 -always \u682C 1456 +always \u682C 125-1246-5 always \u682D 156-2 always \u682E 156-4 always \u682F 1256-5 -always \u6830 1456 +always \u6830 12345-345-2 always \u6831 13-12346-4 always \u6832 123-146-4 always \u6833 14-146-4 @@ -26575,7 +26578,7 @@ always \u683B 12-156-5 always \u683C 13-2346-2 always \u683D 125-2456-3 always \u683E 14-12456-2 -always \u683F 1456 +always \u683F 12345-34-2 always \u6840 13-346-2 always \u6841 1235-1356-2 always \u6842 13-1246-5 @@ -26583,10 +26586,10 @@ always \u6843 124-146-2 always \u6844 13-456-5 always \u6845 1246-2 always \u6846 123-456-3 -always \u6847 1456 +always \u6847 1245-34-2 always \u6848 1236-5 always \u6849 1236-5 -always \u684A 1456 +always \u684A 13-45-5 always \u684B 16-2 always \u684C 1-25-3 always \u684D 123-34-3 @@ -26594,20 +26597,20 @@ always \u684E 1-156-5 always \u684F 245-235-2 always \u6850 124-12346-2 always \u6851 15-1346-3 -always \u6852 1456 +always \u6852 15-1346-3 always \u6853 1235-12456-2 always \u6854 13-346-2 -always \u6855 1456 -always \u6856 1456 -always \u6857 1456 -always \u6858 1456 -always \u6859 1456 -always \u685A 1456 +always \u6855 13-234-5 +always \u6856 15-236-5 +always \u6857 145-25-5 +always \u6858 1-1246-5 +always \u6859 1256-2 +always \u685A 125-1236-4 always \u685B 1456 -always \u685C 1456 +always \u685C 13456-3 always \u685D 1456 always \u685E 1456 -always \u685F 1456 +always \u685F 1-1236-5 always \u6860 23456-3 always \u6861 1345-146-5 always \u6862 1-136-3 @@ -26618,23 +26621,23 @@ always \u6866 1235-35-2 always \u6867 123-2356-5 always \u6868 13-46-4 always \u6869 1-456-3 -always \u686A 1456 +always \u686A 15-256-2 always \u686B 15-25-3 -always \u686C 1456 +always \u686C 24-345-3 always \u686D 1-136-3 always \u686E 135-356-3 always \u686F 124-13456-3 -always \u6870 1456 +always \u6870 13-35-3 always \u6871 13-13456-5 always \u6872 135-126-2 -always \u6873 1456 +always \u6873 135-136-5 always \u6874 12345-34-2 always \u6875 1245-1246-4 always \u6876 124-12346-4 always \u6877 13-236-2 always \u6878 15-16-3 always \u6879 14-1346-2 -always \u687A 1456 +always \u687A 14-234-4 always \u687B 12345-1356-3 always \u687C 245-16-3 always \u687D 123456-4 @@ -26644,40 +26647,40 @@ always \u6880 245-34-5 always \u6881 14-46-2 always \u6882 245-234-2 always \u6883 124-13456-4 -always \u6884 1456 +always \u6884 234-4 always \u6885 134-356-2 always \u6886 135-1346-3 always \u6887 14-12346-5 -always \u6888 1456 +always \u6888 1234-1356-3 always \u6889 1-456-3 always \u688A 1-2346-2 always \u688B 15-45-3 always \u688C 124-34-2 -always \u688D 1456 -always \u688E 1456 +always \u688D 125-146-5 +always \u688E 146-3 always \u688F 13-34-5 always \u6890 135-16-5 always \u6891 145-16-2 always \u6892 1235-1236-2 always \u6893 125-156-4 always \u6894 1-156-3 -always \u6895 1456 +always \u6895 1245-136-5 always \u6896 135-356-5 always \u6897 13-1356-4 -always \u6898 1456 -always \u6899 1456 -always \u689A 1456 +always \u6898 13-2345-5 +always \u6899 1235-12456-5 +always \u689A 12456-4 always \u689B 1345-25-2 always \u689C 13-23456-2 always \u689D 124-246-2 -always \u689E 1456 +always \u689E 13-16-5 always \u689F 15-246-3 always \u68A0 14-1256-4 always \u68A1 123-12456-4 always \u68A2 24-146-3 always \u68A3 245-136-2 always \u68A4 12345-136-2 -always \u68A5 1456 +always \u68A5 15-12346-3 always \u68A6 134-1356-5 always \u68A7 34-2 always \u68A8 14-16-2 @@ -26694,32 +26697,32 @@ always \u68B2 1-25-2 always \u68B3 24-34-3 always \u68B4 12-1236-3 always \u68B5 12345-1236-5 -always \u68B6 1456 -always \u68B7 1456 -always \u68B8 1456 -always \u68B9 1456 +always \u68B6 1246-4 +always \u68B7 13-13456-5 +always \u68B8 14-16-2 +always \u68B9 135-13456-3 always \u68BA 1456 always \u68BB 1456 -always \u68BC 1456 -always \u68BD 1456 -always \u68BE 1456 -always \u68BF 1456 +always \u68BC 124-146-2 +always \u68BD 1-156-5 +always \u68BE 14-2456-2 +always \u68BF 14-2345-2 always \u68C0 13-2345-4 -always \u68C1 1456 +always \u68C1 1-25-2 always \u68C2 14-13456-2 -always \u68C3 1456 +always \u68C3 14-16-2 always \u68C4 245-16-5 -always \u68C5 1456 +always \u68C5 135-13456-5 always \u68C6 1-123456-3 always \u68C7 245-12346-3 always \u68C8 245-2345-5 always \u68C9 134-2345-2 -always \u68CA 1456 +always \u68CA 245-16-2 always \u68CB 245-16-2 always \u68CC 245-2456-4 always \u68CD 13-123456-5 always \u68CE 12-1236-2 -always \u68CF 1456 +always \u68CF 124-2346-5 always \u68D0 12345-356-4 always \u68D1 1234-2456-2 always \u68D2 135-1346-5 @@ -26729,19 +26732,19 @@ always \u68D5 125-12346-3 always \u68D6 12-1356-2 always \u68D7 125-146-4 always \u68D8 13-16-2 -always \u68D9 1456 +always \u68D9 14-16-5 always \u68DA 1234-1356-2 -always \u68DB 1456 +always \u68DB 1256-5 always \u68DC 1256-5 always \u68DD 13-34-5 always \u68DE 1235-123456-2 always \u68DF 145-12346-5 always \u68E0 124-1346-2 always \u68E1 13-1346-3 -always \u68E2 1456 +always \u68E2 456-4 always \u68E3 145-16-5 always \u68E4 15-16-2 -always \u68E5 1456 +always \u68E5 12345-1236-2 always \u68E6 12-1356-3 always \u68E7 1-1236-5 always \u68E8 245-16-4 @@ -26749,7 +26752,7 @@ always \u68E9 45-3 always \u68EA 2345-4 always \u68EB 1256-5 always \u68EC 245-45-3 -always \u68ED 1456 +always \u68ED 16-5 always \u68EE 15-136-3 always \u68EF 1245-136-4 always \u68F0 1-1246-4 @@ -26766,18 +26769,18 @@ always \u68FA 13-12456-3 always \u68FB 12345-136-3 always \u68FC 12345-136-2 always \u68FD 12-136-3 -always \u68FE 1456 -always \u68FF 1456 -always \u6900 1456 +always \u68FE 245-235-2 +always \u68FF 1345-346-5 +always \u6900 12456-4 always \u6901 13-25-4 -always \u6902 1456 -always \u6903 1456 +always \u6902 14-34-5 +always \u6903 1235-146-2 always \u6904 13-346-3 always \u6905 16-4 always \u6906 12-12356-2 always \u6907 13-1256-4 always \u6908 13-1256-2 -always \u6909 1456 +always \u6909 12-1356-2 always \u690A 125-25-2 always \u690B 14-46-2 always \u690C 245-46-3 @@ -26790,15 +26793,15 @@ always \u6912 13-246-3 always \u6913 1-25-2 always \u6914 125-156-3 always \u6915 135-1456-3 -always \u6916 1456 +always \u6916 1234-1356-2 always \u6917 145-13456-5 -always \u6918 1456 +always \u6918 12-34-4 always \u6919 1456 always \u691A 1456 always \u691B 1456 -always \u691C 1456 -always \u691D 1456 -always \u691E 1456 +always \u691C 13-2345-4 +always \u691D 13-1246-3 +always \u691E 15-16-5 always \u691F 145-34-2 always \u6920 13-2345-5 always \u6921 1456 @@ -26811,49 +26814,49 @@ always \u6927 1456 always \u6928 1456 always \u6929 1456 always \u692A 1234-1356-5 -always \u692B 1456 +always \u692B 1-1236-4 always \u692C 1456 always \u692D 124-25-4 -always \u692E 1456 +always \u692E 15-136-3 always \u692F 145-25-4 always \u6930 346-2 -always \u6931 1456 +always \u6931 12345-12356-5 always \u6932 1246-4 always \u6933 1246-3 always \u6934 145-12456-5 always \u6935 13-23456-4 -always \u6936 1456 +always \u6936 125-12346-3 always \u6937 13-2345-3 always \u6938 16-2 always \u6939 1-136-3 -always \u693A 1456 +always \u693A 15-16-2 always \u693B 2345-5 always \u693C 2345-4 always \u693D 12-12456-2 -always \u693E 1456 +always \u693E 1-1236-5 always \u693F 12-123456-3 always \u6940 1256-4 always \u6941 123-2346-5 always \u6942 12-345-2 -always \u6943 1456 +always \u6943 25-5 always \u6944 1234-2345-2 always \u6945 135-16-5 -always \u6946 1456 -always \u6947 1456 +always \u6946 246-3 +always \u6947 1235-25-5 always \u6948 15-1256-3 always \u6949 1245-25-5 always \u694A 46-2 always \u694B 14-345-5 always \u694C 2345-2 -always \u694D 1456 +always \u694D 135-136-4 always \u694E 1235-123456-2 always \u694F 123-1246-2 -always \u6950 1456 +always \u6950 13-346-5 always \u6951 123-1246-2 always \u6952 15-156-3 always \u6953 12345-1356-3 always \u6954 15-346-5 -always \u6955 1456 +always \u6955 124-25-4 always \u6956 13-16-2 always \u6957 13-2345-5 always \u6958 134-34-5 @@ -26865,13 +26868,13 @@ always \u695D 14-2345-5 always \u695E 14-1356-5 always \u695F 124-13456-2 always \u6960 1345-1236-2 -always \u6961 1456 +always \u6961 1256-2 always \u6962 234-2 always \u6963 134-356-2 -always \u6964 1456 +always \u6964 15-12346-4 always \u6965 15-45-5 always \u6966 15-45-5 -always \u6967 1456 +always \u6967 13456-3 always \u6968 1-136-3 always \u6969 1234-2345-2 always \u696A 346-5 @@ -26882,8 +26885,8 @@ always \u696E 12-34-4 always \u696F 24-123456-4 always \u6970 1256-2 always \u6971 245-12356-5 -always \u6972 1456 -always \u6973 1456 +always \u6972 1246-3 +always \u6973 134-356-2 always \u6974 145-16-5 always \u6975 13-16-2 always \u6976 13-346-2 @@ -26893,15 +26896,15 @@ always \u6979 13456-2 always \u697A 1245-12356-2 always \u697B 1235-1356-2 always \u697C 14-12356-2 -always \u697D 1456 +always \u697D 14-2346-5 always \u697E 1456 always \u697F 1456 -always \u6980 1456 +always \u6980 1234-1456-4 always \u6981 1456 always \u6982 13-2456-5 always \u6983 135-345-1 always \u6984 14-1236-4 -always \u6985 1456 +always \u6985 256-2 always \u6986 1256-2 always \u6987 12-136-5 always \u6988 14-1256-2 @@ -26911,26 +26914,26 @@ always \u698B 1456 always \u698C 1456 always \u698D 15-346-5 always \u698E 13-23456-4 -always \u698F 1456 +always \u698F 16-5 always \u6990 1-1236-4 always \u6991 12345-34-2 -always \u6992 1456 +always \u6992 1345-2456-5 always \u6993 134-16-5 always \u6994 14-1346-2 always \u6995 1245-12346-2 always \u6996 13-34-4 always \u6997 13-2345-5 -always \u6998 1456 +always \u6998 13-1256-4 always \u6999 124-345-4 always \u699A 246-4 always \u699B 1-136-3 always \u699C 135-1346-4 -always \u699D 1456 +always \u699D 24-345-3 always \u699E 45-2 -always \u699F 1456 +always \u699F 125-156-4 always \u69A0 134-13456-2 always \u69A1 15-34-5 -always \u69A2 1456 +always \u69A2 13-23456-5 always \u69A3 246-2 always \u69A4 13-346-2 always \u69A5 1235-456-4 @@ -26946,29 +26949,29 @@ always \u69AE 1245-12346-2 always \u69AF 24-156-2 always \u69B0 1-156-3 always \u69B1 245-1246-3 -always \u69B2 1456 +always \u69B2 256-2 always \u69B3 124-13456-2 always \u69B4 14-234-2 always \u69B5 1245-12346-2 always \u69B6 124-1346-2 always \u69B7 245-236-5 -always \u69B8 1456 +always \u69B8 1-2456-3 always \u69B9 15-156-3 -always \u69BA 1456 +always \u69BA 24-1356-5 always \u69BB 124-345-5 always \u69BC 123-2346-5 always \u69BD 15-16-3 always \u69BE 13-34-5 always \u69BF 245-16-3 -always \u69C0 1456 +always \u69C0 123-146-4 always \u69C1 13-146-4 always \u69C2 15-123456-3 always \u69C3 1234-1236-2 always \u69C4 124-146-3 -always \u69C5 1456 +always \u69C5 13-2346-2 always \u69C6 15-256-2 -always \u69C7 1456 -always \u69C8 1456 +always \u69C7 145-2345-3 +always \u69C8 1345-12356-5 always \u69C9 13-16-2 always \u69CA 24-25-5 always \u69CB 13-12356-5 @@ -26977,48 +26980,48 @@ always \u69CD 245-46-3 always \u69CE 1-345-5 always \u69CF 245-2345-4 always \u69D0 1235-2356-2 -always \u69D1 1456 -always \u69D2 1456 +always \u69D1 134-356-2 +always \u69D2 15-1256-5 always \u69D3 13-1346-5 always \u69D4 13-146-3 -always \u69D5 1456 -always \u69D6 1456 +always \u69D5 1-25-2 +always \u69D6 124-25-5 always \u69D7 1456 -always \u69D8 1456 +always \u69D8 46-5 always \u69D9 145-2345-3 -always \u69DA 1456 +always \u69DA 13-23456-4 always \u69DB 13-2345-5 -always \u69DC 1456 +always \u69DC 125-1246-5 always \u69DD 1456 always \u69DE 1456 always \u69DF 135-1456-3 always \u69E0 1-34-3 always \u69E1 1456 always \u69E2 15-16-2 -always \u69E3 1456 +always \u69E3 245-16-4 always \u69E4 14-2345-4 always \u69E5 1246-5 always \u69E6 235-2 always \u69E7 13-2345-5 always \u69E8 13-25-4 -always \u69E9 1456 -always \u69EA 1456 +always \u69E9 13-2456-5 +always \u69EA 13-2456-5 always \u69EB 124-12456-2 always \u69EC 1235-35-5 always \u69ED 245-16-3 always \u69EE 15-136-3 -always \u69EF 1456 -always \u69F0 1456 +always \u69EF 245-1246-3 +always \u69F0 135-1356-5 always \u69F1 234-4 always \u69F2 1235-34-2 always \u69F3 13-46-4 always \u69F4 1235-34-5 -always \u69F5 1456 +always \u69F5 1235-12456-5 always \u69F6 123-1246-5 always \u69F7 1345-346-5 always \u69F8 1345-346-5 -always \u69F9 1456 -always \u69FA 1456 +always \u69F9 13-146-3 +always \u69FA 123-1346-3 always \u69FB 13-1246-3 always \u69FC 13-1246-3 always \u69FD 245-146-2 @@ -27027,7 +27030,7 @@ always \u69FF 13-1456-4 always \u6A00 145-16-5 always \u6A01 1-456-3 always \u6A02 14-2346-5 -always \u6A03 1456 +always \u6A03 14-1346-2 always \u6A04 12-136-2 always \u6A05 245-12346-3 always \u6A06 14-16-2 @@ -27035,14 +27038,14 @@ always \u6A07 15-234-3 always \u6A08 245-13456-2 always \u6A09 24-456-4 always \u6A0A 12345-1236-2 -always \u6A0B 1456 -always \u6A0C 1456 +always \u6A0B 124-12346-3 +always \u6A0C 13-12456-5 always \u6A0D 13-16-3 -always \u6A0E 1456 +always \u6A0E 15-25-3 always \u6A0F 14-356-4 -always \u6A10 1456 +always \u6A10 14-34-4 always \u6A11 14-46-2 -always \u6A12 1456 +always \u6A12 134-16-5 always \u6A13 14-12356-2 always \u6A14 12-146-2 always \u6A15 15-34-5 @@ -27050,36 +27053,36 @@ always \u6A16 123-2346-3 always \u6A17 24-34-3 always \u6A18 12-1356-3 always \u6A19 135-246-3 -always \u6A1A 1456 +always \u6A1A 14-34-5 always \u6A1B 13-234-3 -always \u6A1C 1456 +always \u6A1C 24-34-5 always \u6A1D 1-345-3 always \u6A1E 24-34-3 always \u6A1F 1-1346-3 always \u6A20 134-136-2 always \u6A21 134-126-2 -always \u6A22 1456 +always \u6A22 1345-246-4 always \u6A23 46-5 -always \u6A24 1456 +always \u6A24 124-246-2 always \u6A25 1234-1356-2 always \u6A26 1-34-5 always \u6A27 24-345-3 always \u6A28 15-1256-3 -always \u6A29 1456 +always \u6A29 245-45-2 always \u6A2A 1235-1356-2 -always \u6A2B 1456 -always \u6A2C 1456 +always \u6A2B 13-2345-3 +always \u6A2C 245-12346-3 always \u6A2D 1456 always \u6A2E 1456 always \u6A2F 245-46-2 always \u6A30 1456 always \u6A31 13456-3 always \u6A32 156-5 -always \u6A33 1456 +always \u6A33 15-1456-2 always \u6A34 1-156-2 always \u6A35 245-246-2 -always \u6A36 1456 -always \u6A37 1456 +always \u6A36 125-1246-3 +always \u6A37 245-12346-3 always \u6A38 1234-34-2 always \u6A39 24-34-5 always \u6A3A 1235-35-2 @@ -27090,40 +27093,40 @@ always \u6A3E 236-5 always \u6A3F 1-1236-4 always \u6A40 15-16-3 always \u6A41 15-256-2 -always \u6A42 1456 -always \u6A43 1456 +always \u6A42 145-2345-5 +always \u6A43 12345-345-3 always \u6A44 13-1236-4 -always \u6A45 1456 +always \u6A45 134-126-2 always \u6A46 34-4 always \u6A47 245-246-3 always \u6A48 1345-146-5 always \u6A49 14-1456-5 -always \u6A4A 1456 +always \u6A4A 14-234-2 always \u6A4B 245-246-2 -always \u6A4C 1456 +always \u6A4C 15-2345-5 always \u6A4D 1245-123456-5 always \u6A4E 12345-1236-2 always \u6A4F 1-1236-4 always \u6A50 124-25-5 always \u6A51 14-146-4 -always \u6A52 1456 -always \u6A53 1456 +always \u6A52 256-2 +always \u6A53 24-123456-5 always \u6A54 124-1246-2 always \u6A55 12-1356-3 always \u6A56 124-1346-2 -always \u6A57 1456 +always \u6A57 134-1356-2 always \u6A58 13-1256-2 always \u6A59 12-1356-2 always \u6A5A 245-234-3 always \u6A5B 13-236-2 -always \u6A5C 1456 +always \u6A5C 13-236-2 always \u6A5D 124-1236-3 always \u6A5E 1235-1246-5 always \u6A5F 13-16-3 always \u6A60 1345-25-4 always \u6A61 15-46-5 always \u6A62 124-25-4 -always \u6A63 1456 +always \u6A63 1345-13456-4 always \u6A64 1245-1246-4 always \u6A65 1-34-3 always \u6A66 12-456-2 @@ -27132,42 +27135,42 @@ always \u6A68 12345-136-2 always \u6A69 245-235-2 always \u6A6A 1245-1236-4 always \u6A6B 1235-1356-2 -always \u6A6C 1456 +always \u6A6C 245-136-2 always \u6A6D 13-34-3 -always \u6A6E 1456 +always \u6A6E 14-234-4 always \u6A6F 14-146-5 -always \u6A70 1456 +always \u6A70 13-146-3 always \u6A71 12-34-2 always \u6A72 1456 always \u6A73 1456 always \u6A74 1456 always \u6A75 1456 always \u6A76 13-16-4 -always \u6A77 1456 +always \u6A77 145-12356-3 always \u6A78 1456 always \u6A79 14-34-4 always \u6A7A 1456 always \u6A7B 1456 always \u6A7C 45-2 -always \u6A7D 1456 +always \u6A7D 124-345-5 always \u6A7E 24-34-3 always \u6A7F 13-46-3 always \u6A80 124-1236-2 always \u6A81 14-1456-4 -always \u6A82 1456 +always \u6A82 1345-12346-2 always \u6A83 1456-4 always \u6A84 15-16-2 always \u6A85 15-1246-5 -always \u6A86 1456 +always \u6A86 24-1236-3 always \u6A87 125-1246-3 -always \u6A88 1456 +always \u6A88 15-45-2 always \u6A89 12-1356-3 -always \u6A8A 1456 -always \u6A8B 1456 +always \u6A8A 13-1236-5 +always \u6A8B 13-1256-3 always \u6A8C 125-1246-5 always \u6A8D 16-5 always \u6A8E 245-1456-2 -always \u6A8F 1456 +always \u6A8F 1234-34-4 always \u6A90 2345-2 always \u6A91 14-356-2 always \u6A92 12345-1356-3 @@ -27176,12 +27179,12 @@ always \u6A94 145-1346-4 always \u6A95 13-16-5 always \u6A96 15-1246-5 always \u6A97 135-126-5 -always \u6A98 1456 -always \u6A99 1456 +always \u6A98 135-16-5 +always \u6A99 145-13456-4 always \u6A9A 12-34-4 always \u6A9B 1-35-3 always \u6A9C 123-2356-5 -always \u6A9D 1456 +always \u6A9D 13-16-2 always \u6A9E 13-346-4 always \u6A9F 13-23456-4 always \u6AA0 245-13456-2 @@ -27191,56 +27194,56 @@ always \u6AA3 245-46-2 always \u6AA4 145-146-5 always \u6AA5 16-4 always \u6AA6 135-246-4 -always \u6AA7 1456 +always \u6AA7 15-12346-3 always \u6AA8 24-2346-3 always \u6AA9 14-1456-4 always \u6AAA 1456 -always \u6AAB 1456 +always \u6AAB 12-345-2 always \u6AAC 134-1356-2 always \u6AAD 1456-2 always \u6AAE 124-146-2 always \u6AAF 124-2456-2 -always \u6AB0 1456 -always \u6AB1 1456 +always \u6AB0 134-2345-2 +always \u6AB1 245-16-2 always \u6AB2 1456 always \u6AB3 135-1456-3 always \u6AB4 1235-25-5 -always \u6AB5 1456 +always \u6AB5 13-16-5 always \u6AB6 245-2345-3 always \u6AB7 134-16-2 always \u6AB8 1345-13456-2 always \u6AB9 16-3 always \u6ABA 13-146-4 always \u6ABB 13-2345-5 -always \u6ABC 1456 +always \u6ABC 1456-5 always \u6ABD 156-2 -always \u6ABE 1456 -always \u6ABF 1456 -always \u6AC0 1456 -always \u6AC1 1456 +always \u6ABE 245-13456-4 +always \u6ABF 2345-4 +always \u6AC0 245-16-2 +always \u6AC1 134-16-5 always \u6AC2 1-146-5 always \u6AC3 13-1246-5 -always \u6AC4 1456 +always \u6AC4 12-123456-3 always \u6AC5 13-16-3 always \u6AC6 123-1246-2 always \u6AC7 1234-126-2 -always \u6AC8 1456 -always \u6AC9 1456 +always \u6AC8 145-1356-5 +always \u6AC9 12-34-2 always \u6ACA 1456 always \u6ACB 134-2345-2 always \u6ACC 234-3 always \u6ACD 1-156-5 -always \u6ACE 1456 +always \u6ACE 13-456-5 always \u6ACF 245-2345-3 always \u6AD0 14-356-4 always \u6AD1 14-356-2 -always \u6AD2 1456 +always \u6AD2 15-345-5 always \u6AD3 14-34-4 -always \u6AD4 1456 -always \u6AD5 1456 -always \u6AD6 1456 -always \u6AD7 1456 -always \u6AD8 1456 +always \u6AD4 14-16-5 +always \u6AD5 245-12456-2 +always \u6AD6 14-1256-2 +always \u6AD7 134-346-5 +always \u6AD8 1235-1246-5 always \u6AD9 12356-3 always \u6ADA 14-1256-2 always \u6ADB 13-346-2 @@ -27250,66 +27253,66 @@ always \u6ADE 45-2 always \u6ADF 14-16-5 always \u6AE0 12345-356-5 always \u6AE1 1-25-2 -always \u6AE2 1456 -always \u6AE3 1456 +always \u6AE2 15-12356-4 +always \u6AE3 14-2345-2 always \u6AE4 1456 always \u6AE5 12-34-2 always \u6AE6 1456 always \u6AE7 1-34-3 always \u6AE8 14-34-2 -always \u6AE9 1456 +always \u6AE9 2345-2 always \u6AEA 14-16-5 always \u6AEB 1-34-3 always \u6AEC 12-136-5 -always \u6AED 1456 +always \u6AED 13-346-2 always \u6AEE 2346-5 always \u6AEF 15-34-3 always \u6AF0 1235-2356-2 always \u6AF1 1345-346-5 -always \u6AF2 1456 +always \u6AF2 1256-5 always \u6AF3 14-12346-2 -always \u6AF4 1456 +always \u6AF4 14-2456-5 always \u6AF5 1456 -always \u6AF6 1456 +always \u6AF6 15-2345-4 always \u6AF7 1456 always \u6AF8 13-1256-4 always \u6AF9 15-246-3 always \u6AFA 14-13456-2 always \u6AFB 13456-3 always \u6AFC 13-2345-3 -always \u6AFD 1456 -always \u6AFE 1456 -always \u6AFF 1456 +always \u6AFD 1456-4 +always \u6AFE 234-2 +always \u6AFF 13456-2 always \u6B00 15-46-3 -always \u6B01 1456 +always \u6B01 1345-12346-2 always \u6B02 135-126-2 always \u6B03 12-1236-2 always \u6B04 14-1236-2 -always \u6B05 1456 -always \u6B06 1456 -always \u6B07 1456 +always \u6B05 13-1256-4 +always \u6B06 24-456-3 +always \u6B07 24-2346-5 always \u6B08 1246-2 always \u6B09 245-12346-5 always \u6B0A 245-45-2 always \u6B0B 245-1256-2 always \u6B0C 1456 always \u6B0D 1456 -always \u6B0E 1456 +always \u6B0E 1256-5 always \u6B0F 14-25-2 always \u6B10 14-16-4 always \u6B11 245-12456-2 always \u6B12 14-12456-2 always \u6B13 145-1346-4 -always \u6B14 1456 +always \u6B14 13-236-2 always \u6B15 1456 always \u6B16 14-1236-4 always \u6B17 14-1236-2 always \u6B18 1-34-4 always \u6B19 14-356-2 always \u6B1A 14-16-4 -always \u6B1B 1456 -always \u6B1C 1456 -always \u6B1D 1456 +always \u6B1B 135-345-5 +always \u6B1C 1345-1346-2 +always \u6B1D 1256-5 always \u6B1E 14-13456-2 always \u6B1F 1456 always \u6B20 245-2345-5 @@ -27318,22 +27321,22 @@ always \u6B22 1235-12456-3 always \u6B23 15-1456-3 always \u6B24 1256-2 always \u6B25 1235-12456-3 -always \u6B26 1456 +always \u6B26 245-2345-3 always \u6B27 12356-3 always \u6B28 15-1256-3 -always \u6B29 1456 -always \u6B2A 1456 -always \u6B2B 1456 +always \u6B29 12-146-3 +always \u6B2A 12-34-5 +always \u6B2B 12-156-3 always \u6B2C 123-2456-5 always \u6B2D 16-5 -always \u6B2E 1456 +always \u6B2E 13-236-2 always \u6B2F 15-16-2 -always \u6B30 1456 +always \u6B30 15-1256-3 always \u6B31 15-23456-5 always \u6B32 1256-5 always \u6B33 123-2356-5 always \u6B34 14-1346-2 -always \u6B35 1456 +always \u6B35 123-12456-4 always \u6B36 24-25-5 always \u6B37 15-16-3 always \u6B38 2456-3 @@ -27344,7 +27347,7 @@ always \u6B3C 12-156-4 always \u6B3D 245-1456-3 always \u6B3E 123-12456-4 always \u6B3F 123-1236-4 -always \u6B40 1456 +always \u6B40 123-12456-4 always \u6B41 123-1236-4 always \u6B42 12-12456-2 always \u6B43 24-345-5 @@ -27359,21 +27362,21 @@ always \u6B4B 16-2 always \u6B4C 13-2346-3 always \u6B4D 34-3 always \u6B4E 124-1236-5 -always \u6B4F 1456 +always \u6B4F 13-1456-5 always \u6B50 12356-3 always \u6B51 1235-34-3 -always \u6B52 1456 -always \u6B53 1456 +always \u6B52 124-16-5 +always \u6B53 1235-12456-3 always \u6B54 15-1256-3 always \u6B55 1234-136-3 always \u6B56 15-16-3 -always \u6B57 1456 -always \u6B58 1456 +always \u6B57 15-246-5 +always \u6B58 15-1256-3 always \u6B59 24-2346-5 always \u6B5A 1456 always \u6B5B 14-2345-5 always \u6B5C 12-34-5 -always \u6B5D 1456 +always \u6B5D 16-5 always \u6B5E 13-2346-3 always \u6B5F 1256-2 always \u6B60 12-25-5 @@ -27384,28 +27387,28 @@ always \u6B64 245-156-4 always \u6B65 135-34-5 always \u6B66 34-4 always \u6B67 245-16-2 -always \u6B68 1456 -always \u6B69 1456 +always \u6B68 135-34-5 +always \u6B69 135-34-5 always \u6B6A 2356-3 -always \u6B6B 1456 -always \u6B6C 1456 +always \u6B6B 13-1256-5 +always \u6B6C 245-2345-2 always \u6B6D 12-156-2 -always \u6B6E 1456 -always \u6B6F 1456 -always \u6B70 1456 -always \u6B71 1456 +always \u6B6E 15-2346-5 +always \u6B6F 12-156-4 +always \u6B70 15-2346-5 +always \u6B71 1-12346-4 always \u6B72 15-1246-5 -always \u6B73 1456 -always \u6B74 1456 -always \u6B75 1456 +always \u6B73 15-1246-5 +always \u6B74 14-16-5 +always \u6B75 245-25-5 always \u6B76 1256-2 always \u6B77 14-16-5 always \u6B78 13-1246-3 always \u6B79 145-2456-4 -always \u6B7A 1456 +always \u6B7A 145-2456-4 always \u6B7B 15-156-4 always \u6B7C 13-2345-3 -always \u6B7D 1456 +always \u6B7D 1-2346-2 always \u6B7E 134-126-5 always \u6B7F 134-126-5 always \u6B80 246-4 @@ -27413,7 +27416,7 @@ always \u6B81 134-126-5 always \u6B82 245-34-2 always \u6B83 46-3 always \u6B84 124-2345-4 -always \u6B85 1456 +always \u6B85 24-1356-3 always \u6B86 145-2456-5 always \u6B87 24-1346-3 always \u6B88 15-1256-5 @@ -27424,7 +27427,7 @@ always \u6B8C 13-236-2 always \u6B8D 1234-246-4 always \u6B8E 245-23456-5 always \u6B8F 245-234-2 -always \u6B90 1456 +always \u6B90 15-34-5 always \u6B91 245-13456-2 always \u6B92 256-4 always \u6B93 14-2345-5 @@ -27436,7 +27439,7 @@ always \u6B98 245-1236-2 always \u6B99 1235-123456-3 always \u6B9A 145-1236-3 always \u6B9B 13-16-2 -always \u6B9C 1456 +always \u6B9C 346-5 always \u6B9D 1456 always \u6B9E 256-4 always \u6B9F 35-5 @@ -27448,11 +27451,11 @@ always \u6BA4 24-1346-3 always \u6BA5 1456-2 always \u6BA6 145-246-3 always \u6BA7 245-34-5 -always \u6BA8 1456 -always \u6BA9 1456 +always \u6BA8 1235-1246-5 +always \u6BA9 245-12456-5 always \u6BAA 16-5 always \u6BAB 145-1236-3 -always \u6BAC 1456 +always \u6BAC 145-34-5 always \u6BAD 13-46-3 always \u6BAE 14-2345-5 always \u6BAF 135-1456-5 @@ -27464,13 +27467,13 @@ always \u6BB4 12356-3 always \u6BB5 145-12456-5 always \u6BB6 1-34-5 always \u6BB7 1456-3 -always \u6BB8 1456 -always \u6BB9 1456 +always \u6BB8 245-13456-5 +always \u6BB9 16-5 always \u6BBA 24-345-3 -always \u6BBB 1456 +always \u6BBB 245-236-5 always \u6BBC 123-2346-2 always \u6BBD 246-2 -always \u6BBE 1456 +always \u6BBE 13-256-5 always \u6BBF 145-2345-5 always \u6BC0 1235-1246-4 always \u6BC1 1235-1246-4 @@ -27486,10 +27489,10 @@ always \u6BCA 15-246-3 always \u6BCB 34-2 always \u6BCC 13-12456-3 always \u6BCD 134-34-4 -always \u6BCE 1456 +always \u6BCE 134-356-4 always \u6BCF 134-356-4 always \u6BD0 2456-4 -always \u6BD1 1456 +always \u6BD1 125-25-4 always \u6BD2 145-34-2 always \u6BD3 1256-5 always \u6BD4 135-16-4 @@ -27509,28 +27512,28 @@ always \u6BE1 1-1236-3 always \u6BE2 15-2456-3 always \u6BE3 134-146-5 always \u6BE4 124-25-5 -always \u6BE5 1456 +always \u6BE5 15-256-2 always \u6BE6 156-5 always \u6BE7 1245-12346-2 always \u6BE8 15-2345-4 -always \u6BE9 1456 -always \u6BEA 1456 +always \u6BE9 13-1256-2 +always \u6BEA 134-34-2 always \u6BEB 1235-146-2 always \u6BEC 245-234-2 -always \u6BED 1456 +always \u6BED 145-12356-5 always \u6BEE 1456 always \u6BEF 124-1236-4 always \u6BF0 1234-356-2 -always \u6BF1 1456 +always \u6BF1 13-1256-2 always \u6BF2 145-25-2 always \u6BF3 245-1246-5 -always \u6BF4 1456 +always \u6BF4 135-16-3 always \u6BF5 15-1236-3 always \u6BF6 1456 always \u6BF7 134-146-5 always \u6BF8 15-1246-3 always \u6BF9 1256-2 -always \u6BFA 1456 +always \u6BFA 1256-3 always \u6BFB 124-25-5 always \u6BFC 1235-2346-2 always \u6BFD 13-2345-5 @@ -27546,25 +27549,25 @@ always \u6C06 1234-34-4 always \u6C07 14-25-2 always \u6C08 1-1236-3 always \u6C09 125-146-5 -always \u6C0A 1456 +always \u6C0A 1-1236-3 always \u6C0B 134-1356-2 always \u6C0C 14-25-2 always \u6C0D 245-1256-2 -always \u6C0E 1456 +always \u6C0E 145-346-2 always \u6C0F 24-156-5 always \u6C10 145-16-3 always \u6C11 134-1456-2 -always \u6C12 1456 +always \u6C12 13-236-2 always \u6C13 134-1346-2 always \u6C14 245-16-5 always \u6C15 1234-346-3 always \u6C16 1345-2456-4 -always \u6C17 1456 +always \u6C17 245-16-5 always \u6C18 145-146-3 always \u6C19 15-2345-3 always \u6C1A 12-12456-3 always \u6C1B 12345-136-3 -always \u6C1C 1456 +always \u6C1C 1245-156-5 always \u6C1D 1345-356-5 always \u6C1E 1456 always \u6C1F 12345-34-2 @@ -27581,22 +27584,22 @@ always \u6C29 23456-5 always \u6C2A 123-2346-5 always \u6C2B 245-13456-3 always \u6C2C 23456-5 -always \u6C2D 1456 +always \u6C2D 145-12346-3 always \u6C2E 145-1236-5 always \u6C2F 14-1256-5 always \u6C30 245-13456-3 -always \u6C31 1456 +always \u6C31 46-4 always \u6C32 256-3 always \u6C33 256-3 always \u6C34 24-1246-4 always \u6C35 1456 always \u6C36 1-1356-4 -always \u6C37 1456 +always \u6C37 135-13456-3 always \u6C38 235-4 -always \u6C39 1456 +always \u6C39 145-1346-5 always \u6C3A 1456 always \u6C3B 14-2346-5 -always \u6C3C 1456 +always \u6C3C 1345-16-5 always \u6C3D 124-123456-4 always \u6C3E 12345-1236-5 always \u6C3F 13-1246-4 @@ -27604,11 +27607,11 @@ always \u6C40 124-13456-3 always \u6C41 1-156-3 always \u6C42 245-234-2 always \u6C43 135-1456-3 -always \u6C44 1456 -always \u6C45 1456 +always \u6C44 125-2346-5 +always \u6C45 134-2345-4 always \u6C46 124-123456-4 always \u6C47 1235-1246-5 -always \u6C48 1456 +always \u6C48 145-246-3 always \u6C49 1235-1236-5 always \u6C4A 12-345-5 always \u6C4B 1-25-2 @@ -27617,16 +27620,16 @@ always \u6C4D 12456-2 always \u6C4E 12345-1236-5 always \u6C4F 145-2456-5 always \u6C50 15-16-5 -always \u6C51 1456 +always \u6C51 124-25-3 always \u6C52 134-1346-2 -always \u6C53 1456 +always \u6C53 245-234-2 always \u6C54 245-16-5 always \u6C55 24-1236-5 -always \u6C56 1456 +always \u6C56 1234-2456-5 always \u6C57 1235-1236-5 -always \u6C58 1456 +always \u6C58 245-2345-3 always \u6C59 34-3 -always \u6C5A 1456 +always \u6C5A 34-3 always \u6C5B 15-256-5 always \u6C5C 15-156-5 always \u6C5D 1245-34-4 @@ -27644,18 +27647,18 @@ always \u6C68 134-16-5 always \u6C69 1256-5 always \u6C6A 456-3 always \u6C6B 245-13456-5 -always \u6C6C 1456 +always \u6C6C 13-13456-4 always \u6C6D 1245-1246-5 -always \u6C6E 1456 +always \u6C6E 13-256-3 always \u6C6F 1235-12346-2 always \u6C70 124-2456-5 always \u6C71 245-45-4 always \u6C72 13-16-2 always \u6C73 135-2345-5 always \u6C74 135-2345-5 -always \u6C75 1456 +always \u6C75 13-1236-5 always \u6C76 123456-5 -always \u6C77 1456 +always \u6C77 1-12346-3 always \u6C78 12345-1346-3 always \u6C79 15-235-3 always \u6C7A 13-236-2 @@ -27663,7 +27666,7 @@ always \u6C7B 1235-34-4 always \u6C7C 1456 always \u6C7D 245-16-5 always \u6C7E 12345-136-2 -always \u6C7F 1456 +always \u6C7F 15-1256-5 always \u6C80 15-1256-4 always \u6C81 245-1456-5 always \u6C82 16-2 @@ -27681,43 +27684,43 @@ always \u6C8D 1235-34-5 always \u6C8E 1235-25-5 always \u6C8F 245-346-3 always \u6C90 134-34-5 -always \u6C91 1456 +always \u6C91 1245-12356-2 always \u6C92 134-356-2 always \u6C93 124-345-5 always \u6C94 134-2345-4 always \u6C95 34-5 always \u6C96 12-12346-3 -always \u6C97 1456 +always \u6C97 124-2345-3 always \u6C98 135-16-4 always \u6C99 24-345-3 always \u6C9A 1-156-4 always \u6C9B 1234-356-5 always \u6C9C 1234-1236-5 always \u6C9D 1-1246-4 -always \u6C9E 1456 +always \u6C9E 125-345-3 always \u6C9F 13-12356-3 -always \u6CA0 1456 +always \u6CA0 14-234-2 always \u6CA1 134-356-2 -always \u6CA2 1456 +always \u6CA2 125-2346-2 always \u6CA3 12345-1356-3 always \u6CA4 12356-5 always \u6CA5 14-16-5 always \u6CA6 14-123456-2 always \u6CA7 245-1346-3 -always \u6CA8 1456 +always \u6CA8 12345-1356-2 always \u6CA9 13-1246-3 always \u6CAA 1235-34-5 always \u6CAB 134-126-5 always \u6CAC 134-356-5 always \u6CAD 24-34-5 always \u6CAE 13-1256-4 -always \u6CAF 1456 +always \u6CAF 125-1236-4 always \u6CB0 124-25-3 always \u6CB1 124-25-2 -always \u6CB2 1456 +always \u6CB2 124-25-2 always \u6CB3 1235-2346-2 always \u6CB4 14-16-5 -always \u6CB5 1456 +always \u6CB5 134-16-4 always \u6CB6 16-2 always \u6CB7 12345-34-2 always \u6CB8 12345-356-5 @@ -27736,13 +27739,13 @@ always \u6CC4 15-346-5 always \u6CC5 245-234-2 always \u6CC6 16-3 always \u6CC7 13-23456-3 -always \u6CC8 1456 +always \u6CC8 1-12346-3 always \u6CC9 245-45-2 always \u6CCA 135-126-2 -always \u6CCB 1456 +always \u6CCB 1235-1246-5 always \u6CCC 134-16-5 always \u6CCD 135-136-3 -always \u6CCE 1456 +always \u6CCE 1-25-2 always \u6CCF 12-34-5 always \u6CD0 14-2346-5 always \u6CD1 234-4 @@ -27752,21 +27755,21 @@ always \u6CD4 13-1236-3 always \u6CD5 12345-345-4 always \u6CD6 134-146-4 always \u6CD7 15-156-5 -always \u6CD8 1456 +always \u6CD8 1235-34-3 always \u6CD9 1234-13456-2 always \u6CDA 245-156-4 always \u6CDB 12345-1236-5 always \u6CDC 145-16-5 always \u6CDD 15-34-5 always \u6CDE 1-34-4 -always \u6CDF 1456 +always \u6CDF 12-1356-3 always \u6CE0 14-13456-2 always \u6CE1 1234-146-5 always \u6CE2 135-126-3 always \u6CE3 245-16-5 -always \u6CE4 1456 +always \u6CE4 15-156-5 always \u6CE5 1345-16-2 -always \u6CE6 1456 +always \u6CE6 13-1256-2 always \u6CE7 236-5 always \u6CE8 1-34-5 always \u6CE9 24-1356-3 @@ -27780,7 +27783,7 @@ always \u6CF0 124-2456-5 always \u6CF1 46-3 always \u6CF2 13-16-4 always \u6CF3 235-4 -always \u6CF4 1456 +always \u6CF4 13-12456-5 always \u6CF5 135-1356-5 always \u6CF6 15-236-2 always \u6CF7 14-12346-2 @@ -27791,14 +27794,14 @@ always \u6CFB 15-346-5 always \u6CFC 1234-126-3 always \u6CFD 125-2346-2 always \u6CFE 13-13456-3 -always \u6CFF 1456 +always \u6CFF 1456-2 always \u6D00 1-12356-3 always \u6D01 13-16-2 -always \u6D02 1456 +always \u6D02 16-5 always \u6D03 1235-1246-3 always \u6D04 1235-1246-2 -always \u6D05 1456 -always \u6D06 1456 +always \u6D05 125-1246-4 +always \u6D06 12-1356-2 always \u6D07 1456-3 always \u6D08 1246-2 always \u6D09 1235-12356-5 @@ -27811,9 +27814,9 @@ always \u6D0F 156-2 always \u6D10 15-13456-2 always \u6D11 12345-34-2 always \u6D12 15-345-4 -always \u6D13 1456 -always \u6D14 1456 -always \u6D15 1456 +always \u6D13 15-25-4 +always \u6D14 1-156-4 +always \u6D15 1456-3 always \u6D16 34-2 always \u6D17 15-16-4 always \u6D18 123-146-4 @@ -27825,12 +27828,12 @@ always \u6D1D 1236-5 always \u6D1E 145-12346-5 always \u6D1F 16-2 always \u6D20 134-12356-2 -always \u6D21 1456 +always \u6D21 14-356-4 always \u6D22 16-3 -always \u6D23 1456 -always \u6D24 1456 +always \u6D23 134-16-4 +always \u6D24 245-45-2 always \u6D25 13-1456-3 -always \u6D26 1456 +always \u6D26 134-126-5 always \u6D27 1246-4 always \u6D28 15-246-2 always \u6D29 15-346-5 @@ -27860,32 +27863,32 @@ always \u6D40 245-1256-4 always \u6D41 14-234-2 always \u6D42 16-5 always \u6D43 13-23456-2 -always \u6D44 1456 +always \u6D44 13-13456-5 always \u6D45 245-2345-4 always \u6D46 13-46-3 always \u6D47 13-246-3 always \u6D48 12-1356-2 -always \u6D49 1456 +always \u6D49 24-156-3 always \u6D4A 1-25-2 always \u6D4B 245-2346-5 always \u6D4C 1456 always \u6D4D 123-2356-5 always \u6D4E 13-16-5 always \u6D4F 14-234-2 -always \u6D50 1456 +always \u6D50 12-1236-4 always \u6D51 1235-123456-2 always \u6D52 1235-34-4 always \u6D53 1345-12346-2 always \u6D54 15-256-2 -always \u6D55 1456 -always \u6D56 1456 -always \u6D57 1456 +always \u6D55 13-1456-5 +always \u6D56 14-346-5 +always \u6D57 245-234-2 always \u6D58 1246-4 always \u6D59 1-2346-5 always \u6D5A 13-256-5 -always \u6D5B 1456 -always \u6D5C 1456 -always \u6D5D 1456 +always \u6D5B 1235-1236-5 +always \u6D5C 135-1346-3 +always \u6D5D 134-1346-2 always \u6D5E 1-25-2 always \u6D5F 234-2 always \u6D60 15-16-3 @@ -27899,15 +27902,15 @@ always \u6D67 13456-4 always \u6D68 14-1236-4 always \u6D69 1235-146-5 always \u6D6A 14-1346-5 -always \u6D6B 1456 +always \u6D6B 1235-1236-4 always \u6D6C 14-16-4 always \u6D6D 13-1356-3 always \u6D6E 12345-34-2 always \u6D6F 34-2 always \u6D70 14-2345-5 -always \u6D71 1456 -always \u6D72 1456 -always \u6D73 1456 +always \u6D71 12-123456-2 +always \u6D72 12345-1356-2 +always \u6D73 16-5 always \u6D74 1256-5 always \u6D75 124-12346-2 always \u6D76 14-146-2 @@ -27921,7 +27924,7 @@ always \u6D7D 15-1246-3 always \u6D7E 12-1356-3 always \u6D7F 1234-356-5 always \u6D80 15-2345-5 -always \u6D81 1456 +always \u6D81 24-136-5 always \u6D82 124-34-2 always \u6D83 123-123456-5 always \u6D84 1234-1456-3 @@ -27935,26 +27938,26 @@ always \u6D8B 124-34-3 always \u6D8C 235-4 always \u6D8D 15-246-3 always \u6D8E 15-2345-2 -always \u6D8F 1456 +always \u6D8F 124-13456-4 always \u6D90 2346-2 always \u6D91 15-12356-3 always \u6D92 124-123456-3 always \u6D93 13-45-3 always \u6D94 245-136-2 always \u6D95 124-16-5 -always \u6D96 1456 +always \u6D96 14-16-5 always \u6D97 24-1246-5 always \u6D98 15-156-5 -always \u6D99 1456 -always \u6D9A 1456 +always \u6D99 14-356-5 +always \u6D9A 24-1246-5 always \u6D9B 124-146-2 -always \u6D9C 1456 +always \u6D9C 145-34-2 always \u6D9D 14-146-2 always \u6D9E 14-2456-2 always \u6D9F 14-2345-2 always \u6DA0 1246-2 always \u6DA1 25-3 -always \u6DA2 1456 +always \u6DA2 256-2 always \u6DA3 1235-12456-5 always \u6DA4 145-16-2 always \u6DA5 1456 @@ -27965,19 +27968,19 @@ always \u6DA9 15-2346-5 always \u6DAA 12345-34-2 always \u6DAB 13-12456-5 always \u6DAC 15-13456-5 -always \u6DAD 1456 +always \u6DAD 24-12356-5 always \u6DAE 24-12456-5 always \u6DAF 23456-2 -always \u6DB0 1456 -always \u6DB1 1456 +always \u6DB0 12-25-5 +always \u6DB1 1-1346-5 always \u6DB2 16-5 always \u6DB3 123-12346-3 always \u6DB4 12456-4 always \u6DB5 1235-1236-2 -always \u6DB6 1456 +always \u6DB6 124-25-3 always \u6DB7 145-12346-3 always \u6DB8 1235-2346-2 -always \u6DB9 1456 +always \u6DB9 25-3 always \u6DBA 13-1256-3 always \u6DBB 24-2346-5 always \u6DBC 14-46-2 @@ -27985,9 +27988,9 @@ always \u6DBD 1235-123456-3 always \u6DBE 124-345-5 always \u6DBF 1-25-2 always \u6DC0 145-2345-5 -always \u6DC1 1456 +always \u6DC1 245-346-5 always \u6DC2 145-2346-2 -always \u6DC3 1456 +always \u6DC3 13-45-5 always \u6DC4 125-156-3 always \u6DC5 15-16-3 always \u6DC6 246-2 @@ -27998,7 +28001,7 @@ always \u6DCA 1235-1236-5 always \u6DCB 14-1456-2 always \u6DCC 124-1346-4 always \u6DCD 1-12356-3 -always \u6DCE 1456 +always \u6DCE 1234-1356-4 always \u6DCF 1235-146-5 always \u6DD0 12-1346-3 always \u6DD1 24-34-2 @@ -28023,7 +28026,7 @@ always \u6DE3 1345-16-2 always \u6DE4 1256-3 always \u6DE5 14-34-5 always \u6DE6 13-1236-5 -always \u6DE7 1456 +always \u6DE7 134-16-5 always \u6DE8 13-13456-5 always \u6DE9 14-13456-2 always \u6DEA 14-123456-2 @@ -28040,24 +28043,24 @@ always \u6DF4 35-5 always \u6DF5 45-3 always \u6DF6 14-2456-2 always \u6DF7 1235-123456-5 -always \u6DF8 1456 +always \u6DF8 245-13456-3 always \u6DF9 2345-3 always \u6DFA 245-2345-4 always \u6DFB 124-2345-3 always \u6DFC 134-246-4 always \u6DFD 1-156-4 -always \u6DFE 1456 -always \u6DFF 1456 +always \u6DFE 1456-4 +always \u6DFF 134-16-5 always \u6E00 135-136-3 -always \u6E01 1456 -always \u6E02 1456 +always \u6E01 45-3 +always \u6E02 123456-5 always \u6E03 1245-2346-5 -always \u6E04 1456 +always \u6E04 12345-356-3 always \u6E05 245-13456-3 -always \u6E06 1456 -always \u6E07 1456 -always \u6E08 1456 -always \u6E09 1456 +always \u6E06 45-3 +always \u6E07 123-2346-4 +always \u6E08 13-16-5 +always \u6E09 24-2346-5 always \u6E0A 45-3 always \u6E0B 1456 always \u6E0C 14-34-5 @@ -28066,19 +28069,19 @@ always \u6E0E 145-34-2 always \u6E0F 1456 always \u6E10 13-2345-5 always \u6E11 134-1456-4 -always \u6E12 1456 +always \u6E12 1234-16-5 always \u6E13 1456 always \u6E14 1256-2 -always \u6E15 1456 +always \u6E15 45-3 always \u6E16 24-136-4 always \u6E17 24-136-5 -always \u6E18 1456 +always \u6E18 1245-12356-2 always \u6E19 1235-12456-5 always \u6E1A 1-34-4 always \u6E1B 13-2345-4 always \u6E1C 1345-12456-4 always \u6E1D 1256-2 -always \u6E1E 1456 +always \u6E1E 245-234-2 always \u6E1F 124-13456-2 always \u6E20 245-1256-2 always \u6E21 145-34-5 @@ -28090,7 +28093,7 @@ always \u6E26 25-3 always \u6E27 145-16-5 always \u6E28 1246-3 always \u6E29 123456-3 -always \u6E2A 1456 +always \u6E2A 1245-34-2 always \u6E2B 15-346-5 always \u6E2C 245-2346-5 always \u6E2D 1246-5 @@ -28103,7 +28106,7 @@ always \u6E33 134-16-4 always \u6E34 123-2346-4 always \u6E35 134-146-2 always \u6E36 13456-3 -always \u6E37 1456 +always \u6E37 2345-4 always \u6E38 234-2 always \u6E39 1235-12346-3 always \u6E3A 134-246-4 @@ -28114,30 +28117,30 @@ always \u6E3E 1235-123456-2 always \u6E3F 1345-2456-5 always \u6E40 123-1246-2 always \u6E41 12-156-5 -always \u6E42 1456 +always \u6E42 2346-5 always \u6E43 1234-2456-5 always \u6E44 134-356-2 always \u6E45 14-2345-5 always \u6E46 245-16-5 always \u6E47 245-16-5 -always \u6E48 1456 +always \u6E48 134-356-2 always \u6E49 124-2345-2 always \u6E4A 245-12356-5 always \u6E4B 1246-2 -always \u6E4C 1456 +always \u6E4C 245-1236-3 always \u6E4D 124-12456-3 always \u6E4E 134-2345-4 -always \u6E4F 1456 -always \u6E50 1456 +always \u6E4F 1235-1246-5 +always \u6E50 134-126-5 always \u6E51 15-1256-4 always \u6E52 13-16-2 always \u6E53 1234-136-2 always \u6E54 13-2345-3 always \u6E55 13-2345-4 always \u6E56 1235-34-2 -always \u6E57 1456 +always \u6E57 12345-1356-5 always \u6E58 15-46-3 -always \u6E59 1456 +always \u6E59 16-5 always \u6E5A 1456-5 always \u6E5B 1-1236-5 always \u6E5C 24-156-2 @@ -28156,53 +28159,53 @@ always \u6E68 245-1256-5 always \u6E69 145-12346-5 always \u6E6A 1456 always \u6E6B 13-246-4 -always \u6E6C 1456 +always \u6E6C 13-246-4 always \u6E6D 1456 always \u6E6E 2345-3 always \u6E6F 124-1346-3 -always \u6E70 1456 +always \u6E70 14-12346-2 always \u6E71 1235-25-5 always \u6E72 45-2 always \u6E73 1345-1236-4 always \u6E74 135-1236-5 -always \u6E75 1456 -always \u6E76 1456 +always \u6E75 234-4 +always \u6E76 245-45-2 always \u6E77 12-1246-2 always \u6E78 14-46-5 always \u6E79 12-1236-2 -always \u6E7A 1456 -always \u6E7B 1456 -always \u6E7C 1456 -always \u6E7D 1456 +always \u6E7A 2345-2 +always \u6E7B 12-123456-2 +always \u6E7C 1345-346-5 +always \u6E7D 125-156-3 always \u6E7E 12456-3 always \u6E7F 24-156-3 -always \u6E80 1456 -always \u6E81 1456 +always \u6E80 134-1236-4 +always \u6E81 13456-2 always \u6E82 1456 always \u6E83 123-1246-5 always \u6E84 1456 always \u6E85 13-2345-5 always \u6E86 15-1256-5 -always \u6E87 1456 +always \u6E87 14-1256-4 always \u6E88 13-1246-3 always \u6E89 13-2456-5 always \u6E8A 1456 always \u6E8B 1456 -always \u6E8C 1456 +always \u6E8C 1234-126-3 always \u6E8D 13-1456-5 always \u6E8E 13-1246-5 always \u6E8F 124-1346-2 always \u6E90 45-2 -always \u6E91 1456 +always \u6E91 15-25-4 always \u6E92 45-2 always \u6E93 14-2345-2 always \u6E94 246-4 -always \u6E95 1456 +always \u6E95 134-1356-5 always \u6E96 1-123456-4 always \u6E97 24-1356-2 always \u6E98 123-2346-5 always \u6E99 124-2456-5 -always \u6E9A 1456 +always \u6E9A 145-345-2 always \u6E9B 35-3 always \u6E9C 14-234-3 always \u6E9D 13-12356-3 @@ -28216,12 +28219,12 @@ always \u6EA4 134-345-4 always \u6EA5 1234-34-4 always \u6EA6 1246-2 always \u6EA7 14-16-5 -always \u6EA8 1456 -always \u6EA9 1456 +always \u6EA8 245-2456-2 +always \u6EA9 34-5 always \u6EAA 15-16-3 always \u6EAB 123456-3 -always \u6EAC 1456 -always \u6EAD 1456 +always \u6EAC 245-46-3 +always \u6EAD 125-2346-2 always \u6EAE 24-156-3 always \u6EAF 15-34-5 always \u6EB0 16-3 @@ -28229,13 +28232,13 @@ always \u6EB1 1-136-3 always \u6EB2 15-12356-4 always \u6EB3 256-2 always \u6EB4 15-234-5 -always \u6EB5 1456 +always \u6EB5 1456-3 always \u6EB6 1245-12346-2 always \u6EB7 1235-123456-5 -always \u6EB8 1456 +always \u6EB8 15-34-5 always \u6EB9 15-34-5 always \u6EBA 1345-16-5 -always \u6EBB 1456 +always \u6EBB 124-345-5 always \u6EBC 24-156-3 always \u6EBD 1245-34-5 always \u6EBE 1246-3 @@ -28265,40 +28268,40 @@ always \u6ED5 124-1356-2 always \u6ED6 15-1246-3 always \u6ED7 135-16-4 always \u6ED8 13-246-5 -always \u6ED9 1456 +always \u6ED9 1235-1246-5 always \u6EDA 13-123456-4 -always \u6EDB 1456 +always \u6EDB 1456-2 always \u6EDC 13-146-3 -always \u6EDD 1456 +always \u6EDD 14-12346-2 always \u6EDE 1-156-5 always \u6EDF 2345-5 always \u6EE0 24-2346-5 always \u6EE1 134-1236-4 always \u6EE2 13456-5 -always \u6EE3 1456 +always \u6EE3 12-123456-2 always \u6EE4 14-1256-5 always \u6EE5 14-1236-5 always \u6EE6 14-12456-2 always \u6EE7 1456 always \u6EE8 135-1456-3 always \u6EE9 124-1236-3 -always \u6EEA 1456 +always \u6EEA 1256-5 always \u6EEB 15-234-3 always \u6EEC 1235-34-5 always \u6EED 135-16-5 always \u6EEE 135-246-3 always \u6EEF 1-156-5 -always \u6EF0 1456 +always \u6EF0 13-46-4 always \u6EF1 123-12356-5 always \u6EF2 24-136-5 -always \u6EF3 1456 +always \u6EF3 24-1346-3 always \u6EF4 145-16-3 always \u6EF5 134-16-5 always \u6EF6 146-2 always \u6EF7 14-34-4 always \u6EF8 1235-34-4 always \u6EF9 1235-34-3 -always \u6EFA 1456 +always \u6EFA 234-2 always \u6EFB 12-1236-4 always \u6EFC 12345-1236-5 always \u6EFD 235-2 @@ -28308,43 +28311,43 @@ always \u6F00 245-13456-5 always \u6F01 1256-2 always \u6F02 1234-246-3 always \u6F03 13-16-2 -always \u6F04 1456 +always \u6F04 23456-2 always \u6F05 13-246-4 always \u6F06 245-16-3 always \u6F07 15-16-4 always \u6F08 13-16-5 always \u6F09 14-34-5 always \u6F0A 14-1256-4 -always \u6F0B 1456 -always \u6F0C 1456 +always \u6F0B 14-12346-2 +always \u6F0C 13-1456-4 always \u6F0D 13-25-2 always \u6F0E 245-12346-2 always \u6F0F 14-12356-5 -always \u6F10 1456 -always \u6F11 1456 +always \u6F10 1-156-2 +always \u6F11 13-2456-5 always \u6F12 245-46-2 always \u6F13 14-16-2 always \u6F14 2345-4 always \u6F15 125-146-5 -always \u6F16 1456 -always \u6F17 1456 +always \u6F16 13-246-5 +always \u6F17 245-12346-3 always \u6F18 12-123456-2 always \u6F19 124-12456-2 always \u6F1A 12356-5 -always \u6F1B 1456 +always \u6F1B 124-1356-2 always \u6F1C 346-4 -always \u6F1D 1456 +always \u6F1D 15-16-2 always \u6F1E 134-16-5 always \u6F1F 124-1346-2 always \u6F20 134-126-5 always \u6F21 24-1346-3 always \u6F22 1235-1236-5 always \u6F23 14-2345-2 -always \u6F24 1456 +always \u6F24 14-1236-4 always \u6F25 35-3 always \u6F26 14-16-2 always \u6F27 245-2345-2 -always \u6F28 1456 +always \u6F28 12345-1356-2 always \u6F29 15-45-2 always \u6F2A 16-3 always \u6F2B 134-1236-5 @@ -28356,7 +28359,7 @@ always \u6F30 1234-1356-3 always \u6F31 24-34-5 always \u6F32 1-1346-4 always \u6F33 1-1346-3 -always \u6F34 1456 +always \u6F34 12-12346-2 always \u6F35 15-1256-5 always \u6F36 1235-12456-5 always \u6F37 123-25-5 @@ -28365,22 +28368,22 @@ always \u6F39 2345-3 always \u6F3A 12-456-4 always \u6F3B 14-246-2 always \u6F3C 245-1246-4 -always \u6F3D 1456 +always \u6F3D 124-16-2 always \u6F3E 46-5 always \u6F3F 13-46-3 always \u6F40 245-12346-2 always \u6F41 13456-4 -always \u6F42 1456 +always \u6F42 1235-12346-2 always \u6F43 15-12356-4 -always \u6F44 1456 -always \u6F45 1456 +always \u6F44 24-34-5 +always \u6F45 13-12456-5 always \u6F46 13456-2 always \u6F47 15-246-3 always \u6F48 1456 always \u6F49 1456 -always \u6F4A 1456 +always \u6F4A 15-1256-5 always \u6F4B 14-2345-5 -always \u6F4C 1456 +always \u6F4C 1-156-5 always \u6F4D 1246-2 always \u6F4E 1234-16-5 always \u6F4F 13-236-2 @@ -28390,10 +28393,10 @@ always \u6F52 145-1346-5 always \u6F53 1235-1246-5 always \u6F54 13-346-2 always \u6F55 34-4 -always \u6F56 1456 +always \u6F56 1234-345-2 always \u6F57 13-16-2 always \u6F58 1234-1236-3 -always \u6F59 1456 +always \u6F59 13-1246-2 always \u6F5A 245-34-5 always \u6F5B 245-2345-2 always \u6F5C 245-2345-2 @@ -28405,10 +28408,10 @@ always \u6F61 145-123456-5 always \u6F62 1235-456-2 always \u6F63 134-1456-4 always \u6F64 1245-123456-5 -always \u6F65 1456 +always \u6F65 15-34-5 always \u6F66 14-246-2 always \u6F67 1-136-3 -always \u6F68 1456 +always \u6F68 1-12346-3 always \u6F69 16-5 always \u6F6A 145-16-2 always \u6F6B 12456-3 @@ -28421,11 +28424,11 @@ always \u6F71 1456 always \u6F72 24-146-5 always \u6F73 124-34-2 always \u6F74 1-34-3 -always \u6F75 1456 +always \u6F75 15-1236-5 always \u6F76 1235-356-3 always \u6F77 135-16-4 always \u6F78 24-1236-3 -always \u6F79 1456 +always \u6F79 12-1236-2 always \u6F7A 12-1236-2 always \u6F7B 24-34-4 always \u6F7C 124-12346-2 @@ -28433,37 +28436,37 @@ always \u6F7D 1234-34-4 always \u6F7E 14-1456-2 always \u6F7F 1246-2 always \u6F80 15-2346-5 -always \u6F81 1456 +always \u6F81 15-2346-5 always \u6F82 12-1356-2 -always \u6F83 1456 +always \u6F83 13-235-5 always \u6F84 12-1356-2 always \u6F85 1235-35-5 always \u6F86 13-246-3 always \u6F87 14-146-2 always \u6F88 12-2346-5 always \u6F89 13-1236-4 -always \u6F8A 1456 +always \u6F8A 245-123456-3 always \u6F8B 1235-1356-5 always \u6F8C 15-156-3 always \u6F8D 1-34-5 always \u6F8E 1234-1356-2 -always \u6F8F 1456 +always \u6F8F 1235-1236-5 always \u6F90 256-2 -always \u6F91 1456 +always \u6F91 14-234-5 always \u6F92 1235-12346-5 always \u6F93 12345-34-2 always \u6F94 1235-146-5 always \u6F95 1235-2346-2 always \u6F96 15-2345-3 always \u6F97 13-2345-5 -always \u6F98 1456 -always \u6F99 1456 +always \u6F98 24-1236-3 +always \u6F99 15-16-5 always \u6F9A 1456 always \u6F9B 1456 always \u6F9C 14-1236-2 always \u6F9D 1456 always \u6F9E 1256-2 -always \u6F9F 1456 +always \u6F9F 14-1456-4 always \u6FA0 134-1456-4 always \u6FA1 125-146-4 always \u6FA2 145-1346-3 @@ -28485,23 +28488,23 @@ always \u6FB1 145-2345-5 always \u6FB2 346-5 always \u6FB3 146-5 always \u6FB4 1235-12456-2 -always \u6FB5 1456 +always \u6FB5 1-136-3 always \u6FB6 145-1236-5 -always \u6FB7 1456 +always \u6FB7 134-1236-5 always \u6FB8 145-1236-4 always \u6FB9 145-1236-5 always \u6FBA 16-5 -always \u6FBB 1456 +always \u6FBB 15-1246-5 always \u6FBC 1234-16-5 always \u6FBD 13-1256-5 -always \u6FBE 1456 +always \u6FBE 124-345-5 always \u6FBF 245-1456-2 always \u6FC0 13-16-3 always \u6FC1 1-25-2 always \u6FC2 14-2345-2 always \u6FC3 1345-12346-2 always \u6FC4 13-25-3 -always \u6FC5 1456 +always \u6FC5 13-1456-5 always \u6FC6 12345-136-2 always \u6FC7 15-2346-5 always \u6FC8 13-16-2 @@ -28512,17 +28515,17 @@ always \u6FCC 124-345-5 always \u6FCD 15-12346-3 always \u6FCE 145-13456-4 always \u6FCF 135-345-1 -always \u6FD0 1456 +always \u6FD0 1-34-4 always \u6FD1 14-2456-5 always \u6FD2 135-1456-3 -always \u6FD3 1456 +always \u6FD3 14-2345-2 always \u6FD4 134-16-4 always \u6FD5 24-156-3 -always \u6FD6 1456 -always \u6FD7 1456 +always \u6FD6 24-34-5 +always \u6FD7 134-16-5 always \u6FD8 1345-13456-5 -always \u6FD9 1456 -always \u6FDA 1456 +always \u6FD9 13456-2 +always \u6FDA 13456-2 always \u6FDB 134-1356-2 always \u6FDC 13-1456-5 always \u6FDD 245-16-2 @@ -28533,12 +28536,12 @@ always \u6FE1 1245-34-2 always \u6FE2 125-1246-4 always \u6FE3 25-5 always \u6FE4 124-146-2 -always \u6FE5 1456 +always \u6FE5 1456-5 always \u6FE6 1456-4 always \u6FE7 145-1246-5 always \u6FE8 245-156-2 always \u6FE9 1235-25-5 -always \u6FEA 1456 +always \u6FEA 13-13456-5 always \u6FEB 14-1236-5 always \u6FEC 13-256-5 always \u6FED 2456-5 @@ -28547,28 +28550,28 @@ always \u6FEF 1-25-2 always \u6FF0 1246-2 always \u6FF1 135-1456-3 always \u6FF2 13-34-4 -always \u6FF3 1456 +always \u6FF3 245-2345-2 always \u6FF4 15-13456-2 always \u6FF5 1456 -always \u6FF6 1456 +always \u6FF6 123-25-5 always \u6FF7 12345-356-5 always \u6FF8 1456 always \u6FF9 1456 always \u6FFA 13-2345-5 always \u6FFB 1246-2 always \u6FFC 14-25-5 -always \u6FFD 1456 +always \u6FFD 125-1236-5 always \u6FFE 14-1256-5 always \u6FFF 14-16-5 always \u7000 234-3 always \u7001 46-5 -always \u7002 1456 -always \u7003 1456 +always \u7002 14-34-4 +always \u7003 15-156-5 always \u7004 13-346-2 always \u7005 13456-5 always \u7006 145-34-2 always \u7007 456-4 -always \u7008 1456 +always \u7008 1235-1246-3 always \u7009 15-346-5 always \u700A 1234-1236-2 always \u700B 24-136-4 @@ -28576,10 +28579,10 @@ always \u700C 135-246-3 always \u700D 12-1236-2 always \u700E 134-126-5 always \u700F 14-234-2 -always \u7010 1456 +always \u7010 13-2345-3 always \u7011 1234-34-5 -always \u7012 1456 -always \u7013 1456 +always \u7012 15-2346-5 +always \u7013 12-1356-2 always \u7014 13-34-4 always \u7015 135-1456-3 always \u7016 1235-25-5 @@ -28590,21 +28593,21 @@ always \u701A 1235-1236-5 always \u701B 13456-2 always \u701C 1245-12346-2 always \u701D 14-16-5 -always \u701E 1456 +always \u701E 13-13456-5 always \u701F 15-246-3 always \u7020 13456-2 always \u7021 15-1246-4 always \u7022 1246-2 always \u7023 15-346-5 always \u7024 1235-2356-2 -always \u7025 1456 +always \u7025 1235-146-5 always \u7026 1-34-3 always \u7027 14-12346-2 always \u7028 14-2456-5 always \u7029 145-1246-5 always \u702A 12345-1236-2 always \u702B 1235-34-2 -always \u702C 1456 +always \u702C 14-2456-5 always \u702D 1456 always \u702E 1456 always \u702F 13456-2 @@ -28614,14 +28617,14 @@ always \u7032 14-2345-5 always \u7033 13-2345-5 always \u7034 13456-4 always \u7035 12345-136-5 -always \u7036 1456 +always \u7036 14-1456-2 always \u7037 16-5 always \u7038 13-2345-3 always \u7039 246-5 always \u703A 12-1236-2 always \u703B 145-2456-5 always \u703C 1245-1346-2 -always \u703D 1456 +always \u703D 13-2345-4 always \u703E 14-1236-2 always \u703F 12345-1236-2 always \u7040 24-456-5 @@ -28631,25 +28634,25 @@ always \u7043 12345-1356-3 always \u7044 24-2346-5 always \u7045 14-356-4 always \u7046 14-1236-2 -always \u7047 1456 +always \u7047 245-12346-2 always \u7048 245-1256-2 always \u7049 235-3 always \u704A 245-2345-2 -always \u704B 1456 +always \u704B 12345-345-4 always \u704C 13-12456-5 -always \u704D 1456 -always \u704E 1456 +always \u704D 245-236-5 +always \u704E 2345-5 always \u704F 1235-146-5 always \u7050 1456 always \u7051 15-345-4 always \u7052 125-1236-5 -always \u7053 1456 -always \u7054 1456 +always \u7053 14-12456-2 +always \u7054 2345-5 always \u7055 14-16-2 always \u7056 134-16-4 always \u7057 24-1236-5 always \u7058 124-1236-3 -always \u7059 1456 +always \u7059 145-1346-4 always \u705A 13-246-4 always \u705B 12-1236-4 always \u705C 1456 @@ -28663,74 +28666,74 @@ always \u7063 12456-3 always \u7064 14-12456-2 always \u7065 245-45-2 always \u7066 15-2345-4 -always \u7067 1456 +always \u7067 2345-5 always \u7068 13-1236-4 always \u7069 2345-5 always \u706A 1256-5 always \u706B 1235-25-4 -always \u706C 1456 +always \u706C 135-246-3 always \u706D 134-346-5 -always \u706E 1456 +always \u706E 13-456-3 always \u706F 145-1356-3 always \u7070 1235-1246-3 always \u7071 15-246-3 -always \u7072 1456 +always \u7072 15-246-3 always \u7073 1456 always \u7074 1235-12346-2 always \u7075 14-13456-2 always \u7076 125-146-5 -always \u7077 1456 +always \u7077 1-12456-5 always \u7078 13-234-4 -always \u7079 1456 +always \u7079 1-345-5 always \u707A 15-346-5 -always \u707B 1456 +always \u707B 12-156-5 always \u707C 1-25-2 always \u707D 125-2456-3 always \u707E 125-2456-3 always \u707F 245-1236-5 always \u7080 46-2 -always \u7081 1456 +always \u7081 245-16-5 always \u7082 1-12346-3 always \u7083 12345-136-2 always \u7084 1345-234-4 always \u7085 13-235-4 always \u7086 123456-2 -always \u7087 1456 -always \u7088 1456 +always \u7087 1234-126-5 +always \u7088 16-5 always \u7089 14-34-2 always \u708A 12-1246-3 -always \u708B 1456 -always \u708C 1456 -always \u708D 1456 +always \u708B 1234-16-3 +always \u708C 123-2456-5 +always \u708D 1234-1236-5 always \u708E 2345-2 -always \u708F 1456 -always \u7090 1456 +always \u708F 123-2456-5 +always \u7090 1234-1346-5 always \u7091 134-34-5 always \u7092 12-146-4 always \u7093 14-246-5 always \u7094 13-1246-5 always \u7095 123-1346-5 always \u7096 124-123456-3 -always \u7097 1456 +always \u7097 13-456-3 always \u7098 15-1456-3 always \u7099 1-156-5 always \u709A 13-456-3 -always \u709B 1456 +always \u709B 13-456-3 always \u709C 1246-4 always \u709D 245-46-5 always \u709E 1456 always \u709F 145-345-2 -always \u70A0 1456 +always \u70A0 15-23456-2 always \u70A1 1-1356-3 -always \u70A2 1456 -always \u70A3 1456 +always \u70A2 1-34-2 +always \u70A3 123-2346-4 always \u70A4 1-146-3 -always \u70A5 1456 -always \u70A6 1456 -always \u70A7 1456 -always \u70A8 1456 +always \u70A5 12345-34-2 +always \u70A6 135-345-2 +always \u70A7 145-25-5 +always \u70A8 145-25-5 always \u70A9 14-13456-5 -always \u70AA 1456 +always \u70AA 1-25-2 always \u70AB 15-45-5 always \u70AC 13-1256-5 always \u70AD 124-1236-5 @@ -28738,43 +28741,43 @@ always \u70AE 1234-146-5 always \u70AF 13-235-4 always \u70B0 1234-146-2 always \u70B1 124-2456-2 -always \u70B2 1456 +always \u70B2 124-2456-2 always \u70B3 135-13456-4 always \u70B4 46-4 always \u70B5 124-12346-3 -always \u70B6 1456 +always \u70B6 1235-1236-3 always \u70B7 1-34-5 always \u70B8 1-345-5 always \u70B9 145-2345-4 always \u70BA 1246-2 -always \u70BB 1456 +always \u70BB 24-156-2 always \u70BC 14-2345-5 always \u70BD 12-156-5 always \u70BE 1234-13456-2 always \u70BF 1456 -always \u70C0 1456 +always \u70C0 1235-34-3 always \u70C1 24-25-5 always \u70C2 14-1236-5 always \u70C3 13-13456-4 -always \u70C4 1456 +always \u70C4 13-246-4 always \u70C5 15-1256-5 always \u70C6 15-13456-2 always \u70C7 245-45-5 always \u70C8 14-346-5 -always \u70C9 1456 +always \u70C9 1235-12456-5 always \u70CA 46-2 always \u70CB 15-234-3 -always \u70CC 1456 +always \u70CC 15-234-3 always \u70CD 15-2345-4 always \u70CE 1456-2 always \u70CF 34-3 -always \u70D0 1456 +always \u70D0 1-12356-3 always \u70D1 246-2 always \u70D2 24-156-5 always \u70D3 1246-3 always \u70D4 124-12346-2 -always \u70D5 1456 -always \u70D6 1456 +always \u70D5 15-236-5 +always \u70D6 125-2456-3 always \u70D7 123-2456-5 always \u70D8 1235-12346-3 always \u70D9 14-25-5 @@ -28787,7 +28790,7 @@ always \u70DF 2345-3 always \u70E0 1235-1246-4 always \u70E1 13-456-3 always \u70E2 1-2346-5 -always \u70E3 1456 +always \u70E3 1235-1246-3 always \u70E4 123-146-4 always \u70E5 1456 always \u70E6 12345-1236-2 @@ -28801,11 +28804,11 @@ always \u70ED 1245-2346-5 always \u70EE 1456 always \u70EF 15-16-3 always \u70F0 12345-34-2 -always \u70F1 1456 -always \u70F2 1456 +always \u70F1 13-235-4 +always \u70F2 12-2346-5 always \u70F3 1234-34-4 always \u70F4 13-13456-4 -always \u70F5 1456 +always \u70F5 1-25-2 always \u70F6 124-13456-4 always \u70F7 12456-2 always \u70F8 1235-2456-4 @@ -28814,29 +28817,29 @@ always \u70FA 14-1346-4 always \u70FB 2345-4 always \u70FC 1235-34-3 always \u70FD 12345-1356-3 -always \u70FE 1456 +always \u70FE 12-156-5 always \u70FF 1245-12346-2 always \u7100 1235-34-2 always \u7101 1456 always \u7102 24-34-2 -always \u7103 1456 +always \u7103 1235-2346-5 always \u7104 15-256-3 -always \u7105 1456 +always \u7105 123-34-5 always \u7106 13-236-2 -always \u7107 1456 -always \u7108 1456 +always \u7107 15-246-3 +always \u7108 15-16-3 always \u7109 2345-3 always \u710A 1235-1236-4 always \u710B 1-456-5 always \u710C 13-256-5 always \u710D 145-16-5 always \u710E 15-246-5 -always \u710F 1456 +always \u710F 13-16-2 always \u7110 34-5 always \u7111 1456 always \u7112 1456 always \u7113 135-345-1 -always \u7114 1456 +always \u7114 2345-5 always \u7115 1235-12456-5 always \u7116 134-136-3 always \u7117 13-1256-2 @@ -28845,38 +28848,38 @@ always \u7119 135-356-5 always \u711A 12345-136-2 always \u711B 14-1456-5 always \u711C 1235-123456-5 -always \u711D 1456 +always \u711D 1235-123456-5 always \u711E 124-123456-3 always \u711F 15-16-2 always \u7120 245-1246-5 always \u7121 34-2 always \u7122 1235-12346-3 always \u7123 13-1256-5 -always \u7124 1456 +always \u7124 12345-34-4 always \u7125 25-5 always \u7126 13-246-3 -always \u7127 1456 +always \u7127 245-12346-3 always \u7128 12345-1356-5 -always \u7129 1456 -always \u712A 1456 -always \u712B 1456 -always \u712C 1456 -always \u712D 1456 +always \u7129 1234-13456-3 +always \u712A 245-235-3 +always \u712B 1245-25-5 +always \u712C 15-16-2 +always \u712D 245-235-2 always \u712E 15-1456-5 always \u712F 1-25-2 always \u7130 2345-5 always \u7131 2345-4 always \u7132 16-5 -always \u7133 1456 -always \u7134 1456 -always \u7135 1456 +always \u7133 13-236-2 +always \u7134 1256-5 +always \u7135 13-1346-5 always \u7136 1245-1236-2 -always \u7137 1456 -always \u7138 1456 +always \u7137 1234-16-2 +always \u7138 13-34-4 always \u7139 1456 always \u713A 24-1356-3 -always \u713B 1456 -always \u713C 1456 +always \u713B 12-1346-5 +always \u713C 24-146-3 always \u713D 1456 always \u713E 1456 always \u713F 1456 @@ -28885,29 +28888,29 @@ always \u7141 12-136-2 always \u7142 1235-2346-5 always \u7143 123-1246-4 always \u7144 1-12346-3 -always \u7145 1456 +always \u7145 145-12456-5 always \u7146 15-23456-3 always \u7147 1235-1246-3 -always \u7148 1456 +always \u7148 12345-1356-5 always \u7149 14-2345-5 -always \u714A 1456 +always \u714A 15-45-3 always \u714B 15-13456-3 always \u714C 1235-456-2 always \u714D 13-246-4 always \u714E 13-2345-3 -always \u714F 1456 +always \u714F 135-16-5 always \u7150 13456-3 -always \u7151 1456 +always \u7151 1-34-4 always \u7152 1246-4 always \u7153 124-12456-3 always \u7154 124-2345-5 -always \u7155 1456 +always \u7155 15-16-3 always \u7156 1345-12456-4 -always \u7157 1456 +always \u7157 1345-12456-4 always \u7158 12-1236-2 always \u7159 2345-3 always \u715A 13-235-4 -always \u715B 1456 +always \u715B 13-235-4 always \u715C 1256-5 always \u715D 134-356-5 always \u715E 24-345-5 @@ -28923,52 +28926,52 @@ always \u7167 1-146-5 always \u7168 1246-3 always \u7169 12345-1236-2 always \u716A 245-234-2 -always \u716B 1456 +always \u716B 15-1246-5 always \u716C 46-2 -always \u716D 1456 +always \u716D 14-346-5 always \u716E 1-34-4 always \u716F 1456 always \u7170 13-146-5 -always \u7171 1456 +always \u7171 13-35-3 always \u7172 135-146-3 -always \u7173 1456 -always \u7174 1456 -always \u7175 1456 +always \u7173 1235-34-2 +always \u7174 256-3 +always \u7175 15-23456-3 always \u7176 1456 always \u7177 1456 always \u7178 135-2345-3 -always \u7179 1456 -always \u717A 1456 +always \u7179 13-12356-5 +always \u717A 124-1246-5 always \u717B 124-1346-2 -always \u717C 1456 +always \u717C 12-146-4 always \u717D 24-1236-3 -always \u717E 1456 -always \u717F 1456 +always \u717E 136-3 +always \u717F 135-126-2 always \u7180 1235-456-4 always \u7181 15-346-2 always \u7182 15-16-5 -always \u7183 1456 +always \u7183 34-5 always \u7184 15-16-2 always \u7185 256-2 always \u7186 1235-2346-2 always \u7187 1235-34-5 -always \u7188 1456 +always \u7188 15-16-3 always \u7189 256-2 always \u718A 15-235-2 -always \u718B 1456 -always \u718C 1456 +always \u718B 1345-2456-2 +always \u718C 24-1236-5 always \u718D 1456 -always \u718E 1456 +always \u718E 246-5 always \u718F 15-256-3 always \u7190 134-13456-2 -always \u7191 1456 +always \u7191 14-2345-2 always \u7192 13456-2 -always \u7193 1456 +always \u7193 34-4 always \u7194 1245-12346-2 always \u7195 1456 always \u7196 1456 always \u7197 245-46-5 -always \u7198 1456 +always \u7198 14-234-3 always \u7199 15-16-3 always \u719A 135-16-5 always \u719B 135-246-3 @@ -28978,19 +28981,19 @@ always \u719E 13-2345-3 always \u719F 24-34-2 always \u71A0 16-5 always \u71A1 14-12356-2 -always \u71A2 1456 -always \u71A3 1456 +always \u71A2 12345-1356-3 +always \u71A3 15-1246-3 always \u71A4 16-5 always \u71A5 124-12346-3 -always \u71A6 1456 +always \u71A6 13-236-2 always \u71A7 125-12346-3 always \u71A8 256-5 always \u71A9 1235-34-5 always \u71AA 16-2 -always \u71AB 1456 +always \u71AB 1-156-5 always \u71AC 146-2 -always \u71AD 1456 -always \u71AE 1456 +always \u71AD 1246-5 +always \u71AE 14-246-2 always \u71AF 1245-1236-4 always \u71B0 12356-3 always \u71B1 1245-2346-5 @@ -28998,12 +29001,12 @@ always \u71B2 13-235-4 always \u71B3 134-1236-5 always \u71B4 135-16-4 always \u71B5 24-1346-3 -always \u71B6 1456 -always \u71B7 1456 +always \u71B6 245-12456-5 +always \u71B7 125-1356-3 always \u71B8 13-2345-3 always \u71B9 15-16-3 -always \u71BA 1456 -always \u71BB 1456 +always \u71BA 15-16-3 +always \u71BB 15-16-3 always \u71BC 16-5 always \u71BD 15-246-5 always \u71BE 12-156-5 @@ -29020,18 +29023,18 @@ always \u71C8 145-1356-3 always \u71C9 145-123456-5 always \u71CA 24-136-3 always \u71CB 13-246-3 -always \u71CC 1456 -always \u71CD 1456 +always \u71CC 12345-136-2 +always \u71CD 15-156-3 always \u71CE 14-246-2 always \u71CF 1256-5 always \u71D0 14-1456-2 -always \u71D1 1456 +always \u71D1 124-12346-2 always \u71D2 24-146-3 -always \u71D3 1456 +always \u71D3 12345-136-3 always \u71D4 12345-1236-2 always \u71D5 2345-5 always \u71D6 15-256-2 -always \u71D7 1456 +always \u71D7 14-1236-5 always \u71D8 134-356-4 always \u71D9 124-1346-5 always \u71DA 16-3 @@ -29043,73 +29046,73 @@ always \u71DF 13456-2 always \u71E0 146-5 always \u71E1 16-5 always \u71E2 15-236-2 -always \u71E3 1456 +always \u71E3 14-1236-2 always \u71E4 124-2456-5 always \u71E5 125-146-5 always \u71E6 245-1236-5 always \u71E7 15-1246-5 always \u71E8 15-16-3 -always \u71E9 1456 -always \u71EA 1456 -always \u71EB 1456 +always \u71E9 245-236-5 +always \u71EA 245-12346-3 +always \u71EB 14-2345-2 always \u71EC 1235-1246-4 always \u71ED 1-34-2 always \u71EE 15-346-5 -always \u71EF 1456 +always \u71EF 14-13456-2 always \u71F0 1246-3 always \u71F1 16-5 always \u71F2 15-346-2 -always \u71F3 1456 +always \u71F3 1-146-5 always \u71F4 1235-1246-5 always \u71F5 1456 always \u71F6 1456 -always \u71F7 1456 +always \u71F7 14-1236-2 always \u71F8 1245-34-2 always \u71F9 15-2345-4 -always \u71FA 1456 +always \u71FA 123-146-4 always \u71FB 15-256-3 always \u71FC 13-1456-5 always \u71FD 12-12356-2 always \u71FE 124-146-2 always \u71FF 246-5 -always \u7200 1456 +always \u7200 1235-2346-5 always \u7201 14-1236-5 always \u7202 135-246-3 always \u7203 1245-12346-2 -always \u7204 1456 +always \u7204 14-16-5 always \u7205 134-126-5 always \u7206 135-146-5 always \u7207 1245-25-5 -always \u7208 1456 -always \u7209 1456 +always \u7208 14-1256-2 +always \u7209 14-345-5 always \u720A 146-2 -always \u720B 1456 +always \u720B 15-256-5 always \u720C 123-456-5 always \u720D 24-25-5 always \u720E 1456 -always \u720F 1456 +always \u720F 14-16-5 always \u7210 14-34-2 -always \u7211 1456 -always \u7212 1456 +always \u7211 13-236-2 +always \u7212 14-246-5 always \u7213 2345-2 always \u7214 15-16-3 -always \u7215 1456 -always \u7216 1456 -always \u7217 1456 +always \u7215 15-346-5 +always \u7216 14-12346-2 +always \u7217 346-5 always \u7218 1456 always \u7219 1245-1346-4 always \u721A 236-5 always \u721B 14-1236-5 -always \u721C 1456 +always \u721C 245-12346-2 always \u721D 13-236-2 always \u721E 124-12346-2 always \u721F 13-12456-5 always \u7220 1456 -always \u7221 1456 +always \u7221 12-2346-5 always \u7222 134-16-2 always \u7223 124-1346-4 -always \u7224 1456 -always \u7225 1456 +always \u7224 14-1236-5 +always \u7225 1-34-2 always \u7226 14-1236-4 always \u7227 14-13456-2 always \u7228 245-12456-5 @@ -29118,13 +29121,13 @@ always \u722A 1-35-4 always \u722B 1456 always \u722C 1234-345-2 always \u722D 1-1356-3 -always \u722E 1456 -always \u722F 1456 +always \u722E 1234-146-2 +always \u722F 12-1356-3 always \u7230 45-2 always \u7231 2456-5 -always \u7232 1456 +always \u7232 1246-5 always \u7233 1456 -always \u7234 1456 +always \u7234 13-236-2 always \u7235 13-236-2 always \u7236 12345-34-5 always \u7237 346-2 @@ -29132,16 +29135,16 @@ always \u7238 135-345-5 always \u7239 145-346-3 always \u723A 346-2 always \u723B 246-2 -always \u723C 1456 +always \u723C 125-34-4 always \u723D 24-456-4 always \u723E 156-4 always \u723F 135-1236-5 -always \u7240 1456 +always \u7240 12-456-2 always \u7241 13-2346-3 always \u7242 125-1346-3 -always \u7243 1456 +always \u7243 145-346-2 always \u7244 245-46-3 -always \u7245 1456 +always \u7245 235-2 always \u7246 245-46-2 always \u7247 1234-2345-5 always \u7248 135-1236-4 @@ -29150,14 +29153,14 @@ always \u724A 24-146-2 always \u724B 13-2345-3 always \u724C 1234-2456-2 always \u724D 145-34-2 -always \u724E 1456 +always \u724E 12-456-3 always \u724F 1-34-5 -always \u7250 1456 -always \u7251 1456 +always \u7250 1-345-2 +always \u7251 135-2345-3 always \u7252 145-346-2 always \u7253 135-1346-4 -always \u7254 1456 -always \u7255 1456 +always \u7254 135-126-2 +always \u7255 12-456-3 always \u7256 234-4 always \u7257 1456 always \u7258 145-34-2 @@ -29172,20 +29175,20 @@ always \u7260 124-3457-3 always \u7261 134-34-4 always \u7262 14-146-2 always \u7263 1245-136-5 -always \u7264 1456 -always \u7265 1456 -always \u7266 1456 +always \u7264 134-1346-2 +always \u7265 12345-1346-3 +always \u7266 134-146-2 always \u7267 134-34-5 -always \u7268 1456 +always \u7268 13-1346-3 always \u7269 34-5 always \u726A 2345-5 -always \u726B 1456 +always \u726B 13-2346-3 always \u726C 135-356-5 -always \u726D 1456 +always \u726D 15-156-5 always \u726E 13-2345-5 always \u726F 13-34-4 always \u7270 234-5 -always \u7271 1456 +always \u7271 13-2346-3 always \u7272 24-1356-3 always \u7273 134-34-4 always \u7274 145-16-4 @@ -29202,12 +29205,12 @@ always \u727E 34-2 always \u727F 13-34-5 always \u7280 15-16-3 always \u7281 14-16-2 -always \u7282 1456 -always \u7283 1456 +always \u7282 14-16-2 +always \u7283 1234-12356-4 always \u7284 13-16-3 always \u7285 13-1346-3 always \u7286 124-2346-5 -always \u7287 1456 +always \u7287 135-136-3 always \u7288 245-45-2 always \u7289 1245-123456-2 always \u728A 145-34-2 @@ -29215,23 +29218,23 @@ always \u728B 135-345-1 always \u728C 13-23456-3 always \u728D 13-2345-3 always \u728E 12345-1356-3 -always \u728F 1456 +always \u728F 1234-2345-3 always \u7290 123-2346-3 always \u7291 13-1256-2 always \u7292 123-146-5 always \u7293 12-34-2 -always \u7294 1456 +always \u7294 15-16-5 always \u7295 135-356-5 always \u7296 14-25-5 always \u7297 13-346-5 always \u7298 134-345-2 -always \u7299 1456 +always \u7299 15-1236-3 always \u729A 1246-5 always \u729B 14-16-2 -always \u729C 1456 +always \u729C 145-123456-3 always \u729D 124-12346-2 always \u729E 245-246-2 -always \u729F 1456 +always \u729F 13-46-5 always \u72A0 1456 always \u72A1 14-16-5 always \u72A2 145-34-2 @@ -29243,26 +29246,26 @@ always \u72A7 15-16-3 always \u72A8 12-12356-3 always \u72A9 1246-2 always \u72AA 123-1246-2 -always \u72AB 1456 +always \u72AB 12-12356-3 always \u72AC 245-45-4 always \u72AD 1456 always \u72AE 135-126-2 always \u72AF 12345-1236-5 always \u72B0 245-234-2 -always \u72B1 1456 -always \u72B2 1456 -always \u72B3 1456 +always \u72B1 13-16-4 +always \u72B2 245-2456-2 +always \u72B3 12-25-2 always \u72B4 1235-1236-2 always \u72B5 13-346-2 always \u72B6 1-456-5 always \u72B7 13-456-4 -always \u72B8 1456 +always \u72B8 134-345-5 always \u72B9 234-2 always \u72BA 123-1346-5 -always \u72BB 1456 -always \u72BC 1456 +always \u72BB 135-126-2 +always \u72BC 1235-12356-4 always \u72BD 23456-5 -always \u72BE 1456 +always \u72BE 1456-2 always \u72BF 1235-12456-3 always \u72C0 1-456-5 always \u72C1 256-4 @@ -29271,39 +29274,39 @@ always \u72C3 1345-234-4 always \u72C4 145-16-2 always \u72C5 245-13456-3 always \u72C6 1-12346-5 -always \u72C7 1456 +always \u72C7 134-34-5 always \u72C8 135-356-5 always \u72C9 1234-16-3 always \u72CA 13-1256-2 always \u72CB 1345-16-2 always \u72CC 24-1356-3 -always \u72CD 1456 +always \u72CD 1234-146-2 always \u72CE 15-23456-2 -always \u72CF 1456 +always \u72CF 124-25-2 always \u72D0 1235-34-2 always \u72D1 14-13456-2 always \u72D2 12345-356-5 -always \u72D3 1456 +always \u72D3 1234-16-3 always \u72D4 1345-16-4 -always \u72D5 1456 +always \u72D5 146-4 always \u72D6 234-5 always \u72D7 13-12356-4 always \u72D8 236-5 always \u72D9 13-1256-3 always \u72DA 145-1236-5 -always \u72DB 1456 +always \u72DB 1234-126-5 always \u72DC 13-34-4 -always \u72DD 1456 +always \u72DD 15-2345-4 always \u72DE 1345-13456-2 always \u72DF 1235-12456-2 always \u72E0 1235-136-4 always \u72E1 13-246-4 -always \u72E2 1456 +always \u72E2 1235-2346-2 always \u72E3 1-146-5 always \u72E4 13-16-2 -always \u72E5 1456 +always \u72E5 15-256-5 always \u72E6 24-1236-3 -always \u72E7 1456 +always \u72E7 124-345-5 always \u72E8 1245-12346-2 always \u72E9 24-12356-4 always \u72EA 124-12346-3 @@ -29317,7 +29320,7 @@ always \u72F1 1256-5 always \u72F2 15-123456-3 always \u72F3 1256-2 always \u72F4 135-16-5 -always \u72F5 1456 +always \u72F5 134-1346-2 always \u72F6 15-16-4 always \u72F7 13-45-5 always \u72F8 14-16-2 @@ -29330,31 +29333,31 @@ always \u72FE 1-156-5 always \u72FF 2345-2 always \u7300 24-345-3 always \u7301 14-16-5 -always \u7302 1456 +always \u7302 1235-1236-5 always \u7303 15-2345-4 -always \u7304 1456 -always \u7305 1456 -always \u7306 1456 +always \u7304 13-13456-3 +always \u7305 1234-2456-2 +always \u7306 12345-356-3 always \u7307 246-2 always \u7308 135-345-5 -always \u7309 1456 +always \u7309 245-16-2 always \u730A 1345-16-2 always \u730B 135-246-3 always \u730C 1456-5 -always \u730D 1456 +always \u730D 14-2456-2 always \u730E 14-346-5 always \u730F 13-2345-3 -always \u7310 1456 +always \u7310 245-46-3 always \u7311 123-123456-3 always \u7312 2345-3 always \u7313 13-25-4 -always \u7314 1456 +always \u7314 125-12346-5 always \u7315 134-16-2 always \u7316 12-1346-3 always \u7317 16-3 always \u7318 1-156-5 always \u7319 1-1356-3 -always \u731A 1456 +always \u731A 23456-2 always \u731B 134-1356-4 always \u731C 245-2456-3 always \u731D 245-34-5 @@ -29364,18 +29367,18 @@ always \u7320 1456 always \u7321 14-25-2 always \u7322 1235-34-2 always \u7323 125-12346-3 -always \u7324 1456 +always \u7324 13-16-5 always \u7325 1246-4 always \u7326 12345-1356-3 always \u7327 25-3 -always \u7328 1456 +always \u7328 45-2 always \u7329 15-13456-3 always \u732A 1-34-3 always \u732B 134-146-3 -always \u732C 1456 +always \u732C 1246-5 always \u732D 12-12456-2 always \u732E 15-2345-5 -always \u732F 1456 +always \u732F 124-12456-3 always \u7330 23456-5 always \u7331 1345-146-2 always \u7332 15-346-3 @@ -29384,43 +29387,43 @@ always \u7334 1235-12356-2 always \u7335 135-2345-3 always \u7336 234-2 always \u7337 234-2 -always \u7338 1456 -always \u7339 1456 +always \u7338 134-356-2 +always \u7339 1-345-3 always \u733A 246-2 always \u733B 15-123456-3 always \u733C 135-126-2 -always \u733D 1456 +always \u733D 134-13456-2 always \u733E 1235-35-2 always \u733F 45-2 always \u7340 15-12356-3 -always \u7341 1456 +always \u7341 134-345-5 always \u7342 45-2 always \u7343 145-2456-3 always \u7344 1256-5 always \u7345 24-156-3 -always \u7346 1456 +always \u7346 1235-146-2 always \u7347 1456 -always \u7348 1456 +always \u7348 16-5 always \u7349 1-136-3 always \u734A 12-456-5 -always \u734B 1456 +always \u734B 1235-146-2 always \u734C 134-1236-5 always \u734D 13-13456-5 always \u734E 13-46-4 -always \u734F 1456 +always \u734F 134-34-2 always \u7350 1-1346-3 always \u7351 12-1236-2 always \u7352 146-2 -always \u7353 1456 -always \u7354 1456 -always \u7355 1456 -always \u7356 1456 +always \u7353 146-2 +always \u7354 1235-146-2 +always \u7355 245-1246-3 +always \u7356 12345-136-2 always \u7357 13-236-2 always \u7358 135-16-5 always \u7359 135-16-5 always \u735A 1235-456-2 always \u735B 135-34-4 -always \u735C 1456 +always \u735C 14-1456-2 always \u735D 1256-5 always \u735E 124-12346-2 always \u735F 246-5 @@ -29441,15 +29444,15 @@ always \u736D 124-345-5 always \u736E 15-2345-4 always \u736F 15-256-3 always \u7370 1345-13456-2 -always \u7371 1456 +always \u7371 1234-1456-2 always \u7372 1235-25-5 always \u7373 1345-12356-5 -always \u7374 1456 +always \u7374 134-1356-2 always \u7375 14-346-5 always \u7376 1345-146-2 always \u7377 13-456-4 always \u7378 24-12356-5 -always \u7379 1456 +always \u7379 14-34-2 always \u737A 124-345-5 always \u737B 15-2345-5 always \u737C 134-16-2 @@ -29468,11 +29471,11 @@ always \u7388 14-34-2 always \u7389 1256-5 always \u738A 15-34-5 always \u738B 456-2 -always \u738C 1456 -always \u738D 1456 +always \u738C 245-234-2 +always \u738D 13-345-4 always \u738E 145-13456-3 -always \u738F 1456 -always \u7390 1456 +always \u738F 14-2346-5 +always \u7390 135-345-3 always \u7391 13-16-3 always \u7392 1235-12346-2 always \u7393 145-16-5 @@ -29480,32 +29483,32 @@ always \u7394 12-12456-5 always \u7395 13-1236-3 always \u7396 13-234-4 always \u7397 1256-2 -always \u7398 1456 -always \u7399 1456 -always \u739A 1456 +always \u7398 13-16-4 +always \u7399 1256-2 +always \u739A 46-2 always \u739B 134-345-4 -always \u739C 1456 +always \u739C 13-12346-3 always \u739D 34-4 -always \u739E 1456 +always \u739E 12345-34-3 always \u739F 123456-2 always \u73A0 13-346-5 always \u73A1 23456-5 always \u73A2 135-1456-3 -always \u73A3 1456 +always \u73A3 135-2345-5 always \u73A4 135-1356-4 always \u73A5 236-5 always \u73A6 13-236-2 -always \u73A7 1456 +always \u73A7 256-4 always \u73A8 13-236-2 always \u73A9 12456-2 -always \u73AA 1456 +always \u73AA 13-2345-3 always \u73AB 134-356-2 always \u73AC 145-1236-4 always \u73AD 1234-1456-2 always \u73AE 1246-4 always \u73AF 1235-12456-2 always \u73B0 15-2345-5 -always \u73B1 1456 +always \u73B1 245-46-3 always \u73B2 14-13456-2 always \u73B3 145-2456-5 always \u73B4 16-5 @@ -29517,31 +29520,31 @@ always \u73B9 15-45-2 always \u73BA 15-16-4 always \u73BB 135-126-3 always \u73BC 245-156-4 -always \u73BD 1456 +always \u73BD 13-12356-4 always \u73BE 13-23456-4 always \u73BF 24-146-2 always \u73C0 1234-126-5 -always \u73C1 1456 +always \u73C1 245-156-2 always \u73C2 123-2346-3 always \u73C3 1245-1236-4 -always \u73C4 1456 +always \u73C4 24-1356-3 always \u73C5 24-136-3 always \u73C6 16-2 always \u73C7 125-34-4 always \u73C8 13-23456-3 -always \u73C9 1456 +always \u73C9 134-1456-2 always \u73CA 24-1236-3 always \u73CB 14-234-4 always \u73CC 135-16-5 always \u73CD 1-136-3 -always \u73CE 1456 +always \u73CE 1-136-3 always \u73CF 13-236-2 always \u73D0 12345-345-5 always \u73D1 14-12346-2 always \u73D2 13-1456-3 always \u73D3 13-246-5 always \u73D4 13-2345-5 -always \u73D5 1456 +always \u73D5 14-16-5 always \u73D6 13-456-3 always \u73D7 15-2345-3 always \u73D8 1-12356-3 @@ -29551,42 +29554,42 @@ always \u73DB 15-234-5 always \u73DC 46-2 always \u73DD 15-1256-4 always \u73DE 14-25-5 -always \u73DF 1456 +always \u73DF 15-34-5 always \u73E0 1-34-3 -always \u73E1 1456 -always \u73E2 1456 +always \u73E1 245-1456-2 +always \u73E2 123-136-5 always \u73E3 15-256-2 -always \u73E4 1456 +always \u73E4 135-146-4 always \u73E5 156-4 -always \u73E6 1456 +always \u73E6 15-46-5 always \u73E7 246-2 always \u73E8 15-23456-2 always \u73E9 1235-1356-2 always \u73EA 13-1246-3 always \u73EB 12-12346-3 -always \u73EC 1456 +always \u73EC 15-1256-5 always \u73ED 135-1236-3 always \u73EE 1234-356-5 always \u73EF 1456 -always \u73F0 1456 +always \u73F0 145-1346-3 always \u73F1 1456 always \u73F2 1235-123456-2 -always \u73F3 1456 +always \u73F3 123456-2 always \u73F4 2346-2 always \u73F5 12-1356-2 always \u73F6 124-16-2 -always \u73F7 1456 +always \u73F7 34-4 always \u73F8 34-2 -always \u73F9 1456 +always \u73F9 12-1356-2 always \u73FA 13-256-5 -always \u73FB 1456 +always \u73FB 134-356-2 always \u73FC 135-356-5 always \u73FD 124-13456-4 always \u73FE 15-2345-5 always \u73FF 12-25-5 always \u7400 1235-1236-5 always \u7401 15-45-2 -always \u7402 1456 +always \u7402 2345-2 always \u7403 245-234-2 always \u7404 245-45-4 always \u7405 14-1346-2 @@ -29598,24 +29601,24 @@ always \u740A 346-2 always \u740B 15-16-3 always \u740C 14-13456-2 always \u740D 14-16-5 -always \u740E 1456 +always \u740E 13-1456-5 always \u740F 14-2345-4 always \u7410 15-25-4 always \u7411 1456 always \u7412 1456 -always \u7413 1456 -always \u7414 1456 -always \u7415 1456 +always \u7413 12456-2 +always \u7414 145-2345-5 +always \u7415 1234-1456-2 always \u7416 1-1236-4 -always \u7417 1456 -always \u7418 1456 -always \u7419 1456 +always \u7417 245-1246-5 +always \u7418 134-1456-2 +always \u7419 1256-5 always \u741A 13-1256-3 always \u741B 12-136-3 -always \u741C 1456 +always \u741C 14-2456-2 always \u741D 123456-2 -always \u741E 1456 -always \u741F 1456 +always \u741E 24-1356-5 +always \u741F 1246-2 always \u7420 145-2345-4 always \u7421 12-34-5 always \u7422 1-25-2 @@ -29623,7 +29626,7 @@ always \u7423 1234-356-4 always \u7424 12-1356-3 always \u7425 1235-34-4 always \u7426 245-16-2 -always \u7427 1456 +always \u7427 2346-5 always \u7428 123-123456-3 always \u7429 12-1346-3 always \u742A 245-16-2 @@ -29639,60 +29642,60 @@ always \u7433 14-1456-2 always \u7434 245-1456-2 always \u7435 1234-16-2 always \u7436 1234-345-2 -always \u7437 1456 -always \u7438 1456 -always \u7439 1456 +always \u7437 245-236-5 +always \u7438 1-25-2 +always \u7439 245-1456-2 always \u743A 12345-345-5 always \u743B 1456 always \u743C 245-235-2 -always \u743D 1456 -always \u743E 1456 +always \u743D 145-34-4 +always \u743E 13-346-5 always \u743F 1235-123456-2 always \u7440 1256-4 always \u7441 134-356-5 always \u7442 134-356-2 always \u7443 1456 always \u7444 15-45-3 -always \u7445 1456 +always \u7445 124-16-2 always \u7446 15-13456-3 -always \u7447 1456 -always \u7448 1456 -always \u7449 1456 +always \u7447 145-2456-5 +always \u7448 1245-12356-2 +always \u7449 134-1456-2 always \u744A 1-136-3 always \u744B 1246-4 -always \u744C 1456 +always \u744C 1245-12456-4 always \u744D 1235-12456-5 always \u744E 13-346-3 always \u744F 12-12456-3 always \u7450 13-2345-4 always \u7451 1-12456-5 always \u7452 12-1346-5 -always \u7453 1456 +always \u7453 14-2345-5 always \u7454 245-45-2 always \u7455 15-23456-2 -always \u7456 1456 +always \u7456 145-12456-5 always \u7457 45-5 -always \u7458 1456 +always \u7458 346-2 always \u7459 1345-146-4 always \u745A 1235-34-2 always \u745B 13456-3 always \u745C 1256-2 -always \u745D 1456 +always \u745D 1235-456-2 always \u745E 1245-1246-5 always \u745F 15-2346-5 -always \u7460 1456 +always \u7460 14-234-2 always \u7461 1456 always \u7462 1245-12346-2 always \u7463 15-25-4 always \u7464 246-2 -always \u7465 1456 -always \u7466 1456 +always \u7465 123456-3 +always \u7466 34-3 always \u7467 13-1456-3 -always \u7468 1456 +always \u7468 13-1456-5 always \u7469 13456-2 always \u746A 134-345-4 -always \u746B 1456 -always \u746C 1456 +always \u746B 124-146-3 +always \u746C 14-234-2 always \u746D 124-1346-2 always \u746E 14-16-5 always \u746F 14-1346-2 @@ -29700,23 +29703,23 @@ always \u7470 13-1246-3 always \u7471 124-2345-5 always \u7472 245-46-3 always \u7473 245-25-3 -always \u7474 1456 +always \u7474 13-236-2 always \u7475 1-146-4 always \u7476 246-2 always \u7477 2456-5 -always \u7478 1456 +always \u7478 135-1456-3 always \u7479 124-34-2 -always \u747A 1456 -always \u747B 1456 +always \u747A 12-1346-2 +always \u747B 123-123456-3 always \u747C 1-12456-3 always \u747D 245-12346-3 always \u747E 13-1456-4 always \u747F 16-3 always \u7480 245-1246-4 always \u7481 245-12346-3 -always \u7482 1456 +always \u7482 245-16-2 always \u7483 14-16-2 -always \u7484 1456 +always \u7484 13456-4 always \u7485 125-146-4 always \u7486 245-234-2 always \u7487 15-45-2 @@ -29724,29 +29727,29 @@ always \u7488 146-2 always \u7489 14-2345-4 always \u748A 134-136-2 always \u748B 1-1346-3 -always \u748C 1456 +always \u748C 1456-2 always \u748D 1456 always \u748E 13456-3 -always \u748F 1456 +always \u748F 1-156-5 always \u7490 14-34-5 -always \u7491 1456 +always \u7491 34-2 always \u7492 145-1356-3 always \u7493 1456 always \u7494 125-1356-3 always \u7495 15-256-2 -always \u7496 1456 +always \u7496 245-1256-2 always \u7497 145-1346-5 always \u7498 14-1456-2 -always \u7499 1456 +always \u7499 14-246-2 always \u749A 245-235-2 -always \u749B 1456 +always \u749B 15-34-5 always \u749C 1235-456-2 -always \u749D 1456 +always \u749D 13-1246-3 always \u749E 1234-34-2 always \u749F 13-13456-4 always \u74A0 12345-1236-2 always \u74A1 13-1456-5 -always \u74A2 1456 +always \u74A2 14-234-2 always \u74A3 13-16-3 always \u74A4 1456 always \u74A5 13-13456-4 @@ -29756,23 +29759,23 @@ always \u74A8 245-1236-5 always \u74A9 245-1256-2 always \u74AA 125-146-4 always \u74AB 145-1346-3 -always \u74AC 1456 +always \u74AC 13-246-4 always \u74AD 13-123456-5 -always \u74AE 1456 +always \u74AE 124-1236-4 always \u74AF 1235-1246-5 always \u74B0 1235-12456-2 always \u74B1 15-2346-5 always \u74B2 15-1246-5 -always \u74B3 1456 +always \u74B3 124-2345-2 always \u74B4 1456 always \u74B5 1256-2 always \u74B6 13-1456-5 always \u74B7 12345-34-3 always \u74B8 135-1456-3 -always \u74B9 1456 +always \u74B9 24-12356-5 always \u74BA 123456-5 always \u74BB 125-1246-4 -always \u74BC 1456 +always \u74BC 14-1236-2 always \u74BD 15-16-4 always \u74BE 13-16-5 always \u74BF 15-45-2 @@ -29780,22 +29783,22 @@ always \u74C0 1245-12456-2 always \u74C1 1235-25-5 always \u74C2 13-2456-5 always \u74C3 14-356-2 -always \u74C4 1456 +always \u74C4 145-34-2 always \u74C5 14-16-5 -always \u74C6 1456 -always \u74C7 1456 -always \u74C8 1456 -always \u74C9 1456 +always \u74C6 1-156-2 +always \u74C7 1245-12356-2 +always \u74C8 14-16-2 +always \u74C9 125-1236-5 always \u74CA 245-235-2 always \u74CB 1-2456-3 -always \u74CC 1456 -always \u74CD 1456 -always \u74CE 1456 +always \u74CC 13-1246-3 +always \u74CD 15-1246-5 +always \u74CE 14-345-5 always \u74CF 14-12346-2 -always \u74D0 1456 -always \u74D1 1456 +always \u74D0 14-34-2 +always \u74D1 14-16-5 always \u74D2 125-1236-5 -always \u74D3 1456 +always \u74D3 14-1236-5 always \u74D4 13456-3 always \u74D5 134-16-2 always \u74D6 15-46-3 @@ -29818,43 +29821,43 @@ always \u74E6 35-4 always \u74E7 1456 always \u74E8 13-46-3 always \u74E9 13-2456 -always \u74EA 1456 -always \u74EB 1456 +always \u74EA 12345-1236-4 +always \u74EB 1234-136-2 always \u74EC 12345-1346-4 -always \u74ED 1456 +always \u74ED 145-1236-4 always \u74EE 12346-5 always \u74EF 12356-3 always \u74F0 1456 always \u74F1 1456 always \u74F2 1456 -always \u74F3 1456 +always \u74F3 1235-34-2 always \u74F4 14-13456-2 always \u74F5 16-2 always \u74F6 1234-13456-2 always \u74F7 245-156-2 always \u74F8 1456 -always \u74F9 1456 -always \u74FA 1456 +always \u74F9 13-45-5 +always \u74FA 12-1346-2 always \u74FB 12-156-3 always \u74FC 1456 always \u74FD 145-1346-5 always \u74FE 134-1356-4 always \u74FF 1234-12356-4 always \u7500 1-1246-5 -always \u7501 1456 +always \u7501 1234-13456-2 always \u7502 135-2345-3 always \u7503 1-12356-5 always \u7504 1-136-3 always \u7505 1456 -always \u7506 1456 +always \u7506 245-156-2 always \u7507 13456-3 always \u7508 245-16-5 -always \u7509 1456 -always \u750A 1456 +always \u7509 15-2345-2 +always \u750A 14-12356-4 always \u750B 145-16-5 always \u750C 12356-3 always \u750D 134-1356-2 -always \u750E 1456 +always \u750E 1-12456-3 always \u750F 1234-1356-5 always \u7510 14-1456-5 always \u7511 125-1356-5 @@ -29865,21 +29868,21 @@ always \u7515 12346-5 always \u7516 13456-3 always \u7517 2345-4 always \u7518 13-1236-3 -always \u7519 1456 +always \u7519 145-2456-5 always \u751A 24-136-5 -always \u751B 1456 +always \u751B 124-2345-2 always \u751C 124-2345-2 always \u751D 1235-1236-3 -always \u751E 1456 +always \u751E 12-1346-2 always \u751F 24-1356-3 -always \u7520 1456 +always \u7520 245-13456-2 always \u7521 24-136-3 always \u7522 12-1236-4 -always \u7523 1456 -always \u7524 1456 +always \u7523 12-1236-4 +always \u7524 1245-1246-2 always \u7525 24-1356-3 always \u7526 15-34-3 -always \u7527 1456 +always \u7527 15-136-3 always \u7528 235-5 always \u7529 24-2356-4 always \u752A 14-34-5 @@ -29892,102 +29895,102 @@ always \u7530 124-2345-2 always \u7531 234-2 always \u7532 13-23456-4 always \u7533 24-136-3 -always \u7534 1456 +always \u7534 1-345-2 always \u7535 145-2345-5 -always \u7536 1456 +always \u7536 12345-34-2 always \u7537 1345-1236-2 always \u7538 145-2345-5 always \u7539 1234-13456-2 always \u753A 124-13456-3 always \u753B 1235-35-5 -always \u753C 1456 +always \u753C 124-13456-4 always \u753D 245-45-4 always \u753E 125-156-3 always \u753F 134-1356-2 always \u7540 135-16-5 -always \u7541 1456 -always \u7542 1456 -always \u7543 1456 -always \u7544 1456 +always \u7541 245-16-2 +always \u7542 14-234-5 +always \u7543 15-256-2 +always \u7544 14-234-2 always \u7545 12-1346-5 -always \u7546 1456 +always \u7546 134-34-4 always \u7547 256-2 always \u7548 12345-1236-5 -always \u7549 1456 -always \u754A 1456 +always \u7549 12345-34-2 +always \u754A 13-1356-3 always \u754B 124-2345-2 always \u754C 13-346-5 -always \u754D 1456 +always \u754D 13-346-5 always \u754E 245-45-4 always \u754F 1246-5 -always \u7550 1456 -always \u7551 1456 -always \u7552 1456 +always \u7550 12345-34-2 +always \u7551 124-2345-2 +always \u7552 134-34-4 always \u7553 1456 always \u7554 1234-1236-5 -always \u7555 1456 -always \u7556 1456 -always \u7557 1456 -always \u7558 1456 +always \u7555 13-46-3 +always \u7556 35-3 +always \u7557 145-345-2 +always \u7558 1345-1236-2 always \u7559 14-234-2 always \u755A 135-136-4 always \u755B 1-136-4 always \u755C 12-34-5 always \u755D 134-34-4 -always \u755E 1456 +always \u755E 134-34-4 always \u755F 245-2346-5 always \u7560 1456 -always \u7561 1456 +always \u7561 13-2456-3 always \u7562 135-16-5 always \u7563 145-345-2 always \u7564 1-156-4 always \u7565 14-236-5 always \u7566 245-16-2 -always \u7567 1456 -always \u7568 1456 +always \u7567 14-236-5 +always \u7568 1234-1236-3 always \u7569 1456 always \u756A 12345-1236-3 always \u756B 1235-35-5 always \u756C 1256-2 -always \u756D 1456 -always \u756E 1456 +always \u756D 1256-2 +always \u756E 134-34-4 always \u756F 13-256-5 always \u7570 16-5 -always \u7571 1456 +always \u7571 14-234-2 always \u7572 1256-2 -always \u7573 1456 +always \u7573 145-346-2 always \u7574 12-12356-2 -always \u7575 1456 +always \u7575 1235-35-5 always \u7576 145-1346-3 always \u7577 12-25-5 always \u7578 13-16-3 always \u7579 12456-4 -always \u757A 1456 -always \u757B 1456 -always \u757C 1456 +always \u757A 13-46-3 +always \u757B 24-1356-2 +always \u757C 12-1346-5 always \u757D 124-12456-4 always \u757E 14-356-2 always \u757F 13-16-3 always \u7580 12-345-3 -always \u7581 1456 +always \u7581 14-234-2 always \u7582 1456 -always \u7583 1456 +always \u7583 124-12456-4 always \u7584 14-1456-2 -always \u7585 1456 +always \u7585 13-46-3 always \u7586 13-46-3 always \u7587 12-12356-2 -always \u7588 1456 -always \u7589 1456 +always \u7588 135-126-5 +always \u7589 145-346-2 always \u758A 145-346-2 always \u758B 1234-16-4 always \u758C 1345-346-5 -always \u758D 1456 -always \u758E 1456 +always \u758D 145-1236-5 +always \u758E 24-34-3 always \u758F 24-34-3 always \u7590 1-156-5 always \u7591 16-2 always \u7592 12-456-2 -always \u7593 1456 +always \u7593 1345-2456-4 always \u7594 145-13456-3 always \u7595 135-16-4 always \u7596 13-346-2 @@ -29995,10 +29998,10 @@ always \u7597 14-246-2 always \u7598 13-12346-3 always \u7599 13-2346-3 always \u759A 13-234-5 -always \u759B 1456 -always \u759C 1456 +always \u759B 1-12356-4 +always \u759C 15-23456-5 always \u759D 24-1236-5 -always \u759E 1456 +always \u759E 15-1256-3 always \u759F 1345-236-5 always \u75A0 14-16-5 always \u75A1 46-2 @@ -30006,14 +30009,14 @@ always \u75A2 12-136-5 always \u75A3 234-2 always \u75A4 135-345-3 always \u75A5 13-346-5 -always \u75A6 1456 +always \u75A6 13-236-2 always \u75A7 245-16-2 -always \u75A8 1456 -always \u75A9 1456 +always \u75A8 15-23456-3 +always \u75A9 245-1246-5 always \u75AA 135-16-5 always \u75AB 16-5 -always \u75AC 1456 -always \u75AD 1456 +always \u75AC 14-16-5 +always \u75AD 125-12346-5 always \u75AE 12-456-3 always \u75AF 12345-1356-3 always \u75B0 1-34-5 @@ -30023,7 +30026,7 @@ always \u75B3 13-1236-3 always \u75B4 2346-3 always \u75B5 245-156-3 always \u75B6 15-346-5 -always \u75B7 1456 +always \u75B7 245-16-2 always \u75B8 145-1236-4 always \u75B9 1-136-4 always \u75BA 12345-345-2 @@ -30035,10 +30038,10 @@ always \u75BF 12345-356-5 always \u75C0 245-1256-2 always \u75C1 24-1236-3 always \u75C2 13-23456-3 -always \u75C3 1456 +always \u75C3 15-2345-2 always \u75C4 12-345-2 always \u75C5 135-13456-5 -always \u75C6 1456 +always \u75C6 1345-16-5 always \u75C7 1-1356-5 always \u75C8 235-3 always \u75C9 13-13456-5 @@ -30051,16 +30054,16 @@ always \u75CF 1246-4 always \u75D0 1235-1246-2 always \u75D1 145-25-4 always \u75D2 46-2 -always \u75D3 1456 +always \u75D3 12-156-5 always \u75D4 1-156-5 always \u75D5 1235-136-2 -always \u75D6 1456 +always \u75D6 23456-4 always \u75D7 134-356-5 always \u75D8 145-12356-5 always \u75D9 13-13456-5 always \u75DA 15-246-3 always \u75DB 124-12346-5 -always \u75DC 1456 +always \u75DC 124-34-3 always \u75DD 134-1346-2 always \u75DE 1234-16-4 always \u75DF 15-246-3 @@ -30069,16 +30072,16 @@ always \u75E1 1234-34-3 always \u75E2 14-16-5 always \u75E3 1-156-5 always \u75E4 245-25-2 -always \u75E5 1456 +always \u75E5 145-25-2 always \u75E6 34-5 always \u75E7 24-345-3 always \u75E8 14-146-2 -always \u75E9 1456 +always \u75E9 24-12356-5 always \u75EA 1235-12456-5 always \u75EB 15-2345-2 -always \u75EC 1456 +always \u75EC 16-5 always \u75ED 1234-1356-2 -always \u75EE 1456 +always \u75EE 1-1346-5 always \u75EF 13-12456-4 always \u75F0 124-1236-2 always \u75F1 12345-356-5 @@ -30098,29 +30101,29 @@ always \u75FE 2346-3 always \u75FF 1246-4 always \u7600 1256-3 always \u7601 245-1246-5 -always \u7602 1456 +always \u7602 23456-4 always \u7603 1-34-4 -always \u7604 1456 +always \u7604 245-34-5 always \u7605 145-1236-5 -always \u7606 1456 -always \u7607 1456 +always \u7606 24-136-5 +always \u7607 1-12346-4 always \u7608 1-156-5 always \u7609 1256-5 always \u760A 1235-12356-2 always \u760B 12345-1356-3 always \u760C 14-345-5 always \u760D 46-2 -always \u760E 1456 +always \u760E 24-136-5 always \u760F 124-34-2 always \u7610 1256-4 always \u7611 13-35-3 -always \u7612 1456 +always \u7612 123456-2 always \u7613 1235-12456-5 always \u7614 123-34-5 always \u7615 13-23456-4 always \u7616 1456-3 always \u7617 16-5 -always \u7618 1456 +always \u7618 14-1256-2 always \u7619 15-146-3 always \u761A 13-236-2 always \u761B 12-156-5 @@ -30140,9 +30143,9 @@ always \u7628 145-2345-3 always \u7629 145-345-2 always \u762A 135-346-4 always \u762B 124-1236-3 -always \u762C 1456 +always \u762C 1-1346-5 always \u762D 135-246-3 -always \u762E 1456 +always \u762E 24-136-5 always \u762F 245-34-5 always \u7630 14-25-4 always \u7631 16-5 @@ -30150,46 +30153,46 @@ always \u7632 125-12346-5 always \u7633 12-12356-3 always \u7634 1-1346-5 always \u7635 1-2456-5 -always \u7636 1456 -always \u7637 1456 +always \u7636 15-12356-5 +always \u7637 15-25-4 always \u7638 245-236-2 -always \u7639 1456 +always \u7639 145-246-5 always \u763A 14-12356-5 -always \u763B 1456 +always \u763B 14-1256-2 always \u763C 134-126-5 always \u763D 13-1456-5 always \u763E 1456-4 always \u763F 13456-4 -always \u7640 1456 -always \u7641 1456 +always \u7640 1235-456-2 +always \u7641 12345-34-2 always \u7642 14-246-2 always \u7643 14-12346-2 -always \u7644 1456 -always \u7645 1456 +always \u7644 245-246-2 +always \u7645 14-234-2 always \u7646 14-146-2 always \u7647 15-2345-2 always \u7648 12345-356-5 always \u7649 145-1236-5 -always \u764A 1456 -always \u764B 1456 +always \u764A 1456-5 +always \u764B 1235-2346-5 always \u764C 2345-2 -always \u764D 1456 -always \u764E 1456 -always \u764F 1456 +always \u764D 135-1236-3 +always \u764E 15-2345-2 +always \u764F 13-12456-3 always \u7650 13-2356-5 -always \u7651 1456 +always \u7651 1345-12346-2 always \u7652 1256-5 always \u7653 1246-2 -always \u7654 1456 -always \u7655 1456 +always \u7654 16-5 +always \u7655 235-3 always \u7656 1234-16-4 always \u7657 14-356-4 always \u7658 14-16-5 always \u7659 24-34-4 always \u765A 145-1236-5 -always \u765B 1456 +always \u765B 14-1456-4 always \u765C 145-2345-5 -always \u765D 1456 +always \u765D 14-1456-4 always \u765E 14-2456-5 always \u765F 135-346-4 always \u7660 13-16-5 @@ -30199,108 +30202,108 @@ always \u7663 15-2345-4 always \u7664 13-346-2 always \u7665 1-1356-3 always \u7666 1456 -always \u7667 1456 -always \u7668 1456 +always \u7667 14-16-5 +always \u7668 1235-25-5 always \u7669 14-2456-5 always \u766A 135-345-1 always \u766B 145-2345-3 always \u766C 15-2345-4 always \u766D 13456-4 always \u766E 1456-4 -always \u766F 1456 +always \u766F 245-1256-2 always \u7670 235-3 always \u7671 124-1236-3 always \u7672 145-2345-3 -always \u7673 1456 -always \u7674 1456 +always \u7673 14-25-4 +always \u7674 14-12456-2 always \u7675 14-12456-2 always \u7676 135-126-3 always \u7677 1456 always \u7678 13-1246-4 always \u7679 1234-126-3 -always \u767A 1456 +always \u767A 12345-345-3 always \u767B 145-1356-3 always \u767C 12345-345-3 always \u767D 135-2456-2 always \u767E 135-2456-4 always \u767F 245-346-2 -always \u7680 1456 +always \u7680 135-16-3 always \u7681 125-146-5 always \u7682 125-146-5 -always \u7683 1456 +always \u7683 134-146-5 always \u7684 145-2346-1 -always \u7685 1456 +always \u7685 1234-345-3 always \u7686 13-346-3 always \u7687 1235-456-2 always \u7688 13-1246-3 always \u7689 245-156-4 always \u768A 14-13456-2 always \u768B 13-146-3 -always \u768C 1456 -always \u768D 1456 +always \u768C 134-126-5 +always \u768D 13-16-2 always \u768E 13-246-4 always \u768F 1234-1356-4 -always \u7690 1456 +always \u7690 13-146-3 always \u7691 2456-2 always \u7692 2346-2 always \u7693 1235-146-5 -always \u7694 1456 +always \u7694 1235-1236-5 always \u7695 135-16-5 always \u7696 12456-4 -always \u7697 1456 -always \u7698 1456 +always \u7697 12-12356-2 +always \u7698 245-2345-5 always \u7699 15-16-3 always \u769A 2456-2 always \u769B 13-235-4 always \u769C 1235-146-5 always \u769D 1235-456-4 always \u769E 1235-146-5 -always \u769F 1456 -always \u76A0 1456 -always \u76A1 1456 -always \u76A2 1456 -always \u76A3 1456 +always \u769F 125-2346-2 +always \u76A0 245-1246-4 +always \u76A1 1235-146-5 +always \u76A2 15-246-4 +always \u76A3 346-5 always \u76A4 1234-126-2 -always \u76A5 1456 +always \u76A5 1235-146-5 always \u76A6 13-246-4 -always \u76A7 1456 -always \u76A8 1456 -always \u76A9 1456 +always \u76A7 2456-5 +always \u76A8 15-13456-3 +always \u76A9 1235-456-5 always \u76AA 14-16-5 always \u76AB 1234-246-4 -always \u76AC 1456 +always \u76AC 1235-2346-5 always \u76AD 13-246-5 always \u76AE 1234-16-2 always \u76AF 13-1236-4 always \u76B0 1234-146-5 always \u76B1 1-12356-5 always \u76B2 13-256-3 -always \u76B3 1456 +always \u76B3 245-234-2 always \u76B4 245-123456-3 always \u76B5 245-236-5 -always \u76B6 1456 -always \u76B7 1456 +always \u76B6 1-345-3 +always \u76B7 13-34-4 always \u76B8 13-256-3 -always \u76B9 1456 +always \u76B9 13-256-3 always \u76BA 1-12356-5 always \u76BB 1-345-3 -always \u76BC 1456 +always \u76BC 13-34-4 always \u76BD 1-1236-4 always \u76BE 145-34-2 always \u76BF 134-1456-4 -always \u76C0 1456 -always \u76C1 1456 +always \u76C0 245-16-4 +always \u76C1 13456-2 always \u76C2 1256-2 always \u76C3 135-356-3 always \u76C4 1-146-3 always \u76C5 1-12346-3 always \u76C6 1234-136-2 -always \u76C7 1456 +always \u76C7 1235-2346-2 always \u76C8 13456-2 always \u76C9 1235-2346-2 always \u76CA 16-5 -always \u76CB 1456 -always \u76CC 1456 +always \u76CB 135-126-3 +always \u76CC 12456-4 always \u76CD 1235-2346-2 always \u76CE 1346-5 always \u76CF 1-1236-4 @@ -30309,29 +30312,29 @@ always \u76D1 13-2345-3 always \u76D2 1235-2346-2 always \u76D3 1256-3 always \u76D4 123-1246-3 -always \u76D5 1456 +always \u76D5 12345-1236-5 always \u76D6 13-2456-5 always \u76D7 145-146-5 always \u76D8 1234-1236-2 -always \u76D9 1456 +always \u76D9 12345-34-4 always \u76DA 245-234-2 always \u76DB 24-1356-5 always \u76DC 145-146-5 always \u76DD 14-34-5 always \u76DE 1-1236-4 always \u76DF 134-1356-2 -always \u76E0 1456 +always \u76E0 14-16-4 always \u76E1 13-1456-5 -always \u76E2 1456 +always \u76E2 15-1256-5 always \u76E3 13-2345-3 always \u76E4 1234-1236-2 always \u76E5 13-12456-5 always \u76E6 1236-3 always \u76E7 14-34-2 -always \u76E8 1456 +always \u76E8 24-34-4 always \u76E9 1-12356-3 always \u76EA 145-1346-5 -always \u76EB 1456 +always \u76EB 1236-3 always \u76EC 13-34-4 always \u76ED 14-16-5 always \u76EE 134-34-5 @@ -30342,65 +30345,65 @@ always \u76F2 134-1346-2 always \u76F3 134-1346-2 always \u76F4 1-156-2 always \u76F5 245-16-5 -always \u76F6 1456 +always \u76F6 1245-12456-4 always \u76F7 124-2345-2 always \u76F8 15-46-3 always \u76F9 145-123456-5 always \u76FA 15-1456-3 always \u76FB 15-16-5 always \u76FC 1234-1236-5 -always \u76FD 1456 +always \u76FD 12345-1356-3 always \u76FE 145-123456-5 -always \u76FF 1456 -always \u7700 1456 +always \u76FF 134-1456-2 +always \u7700 134-13456-2 always \u7701 24-1356-4 -always \u7702 1456 +always \u7702 24-156-5 always \u7703 256-2 always \u7704 134-2345-4 always \u7705 1234-1236-3 -always \u7706 1456 +always \u7706 12345-1346-4 always \u7707 134-246-4 always \u7708 145-1236-3 always \u7709 134-356-2 always \u770A 134-146-5 always \u770B 123-1236-5 -always \u770C 1456 -always \u770D 1456 -always \u770E 1456 -always \u770F 1456 +always \u770C 15-2345-5 +always \u770D 12356-3 +always \u770E 24-156-5 +always \u770F 46-3 always \u7710 1-1356-3 always \u7711 246-4 always \u7712 24-136-5 always \u7713 1235-25-5 -always \u7714 1456 +always \u7714 145-345-5 always \u7715 1-136-4 -always \u7716 1456 -always \u7717 1456 -always \u7718 1456 +always \u7716 123-456-5 +always \u7717 13-1256-3 +always \u7718 24-136-5 always \u7719 12-156-5 always \u771A 24-1356-4 always \u771B 134-356-5 -always \u771C 1456 +always \u771C 134-126-5 always \u771D 1-34-5 -always \u771E 1456 +always \u771E 1-136-3 always \u771F 1-136-3 always \u7720 134-2345-2 -always \u7721 1456 +always \u7721 145-16-3 always \u7722 12456-3 always \u7723 145-346-2 -always \u7724 1456 +always \u7724 16-2 always \u7725 125-156-5 always \u7726 125-156-5 always \u7727 12-146-4 always \u7728 1-345-4 always \u7729 15-45-5 -always \u772A 1456 -always \u772B 1456 -always \u772C 1456 +always \u772A 135-13456-4 +always \u772B 134-16-4 +always \u772C 14-12346-2 always \u772D 1235-1246-3 -always \u772E 1456 +always \u772E 145-12346-5 always \u772F 134-16-4 -always \u7730 1456 +always \u7730 145-346-2 always \u7731 16-2 always \u7732 156-5 always \u7733 134-13456-2 @@ -30415,17 +30418,17 @@ always \u773B 46-2 always \u773C 2345-4 always \u773D 134-126-5 always \u773E 1-12346-5 -always \u773F 1456 +always \u773F 134-2456-5 always \u7740 1-2346-1 always \u7741 1-1356-3 -always \u7742 1456 -always \u7743 1456 +always \u7742 134-356-2 +always \u7743 13-256-5 always \u7744 24-146-5 always \u7745 1235-1236-5 always \u7746 1235-12456-4 always \u7747 145-16-5 -always \u7748 1456 -always \u7749 1456 +always \u7748 12-1356-4 +always \u7749 245-25-3 always \u774A 13-45-5 always \u774B 2346-2 always \u774C 12456-4 @@ -30435,24 +30438,24 @@ always \u774F 123-123456-5 always \u7750 14-2456-5 always \u7751 13-2345-4 always \u7752 24-1236-4 -always \u7753 1456 +always \u7753 124-2345-4 always \u7754 1235-123456-4 always \u7755 12456-4 always \u7756 14-13456-2 -always \u7757 1456 -always \u7758 1456 +always \u7757 24-156-5 +always \u7758 245-235-2 always \u7759 14-346-5 always \u775A 26-2 always \u775B 13-13456-3 always \u775C 1-1356-3 -always \u775D 1456 +always \u775D 14-16-2 always \u775E 14-2456-5 always \u775F 15-1246-5 always \u7760 13-45-5 always \u7761 24-1246-5 always \u7762 15-1246-3 always \u7763 145-34-3 -always \u7764 1456 +always \u7764 135-16-5 always \u7765 135-16-5 always \u7766 134-34-5 always \u7767 1235-123456-3 @@ -30464,18 +30467,18 @@ always \u776C 245-2456-4 always \u776D 1-12356-4 always \u776E 1256-2 always \u776F 1235-123456-3 -always \u7770 1456 -always \u7771 1456 -always \u7772 1456 -always \u7773 1456 -always \u7774 1456 +always \u7770 134-345-5 +always \u7771 15-23456-5 +always \u7772 15-13456-4 +always \u7773 15-16-3 +always \u7774 13-123456-5 always \u7775 1456 -always \u7776 1456 -always \u7777 1456 -always \u7778 1456 +always \u7776 12-123456-4 +always \u7777 13-2345-3 +always \u7778 134-356-5 always \u7779 145-34-4 -always \u777A 1456 -always \u777B 1456 +always \u777A 1235-12356-2 +always \u777B 15-45-3 always \u777C 124-16-5 always \u777D 123-1246-2 always \u777E 13-146-3 @@ -30486,25 +30489,25 @@ always \u7782 12345-345-3 always \u7783 123456-3 always \u7784 134-246-2 always \u7785 12-12356-4 -always \u7786 1456 +always \u7786 123-1246-5 always \u7787 134-16-3 always \u7788 12346-4 always \u7789 123-12356-5 -always \u778A 1456 +always \u778A 145-1346-5 always \u778B 12-136-3 always \u778C 123-2346-3 always \u778D 15-12356-4 always \u778E 15-23456-3 always \u778F 245-235-2 -always \u7790 1456 +always \u7790 134-146-5 always \u7791 134-13456-2 always \u7792 134-1236-2 -always \u7793 1456 -always \u7794 1456 +always \u7793 24-1246-5 +always \u7794 125-2346-2 always \u7795 1-1346-5 -always \u7796 1456 +always \u7796 16-5 always \u7797 145-246-3 -always \u7798 1456 +always \u7798 12356-3 always \u7799 134-126-5 always \u779A 24-123456-5 always \u779B 245-12346-3 @@ -30516,9 +30519,9 @@ always \u77A0 12-1356-3 always \u77A1 13-16-5 always \u77A2 134-1356-2 always \u77A3 1235-12456-5 -always \u77A4 1456 +always \u77A4 1245-123456-2 always \u77A5 1234-346-3 -always \u77A6 1456 +always \u77A6 15-16-3 always \u77A7 245-246-2 always \u77A8 1234-34-3 always \u77A9 1-34-4 @@ -30526,8 +30529,8 @@ always \u77AA 145-1356-5 always \u77AB 24-136-4 always \u77AC 24-123456-5 always \u77AD 14-246-4 -always \u77AE 1456 -always \u77AF 1456 +always \u77AE 12-2346-5 +always \u77AF 15-2345-2 always \u77B0 123-1236-5 always \u77B1 346-5 always \u77B2 15-1256-5 @@ -30536,57 +30539,57 @@ always \u77B4 134-12356-2 always \u77B5 14-1456-2 always \u77B6 123-1246-5 always \u77B7 13-2345-5 -always \u77B8 1456 -always \u77B9 1456 +always \u77B8 346-5 +always \u77B9 2456-5 always \u77BA 1235-1246-5 always \u77BB 1-1236-3 always \u77BC 13-2345-4 always \u77BD 13-34-4 -always \u77BE 1456 +always \u77BE 1-146-5 always \u77BF 245-1256-3 -always \u77C0 1456 -always \u77C1 1456 +always \u77C0 1246-2 +always \u77C1 12-12356-4 always \u77C2 135-345-1 -always \u77C3 1456 +always \u77C3 1345-13456-4 always \u77C4 15-256-3 -always \u77C5 1456 -always \u77C6 1456 +always \u77C5 246-5 +always \u77C6 1235-25-5 always \u77C7 134-1356-2 -always \u77C8 1456 +always \u77C8 134-2345-2 always \u77C9 1234-1456-2 always \u77CA 134-2345-2 -always \u77CB 1456 +always \u77CB 14-16-5 always \u77CC 123-456-5 always \u77CD 13-236-2 always \u77CE 15-45-3 always \u77CF 134-2345-2 always \u77D0 1235-2346-5 -always \u77D1 1456 -always \u77D2 1456 +always \u77D1 14-34-2 +always \u77D2 134-1356-2 always \u77D3 14-12346-2 always \u77D4 13-12456-5 always \u77D5 134-1236-4 -always \u77D6 1456 +always \u77D6 15-16-4 always \u77D7 12-34-5 always \u77D8 124-1346-4 always \u77D9 123-1236-5 always \u77DA 1-34-4 always \u77DB 134-146-2 always \u77DC 13-1456-3 -always \u77DD 1456 +always \u77DD 14-1456-2 always \u77DE 1256-5 -always \u77DF 1456 +always \u77DF 24-25-5 always \u77E0 245-2346-5 -always \u77E1 1456 +always \u77E1 13-236-2 always \u77E2 24-156-4 always \u77E3 16-4 -always \u77E4 1456 +always \u77E4 24-136-4 always \u77E5 1-156-3 -always \u77E6 1456 +always \u77E6 1235-12356-2 always \u77E7 24-136-4 always \u77E8 13456-4 always \u77E9 13-1256-4 -always \u77EA 1456 +always \u77EA 1-12356-3 always \u77EB 13-246-4 always \u77EC 245-25-2 always \u77ED 145-12456-4 @@ -30596,8 +30599,8 @@ always \u77F0 125-1356-3 always \u77F1 1235-25-5 always \u77F2 135-345-5 always \u77F3 24-156-2 -always \u77F4 1456 -always \u77F5 1456 +always \u77F4 145-13456-5 +always \u77F5 245-16-5 always \u77F6 13-16-3 always \u77F7 125-156-4 always \u77F8 1236-5 @@ -30612,14 +30615,14 @@ always \u7800 145-1346-5 always \u7801 134-345-4 always \u7802 24-345-3 always \u7803 145-1236-3 -always \u7804 1456 +always \u7804 13-236-2 always \u7805 14-16-5 always \u7806 12345-34-3 -always \u7807 1456 -always \u7808 1456 +always \u7807 134-1456-2 +always \u7808 1345-25-4 always \u7809 1235-25-5 -always \u780A 1456 -always \u780B 1456 +always \u780A 123-1346-5 +always \u780B 1-156-4 always \u780C 245-16-5 always \u780D 123-1236-4 always \u780E 13-346-5 @@ -30629,22 +30632,22 @@ always \u7811 23456-5 always \u7812 1234-16-3 always \u7813 1-2346-2 always \u7814 2345-2 -always \u7815 1456 +always \u7815 15-1246-5 always \u7816 1-12456-3 always \u7817 12-2346-3 -always \u7818 1456 -always \u7819 1456 +always \u7818 145-123456-5 +always \u7819 1234-1236-3 always \u781A 2345-5 always \u781B 1456 -always \u781C 1456 +always \u781C 12345-1356-3 always \u781D 12345-345-4 -always \u781E 1456 +always \u781E 134-126-5 always \u781F 1-345-5 always \u7820 245-1256-3 always \u7821 1256-5 always \u7822 14-25-4 always \u7823 124-25-2 -always \u7824 1456 +always \u7824 124-25-2 always \u7825 145-16-4 always \u7826 1-2456-5 always \u7827 1-136-3 @@ -30662,56 +30665,56 @@ always \u7832 1234-146-5 always \u7833 14-2346-5 always \u7834 1234-126-5 always \u7835 135-126-3 -always \u7836 1456 +always \u7836 1234-126-5 always \u7837 24-136-3 always \u7838 125-345-2 -always \u7839 1456 +always \u7839 1345-25-4 always \u783A 14-16-5 always \u783B 14-12346-2 -always \u783C 1456 +always \u783C 124-12346-2 always \u783D 1456 always \u783E 14-16-5 always \u783F 1456 always \u7840 12-34-4 -always \u7841 1456 -always \u7842 1456 +always \u7841 123-1356-3 +always \u7842 245-45-2 always \u7843 1-34-3 -always \u7844 1456 +always \u7844 123-456-3 always \u7845 1235-25-5 -always \u7846 1456 -always \u7847 1456 +always \u7846 2346-5 +always \u7847 1345-146-2 always \u7848 13-23456-2 always \u7849 14-34-5 always \u784A 1246-4 -always \u784B 1456 +always \u784B 2456-5 always \u784C 14-25-5 always \u784D 123-136-5 always \u784E 15-13456-2 -always \u784F 1456 +always \u784F 2345-2 always \u7850 124-12346-2 -always \u7851 1456 +always \u7851 1234-1356-3 always \u7852 15-16-3 always \u7853 1456 -always \u7854 1456 +always \u7854 1235-12346-2 always \u7855 24-25-5 always \u7856 15-23456-2 always \u7857 245-246-3 always \u7858 1456 -always \u7859 1456 -always \u785A 1456 +always \u7859 1246-5 +always \u785A 245-246-2 always \u785B 1456 always \u785C 123-1356-3 always \u785D 15-246-3 always \u785E 245-236-5 -always \u785F 1456 +always \u785F 12-1236-5 always \u7860 14-1346-4 -always \u7861 1456 +always \u7861 1235-12346-2 always \u7862 1256-2 -always \u7863 1456 +always \u7863 15-246-3 always \u7864 15-23456-2 always \u7865 134-1346-4 -always \u7866 1456 -always \u7867 1456 +always \u7866 14-12346-5 +always \u7867 235-4 always \u7868 12-2346-3 always \u7869 12-2346-5 always \u786A 2346-2 @@ -30722,39 +30725,39 @@ always \u786E 245-236-5 always \u786F 2345-5 always \u7870 24-345-3 always \u7871 123-123456-4 -always \u7872 1456 +always \u7872 1256-5 always \u7873 1456 always \u7874 1456 -always \u7875 1456 -always \u7876 1456 -always \u7877 1456 -always \u7878 1456 +always \u7875 14-34-4 +always \u7876 12-136-4 +always \u7877 13-2345-4 +always \u7878 1345-236-5 always \u7879 15-12346-3 -always \u787A 1456 +always \u787A 1-25-2 always \u787B 123-1356-3 always \u787C 1234-1356-2 -always \u787D 1456 +always \u787D 2345-4 always \u787E 1-1246-5 always \u787F 123-12346-3 always \u7880 245-1356-2 always \u7881 13-16-3 -always \u7882 1456 +always \u7882 125-12346-5 always \u7883 245-13456-5 always \u7884 14-1456-2 always \u7885 13-256-3 always \u7886 135-126-3 always \u7887 145-13456-5 -always \u7888 1456 +always \u7888 134-1456-2 always \u7889 145-246-3 -always \u788A 1456 -always \u788B 1456 +always \u788A 13-2345-3 +always \u788B 1235-2346-5 always \u788C 14-34-5 always \u788D 2456-5 always \u788E 15-1246-5 always \u788F 245-236-5 -always \u7890 1456 +always \u7890 14-13456-2 always \u7891 135-356-3 -always \u7892 1456 +always \u7892 1456-2 always \u7893 145-1246-5 always \u7894 34-4 always \u7895 245-16-2 @@ -30765,7 +30768,7 @@ always \u7899 13-1346-3 always \u789A 1234-356-2 always \u789B 245-16-5 always \u789C 12-136-4 -always \u789D 1456 +always \u789D 1245-12456-4 always \u789E 2345-2 always \u789F 145-346-2 always \u78A0 145-13456-5 @@ -30774,7 +30777,7 @@ always \u78A2 124-25-2 always \u78A3 13-346-2 always \u78A4 13456-3 always \u78A5 135-2345-4 -always \u78A6 1456 +always \u78A6 123-2346-5 always \u78A7 135-16-5 always \u78A8 1246-3 always \u78A9 24-25-5 @@ -30782,32 +30785,32 @@ always \u78AA 1-136-3 always \u78AB 145-12456-5 always \u78AC 15-23456-2 always \u78AD 145-1346-5 -always \u78AE 1456 -always \u78AF 1456 +always \u78AE 124-16-2 +always \u78AF 1345-146-4 always \u78B0 1234-1356-5 always \u78B1 13-2345-4 always \u78B2 145-16-5 always \u78B3 124-1236-5 always \u78B4 12-345-2 always \u78B5 1456 -always \u78B6 1456 +always \u78B6 245-16-5 always \u78B7 1456 -always \u78B8 1456 -always \u78B9 1456 +always \u78B8 12345-1356-3 +always \u78B9 15-45-5 always \u78BA 245-236-5 always \u78BB 245-236-5 always \u78BC 134-345-4 -always \u78BD 1456 +always \u78BD 13-12346-3 always \u78BE 1345-2345-4 -always \u78BF 1456 -always \u78C0 1456 +always \u78BF 15-34-5 +always \u78C0 2346-2 always \u78C1 245-156-2 -always \u78C2 1456 +always \u78C2 14-234-5 always \u78C3 124-16-2 always \u78C4 124-1346-2 always \u78C5 135-1346-5 -always \u78C6 1456 -always \u78C7 1456 +always \u78C6 1235-35-2 +always \u78C7 1234-16-3 always \u78C8 1246-4 always \u78C9 15-1346-4 always \u78CA 14-356-4 @@ -30818,17 +30821,17 @@ always \u78CE 245-16-3 always \u78CF 14-2345-2 always \u78D0 1234-1236-2 always \u78D1 1246-5 -always \u78D2 1456 -always \u78D3 1456 +always \u78D2 256-4 +always \u78D3 145-1246-3 always \u78D4 1-2346-2 always \u78D5 123-2346-3 -always \u78D6 1456 +always \u78D6 14-345-3 always \u78D7 1456 -always \u78D8 1456 -always \u78D9 1456 +always \u78D8 245-13456-5 +always \u78D9 13-123456-4 always \u78DA 1-12456-3 always \u78DB 12-1236-2 -always \u78DC 1456 +always \u78DC 245-16-5 always \u78DD 146-2 always \u78DE 1234-1356-3 always \u78DF 14-34-5 @@ -30836,27 +30839,27 @@ always \u78E0 14-34-4 always \u78E1 123-1236-5 always \u78E2 245-46-4 always \u78E3 12-136-4 -always \u78E4 1456 +always \u78E4 1456-4 always \u78E5 14-356-4 -always \u78E6 1456 +always \u78E6 135-246-3 always \u78E7 245-16-5 always \u78E8 134-126-2 always \u78E9 245-16-3 always \u78EA 245-1246-3 -always \u78EB 1456 +always \u78EB 125-12346-3 always \u78EC 245-13456-5 always \u78ED 12-25-5 always \u78EE 1456 always \u78EF 13-16-3 -always \u78F0 1456 -always \u78F1 1456 +always \u78F0 24-1236-5 +always \u78F1 14-146-2 always \u78F2 245-1256-2 always \u78F3 125-1356-3 always \u78F4 145-1356-5 -always \u78F5 1456 -always \u78F6 1456 +always \u78F5 13-2345-5 +always \u78F6 15-16-5 always \u78F7 14-1456-2 -always \u78F8 1456 +always \u78F8 145-13456-5 always \u78F9 145-2345-5 always \u78FA 1235-456-2 always \u78FB 1234-1236-2 @@ -30867,36 +30870,36 @@ always \u78FF 14-16-5 always \u7900 1456 always \u7901 13-246-3 always \u7902 15-16-3 -always \u7903 1456 +always \u7903 1-1346-4 always \u7904 245-246-2 always \u7905 145-123456-3 -always \u7906 1456 -always \u7907 1456 -always \u7908 1456 +always \u7906 15-2345-4 +always \u7907 1256-5 +always \u7908 1-1246-5 always \u7909 1235-2346-2 -always \u790A 1456 -always \u790B 1456 +always \u790A 1235-25-5 +always \u790B 1-2456-2 always \u790C 14-356-5 -always \u790D 1456 +always \u790D 123-2346-4 always \u790E 12-34-4 -always \u790F 1456 +always \u790F 13-16-2 always \u7910 245-236-5 always \u7911 145-1346-5 always \u7912 16-4 always \u7913 13-46-3 always \u7914 1234-16-5 -always \u7915 1456 -always \u7916 1456 +always \u7915 1234-16-3 +always \u7916 1256-5 always \u7917 1234-1456-3 -always \u7918 1456 +always \u7918 245-16-5 always \u7919 2456-5 -always \u791A 1456 +always \u791A 123-2456-5 always \u791B 13-2345-3 always \u791C 1256-5 always \u791D 1245-12456-4 always \u791E 134-1356-2 -always \u791F 1456 -always \u7920 1456 +always \u791F 1234-146-5 +always \u7920 245-156-2 always \u7921 135-126-2 always \u7922 1456 always \u7923 134-346-5 @@ -30910,20 +30913,20 @@ always \u792A 14-16-5 always \u792B 14-16-5 always \u792C 12345-1236-2 always \u792D 245-236-5 -always \u792E 1456 +always \u792E 1234-146-5 always \u792F 13456-3 -always \u7930 1456 +always \u7930 14-16-5 always \u7931 14-12346-2 -always \u7932 1456 -always \u7933 1456 +always \u7932 14-12346-2 +always \u7933 134-126-5 always \u7934 135-126-2 always \u7935 24-456-3 -always \u7936 1456 -always \u7937 1456 +always \u7936 13-12456-5 +always \u7937 14-1236-2 always \u7938 125-1236-4 always \u7939 2345-2 always \u793A 24-156-5 -always \u793B 1456 +always \u793B 24-156-5 always \u793C 14-16-4 always \u793D 1245-1356-2 always \u793E 24-2346-5 @@ -30931,7 +30934,7 @@ always \u793F 236-5 always \u7940 15-156-5 always \u7941 245-16-2 always \u7942 124-3458-3 -always \u7943 1456 +always \u7943 134-345-5 always \u7944 15-346-5 always \u7945 246-3 always \u7946 246-3 @@ -30942,7 +30945,7 @@ always \u794A 135-1356-3 always \u794B 145-1246-5 always \u794C 1-12346-5 always \u794D 1456 -always \u794E 1456 +always \u794E 16-3 always \u794F 24-156-2 always \u7950 234-5 always \u7951 1-156-5 @@ -30952,8 +30955,8 @@ always \u7954 12345-34-5 always \u7955 134-16-5 always \u7956 125-34-4 always \u7957 1-156-3 -always \u7958 1456 -always \u7959 1456 +always \u7958 15-12456-5 +always \u7959 134-356-5 always \u795A 125-25-5 always \u795B 245-1256-3 always \u795C 1235-34-5 @@ -30966,50 +30969,50 @@ always \u7962 134-16-2 always \u7963 14-1256-4 always \u7964 1256-4 always \u7965 15-46-2 -always \u7966 1456 +always \u7966 34-2 always \u7967 124-246-3 always \u7968 1234-246-5 always \u7969 1-34-3 always \u796A 13-1246-4 always \u796B 15-23456-2 -always \u796C 1456 +always \u796C 1-156-3 always \u796D 13-16-5 -always \u796E 1456 +always \u796E 13-146-5 always \u796F 1-136-3 always \u7970 13-146-5 -always \u7971 1456 +always \u7971 24-1246-5 always \u7972 13-1456-3 always \u7973 12-136-4 always \u7974 13-2456-3 -always \u7975 1456 -always \u7976 1456 +always \u7975 123-123456-4 +always \u7976 145-16-5 always \u7977 145-146-4 always \u7978 1235-25-5 always \u7979 124-146-2 always \u797A 245-16-2 -always \u797B 1456 +always \u797B 13-34-5 always \u797C 13-12456-5 always \u797D 125-1246-5 -always \u797E 1456 +always \u797E 14-13456-2 always \u797F 14-34-5 always \u7980 135-13456-4 always \u7981 13-1456-5 always \u7982 145-146-4 -always \u7983 1456 +always \u7983 1-156-2 always \u7984 14-34-5 always \u7985 12-1236-2 -always \u7986 1456 -always \u7987 1456 +always \u7986 135-356-3 +always \u7987 1-2346-4 always \u7988 1235-1246-3 -always \u7989 1456 +always \u7989 234-4 always \u798A 15-16-5 always \u798B 1456-3 -always \u798C 1456 +always \u798C 125-156-3 always \u798D 1235-25-5 always \u798E 1-136-3 always \u798F 12345-34-2 always \u7990 45-5 -always \u7991 1456 +always \u7991 34-2 always \u7992 15-2345-4 always \u7993 46-2 always \u7994 124-16-2 @@ -31021,82 +31024,82 @@ always \u7999 1456 always \u799A 1-25-2 always \u799B 1-136-3 always \u799C 235-4 -always \u799D 1456 -always \u799E 1456 -always \u799F 1456 +always \u799D 13-16-2 +always \u799E 13-146-5 +always \u799F 124-1346-2 always \u79A0 15-156-3 always \u79A1 134-345-5 always \u79A2 124-345-3 always \u79A3 1456 always \u79A4 15-45-3 -always \u79A5 1456 +always \u79A5 245-16-2 always \u79A6 1256-5 always \u79A7 15-16-4 always \u79A8 13-16-3 -always \u79A9 1456 +always \u79A9 15-156-5 always \u79AA 12-1236-2 always \u79AB 124-1236-4 always \u79AC 123-2356-5 always \u79AD 15-1246-5 always \u79AE 14-16-4 -always \u79AF 1456 +always \u79AF 1345-12346-2 always \u79B0 1345-16-4 always \u79B1 145-146-4 always \u79B2 14-16-5 always \u79B3 1245-1346-2 always \u79B4 236-5 -always \u79B5 1456 +always \u79B5 124-16-2 always \u79B6 125-1236-5 always \u79B7 14-356-5 always \u79B8 1245-12356-2 always \u79B9 1256-4 always \u79BA 1256-2 always \u79BB 14-16-2 -always \u79BC 1456 +always \u79BC 15-346-5 always \u79BD 245-1456-2 always \u79BE 1235-2346-2 always \u79BF 124-34-3 always \u79C0 15-234-5 always \u79C1 15-156-3 -always \u79C2 1456 +always \u79C2 1245-136-2 always \u79C3 124-34-3 -always \u79C4 1456 +always \u79C4 125-156-4 always \u79C5 12-345-2 always \u79C6 13-1236-4 -always \u79C7 1456 +always \u79C7 16-5 always \u79C8 15-2345-3 always \u79C9 135-13456-4 -always \u79CA 1456 +always \u79CA 1345-2345-2 always \u79CB 245-234-3 -always \u79CC 1456 +always \u79CC 245-234-3 always \u79CD 1-12346-4 always \u79CE 12345-136-2 always \u79CF 1235-146-5 -always \u79D0 1456 +always \u79D0 256-2 always \u79D1 123-2346-3 always \u79D2 134-246-4 -always \u79D3 1456 -always \u79D4 1456 +always \u79D3 1-156-3 +always \u79D4 13-1356-3 always \u79D5 135-16-4 always \u79D6 1-156-3 -always \u79D7 1456 +always \u79D7 1256-5 always \u79D8 134-16-5 -always \u79D9 1456 -always \u79DA 1456 -always \u79DB 1456 +always \u79D9 123-34-5 +always \u79DA 135-1236-5 +always \u79DB 1234-16-3 always \u79DC 1345-16-2 always \u79DD 14-16-5 always \u79DE 234-2 always \u79DF 125-34-3 always \u79E0 1234-16-3 -always \u79E1 1456 -always \u79E2 1456 +always \u79E1 135-345-2 +always \u79E2 14-13456-2 always \u79E3 134-126-5 always \u79E4 12-1356-5 -always \u79E5 1456 +always \u79E5 1345-2345-2 always \u79E6 245-1456-2 always \u79E7 46-3 -always \u79E8 1456 +always \u79E8 125-25-2 always \u79E9 1-156-5 always \u79EA 1-156-3 always \u79EB 24-34-2 @@ -31105,128 +31108,128 @@ always \u79ED 125-156-4 always \u79EE 1235-25-2 always \u79EF 13-16-3 always \u79F0 12-1356-3 -always \u79F1 1456 -always \u79F2 1456 -always \u79F3 1456 -always \u79F4 1456 -always \u79F5 1456 +always \u79F1 124-12346-2 +always \u79F2 1-156-5 +always \u79F3 1235-25-2 +always \u79F4 1235-2346-2 +always \u79F5 1456-3 always \u79F6 1-2456-3 always \u79F7 1-156-2 always \u79F8 13-346-3 -always \u79F9 1456 +always \u79F9 1245-136-4 always \u79FA 145-34-5 always \u79FB 16-2 -always \u79FC 1456 +always \u79FC 1-34-3 always \u79FD 1235-1246-5 -always \u79FE 1456 -always \u79FF 1456 +always \u79FE 1345-12346-2 +always \u79FF 12345-34-4 always \u7A00 15-16-3 -always \u7A01 1456 +always \u7A01 123-146-4 always \u7A02 14-1346-2 always \u7A03 12345-34-3 always \u7A04 125-2346-5 always \u7A05 24-1246-5 -always \u7A06 1456 -always \u7A07 1456 +always \u7A06 14-1256-4 +always \u7A07 123-123456-4 always \u7A08 13-1236-4 -always \u7A09 1456 +always \u7A09 13-1356-3 always \u7A0A 124-16-2 always \u7A0B 12-1356-2 always \u7A0C 124-34-2 always \u7A0D 24-146-3 always \u7A0E 24-1246-5 -always \u7A0F 1456 +always \u7A0F 23456-5 always \u7A10 14-123456-4 always \u7A11 14-34-5 always \u7A12 13-34-5 always \u7A13 125-25-2 always \u7A14 1245-136-4 always \u7A15 1-123456-5 -always \u7A16 1456 +always \u7A16 135-1346-5 always \u7A17 135-2456-5 always \u7A18 13-16-3 always \u7A19 1-156-2 always \u7A1A 1-156-5 always \u7A1B 123-123456-4 always \u7A1C 14-1356-2 -always \u7A1D 1456 +always \u7A1D 1234-1356-2 always \u7A1E 123-2346-3 always \u7A1F 135-13456-4 always \u7A20 12-12356-2 -always \u7A21 1456 +always \u7A21 125-34-2 always \u7A22 1256-5 always \u7A23 15-34-3 -always \u7A24 1456 +always \u7A24 14-236-5 always \u7A25 1456 always \u7A26 16-3 -always \u7A27 1456 +always \u7A27 15-16-5 always \u7A28 135-2345-3 -always \u7A29 1456 -always \u7A2A 1456 +always \u7A29 13-16-5 +always \u7A2A 12345-34-5 always \u7A2B 135-16-5 -always \u7A2C 1456 -always \u7A2D 1456 +always \u7A2C 1345-25-5 +always \u7A2D 13-346-3 always \u7A2E 1-12346-4 always \u7A2F 125-12346-3 always \u7A30 15-1256-3 always \u7A31 12-1356-3 -always \u7A32 1456 +always \u7A32 145-146-5 always \u7A33 123456-4 -always \u7A34 1456 -always \u7A35 1456 -always \u7A36 1456 +always \u7A34 14-2345-2 +always \u7A35 125-156-3 +always \u7A36 1256-5 always \u7A37 13-16-5 -always \u7A38 1456 +always \u7A38 15-1256-5 always \u7A39 1-136-4 -always \u7A3A 1456 +always \u7A3A 1-156-5 always \u7A3B 145-146-5 always \u7A3C 13-23456-5 always \u7A3D 13-16-3 -always \u7A3E 1456 +always \u7A3E 13-146-4 always \u7A3F 13-146-4 always \u7A40 13-34-4 -always \u7A41 1456 -always \u7A42 1456 +always \u7A41 1245-12346-2 +always \u7A42 15-1246-5 always \u7A43 1456 always \u7A44 13-16-5 -always \u7A45 1456 +always \u7A45 123-1346-3 always \u7A46 134-34-5 always \u7A47 24-1236-3 always \u7A48 134-136-2 -always \u7A49 1456 +always \u7A49 1-156-5 always \u7A4A 13-16-5 always \u7A4B 14-34-5 always \u7A4C 15-34-3 always \u7A4D 13-16-3 always \u7A4E 13456-4 -always \u7A4F 1456 -always \u7A50 1456 +always \u7A4F 123456-4 +always \u7A50 245-234-3 always \u7A51 15-2346-5 always \u7A52 1456 -always \u7A53 1456 +always \u7A53 16-5 always \u7A54 1235-456-2 -always \u7A55 1456 +always \u7A55 245-346-5 always \u7A56 13-16-4 always \u7A57 15-1246-5 always \u7A58 15-246-3 -always \u7A59 1456 +always \u7A59 1234-34-2 always \u7A5A 13-246-3 always \u7A5B 1-25-3 always \u7A5C 124-12346-2 always \u7A5D 1456 -always \u7A5E 1456 +always \u7A5E 14-1256-4 always \u7A5F 15-1246-5 always \u7A60 1345-12346-2 always \u7A61 15-2346-5 always \u7A62 1235-1246-5 -always \u7A63 1456 -always \u7A64 1456 -always \u7A65 1456 +always \u7A63 1245-1346-2 +always \u7A64 1345-25-5 +always \u7A65 1256-5 always \u7A66 1456 always \u7A67 13-16-5 always \u7A68 124-1246-2 always \u7A69 123456-4 -always \u7A6A 1456 +always \u7A6A 12-1356-3 always \u7A6B 1235-25-5 always \u7A6C 13-12346-4 always \u7A6D 14-1256-4 @@ -31234,8 +31237,8 @@ always \u7A6E 135-246-3 always \u7A6F 1456 always \u7A70 1245-1346-2 always \u7A71 1-25-3 -always \u7A72 1456 -always \u7A73 1456 +always \u7A72 14-16-2 +always \u7A73 125-1236-5 always \u7A74 15-236-5 always \u7A75 35-3 always \u7A76 13-234-5 @@ -31244,13 +31247,13 @@ always \u7A78 15-16-5 always \u7A79 245-235-3 always \u7A7A 123-12346-3 always \u7A7B 1256-3 -always \u7A7C 1456 -always \u7A7D 1456 +always \u7A7C 15-136-3 +always \u7A7D 13-13456-4 always \u7A7E 246-5 always \u7A7F 12-12456-3 always \u7A80 1-123456-3 always \u7A81 124-34-2 -always \u7A82 1456 +always \u7A82 14-146-2 always \u7A83 245-346-5 always \u7A84 1-2456-4 always \u7A85 246-4 @@ -31262,26 +31265,26 @@ always \u7A8A 35-3 always \u7A8B 1-34-2 always \u7A8C 13-246-5 always \u7A8D 245-246-5 -always \u7A8E 1456 +always \u7A8E 145-246-5 always \u7A8F 34-3 always \u7A90 13-1246-3 always \u7A91 246-2 always \u7A92 1-156-5 -always \u7A93 1456 +always \u7A93 12-456-3 always \u7A94 246-5 always \u7A95 124-246-4 always \u7A96 13-246-5 always \u7A97 12-456-3 always \u7A98 13-235-4 always \u7A99 15-246-3 -always \u7A9A 1456 -always \u7A9B 1456 +always \u7A9A 12-1356-2 +always \u7A9B 123-12356-5 always \u7A9C 245-12456-5 always \u7A9D 25-3 always \u7A9E 145-1236-5 always \u7A9F 123-34-3 always \u7AA0 123-2346-3 -always \u7AA1 1456 +always \u7AA1 1-1246-5 always \u7AA2 15-1256-5 always \u7AA3 15-34-5 always \u7AA4 1456 @@ -31296,7 +31299,7 @@ always \u7AAC 1256-2 always \u7AAD 13-1256-5 always \u7AAE 245-235-2 always \u7AAF 246-2 -always \u7AB0 1456 +always \u7AB0 246-2 always \u7AB1 124-246-5 always \u7AB2 12-146-2 always \u7AB3 1256-4 @@ -31305,76 +31308,76 @@ always \u7AB5 145-246-5 always \u7AB6 13-1256-5 always \u7AB7 14-246-2 always \u7AB8 15-16-3 -always \u7AB9 1456 +always \u7AB9 34-5 always \u7ABA 123-1246-3 -always \u7ABB 1456 -always \u7ABC 1456 +always \u7ABB 12-456-3 +always \u7ABC 1-146-3 always \u7ABD 1456 always \u7ABE 123-12456-4 always \u7ABF 14-12346-2 always \u7AC0 12-1356-3 always \u7AC1 245-1246-5 -always \u7AC2 1456 -always \u7AC3 1456 +always \u7AC2 1234-246-2 +always \u7AC3 125-146-5 always \u7AC4 245-12456-5 always \u7AC5 245-246-5 -always \u7AC6 1456 +always \u7AC6 245-235-2 always \u7AC7 145-12356-5 -always \u7AC8 1456 -always \u7AC9 1456 +always \u7AC8 125-146-5 +always \u7AC9 14-12346-4 always \u7ACA 245-346-5 always \u7ACB 14-16-5 -always \u7ACC 1456 +always \u7ACC 12-34-5 always \u7ACD 1456 -always \u7ACE 1456 +always \u7ACE 12345-12356-5 always \u7ACF 1456 -always \u7AD0 1456 +always \u7AD0 12-34-5 always \u7AD1 1235-12346-2 -always \u7AD2 1456 +always \u7AD2 245-16-2 always \u7AD3 1456 always \u7AD4 1456 always \u7AD5 1456 always \u7AD6 24-34-5 -always \u7AD7 1456 +always \u7AD7 134-246-5 always \u7AD8 13-1256-4 always \u7AD9 1-1236-5 -always \u7ADA 1456 -always \u7ADB 1456 -always \u7ADC 1456 -always \u7ADD 1456 +always \u7ADA 1-34-5 +always \u7ADB 14-13456-2 +always \u7ADC 14-12346-2 +always \u7ADD 135-13456-5 always \u7ADE 13-13456-5 always \u7ADF 13-13456-5 always \u7AE0 1-1346-3 always \u7AE1 1456 -always \u7AE2 1456 +always \u7AE2 15-156-5 always \u7AE3 13-256-5 always \u7AE4 1235-12346-2 always \u7AE5 124-12346-2 always \u7AE6 15-12346-4 -always \u7AE7 1456 -always \u7AE8 1456 -always \u7AE9 1456 -always \u7AEA 1456 +always \u7AE7 13-13456-5 +always \u7AE8 145-246-5 +always \u7AE9 16-5 +always \u7AEA 24-34-5 always \u7AEB 13-13456-5 -always \u7AEC 1456 +always \u7AEC 245-1256-4 always \u7AED 13-346-2 always \u7AEE 1234-13456-2 always \u7AEF 145-12456-3 -always \u7AF0 1456 -always \u7AF1 1456 -always \u7AF2 1456 -always \u7AF3 1456 -always \u7AF4 1456 -always \u7AF5 1456 +always \u7AF0 24-146-2 +always \u7AF1 1-12456-4 +always \u7AF2 245-1356-2 +always \u7AF3 145-1356-3 +always \u7AF4 245-1246-3 +always \u7AF5 1235-2356-3 always \u7AF6 13-13456-5 always \u7AF7 123-1236-5 -always \u7AF8 1456 +always \u7AF8 13-13456-5 always \u7AF9 1-34-2 always \u7AFA 1-34-2 always \u7AFB 14-2346-5 -always \u7AFC 1456 +always \u7AFC 1234-1356-2 always \u7AFD 1256-2 -always \u7AFE 1456 +always \u7AFE 12-156-2 always \u7AFF 13-1236-3 always \u7B00 134-1346-2 always \u7B01 1-34-2 @@ -31383,13 +31386,13 @@ always \u7B03 145-34-4 always \u7B04 13-16-3 always \u7B05 15-246-2 always \u7B06 135-345-3 -always \u7B07 1456 +always \u7B07 15-12456-5 always \u7B08 13-346-2 always \u7B09 1-136-4 always \u7B0A 1-146-4 always \u7B0B 15-123456-4 -always \u7B0C 1456 -always \u7B0D 1456 +always \u7B0C 23456-2 +always \u7B0D 1-1246-5 always \u7B0E 45-2 always \u7B0F 1235-34-5 always \u7B10 13-1346-3 @@ -31398,26 +31401,26 @@ always \u7B12 245-136-2 always \u7B13 1234-16-2 always \u7B14 135-16-4 always \u7B15 13-2345-4 -always \u7B16 1456 -always \u7B17 1456 +always \u7B16 16-4 +always \u7B17 145-12346-3 always \u7B18 24-1236-3 always \u7B19 24-1356-3 always \u7B1A 15-23456-2 always \u7B1B 145-16-2 -always \u7B1C 1456 +always \u7B1C 1-34-2 always \u7B1D 1345-345-5 always \u7B1E 12-156-3 -always \u7B1F 1456 +always \u7B1F 13-34-3 always \u7B20 14-16-5 -always \u7B21 1456 +always \u7B21 245-346-5 always \u7B22 134-1456-4 always \u7B23 135-146-3 always \u7B24 124-246-2 always \u7B25 15-156-5 always \u7B26 12345-34-2 -always \u7B27 1456 +always \u7B27 245-2346-5 always \u7B28 135-136-5 -always \u7B29 1456 +always \u7B29 1234-356-5 always \u7B2A 145-345-2 always \u7B2B 125-156-4 always \u7B2C 145-16-5 @@ -31430,8 +31433,8 @@ always \u7B32 12345-1236-2 always \u7B33 13-23456-3 always \u7B34 13-2346-4 always \u7B35 12345-1236-5 -always \u7B36 1456 -always \u7B37 1456 +always \u7B36 24-156-4 +always \u7B37 134-146-4 always \u7B38 1234-126-4 always \u7B39 1456 always \u7B3A 13-2345-3 @@ -31439,11 +31442,11 @@ always \u7B3B 1-34-2 always \u7B3C 14-12346-2 always \u7B3D 1456 always \u7B3E 135-2345-3 -always \u7B3F 1456 +always \u7B3F 14-25-5 always \u7B40 13-1246-5 -always \u7B41 1456 -always \u7B42 1456 -always \u7B43 1456 +always \u7B41 245-1256-4 +always \u7B42 12-156-2 +always \u7B43 1456-3 always \u7B44 246-5 always \u7B45 15-2345-4 always \u7B46 135-16-4 @@ -31459,35 +31462,35 @@ always \u7B4F 12345-345-2 always \u7B50 123-456-3 always \u7B51 1-34-2 always \u7B52 124-12346-4 -always \u7B53 1456 +always \u7B53 13-16-3 always \u7B54 145-345-2 -always \u7B55 1456 +always \u7B55 15-13456-2 always \u7B56 245-2346-5 -always \u7B57 1456 +always \u7B57 1-12346-5 always \u7B58 123-12356-5 -always \u7B59 1456 +always \u7B59 14-2456-2 always \u7B5A 135-16-5 always \u7B5B 24-2456-3 -always \u7B5C 1456 +always \u7B5C 145-1346-3 always \u7B5D 1-1356-3 -always \u7B5E 1456 -always \u7B5F 1456 +always \u7B5E 245-2346-5 +always \u7B5F 12345-34-3 always \u7B60 256-2 always \u7B61 124-34-2 -always \u7B62 1456 +always \u7B62 1234-345-2 always \u7B63 14-16-2 always \u7B64 14-1346-2 always \u7B65 13-1256-4 always \u7B66 13-12456-4 always \u7B67 13-2345-4 -always \u7B68 1456 +always \u7B68 1235-1236-2 always \u7B69 124-12346-2 -always \u7B6A 1456 -always \u7B6B 1456 -always \u7B6C 1456 +always \u7B6A 15-23456-2 +always \u7B6B 1-156-5 +always \u7B6C 12-1356-2 always \u7B6D 15-12456-5 always \u7B6E 24-156-5 -always \u7B6F 1456 +always \u7B6F 1-34-5 always \u7B70 125-25-2 always \u7B71 15-246-4 always \u7B72 24-146-3 @@ -31499,21 +31502,21 @@ always \u7B77 123-2356-5 always \u7B78 13-1236-3 always \u7B79 12-12356-2 always \u7B7A 1456 -always \u7B7B 1456 -always \u7B7C 1456 +always \u7B7B 13-1346-5 +always \u7B7C 256-2 always \u7B7D 1456 always \u7B7E 245-2345-3 -always \u7B7F 1456 +always \u7B7F 15-246-4 always \u7B80 13-2345-4 -always \u7B81 1456 +always \u7B81 1234-34-2 always \u7B82 14-2456-2 -always \u7B83 1456 +always \u7B83 125-12356-3 always \u7B84 1234-2456-2 always \u7B85 135-16-5 -always \u7B86 1456 +always \u7B86 135-16-5 always \u7B87 13-2346-5 always \u7B88 12-156-2 -always \u7B89 1456 +always \u7B89 13-2356-4 always \u7B8A 1256-3 always \u7B8B 13-2345-3 always \u7B8C 1-146-5 @@ -31522,8 +31525,8 @@ always \u7B8E 12-156-2 always \u7B8F 1-1356-3 always \u7B90 13-13456-3 always \u7B91 24-345-5 -always \u7B92 1456 -always \u7B93 1456 +always \u7B92 1-12356-4 +always \u7B93 14-34-5 always \u7B94 135-126-2 always \u7B95 13-16-3 always \u7B96 14-1456-2 @@ -31534,14 +31537,14 @@ always \u7B9A 123-123456-3 always \u7B9B 13-34-3 always \u7B9C 123-12346-3 always \u7B9D 245-2345-2 -always \u7B9E 1456 -always \u7B9F 1456 +always \u7B9E 245-45-3 +always \u7B9F 13-256-5 always \u7BA0 12-1246-2 always \u7BA1 13-12456-4 -always \u7BA2 1456 -always \u7BA3 1456 +always \u7BA2 45-3 +always \u7BA3 245-2346-5 always \u7BA4 15-1246-5 -always \u7BA5 1456 +always \u7BA5 135-126-4 always \u7BA6 125-2346-2 always \u7BA7 245-346-5 always \u7BA8 124-25-5 @@ -31552,46 +31555,46 @@ always \u7BAC 1245-25-5 always \u7BAD 13-2345-5 always \u7BAE 1456 always \u7BAF 135-2345-3 -always \u7BB0 1456 +always \u7BB0 15-123456-4 always \u7BB1 15-46-3 -always \u7BB2 1456 -always \u7BB3 1456 +always \u7BB2 15-2345-4 +always \u7BB3 1234-13456-2 always \u7BB4 1-136-3 always \u7BB5 24-1356-4 -always \u7BB6 1456 +always \u7BB6 1235-34-2 always \u7BB7 24-156-3 always \u7BB8 1-34-5 always \u7BB9 236-3 -always \u7BBA 1456 -always \u7BBB 1456 -always \u7BBC 1456 -always \u7BBD 1456 +always \u7BBA 12-123456-4 +always \u7BBB 14-1256-5 +always \u7BBC 34-3 +always \u7BBD 145-12346-4 always \u7BBE 24-25-5 -always \u7BBF 1456 +always \u7BBF 13-16-2 always \u7BC0 13-346-2 always \u7BC1 1235-456-2 -always \u7BC2 1456 -always \u7BC3 1456 +always \u7BC2 15-13456-3 +always \u7BC3 134-356-2 always \u7BC4 12345-1236-5 -always \u7BC5 1456 +always \u7BC5 12-1246-2 always \u7BC6 1-12456-5 always \u7BC7 1234-2345-3 -always \u7BC8 1456 +always \u7BC8 12345-1356-3 always \u7BC9 1-34-2 always \u7BCA 1235-12346-2 always \u7BCB 245-346-5 always \u7BCC 1235-12356-2 -always \u7BCD 1456 +always \u7BCD 245-234-3 always \u7BCE 134-246-4 -always \u7BCF 1456 +always \u7BCF 245-2345-5 always \u7BD0 1456 always \u7BD1 123-1246-5 always \u7BD2 1456 always \u7BD3 14-12356-4 always \u7BD4 256-2 always \u7BD5 1235-2346-2 -always \u7BD6 1456 -always \u7BD7 1456 +always \u7BD6 124-1346-2 +always \u7BD7 236-5 always \u7BD8 12-12356-3 always \u7BD9 13-146-3 always \u7BDA 12345-356-4 @@ -31612,23 +31615,23 @@ always \u7BE8 12-34-2 always \u7BE9 24-2456-3 always \u7BEA 12-156-2 always \u7BEB 1-34-2 -always \u7BEC 1456 -always \u7BED 1456 +always \u7BEC 245-46-3 +always \u7BED 14-12346-2 always \u7BEE 14-1236-2 -always \u7BEF 1456 +always \u7BEF 13-2345-3 always \u7BF0 135-34-5 always \u7BF1 14-16-2 always \u7BF2 15-1246-5 always \u7BF3 135-16-5 always \u7BF4 145-16-2 -always \u7BF5 1456 -always \u7BF6 1456 +always \u7BF5 245-12346-3 +always \u7BF6 2345-3 always \u7BF7 1234-1356-2 always \u7BF8 15-136-3 always \u7BF9 1-12456-5 -always \u7BFA 1456 +always \u7BFA 1234-2456-2 always \u7BFB 1234-246-4 -always \u7BFC 1456 +always \u7BFC 145-12356-3 always \u7BFD 1256-4 always \u7BFE 134-346-5 always \u7BFF 124-12456-2 @@ -31636,11 +31639,11 @@ always \u7C00 125-2346-2 always \u7C01 15-156-3 always \u7C02 13-25-2 always \u7C03 16-2 -always \u7C04 1456 +always \u7C04 1235-34-5 always \u7C05 12-1236-4 always \u7C06 123-12356-5 always \u7C07 245-34-5 -always \u7C08 1456 +always \u7C08 1234-13456-2 always \u7C09 12-12356-5 always \u7C0A 13-16-3 always \u7C0B 13-1246-4 @@ -31650,16 +31653,16 @@ always \u7C0E 13-16-2 always \u7C0F 14-34-5 always \u7C10 1345-2345-4 always \u7C11 15-25-3 -always \u7C12 1456 +always \u7C12 245-12456-5 always \u7C13 1456 -always \u7C14 1456 -always \u7C15 1456 +always \u7C14 15-25-3 +always \u7C15 14-2346-5 always \u7C16 145-12456-5 always \u7C17 1456 -always \u7C18 1456 +always \u7C18 15-246-3 always \u7C19 135-126-2 -always \u7C1A 1456 -always \u7C1B 1456 +always \u7C1A 134-16-5 +always \u7C1B 15-156-3 always \u7C1C 145-1346-5 always \u7C1D 14-246-2 always \u7C1E 145-1236-3 @@ -31668,7 +31671,7 @@ always \u7C20 12345-34-4 always \u7C21 13-2345-4 always \u7C22 134-1456-4 always \u7C23 123-1246-5 -always \u7C24 1456 +always \u7C24 145-2456-5 always \u7C25 13-246-3 always \u7C26 145-1356-3 always \u7C27 1235-456-2 @@ -31678,19 +31681,19 @@ always \u7C2A 125-1236-3 always \u7C2B 15-246-3 always \u7C2C 145-34-5 always \u7C2D 24-156-5 -always \u7C2E 1456 +always \u7C2E 125-1236-3 always \u7C2F 1456 always \u7C30 1234-2456-2 always \u7C31 1456 -always \u7C32 1456 +always \u7C32 1234-2456-2 always \u7C33 13-1236-4 -always \u7C34 1456 -always \u7C35 1456 -always \u7C36 1456 +always \u7C34 13-1256-5 +always \u7C35 145-34-5 +always \u7C36 14-34-5 always \u7C37 2345-2 always \u7C38 135-126-4 always \u7C39 145-1346-3 -always \u7C3A 1456 +always \u7C3A 15-2456-5 always \u7C3B 1-35-3 always \u7C3C 14-12346-2 always \u7C3D 245-2345-3 @@ -31700,105 +31703,105 @@ always \u7C40 1-12356-5 always \u7C41 14-2456-5 always \u7C42 1456 always \u7C43 14-1236-2 -always \u7C44 1456 +always \u7C44 123-1246-5 always \u7C45 1256-2 -always \u7C46 1456 +always \u7C46 236-5 always \u7C47 1235-146-2 always \u7C48 1-136-3 always \u7C49 124-2456-2 always \u7C4A 124-16-5 -always \u7C4B 1456 +always \u7C4B 134-16-2 always \u7C4C 12-12356-2 always \u7C4D 13-16-2 always \u7C4E 1456 always \u7C4F 1456 always \u7C50 124-1356-2 -always \u7C51 1456 -always \u7C52 1456 +always \u7C51 1-12456-5 +always \u7C52 1-12356-5 always \u7C53 12345-1236-3 always \u7C54 15-12356-4 -always \u7C55 1456 +always \u7C55 1-12356-5 always \u7C56 1456 always \u7C57 1-25-2 -always \u7C58 1456 +always \u7C58 124-1356-2 always \u7C59 14-34-5 always \u7C5A 14-34-2 always \u7C5B 13-2345-3 always \u7C5C 124-25-5 -always \u7C5D 1456 -always \u7C5E 1456 +always \u7C5D 13456-2 +always \u7C5E 1256-5 always \u7C5F 14-2456-5 always \u7C60 14-12346-2 always \u7C61 1456 -always \u7C62 1456 +always \u7C62 14-2345-2 always \u7C63 14-1236-2 always \u7C64 245-2345-3 always \u7C65 236-5 always \u7C66 1-12346-3 always \u7C67 245-1256-2 -always \u7C68 1456 +always \u7C68 14-2345-2 always \u7C69 135-2345-3 always \u7C6A 145-12456-5 always \u7C6B 125-12456-4 always \u7C6C 14-16-2 -always \u7C6D 1456 +always \u7C6D 15-156-3 always \u7C6E 14-25-2 always \u7C6F 13456-2 -always \u7C70 1456 -always \u7C71 1456 +always \u7C70 236-5 +always \u7C71 1-25-2 always \u7C72 1256-5 always \u7C73 134-16-4 always \u7C74 145-16-2 always \u7C75 12345-1236-2 -always \u7C76 1456 -always \u7C77 1456 +always \u7C76 24-136-3 +always \u7C77 1-2346-2 always \u7C78 24-136-3 always \u7C79 1245-34-4 always \u7C7A 15-346-2 always \u7C7B 14-356-5 always \u7C7C 15-2345-3 always \u7C7D 125-156-4 -always \u7C7E 1456 +always \u7C7E 1345-16-2 always \u7C7F 245-123456-5 always \u7C80 1-1346-5 always \u7C81 245-2345-3 always \u7C82 1456 -always \u7C83 1456 +always \u7C83 135-16-4 always \u7C84 135-1236-4 always \u7C85 34-5 -always \u7C86 1456 -always \u7C87 1456 +always \u7C86 24-345-3 +always \u7C87 123-1346-3 always \u7C88 1245-12356-4 always \u7C89 12345-136-4 always \u7C8A 135-16-5 -always \u7C8B 1456 +always \u7C8B 245-1246-5 always \u7C8C 1456-2 always \u7C8D 14-16-2 -always \u7C8E 1456 +always \u7C8E 12-156-4 always \u7C8F 1456 always \u7C90 1456 always \u7C91 135-345-3 always \u7C92 14-16-5 -always \u7C93 1456 +always \u7C93 13-1236-3 always \u7C94 13-1256-5 always \u7C95 1234-126-5 always \u7C96 134-126-5 always \u7C97 245-34-3 always \u7C98 1345-2345-2 -always \u7C99 1456 -always \u7C9A 1456 -always \u7C9B 1456 +always \u7C99 1-12356-5 +always \u7C9A 14-16-2 +always \u7C9B 15-34-5 always \u7C9C 124-246-5 always \u7C9D 14-16-5 always \u7C9E 15-16-3 always \u7C9F 15-34-5 -always \u7CA0 1456 +always \u7CA0 1235-12346-2 always \u7CA1 124-12346-2 always \u7CA2 125-156-3 always \u7CA3 245-2346-5 always \u7CA4 236-5 always \u7CA5 1-12356-3 -always \u7CA6 1456 +always \u7CA6 14-1456-5 always \u7CA7 1-456-3 always \u7CA8 135-2456-4 always \u7CA9 1456 @@ -31808,15 +31811,15 @@ always \u7CAC 1456 always \u7CAD 1456 always \u7CAE 14-46-2 always \u7CAF 15-2345-5 -always \u7CB0 1456 +always \u7CB0 12345-34-2 always \u7CB1 14-46-2 always \u7CB2 245-1236-5 always \u7CB3 13-1356-3 always \u7CB4 14-16-4 always \u7CB5 236-5 -always \u7CB6 1456 -always \u7CB7 1456 -always \u7CB8 1456 +always \u7CB6 14-34-5 +always \u7CB7 13-1256-2 +always \u7CB8 245-16-2 always \u7CB9 245-1246-5 always \u7CBA 135-2456-5 always \u7CBB 1-1346-3 @@ -31826,68 +31829,68 @@ always \u7CBE 13-13456-3 always \u7CBF 13-25-4 always \u7CC0 1456 always \u7CC1 15-1236-4 -always \u7CC2 1456 -always \u7CC3 1456 -always \u7CC4 1456 +always \u7CC2 15-1236-4 +always \u7CC3 124-1346-2 +always \u7CC4 135-2345-3 always \u7CC5 1245-12356-4 -always \u7CC6 1456 -always \u7CC7 1456 +always \u7CC6 134-2345-5 +always \u7CC7 1235-12356-2 always \u7CC8 15-1256-3 -always \u7CC9 1456 +always \u7CC9 125-12346-5 always \u7CCA 1235-34-2 always \u7CCB 13-2345-5 always \u7CCC 125-1236-2 -always \u7CCD 1456 +always \u7CCD 245-156-2 always \u7CCE 14-134 -always \u7CCF 1456 +always \u7CCF 15-346-5 always \u7CD0 12345-34-3 always \u7CD1 1345-16-5 always \u7CD2 135-356-5 -always \u7CD3 1456 +always \u7CD3 13-34-4 always \u7CD4 15-234-4 always \u7CD5 13-146-3 always \u7CD6 124-1346-2 always \u7CD7 245-234-4 always \u7CD8 1456 always \u7CD9 245-146-3 -always \u7CDA 1456 -always \u7CDB 1456 +always \u7CDA 1-456-3 +always \u7CDB 124-1346-2 always \u7CDC 134-16-2 always \u7CDD 15-1236-4 always \u7CDE 12345-136-5 always \u7CDF 125-146-3 always \u7CE0 123-1346-3 -always \u7CE1 1456 +always \u7CE1 13-46-5 always \u7CE2 134-126-2 -always \u7CE3 1456 -always \u7CE4 1456 -always \u7CE5 1456 -always \u7CE6 1456 +always \u7CE3 15-1236-4 +always \u7CE4 15-1236-4 +always \u7CE5 1345-25-5 +always \u7CE6 15-16-3 always \u7CE7 14-46-2 always \u7CE8 13-46-5 -always \u7CE9 1456 +always \u7CE9 123-2356-5 always \u7CEA 135-126-2 -always \u7CEB 1456 +always \u7CEB 1235-12456-2 always \u7CEC 135-345-1 -always \u7CED 1456 +always \u7CED 125-12346-5 always \u7CEE 13-2345-5 always \u7CEF 1345-25-5 always \u7CF0 124-12456-2 always \u7CF1 1345-346-5 always \u7CF2 14-16-5 -always \u7CF3 1456 +always \u7CF3 125-25-5 always \u7CF4 145-16-2 -always \u7CF5 1456 +always \u7CF5 1345-346-5 always \u7CF6 124-246-5 always \u7CF7 14-1236-2 always \u7CF8 134-16-5 -always \u7CF9 1456 -always \u7CFA 1456 +always \u7CF9 15-156-3 +always \u7CFA 13-234-3 always \u7CFB 15-16-5 -always \u7CFC 1456 +always \u7CFC 13-12346-3 always \u7CFD 1-1356-4 always \u7CFE 13-234-3 -always \u7CFF 1456 +always \u7CFF 234-5 always \u7D00 13-16-5 always \u7D01 12-345-5 always \u7D02 1-12356-5 @@ -31923,27 +31926,27 @@ always \u7D1F 13-1456-3 always \u7D20 15-34-5 always \u7D21 12345-1346-4 always \u7D22 15-25-4 -always \u7D23 1456 -always \u7D24 1456 -always \u7D25 1456 +always \u7D23 245-1246-5 +always \u7D24 13-234-4 +always \u7D25 1-345-2 always \u7D26 1456 always \u7D27 13-1456-4 always \u7D28 12345-34-5 always \u7D29 1-156-5 -always \u7D2A 1456 +always \u7D2A 245-156-4 always \u7D2B 125-156-4 always \u7D2C 12-12356-2 -always \u7D2D 1456 +always \u7D2D 1235-12346-2 always \u7D2E 1-345-2 always \u7D2F 14-356-5 always \u7D30 15-16-5 always \u7D31 12345-34-2 always \u7D32 15-346-5 always \u7D33 24-136-3 -always \u7D34 1456 +always \u7D34 135-356-5 always \u7D35 1-34-5 always \u7D36 245-1256-4 -always \u7D37 1456 +always \u7D37 14-13456-2 always \u7D38 1-34-5 always \u7D39 24-146-5 always \u7D3A 13-1236-5 @@ -31960,12 +31963,12 @@ always \u7D44 125-34-4 always \u7D45 13-235-3 always \u7D46 135-1236-5 always \u7D47 245-1256-2 -always \u7D48 1456 -always \u7D49 1456 +always \u7D48 134-126-5 +always \u7D49 24-34-5 always \u7D4A 125-1246-5 always \u7D4B 1456 -always \u7D4C 1456 -always \u7D4D 1456 +always \u7D4C 13-13456-3 +always \u7D4D 1245-136-2 always \u7D4E 1235-1356-5 always \u7D4F 15-346-5 always \u7D50 13-346-2 @@ -31975,28 +31978,28 @@ always \u7D53 13-2356-3 always \u7D54 135-2456-4 always \u7D55 13-236-2 always \u7D56 123-456-5 -always \u7D57 1456 +always \u7D57 1235-34-2 always \u7D58 125-156-3 -always \u7D59 1456 -always \u7D5A 1456 +always \u7D59 13-1356-3 +always \u7D5A 13-1356-3 always \u7D5B 124-146-3 always \u7D5C 13-346-2 -always \u7D5D 1456 +always \u7D5D 123-34-5 always \u7D5E 13-246-4 always \u7D5F 245-45-3 -always \u7D60 1456 +always \u7D60 13-2456-4 always \u7D61 14-25-5 always \u7D62 15-45-5 always \u7D63 135-1356-3 -always \u7D64 1456 -always \u7D65 1456 +always \u7D64 15-2345-5 +always \u7D65 12345-34-2 always \u7D66 13-356-4 always \u7D67 124-12346-2 always \u7D68 1245-12346-2 always \u7D69 124-246-5 always \u7D6A 1456-3 always \u7D6B 14-356-4 -always \u7D6C 1456 +always \u7D6C 15-346-5 always \u7D6D 245-45-5 always \u7D6E 15-1256-5 always \u7D6F 13-2456-3 @@ -32004,44 +32007,44 @@ always \u7D70 145-346-2 always \u7D71 124-12346-4 always \u7D72 15-156-3 always \u7D73 13-46-5 -always \u7D74 1456 -always \u7D75 1456 -always \u7D76 1456 +always \u7D74 15-46-2 +always \u7D75 1235-1246-5 +always \u7D76 13-236-2 always \u7D77 1-156-2 -always \u7D78 1456 +always \u7D78 13-2345-4 always \u7D79 13-45-5 always \u7D7A 12-156-3 always \u7D7B 123456-5 always \u7D7C 1-136-4 always \u7D7D 14-1256-4 -always \u7D7E 1456 +always \u7D7E 12-1356-2 always \u7D7F 245-234-2 always \u7D80 24-34-3 always \u7D81 135-1346-4 -always \u7D82 1456 +always \u7D82 124-12346-4 always \u7D83 15-246-3 always \u7D84 12456-5 always \u7D85 245-1456-3 always \u7D86 13-1356-4 -always \u7D87 1456 +always \u7D87 15-234-4 always \u7D88 124-16-2 -always \u7D89 1456 -always \u7D8A 1456 -always \u7D8B 1456 +always \u7D89 15-234-5 +always \u7D8A 15-346-2 +always \u7D8B 1235-12346-2 always \u7D8C 15-16-5 always \u7D8D 12345-34-2 always \u7D8E 124-13456-3 always \u7D8F 15-1246-3 -always \u7D90 1456 +always \u7D90 145-1246-5 always \u7D91 123-123456-4 always \u7D92 12345-34-3 always \u7D93 13-13456-3 always \u7D94 1235-34-5 -always \u7D95 1456 +always \u7D95 1-156-3 always \u7D96 2345-2 -always \u7D97 1456 -always \u7D98 1456 -always \u7D99 1456 +always \u7D97 13-235-4 +always \u7D98 12345-1356-2 +always \u7D99 13-16-5 always \u7D9A 1456 always \u7D9B 1456 always \u7D9C 125-12346-5 @@ -32052,14 +32055,14 @@ always \u7DA0 14-1256-5 always \u7DA1 14-46-2 always \u7DA2 12-12356-2 always \u7DA3 245-45-4 -always \u7DA4 1456 -always \u7DA5 1456 +always \u7DA4 24-146-5 +always \u7DA5 245-16-5 always \u7DA6 245-16-2 always \u7DA7 1-123456-4 -always \u7DA8 1456 +always \u7DA8 245-16-2 always \u7DA9 12456-4 always \u7DAA 245-2345-5 -always \u7DAB 1456 +always \u7DAB 15-2345-5 always \u7DAC 24-12356-5 always \u7DAD 1246-2 always \u7DAE 245-16-4 @@ -32067,10 +32070,10 @@ always \u7DAF 124-146-2 always \u7DB0 12456-4 always \u7DB1 13-1346-3 always \u7DB2 456-4 -always \u7DB3 1456 +always \u7DB3 135-1356-3 always \u7DB4 1-1246-5 always \u7DB5 245-2456-4 -always \u7DB6 1456 +always \u7DB6 13-25-4 always \u7DB7 125-1246-5 always \u7DB8 14-123456-2 always \u7DB9 14-234-4 @@ -32083,49 +32086,49 @@ always \u7DBF 134-2345-2 always \u7DC0 245-16-3 always \u7DC1 245-346-5 always \u7DC2 124-1236-3 -always \u7DC3 1456 +always \u7DC3 125-12346-3 always \u7DC4 13-123456-4 always \u7DC5 125-12356-3 always \u7DC6 15-16-5 always \u7DC7 125-156-3 -always \u7DC8 1456 +always \u7DC8 15-13456-5 always \u7DC9 14-46-4 always \u7DCA 13-1456-4 always \u7DCB 12345-356-3 always \u7DCC 1245-1246-2 -always \u7DCD 1456 +always \u7DCD 134-1456-2 always \u7DCE 1256-5 -always \u7DCF 1456 -always \u7DD0 1456 -always \u7DD1 1456 +always \u7DCF 125-12346-4 +always \u7DD0 12345-1236-2 +always \u7DD1 14-1256-5 always \u7DD2 15-1256-5 -always \u7DD3 1456 -always \u7DD4 1456 +always \u7DD3 13456-3 +always \u7DD4 1-1346-5 always \u7DD5 1456 -always \u7DD6 1456 +always \u7DD6 15-1256-5 always \u7DD7 15-46-3 always \u7DD8 13-2345-3 always \u7DD9 123-2346-5 always \u7DDA 15-2345-5 always \u7DDB 1245-12456-4 -always \u7DDC 1456 +always \u7DDC 134-2345-2 always \u7DDD 245-16-5 always \u7DDE 145-12456-5 always \u7DDF 1-12346-5 always \u7DE0 145-16-5 always \u7DE1 134-1456-2 -always \u7DE2 1456 +always \u7DE2 134-246-2 always \u7DE3 45-2 -always \u7DE4 1456 -always \u7DE5 1456 +always \u7DE4 15-346-5 +always \u7DE5 135-146-4 always \u7DE6 15-156-3 always \u7DE7 245-234-3 always \u7DE8 135-2345-3 always \u7DE9 1235-12456-4 always \u7DEA 13-1356-3 -always \u7DEB 1456 +always \u7DEB 245-12346-3 always \u7DEC 134-2345-4 -always \u7DED 1456 +always \u7DED 1246-5 always \u7DEE 12345-34-5 always \u7DEF 1246-4 always \u7DF0 124-12356-2 @@ -32133,24 +32136,24 @@ always \u7DF1 13-12356-3 always \u7DF2 134-246-4 always \u7DF3 15-346-2 always \u7DF4 14-2345-5 -always \u7DF5 1456 +always \u7DF5 125-12346-3 always \u7DF6 1234-2345-2 always \u7DF7 256-5 -always \u7DF8 1456 +always \u7DF8 1456-3 always \u7DF9 124-16-2 always \u7DFA 13-35-3 always \u7DFB 1-156-5 -always \u7DFC 1456 -always \u7DFD 1456 -always \u7DFE 1456 -always \u7DFF 1456 -always \u7E00 1456 -always \u7E01 1456 -always \u7E02 1456 +always \u7DFC 256-3 +always \u7DFD 12-1356-3 +always \u7DFE 12-1236-2 +always \u7DFF 145-2456-5 +always \u7E00 15-23456-2 +always \u7E01 45-2 +always \u7E02 125-12346-4 always \u7E03 15-1256-3 always \u7E04 1456 always \u7E05 1456 -always \u7E06 1456 +always \u7E06 13-1356-3 always \u7E07 1456 always \u7E08 13456-2 always \u7E09 13-1456-5 @@ -32168,8 +32171,8 @@ always \u7E14 24-456-4 always \u7E15 256-5 always \u7E16 15-23456-2 always \u7E17 245-1246-3 -always \u7E18 1456 -always \u7E19 1456 +always \u7E18 15-16-3 +always \u7E19 1245-12346-2 always \u7E1A 124-146-3 always \u7E1B 12345-34-2 always \u7E1C 256-2 @@ -32182,13 +32185,13 @@ always \u7E22 124-1356-2 always \u7E23 15-2345-5 always \u7E24 15-34-5 always \u7E25 1-136-4 -always \u7E26 1456 -always \u7E27 1456 +always \u7E26 125-12346-5 +always \u7E27 124-146-3 always \u7E28 1456 always \u7E29 245-2456-5 always \u7E2A 135-16-5 always \u7E2B 12345-1356-2 -always \u7E2C 1456 +always \u7E2C 245-34-5 always \u7E2D 14-16-2 always \u7E2E 15-25-3 always \u7E2F 2345-4 @@ -32219,11 +32222,11 @@ always \u7E47 234-2 always \u7E48 245-46-4 always \u7E49 1235-123456-2 always \u7E4A 1456 -always \u7E4B 1456 +always \u7E4B 15-16-5 always \u7E4C 24-345-4 -always \u7E4D 1456 -always \u7E4E 1456 -always \u7E4F 1456 +always \u7E4D 15-234-5 +always \u7E4E 1245-1236-2 +always \u7E4F 15-45-5 always \u7E50 1235-1246-5 always \u7E51 245-246-3 always \u7E52 125-1356-3 @@ -32235,29 +32238,29 @@ always \u7E57 14-1456-2 always \u7E58 1256-5 always \u7E59 12345-1236-3 always \u7E5A 14-246-2 -always \u7E5B 1456 +always \u7E5B 12-25-5 always \u7E5C 125-123456-3 -always \u7E5D 1456 +always \u7E5D 13-2345-5 always \u7E5E 1245-146-5 always \u7E5F 12-1236-4 always \u7E60 1245-1246-4 always \u7E61 15-234-5 always \u7E62 1235-1246-5 always \u7E63 1235-35-5 -always \u7E64 1456 -always \u7E65 1456 -always \u7E66 1456 +always \u7E64 125-12456-4 +always \u7E65 15-16-3 +always \u7E66 245-46-4 always \u7E67 1456 always \u7E68 145-345-2 always \u7E69 24-1356-2 always \u7E6A 1235-1246-5 always \u7E6B 15-16-5 -always \u7E6C 1456 +always \u7E6C 15-2346-5 always \u7E6D 13-2345-4 -always \u7E6E 1456 +always \u7E6E 13-46-3 always \u7E6F 15-45-5 always \u7E70 125-146-4 -always \u7E71 1456 +always \u7E71 245-12346-3 always \u7E72 13-346-5 always \u7E73 13-246-4 always \u7E74 135-16-5 @@ -32275,22 +32278,22 @@ always \u7E7F 13-246-3 always \u7E80 1234-34-2 always \u7E81 15-256-3 always \u7E82 125-12456-4 -always \u7E83 1456 -always \u7E84 1456 -always \u7E85 1456 +always \u7E83 245-16-2 +always \u7E84 1234-1356-2 +always \u7E85 14-16-5 always \u7E86 134-126-5 always \u7E87 14-356-5 always \u7E88 15-346-2 -always \u7E89 1456 +always \u7E89 125-12456-4 always \u7E8A 123-456-5 always \u7E8B 234-3 always \u7E8C 15-1256-5 always \u7E8D 14-356-2 -always \u7E8E 1456 +always \u7E8E 15-2345-3 always \u7E8F 12-1236-2 always \u7E90 1456 always \u7E91 14-34-2 -always \u7E92 1456 +always \u7E92 12-1236-2 always \u7E93 13456-3 always \u7E94 245-2456-2 always \u7E95 15-46-3 @@ -32301,9 +32304,9 @@ always \u7E99 14-25-5 always \u7E9A 15-16-4 always \u7E9B 145-146-5 always \u7E9C 14-1236-4 -always \u7E9D 1456 -always \u7E9E 1456 -always \u7E9F 1456 +always \u7E9D 14-356-2 +always \u7E9E 14-2345-5 +always \u7E9F 15-156-3 always \u7EA0 13-234-3 always \u7EA1 1256-3 always \u7EA2 1235-12346-2 @@ -32318,21 +32321,21 @@ always \u7EAA 13-16-5 always \u7EAB 1245-136-5 always \u7EAC 1246-4 always \u7EAD 256-2 -always \u7EAE 1456 +always \u7EAE 1235-12346-2 always \u7EAF 12-123456-2 always \u7EB0 1234-16-3 always \u7EB1 24-345-3 always \u7EB2 13-1346-3 always \u7EB3 1345-345-5 -always \u7EB4 1456 +always \u7EB4 1245-136-2 always \u7EB5 125-12346-5 always \u7EB6 14-123456-2 always \u7EB7 12345-136-3 always \u7EB8 1-156-4 always \u7EB9 123456-2 always \u7EBA 12345-1346-4 -always \u7EBB 1456 -always \u7EBC 1456 +always \u7EBB 1-34-5 +always \u7EBC 1456-4 always \u7EBD 1345-234-4 always \u7EBE 24-34-3 always \u7EBF 15-2345-5 @@ -32356,9 +32359,9 @@ always \u7ED0 145-2456-5 always \u7ED1 135-1346-4 always \u7ED2 1245-12346-2 always \u7ED3 13-346-2 -always \u7ED4 1456 +always \u7ED4 123-34-5 always \u7ED5 1245-146-5 -always \u7ED6 1456 +always \u7ED6 145-346-2 always \u7ED7 1235-1356-5 always \u7ED8 1235-1246-5 always \u7ED9 13-356-4 @@ -32372,7 +32375,7 @@ always \u7EE0 13-1356-4 always \u7EE1 15-246-3 always \u7EE2 13-45-5 always \u7EE3 15-234-5 -always \u7EE4 1456 +always \u7EE4 15-16-5 always \u7EE5 15-1246-3 always \u7EE6 124-146-3 always \u7EE7 13-16-5 @@ -32380,12 +32383,12 @@ always \u7EE8 124-16-2 always \u7EE9 13-16-3 always \u7EEA 15-1256-5 always \u7EEB 14-13456-2 -always \u7EEC 1456 +always \u7EEC 13456-3 always \u7EED 15-1256-5 always \u7EEE 245-16-4 always \u7EEF 12345-356-3 always \u7EF0 12-25-5 -always \u7EF1 1456 +always \u7EF1 1-1346-4 always \u7EF2 13-123456-4 always \u7EF3 24-1356-2 always \u7EF4 1246-2 @@ -32393,7 +32396,7 @@ always \u7EF5 134-2345-2 always \u7EF6 24-12356-5 always \u7EF7 135-1356-3 always \u7EF8 12-12356-2 -always \u7EF9 1456 +always \u7EF9 124-146-2 always \u7EFA 14-234-4 always \u7EFB 245-45-4 always \u7EFC 125-12346-5 @@ -32410,13 +32413,13 @@ always \u7F06 14-1236-4 always \u7F07 124-16-2 always \u7F08 134-246-4 always \u7F09 245-16-5 -always \u7F0A 1456 +always \u7F0A 256-3 always \u7F0B 1235-1246-5 always \u7F0C 15-156-3 always \u7F0D 145-25-4 always \u7F0E 145-12456-5 always \u7F0F 1234-2345-2 -always \u7F10 1456 +always \u7F10 15-2345-5 always \u7F11 13-12356-3 always \u7F12 1-1246-5 always \u7F13 1235-12456-4 @@ -32430,7 +32433,7 @@ always \u7F1A 12345-34-2 always \u7F1B 1245-34-5 always \u7F1C 1-136-4 always \u7F1D 12345-1356-2 -always \u7F1E 1456 +always \u7F1E 24-2356-3 always \u7F1F 13-146-4 always \u7F20 12-1236-2 always \u7F21 14-16-2 @@ -32455,41 +32458,41 @@ always \u7F33 15-45-5 always \u7F34 13-246-4 always \u7F35 125-12456-4 always \u7F36 12345-12356-4 -always \u7F37 1456 +always \u7F37 15-346-5 always \u7F38 13-1346-3 always \u7F39 12345-12356-4 always \u7F3A 245-236-3 -always \u7F3B 1456 +always \u7F3B 12345-12356-4 always \u7F3C 1456 always \u7F3D 135-126-3 always \u7F3E 1234-13456-2 always \u7F3F 15-46-5 always \u7F40 1456 -always \u7F41 1456 +always \u7F41 13-1346-3 always \u7F42 13456-3 always \u7F43 13456-3 always \u7F44 245-13456-5 always \u7F45 15-23456-5 -always \u7F46 1456 -always \u7F47 1456 +always \u7F46 13-12456-5 +always \u7F47 125-123456-3 always \u7F48 124-1236-2 always \u7F49 1456 always \u7F4A 245-16-5 always \u7F4B 12346-5 always \u7F4C 13456-3 always \u7F4D 14-356-2 -always \u7F4E 1456 +always \u7F4E 124-1236-2 always \u7F4F 14-34-2 always \u7F50 13-12456-5 always \u7F51 456-4 -always \u7F52 1456 -always \u7F53 1456 +always \u7F52 456-4 +always \u7F53 13-1346-3 always \u7F54 456-4 always \u7F55 1235-1236-4 always \u7F56 1456 always \u7F57 14-25-2 always \u7F58 12345-34-2 -always \u7F59 1456 +always \u7F59 134-16-2 always \u7F5A 12345-345-2 always \u7F5B 13-34-3 always \u7F5C 1-34-4 @@ -32500,7 +32503,7 @@ always \u7F60 134-1456-2 always \u7F61 13-1346-3 always \u7F62 135-345-5 always \u7F63 13-35-5 -always \u7F64 1456 +always \u7F64 124-16-2 always \u7F65 13-45-5 always \u7F66 12345-34-2 always \u7F67 15-136-3 @@ -32511,16 +32514,16 @@ always \u7F6B 13-35-5 always \u7F6C 1-25-2 always \u7F6D 1256-5 always \u7F6E 1-156-5 -always \u7F6F 1456 +always \u7F6F 1236-4 always \u7F70 12345-345-2 -always \u7F71 1456 +always \u7F71 1345-1236-4 always \u7F72 24-34-4 always \u7F73 15-156-3 always \u7F74 1234-16-2 always \u7F75 134-345-5 always \u7F76 14-234-4 always \u7F77 135-345-5 -always \u7F78 1456 +always \u7F78 12345-345-2 always \u7F79 14-16-2 always \u7F7A 1-146-3 always \u7F7B 1246-5 @@ -32528,11 +32531,11 @@ always \u7F7C 135-16-5 always \u7F7D 13-16-5 always \u7F7E 125-1356-3 always \u7F7F 12-12346-3 -always \u7F80 1456 +always \u7F80 14-234-4 always \u7F81 13-16-3 -always \u7F82 1456 +always \u7F82 13-45-5 always \u7F83 134-16-5 -always \u7F84 1456 +always \u7F84 1-146-5 always \u7F85 14-25-2 always \u7F86 1234-16-2 always \u7F87 13-16-3 @@ -32543,17 +32546,17 @@ always \u7F8B 134-346-3 always \u7F8C 245-46-3 always \u7F8D 124-345-5 always \u7F8E 134-356-4 -always \u7F8F 1456 -always \u7F90 1456 +always \u7F8F 46-2 +always \u7F90 234-4 always \u7F91 234-4 always \u7F92 12345-136-2 -always \u7F93 1456 +always \u7F93 135-345-3 always \u7F94 13-146-3 always \u7F95 46-5 always \u7F96 13-34-4 -always \u7F97 1456 -always \u7F98 1456 -always \u7F99 1456 +always \u7F97 245-46-3 +always \u7F98 125-1346-3 +always \u7F99 13-146-3 always \u7F9A 14-13456-2 always \u7F9B 16-5 always \u7F9C 1-34-5 @@ -32563,7 +32566,7 @@ always \u7F9F 245-2345-3 always \u7FA0 16-2 always \u7FA1 16-2 always \u7FA2 1245-12346-2 -always \u7FA3 1456 +always \u7FA3 245-256-2 always \u7FA4 245-256-2 always \u7FA5 245-2345-3 always \u7FA6 1235-12456-2 @@ -32571,16 +32574,16 @@ always \u7FA7 125-1246-3 always \u7FA8 15-2345-5 always \u7FA9 16-5 always \u7FAA 1456 -always \u7FAB 1456 +always \u7FAB 245-46-3 always \u7FAC 2345-2 always \u7FAD 1256-2 -always \u7FAE 1456 +always \u7FAE 13-1356-3 always \u7FAF 13-346-2 always \u7FB0 124-1346-3 always \u7FB1 45-2 always \u7FB2 15-16-3 always \u7FB3 12345-1236-2 -always \u7FB4 1456 +always \u7FB4 24-1236-3 always \u7FB5 12345-136-2 always \u7FB6 24-1236-3 always \u7FB7 14-2345-4 @@ -32596,11 +32599,11 @@ always \u7FC0 12-12346-2 always \u7FC1 12346-3 always \u7FC2 12345-136-3 always \u7FC3 1235-12346-2 -always \u7FC4 1456 +always \u7FC4 12-156-5 always \u7FC5 12-156-5 -always \u7FC6 1456 +always \u7FC6 245-1246-5 always \u7FC7 12345-34-2 -always \u7FC8 1456 +always \u7FC8 15-23456-2 always \u7FC9 1234-136-4 always \u7FCA 16-5 always \u7FCB 14-345-3 @@ -32611,27 +32614,27 @@ always \u7FCF 14-234-5 always \u7FD0 1-156-5 always \u7FD1 245-1256-2 always \u7FD2 15-16-2 -always \u7FD3 1456 +always \u7FD3 15-346-2 always \u7FD4 15-46-2 always \u7FD5 15-16-5 -always \u7FD6 1456 +always \u7FD6 15-16-5 always \u7FD7 245-16-2 always \u7FD8 245-246-5 -always \u7FD9 1456 -always \u7FDA 1456 +always \u7FD9 1235-1246-5 +always \u7FDA 1235-1246-3 always \u7FDB 24-34-5 always \u7FDC 15-2346-5 -always \u7FDD 1456 +always \u7FDD 1235-12346-2 always \u7FDE 13-46-3 always \u7FDF 1-2456-2 always \u7FE0 245-1246-5 always \u7FE1 12345-356-4 always \u7FE2 124-146-3 always \u7FE3 24-345-5 -always \u7FE4 1456 +always \u7FE4 12-156-5 always \u7FE5 1-34-5 always \u7FE6 13-2345-4 -always \u7FE7 1456 +always \u7FE7 15-45-3 always \u7FE8 24-156-5 always \u7FE9 1234-2345-3 always \u7FEA 125-12346-3 @@ -32650,7 +32653,7 @@ always \u7FF6 1456 always \u7FF7 14-1456-2 always \u7FF8 1234-136-4 always \u7FF9 245-246-5 -always \u7FFA 1456 +always \u7FFA 146-2 always \u7FFB 12345-1236-3 always \u7FFC 16-5 always \u7FFD 1235-1246-5 @@ -32664,9 +32667,9 @@ always \u8004 134-146-5 always \u8005 1-2346-4 always \u8006 245-16-2 always \u8007 13-12356-4 -always \u8008 1456 -always \u8009 1456 -always \u800A 1456 +always \u8008 13-12356-4 +always \u8009 13-12356-4 +always \u800A 145-346-5 always \u800B 145-346-2 always \u800C 156-2 always \u800D 24-35-4 @@ -32675,38 +32678,38 @@ always \u800F 156-2 always \u8010 1345-2456-5 always \u8011 1-12456-3 always \u8012 14-356-4 -always \u8013 1456 +always \u8013 124-13456-3 always \u8014 125-156-4 always \u8015 13-1356-3 always \u8016 12-146-5 always \u8017 1235-146-5 always \u8018 256-2 always \u8019 1234-345-2 -always \u801A 1456 +always \u801A 1234-16-3 always \u801B 12-156-2 always \u801C 15-156-5 -always \u801D 1456 +always \u801D 12-34-2 always \u801E 13-23456-3 always \u801F 13-1256-5 -always \u8020 1456 +always \u8020 1235-2346-2 always \u8021 1-34-5 -always \u8022 1456 -always \u8023 1456 +always \u8022 14-146-5 +always \u8023 14-123456-4 always \u8024 13-16-2 -always \u8025 1456 +always \u8025 124-1346-4 always \u8026 12356-4 always \u8027 14-12356-2 always \u8028 1245-34-5 always \u8029 13-12356-3 always \u802A 1234-1346-4 -always \u802B 1456 +always \u802B 125-2346-2 always \u802C 14-12356-2 -always \u802D 1456 -always \u802E 1456 -always \u802F 1456 +always \u802D 13-16-3 +always \u802E 14-146-5 +always \u802F 1235-25-5 always \u8030 234-3 -always \u8031 1456 -always \u8032 1456 +always \u8031 134-126-5 +always \u8032 1235-2356-2 always \u8033 156-4 always \u8034 1345-346-5 always \u8035 145-13456-4 @@ -32714,138 +32717,138 @@ always \u8036 346-3 always \u8037 145-345-3 always \u8038 15-12346-4 always \u8039 245-1456-2 -always \u803A 1456 +always \u803A 256-2 always \u803B 12-156-4 -always \u803C 1456 +always \u803C 145-1236-3 always \u803D 145-1236-3 always \u803E 1235-12346-2 always \u803F 13-1356-4 -always \u8040 1456 +always \u8040 1-156-2 always \u8041 1456 always \u8042 1345-346-5 always \u8043 145-1236-3 -always \u8044 1456 -always \u8045 1456 +always \u8044 1-136-4 +always \u8045 12-2346-5 always \u8046 14-13456-2 always \u8047 1-1356-3 always \u8048 13-246-3 -always \u8049 1456 +always \u8049 35-3 always \u804A 14-246-2 always \u804B 14-12346-2 always \u804C 1-156-2 always \u804D 1345-13456-2 -always \u804E 1456 +always \u804E 124-246-3 always \u804F 1345-1256-5 always \u8050 23456-5 always \u8051 145-346-2 always \u8052 13-35-3 always \u8053 1456 always \u8054 14-2345-2 -always \u8055 1456 +always \u8055 1235-146-5 always \u8056 24-1356-5 -always \u8057 1456 +always \u8057 14-346-5 always \u8058 1234-1456-5 -always \u8059 1456 +always \u8059 13-13456-3 always \u805A 13-1256-5 -always \u805B 1456 +always \u805B 135-16-5 always \u805C 145-16-4 always \u805D 13-25-2 always \u805E 123456-2 -always \u805F 1456 -always \u8060 1456 -always \u8061 1456 +always \u805F 15-1256-5 +always \u8060 1234-13456-2 +always \u8061 245-12346-3 always \u8062 1456 always \u8063 1456 always \u8064 124-13456-2 -always \u8065 1456 -always \u8066 1456 +always \u8065 1256-4 +always \u8066 245-12346-3 always \u8067 123-1246-2 always \u8068 1456 always \u8069 123-1246-5 always \u806A 245-12346-3 -always \u806B 1456 +always \u806B 14-2345-2 always \u806C 12346-4 -always \u806D 1456 -always \u806E 1456 +always \u806D 123-1246-5 +always \u806E 14-2345-2 always \u806F 14-2345-2 always \u8070 245-12346-3 always \u8071 146-2 always \u8072 24-1356-3 always \u8073 15-12346-4 -always \u8074 1456 +always \u8074 124-13456-3 always \u8075 123-1246-5 always \u8076 1345-346-5 always \u8077 1-156-2 always \u8078 145-1236-3 always \u8079 1345-13456-2 always \u807A 1456 -always \u807B 1456 -always \u807C 1456 +always \u807B 13-16-3 +always \u807C 124-13456-3 always \u807D 124-13456-3 always \u807E 14-12346-2 always \u807F 1256-5 -always \u8080 1456 -always \u8081 1456 +always \u8080 1256-5 +always \u8081 1-146-5 always \u8082 15-156-5 always \u8083 15-34-5 always \u8084 16-5 always \u8085 15-34-5 always \u8086 15-156-5 always \u8087 1-146-5 -always \u8088 1456 +always \u8088 1-146-5 always \u8089 1245-12356-5 always \u808A 16-5 always \u808B 14-2346-5 always \u808C 13-16-3 -always \u808D 1456 -always \u808E 1456 +always \u808D 245-234-2 +always \u808E 123-136-4 always \u808F 245-146-5 always \u8090 13-2346-3 -always \u8091 1456 +always \u8091 145-16-5 always \u8092 1235-12456-5 always \u8093 1235-456-3 -always \u8094 1456 +always \u8094 16-4 always \u8095 1245-136-5 always \u8096 15-246-5 -always \u8097 1456 +always \u8097 1245-34-4 always \u8098 1-12356-4 always \u8099 45-3 always \u809A 145-34-5 always \u809B 13-1346-3 always \u809C 1245-12346-2 always \u809D 13-1236-3 -always \u809E 1456 -always \u809F 1456 +always \u809E 12-345-3 +always \u809F 25-5 always \u80A0 12-1346-2 always \u80A1 13-34-4 always \u80A2 1-156-3 always \u80A3 1235-1236-2 always \u80A4 12345-34-3 always \u80A5 12345-356-2 -always \u80A6 1456 -always \u80A7 1456 -always \u80A8 1456 +always \u80A6 12345-136-2 +always \u80A7 1234-356-3 +always \u80A8 1234-1346-5 always \u80A9 13-2345-3 always \u80AA 12345-1346-2 always \u80AB 124-123456-2 -always \u80AC 1456 +always \u80AC 234-2 always \u80AD 1345-345-5 always \u80AE 1235-1346-2 always \u80AF 123-136-4 -always \u80B0 1456 +always \u80B0 1245-1236-2 always \u80B1 13-12346-3 always \u80B2 1256-5 -always \u80B3 1456 +always \u80B3 123456-4 always \u80B4 246-2 always \u80B5 245-16-2 -always \u80B6 1456 -always \u80B7 1456 +always \u80B6 1234-16-2 +always \u80B7 245-2345-3 always \u80B8 15-16-5 -always \u80B9 1456 +always \u80B9 15-16-3 always \u80BA 12345-356-5 -always \u80BB 1456 -always \u80BC 1456 -always \u80BD 1456 +always \u80BB 123-136-4 +always \u80BC 13-13456-4 +always \u80BD 124-2456-5 always \u80BE 24-136-5 always \u80BF 1-12346-4 always \u80C0 1-1346-5 @@ -32859,15 +32862,15 @@ always \u80C7 12345-356-5 always \u80C8 135-345-2 always \u80C9 1234-126-5 always \u80CA 245-1256-2 -always \u80CB 1456 +always \u80CB 124-2345-2 always \u80CC 135-356-5 always \u80CD 13-34-3 always \u80CE 124-2456-3 always \u80CF 125-156-4 always \u80D0 123-34-3 always \u80D1 1-156-3 -always \u80D2 1456 -always \u80D3 1456 +always \u80D2 1345-16-5 +always \u80D3 1234-13456-2 always \u80D4 125-156-5 always \u80D5 12345-34-2 always \u80D6 1234-1346-5 @@ -32879,22 +32882,22 @@ always \u80DB 13-23456-4 always \u80DC 15-13456-3 always \u80DD 1-156-3 always \u80DE 135-146-3 -always \u80DF 1456 +always \u80DF 134-34-4 always \u80E0 245-1256-3 always \u80E1 1235-34-2 -always \u80E2 1456 +always \u80E2 123-2346-3 always \u80E3 12-156-4 always \u80E4 1456-5 always \u80E5 15-1256-3 always \u80E6 46-3 always \u80E7 14-12346-2 -always \u80E8 1456 -always \u80E9 1456 +always \u80E8 145-12346-5 +always \u80E9 123-345-4 always \u80EA 14-34-2 always \u80EB 13-13456-5 -always \u80EC 1456 +always \u80EC 1345-34-4 always \u80ED 2345-3 -always \u80EE 1456 +always \u80EE 1234-1346-2 always \u80EF 123-35-5 always \u80F0 16-2 always \u80F1 13-456-3 @@ -32903,7 +32906,7 @@ always \u80F3 13-2346-3 always \u80F4 145-12346-5 always \u80F5 12-156-3 always \u80F6 13-246-3 -always \u80F7 1456 +always \u80F7 15-235-3 always \u80F8 15-235-3 always \u80F9 156-2 always \u80FA 2346-5 @@ -32915,77 +32918,77 @@ always \u80FF 1456 always \u8100 12-1356-2 always \u8101 124-246-5 always \u8102 1-156-3 -always \u8103 1456 -always \u8104 1456 +always \u8103 245-1246-5 +always \u8104 134-356-2 always \u8105 15-346-2 always \u8106 245-1246-5 -always \u8107 1456 +always \u8107 15-346-2 always \u8108 134-126-5 always \u8109 134-126-5 always \u810A 13-16-4 always \u810B 1456 always \u810C 1456 always \u810D 123-2356-5 -always \u810E 1456 +always \u810E 15-345-5 always \u810F 125-1346-3 always \u8110 245-16-2 always \u8111 1345-146-4 -always \u8112 1456 +always \u8112 134-16-4 always \u8113 1345-12346-2 always \u8114 14-12456-2 always \u8115 12456-5 always \u8116 135-126-2 -always \u8117 1456 +always \u8117 123456-4 always \u8118 13-12456-4 always \u8119 245-234-2 always \u811A 13-246-4 always \u811B 13-13456-5 -always \u811C 1456 +always \u811C 1245-12356-2 always \u811D 1235-1356-3 always \u811E 245-25-4 always \u811F 14-346-5 -always \u8120 1456 +always \u8120 24-1236-3 always \u8121 124-13456-4 always \u8122 134-356-2 always \u8123 12-123456-2 always \u8124 24-136-5 always \u8125 15-346-2 -always \u8126 1456 +always \u8126 124-2346-5 always \u8127 13-45-3 -always \u8128 1456 +always \u8128 245-34-5 always \u8129 15-234-3 -always \u812A 1456 +always \u812A 15-1456-5 always \u812B 124-25-3 always \u812C 1234-146-3 always \u812D 12-1356-2 -always \u812E 1456 +always \u812E 1345-356-4 always \u812F 1234-34-2 always \u8130 145-12356-5 always \u8131 124-25-3 -always \u8132 1456 +always \u8132 1345-246-5 always \u8133 1456 -always \u8134 1456 -always \u8135 1456 +always \u8134 1234-16-4 +always \u8135 13-34-4 always \u8136 14-25-2 -always \u8137 1456 +always \u8137 14-16-5 always \u8138 14-2345-4 always \u8139 1-1346-5 always \u813A 15-1246-5 -always \u813B 1456 -always \u813C 1456 +always \u813B 13-346-2 +always \u813C 14-46-4 always \u813D 24-1246-2 always \u813E 1234-16-2 -always \u813F 1456 -always \u8140 1456 -always \u8141 1456 -always \u8142 1456 +always \u813F 135-246-3 +always \u8140 14-123456-2 +always \u8141 1234-2345-2 +always \u8142 13-25-5 always \u8143 123-1246-5 always \u8144 1-1246-3 -always \u8145 1456 +always \u8145 145-1236-5 always \u8146 124-2345-4 always \u8147 1345-356-4 -always \u8148 1456 -always \u8149 1456 +always \u8148 13-13456-3 +always \u8149 13-346-3 always \u814A 15-16-2 always \u814B 16-5 always \u814C 2345-3 @@ -32998,30 +33001,30 @@ always \u8152 13-1256-3 always \u8153 12345-356-2 always \u8154 245-46-3 always \u8155 12456-5 -always \u8156 1456 -always \u8157 1456 -always \u8158 1456 -always \u8159 1456 -always \u815A 1456 +always \u8156 145-12346-5 +always \u8157 1234-16-2 +always \u8158 13-25-2 +always \u8159 125-12346-3 +always \u815A 145-13456-5 always \u815B 25-5 always \u815C 134-356-2 -always \u815D 1456 +always \u815D 1245-12456-4 always \u815E 1-12456-5 -always \u815F 1456 +always \u815F 1-156-5 always \u8160 245-12356-5 always \u8161 14-25-2 always \u8162 12356-4 -always \u8163 1456 +always \u8163 145-16-5 always \u8164 1236-3 always \u8165 15-13456-3 always \u8166 1345-146-4 always \u8167 24-34-5 -always \u8168 1456 +always \u8168 12-12456-4 always \u8169 1345-1236-4 -always \u816A 1456 +always \u816A 256-5 always \u816B 1-12346-4 -always \u816C 1456 -always \u816D 1456 +always \u816C 1245-12356-2 +always \u816D 2346-5 always \u816E 15-2456-3 always \u816F 124-34-2 always \u8170 246-3 @@ -33029,23 +33032,23 @@ always \u8171 13-2345-5 always \u8172 1246-4 always \u8173 13-246-4 always \u8174 1256-2 -always \u8175 1456 +always \u8175 13-23456-3 always \u8176 145-12456-5 always \u8177 135-16-5 always \u8178 12-1346-2 always \u8179 12345-34-5 always \u817A 15-2345-5 always \u817B 1345-16-5 -always \u817C 1456 +always \u817C 134-2345-4 always \u817D 35-5 always \u817E 124-1356-2 always \u817F 124-1246-4 always \u8180 135-1346-4 -always \u8181 1456 +always \u8181 245-2345-3 always \u8182 14-1256-4 always \u8183 35-5 -always \u8184 1456 -always \u8185 1456 +always \u8184 15-12356-5 +always \u8185 124-1346-2 always \u8186 15-34-5 always \u8187 1-1246-5 always \u8188 13-2346-2 @@ -33054,15 +33057,15 @@ always \u818A 135-126-2 always \u818B 14-246-2 always \u818C 13-16-3 always \u818D 1234-16-2 -always \u818E 1456 +always \u818E 15-346-2 always \u818F 13-146-3 -always \u8190 1456 +always \u8190 14-1256-4 always \u8191 135-1456-5 always \u8192 1456 -always \u8193 1456 -always \u8194 1456 +always \u8193 12-1346-2 +always \u8194 14-34-5 always \u8195 13-25-2 -always \u8196 1456 +always \u8196 1234-1346-3 always \u8197 12-2356-2 always \u8198 135-246-3 always \u8199 13-46-4 @@ -33073,30 +33076,30 @@ always \u819D 15-16-3 always \u819E 1-12456-4 always \u819F 14-1256-5 always \u81A0 13-246-3 -always \u81A1 1456 +always \u81A1 13456-5 always \u81A2 14-1256-2 always \u81A3 1-156-5 always \u81A4 1456 -always \u81A5 1456 +always \u81A5 12-123456-3 always \u81A6 14-2345-4 always \u81A7 124-12346-2 always \u81A8 1234-1356-2 always \u81A9 1345-16-5 -always \u81AA 1456 +always \u81AA 1-345-5 always \u81AB 14-246-2 always \u81AC 245-1246-5 -always \u81AD 1456 +always \u81AD 13-1246-3 always \u81AE 15-246-3 -always \u81AF 1456 +always \u81AF 124-1356-3 always \u81B0 12345-1236-2 always \u81B1 1-156-2 always \u81B2 13-246-3 always \u81B3 24-1236-5 always \u81B4 1235-34-3 always \u81B5 245-1246-5 -always \u81B6 1456 +always \u81B6 1245-123456-5 always \u81B7 15-46-3 -always \u81B8 1456 +always \u81B8 15-1246-4 always \u81B9 12345-136-5 always \u81BA 13456-3 always \u81BB 124-1236-4 @@ -33105,34 +33108,34 @@ always \u81BD 145-1236-4 always \u81BE 123-2356-5 always \u81BF 1345-12346-2 always \u81C0 124-123456-2 -always \u81C1 1456 +always \u81C1 14-2345-2 always \u81C2 135-356-5 always \u81C3 235-4 always \u81C4 13-236-2 always \u81C5 12-34-5 always \u81C6 16-5 always \u81C7 13-45-4 -always \u81C8 1456 +always \u81C8 14-345-5 always \u81C9 14-2345-4 always \u81CA 15-146-3 -always \u81CB 1456 +always \u81CB 124-123456-2 always \u81CC 13-34-4 always \u81CD 245-16-2 -always \u81CE 1456 +always \u81CE 245-1246-5 always \u81CF 135-1456-5 always \u81D0 15-256-3 always \u81D1 1245-34-2 always \u81D2 1235-25-5 -always \u81D3 1456 -always \u81D4 1456 +always \u81D3 125-1346-5 +always \u81D4 15-2345-5 always \u81D5 135-246-3 -always \u81D6 1456 +always \u81D6 15-13456-5 always \u81D7 123-12456-3 always \u81D8 14-345-5 always \u81D9 2345-3 always \u81DA 14-34-2 always \u81DB 1235-25-5 -always \u81DC 1456 +always \u81DC 125-1346-3 always \u81DD 14-25-4 always \u81DE 245-1256-2 always \u81DF 125-1346-5 @@ -33140,38 +33143,38 @@ always \u81E0 14-12456-2 always \u81E1 1345-16-2 always \u81E2 125-1236-3 always \u81E3 12-136-2 -always \u81E4 1456 +always \u81E4 245-2345-3 always \u81E5 25-5 always \u81E6 13-456-5 always \u81E7 125-1346-3 always \u81E8 14-1456-2 always \u81E9 13-456-5 always \u81EA 125-156-5 -always \u81EB 1456 +always \u81EB 13-246-4 always \u81EC 1345-346-5 always \u81ED 12-12356-5 always \u81EE 13-16-5 -always \u81EF 1456 -always \u81F0 1456 -always \u81F1 1456 +always \u81EF 13-146-3 +always \u81F0 12-12356-5 +always \u81F1 134-2345-2 always \u81F2 1345-346-5 always \u81F3 1-156-5 always \u81F4 1-156-5 -always \u81F5 1456 -always \u81F6 1456 +always \u81F5 13-2346-2 +always \u81F6 13-2345-5 always \u81F7 145-346-2 always \u81F8 1-156-5 always \u81F9 15-234-3 always \u81FA 124-2456-2 always \u81FB 1-136-3 always \u81FC 13-234-5 -always \u81FD 1456 +always \u81FD 15-2345-5 always \u81FE 1256-2 always \u81FF 12-345-3 always \u8200 246-4 always \u8201 1256-2 always \u8202 12-12346-3 -always \u8203 1456 +always \u8203 15-16-5 always \u8204 15-16-5 always \u8205 13-234-5 always \u8206 1256-2 @@ -33183,18 +33186,18 @@ always \u820B 15-1456-5 always \u820C 24-2346-2 always \u820D 24-2346-5 always \u820E 1456 -always \u820F 1456 +always \u820F 13-234-4 always \u8210 24-156-5 always \u8211 124-1236-3 always \u8212 24-34-3 -always \u8213 1456 +always \u8213 24-156-5 always \u8214 124-2345-4 always \u8215 124-1236-5 always \u8216 1234-34-5 -always \u8217 1456 -always \u8218 1456 -always \u8219 1456 -always \u821A 1456 +always \u8217 1234-34-5 +always \u8218 13-12456-4 +always \u8219 1235-35-5 +always \u821A 124-1236-3 always \u821B 12-12456-4 always \u821C 24-123456-5 always \u821D 15-23456-2 @@ -33206,14 +33209,14 @@ always \u8222 24-1236-3 always \u8223 16-4 always \u8224 1456 always \u8225 1234-345-3 -always \u8226 1456 -always \u8227 1456 +always \u8226 124-2456-5 +always \u8227 12345-1236-2 always \u8228 135-1236-4 -always \u8229 1456 +always \u8229 12-12456-2 always \u822A 1235-1346-2 always \u822B 12345-1346-4 always \u822C 135-1236-3 -always \u822D 1456 +always \u822D 245-236-5 always \u822E 1456 always \u822F 1-12346-3 always \u8230 13-2345-5 @@ -33230,22 +33233,22 @@ always \u823A 13-23456-2 always \u823B 14-34-2 always \u823C 245-235-2 always \u823D 1234-1346-2 -always \u823E 1456 +always \u823E 15-16-3 always \u823F 135-345-1 always \u8240 12345-34-2 -always \u8241 1456 +always \u8241 125-146-5 always \u8242 12345-1356-2 -always \u8243 1456 +always \u8243 14-16-2 always \u8244 24-146-3 always \u8245 1256-2 -always \u8246 1456 +always \u8246 14-1346-2 always \u8247 124-13456-4 always \u8248 1456 always \u8249 1246-4 -always \u824A 1456 +always \u824A 135-126-2 always \u824B 134-1356-4 -always \u824C 1456 -always \u824D 1456 +always \u824C 1345-2345-5 +always \u824D 13-1256-3 always \u824E 1235-456-2 always \u824F 24-12356-4 always \u8250 125-12346-3 @@ -33266,15 +33269,15 @@ always \u825E 246-5 always \u825F 124-12346-2 always \u8260 1456 always \u8261 145-1346-3 -always \u8262 1456 +always \u8262 124-1236-2 always \u8263 14-34-4 always \u8264 16-4 -always \u8265 1456 +always \u8265 13-346-5 always \u8266 13-2345-5 -always \u8267 1456 +always \u8267 1235-25-5 always \u8268 134-1356-2 always \u8269 245-16-2 -always \u826A 1456 +always \u826A 14-34-4 always \u826B 14-34-2 always \u826C 12-1236-2 always \u826D 24-456-3 @@ -33286,29 +33289,29 @@ always \u8272 15-2346-5 always \u8273 2345-5 always \u8274 12345-34-2 always \u8275 1234-13456-3 -always \u8276 1456 +always \u8276 2345-5 always \u8277 2345-5 always \u8278 245-146-4 always \u8279 1456 always \u827A 16-5 -always \u827B 1456 +always \u827B 14-2346-5 always \u827C 124-13456-3 always \u827D 245-234-2 always \u827E 2456-5 always \u827F 1245-1356-2 always \u8280 124-246-2 -always \u8281 1456 +always \u8281 13-246-3 always \u8282 13-346-2 always \u8283 1234-1356-2 always \u8284 12456-2 always \u8285 16-5 -always \u8286 1456 -always \u8287 1456 +always \u8286 12-2456-3 +always \u8287 134-2345-2 always \u8288 134-346-3 -always \u8289 1456 +always \u8289 13-1236-3 always \u828A 245-2345-3 always \u828B 1256-5 -always \u828C 1456 +always \u828C 1256-5 always \u828D 24-146-2 always \u828E 245-235-3 always \u828F 124-34-4 @@ -33317,8 +33320,8 @@ always \u8291 245-16-4 always \u8292 134-1346-2 always \u8293 125-156-5 always \u8294 1235-1246-5 -always \u8295 1456 -always \u8296 1456 +always \u8295 15-1246-3 +always \u8296 1-156-5 always \u8297 15-46-3 always \u8298 1234-16-2 always \u8299 12345-34-2 @@ -33338,7 +33341,7 @@ always \u82A6 14-34-2 always \u82A7 15-1256-5 always \u82A8 13-16-2 always \u82A9 245-1456-2 -always \u82AA 1456 +always \u82AA 245-16-2 always \u82AB 45-2 always \u82AC 12345-136-3 always \u82AD 135-345-3 @@ -33346,7 +33349,7 @@ always \u82AE 1245-1246-5 always \u82AF 15-1456-3 always \u82B0 13-16-5 always \u82B1 1235-35-3 -always \u82B2 1456 +always \u82B2 1235-35-3 always \u82B3 12345-1346-3 always \u82B4 34-5 always \u82B5 13-236-2 @@ -33359,24 +33362,24 @@ always \u82BB 12-34-2 always \u82BC 134-146-5 always \u82BD 23456-2 always \u82BE 12345-356-5 -always \u82BF 1456 +always \u82BF 1245-1356-5 always \u82C0 1235-1346-2 always \u82C1 125-12346-4 always \u82C2 1456-2 always \u82C3 234-4 -always \u82C4 1456 -always \u82C5 1456 +always \u82C4 135-2345-5 +always \u82C5 16-5 always \u82C6 1456 always \u82C7 1246-4 always \u82C8 14-16-5 -always \u82C9 1456 -always \u82CA 1456 +always \u82C9 1234-16-4 +always \u82CA 2346-5 always \u82CB 15-2345-5 always \u82CC 12-1346-2 always \u82CD 245-1346-3 always \u82CE 1-34-5 always \u82CF 15-34-3 -always \u82D0 1456 +always \u82D0 16-2 always \u82D1 45-5 always \u82D2 1245-1236-4 always \u82D3 14-13456-2 @@ -33384,29 +33387,29 @@ always \u82D4 124-2456-2 always \u82D5 124-246-2 always \u82D6 145-16-2 always \u82D7 134-246-2 -always \u82D8 1456 +always \u82D8 245-235-4 always \u82D9 14-16-5 -always \u82DA 1456 +always \u82DA 235-5 always \u82DB 123-2346-3 always \u82DC 134-34-5 -always \u82DD 1456 +always \u82DD 1234-356-5 always \u82DE 135-146-3 always \u82DF 13-12356-4 always \u82E0 134-1456-2 always \u82E1 16-4 -always \u82E2 1456 +always \u82E2 16-4 always \u82E3 13-1256-5 always \u82E4 1234-16-4 always \u82E5 1245-25-5 always \u82E6 123-34-4 always \u82E7 1-34-5 always \u82E8 1345-16-4 -always \u82E9 1456 +always \u82E9 135-126-2 always \u82EA 135-13456-4 always \u82EB 24-1236-3 always \u82EC 234-2 always \u82ED 246-4 -always \u82EE 1456 +always \u82EE 15-2345-3 always \u82EF 135-136-4 always \u82F0 1235-12346-2 always \u82F1 13456-3 @@ -33415,15 +33418,15 @@ always \u82F3 145-12346-3 always \u82F4 13-1256-2 always \u82F5 145-346-2 always \u82F6 1345-346-2 -always \u82F7 1456 -always \u82F8 1456 +always \u82F7 13-1236-3 +always \u82F8 1235-34-3 always \u82F9 1234-13456-2 always \u82FA 134-356-2 always \u82FB 12345-34-2 -always \u82FC 1456 -always \u82FD 1456 +always \u82FC 24-1356-3 +always \u82FD 13-34-3 always \u82FE 135-16-5 -always \u82FF 1456 +always \u82FF 1246-5 always \u8300 12345-34-2 always \u8301 1-25-2 always \u8302 134-146-5 @@ -33434,8 +33437,8 @@ always \u8306 134-146-4 always \u8307 135-345-2 always \u8308 125-156-4 always \u8309 134-126-5 -always \u830A 1456 -always \u830B 1456 +always \u830A 125-156-3 +always \u830B 145-16-4 always \u830C 12-156-2 always \u830D 13-12356-4 always \u830E 13-13456-3 @@ -33443,23 +33446,23 @@ always \u830F 14-12346-2 always \u8310 1456 always \u8311 1345-246-4 always \u8312 1456 -always \u8313 1456 +always \u8313 15-236-2 always \u8314 13456-2 always \u8315 245-235-2 always \u8316 13-2346-2 always \u8317 134-13456-2 -always \u8318 1456 +always \u8318 14-16-5 always \u8319 1245-12346-2 -always \u831A 1456 +always \u831A 1456-5 always \u831B 13-136-5 always \u831C 245-2345-5 -always \u831D 1456 +always \u831D 12-2456-4 always \u831E 12-136-2 -always \u831F 1456 +always \u831F 1256-5 always \u8320 15-234-3 -always \u8321 1456 +always \u8321 125-156-5 always \u8322 14-346-5 -always \u8323 1456 +always \u8323 34-2 always \u8324 13-16-5 always \u8325 123-1246-3 always \u8326 245-2346-5 @@ -33470,9 +33473,9 @@ always \u832A 13-456-3 always \u832B 134-1346-2 always \u832C 125-156-3 always \u832D 13-246-3 -always \u832E 1456 +always \u832E 13-246-3 always \u832F 12345-34-2 -always \u8330 1456 +always \u8330 1256-2 always \u8331 1-34-3 always \u8332 125-156-3 always \u8333 13-46-3 @@ -33485,7 +33488,7 @@ always \u8339 1245-34-2 always \u833A 12-12346-3 always \u833B 134-1346-4 always \u833C 124-12346-2 -always \u833D 1456 +always \u833D 1-12346-5 always \u833E 1456 always \u833F 1-34-2 always \u8340 15-256-2 @@ -33509,15 +33512,15 @@ always \u8351 124-16-2 always \u8352 1235-456-3 always \u8353 1234-13456-2 always \u8354 14-16-5 -always \u8355 1456 +always \u8355 13-1456-3 always \u8356 14-146-4 -always \u8357 1456 -always \u8358 1456 -always \u8359 1456 +always \u8357 24-34-5 +always \u8358 1-456-3 +always \u8359 145-345-2 always \u835A 13-23456-2 always \u835B 1245-146-2 always \u835C 135-16-5 -always \u835D 1456 +always \u835D 125-2346-2 always \u835E 245-246-2 always \u835F 1235-1246-5 always \u8360 13-16-5 @@ -33532,31 +33535,31 @@ always \u8368 15-256-2 always \u8369 13-1456-5 always \u836A 15-123456-3 always \u836B 1456-5 -always \u836C 1456 +always \u836C 134-2456-4 always \u836D 1235-12346-2 -always \u836E 1456 +always \u836E 1-12356-5 always \u836F 246-5 -always \u8370 1456 -always \u8371 1456 -always \u8372 1456 +always \u8370 145-34-5 +always \u8371 1246-4 +always \u8372 12-34-5 always \u8373 145-12356-5 always \u8374 12345-34-3 always \u8375 1245-136-4 always \u8376 1456-2 always \u8377 1235-2346-2 always \u8378 135-126-2 -always \u8379 1456 +always \u8379 135-34-5 always \u837A 256-4 always \u837B 145-16-2 always \u837C 124-34-2 always \u837D 15-1246-3 always \u837E 15-1246-3 always \u837F 12-1356-2 -always \u8380 1456 +always \u8380 12-136-2 always \u8381 34-2 -always \u8382 1456 +always \u8382 135-346-2 always \u8383 15-16-3 -always \u8384 1456 +always \u8384 13-1356-4 always \u8385 14-16-5 always \u8386 1234-34-2 always \u8387 1-34-5 @@ -33569,7 +33572,7 @@ always \u838D 245-234-2 always \u838E 24-345-3 always \u838F 15-25-3 always \u8390 12-136-2 -always \u8391 1456 +always \u8391 12345-1356-3 always \u8392 13-1256-4 always \u8393 134-356-2 always \u8394 134-1356-2 @@ -33580,12 +33583,12 @@ always \u8398 15-1456-3 always \u8399 13-256-3 always \u839A 2345-2 always \u839B 124-13456-2 -always \u839C 1456 +always \u839C 145-246-5 always \u839D 245-25-5 always \u839E 12456-4 -always \u839F 1456 +always \u839F 1235-1236-5 always \u83A0 234-4 -always \u83A1 1456 +always \u83A1 245-25-5 always \u83A2 13-23456-2 always \u83A3 456-2 always \u83A4 15-25-3 @@ -33596,8 +33599,8 @@ always \u83A8 14-1346-2 always \u83A9 1234-246-4 always \u83AA 2346-2 always \u83AB 134-126-5 -always \u83AC 1456 -always \u83AD 1456 +always \u83AC 123456-5 +always \u83AD 13-346-2 always \u83AE 1345-1236-2 always \u83AF 134-34-5 always \u83B0 135-345-1 @@ -33612,9 +33615,9 @@ always \u83B8 234-2 always \u83B9 13456-2 always \u83BA 13456-3 always \u83BB 1456 -always \u83BC 1456 +always \u83BC 12-123456-2 always \u83BD 134-1346-4 -always \u83BE 1456 +always \u83BE 134-1346-4 always \u83BF 245-156-5 always \u83C0 12456-4 always \u83C1 13-13456-3 @@ -33629,20 +33632,20 @@ always \u83C9 14-34-5 always \u83CA 13-1256-2 always \u83CB 1246-5 always \u83CC 13-256-5 -always \u83CD 1456 +always \u83CD 1345-346-5 always \u83CE 123-123456-3 always \u83CF 1235-2346-2 -always \u83D0 1456 +always \u83D0 1234-34-2 always \u83D1 125-156-3 -always \u83D2 1456 -always \u83D3 1456 +always \u83D2 13-146-4 +always \u83D3 13-25-4 always \u83D4 135-126-2 always \u83D5 14-123456-2 always \u83D6 12-1346-3 always \u83D7 12-12356-2 always \u83D8 15-12346-3 always \u83D9 1-1246-5 -always \u83DA 1456 +always \u83DA 1-1236-5 always \u83DB 134-136-2 always \u83DC 245-2456-5 always \u83DD 135-345-2 @@ -33654,14 +33657,14 @@ always \u83E2 135-146-5 always \u83E3 245-1456-5 always \u83E4 13-45-4 always \u83E5 15-16-3 -always \u83E6 1456 +always \u83E6 245-1456-2 always \u83E7 145-16-4 always \u83E8 13-346-3 always \u83E9 1234-34-2 always \u83EA 145-1346-5 always \u83EB 13-1456-4 always \u83EC 1-146-4 -always \u83ED 1456 +always \u83ED 124-2456-2 always \u83EE 13-1356-3 always \u83EF 1235-35-2 always \u83F0 13-34-3 @@ -33671,7 +33674,7 @@ always \u83F3 13-1456-3 always \u83F4 1236-3 always \u83F5 456-4 always \u83F6 135-1356-4 -always \u83F7 1456 +always \u83F7 1-12356-4 always \u83F8 2345-3 always \u83F9 13-1256-3 always \u83FA 13-2345-3 @@ -33680,15 +33683,15 @@ always \u83FC 124-1236-4 always \u83FD 24-34-2 always \u83FE 124-2345-2 always \u83FF 145-146-5 -always \u8400 1456 +always \u8400 1235-34-4 always \u8401 245-16-2 -always \u8402 1456 +always \u8402 1235-2346-2 always \u8403 245-1246-5 always \u8404 124-146-2 -always \u8405 1456 +always \u8405 12-123456-3 always \u8406 135-16-5 always \u8407 12-1346-2 -always \u8408 1456 +always \u8408 1235-12456-2 always \u8409 12345-356-5 always \u840A 14-2456-2 always \u840B 245-16-3 @@ -33700,19 +33703,19 @@ always \u8410 24-345-5 always \u8411 1-1246-3 always \u8412 2345-4 always \u8413 16-2 -always \u8414 1456 -always \u8415 1456 -always \u8416 1456 -always \u8417 1456 -always \u8418 1456 +always \u8414 124-246-2 +always \u8415 245-16-2 +always \u8416 12456-4 +always \u8417 245-2346-5 +always \u8418 1345-2456-5 always \u8419 1456 -always \u841A 1456 +always \u841A 124-25-5 always \u841B 13-234-3 -always \u841C 1456 +always \u841C 124-346-3 always \u841D 14-25-2 always \u841E 1456 always \u841F 1456 -always \u8420 1456 +always \u8420 134-1356-2 always \u8421 1456 always \u8422 1456 always \u8423 145-13456-5 @@ -33722,11 +33725,11 @@ always \u8426 13456-2 always \u8427 15-246-3 always \u8428 15-345-5 always \u8429 245-234-3 -always \u842A 1456 +always \u842A 123-2346-3 always \u842B 15-46-5 always \u842C 12456-5 always \u842D 13-1256-3 -always \u842E 1456 +always \u842E 1256-5 always \u842F 12345-34-5 always \u8430 14-2345-5 always \u8431 15-45-3 @@ -33742,51 +33745,51 @@ always \u843A 134-146-5 always \u843B 1236-3 always \u843C 2346-5 always \u843D 14-25-5 -always \u843E 1456 +always \u843E 13456-2 always \u843F 13-35-3 always \u8440 13-35-3 -always \u8441 1456 +always \u8441 13-46-3 always \u8442 12456-4 always \u8443 135-345-1 always \u8444 125-25-5 always \u8445 13-1256-3 always \u8446 135-146-4 always \u8447 1245-12356-2 -always \u8448 1456 +always \u8448 15-16-4 always \u8449 346-5 -always \u844A 1456 +always \u844A 1236-3 always \u844B 245-1256-2 always \u844C 13-2345-3 always \u844D 12345-34-2 always \u844E 14-1256-5 -always \u844F 1456 +always \u844F 13-13456-3 always \u8450 1234-136-2 always \u8451 12345-1356-3 always \u8452 1235-12346-2 -always \u8453 1456 +always \u8453 1235-12346-2 always \u8454 1235-12356-2 -always \u8455 1456 +always \u8455 2345-2 always \u8456 124-34-2 always \u8457 1-2346-1 -always \u8458 1456 +always \u8458 125-156-3 always \u8459 15-46-3 always \u845A 24-136-5 always \u845B 13-2346-4 -always \u845C 1456 +always \u845C 13-346-2 always \u845D 245-13456-2 always \u845E 134-16-4 always \u845F 1235-456-2 always \u8460 24-136-3 always \u8461 1234-34-2 -always \u8462 1456 +always \u8462 13-2456-5 always \u8463 145-12346-4 -always \u8464 1456 +always \u8464 1-12356-5 always \u8465 13-2345-5 always \u8466 1246-4 always \u8467 135-126-2 always \u8468 1246-3 always \u8469 1234-345-3 -always \u846A 1456 +always \u846A 13-16-5 always \u846B 1235-34-2 always \u846C 125-1346-5 always \u846D 13-23456-3 @@ -33794,7 +33797,7 @@ always \u846E 145-12456-5 always \u846F 246-5 always \u8470 15-1246-3 always \u8471 245-12346-3 -always \u8472 1456 +always \u8472 245-45-2 always \u8473 1246-3 always \u8474 1-136-3 always \u8475 123-1246-2 @@ -33803,20 +33806,20 @@ always \u8477 1235-123456-3 always \u8478 15-16-4 always \u8479 24-156-3 always \u847A 245-16-5 -always \u847B 1456 -always \u847C 1456 +always \u847B 14-1236-2 +always \u847C 125-12346-3 always \u847D 246-3 always \u847E 45-3 -always \u847F 1456 -always \u8480 1456 -always \u8481 1456 +always \u847F 134-356-2 +always \u8480 256-3 +always \u8481 24-34-5 always \u8482 145-16-5 -always \u8483 1456 -always \u8484 1456 +always \u8483 1-12456-5 +always \u8484 13-12456-3 always \u8485 1456 always \u8486 135-345-1 always \u8487 12-1236-4 -always \u8488 1456 +always \u8488 123-2456-4 always \u8489 123-1246-5 always \u848A 1456 always \u848B 13-46-4 @@ -33826,11 +33829,11 @@ always \u848E 12345-34-5 always \u848F 135-345-1 always \u8490 15-12356-3 always \u8491 1456-3 -always \u8492 1456 -always \u8493 1456 +always \u8492 24-156-3 +always \u8493 12-123456-2 always \u8494 24-156-2 -always \u8495 1456 -always \u8496 1456 +always \u8495 256-3 +always \u8496 1-136-3 always \u8497 14-1346-5 always \u8498 1245-34-2 always \u8499 134-1356-2 @@ -33843,44 +33846,44 @@ always \u849F 13-1256-4 always \u84A0 15-16-2 always \u84A1 1234-1346-2 always \u84A2 12-34-2 -always \u84A3 1456 +always \u84A3 15-1256-2 always \u84A4 124-34-2 -always \u84A5 1456 -always \u84A6 1456 +always \u84A5 14-234-2 +always \u84A6 25-5 always \u84A7 1-136-3 always \u84A8 245-2345-5 always \u84A9 125-34-3 always \u84AA 1234-126-5 always \u84AB 245-25-3 always \u84AC 45-3 -always \u84AD 1456 +always \u84AD 12-34-2 always \u84AE 1256-5 always \u84AF 123-2356-5 always \u84B0 1234-1236-2 always \u84B1 1234-34-2 always \u84B2 1234-34-2 -always \u84B3 1456 +always \u84B3 1345-345-5 always \u84B4 24-25-5 -always \u84B5 1456 +always \u84B5 15-16-3 always \u84B6 12345-136-2 -always \u84B7 1456 +always \u84B7 256-2 always \u84B8 1-1356-3 always \u84B9 13-2345-3 always \u84BA 13-16-2 always \u84BB 1245-25-5 always \u84BC 245-1346-3 -always \u84BD 1456 -always \u84BE 1456 +always \u84BD 136-3 +always \u84BE 134-16-2 always \u84BF 1235-146-3 always \u84C0 15-123456-3 always \u84C1 1-136-3 always \u84C2 134-13456-2 -always \u84C3 1456 +always \u84C3 1235-25-5 always \u84C4 15-1256-5 always \u84C5 14-234-2 always \u84C6 15-16-2 always \u84C7 13-34-4 -always \u84C8 1456 +always \u84C8 14-1346-2 always \u84C9 1245-12346-2 always \u84CA 12346-3 always \u84CB 13-2456-5 @@ -33893,20 +33896,20 @@ always \u84D1 15-25-3 always \u84D2 15-2345-3 always \u84D3 135-356-5 always \u84D4 246-4 -always \u84D5 1456 +always \u84D5 13-1246-5 always \u84D6 135-16-5 always \u84D7 125-12346-4 -always \u84D8 1456 +always \u84D8 13-123456-4 always \u84D9 1456 -always \u84DA 1456 +always \u84DA 15-234-3 always \u84DB 245-2346-5 always \u84DC 1456 always \u84DD 14-1236-2 always \u84DE 1456 always \u84DF 13-16-5 always \u84E0 14-16-2 -always \u84E1 1456 -always \u84E2 1456 +always \u84E1 245-1236-3 +always \u84E2 14-1346-2 always \u84E3 1256-5 always \u84E4 1456 always \u84E5 13456-2 @@ -33917,7 +33920,7 @@ always \u84E9 134-146-5 always \u84EA 124-12346-3 always \u84EB 1-34-2 always \u84EC 1234-1356-2 -always \u84ED 1456 +always \u84ED 1236-3 always \u84EE 14-2345-2 always \u84EF 125-12346-4 always \u84F0 15-16-4 @@ -33925,10 +33928,10 @@ always \u84F1 1234-13456-2 always \u84F2 245-234-3 always \u84F3 13-1456-4 always \u84F4 12-123456-2 -always \u84F5 1456 +always \u84F5 13-346-2 always \u84F6 1246-2 always \u84F7 124-1246-3 -always \u84F8 1456 +always \u84F8 245-146-2 always \u84F9 1256-5 always \u84FA 16-5 always \u84FB 13-16-2 @@ -33937,11 +33940,11 @@ always \u84FD 135-16-5 always \u84FE 14-34-4 always \u84FF 15-34-5 always \u8500 135-34-5 -always \u8501 1456 +always \u8501 1-1346-3 always \u8502 14-356-2 -always \u8503 1456 -always \u8504 1456 -always \u8505 1456 +always \u8503 13-46-5 +always \u8504 134-1236-5 +always \u8505 2345-2 always \u8506 14-13456-2 always \u8507 13-16-5 always \u8508 135-246-3 @@ -33952,7 +33955,7 @@ always \u850C 15-34-5 always \u850D 14-34-5 always \u850E 24-2346-5 always \u850F 24-1346-3 -always \u8510 1456 +always \u8510 145-16-2 always \u8511 134-346-5 always \u8512 15-256-3 always \u8513 134-1236-5 @@ -33963,14 +33966,14 @@ always \u8517 1-2346-5 always \u8518 15-136-3 always \u8519 15-45-5 always \u851A 1246-5 -always \u851B 1456 +always \u851B 1235-34-2 always \u851C 146-2 always \u851D 134-16-4 always \u851E 14-12356-2 always \u851F 245-34-5 always \u8520 1-12346-3 always \u8521 245-2456-5 -always \u8522 1456 +always \u8522 1234-126-2 always \u8523 13-46-4 always \u8524 134-16-5 always \u8525 245-12346-3 @@ -33986,23 +33989,23 @@ always \u852E 123-1246-5 always \u852F 12-136-2 always \u8530 1235-34-5 always \u8531 24-345-3 -always \u8532 1456 -always \u8533 1456 -always \u8534 1456 -always \u8535 1456 +always \u8532 123-12356-5 +always \u8533 245-2345-5 +always \u8534 134-345-2 +always \u8535 125-1346-3 always \u8536 1456 always \u8537 245-46-2 -always \u8538 1456 +always \u8538 145-12356-3 always \u8539 14-2345-2 always \u853A 14-1456-5 always \u853B 123-12356-5 always \u853C 2456-4 always \u853D 135-16-5 always \u853E 14-16-2 -always \u853F 1456 +always \u853F 1246-2 always \u8540 13-16-2 always \u8541 15-256-2 -always \u8542 1456 +always \u8542 24-1356-5 always \u8543 12345-1236-2 always \u8544 134-1356-2 always \u8545 12356-4 @@ -34011,14 +34014,14 @@ always \u8547 145-2345-4 always \u8548 15-256-5 always \u8549 13-246-3 always \u854A 1245-1246-4 -always \u854B 1456 -always \u854C 1456 +always \u854B 1245-1246-4 +always \u854C 14-356-4 always \u854D 1256-2 always \u854E 245-246-2 -always \u854F 1456 -always \u8550 1456 +always \u854F 12-34-2 +always \u8550 1235-35-2 always \u8551 13-2345-3 -always \u8552 1456 +always \u8552 134-2456-4 always \u8553 256-2 always \u8554 135-146-3 always \u8555 234-2 @@ -34026,12 +34029,12 @@ always \u8556 245-1256-2 always \u8557 14-34-5 always \u8558 1245-146-2 always \u8559 1235-1246-5 -always \u855A 1456 +always \u855A 2346-5 always \u855B 124-16-2 -always \u855C 1456 +always \u855C 12345-356-4 always \u855D 13-236-2 always \u855E 125-1246-5 -always \u855F 1456 +always \u855F 12345-345-5 always \u8560 1345-34-2 always \u8561 12345-136-2 always \u8562 123-1246-5 @@ -34047,11 +34050,11 @@ always \u856B 145-12346-4 always \u856C 15-156-3 always \u856D 15-246-3 always \u856E 15-16-5 -always \u856F 1456 -always \u8570 1456 +always \u856F 14-12346-2 +always \u8570 256-5 always \u8571 24-146-3 always \u8572 245-16-2 -always \u8573 1456 +always \u8573 13-2345-3 always \u8574 256-5 always \u8575 15-123456-3 always \u8576 14-13456-2 @@ -34061,9 +34064,9 @@ always \u8579 235-3 always \u857A 13-16-2 always \u857B 1235-12346-5 always \u857C 15-156-5 -always \u857D 1456 +always \u857D 1345-12346-2 always \u857E 14-356-4 -always \u857F 1456 +always \u857F 15-45-3 always \u8580 256-4 always \u8581 1256-5 always \u8582 15-16-2 @@ -34082,12 +34085,12 @@ always \u858E 134-346-5 always \u858F 16-5 always \u8590 14-1356-2 always \u8591 13-46-3 -always \u8592 1456 -always \u8593 1456 +always \u8592 245-1236-5 +always \u8593 24-136-3 always \u8594 245-46-2 always \u8595 14-2345-2 always \u8596 123-2346-3 -always \u8597 1456 +always \u8597 45-2 always \u8598 145-345-2 always \u8599 124-16-5 always \u859A 124-1346-2 @@ -34101,20 +34104,20 @@ always \u85A1 145-13456-4 always \u85A2 15-346-5 always \u85A3 13-34-4 always \u85A4 15-346-5 -always \u85A5 1456 +always \u85A5 24-34-4 always \u85A6 13-2345-5 always \u85A7 1235-146-3 always \u85A8 1235-12346-3 always \u85A9 15-345-5 always \u85AA 15-1456-3 -always \u85AB 1456 -always \u85AC 1456 +always \u85AB 15-256-3 +always \u85AC 246-5 always \u85AD 1456 always \u85AE 15-12356-4 always \u85AF 24-34-4 always \u85B0 15-256-3 always \u85B1 145-1246-5 -always \u85B2 1456 +always \u85B2 1234-1456-2 always \u85B3 1246-4 always \u85B4 1345-13456-2 always \u85B5 12-12356-2 @@ -34123,13 +34126,13 @@ always \u85B7 1245-34-2 always \u85B8 1234-246-2 always \u85B9 124-2456-2 always \u85BA 13-16-5 -always \u85BB 1456 -always \u85BC 1456 +always \u85BB 125-146-4 +always \u85BC 12-136-2 always \u85BD 1-136-3 always \u85BE 156-4 always \u85BF 1345-16-4 always \u85C0 13456-2 -always \u85C1 1456 +always \u85C1 13-146-4 always \u85C2 245-12346-2 always \u85C3 15-246-3 always \u85C4 245-16-2 @@ -34138,9 +34141,9 @@ always \u85C6 13-2345-4 always \u85C7 15-1256-5 always \u85C8 123-1246-3 always \u85C9 13-346-5 -always \u85CA 1456 +always \u85CA 135-2345-4 always \u85CB 145-246-5 -always \u85CC 1456 +always \u85CC 134-16-5 always \u85CD 14-1236-2 always \u85CE 13-1456-5 always \u85CF 125-1346-5 @@ -34150,37 +34153,37 @@ always \u85D2 245-346-5 always \u85D3 15-2345-4 always \u85D4 1456 always \u85D5 12356-4 -always \u85D6 1456 +always \u85D6 15-2345-2 always \u85D7 15-34-5 always \u85D8 14-1256-2 always \u85D9 16-5 always \u85DA 15-1256-5 -always \u85DB 1456 +always \u85DB 15-346-4 always \u85DC 14-16-2 always \u85DD 16-5 always \u85DE 14-345-4 always \u85DF 14-356-4 -always \u85E0 1456 +always \u85E0 15-246-5 always \u85E1 145-16-2 always \u85E2 1-156-4 always \u85E3 135-356-3 always \u85E4 124-1356-2 always \u85E5 246-5 always \u85E6 134-126-2 -always \u85E7 1456 +always \u85E7 1235-12456-4 always \u85E8 135-246-3 always \u85E9 12345-1236-2 always \u85EA 15-12356-4 always \u85EB 124-1236-2 always \u85EC 124-1246-3 always \u85ED 245-235-2 -always \u85EE 1456 +always \u85EE 245-246-2 always \u85EF 1246-5 always \u85F0 14-234-2 always \u85F1 1235-1246-5 always \u85F2 12356-3 -always \u85F3 1456 -always \u85F4 1456 +always \u85F3 13-146-4 +always \u85F4 256-5 always \u85F5 1456 always \u85F6 14-16-5 always \u85F7 1-34-3 @@ -34188,31 +34191,31 @@ always \u85F8 12-34-2 always \u85F9 2456-4 always \u85FA 14-1456-5 always \u85FB 125-146-4 -always \u85FC 1456 +always \u85FC 15-45-3 always \u85FD 12-136-5 always \u85FE 14-2456-5 always \u85FF 1235-25-5 always \u8600 124-25-5 always \u8601 34-5 -always \u8602 1456 -always \u8603 1456 +always \u8602 1245-1246-4 +always \u8603 1245-1246-4 always \u8604 245-16-2 always \u8605 1235-1356-2 always \u8606 14-34-2 always \u8607 15-34-3 -always \u8608 1456 +always \u8608 124-1246-2 always \u8609 134-1346-2 always \u860A 256-5 always \u860B 1234-13456-2 always \u860C 1256-4 -always \u860D 1456 -always \u860E 1456 -always \u860F 1456 -always \u8610 1456 +always \u860D 15-256-3 +always \u860E 13-16-5 +always \u860F 13-235-3 +always \u8610 15-2345-3 always \u8611 134-126-2 always \u8612 1456 -always \u8613 1456 -always \u8614 1456 +always \u8613 15-34-3 +always \u8614 13-235-3 always \u8615 1456 always \u8616 135-126-5 always \u8617 135-126-5 @@ -34221,7 +34224,7 @@ always \u8619 16-5 always \u861A 15-2345-4 always \u861B 1256-5 always \u861C 13-1256-2 -always \u861D 1456 +always \u861D 14-2345-5 always \u861E 14-2345-2 always \u861F 1456-4 always \u8620 245-46-2 @@ -34232,14 +34235,14 @@ always \u8624 1246-4 always \u8625 236-5 always \u8626 14-13456-2 always \u8627 245-1256-2 -always \u8628 1456 +always \u8628 246-2 always \u8629 12345-1236-2 always \u862A 134-16-2 -always \u862B 1456 +always \u862B 14-1236-2 always \u862C 123-1246-3 always \u862D 14-1236-2 always \u862E 13-16-5 -always \u862F 1456 +always \u862F 145-1346-5 always \u8630 1456 always \u8631 14-356-5 always \u8632 14-356-2 @@ -34247,26 +34250,26 @@ always \u8633 1235-35-4 always \u8634 12345-1356-3 always \u8635 1-156-2 always \u8636 1246-5 -always \u8637 1456 +always \u8637 123-1246-2 always \u8638 1-1236-5 always \u8639 1235-2356-2 always \u863A 14-16-2 always \u863B 13-16-5 always \u863C 134-16-2 -always \u863D 1456 +always \u863D 14-356-4 always \u863E 1235-2356-5 always \u863F 14-25-2 always \u8640 13-16-3 -always \u8641 1456 -always \u8642 1456 +always \u8641 123-1246-2 +always \u8642 14-34-5 always \u8643 15-2345-3 always \u8644 1456 always \u8645 1456 always \u8646 14-356-2 always \u8647 245-45-4 always \u8648 15-246-3 -always \u8649 1456 -always \u864A 1456 +always \u8649 16-5 +always \u864A 14-12456-2 always \u864B 134-136-2 always \u864C 135-346-3 always \u864D 1235-34-3 @@ -34279,22 +34282,22 @@ always \u8653 15-246-3 always \u8654 245-2345-2 always \u8655 12-34-5 always \u8656 1235-34-3 -always \u8657 1456 -always \u8658 1456 +always \u8657 15-1256-3 +always \u8658 245-25-2 always \u8659 12345-34-2 always \u865A 15-1256-3 always \u865B 15-1256-3 always \u865C 14-34-4 -always \u865D 1456 +always \u865D 1235-34-4 always \u865E 1256-2 always \u865F 1235-146-5 -always \u8660 1456 +always \u8660 13-246-4 always \u8661 13-1256-5 always \u8662 13-25-2 always \u8663 135-146-5 always \u8664 2345-2 always \u8665 12-1236-2 -always \u8666 1456 +always \u8666 1-1236-5 always \u8667 123-1246-3 always \u8668 135-1236-3 always \u8669 15-16-5 @@ -34309,10 +34312,10 @@ always \u8671 24-156-3 always \u8672 1456 always \u8673 145-16-5 always \u8674 1-2346-2 -always \u8675 1456 -always \u8676 1456 +always \u8675 24-2346-2 +always \u8676 1256-3 always \u8677 1235-1236-2 -always \u8678 1456 +always \u8678 125-156-4 always \u8679 1235-12346-2 always \u867A 1235-1246-4 always \u867B 134-1356-2 @@ -34323,22 +34326,22 @@ always \u867F 12-2456-5 always \u8680 24-156-2 always \u8681 16-4 always \u8682 134-345-4 -always \u8683 1456 -always \u8684 1456 +always \u8683 15-46-5 +always \u8684 12345-1346-3 always \u8685 2346-5 always \u8686 135-345-3 always \u8687 12-156-4 -always \u8688 1456 -always \u8689 1456 +always \u8688 245-2345-3 +always \u8689 123456-2 always \u868A 123456-2 always \u868B 1245-1246-5 always \u868C 135-1346-5 always \u868D 1234-16-2 always \u868E 236-5 -always \u868F 1456 +always \u868F 236-5 always \u8690 13-256-3 always \u8691 245-16-2 -always \u8692 1456 +always \u8692 124-12346-2 always \u8693 1456-4 always \u8694 245-16-2 always \u8695 245-1236-2 @@ -34347,30 +34350,30 @@ always \u8697 13-236-2 always \u8698 234-2 always \u8699 245-1456-2 always \u869A 245-16-2 -always \u869B 1456 +always \u869B 1-12346-5 always \u869C 23456-2 always \u869D 245-156-5 always \u869E 134-34-5 -always \u869F 1456 -always \u86A0 1456 +always \u869F 456-2 +always \u86A0 12345-136-2 always \u86A1 12345-136-2 always \u86A2 1235-1346-2 always \u86A3 13-12346-3 always \u86A4 125-146-4 always \u86A5 12345-34-4 -always \u86A6 1456 +always \u86A6 1245-1236-2 always \u86A7 13-346-5 always \u86A8 12345-34-2 always \u86A9 12-156-3 always \u86AA 145-12356-4 -always \u86AB 1456 +always \u86AB 1234-246-2 always \u86AC 15-2345-5 -always \u86AD 1456 -always \u86AE 1456 +always \u86AD 1345-16-2 +always \u86AE 124-2346-5 always \u86AF 245-234-3 always \u86B0 234-2 always \u86B1 1-345-5 -always \u86B2 1456 +always \u86B2 1234-13456-2 always \u86B3 12-156-2 always \u86B4 234-4 always \u86B5 1235-2346-2 @@ -34397,15 +34400,15 @@ always \u86C9 14-13456-2 always \u86CA 13-34-4 always \u86CB 145-1236-5 always \u86CC 13-34-4 -always \u86CD 1456 +always \u86CD 13456-2 always \u86CE 14-16-5 always \u86CF 12-1356-3 always \u86D0 245-1256-3 always \u86D1 134-12356-2 -always \u86D2 1456 +always \u86D2 13-2346-2 always \u86D3 245-156-5 always \u86D4 1235-1246-2 -always \u86D5 1456 +always \u86D5 1235-1246-2 always \u86D6 134-1346-2 always \u86D7 12345-34-5 always \u86D8 46-4 @@ -34416,14 +34419,14 @@ always \u86DC 16-3 always \u86DD 15-2345-2 always \u86DE 13-35-3 always \u86DF 13-246-3 -always \u86E0 1456 -always \u86E1 1456 +always \u86E0 14-16-5 +always \u86E1 16-5 always \u86E2 1234-13456-2 always \u86E3 13-346-2 always \u86E4 1235-345-2 -always \u86E5 1456 +always \u86E5 24-2346-2 always \u86E6 124-16-2 -always \u86E7 1456 +always \u86E7 456-4 always \u86E8 134-126-5 always \u86E9 245-235-2 always \u86EA 245-346-5 @@ -34444,10 +34447,10 @@ always \u86F8 15-246-3 always \u86F9 235-4 always \u86FA 13-23456-2 always \u86FB 24-1246-5 -always \u86FC 1456 -always \u86FD 1456 +always \u86FC 12-2346-3 +always \u86FD 135-2456-5 always \u86FE 2346-2 -always \u86FF 1456 +always \u86FF 1235-1236-5 always \u8700 24-34-4 always \u8701 15-45-2 always \u8702 12345-1356-3 @@ -34463,23 +34466,23 @@ always \u870B 14-1346-2 always \u870C 135-16-5 always \u870D 12-34-2 always \u870E 13-45-4 -always \u870F 1456 -always \u8710 1456 +always \u870F 234-4 +always \u8710 13-346-2 always \u8711 145-1236-5 always \u8712 2345-2 always \u8713 124-13456-2 -always \u8714 1456 +always \u8714 145-2345-5 always \u8715 24-1246-5 -always \u8716 1456 +always \u8716 1235-1246-2 always \u8717 13-35-3 always \u8718 1-156-3 always \u8719 15-12346-3 always \u871A 12345-356-4 always \u871B 13-1256-3 always \u871C 134-16-5 -always \u871D 1456 +always \u871D 245-16-2 always \u871E 245-16-2 -always \u871F 1456 +always \u871F 1256-5 always \u8720 13-256-4 always \u8721 245-1256-5 always \u8722 134-1356-4 @@ -34491,39 +34494,39 @@ always \u8727 14-16-5 always \u8728 145-346-2 always \u8729 124-246-2 always \u872A 124-146-2 -always \u872B 1456 +always \u872B 123-123456-3 always \u872C 1235-1236-2 always \u872D 1235-1236-5 always \u872E 1256-5 -always \u872F 1456 +always \u872F 135-1346-5 always \u8730 12345-356-2 always \u8731 1234-16-2 always \u8732 1246-3 always \u8733 145-123456-3 always \u8734 16-5 always \u8735 45-3 -always \u8736 1456 +always \u8736 15-34-5 always \u8737 245-45-2 always \u8738 245-2345-4 -always \u8739 1456 +always \u8739 1245-1246-5 always \u873A 1345-16-2 always \u873B 245-13456-3 always \u873C 1246-5 -always \u873D 1456 +always \u873D 14-46-4 always \u873E 13-25-4 always \u873F 12456-3 always \u8740 145-12346-5 always \u8741 2346-5 always \u8742 135-1236-4 always \u8743 145-16-5 -always \u8744 1456 -always \u8745 1456 +always \u8744 456-4 +always \u8745 245-1236-2 always \u8746 46-4 always \u8747 13456-2 always \u8748 13-25-3 always \u8749 12-1236-2 always \u874A 1456 -always \u874B 1456 +always \u874B 14-345-5 always \u874C 123-2346-3 always \u874D 13-16-2 always \u874E 1235-2346-2 @@ -34560,9 +34563,9 @@ always \u876C 125-12346-3 always \u876D 124-16-2 always \u876E 12345-34-5 always \u876F 45-2 -always \u8770 1456 -always \u8771 1456 -always \u8772 1456 +always \u8770 1235-1246-4 +always \u8771 134-1356-2 +always \u8772 14-345-5 always \u8773 145-2456-5 always \u8774 1235-34-2 always \u8775 245-234-3 @@ -34573,50 +34576,50 @@ always \u8779 256-3 always \u877A 13-1256-4 always \u877B 1345-1236-2 always \u877C 14-12356-2 -always \u877D 1456 +always \u877D 245-256-4 always \u877E 1245-12346-2 -always \u877F 1456 -always \u8780 1456 +always \u877F 13456-2 +always \u8780 13-46-3 always \u8781 135-345-1 always \u8782 14-1346-2 always \u8783 1234-1346-2 always \u8784 15-156-3 always \u8785 15-16-3 -always \u8786 1456 +always \u8786 245-156-5 always \u8787 15-16-3 always \u8788 45-2 always \u8789 12346-3 -always \u878A 1456 -always \u878B 1456 -always \u878C 1456 +always \u878A 14-2345-2 +always \u878B 15-12356-3 +always \u878C 135-1236-3 always \u878D 1245-12346-2 -always \u878E 1456 +always \u878E 1245-12346-2 always \u878F 13-16-2 always \u8790 34-3 always \u8791 245-234-5 always \u8792 1235-1236-5 always \u8793 245-1456-2 always \u8794 16-2 -always \u8795 1456 +always \u8795 135-16-3 always \u8796 1235-35-2 always \u8797 124-1346-2 always \u8798 16-4 -always \u8799 1456 +always \u8799 145-34-5 always \u879A 1345-2456-5 always \u879B 1235-2346-2 always \u879C 1235-34-2 always \u879D 1235-1246-5 always \u879E 134-345-4 always \u879F 134-13456-2 -always \u87A0 1456 -always \u87A1 1456 +always \u87A0 16-5 +always \u87A1 123456-2 always \u87A2 13456-2 always \u87A3 124-1356-2 always \u87A4 135-345-1 -always \u87A5 1456 +always \u87A5 245-1346-3 always \u87A6 1456 always \u87A7 1456 -always \u87A8 1456 +always \u87A8 134-1236-4 always \u87A9 1456 always \u87AA 24-1346-3 always \u87AB 1-2346-3 @@ -34625,7 +34628,7 @@ always \u87AD 12-156-3 always \u87AE 145-16-5 always \u87AF 146-2 always \u87B0 14-34-5 -always \u87B1 1456 +always \u87B1 1246-5 always \u87B2 145-346-2 always \u87B3 124-1346-2 always \u87B4 12-136-2 @@ -34641,32 +34644,32 @@ always \u87BD 1-12346-3 always \u87BE 1456-4 always \u87BF 13-46-3 always \u87C0 24-2356-5 -always \u87C1 1456 +always \u87C1 123456-2 always \u87C2 13-246-3 always \u87C3 12456-5 always \u87C4 1-156-2 always \u87C5 1-2346-5 always \u87C6 134-345-1 -always \u87C7 1456 +always \u87C7 134-345-2 always \u87C8 13-25-3 always \u87C9 13-234-5 always \u87CA 134-146-2 always \u87CB 15-16-3 always \u87CC 245-12346-3 -always \u87CD 1456 -always \u87CE 1456 -always \u87CF 1456 +always \u87CD 14-16-2 +always \u87CE 134-1236-4 +always \u87CF 15-246-3 always \u87D0 1456 always \u87D1 1-1346-3 always \u87D2 134-1346-4 always \u87D3 15-46-5 always \u87D4 134-126-5 -always \u87D5 1456 -always \u87D6 1456 +always \u87D5 125-1246-3 +always \u87D6 15-156-3 always \u87D7 245-234-3 always \u87D8 124-2346-5 always \u87D9 1-156-2 -always \u87DA 1456 +always \u87DA 1234-1356-2 always \u87DB 1234-1356-2 always \u87DC 13-246-4 always \u87DD 245-1256-2 @@ -34681,60 +34684,60 @@ always \u87E5 1235-456-2 always \u87E6 12345-356-5 always \u87E7 14-146-2 always \u87E8 13-236-2 -always \u87E9 1456 +always \u87E9 13-236-2 always \u87EA 1235-1246-5 always \u87EB 1456-2 always \u87EC 12-1236-2 always \u87ED 13-246-3 -always \u87EE 1456 +always \u87EE 24-1236-5 always \u87EF 1245-146-2 -always \u87F0 1456 -always \u87F1 1456 +always \u87F0 15-246-3 +always \u87F1 134-12356-2 always \u87F2 12-12346-2 always \u87F3 15-256-2 always \u87F4 15-156-3 always \u87F5 1456 always \u87F6 12-1356-3 always \u87F7 145-1346-3 -always \u87F8 1456 +always \u87F8 14-16-4 always \u87F9 15-346-5 always \u87FA 24-1236-5 always \u87FB 16-4 always \u87FC 13-13456-4 -always \u87FD 1456 +always \u87FD 145-345-2 always \u87FE 12-1236-2 always \u87FF 245-16-5 always \u8800 245-156-3 always \u8801 15-46-5 always \u8802 24-2346-5 always \u8803 14-25-4 -always \u8804 1456 +always \u8804 245-1456-2 always \u8805 13456-2 always \u8806 12-2456-5 -always \u8807 1456 +always \u8807 14-16-5 always \u8808 125-2346-2 always \u8809 15-45-4 always \u880A 14-2345-2 always \u880B 1-34-4 always \u880C 125-2346-2 always \u880D 15-346-3 -always \u880E 1456 -always \u880F 1456 +always \u880E 134-1346-4 +always \u880F 15-346-5 always \u8810 245-16-2 always \u8811 1245-12346-2 -always \u8812 1456 +always \u8812 13-2345-4 always \u8813 134-1356-4 always \u8814 1235-146-2 always \u8815 1245-34-2 always \u8816 25-5 always \u8817 1-25-2 -always \u8818 1456 +always \u8818 13-346-2 always \u8819 135-1456-3 -always \u881A 1456 +always \u881A 1235-2346-5 always \u881B 134-346-5 always \u881C 12345-1236-2 always \u881D 14-356-2 -always \u881E 1456 +always \u881E 13-346-2 always \u881F 14-345-5 always \u8820 134-16-5 always \u8821 14-16-4 @@ -34743,13 +34746,13 @@ always \u8823 14-16-5 always \u8824 245-234-3 always \u8825 1345-346-5 always \u8826 14-34-2 -always \u8827 1456 +always \u8827 145-34-5 always \u8828 15-246-3 always \u8829 1-34-3 always \u882A 14-12346-2 always \u882B 14-16-5 always \u882C 14-12346-2 -always \u882D 1456 +always \u882D 12345-1356-3 always \u882E 346-3 always \u882F 1234-16-2 always \u8830 15-46-3 @@ -34762,7 +34765,7 @@ always \u8836 245-1236-2 always \u8837 245-1256-2 always \u8838 245-45-2 always \u8839 145-34-5 -always \u883A 1456 +always \u883A 245-1236-2 always \u883B 134-1236-2 always \u883C 13-236-2 always \u883D 13-346-2 @@ -34770,43 +34773,43 @@ always \u883E 1-34-2 always \u883F 1-25-2 always \u8840 15-346-4 always \u8841 134-1346-5 -always \u8842 1456 +always \u8842 1345-234-5 always \u8843 1234-356-3 always \u8844 1345-1256-5 always \u8845 15-1456-5 -always \u8846 1456 -always \u8847 1456 +always \u8846 1-12346-5 +always \u8847 134-126-5 always \u8848 156-5 -always \u8849 1456 +always \u8849 123-2346-5 always \u884A 134-346-5 always \u884B 15-16-5 always \u884C 15-13456-2 always \u884D 2345-4 always \u884E 123-1236-4 -always \u884F 1456 +always \u884F 45-5 always \u8850 1456 -always \u8851 1456 +always \u8851 14-13456-2 always \u8852 15-45-5 always \u8853 24-34-5 always \u8854 15-2345-2 always \u8855 124-12346-2 always \u8856 15-46-5 always \u8857 13-346-3 -always \u8858 1456 +always \u8858 15-2345-2 always \u8859 23456-2 always \u885A 1235-34-2 always \u885B 1246-5 -always \u885C 1456 +always \u885C 145-146-5 always \u885D 12-12346-3 -always \u885E 1456 -always \u885F 1456 -always \u8860 1456 +always \u885E 1246-5 +always \u885F 145-146-5 +always \u8860 1-123456-3 always \u8861 1235-1356-2 always \u8862 245-1256-2 always \u8863 16-3 always \u8864 1456 always \u8865 135-34-4 -always \u8866 1456 +always \u8866 13-1236-4 always \u8867 1256-2 always \u8868 135-246-4 always \u8869 12-2456-5 @@ -34819,15 +34822,15 @@ always \u886F 12345-136-3 always \u8870 24-2356-3 always \u8871 13-346-2 always \u8872 1345-345-5 -always \u8873 1456 +always \u8873 1-12346-3 always \u8874 145-1236-4 always \u8875 1345-16-5 always \u8876 1-12346-5 always \u8877 1-12346-3 -always \u8878 1456 +always \u8878 15-346-5 always \u8879 245-16-2 -always \u887A 1456 -always \u887B 1456 +always \u887A 15-346-2 +always \u887B 1245-1236-2 always \u887C 1-156-3 always \u887D 1245-136-5 always \u887E 245-1456-3 @@ -34838,21 +34841,21 @@ always \u8882 134-356-5 always \u8883 12-2456-5 always \u8884 146-4 always \u8885 1345-246-4 -always \u8886 1456 -always \u8887 1456 +always \u8886 1235-1246-3 +always \u8887 1245-1236-2 always \u8888 13-23456-3 always \u8889 124-25-2 -always \u888A 1456 +always \u888A 14-13456-4 always \u888B 145-2456-5 always \u888C 135-146-5 always \u888D 1234-146-2 always \u888E 246-5 -always \u888F 1456 -always \u8890 1456 +always \u888F 125-25-5 +always \u8890 135-16-5 always \u8891 24-146-5 always \u8892 124-1236-4 always \u8893 13-1256-4 -always \u8894 1456 +always \u8894 1235-2346-5 always \u8895 15-236-5 always \u8896 15-234-5 always \u8897 1-136-4 @@ -34861,41 +34864,41 @@ always \u8899 1234-345-5 always \u889A 135-126-3 always \u889B 145-16-3 always \u889C 35-5 -always \u889D 1456 +always \u889D 12345-34-5 always \u889E 13-123456-4 always \u889F 1-156-5 -always \u88A0 1456 +always \u88A0 1-156-5 always \u88A1 1245-1236-2 always \u88A2 1234-1236-5 -always \u88A3 1456 +always \u88A3 16-5 always \u88A4 134-146-5 always \u88A5 1456 -always \u88A6 1456 +always \u88A6 1345-345-5 always \u88A7 123-12356-3 always \u88A8 15-45-5 -always \u88A9 1456 +always \u88A9 12-1236-3 always \u88AA 245-1256-3 always \u88AB 135-356-5 always \u88AC 124-2456-2 always \u88AD 15-16-2 always \u88AE 1456 -always \u88AF 1456 +always \u88AF 135-126-2 always \u88B0 1456 always \u88B1 12345-34-2 always \u88B2 16-2 -always \u88B3 1456 -always \u88B4 1456 -always \u88B5 1456 +always \u88B3 12-156-4 +always \u88B4 123-34-5 +always \u88B5 1245-136-5 always \u88B6 13-46-5 always \u88B7 13-23456-2 always \u88B8 245-123456-2 always \u88B9 1234-345-5 always \u88BA 13-346-2 -always \u88BB 1456 +always \u88BB 156-2 always \u88BC 13-2346-5 always \u88BD 1245-34-2 always \u88BE 1-34-3 -always \u88BF 1456 +always \u88BF 13-1246-3 always \u88C0 1456-3 always \u88C1 245-2456-2 always \u88C2 14-346-5 @@ -34904,7 +34907,7 @@ always \u88C4 1456 always \u88C5 1-456-3 always \u88C6 145-1346-3 always \u88C7 1456 -always \u88C8 1456 +always \u88C8 123-123456-3 always \u88C9 123-136-5 always \u88CA 1345-246-4 always \u88CB 24-34-5 @@ -34913,9 +34916,9 @@ always \u88CD 123-123456-4 always \u88CE 12-1356-2 always \u88CF 14-16-4 always \u88D0 13-45-3 -always \u88D1 1456 +always \u88D1 24-136-3 always \u88D2 1234-12356-2 -always \u88D3 1456 +always \u88D3 13-2346-2 always \u88D4 16-5 always \u88D5 1256-5 always \u88D6 1-136-4 @@ -34928,20 +34931,20 @@ always \u88DC 135-34-4 always \u88DD 1-456-3 always \u88DE 24-1246-5 always \u88DF 24-345-3 -always \u88E0 1456 +always \u88E0 245-256-2 always \u88E1 14-16-4 always \u88E2 14-2345-2 always \u88E3 14-2345-2 always \u88E4 123-34-5 always \u88E5 13-2345-5 -always \u88E6 1456 +always \u88E6 12345-12356-2 always \u88E7 12-1236-3 always \u88E8 135-16-5 -always \u88E9 1456 -always \u88EA 1456 +always \u88E9 13-123456-3 +always \u88EA 124-146-2 always \u88EB 45-5 always \u88EC 14-13456-2 -always \u88ED 1456 +always \u88ED 12-156-4 always \u88EE 12-1346-3 always \u88EF 145-146-3 always \u88F0 145-25-2 @@ -34949,7 +34952,7 @@ always \u88F1 135-246-4 always \u88F2 14-46-4 always \u88F3 24-1346-3 always \u88F4 1234-356-2 -always \u88F5 1456 +always \u88F5 1234-356-2 always \u88F6 12345-356-3 always \u88F7 45-3 always \u88F8 14-25-4 @@ -34959,23 +34962,23 @@ always \u88FB 145-34-4 always \u88FC 15-16-2 always \u88FD 1-156-5 always \u88FE 13-1256-3 -always \u88FF 1456 -always \u8900 1456 +always \u88FF 245-16-4 +always \u8900 13-16-5 always \u8901 1-156-2 always \u8902 13-35-5 -always \u8903 1456 +always \u8903 123-136-5 always \u8904 1456 always \u8905 124-16-5 always \u8906 124-16-2 always \u8907 12345-34-5 -always \u8908 1456 +always \u8908 12-12346-2 always \u8909 15-346-3 always \u890A 135-2345-4 always \u890B 145-346-2 always \u890C 123-123456-3 -always \u890D 1456 +always \u890D 145-12456-3 always \u890E 15-234-5 -always \u890F 1456 +always \u890F 15-234-5 always \u8910 1235-2346-2 always \u8911 45-5 always \u8912 135-146-3 @@ -34992,15 +34995,15 @@ always \u891C 1456 always \u891D 1456 always \u891E 256-4 always \u891F 145-345-2 -always \u8920 1456 +always \u8920 13-12356-3 always \u8921 145-345-3 always \u8922 1235-2356-2 always \u8923 1245-12346-2 -always \u8924 1456 +always \u8924 45-5 always \u8925 1245-34-5 always \u8926 1345-2456-5 always \u8927 13-235-4 -always \u8928 1456 +always \u8928 15-25-4 always \u8929 135-1236-3 always \u892A 124-123456-5 always \u892B 12-156-4 @@ -35017,35 +35020,35 @@ always \u8935 14-16-2 always \u8936 1-2346-2 always \u8937 24-156-3 always \u8938 14-1256-4 -always \u8939 1456 -always \u893A 1456 +always \u8939 16-5 +always \u893A 145-346-2 always \u893B 15-346-5 always \u893C 15-2345-3 always \u893D 1246-5 always \u893E 135-246-4 -always \u893F 1456 -always \u8940 1456 +always \u893F 245-146-2 +always \u8940 13-16-3 always \u8941 245-46-4 always \u8942 15-136-3 -always \u8943 1456 +always \u8943 135-146-3 always \u8944 15-46-3 always \u8945 1456 always \u8946 1234-34-2 -always \u8947 1456 -always \u8948 1456 +always \u8947 13-2345-4 +always \u8948 1-12456-5 always \u8949 13-2345-5 -always \u894A 1456 +always \u894A 125-1246-5 always \u894B 13-16-2 always \u894C 145-1236-3 -always \u894D 1456 -always \u894E 1456 +always \u894D 125-345-2 +always \u894E 12345-1236-2 always \u894F 135-126-2 always \u8950 15-46-5 always \u8951 15-1456-2 always \u8952 135-346-2 always \u8953 1245-146-2 -always \u8954 1456 -always \u8955 1456 +always \u8954 134-1236-4 +always \u8955 14-1236-2 always \u8956 146-4 always \u8957 145-25-2 always \u8958 13-1246-5 @@ -35061,9 +35064,9 @@ always \u8961 24-34-4 always \u8962 124-1236-4 always \u8963 135-16-5 always \u8964 14-1236-2 -always \u8965 1456 +always \u8965 1234-34-2 always \u8966 1245-34-2 -always \u8967 1456 +always \u8967 1-156-4 always \u8968 1456 always \u8969 24-34-4 always \u896A 35-5 @@ -35072,15 +35075,15 @@ always \u896C 135-2456-4 always \u896D 15-346-2 always \u896E 135-126-2 always \u896F 12-136-5 -always \u8970 1456 +always \u8970 14-2456-5 always \u8971 14-12346-2 always \u8972 15-16-2 always \u8973 15-2345-3 always \u8974 14-1236-2 -always \u8975 1456 +always \u8975 1-2346-2 always \u8976 145-2456-5 always \u8977 1456 -always \u8978 1456 +always \u8978 125-1236-5 always \u8979 15-16-4 always \u897A 13-2345-4 always \u897B 1234-1236-5 @@ -35088,74 +35091,74 @@ always \u897C 16-5 always \u897D 1456 always \u897E 23456-5 always \u897F 15-16-3 -always \u8980 1456 +always \u8980 15-16-3 always \u8981 246-5 always \u8982 12345-1356-4 always \u8983 245-1456-2 always \u8984 1456 always \u8985 12345-246-5 always \u8986 12345-34-5 -always \u8987 1456 +always \u8987 135-345-5 always \u8988 1235-2346-2 -always \u8989 1456 -always \u898A 1456 +always \u8989 13-16-3 +always \u898A 13-16-3 always \u898B 13-2345-5 -always \u898C 1456 -always \u898D 1456 -always \u898E 1456 +always \u898C 13-12456-3 +always \u898D 135-2345-5 +always \u898E 2345-5 always \u898F 13-1246-3 -always \u8990 1456 -always \u8991 1456 -always \u8992 1456 +always \u8990 13-236-2 +always \u8991 1234-2345-4 +always \u8992 134-146-2 always \u8993 134-16-5 -always \u8994 1456 +always \u8994 134-16-5 always \u8995 134-346-5 always \u8996 24-156-5 always \u8997 15-156-3 always \u8998 12-1236-3 -always \u8999 1456 -always \u899A 1456 +always \u8999 14-25-2 +always \u899A 13-236-2 always \u899B 134-16-5 always \u899C 124-246-5 always \u899D 14-2345-2 always \u899E 246-5 always \u899F 1-156-5 -always \u89A0 1456 +always \u89A0 13-256-3 always \u89A1 15-16-2 always \u89A2 24-1236-4 always \u89A3 1246-3 always \u89A4 15-16-5 -always \u89A5 1456 +always \u89A5 124-2345-4 always \u89A6 1256-2 -always \u89A7 1456 -always \u89A8 1456 -always \u89A9 1456 +always \u89A7 14-1236-4 +always \u89A8 2346-5 +always \u89A9 145-34-4 always \u89AA 245-1456-3 -always \u89AB 1456 +always \u89AB 1234-1346-4 always \u89AC 13-16-5 always \u89AD 134-13456-2 always \u89AE 1234-13456-3 always \u89AF 13-12356-5 -always \u89B0 1456 -always \u89B1 1456 +always \u89B0 245-1256-5 +always \u89B1 1-1236-5 always \u89B2 13-1456-5 -always \u89B3 1456 -always \u89B4 1456 -always \u89B5 1456 +always \u89B3 13-12456-3 +always \u89B4 145-1356-3 +always \u89B5 13-2345-5 always \u89B6 14-25-2 always \u89B7 245-1256-5 -always \u89B8 1456 +always \u89B8 13-2345-5 always \u89B9 1246-2 always \u89BA 13-236-2 -always \u89BB 1456 -always \u89BC 1456 +always \u89BB 245-1256-5 +always \u89BC 14-25-2 always \u89BD 14-1236-4 always \u89BE 24-136-4 always \u89BF 145-16-2 always \u89C0 13-12456-3 always \u89C1 13-2345-5 always \u89C2 13-12456-3 -always \u89C3 1456 +always \u89C3 2345-5 always \u89C4 13-1246-3 always \u89C5 134-16-5 always \u89C6 24-156-5 @@ -35165,7 +35168,7 @@ always \u89C9 13-236-2 always \u89CA 13-16-5 always \u89CB 15-16-2 always \u89CC 145-16-2 -always \u89CD 1456 +always \u89CD 124-2345-4 always \u89CE 1256-2 always \u89CF 13-12356-5 always \u89D0 13-1456-5 @@ -35175,8 +35178,8 @@ always \u89D3 245-234-2 always \u89D4 13-1456-3 always \u89D5 245-34-3 always \u89D6 13-236-2 -always \u89D7 1456 -always \u89D8 1456 +always \u89D7 1-156-5 +always \u89D8 12-146-5 always \u89D9 13-16-2 always \u89DA 13-34-3 always \u89DB 145-1236-5 @@ -35191,29 +35194,29 @@ always \u89E3 13-346-4 always \u89E4 13-1246-4 always \u89E5 13-12346-3 always \u89E6 1235-12346-2 -always \u89E7 1456 +always \u89E7 13-346-4 always \u89E8 1235-123456-5 always \u89E9 245-234-2 -always \u89EA 1456 +always \u89EA 15-13456-3 always \u89EB 15-34-5 always \u89EC 1345-16-2 always \u89ED 245-16-3 -always \u89EE 1456 +always \u89EE 14-34-5 always \u89EF 1-156-5 always \u89F0 1-345-3 always \u89F1 135-16-5 always \u89F2 15-13456-1 always \u89F3 1235-34-2 always \u89F4 24-1346-3 -always \u89F5 1456 +always \u89F5 13-12346-3 always \u89F6 1-156-5 always \u89F7 15-236-2 always \u89F8 12-34-5 -always \u89F9 1456 +always \u89F9 15-16-3 always \u89FA 16-2 always \u89FB 14-34-5 always \u89FC 13-236-2 -always \u89FD 1456 +always \u89FD 15-16-3 always \u89FE 2345-5 always \u89FF 15-16-3 always \u8A00 2345-2 @@ -35221,77 +35224,77 @@ always \u8A01 1456 always \u8A02 145-13456-5 always \u8A03 12345-34-5 always \u8A04 245-234-2 -always \u8A05 1456 -always \u8A06 1456 +always \u8A05 245-234-2 +always \u8A06 13-246-5 always \u8A07 1235-12346-3 always \u8A08 13-16-5 -always \u8A09 1456 +always \u8A09 12345-1236-5 always \u8A0A 15-256-5 -always \u8A0B 1456 +always \u8A0B 145-246-5 always \u8A0C 1235-12346-2 -always \u8A0D 1456 +always \u8A0D 12-345-5 always \u8A0E 124-146-4 always \u8A0F 15-1256-3 always \u8A10 13-346-2 always \u8A11 16-2 always \u8A12 1245-136-5 always \u8A13 15-256-5 -always \u8A14 1456 +always \u8A14 1456-2 always \u8A15 24-1236-5 always \u8A16 245-16-5 always \u8A17 124-25-3 always \u8A18 13-16-5 -always \u8A19 1456 -always \u8A1A 1456 +always \u8A19 15-256-5 +always \u8A1A 1456-2 always \u8A1B 2346-2 -always \u8A1C 1456 +always \u8A1C 12345-136-3 always \u8A1D 23456-5 always \u8A1E 246-3 always \u8A1F 15-12346-5 -always \u8A20 1456 -always \u8A21 1456 +always \u8A20 24-136-4 +always \u8A21 1456-2 always \u8A22 15-1456-3 always \u8A23 13-236-2 -always \u8A24 1456 +always \u8A24 15-246-2 always \u8A25 1345-345-5 -always \u8A26 1456 +always \u8A26 12-136-2 always \u8A27 234-2 -always \u8A28 1456 -always \u8A29 1456 +always \u8A28 1-156-4 +always \u8A29 15-235-3 always \u8A2A 12345-1346-4 -always \u8A2B 1456 +always \u8A2B 15-1456-5 always \u8A2C 12-146-3 always \u8A2D 24-2346-5 -always \u8A2E 1456 -always \u8A2F 1456 +always \u8A2E 15-2345-3 +always \u8A2F 24-345-4 always \u8A30 1-123456-5 always \u8A31 15-1256-4 -always \u8A32 1456 -always \u8A33 1456 +always \u8A32 16-5 +always \u8A33 16-5 always \u8A34 15-34-5 -always \u8A35 1456 +always \u8A35 12-156-3 always \u8A36 1235-2346-3 -always \u8A37 1456 -always \u8A38 1456 +always \u8A37 24-136-3 +always \u8A38 1235-2346-2 always \u8A39 15-1256-5 always \u8A3A 1-136-4 always \u8A3B 1-34-5 always \u8A3C 1-1356-5 -always \u8A3D 1456 +always \u8A3D 13-12356-5 always \u8A3E 125-156-3 always \u8A3F 125-156-4 always \u8A40 1-1236-3 always \u8A41 13-34-4 -always \u8A42 1456 -always \u8A43 1456 +always \u8A42 12345-34-5 +always \u8A43 245-45-4 always \u8A44 16-5 always \u8A45 14-13456-5 always \u8A46 145-16-4 -always \u8A47 1456 +always \u8A47 46-5 always \u8A48 14-16-5 -always \u8A49 1456 +always \u8A49 1345-146-2 always \u8A4A 1234-1236-5 -always \u8A4B 1456 +always \u8A4B 1-12356-5 always \u8A4C 13-1236-5 always \u8A4D 16-5 always \u8A4E 13-1256-5 @@ -35299,35 +35302,35 @@ always \u8A4F 146-5 always \u8A50 1-345-5 always \u8A51 16-2 always \u8A52 16-2 -always \u8A53 1456 +always \u8A53 245-1256-4 always \u8A54 1-146-5 always \u8A55 1234-13456-2 always \u8A56 135-16-5 always \u8A57 15-235-4 always \u8A58 245-1256-3 always \u8A59 135-345-2 -always \u8A5A 1456 +always \u8A5A 145-345-2 always \u8A5B 125-34-4 -always \u8A5C 1456 -always \u8A5D 1456 +always \u8A5C 124-146-3 +always \u8A5D 1-34-4 always \u8A5E 245-156-2 -always \u8A5F 1456 +always \u8A5F 1-2346-2 always \u8A60 235-4 always \u8A61 15-1256-4 always \u8A62 15-256-2 always \u8A63 16-5 -always \u8A64 1456 -always \u8A65 1456 +always \u8A64 1235-456-4 +always \u8A65 1235-2346-2 always \u8A66 24-156-5 -always \u8A67 1456 +always \u8A67 12-345-2 always \u8A68 15-246-3 always \u8A69 24-156-3 -always \u8A6A 1456 +always \u8A6A 1235-136-4 always \u8A6B 12-345-5 always \u8A6C 13-12356-5 always \u8A6D 13-1246-4 always \u8A6E 245-45-2 -always \u8A6F 1456 +always \u8A6F 1235-1246-5 always \u8A70 13-346-2 always \u8A71 1235-35-5 always \u8A72 13-2456-3 @@ -35336,15 +35339,15 @@ always \u8A74 1246-3 always \u8A75 24-136-3 always \u8A76 12-12356-2 always \u8A77 124-12346-2 -always \u8A78 1456 +always \u8A78 134-16-2 always \u8A79 1-1236-3 always \u8A7A 134-13456-5 always \u8A7B 2346-5 always \u8A7C 1235-1246-3 -always \u8A7D 1456 -always \u8A7E 1456 +always \u8A7D 2345-2 +always \u8A7E 15-235-3 always \u8A7F 13-35-5 -always \u8A80 1456 +always \u8A80 156-5 always \u8A81 1234-13456-5 always \u8A82 124-246-4 always \u8A83 12-156-4 @@ -35352,54 +35355,54 @@ always \u8A84 14-356-4 always \u8A85 1-34-3 always \u8A86 13-456-3 always \u8A87 123-35-3 -always \u8A88 1456 +always \u8A88 34-2 always \u8A89 1256-5 always \u8A8A 124-1356-2 always \u8A8B 13-16-5 always \u8A8C 1-156-5 always \u8A8D 1245-136-5 -always \u8A8E 1456 +always \u8A8E 15-34-5 always \u8A8F 14-1346-4 -always \u8A90 1456 +always \u8A90 2346-2 always \u8A91 123-456-2 always \u8A92 15-16-3 always \u8A93 24-156-5 -always \u8A94 1456 +always \u8A94 124-13456-4 always \u8A95 145-1236-5 always \u8A96 135-356-5 -always \u8A97 1456 +always \u8A97 12-1236-2 always \u8A98 234-5 always \u8A99 123-1356-3 always \u8A9A 245-246-5 -always \u8A9B 1456 -always \u8A9C 1456 -always \u8A9D 1456 +always \u8A9B 245-1456-3 +always \u8A9C 24-35-5 +always \u8A9D 1236-3 always \u8A9E 1256-4 -always \u8A9F 1456 +always \u8A9F 15-246-5 always \u8AA0 12-1356-2 always \u8AA1 13-346-5 -always \u8AA2 1456 +always \u8AA2 15-2345-5 always \u8AA3 34-3 always \u8AA4 34-5 always \u8AA5 13-146-5 always \u8AA6 15-12346-5 always \u8AA7 1234-34-4 always \u8AA8 1235-1246-4 -always \u8AA9 1456 +always \u8AA9 13-13456-5 always \u8AAA 24-25-3 always \u8AAB 1-136-5 -always \u8AAC 1456 -always \u8AAD 1456 +always \u8AAC 24-25-3 +always \u8AAD 145-34-2 always \u8AAE 1456 -always \u8AAF 1456 +always \u8AAF 12-1346-5 always \u8AB0 24-356-2 -always \u8AB1 1456 +always \u8AB1 13-346-2 always \u8AB2 123-2346-5 -always \u8AB3 1456 -always \u8AB4 1456 -always \u8AB5 1456 +always \u8AB3 245-1256-3 +always \u8AB4 245-12346-2 +always \u8AB5 15-246-2 always \u8AB6 15-1246-5 -always \u8AB7 1456 +always \u8AB7 456-4 always \u8AB8 15-2345-2 always \u8AB9 12345-356-4 always \u8ABA 12-156-3 @@ -35409,7 +35412,7 @@ always \u8ABD 16-5 always \u8ABE 1456-2 always \u8ABF 145-246-5 always \u8AC0 1234-16-4 -always \u8AC1 1456 +always \u8AC1 12-25-5 always \u8AC2 12-1236-4 always \u8AC3 12-136-3 always \u8AC4 1-123456-3 @@ -35418,13 +35421,13 @@ always \u8AC6 245-16-3 always \u8AC7 124-1236-2 always \u8AC8 12-1246-2 always \u8AC9 1246-4 -always \u8ACA 1456 +always \u8ACA 13-1256-2 always \u8ACB 245-13456-4 -always \u8ACC 1456 +always \u8ACC 13-2345-5 always \u8ACD 1-1356-5 -always \u8ACE 1456 +always \u8ACE 125-2346-2 always \u8ACF 125-12356-3 -always \u8AD0 1456 +always \u8AD0 245-2345-3 always \u8AD1 1-25-2 always \u8AD2 14-46-5 always \u8AD3 13-2345-3 @@ -35434,7 +35437,7 @@ always \u8AD6 14-123456-5 always \u8AD7 24-136-4 always \u8AD8 135-246-4 always \u8AD9 1235-2356-5 -always \u8ADA 1456 +always \u8ADA 1234-2345-2 always \u8ADB 1256-2 always \u8ADC 145-346-2 always \u8ADD 15-1256-4 @@ -35443,16 +35446,16 @@ always \u8ADF 24-156-5 always \u8AE0 15-45-3 always \u8AE1 24-156-5 always \u8AE2 1235-123456-5 -always \u8AE3 1456 +always \u8AE3 1235-35-5 always \u8AE4 2346-5 -always \u8AE5 1456 +always \u8AE5 1-12346-5 always \u8AE6 145-16-5 always \u8AE7 15-346-2 always \u8AE8 12345-34-2 -always \u8AE9 1456 -always \u8AEA 1456 +always \u8AE9 1234-34-4 +always \u8AEA 124-13456-2 always \u8AEB 13-2345-5 -always \u8AEC 1456 +always \u8AEC 245-16-4 always \u8AED 1256-5 always \u8AEE 125-156-3 always \u8AEF 12-12456-2 @@ -35465,11 +35468,11 @@ always \u8AF5 1345-1236-2 always \u8AF6 12-136-2 always \u8AF7 12345-1356-5 always \u8AF8 1-34-3 -always \u8AF9 1456 +always \u8AF9 46-2 always \u8AFA 2345-5 always \u8AFB 1235-1356-3 always \u8AFC 15-45-3 -always \u8AFD 1456 +always \u8AFD 13-2346-2 always \u8AFE 1345-25-5 always \u8AFF 245-16-5 always \u8B00 134-12356-2 @@ -35484,7 +35487,7 @@ always \u8B08 135-126-2 always \u8B09 1456 always \u8B0A 1235-456-4 always \u8B0B 1235-25-5 -always \u8B0C 1456 +always \u8B0C 13-2346-3 always \u8B0D 13456-2 always \u8B0E 134-16-2 always \u8B0F 15-12356-4 @@ -35503,9 +35506,9 @@ always \u8B1B 13-46-4 always \u8B1C 45-5 always \u8B1D 15-346-5 always \u8B1E 1235-2346-5 -always \u8B1F 1456 +always \u8B1F 124-146-3 always \u8B20 246-2 -always \u8B21 1456 +always \u8B21 246-2 always \u8B22 135-345-1 always \u8B23 1256-2 always \u8B24 135-246-3 @@ -35513,34 +35516,34 @@ always \u8B25 245-12346-5 always \u8B26 245-13456-4 always \u8B27 14-16-2 always \u8B28 134-126-2 -always \u8B29 1456 +always \u8B29 134-126-5 always \u8B2A 24-1346-3 always \u8B2B 1-2346-2 always \u8B2C 134-234-5 -always \u8B2D 1456 +always \u8B2D 13-2345-4 always \u8B2E 125-2346-2 always \u8B2F 1-34-5 always \u8B30 14-2345-2 always \u8B31 14-12356-2 -always \u8B32 1456 +always \u8B32 245-1236-3 always \u8B33 12356-3 -always \u8B34 1456 +always \u8B34 13-12456-5 always \u8B35 15-16-2 always \u8B36 1-25-2 always \u8B37 146-2 -always \u8B38 1456 +always \u8B38 146-2 always \u8B39 13-1456-4 always \u8B3A 1-2346-2 always \u8B3B 12-156-2 always \u8B3C 1235-34-3 always \u8B3D 13-46-5 always \u8B3E 134-1236-2 -always \u8B3F 1456 +always \u8B3F 12-146-2 always \u8B40 1235-1236-5 always \u8B41 1235-35-2 always \u8B42 12-1236-4 -always \u8B43 1456 -always \u8B44 1456 +always \u8B43 15-1256-3 +always \u8B44 125-1356-3 always \u8B45 15-2346-5 always \u8B46 15-16-3 always \u8B47 1-345-3 @@ -35548,8 +35551,8 @@ always \u8B48 145-1246-5 always \u8B49 1-1356-5 always \u8B4A 1345-146-2 always \u8B4B 14-1236-2 -always \u8B4C 1456 -always \u8B4D 1456 +always \u8B4C 2346-2 +always \u8B4D 13456-5 always \u8B4E 13-236-2 always \u8B4F 13-16-3 always \u8B50 125-123456-4 @@ -35563,73 +35566,73 @@ always \u8B57 1-345-2 always \u8B58 24-156-5 always \u8B59 13-246-3 always \u8B5A 124-1236-2 -always \u8B5B 1456 +always \u8B5B 125-136-5 always \u8B5C 1234-34-4 always \u8B5D 24-1356-2 -always \u8B5E 1456 +always \u8B5E 15-45-3 always \u8B5F 15-146-5 always \u8B60 124-1236-3 -always \u8B61 1456 -always \u8B62 1456 +always \u8B61 145-1346-4 +always \u8B62 15-1246-5 always \u8B63 245-2345-3 -always \u8B64 1456 +always \u8B64 13-16-3 always \u8B65 13-246-5 always \u8B66 13-13456-4 always \u8B67 14-2345-2 always \u8B68 1345-12356-5 -always \u8B69 1456 +always \u8B69 16-3 always \u8B6A 2456-5 always \u8B6B 1-1236-3 always \u8B6C 1234-16-5 always \u8B6D 1235-1246-4 -always \u8B6E 1456 +always \u8B6E 1235-35-5 always \u8B6F 16-5 always \u8B70 16-5 -always \u8B71 1456 -always \u8B72 1456 -always \u8B73 1456 +always \u8B71 24-1236-5 +always \u8B72 1245-1346-5 +always \u8B73 1345-12356-5 always \u8B74 245-2345-4 -always \u8B75 1456 -always \u8B76 1456 +always \u8B75 1-1246-5 +always \u8B76 124-345-5 always \u8B77 1235-34-5 always \u8B78 1-12356-3 always \u8B79 13-146-3 always \u8B7A 346-5 always \u8B7B 13456-3 -always \u8B7C 1456 +always \u8B7C 13-2345-5 always \u8B7D 1256-5 always \u8B7E 13-2345-4 always \u8B7F 1235-1246-5 always \u8B80 145-34-2 -always \u8B81 1456 +always \u8B81 1-2346-2 always \u8B82 15-45-5 -always \u8B83 1456 +always \u8B83 125-1236-5 always \u8B84 14-356-4 always \u8B85 24-136-4 always \u8B86 1246-5 -always \u8B87 1456 +always \u8B87 12-1236-4 always \u8B88 14-16-5 -always \u8B89 1456 +always \u8B89 16-2 always \u8B8A 135-2345-5 always \u8B8B 1-2346-2 always \u8B8C 2345-5 -always \u8B8D 1456 +always \u8B8D 2346-5 always \u8B8E 12-12356-2 -always \u8B8F 1456 -always \u8B90 1456 -always \u8B91 1456 +always \u8B8F 1246-5 +always \u8B90 12-12356-2 +always \u8B91 246-5 always \u8B92 12-1236-2 always \u8B93 1245-1346-5 always \u8B94 1456-4 always \u8B95 14-1236-2 always \u8B96 12-136-5 -always \u8B97 1456 +always \u8B97 1235-25-5 always \u8B98 1-2346-2 always \u8B99 1235-12456-3 always \u8B9A 125-1236-5 -always \u8B9B 1456 +always \u8B9B 16-5 always \u8B9C 145-1346-4 -always \u8B9D 1456 +always \u8B9D 1-1236-3 always \u8B9E 2345-5 always \u8B9F 145-34-2 always \u8BA0 14-234-2 @@ -35644,12 +35647,12 @@ always \u8BA8 124-146-4 always \u8BA9 1245-1346-5 always \u8BAA 24-1236-5 always \u8BAB 245-16-5 -always \u8BAC 1456 +always \u8BAC 124-25-3 always \u8BAD 15-256-5 always \u8BAE 16-5 always \u8BAF 15-256-5 always \u8BB0 13-16-5 -always \u8BB1 1456 +always \u8BB1 1245-136-5 always \u8BB2 13-46-4 always \u8BB3 1235-1246-5 always \u8BB4 12356-3 @@ -35659,7 +35662,7 @@ always \u8BB7 1345-345-5 always \u8BB8 15-1256-4 always \u8BB9 2346-2 always \u8BBA 14-123456-5 -always \u8BBB 1456 +always \u8BBB 15-235-3 always \u8BBC 15-12346-5 always \u8BBD 1235-35-5 always \u8BBE 24-2346-5 @@ -35671,7 +35674,7 @@ always \u8BC3 1235-2346-3 always \u8BC4 1234-13456-2 always \u8BC5 125-34-4 always \u8BC6 24-156-5 -always \u8BC7 1456 +always \u8BC7 15-235-5 always \u8BC8 1-345-5 always \u8BC9 15-34-5 always \u8BCA 1-136-4 @@ -35680,7 +35683,7 @@ always \u8BCC 125-12356-3 always \u8BCD 245-156-2 always \u8BCE 1-146-5 always \u8BCF 245-1256-3 -always \u8BD0 1456 +always \u8BD0 135-16-5 always \u8BD1 16-5 always \u8BD2 16-2 always \u8BD3 13-456-3 @@ -35706,7 +35709,7 @@ always \u8BE6 15-46-2 always \u8BE7 12-345-5 always \u8BE8 1235-123456-5 always \u8BE9 15-1256-4 -always \u8BEA 1456 +always \u8BEA 1-12356-3 always \u8BEB 13-346-5 always \u8BEC 34-3 always \u8BED 1256-4 @@ -35737,7 +35740,7 @@ always \u8C05 14-46-5 always \u8C06 1-123456-3 always \u8C07 15-1246-5 always \u8C08 124-1236-2 -always \u8C09 1456 +always \u8C09 24-136-4 always \u8C0A 16-2 always \u8C0B 134-12356-2 always \u8C0C 12-136-2 @@ -35758,7 +35761,7 @@ always \u8C1A 2345-5 always \u8C1B 145-16-5 always \u8C1C 134-16-2 always \u8C1D 1234-2345-2 -always \u8C1E 1456 +always \u8C1E 15-1256-4 always \u8C1F 134-34-2 always \u8C20 145-1346-4 always \u8C21 15-34-5 @@ -35784,19 +35787,19 @@ always \u8C34 245-2345-4 always \u8C35 1-1236-3 always \u8C36 12-136-5 always \u8C37 13-34-4 -always \u8C38 1456 +always \u8C38 245-2345-3 always \u8C39 1235-12346-2 -always \u8C3A 1456 +always \u8C3A 15-23456-3 always \u8C3B 13-236-2 always \u8C3C 1235-12346-2 always \u8C3D 1235-1236-3 always \u8C3E 1235-12346-3 always \u8C3F 15-16-3 -always \u8C40 1456 +always \u8C40 15-16-3 always \u8C41 1235-25-5 always \u8C42 14-246-2 always \u8C43 1235-1236-4 -always \u8C44 1456 +always \u8C44 145-34-2 always \u8C45 14-12346-2 always \u8C46 145-12356-5 always \u8C47 13-46-3 @@ -35809,42 +35812,42 @@ always \u8C4D 135-16-3 always \u8C4E 24-34-5 always \u8C4F 15-2345-5 always \u8C50 12345-1356-3 -always \u8C51 1456 -always \u8C52 1456 -always \u8C53 1456 +always \u8C51 1-156-5 +always \u8C52 1-156-5 +always \u8C53 2345-5 always \u8C54 2345-5 always \u8C55 24-156-4 always \u8C56 12-34-5 always \u8C57 1235-1246-3 -always \u8C58 1456 -always \u8C59 1456 +always \u8C58 124-123456-2 +always \u8C59 16-5 always \u8C5A 124-123456-2 -always \u8C5B 1456 +always \u8C5B 16-5 always \u8C5C 13-2345-3 always \u8C5D 135-345-3 -always \u8C5E 1456 +always \u8C5E 1235-12356-5 always \u8C5F 2346-5 -always \u8C60 1456 +always \u8C60 245-34-2 always \u8C61 15-46-5 always \u8C62 1235-12456-5 -always \u8C63 1456 +always \u8C63 13-2345-3 always \u8C64 123-136-4 always \u8C65 13-2456-3 always \u8C66 245-1256-2 -always \u8C67 1456 +always \u8C67 12345-34-3 always \u8C68 15-16-4 always \u8C69 135-1456-3 always \u8C6A 1235-146-2 always \u8C6B 1256-5 always \u8C6C 1-34-3 always \u8C6D 13-23456-3 -always \u8C6E 1456 +always \u8C6E 12345-136-2 always \u8C6F 15-16-3 always \u8C70 1235-34-5 always \u8C71 123456-3 always \u8C72 1235-12456-2 always \u8C73 135-1456-3 -always \u8C74 1456 +always \u8C74 145-16-2 always \u8C75 125-12346-3 always \u8C76 12345-136-2 always \u8C77 15-16-5 @@ -35852,25 +35855,25 @@ always \u8C78 1-156-5 always \u8C79 135-146-5 always \u8C7A 12-2456-2 always \u8C7B 1235-1236-5 -always \u8C7C 1456 +always \u8C7C 1234-16-2 always \u8C7D 1345-345-5 -always \u8C7E 1456 -always \u8C7F 1456 +always \u8C7E 1234-16-3 +always \u8C7F 13-12356-4 always \u8C80 1345-345-5 always \u8C81 234-5 always \u8C82 145-246-3 -always \u8C83 1456 +always \u8C83 134-126-5 always \u8C84 15-156-5 always \u8C85 15-234-3 always \u8C86 1235-12456-2 -always \u8C87 1456 -always \u8C88 1456 +always \u8C87 123-123456-3 +always \u8C88 1235-2346-2 always \u8C89 1235-2346-2 always \u8C8A 134-126-5 -always \u8C8B 1456 +always \u8C8B 1235-1236-5 always \u8C8C 134-146-5 always \u8C8D 14-16-2 -always \u8C8E 1456 +always \u8C8E 1345-16-2 always \u8C8F 135-16-4 always \u8C90 1256-4 always \u8C91 13-23456-3 @@ -35878,34 +35881,34 @@ always \u8C92 124-12456-3 always \u8C93 134-146-3 always \u8C94 1234-16-2 always \u8C95 15-16-3 -always \u8C96 1456 +always \u8C96 2346-5 always \u8C97 13-1256-5 always \u8C98 134-126-5 always \u8C99 12-34-3 always \u8C9A 124-1236-2 -always \u8C9B 1456 +always \u8C9B 1235-12456-3 always \u8C9C 13-236-2 always \u8C9D 135-356-5 always \u8C9E 1-136-3 -always \u8C9F 1456 +always \u8C9F 45-2 always \u8CA0 12345-34-5 always \u8CA1 245-2456-2 always \u8CA2 13-12346-5 always \u8CA3 124-2346-5 always \u8CA4 16-5 always \u8CA5 1235-1346-2 -always \u8CA6 1456 +always \u8CA6 12456-5 always \u8CA7 1234-1456-2 always \u8CA8 1235-25-5 always \u8CA9 12345-1236-5 always \u8CAA 124-1236-3 always \u8CAB 13-12456-5 always \u8CAC 125-2346-2 -always \u8CAD 1456 -always \u8CAE 1456 +always \u8CAD 1-156-2 +always \u8CAE 156-5 always \u8CAF 1-34-4 always \u8CB0 24-156-5 -always \u8CB1 1456 +always \u8CB1 135-16-5 always \u8CB2 125-156-3 always \u8CB3 156-5 always \u8CB4 13-1246-5 @@ -35926,28 +35929,28 @@ always \u8CC2 14-34-5 always \u8CC3 1245-136-5 always \u8CC4 1235-1246-5 always \u8CC5 13-2456-3 -always \u8CC6 1456 +always \u8CC6 1234-2345-2 always \u8CC7 125-156-3 always \u8CC8 13-23456-4 -always \u8CC9 1456 +always \u8CC9 15-1256-5 always \u8CCA 125-356-2 -always \u8CCB 1456 +always \u8CCB 13-246-4 always \u8CCC 13-2456-3 -always \u8CCD 1456 -always \u8CCE 1456 +always \u8CCD 125-1346-3 +always \u8CCE 13-2345-5 always \u8CCF 13456-5 -always \u8CD0 1456 +always \u8CD0 15-256-5 always \u8CD1 1-136-5 always \u8CD2 24-2346-3 always \u8CD3 135-1456-3 -always \u8CD4 1456 +always \u8CD4 135-1456-3 always \u8CD5 245-234-2 -always \u8CD6 1456 +always \u8CD6 24-2346-3 always \u8CD7 12-12456-5 -always \u8CD8 1456 +always \u8CD8 125-1346-3 always \u8CD9 1-12356-3 always \u8CDA 14-2456-5 -always \u8CDB 1456 +always \u8CDB 125-1236-5 always \u8CDC 15-156-5 always \u8CDD 12-136-3 always \u8CDE 24-1346-4 @@ -35961,21 +35964,21 @@ always \u8CE5 15-1246-5 always \u8CE6 12345-34-5 always \u8CE7 124-1236-5 always \u8CE8 245-12346-2 -always \u8CE9 1456 +always \u8CE9 245-12346-2 always \u8CEA 1-156-2 -always \u8CEB 1456 +always \u8CEB 13-16-3 always \u8CEC 1-1346-5 always \u8CED 145-34-4 always \u8CEE 15-1456-5 -always \u8CEF 1456 +always \u8CEF 15-235-3 always \u8CF0 24-123456-4 always \u8CF1 256-4 -always \u8CF2 1456 +always \u8CF2 135-146-4 always \u8CF3 125-2456-3 always \u8CF4 14-2456-5 always \u8CF5 12345-1356-5 -always \u8CF6 1456 -always \u8CF7 1456 +always \u8CF6 245-1346-5 +always \u8CF7 13-16-3 always \u8CF8 24-1356-5 always \u8CF9 2456-5 always \u8CFA 1-12456-5 @@ -35983,11 +35986,11 @@ always \u8CFB 12345-34-5 always \u8CFC 13-12356-5 always \u8CFD 15-2456-5 always \u8CFE 125-2346-2 -always \u8CFF 1456 +always \u8CFF 14-246-2 always \u8D00 1246-5 -always \u8D01 1456 +always \u8D01 135-2456-5 always \u8D02 12-136-4 -always \u8D03 1456 +always \u8D03 1-12456-5 always \u8D04 1-156-5 always \u8D05 1-1246-5 always \u8D06 135-246-3 @@ -35995,14 +35998,14 @@ always \u8D07 256-3 always \u8D08 125-1356-5 always \u8D09 124-1236-4 always \u8D0A 125-1236-5 -always \u8D0B 1456 +always \u8D0B 2345-5 always \u8D0C 1456 always \u8D0D 24-1236-5 -always \u8D0E 1456 +always \u8D0E 12456-5 always \u8D0F 13456-2 always \u8D10 13-1456-5 -always \u8D11 1456 -always \u8D12 1456 +always \u8D11 13-1236-4 +always \u8D12 15-2345-2 always \u8D13 125-1346-3 always \u8D14 135-16-5 always \u8D15 145-34-2 @@ -36010,13 +36013,13 @@ always \u8D16 24-34-2 always \u8D17 2345-5 always \u8D18 1456 always \u8D19 15-45-5 -always \u8D1A 1456 +always \u8D1A 14-12346-5 always \u8D1B 13-1236-5 -always \u8D1C 1456 +always \u8D1C 125-1346-3 always \u8D1D 135-356-5 always \u8D1E 1-136-3 always \u8D1F 12345-34-5 -always \u8D20 1456 +always \u8D20 45-2 always \u8D21 13-12346-5 always \u8D22 245-2456-2 always \u8D23 125-2346-2 @@ -36061,17 +36064,17 @@ always \u8D49 14-2456-5 always \u8D4A 24-2346-3 always \u8D4B 12345-34-5 always \u8D4C 145-34-4 -always \u8D4D 1456 +always \u8D4D 13-16-3 always \u8D4E 24-34-2 always \u8D4F 24-1346-4 always \u8D50 245-156-5 -always \u8D51 1456 -always \u8D52 1456 +always \u8D51 135-16-5 +always \u8D52 1-12356-3 always \u8D53 13-1356-3 always \u8D54 1234-356-2 always \u8D55 124-1236-5 always \u8D56 14-2456-5 -always \u8D57 1456 +always \u8D57 12345-1356-5 always \u8D58 1-1246-5 always \u8D59 12345-34-5 always \u8D5A 1-12456-5 @@ -36079,25 +36082,25 @@ always \u8D5B 15-2456-5 always \u8D5C 125-2346-2 always \u8D5D 2345-5 always \u8D5E 125-1236-5 -always \u8D5F 1456 +always \u8D5F 256-3 always \u8D60 125-1356-5 always \u8D61 24-1236-5 always \u8D62 13456-2 always \u8D63 13-1236-5 always \u8D64 12-156-5 -always \u8D65 1456 +always \u8D65 15-16-5 always \u8D66 24-2346-5 always \u8D67 1345-1236-4 always \u8D68 124-12346-2 always \u8D69 15-16-5 -always \u8D6A 1456 +always \u8D6A 12-1356-3 always \u8D6B 1235-2346-5 always \u8D6C 12-1356-3 always \u8D6D 1-2346-4 always \u8D6E 15-23456-2 always \u8D6F 124-1346-2 always \u8D70 125-12356-4 -always \u8D71 1456 +always \u8D71 125-12356-4 always \u8D72 14-16-5 always \u8D73 13-234-3 always \u8D74 12345-34-5 @@ -36106,21 +36109,21 @@ always \u8D76 13-1236-4 always \u8D77 245-16-4 always \u8D78 24-1236-5 always \u8D79 245-235-2 -always \u8D7A 1456 +always \u8D7A 245-1456-2 always \u8D7B 15-2345-3 -always \u8D7C 1456 +always \u8D7C 245-156-3 always \u8D7D 13-236-2 -always \u8D7E 1456 -always \u8D7F 1456 +always \u8D7E 245-1456-4 +always \u8D7F 12-156-2 always \u8D80 245-156-3 always \u8D81 12-136-5 -always \u8D82 1456 -always \u8D83 1456 +always \u8D82 12-136-5 +always \u8D83 145-346-2 always \u8D84 13-1256-3 always \u8D85 12-146-3 -always \u8D86 1456 -always \u8D87 1456 -always \u8D88 1456 +always \u8D86 145-16-3 +always \u8D87 15-2346-5 +always \u8D88 1-1236-3 always \u8D89 1-34-2 always \u8D8A 236-5 always \u8D8B 245-1256-3 @@ -36135,25 +36138,25 @@ always \u8D93 145-25-4 always \u8D94 14-346-5 always \u8D95 13-1236-4 always \u8D96 15-25-3 -always \u8D97 1456 -always \u8D98 1456 +always \u8D97 245-34-5 +always \u8D98 15-16-2 always \u8D99 1-146-5 -always \u8D9A 1456 +always \u8D9A 15-34-5 always \u8D9B 1456-4 always \u8D9C 13-1256-2 -always \u8D9D 1456 -always \u8D9E 1456 +always \u8D9D 13-2345-5 +always \u8D9E 245-236-5 always \u8D9F 124-1346-5 always \u8DA0 12-25-5 always \u8DA1 245-1246-4 -always \u8DA2 1456 +always \u8DA2 14-34-5 always \u8DA3 245-1256-5 -always \u8DA4 1456 +always \u8DA4 145-1346-5 always \u8DA5 245-234-3 -always \u8DA6 1456 +always \u8DA6 125-156-3 always \u8DA7 124-16-2 always \u8DA8 245-1256-3 -always \u8DA9 1456 +always \u8DA9 12-156-5 always \u8DAA 1235-456-2 always \u8DAB 245-246-2 always \u8DAC 245-246-3 @@ -36171,12 +36174,12 @@ always \u8DB7 135-345-1 always \u8DB8 145-123456-4 always \u8DB9 13-236-2 always \u8DBA 12345-34-3 -always \u8DBB 1456 +always \u8DBB 12-136-4 always \u8DBC 13-2345-4 -always \u8DBD 1456 +always \u8DBD 12345-1346-5 always \u8DBE 1-156-4 always \u8DBF 15-345-5 -always \u8DC0 1456 +always \u8DC0 236-5 always \u8DC1 1234-345-2 always \u8DC2 245-16-2 always \u8DC3 236-5 @@ -36185,8 +36188,8 @@ always \u8DC5 124-25-5 always \u8DC6 124-2456-2 always \u8DC7 12-156-5 always \u8DC8 1345-2345-4 -always \u8DC9 1456 -always \u8DCA 1456 +always \u8DC9 14-13456-2 +always \u8DCA 134-356-5 always \u8DCB 135-345-2 always \u8DCC 145-346-2 always \u8DCD 123-34-3 @@ -36194,9 +36197,9 @@ always \u8DCE 124-25-2 always \u8DCF 13-23456-3 always \u8DD0 245-156-4 always \u8DD1 1234-146-4 -always \u8DD2 1456 +always \u8DD2 245-23456-4 always \u8DD3 1-34-5 -always \u8DD4 1456 +always \u8DD4 13-1256-3 always \u8DD5 124-346-3 always \u8DD6 1-156-2 always \u8DD7 12345-34-3 @@ -36213,7 +36216,7 @@ always \u8DE1 13-16-3 always \u8DE2 12-156-2 always \u8DE3 15-2345-4 always \u8DE4 13-246-3 -always \u8DE5 1456 +always \u8DE5 145-25-5 always \u8DE6 1-34-3 always \u8DE7 245-45-2 always \u8DE8 123-35-5 @@ -36221,7 +36224,7 @@ always \u8DE9 1-2356-4 always \u8DEA 13-1246-5 always \u8DEB 245-235-2 always \u8DEC 123-1246-4 -always \u8DED 1456 +always \u8DED 15-46-2 always \u8DEE 12-156-5 always \u8DEF 14-34-5 always \u8DF0 135-1356-5 @@ -36230,7 +36233,7 @@ always \u8DF2 13-346-2 always \u8DF3 124-246-5 always \u8DF4 245-2456-4 always \u8DF5 13-2345-5 -always \u8DF6 1456 +always \u8DF6 124-345-5 always \u8DF7 245-246-3 always \u8DF8 135-16-5 always \u8DF9 15-2345-3 @@ -36241,17 +36244,17 @@ always \u8DFD 13-16-5 always \u8DFE 24-34-2 always \u8DFF 124-34-2 always \u8E00 12-34-5 -always \u8E01 1456 +always \u8E01 13-13456-5 always \u8E02 1345-346-5 always \u8E03 15-246-3 always \u8E04 135-126-2 always \u8E05 12-156-5 always \u8E06 245-256-3 always \u8E07 134-12356-4 -always \u8E08 1456 +always \u8E08 24-34-3 always \u8E09 14-46-2 always \u8E0A 235-4 -always \u8E0B 1456 +always \u8E0B 13-246-4 always \u8E0C 12-12356-2 always \u8E0D 15-246-5 always \u8E0E 1456 @@ -36280,26 +36283,26 @@ always \u8E24 125-34-2 always \u8E25 245-346-5 always \u8E26 245-16-3 always \u8E27 245-34-5 -always \u8E28 1456 +always \u8E28 125-12346-3 always \u8E29 245-2456-4 always \u8E2A 125-12346-3 always \u8E2B 1234-1356-5 always \u8E2C 1-156-5 -always \u8E2D 1456 +always \u8E2D 1-1356-3 always \u8E2E 135-345-1 always \u8E2F 1-156-2 always \u8E30 1256-2 always \u8E31 145-25-5 -always \u8E32 1456 +always \u8E32 145-123456-5 always \u8E33 12-123456-4 always \u8E34 235-4 always \u8E35 1-12346-4 always \u8E36 145-16-5 -always \u8E37 1456 +always \u8E37 1-2346-4 always \u8E38 12-136-4 always \u8E39 12-2356-5 -always \u8E3A 1456 -always \u8E3B 1456 +always \u8E3A 13-2345-5 +always \u8E3B 13-35-3 always \u8E3C 124-1346-2 always \u8E3D 13-1256-4 always \u8E3E 135-16-5 @@ -36307,10 +36310,10 @@ always \u8E3F 125-34-2 always \u8E40 145-346-2 always \u8E41 1234-2345-2 always \u8E42 1245-12356-2 -always \u8E43 1456 +always \u8E43 1345-25-5 always \u8E44 124-16-2 always \u8E45 12-345-4 -always \u8E46 1456 +always \u8E46 124-1246-4 always \u8E47 13-2345-4 always \u8E48 145-146-5 always \u8E49 245-25-3 @@ -36319,7 +36322,7 @@ always \u8E4B 124-345-5 always \u8E4C 245-46-3 always \u8E4D 1-1236-4 always \u8E4E 145-2345-3 -always \u8E4F 1456 +always \u8E4F 124-16-2 always \u8E50 13-16-2 always \u8E51 1345-346-5 always \u8E52 134-1236-2 @@ -36328,7 +36331,7 @@ always \u8E54 125-1236-5 always \u8E55 135-16-5 always \u8E56 12-12346-3 always \u8E57 14-34-5 -always \u8E58 1456 +always \u8E58 14-246-2 always \u8E59 245-34-5 always \u8E5A 124-1346-3 always \u8E5B 145-2456-5 @@ -36344,34 +36347,34 @@ always \u8E64 125-12346-3 always \u8E65 14-2345-2 always \u8E66 135-1356-5 always \u8E67 125-146-3 -always \u8E68 1456 +always \u8E68 1345-2345-4 always \u8E69 135-346-2 always \u8E6A 124-1246-2 -always \u8E6B 1456 +always \u8E6B 13-1256-2 always \u8E6C 145-1356-5 always \u8E6D 245-1356-5 -always \u8E6E 1456 +always \u8E6E 15-2345-3 always \u8E6F 12345-1236-2 always \u8E70 12-34-2 -always \u8E71 1456 +always \u8E71 1-12346-3 always \u8E72 145-123456-3 always \u8E73 135-126-3 always \u8E74 245-34-5 -always \u8E75 1456 +always \u8E75 125-34-2 always \u8E76 13-236-2 -always \u8E77 1456 +always \u8E77 13-236-2 always \u8E78 14-1456-5 -always \u8E79 1456 +always \u8E79 124-345-5 always \u8E7A 245-246-3 always \u8E7B 245-246-2 always \u8E7C 1234-34-2 -always \u8E7D 1456 -always \u8E7E 1456 +always \u8E7D 14-246-3 +always \u8E7E 145-123456-3 always \u8E7F 245-12456-3 -always \u8E80 1456 +always \u8E80 123-456-5 always \u8E81 125-146-5 always \u8E82 124-345-5 -always \u8E83 1456 +always \u8E83 135-16-5 always \u8E84 135-16-5 always \u8E85 1-25-2 always \u8E86 13-1256-5 @@ -36393,72 +36396,72 @@ always \u8E95 12-34-2 always \u8E96 145-12456-5 always \u8E97 1246-5 always \u8E98 14-12346-2 -always \u8E99 1456 +always \u8E99 14-1456-5 always \u8E9A 15-2345-3 -always \u8E9B 1456 +always \u8E9B 1246-5 always \u8E9C 125-12456-3 always \u8E9D 14-1236-2 always \u8E9E 15-346-5 always \u8E9F 1245-1346-2 always \u8EA0 15-345-4 always \u8EA1 1345-346-5 -always \u8EA2 1456 +always \u8EA2 124-345-5 always \u8EA3 245-1256-2 always \u8EA4 13-346-5 always \u8EA5 245-12456-3 always \u8EA6 125-12456-3 -always \u8EA7 1456 +always \u8EA7 15-16-4 always \u8EA8 123-1246-2 always \u8EA9 13-236-2 always \u8EAA 14-1456-5 always \u8EAB 24-136-3 always \u8EAC 13-12346-3 -always \u8EAD 1456 +always \u8EAD 145-1236-3 always \u8EAE 1456 always \u8EAF 245-1256-3 -always \u8EB0 1456 -always \u8EB1 1456 +always \u8EB0 124-16-4 +always \u8EB1 145-25-4 always \u8EB2 145-25-4 -always \u8EB3 1456 -always \u8EB4 1456 +always \u8EB3 13-12346-3 +always \u8EB4 14-1346-2 always \u8EB5 1456 -always \u8EB6 1456 -always \u8EB7 1456 -always \u8EB8 1456 -always \u8EB9 1456 +always \u8EB6 14-25-4 +always \u8EB7 2456-4 +always \u8EB8 13-16-3 +always \u8EB9 13-1256-2 always \u8EBA 124-1346-4 always \u8EBB 1456 always \u8EBC 1456 always \u8EBD 2345-4 always \u8EBE 1456 -always \u8EBF 1456 +always \u8EBF 123-1346-3 always \u8EC0 245-1256-3 -always \u8EC1 1456 +always \u8EC1 14-12356-2 always \u8EC2 14-146-5 -always \u8EC3 1456 -always \u8EC4 1456 +always \u8EC3 124-25-4 +always \u8EC4 1-156-2 always \u8EC5 1456 -always \u8EC6 1456 -always \u8EC7 1456 +always \u8EC6 124-16-4 +always \u8EC7 145-146-5 always \u8EC8 1456 always \u8EC9 1256-5 always \u8ECA 12-2346-3 always \u8ECB 23456-5 always \u8ECC 13-1246-4 always \u8ECD 13-256-3 -always \u8ECE 1456 +always \u8ECE 1246-5 always \u8ECF 236-5 -always \u8ED0 1456 +always \u8ED0 15-1456-5 always \u8ED1 145-16-5 always \u8ED2 15-45-3 always \u8ED3 12345-1236-5 always \u8ED4 1245-136-5 -always \u8ED5 1456 -always \u8ED6 1456 +always \u8ED5 24-1236-3 +always \u8ED6 245-46-2 always \u8ED7 24-34-3 always \u8ED8 124-123456-2 -always \u8ED9 1456 -always \u8EDA 1456 +always \u8ED9 12-136-2 +always \u8EDA 145-2456-5 always \u8EDB 2346-5 always \u8EDC 1345-345-5 always \u8EDD 245-16-2 @@ -36466,24 +36469,24 @@ always \u8EDE 134-146-2 always \u8EDF 1245-12456-4 always \u8EE0 1245-136-5 always \u8EE1 245-1456-2 -always \u8EE2 1456 -always \u8EE3 1456 -always \u8EE4 1456 +always \u8EE2 1-12456-4 +always \u8EE3 1235-12346-3 +always \u8EE4 1235-34-3 always \u8EE5 245-1256-2 always \u8EE6 1235-456-5 always \u8EE7 145-16-4 always \u8EE8 14-13456-2 always \u8EE9 145-2456-5 -always \u8EEA 1456 +always \u8EEA 146-3 always \u8EEB 1-136-4 always \u8EEC 12345-1236-5 -always \u8EED 1456 +always \u8EED 123-456-3 always \u8EEE 1346-4 always \u8EEF 1234-1356-3 -always \u8EF0 1456 +always \u8EF0 135-356-5 always \u8EF1 13-34-3 -always \u8EF2 1456 -always \u8EF3 1456 +always \u8EF2 123-34-3 +always \u8EF3 1234-146-2 always \u8EF4 1-34-5 always \u8EF5 1245-12346-4 always \u8EF6 2346-5 @@ -36493,14 +36496,14 @@ always \u8EF9 1-156-4 always \u8EFA 246-2 always \u8EFB 123-2346-3 always \u8EFC 16-5 -always \u8EFD 1456 +always \u8EFD 245-13456-3 always \u8EFE 24-156-5 always \u8EFF 1234-13456-2 always \u8F00 156-2 always \u8F01 245-235-2 always \u8F02 13-1256-2 always \u8F03 13-246-5 -always \u8F04 1456 +always \u8F04 13-456-3 always \u8F05 14-34-5 always \u8F06 123-2456-4 always \u8F07 245-45-2 @@ -36508,10 +36511,10 @@ always \u8F08 1-12356-3 always \u8F09 125-2456-5 always \u8F0A 1-156-5 always \u8F0B 135-345-1 -always \u8F0C 1456 +always \u8F0C 14-46-5 always \u8F0D 1256-5 always \u8F0E 24-146-3 -always \u8F0F 1456 +always \u8F0F 234-2 always \u8F10 12456-5 always \u8F11 256-4 always \u8F12 1-2346-2 @@ -36521,7 +36524,7 @@ always \u8F15 245-13456-3 always \u8F16 1-12356-3 always \u8F17 1345-16-2 always \u8F18 14-13456-2 -always \u8F19 1456 +always \u8F19 1-2346-2 always \u8F1A 1-1236-5 always \u8F1B 14-46-5 always \u8F1C 125-156-3 @@ -36529,23 +36532,23 @@ always \u8F1D 1235-1246-3 always \u8F1E 456-4 always \u8F1F 12-25-5 always \u8F20 13-25-4 -always \u8F21 1456 -always \u8F22 1456 +always \u8F21 123-1236-4 +always \u8F22 16-4 always \u8F23 1234-1356-2 always \u8F24 245-2345-5 always \u8F25 13-123456-4 always \u8F26 1345-2345-4 -always \u8F27 1456 -always \u8F28 1456 +always \u8F27 1234-2345-2 +always \u8F28 13-12456-4 always \u8F29 135-356-5 always \u8F2A 14-123456-2 -always \u8F2B 1456 +always \u8F2B 1234-2456-2 always \u8F2C 14-46-2 -always \u8F2D 1456 +always \u8F2D 1245-12456-4 always \u8F2E 1245-12356-2 always \u8F2F 13-16-2 -always \u8F30 1456 -always \u8F31 1456 +always \u8F30 46-2 +always \u8F31 15-2345-2 always \u8F32 24-12456-5 always \u8F33 245-12356-5 always \u8F34 12-123456-3 @@ -36554,14 +36557,14 @@ always \u8F36 234-2 always \u8F37 1235-12346-3 always \u8F38 24-34-3 always \u8F39 12345-34-5 -always \u8F3A 1456 +always \u8F3A 125-156-3 always \u8F3B 12345-34-2 -always \u8F3C 1456 -always \u8F3D 1456 +always \u8F3C 123456-3 +always \u8F3D 135-136-5 always \u8F3E 1-1236-4 always \u8F3F 1256-2 always \u8F40 123456-3 -always \u8F41 1456 +always \u8F41 124-146-3 always \u8F42 13-34-4 always \u8F43 1-136-3 always \u8F44 15-23456-2 @@ -36570,7 +36573,7 @@ always \u8F46 14-34-5 always \u8F47 13-246-3 always \u8F48 12-146-2 always \u8F49 1-12456-4 -always \u8F4A 1456 +always \u8F4A 1246-5 always \u8F4B 1235-123456-3 always \u8F4C 1456 always \u8F4D 12-2346-5 @@ -36588,7 +36591,7 @@ always \u8F58 1235-12456-2 always \u8F59 16-4 always \u8F5A 13-16-2 always \u8F5B 145-1246-5 -always \u8F5C 1456 +always \u8F5C 156-2 always \u8F5D 1256-2 always \u8F5E 15-2345-5 always \u8F5F 1235-12346-3 @@ -36597,25 +36600,25 @@ always \u8F61 1234-356-5 always \u8F62 14-16-5 always \u8F63 14-16-5 always \u8F64 14-34-2 -always \u8F65 1456 +always \u8F65 14-1456-5 always \u8F66 12-2346-3 always \u8F67 23456-5 always \u8F68 13-1246-4 always \u8F69 15-45-3 -always \u8F6A 1456 +always \u8F6A 145-16-5 always \u8F6B 1245-136-5 always \u8F6C 1-12456-4 always \u8F6D 2346-5 always \u8F6E 14-123456-2 always \u8F6F 1245-12456-4 always \u8F70 1235-12346-3 -always \u8F71 1456 +always \u8F71 123-34-3 always \u8F72 123-2346-3 always \u8F73 14-34-2 always \u8F74 1-12356-2 always \u8F75 1-156-4 always \u8F76 16-5 -always \u8F77 1456 +always \u8F77 1235-34-3 always \u8F78 1-136-4 always \u8F79 14-16-5 always \u8F7A 246-2 @@ -36624,7 +36627,7 @@ always \u8F7C 24-156-5 always \u8F7D 125-2456-5 always \u8F7E 1-156-5 always \u8F7F 13-246-5 -always \u8F80 1456 +always \u8F80 1-12356-3 always \u8F81 245-45-2 always \u8F82 14-34-5 always \u8F83 13-246-5 @@ -36636,13 +36639,13 @@ always \u8F88 135-356-5 always \u8F89 1235-1246-3 always \u8F8A 13-123456-4 always \u8F8B 456-4 -always \u8F8C 1456 +always \u8F8C 14-46-2 always \u8F8D 12-25-5 always \u8F8E 125-156-3 always \u8F8F 245-12356-5 always \u8F90 12345-34-2 always \u8F91 13-16-2 -always \u8F92 1456 +always \u8F92 123456-3 always \u8F93 24-34-3 always \u8F94 1234-356-5 always \u8F95 45-2 @@ -36653,57 +36656,57 @@ always \u8F99 12-2346-5 always \u8F9A 14-1456-2 always \u8F9B 15-1456-3 always \u8F9C 13-34-3 -always \u8F9D 1456 +always \u8F9D 245-156-2 always \u8F9E 245-156-2 always \u8F9F 135-16-5 -always \u8FA0 1456 -always \u8FA1 1456 -always \u8FA2 1456 +always \u8FA0 125-1246-5 +always \u8FA1 135-2345-5 +always \u8FA2 14-345-5 always \u8FA3 14-345-5 -always \u8FA4 1456 -always \u8FA5 1456 +always \u8FA4 245-156-2 +always \u8FA5 15-236-3 always \u8FA6 135-1236-5 -always \u8FA7 1456 +always \u8FA7 135-2345-5 always \u8FA8 135-2345-5 always \u8FA9 135-2345-5 always \u8FAA 1456 always \u8FAB 135-2345-5 -always \u8FAC 1456 +always \u8FAC 135-1236-3 always \u8FAD 245-156-2 always \u8FAE 135-2345-5 always \u8FAF 135-2345-5 always \u8FB0 12-136-2 always \u8FB1 1245-34-5 always \u8FB2 1345-12346-2 -always \u8FB3 1456 +always \u8FB3 1345-12346-2 always \u8FB4 1-136-4 always \u8FB5 12-25-5 -always \u8FB6 1456 +always \u8FB6 12-25-5 always \u8FB7 1456 -always \u8FB8 1456 +always \u8FB8 1245-1356-2 always \u8FB9 135-2345-3 -always \u8FBA 1456 +always \u8FBA 135-2345-3 always \u8FBB 1456 always \u8FBC 1456 always \u8FBD 14-246-2 always \u8FBE 145-345-2 always \u8FBF 12-1236-3 -always \u8FC0 1456 +always \u8FC0 13-1236-3 always \u8FC1 245-2345-3 always \u8FC2 1256-3 -always \u8FC3 1456 +always \u8FC3 1256-3 always \u8FC4 245-16-5 always \u8FC5 15-256-5 always \u8FC6 16-4 always \u8FC7 13-25-5 always \u8FC8 134-2456-5 always \u8FC9 24-156-5 -always \u8FCA 1456 +always \u8FCA 125-345-3 always \u8FCB 456-5 always \u8FCC 1456 always \u8FCD 1-123456-3 always \u8FCE 13456-2 -always \u8FCF 1456 +always \u8FCF 124-16-5 always \u8FD0 256-5 always \u8FD1 13-1456-5 always \u8FD2 1235-1346-2 @@ -36727,17 +36730,17 @@ always \u8FE3 12-156-5 always \u8FE4 16-2 always \u8FE5 13-235-4 always \u8FE6 13-23456-3 -always \u8FE7 1456 +always \u8FE7 12-136-2 always \u8FE8 145-2456-5 always \u8FE9 156-4 always \u8FEA 145-16-2 always \u8FEB 1234-126-5 -always \u8FEC 1456 +always \u8FEC 456-4 always \u8FED 145-346-2 always \u8FEE 125-2346-2 -always \u8FEF 1456 +always \u8FEF 124-146-2 always \u8FF0 24-34-5 -always \u8FF1 1456 +always \u8FF1 124-25-2 always \u8FF2 1456 always \u8FF3 13-13456-5 always \u8FF4 1235-1246-2 @@ -36759,24 +36762,24 @@ always \u9003 124-146-2 always \u9004 1234-1346-2 always \u9005 13-12356-5 always \u9006 1345-16-5 -always \u9007 1456 -always \u9008 1456 +always \u9007 145-123456-5 +always \u9008 13-235-4 always \u9009 15-45-4 always \u900A 15-256-5 always \u900B 135-34-3 always \u900C 234-2 always \u900D 15-246-3 -always \u900E 1456 +always \u900E 245-234-2 always \u900F 124-12356-5 always \u9010 1-34-2 always \u9011 245-234-2 always \u9012 145-16-5 -always \u9013 1456 +always \u9013 145-16-5 always \u9014 124-34-2 always \u9015 13-13456-5 always \u9016 124-16-5 always \u9017 145-12356-5 -always \u9018 1456 +always \u9018 16-4 always \u9019 1-2346-5 always \u901A 124-12346-3 always \u901B 13-456-5 @@ -36789,46 +36792,46 @@ always \u9021 245-256-3 always \u9022 12345-1356-2 always \u9023 14-2345-2 always \u9024 15-25-5 -always \u9025 1456 +always \u9025 1235-1246-2 always \u9026 14-16-4 always \u9027 1456 -always \u9028 1456 -always \u9029 1456 -always \u902A 1456 -always \u902B 1456 -always \u902C 1456 +always \u9028 14-2456-2 +always \u9029 135-136-5 +always \u902A 245-25-5 +always \u902B 13-236-2 +always \u902C 135-1356-5 always \u902D 1235-12456-5 always \u902E 145-2456-5 always \u902F 14-34-5 -always \u9030 1456 +always \u9030 234-2 always \u9031 1-12356-3 always \u9032 13-1456-5 -always \u9033 1456 +always \u9033 1256-5 always \u9034 1-25-2 always \u9035 123-1246-2 always \u9036 1246-3 -always \u9037 1456 +always \u9037 124-16-5 always \u9038 16-5 -always \u9039 1456 -always \u903A 1456 +always \u9039 145-345-2 +always \u903A 45-4 always \u903B 14-25-2 always \u903C 135-16-3 always \u903D 1345-25-5 always \u903E 1256-2 always \u903F 145-1346-5 -always \u9040 1456 +always \u9040 15-1246-2 always \u9041 145-123456-5 always \u9042 15-1246-5 -always \u9043 1456 +always \u9043 2345-4 always \u9044 12-12456-2 -always \u9045 1456 -always \u9046 1456 +always \u9045 12-156-2 +always \u9046 124-16-2 always \u9047 1256-5 -always \u9048 1456 +always \u9048 24-156-2 always \u9049 1-136-3 always \u904A 234-2 always \u904B 256-5 -always \u904C 1456 +always \u904C 2346-5 always \u904D 135-2345-5 always \u904E 13-25-5 always \u904F 2346-5 @@ -36842,30 +36845,30 @@ always \u9056 1456 always \u9057 16-2 always \u9058 13-12356-5 always \u9059 246-2 -always \u905A 1456 +always \u905A 12-34-5 always \u905B 14-234-5 always \u905C 15-256-5 always \u905D 124-345-5 always \u905E 145-16-5 -always \u905F 1456 +always \u905F 12-156-2 always \u9060 45-4 -always \u9061 1456 +always \u9061 15-34-5 always \u9062 124-345-5 always \u9063 245-2345-4 always \u9064 1456 always \u9065 246-2 -always \u9066 1456 +always \u9066 13-12456-5 always \u9067 1-1346-3 always \u9068 146-2 always \u9069 24-156-5 -always \u906A 1456 +always \u906A 245-2346-5 always \u906B 12-156-5 -always \u906C 1456 +always \u906C 15-34-5 always \u906D 125-146-3 always \u906E 1-2346-3 always \u906F 145-123456-5 always \u9070 145-16-5 -always \u9071 1456 +always \u9071 14-12356-2 always \u9072 12-156-2 always \u9073 245-25-3 always \u9074 14-1456-2 @@ -36889,24 +36892,24 @@ always \u9085 1-1236-3 always \u9086 124-1356-2 always \u9087 156-4 always \u9088 134-246-4 -always \u9089 1456 +always \u9089 135-2345-3 always \u908A 135-2345-3 always \u908B 14-345-2 -always \u908C 1456 +always \u908C 14-16-2 always \u908D 45-2 -always \u908E 1456 +always \u908E 246-2 always \u908F 14-25-2 always \u9090 14-16-4 always \u9091 16-5 -always \u9092 1456 +always \u9092 124-13456-2 always \u9093 145-1356-5 always \u9094 245-16-4 always \u9095 235-3 -always \u9096 1456 +always \u9096 24-1236-3 always \u9097 1235-1236-2 always \u9098 1256-2 always \u9099 134-1346-2 -always \u909A 1456 +always \u909A 1245-34-2 always \u909B 245-235-2 always \u909C 1456 always \u909D 13-456-4 @@ -36920,12 +36923,12 @@ always \u90A4 1456 always \u90A5 24-136-4 always \u90A6 135-1346-3 always \u90A7 45-2 -always \u90A8 1456 -always \u90A9 1456 +always \u90A8 245-123456-3 +always \u90A9 1235-25-4 always \u90AA 15-346-2 -always \u90AB 1456 +always \u90AB 135-1346-3 always \u90AC 34-4 -always \u90AD 1456 +always \u90AD 13-1256-5 always \u90AE 234-2 always \u90AF 1235-1236-2 always \u90B0 124-2456-3 @@ -36935,29 +36938,29 @@ always \u90B3 1234-356-2 always \u90B4 135-13456-4 always \u90B5 24-146-5 always \u90B6 135-356-5 -always \u90B7 1456 +always \u90B7 35-4 always \u90B8 145-16-4 always \u90B9 125-12356-3 always \u90BA 346-5 always \u90BB 14-1456-2 -always \u90BC 1456 +always \u90BC 123-456-3 always \u90BD 13-1246-3 always \u90BE 1-34-3 always \u90BF 24-156-3 -always \u90C0 1456 +always \u90C0 123-34-3 always \u90C1 1256-5 -always \u90C2 1456 +always \u90C2 13-2456-3 always \u90C3 1235-2346-2 -always \u90C4 1456 +always \u90C4 15-16-5 always \u90C5 1-156-5 -always \u90C6 1456 +always \u90C6 13-16-2 always \u90C7 15-256-2 always \u90C8 1235-12356-5 -always \u90C9 1456 +always \u90C9 15-13456-2 always \u90CA 13-246-3 always \u90CB 15-16-3 -always \u90CC 1456 -always \u90CD 1456 +always \u90CC 13-1246-3 +always \u90CD 1345-25-2 always \u90CE 14-1346-2 always \u90CF 13-23456-2 always \u90D0 123-2356-5 @@ -36974,7 +36977,7 @@ always \u90DA 34-2 always \u90DB 12345-34-2 always \u90DC 13-146-5 always \u90DD 1235-146-4 -always \u90DE 1456 +always \u90DE 14-1346-2 always \u90DF 13-23456-2 always \u90E0 13-1356-4 always \u90E1 13-256-5 @@ -36998,8 +37001,8 @@ always \u90F2 14-2456-2 always \u90F3 1345-16-2 always \u90F4 12-136-3 always \u90F5 234-2 -always \u90F6 1456 -always \u90F7 1456 +always \u90F6 135-34-5 +always \u90F7 15-46-3 always \u90F8 145-1236-3 always \u90F9 13-1256-2 always \u90FA 235-3 @@ -37018,18 +37021,18 @@ always \u9106 256-5 always \u9107 1235-12356-5 always \u9108 123-1246-2 always \u9109 15-46-3 -always \u910A 1456 +always \u910A 15-46-3 always \u910B 15-12356-3 -always \u910C 1456 +always \u910C 124-1346-2 always \u910D 134-13456-2 always \u910E 15-16-2 always \u910F 1245-34-5 always \u9110 15-1256-5 always \u9111 125-156-3 always \u9112 125-12356-3 -always \u9113 1456 +always \u9113 13-1256-2 always \u9114 34-4 -always \u9115 1456 +always \u9115 15-46-3 always \u9116 256-2 always \u9117 1235-146-5 always \u9118 235-3 @@ -37045,7 +37048,7 @@ always \u9121 245-246-3 always \u9122 2345-3 always \u9123 1-1346-3 always \u9124 134-1236-5 -always \u9125 1456 +always \u9125 245-246-3 always \u9126 15-1256-4 always \u9127 145-1356-5 always \u9128 135-16-5 @@ -37063,18 +37066,18 @@ always \u9133 134-1356-2 always \u9134 346-5 always \u9135 245-146-5 always \u9136 123-2356-5 -always \u9137 1456 +always \u9137 12345-1356-3 always \u9138 134-1356-2 always \u9139 125-12356-3 always \u913A 13-456-4 always \u913B 14-2345-4 -always \u913C 1456 -always \u913D 1456 +always \u913C 125-1236-5 +always \u913D 12-1236-2 always \u913E 234-3 always \u913F 245-16-2 always \u9140 2345-3 always \u9141 12-1236-2 -always \u9142 1456 +always \u9142 125-1236-5 always \u9143 14-13456-2 always \u9144 1235-12456-3 always \u9145 15-16-3 @@ -37089,20 +37092,20 @@ always \u914D 1234-356-5 always \u914E 1-12356-5 always \u914F 16-2 always \u9150 1235-1346-4 -always \u9151 1456 +always \u9151 1256-4 always \u9152 13-234-4 always \u9153 2345-4 -always \u9154 1456 +always \u9154 125-1246-5 always \u9155 134-146-2 always \u9156 145-1236-3 always \u9157 15-1256-5 always \u9158 124-12356-2 -always \u9159 1456 +always \u9159 1-136-3 always \u915A 12345-136-3 always \u915B 1456 always \u915C 1456 always \u915D 256-5 -always \u915E 1456 +always \u915E 124-2456-5 always \u915F 124-2345-3 always \u9160 245-23456-4 always \u9161 124-25-2 @@ -37110,29 +37113,29 @@ always \u9162 125-25-5 always \u9163 1235-1236-3 always \u9164 13-34-3 always \u9165 15-34-3 -always \u9166 1456 -always \u9167 1456 +always \u9166 1234-126-5 +always \u9167 12-12356-2 always \u9168 145-2456-5 always \u9169 134-13456-4 always \u916A 14-25-5 -always \u916B 1456 +always \u916B 12-25-5 always \u916C 12-12356-2 -always \u916D 1456 +always \u916D 234-5 always \u916E 124-12346-2 always \u916F 1-156-4 -always \u9170 1456 +always \u9170 15-2345-3 always \u9171 13-46-5 always \u9172 12-1356-2 always \u9173 1456-5 always \u9174 124-34-2 always \u9175 15-246-5 -always \u9176 1456 +always \u9176 134-356-2 always \u9177 123-34-5 always \u9178 15-12456-3 always \u9179 14-356-5 always \u917A 1234-34-2 -always \u917B 1456 -always \u917C 1456 +always \u917B 125-1246-5 +always \u917C 1235-2456-4 always \u917D 2345-5 always \u917E 15-16-4 always \u917F 1345-46-5 @@ -37144,23 +37147,23 @@ always \u9184 124-146-2 always \u9185 1234-356-3 always \u9186 1-1236-4 always \u9187 12-123456-2 -always \u9188 1456 +always \u9188 124-1236-2 always \u9189 125-1246-5 always \u918A 1-25-2 always \u918B 245-34-5 -always \u918C 1456 +always \u918C 123-123456-3 always \u918D 124-16-2 -always \u918E 1456 +always \u918E 134-2345-2 always \u918F 145-34-3 always \u9190 1235-34-2 always \u9191 15-1256-4 always \u9192 15-13456-4 always \u9193 124-1236-4 -always \u9194 1456 -always \u9195 1456 -always \u9196 1456 -always \u9197 1456 -always \u9198 1456 +always \u9194 13-234-3 +always \u9195 12-123456-2 +always \u9196 256-5 +always \u9197 1234-126-5 +always \u9198 123-2346-5 always \u9199 15-12356-3 always \u919A 134-16-2 always \u919B 245-45-2 @@ -37172,12 +37175,12 @@ always \u91A0 1346-5 always \u91A1 1-345-5 always \u91A2 1235-2456-4 always \u91A3 124-1346-2 -always \u91A4 1456 +always \u91A4 13-46-5 always \u91A5 1234-246-4 -always \u91A6 1456 +always \u91A6 24-1236-4 always \u91A7 1256-5 always \u91A8 14-16-2 -always \u91A9 1456 +always \u91A9 125-146-2 always \u91AA 14-146-2 always \u91AB 16-3 always \u91AC 13-46-5 @@ -37190,25 +37193,25 @@ always \u91B2 1345-12346-2 always \u91B3 16-5 always \u91B4 14-16-4 always \u91B5 13-236-2 -always \u91B6 1456 +always \u91B6 13-246-5 always \u91B7 16-5 -always \u91B8 1456 +always \u91B8 1345-46-5 always \u91B9 1245-34-2 always \u91BA 15-256-3 -always \u91BB 1456 +always \u91BB 12-12356-2 always \u91BC 2345-5 always \u91BD 14-13456-2 always \u91BE 134-16-2 -always \u91BF 1456 +always \u91BF 134-16-2 always \u91C0 1345-46-5 always \u91C1 15-1456-5 always \u91C2 13-246-5 always \u91C3 15-16-4 -always \u91C4 1456 +always \u91C4 134-16-2 always \u91C5 2345-5 always \u91C6 135-2345-5 always \u91C7 245-2456-4 -always \u91C8 1456 +always \u91C8 24-156-5 always \u91C9 234-5 always \u91CA 24-156-5 always \u91CB 24-156-5 @@ -37222,22 +37225,22 @@ always \u91D2 1456 always \u91D3 245-234-2 always \u91D4 16-4 always \u91D5 1345-246-4 -always \u91D6 1456 +always \u91D6 145-146-3 always \u91D7 1-146-3 always \u91D8 145-13456-3 always \u91D9 1234-126-5 always \u91DA 245-234-2 -always \u91DB 1456 +always \u91DB 1235-2346-2 always \u91DC 12345-34-4 always \u91DD 1-136-3 -always \u91DE 1456 -always \u91DF 1456 -always \u91E0 1456 -always \u91E1 1456 +always \u91DE 1-156-2 +always \u91DF 135-345-3 +always \u91E0 14-12456-5 +always \u91E1 12345-34-4 always \u91E2 1345-2456-4 always \u91E3 145-246-5 always \u91E4 24-1236-5 -always \u91E5 1456 +always \u91E5 245-246-4 always \u91E6 123-12356-5 always \u91E7 12-12456-5 always \u91E8 125-156-4 @@ -37247,22 +37250,22 @@ always \u91EB 1235-35-2 always \u91EC 1235-1236-5 always \u91ED 13-1346-3 always \u91EE 245-16-2 -always \u91EF 1456 -always \u91F0 1456 +always \u91EF 134-1346-2 +always \u91F0 1245-156-5 always \u91F1 145-16-5 -always \u91F2 1456 +always \u91F2 15-156-5 always \u91F3 15-16-5 always \u91F4 16-5 always \u91F5 12-2456-3 -always \u91F6 1456 +always \u91F6 24-156-3 always \u91F7 124-34-4 always \u91F8 15-16-5 always \u91F9 1345-1256-4 -always \u91FA 1456 +always \u91FA 245-2345-3 always \u91FB 1456 -always \u91FC 1456 +always \u91FC 13-2345-5 always \u91FD 1234-16-3 -always \u91FE 1456 +always \u91FE 346-2 always \u91FF 1456-4 always \u9200 135-345-4 always \u9201 12345-1346-3 @@ -37272,33 +37275,33 @@ always \u9204 124-12356-4 always \u9205 236-5 always \u9206 2345-2 always \u9207 12345-34-3 -always \u9208 1456 +always \u9208 1234-16-3 always \u9209 1345-345-5 always \u920A 15-1456-3 -always \u920B 1456 +always \u920B 2346-2 always \u920C 13-236-2 always \u920D 145-123456-5 -always \u920E 1456 +always \u920E 13-12356-3 always \u920F 1456-4 always \u9210 245-2345-2 always \u9211 135-1236-4 always \u9212 15-345-5 -always \u9213 1456 +always \u9213 1245-136-2 always \u9214 12-146-3 always \u9215 1345-234-4 always \u9216 12345-136-3 always \u9217 256-4 -always \u9218 1456 +always \u9218 13-16-4 always \u9219 245-1456-2 always \u921A 1234-16-2 -always \u921B 1456 +always \u921B 13-25-3 always \u921C 1235-12346-2 -always \u921D 1456 +always \u921D 1456-2 always \u921E 13-256-3 -always \u921F 1456 -always \u9220 1456 -always \u9221 1456 -always \u9222 1456 +always \u921F 24-156-3 +always \u9220 16-5 +always \u9221 1-12346-3 +always \u9222 1345-346-3 always \u9223 13-2456-5 always \u9224 1245-156-5 always \u9225 1235-25-4 @@ -37308,34 +37311,34 @@ always \u9228 1456 always \u9229 1456 always \u922A 1456 always \u922B 1456 -always \u922C 1456 +always \u922C 145-25-2 always \u922D 125-156-3 always \u922E 1345-16-4 -always \u922F 1456 +always \u922F 124-34-2 always \u9230 24-156-5 always \u9231 134-1456-2 always \u9232 13-34-3 always \u9233 123-2346-3 always \u9234 14-13456-2 -always \u9235 1456 +always \u9235 135-13456-5 always \u9236 245-156-2 always \u9237 13-34-3 always \u9238 135-345-2 always \u9239 1234-16-3 always \u923A 1256-5 -always \u923B 1456 -always \u923C 1456 +always \u923B 15-156-5 +always \u923C 125-25-2 always \u923D 135-34-5 always \u923E 234-5 always \u923F 145-2345-5 always \u9240 13-23456-4 -always \u9241 1456 -always \u9242 1456 -always \u9243 1456 -always \u9244 1456 +always \u9241 1-136-3 +always \u9242 24-156-4 +always \u9243 24-156-5 +always \u9244 124-346-4 always \u9245 13-1256-5 always \u9246 1-1236-3 -always \u9247 1456 +always \u9247 24-156-3 always \u9248 24-2346-2 always \u9249 15-45-5 always \u924A 1-146-3 @@ -37349,41 +37352,41 @@ always \u9251 135-126-2 always \u9252 1-34-5 always \u9253 12-156-5 always \u9254 125-345-3 -always \u9255 1456 +always \u9255 1234-126-3 always \u9256 124-12346-2 always \u9257 245-2345-2 -always \u9258 1456 -always \u9259 1456 +always \u9258 12345-34-2 +always \u9259 1-2456-4 always \u925A 14-234-4 always \u925B 245-2345-3 -always \u925C 1456 -always \u925D 1456 +always \u925C 12345-34-2 +always \u925D 14-16-5 always \u925E 1235-1246-5 -always \u925F 1456 +always \u925F 1234-16-3 always \u9260 46-3 always \u9261 135-1236-5 -always \u9262 1456 +always \u9262 135-126-3 always \u9263 13-346-2 always \u9264 13-12356-3 always \u9265 24-34-5 always \u9266 1-1356-3 always \u9267 134-34-4 -always \u9268 1456 -always \u9269 1456 -always \u926A 1456 -always \u926B 1456 +always \u9268 1345-16-4 +always \u9269 1345-346-3 +always \u926A 145-16-5 +always \u926B 13-23456-3 always \u926C 134-34-5 always \u926D 145-1236-5 -always \u926E 1456 +always \u926E 24-136-3 always \u926F 16-4 always \u9270 15-156-3 -always \u9271 1456 +always \u9271 123-456-5 always \u9272 123-345-3 -always \u9273 1456 +always \u9273 135-356-4 always \u9274 13-2345-5 -always \u9275 1456 +always \u9275 124-12346-2 always \u9276 15-13456-2 -always \u9277 1456 +always \u9277 1235-12346-2 always \u9278 13-246-4 always \u9279 12-156-4 always \u927A 156-5 @@ -37393,24 +37396,24 @@ always \u927D 24-156-5 always \u927E 134-12356-2 always \u927F 13-23456-2 always \u9280 1456-2 -always \u9281 1456 +always \u9281 13-256-3 always \u9282 1-12356-3 always \u9283 12-12346-5 -always \u9284 1456 +always \u9284 24-1346-5 always \u9285 124-12346-2 always \u9286 134-126-5 always \u9287 14-356-5 always \u9288 13-16-3 -always \u9289 1456 +always \u9289 1256-5 always \u928A 15-1256-5 always \u928B 1245-136-2 always \u928C 125-123456-5 always \u928D 1-156-5 always \u928E 245-235-3 -always \u928F 1456 -always \u9290 1456 +always \u928F 24-1236-5 +always \u9290 12-156-5 always \u9291 15-2345-4 -always \u9292 1456 +always \u9292 15-13456-2 always \u9293 245-45-2 always \u9294 1234-16-3 always \u9295 124-346-4 @@ -37422,8 +37425,8 @@ always \u929A 246-2 always \u929B 15-2345-3 always \u929C 15-2345-2 always \u929D 15-234-3 -always \u929E 1456 -always \u929F 1456 +always \u929E 13-256-3 +always \u929F 12-345-3 always \u92A0 14-146-4 always \u92A1 13-16-2 always \u92A2 135-345-1 @@ -37437,25 +37440,25 @@ always \u92A9 145-234-3 always \u92AA 234-4 always \u92AB 15-2346-5 always \u92AC 123-146-5 -always \u92AD 1456 +always \u92AD 245-2345-2 always \u92AE 14-12456-2 always \u92AF 1456 -always \u92B0 1456 -always \u92B1 1456 +always \u92B0 2456-3 +always \u92B1 145-246-5 always \u92B2 1235-1236-5 always \u92B3 1245-1246-5 always \u92B4 24-156-5 always \u92B5 123-1356-3 always \u92B6 245-234-2 always \u92B7 15-246-3 -always \u92B8 1456 +always \u92B8 1-2346-2 always \u92B9 15-234-5 -always \u92BA 1456 +always \u92BA 125-1346-5 always \u92BB 124-16-5 always \u92BC 245-25-5 -always \u92BD 1456 -always \u92BE 1456 -always \u92BF 1456 +always \u92BD 13-35-3 +always \u92BE 13-12346-4 +always \u92BF 1-12346-3 always \u92C0 145-12356-5 always \u92C1 14-1256-4 always \u92C2 134-356-2 @@ -37476,79 +37479,79 @@ always \u92D0 1235-12346-2 always \u92D1 245-12456-3 always \u92D2 12345-1356-3 always \u92D3 12-1236-3 -always \u92D4 1456 +always \u92D4 12456-4 always \u92D5 1-156-5 -always \u92D6 1456 +always \u92D6 15-156-3 always \u92D7 15-45-3 always \u92D8 1235-35-2 always \u92D9 1256-4 -always \u92DA 1456 -always \u92DB 1456 -always \u92DC 1456 +always \u92DA 124-246-2 +always \u92DB 13-12346-4 +always \u92DC 1-25-2 always \u92DD 14-236-5 always \u92DE 15-13456-2 always \u92DF 245-1456-3 always \u92E0 24-136-5 always \u92E1 1235-1236-2 -always \u92E2 1456 -always \u92E3 1456 +always \u92E2 14-236-5 +always \u92E3 15-346-2 always \u92E4 12-34-2 -always \u92E5 1456 +always \u92E5 1-1356-5 always \u92E6 13-1256-2 always \u92E7 15-2345-5 always \u92E8 2346-2 always \u92E9 134-1346-3 always \u92EA 1234-34-3 -always \u92EB 1456 -always \u92EC 1456 -always \u92ED 1456 +always \u92EB 14-16-2 +always \u92EC 1234-1236-5 +always \u92ED 1245-1246-5 always \u92EE 12-1356-2 always \u92EF 13-146-5 always \u92F0 14-16-4 always \u92F1 124-2346-5 always \u92F2 1456 -always \u92F3 1456 +always \u92F3 1-34-5 always \u92F4 1456 -always \u92F5 1456 -always \u92F6 1456 +always \u92F5 124-34-3 +always \u92F6 14-234-4 always \u92F7 125-1246-5 always \u92F8 13-1256-5 always \u92F9 12-1346-4 always \u92FA 45-3 always \u92FB 13-2345-5 always \u92FC 13-1346-3 -always \u92FD 1456 +always \u92FD 145-246-5 always \u92FE 124-146-2 always \u92FF 12-1346-2 always \u9300 14-123456-2 always \u9301 13-25-4 always \u9302 14-13456-2 -always \u9303 1456 +always \u9303 135-356-3 always \u9304 14-34-5 -always \u9305 1456 +always \u9305 14-16-2 always \u9306 245-46-3 -always \u9307 1456 +always \u9307 1234-12356-2 always \u9308 13-45-5 always \u9309 134-1456-2 -always \u930A 1456 +always \u930A 125-1246-5 always \u930B 1234-1356-2 always \u930C 1236-5 always \u930D 1234-16-2 always \u930E 15-2345-5 always \u930F 23456-3 always \u9310 1-1246-3 -always \u9311 1456 +always \u9311 14-356-5 always \u9312 345-5 always \u9313 123-12346-3 always \u9314 124-345-5 always \u9315 123-123456-3 always \u9316 145-34-4 -always \u9317 1456 +always \u9317 1246-5 always \u9318 12-1246-2 always \u9319 125-156-3 always \u931A 1-1356-3 always \u931B 135-136-3 -always \u931C 1456 +always \u931C 1345-346-3 always \u931D 245-12346-2 always \u931E 12-123456-2 always \u931F 124-1236-2 @@ -37564,35 +37567,35 @@ always \u9328 134-146-2 always \u9329 12-1346-3 always \u932A 124-2345-4 always \u932B 15-16-2 -always \u932C 1456 +always \u932C 14-2345-5 always \u932D 145-246-3 always \u932E 13-34-5 always \u932F 245-25-5 -always \u9330 1456 -always \u9331 1456 -always \u9332 1456 +always \u9330 24-34-5 +always \u9331 1-136-3 +always \u9332 14-34-5 always \u9333 134-1356-4 always \u9334 14-34-5 always \u9335 1235-35-3 always \u9336 135-246-4 -always \u9337 1456 +always \u9337 13-345-2 always \u9338 14-2456-2 always \u9339 123-136-4 always \u933A 1456 always \u933B 1456 always \u933C 1345-2456-5 -always \u933D 1456 +always \u933D 12456-4 always \u933E 125-1236-5 always \u933F 1456 -always \u9340 1456 -always \u9341 1456 +always \u9340 145-2346-2 +always \u9341 15-2345-3 always \u9342 1456 -always \u9343 1456 -always \u9344 1456 +always \u9343 1235-25-3 +always \u9344 14-46-5 always \u9345 1456 always \u9346 134-136-2 always \u9347 123-2456-4 -always \u9348 1456 +always \u9348 13456-3 always \u9349 124-16-2 always \u934A 14-2345-5 always \u934B 13-25-3 @@ -37603,7 +37606,7 @@ always \u934F 1246-2 always \u9350 125-12346-3 always \u9351 12345-34-5 always \u9352 1245-12356-2 -always \u9353 1456 +always \u9353 13-16-2 always \u9354 2346-5 always \u9355 13-256-3 always \u9356 12-136-4 @@ -37613,61 +37616,61 @@ always \u9359 1235-12346-5 always \u935A 46-2 always \u935B 145-12456-5 always \u935C 15-23456-2 -always \u935D 1456 +always \u935D 1256-2 always \u935E 123-1356-3 -always \u935F 1456 +always \u935F 15-13456-3 always \u9360 1235-456-2 always \u9361 1246-5 -always \u9362 1456 +always \u9362 12345-34-5 always \u9363 1-146-3 always \u9364 12-345-2 always \u9365 245-16-5 -always \u9366 1456 +always \u9366 24-2346-2 always \u9367 1235-12346-3 -always \u9368 1456 -always \u9369 1456 +always \u9368 123-1246-2 +always \u9369 124-2345-4 always \u936A 134-12356-2 -always \u936B 1456 +always \u936B 245-246-3 always \u936C 245-246-3 always \u936D 1235-12356-2 -always \u936E 1456 -always \u936F 1456 +always \u936E 124-12356-3 +always \u936F 245-12346-3 always \u9370 1235-12456-2 always \u9371 346-5 -always \u9372 1456 -always \u9373 1456 -always \u9374 1456 +always \u9372 134-1456-2 +always \u9373 13-2345-5 +always \u9374 145-12456-3 always \u9375 13-2345-5 always \u9376 15-12346-3 always \u9377 123-1246-3 -always \u9378 1456 +always \u9378 1235-34-2 always \u9379 15-45-3 always \u937A 145-25-4 always \u937B 13-346-2 always \u937C 1-136-3 -always \u937D 1456 +always \u937D 135-2345-3 always \u937E 1-12346-3 -always \u937F 1456 +always \u937F 125-156-3 always \u9380 15-234-3 -always \u9381 1456 +always \u9381 346-2 always \u9382 134-356-4 always \u9383 1234-2456-5 -always \u9384 1456 -always \u9385 1456 +always \u9384 2456-3 +always \u9385 13-346-5 always \u9386 1456 -always \u9387 1456 +always \u9387 134-356-2 always \u9388 12-25-3 always \u9389 124-345-5 always \u938A 135-1346-5 -always \u938B 1456 +always \u938B 15-23456-2 always \u938C 14-2345-2 always \u938D 15-25-4 always \u938E 15-16-5 always \u938F 14-234-2 -always \u9390 1456 +always \u9390 125-34-2 always \u9391 346-5 always \u9392 1345-12356-5 -always \u9393 1456 +always \u9393 12346-3 always \u9394 1245-12346-2 always \u9395 124-1346-2 always \u9396 15-25-4 @@ -37676,11 +37679,11 @@ always \u9398 13-2346-2 always \u9399 24-25-5 always \u939A 12-1246-2 always \u939B 135-126-2 -always \u939C 1456 +always \u939C 1234-1236-2 always \u939D 15-345-5 always \u939E 135-16-5 always \u939F 15-1346-4 -always \u93A0 1456 +always \u93A0 13-1346-3 always \u93A1 125-156-3 always \u93A2 34-3 always \u93A3 13456-2 @@ -37691,9 +37694,9 @@ always \u93A7 123-2456-4 always \u93A8 15-123456-4 always \u93A9 24-345-3 always \u93AA 15-12356-3 -always \u93AB 1456 +always \u93AB 12456-5 always \u93AC 13-146-4 -always \u93AD 1456 +always \u93AD 1-136-5 always \u93AE 1-136-5 always \u93AF 14-25-4 always \u93B0 16-5 @@ -37702,28 +37705,28 @@ always \u93B2 124-1346-4 always \u93B3 1345-346-5 always \u93B4 15-16-2 always \u93B5 13-23456-3 -always \u93B6 1456 +always \u93B6 13-2346-3 always \u93B7 134-345-4 -always \u93B8 1456 +always \u93B8 13-45-3 always \u93B9 1456 always \u93BA 1456 -always \u93BB 1456 +always \u93BB 15-25-4 always \u93BC 1456 always \u93BD 1456 always \u93BE 1456 -always \u93BF 1456 +always \u93BF 1345-345-2 always \u93C0 14-34-4 -always \u93C1 1456 +always \u93C1 15-25-4 always \u93C2 12356-3 always \u93C3 125-34-2 always \u93C4 124-12456-2 -always \u93C5 1456 -always \u93C6 1456 +always \u93C5 15-234-3 +always \u93C6 13-12456-5 always \u93C7 15-45-2 always \u93C8 14-2345-5 -always \u93C9 1456 +always \u93C9 24-12356-5 always \u93CA 146-5 -always \u93CB 1456 +always \u93CB 134-1236-4 always \u93CC 134-126-5 always \u93CD 14-25-2 always \u93CE 135-16-5 @@ -37731,7 +37734,7 @@ always \u93CF 1246-5 always \u93D0 14-234-2 always \u93D1 145-16-2 always \u93D2 245-246-3 -always \u93D3 1456 +always \u93D3 245-12346-3 always \u93D4 16-2 always \u93D5 14-34-5 always \u93D6 146-2 @@ -37739,32 +37742,32 @@ always \u93D7 123-1356-3 always \u93D8 245-46-3 always \u93D9 245-1246-4 always \u93DA 245-16-5 -always \u93DB 1456 +always \u93DB 12-1346-2 always \u93DC 124-1346-3 always \u93DD 134-1236-5 always \u93DE 1245-12346-2 always \u93DF 12-1236-4 -always \u93E0 1456 +always \u93E0 12345-1356-3 always \u93E1 13-13456-5 always \u93E2 135-246-3 always \u93E3 24-34-5 always \u93E4 14-12356-5 -always \u93E5 1456 +always \u93E5 15-234-5 always \u93E6 245-12346-3 always \u93E7 14-12346-2 always \u93E8 125-1236-5 -always \u93E9 1456 -always \u93EA 1456 -always \u93EB 1456 +always \u93E9 13-2345-5 +always \u93EA 245-146-2 +always \u93EB 14-16-2 always \u93EC 15-23456-5 -always \u93ED 1456 +always \u93ED 15-16-3 always \u93EE 123-1346-3 always \u93EF 1456 -always \u93F0 1456 +always \u93F0 135-1356-5 always \u93F1 1456 always \u93F2 1456 -always \u93F3 1456 -always \u93F4 1456 +always \u93F3 1-1356-3 +always \u93F4 14-34-5 always \u93F5 1235-35-2 always \u93F6 13-16-2 always \u93F7 1234-34-2 @@ -37777,14 +37780,14 @@ always \u93FD 15-234-5 always \u93FE 15-2345-5 always \u93FF 12-1356-3 always \u9400 123-1246-5 -always \u9401 1456 -always \u9402 1456 +always \u9401 15-156-3 +always \u9402 14-234-5 always \u9403 1345-146-2 -always \u9404 1456 -always \u9405 1456 +always \u9404 1235-1356-2 +always \u9405 1234-346-4 always \u9406 15-1246-5 always \u9407 12345-1236-2 -always \u9408 1456 +always \u9408 245-246-2 always \u9409 245-45-2 always \u940A 46-2 always \u940B 124-1346-5 @@ -37799,36 +37802,36 @@ always \u9413 145-1246-3 always \u9414 15-256-2 always \u9415 125-1236-3 always \u9416 13-16-3 -always \u9417 1456 +always \u9417 13-2345-4 always \u9418 1-12346-3 always \u9419 145-1356-3 -always \u941A 1456 -always \u941B 1456 -always \u941C 1456 -always \u941D 1456 -always \u941E 1456 -always \u941F 1456 +always \u941A 23456-5 +always \u941B 13456-5 +always \u941C 145-1246-5 +always \u941D 13-236-2 +always \u941E 1345-12356-5 +always \u941F 124-16-5 always \u9420 1234-34-4 -always \u9421 1456 +always \u9421 124-346-4 always \u9422 1456 always \u9423 1456 -always \u9424 1456 -always \u9425 1456 -always \u9426 1456 -always \u9427 1456 +always \u9424 145-13456-4 +always \u9425 24-1236-5 +always \u9426 123-2456-3 +always \u9427 13-2345-4 always \u9428 12345-356-5 always \u9429 15-1246-5 always \u942A 14-34-4 always \u942B 13-45-3 always \u942C 1235-1246-5 -always \u942D 1456 +always \u942D 1256-5 always \u942E 14-2345-2 -always \u942F 1456 +always \u942F 1-25-2 always \u9430 245-246-3 always \u9431 245-2345-3 always \u9432 1-25-2 always \u9433 14-356-2 -always \u9434 1456 +always \u9434 135-16-5 always \u9435 124-346-4 always \u9436 1235-12456-2 always \u9437 346-5 @@ -37838,12 +37841,12 @@ always \u943A 145-1346-3 always \u943B 13-1256-5 always \u943C 135-136-3 always \u943D 145-345-2 -always \u943E 1456 +always \u943E 135-356-5 always \u943F 16-5 always \u9440 2456-5 -always \u9441 1456 -always \u9442 1456 -always \u9443 1456 +always \u9441 125-12346-3 +always \u9442 15-256-5 +always \u9443 145-246-5 always \u9444 1-34-5 always \u9445 1235-1356-2 always \u9446 1-1246-5 @@ -37853,38 +37856,38 @@ always \u9449 13-2456-5 always \u944A 1235-25-5 always \u944B 245-13456-3 always \u944C 135-1456-3 -always \u944D 1456 -always \u944E 1456 +always \u944D 13456-3 +always \u944E 123-1246-5 always \u944F 1345-13456-2 always \u9450 15-1256-3 always \u9451 13-2345-5 always \u9452 13-2345-5 always \u9453 1456 -always \u9454 1456 +always \u9454 12-345-4 always \u9455 1-156-5 -always \u9456 1456 +always \u9456 134-346-5 always \u9457 14-16-2 -always \u9458 1456 -always \u9459 1456 -always \u945A 1456 -always \u945B 1456 -always \u945C 1456 +always \u9458 14-356-2 +always \u9459 13-16-3 +always \u945A 125-12456-5 +always \u945B 123-456-5 +always \u945C 24-1346-5 always \u945D 1234-1356-2 always \u945E 14-345-5 -always \u945F 1456 +always \u945F 145-34-2 always \u9460 24-25-5 -always \u9461 1456 +always \u9461 12-25-5 always \u9462 14-1256-5 always \u9463 135-246-3 always \u9464 135-146-5 -always \u9465 1456 +always \u9465 14-34-4 always \u9466 1456 always \u9467 1456 always \u9468 14-12346-2 always \u9469 2346-5 always \u946A 14-34-2 always \u946B 15-1456-3 -always \u946C 1456 +always \u946C 13-2345-5 always \u946D 14-1236-5 always \u946E 135-126-2 always \u946F 13-2345-3 @@ -37897,9 +37900,9 @@ always \u9475 13-12456-5 always \u9476 245-1346-2 always \u9477 1345-346-5 always \u9478 14-356-4 -always \u9479 1456 -always \u947A 1456 -always \u947B 1456 +always \u9479 245-12456-5 +always \u947A 245-1256-2 +always \u947B 1234-1236-5 always \u947C 14-25-2 always \u947D 125-12456-3 always \u947E 14-12456-2 @@ -37908,8 +37911,8 @@ always \u9480 16-2 always \u9481 13-236-2 always \u9482 124-1346-4 always \u9483 1-34-2 -always \u9484 1456 -always \u9485 1456 +always \u9484 14-1236-2 +always \u9485 13-1456-3 always \u9486 245-234-2 always \u9487 16-4 always \u9488 1-136-3 @@ -37918,19 +37921,19 @@ always \u948A 1-146-3 always \u948B 1234-126-5 always \u948C 1345-246-4 always \u948D 124-34-4 -always \u948E 1456 +always \u948E 245-2345-3 always \u948F 12-12456-5 always \u9490 24-1236-5 -always \u9491 1456 +always \u9491 13-16-2 always \u9492 12345-1236-2 always \u9493 145-246-5 always \u9494 134-136-2 always \u9495 1345-1256-4 -always \u9496 1456 +always \u9496 15-16-2 always \u9497 12-2456-3 -always \u9498 1456 +always \u9498 15-13456-2 always \u9499 13-2456-5 -always \u949A 1456 +always \u949A 135-34-5 always \u949B 124-2456-5 always \u949C 13-1256-5 always \u949D 145-123456-5 @@ -37959,7 +37962,7 @@ always \u94B3 245-2345-2 always \u94B4 13-34-3 always \u94B5 135-126-3 always \u94B6 123-2346-3 -always \u94B7 1456 +always \u94B7 1234-126-3 always \u94B8 135-34-5 always \u94B9 135-345-2 always \u94BA 1235-1246-5 @@ -37975,7 +37978,7 @@ always \u94C3 14-13456-2 always \u94C4 24-25-5 always \u94C5 245-2345-3 always \u94C6 14-234-4 -always \u94C7 1456 +always \u94C7 135-146-5 always \u94C8 24-156-5 always \u94C9 15-45-5 always \u94CA 24-2346-2 @@ -37983,22 +37986,22 @@ always \u94CB 135-16-5 always \u94CC 1345-16-4 always \u94CD 1234-16-3 always \u94CE 145-25-2 -always \u94CF 1456 +always \u94CF 15-13456-2 always \u94D0 123-146-5 always \u94D1 14-146-4 always \u94D2 156-5 -always \u94D3 1456 -always \u94D4 1456 +always \u94D3 134-1346-2 +always \u94D4 23456-5 always \u94D5 234-4 always \u94D6 12-1356-2 always \u94D7 13-23456-2 -always \u94D8 1456 +always \u94D8 346-2 always \u94D9 1345-146-2 -always \u94DA 1456 +always \u94DA 1-156-5 always \u94DB 145-1346-3 always \u94DC 124-12346-2 always \u94DD 14-1256-4 -always \u94DE 1456 +always \u94DE 145-246-5 always \u94DF 1456-3 always \u94E0 123-2456-4 always \u94E1 1-345-2 @@ -38006,7 +38009,7 @@ always \u94E2 1-34-3 always \u94E3 15-1456-3 always \u94E4 124-13456-4 always \u94E5 145-234-3 -always \u94E6 1456 +always \u94E6 15-2345-3 always \u94E7 1235-35-2 always \u94E8 245-45-2 always \u94E9 24-345-3 @@ -38027,15 +38030,15 @@ always \u94F7 1245-34-2 always \u94F8 1-34-5 always \u94F9 14-146-2 always \u94FA 1234-34-3 -always \u94FB 1456 +always \u94FB 34-2 always \u94FC 14-2456-2 always \u94FD 124-2346-5 -always \u94FE 12-2345-5 +always \u94FE 15-2345-5 always \u94FF 123-1356-3 always \u9500 15-246-3 always \u9501 15-25-4 always \u9502 14-16-4 -always \u9503 1456 +always \u9503 1-1356-5 always \u9504 12-34-2 always \u9505 13-25-3 always \u9506 13-146-5 @@ -38045,9 +38048,9 @@ always \u9509 245-25-5 always \u950A 14-236-5 always \u950B 12345-1356-3 always \u950C 15-1456-3 -always \u950D 1456 -always \u950E 1456 -always \u950F 1456 +always \u950D 14-234-4 +always \u950E 123-2456-3 +always \u950F 13-2345-4 always \u9510 1245-1246-5 always \u9511 124-16-5 always \u9512 14-1346-2 @@ -38056,26 +38059,26 @@ always \u9514 13-1256-2 always \u9515 345-5 always \u9516 245-46-3 always \u9517 145-25-4 -always \u9518 1456 +always \u9518 124-2345-4 always \u9519 245-25-5 always \u951A 134-146-2 always \u951B 135-136-3 -always \u951C 1456 -always \u951D 1456 +always \u951C 245-16-2 +always \u951D 145-2346-2 always \u951E 13-25-4 always \u951F 123-123456-3 -always \u9520 1456 +always \u9520 12-1346-3 always \u9521 15-16-2 always \u9522 13-34-5 always \u9523 14-25-2 always \u9524 12-1246-2 always \u9525 1-1246-3 always \u9526 13-1456-4 -always \u9527 1456 -always \u9528 1456 +always \u9527 1-156-5 +always \u9528 15-2345-3 always \u9529 13-45-5 -always \u952A 1456 -always \u952B 1456 +always \u952A 1235-25-3 +always \u952B 1234-12356-2 always \u952C 124-1236-2 always \u952D 145-13456-5 always \u952E 13-2345-5 @@ -38083,7 +38086,7 @@ always \u952F 13-1256-5 always \u9530 134-1356-4 always \u9531 125-156-3 always \u9532 245-16-5 -always \u9533 1456 +always \u9533 13456-3 always \u9534 123-2456-4 always \u9535 245-46-3 always \u9536 15-12346-3 @@ -38093,81 +38096,81 @@ always \u9539 245-246-3 always \u953A 1-12346-3 always \u953B 145-12456-5 always \u953C 15-12356-3 -always \u953D 1456 +always \u953D 1235-456-2 always \u953E 1235-12456-2 -always \u953F 1456 +always \u953F 2456-3 always \u9540 145-34-5 always \u9541 134-356-4 always \u9542 14-12356-5 -always \u9543 1456 +always \u9543 125-156-3 always \u9544 12345-356-5 -always \u9545 1456 +always \u9545 134-356-2 always \u9546 134-126-5 always \u9547 1-136-5 -always \u9548 1456 +always \u9548 135-126-2 always \u9549 13-2346-2 always \u954A 1345-346-5 -always \u954B 1456 +always \u954B 124-1346-4 always \u954C 13-45-3 always \u954D 1345-346-5 -always \u954E 1456 +always \u954E 1345-345-2 always \u954F 14-234-2 always \u9550 13-146-4 always \u9551 135-1346-5 always \u9552 16-5 always \u9553 13-23456-3 always \u9554 135-1456-3 -always \u9555 1456 +always \u9555 1245-12346-2 always \u9556 135-246-3 always \u9557 124-1346-3 always \u9558 134-1236-5 always \u9559 14-25-2 -always \u955A 1456 +always \u955A 135-1356-5 always \u955B 1245-12346-2 always \u955C 13-13456-5 always \u955D 145-16-2 always \u955E 125-34-2 always \u955F 15-45-2 -always \u9560 1456 +always \u9560 14-234-2 always \u9561 15-256-2 -always \u9562 1456 +always \u9562 13-236-2 always \u9563 14-246-2 always \u9564 1234-34-2 -always \u9565 1456 +always \u9565 14-34-4 always \u9566 145-1246-3 always \u9567 14-1236-5 always \u9568 1234-34-4 -always \u9569 1456 +always \u9569 245-12456-5 always \u956A 13-46-4 always \u956B 145-1356-3 always \u956C 1235-25-5 always \u956D 14-356-2 -always \u956E 1456 +always \u956E 1235-12456-2 always \u956F 1-25-2 always \u9570 14-2345-2 always \u9571 16-5 -always \u9572 1456 +always \u9572 12-345-4 always \u9573 135-246-3 -always \u9574 1456 -always \u9575 1456 +always \u9574 14-345-5 +always \u9575 12-1236-2 always \u9576 15-46-3 always \u9577 12-1346-2 -always \u9578 1456 -always \u9579 1456 +always \u9578 12-1346-2 +always \u9579 13-234-4 always \u957A 146-4 always \u957B 145-346-2 always \u957C 245-1256-3 always \u957D 14-246-4 -always \u957E 1456 +always \u957E 134-16-2 always \u957F 12-1346-2 always \u9580 134-136-2 -always \u9581 1456 +always \u9581 134-345-5 always \u9582 24-12456-3 always \u9583 24-1236-4 -always \u9584 1456 -always \u9585 1456 +always \u9584 1235-25-5 +always \u9585 134-136-2 always \u9586 2345-2 -always \u9587 1456 +always \u9587 135-16-5 always \u9588 1235-1236-5 always \u9589 135-16-5 always \u958A 1456 @@ -38181,25 +38184,25 @@ always \u9591 15-2345-2 always \u9592 15-2345-2 always \u9593 13-2345-3 always \u9594 134-1456-4 -always \u9595 1456 +always \u9595 15-23456-3 always \u9596 1456 -always \u9597 1456 +always \u9597 145-12356-5 always \u9598 1-345-2 -always \u9599 1456 +always \u9599 1345-146-5 always \u959A 1456 always \u959B 1234-1356-3 always \u959C 15-23456-4 -always \u959D 1456 +always \u959D 14-13456-2 always \u959E 135-2345-5 always \u959F 135-16-5 -always \u95A0 1456 +always \u95A0 1245-123456-5 always \u95A1 1235-2346-2 -always \u95A2 1456 +always \u95A2 13-12456-3 always \u95A3 13-2346-2 always \u95A4 1235-2346-2 always \u95A5 12345-345-2 -always \u95A6 1456 -always \u95A7 1456 +always \u95A6 12-34-5 +always \u95A7 1235-12346-5 always \u95A8 13-1246-3 always \u95A9 134-1456-2 always \u95AA 1456 @@ -38207,16 +38210,16 @@ always \u95AB 123-123456-4 always \u95AC 14-1346-5 always \u95AD 14-1256-2 always \u95AE 124-13456-2 -always \u95AF 1456 +always \u95AF 24-345-5 always \u95B0 13-1256-2 always \u95B1 236-5 -always \u95B2 1456 -always \u95B3 1456 -always \u95B4 1456 +always \u95B2 236-5 +always \u95B3 12-1236-4 +always \u95B4 245-1256-5 always \u95B5 14-1456-5 always \u95B6 12-1346-3 always \u95B7 24-345-3 -always \u95B8 1456 +always \u95B8 123-123456-4 always \u95B9 2345-3 always \u95BA 134-1456-2 always \u95BB 2345-2 @@ -38225,10 +38228,10 @@ always \u95BD 1235-123456-3 always \u95BE 1256-5 always \u95BF 123456-2 always \u95C0 15-46-5 -always \u95C1 1456 -always \u95C2 1456 +always \u95C1 135-146-3 +always \u95C2 15-46-5 always \u95C3 245-1256-5 -always \u95C4 1456 +always \u95C4 246-4 always \u95C5 123456-2 always \u95C6 135-1236-4 always \u95C7 1236-5 @@ -38247,13 +38250,13 @@ always \u95D3 123-2456-4 always \u95D4 1235-2346-2 always \u95D5 245-236-5 always \u95D6 12-456-4 -always \u95D7 1456 -always \u95D8 1456 -always \u95D9 1456 +always \u95D7 13-12456-3 +always \u95D8 145-12356-5 +always \u95D9 245-16-4 always \u95DA 123-1246-3 always \u95DB 124-1346-2 always \u95DC 13-12456-3 -always \u95DD 1456 +always \u95DD 1234-246-2 always \u95DE 123-1236-5 always \u95DF 15-16-3 always \u95E0 1235-1246-5 @@ -38262,13 +38265,13 @@ always \u95E2 1234-16-5 always \u95E3 145-1346-5 always \u95E4 1235-12456-2 always \u95E5 124-345-5 -always \u95E6 1456 +always \u95E6 123456-2 always \u95E7 1456 always \u95E8 134-136-2 always \u95E9 24-12456-3 always \u95EA 24-1236-4 always \u95EB 2345-2 -always \u95EC 1456 +always \u95EC 1235-1236-5 always \u95ED 135-16-5 always \u95EE 123456-5 always \u95EF 12-456-4 @@ -38287,7 +38290,7 @@ always \u95FB 123456-2 always \u95FC 124-345-5 always \u95FD 134-1456-4 always \u95FE 14-1256-2 -always \u95FF 1456 +always \u95FF 123-2456-4 always \u9600 12345-345-2 always \u9601 1235-2346-2 always \u9602 1235-2346-2 @@ -38295,7 +38298,7 @@ always \u9603 123-123456-4 always \u9604 13-234-3 always \u9605 236-5 always \u9606 14-1346-5 -always \u9607 1456 +always \u9607 145-34-3 always \u9608 1256-5 always \u9609 2345-3 always \u960A 12-1346-3 @@ -38307,17 +38310,17 @@ always \u960F 2346-5 always \u9610 12-1236-4 always \u9611 14-1236-2 always \u9612 245-1256-5 -always \u9613 1456 +always \u9613 1235-1246-5 always \u9614 123-25-5 always \u9615 245-236-5 always \u9616 1235-2346-2 always \u9617 124-2345-2 -always \u9618 1456 +always \u9618 124-345-5 always \u9619 245-236-5 always \u961A 123-1236-5 -always \u961B 1456 +always \u961B 1235-12456-2 always \u961C 12345-34-5 -always \u961D 1456 +always \u961D 12345-34-5 always \u961E 14-2346-5 always \u961F 145-1246-5 always \u9620 24-136-3 @@ -38325,13 +38328,13 @@ always \u9621 245-2345-3 always \u9622 34-5 always \u9623 16-5 always \u9624 1-156-5 -always \u9625 1456 -always \u9626 1456 -always \u9627 1456 +always \u9625 1456-3 +always \u9626 46-2 +always \u9627 145-12356-4 always \u9628 2346-5 -always \u9629 1456 +always \u9629 24-1356-3 always \u962A 135-1236-4 -always \u962B 1456 +always \u962B 1234-356-2 always \u962C 123-1356-3 always \u962D 256-4 always \u962E 1245-12456-4 @@ -38343,17 +38346,17 @@ always \u9633 46-2 always \u9634 1456-3 always \u9635 1-136-5 always \u9636 13-346-3 -always \u9637 1456 -always \u9638 1456 +always \u9637 12-1356-3 +always \u9638 2346-5 always \u9639 245-1256-3 always \u963A 145-16-4 always \u963B 125-34-4 always \u963C 125-34-5 always \u963D 2345-2 -always \u963E 1456 +always \u963E 14-13456-4 always \u963F 345-3 always \u9640 124-25-2 -always \u9641 1456 +always \u9641 124-25-2 always \u9642 1234-126-3 always \u9643 135-13456-4 always \u9644 12345-34-5 @@ -38370,26 +38373,26 @@ always \u964E 24-34-3 always \u964F 145-25-5 always \u9650 15-2345-5 always \u9651 156-2 -always \u9652 1456 +always \u9652 13-1246-4 always \u9653 1256-3 always \u9654 13-2456-3 always \u9655 24-1236-4 -always \u9656 1456 -always \u9657 1456 +always \u9656 15-256-5 +always \u9657 245-246-5 always \u9658 15-13456-2 -always \u9659 1456 -always \u965A 1456 +always \u9659 12-123456-2 +always \u965A 12345-34-5 always \u965B 135-16-5 always \u965C 24-1236-4 always \u965D 24-1236-4 always \u965E 24-1356-3 always \u965F 1-156-5 -always \u9660 1456 +always \u9660 1234-34-3 always \u9661 145-12356-4 always \u9662 45-5 always \u9663 1-136-5 always \u9664 12-34-2 -always \u9665 1456 +always \u9665 15-2345-5 always \u9666 1456 always \u9667 1345-346-5 always \u9668 256-4 @@ -38398,7 +38401,7 @@ always \u966A 1234-356-2 always \u966B 12345-356-5 always \u966C 125-12356-3 always \u966D 16-3 -always \u966E 1456 +always \u966E 145-1246-4 always \u966F 14-123456-2 always \u9670 1456-3 always \u9671 13-1256-2 @@ -38410,15 +38413,15 @@ always \u9676 124-146-2 always \u9677 15-2345-5 always \u9678 14-34-5 always \u9679 1456 -always \u967A 1456 -always \u967B 1456 +always \u967A 15-2345-4 +always \u967B 1456-3 always \u967C 1-34-4 always \u967D 46-2 always \u967E 1245-1356-2 -always \u967F 1456 +always \u967F 24-1236-4 always \u9680 12-12346-2 -always \u9681 1456 -always \u9682 1456 +always \u9681 2345-5 +always \u9682 1456-3 always \u9683 1256-2 always \u9684 124-16-2 always \u9685 1256-2 @@ -38428,7 +38431,7 @@ always \u9688 1246-3 always \u9689 1345-346-5 always \u968A 145-1246-5 always \u968B 15-1246-2 -always \u968C 1456 +always \u968C 1236-4 always \u968D 1235-456-2 always \u968E 13-346-3 always \u968F 15-1246-2 @@ -38438,43 +38441,43 @@ always \u9692 2345-4 always \u9693 1235-1246-3 always \u9694 13-2346-2 always \u9695 256-4 -always \u9696 1456 +always \u9696 34-5 always \u9697 1246-4 always \u9698 2456-5 always \u9699 15-16-5 -always \u969A 1456 +always \u969A 124-1346-2 always \u969B 13-16-5 always \u969C 1-1346-5 -always \u969D 1456 +always \u969D 145-146-4 always \u969E 146-2 -always \u969F 1456 -always \u96A0 1456 +always \u969F 15-16-5 +always \u96A0 1456-4 always \u96A1 135-345-1 always \u96A2 1245-146-5 -always \u96A3 1456 +always \u96A3 14-1456-2 always \u96A4 124-1246-2 -always \u96A5 1456 -always \u96A6 1456 +always \u96A5 145-1356-5 +always \u96A6 1234-16-4 always \u96A7 15-1246-5 always \u96A8 15-1246-2 always \u96A9 146-5 always \u96AA 15-2345-4 -always \u96AB 1456 +always \u96AB 12345-136-3 always \u96AC 1345-16-4 -always \u96AD 1456 +always \u96AD 156-2 always \u96AE 13-16-3 -always \u96AF 1456 +always \u96AF 145-146-4 always \u96B0 15-16-2 always \u96B1 1456-4 -always \u96B2 1456 +always \u96B2 2346-2 always \u96B3 1235-1246-3 always \u96B4 14-12346-4 -always \u96B5 1456 +always \u96B5 15-16-3 always \u96B6 378-167 -always \u96B7 1456 +always \u96B7 14-16-5 always \u96B8 14-16-5 always \u96B9 1-1246-3 -always \u96BA 1456 +always \u96BA 1235-2346-5 always \u96BB 1-156-3 always \u96BC 15-123456-4 always \u96BD 13-45-5 @@ -38496,8 +38499,8 @@ always \u96CC 245-156-2 always \u96CD 235-3 always \u96CE 13-1256-3 always \u96CF 12-34-2 -always \u96D0 1456 -always \u96D1 1456 +always \u96D0 1235-34-3 +always \u96D1 125-345-2 always \u96D2 14-25-5 always \u96D3 1256-2 always \u96D4 12-12356-2 @@ -38516,23 +38519,23 @@ always \u96E0 12-12356-2 always \u96E1 14-234-5 always \u96E2 14-16-2 always \u96E3 1345-1236-2 -always \u96E4 1456 +always \u96E4 15-236-2 always \u96E5 125-345-2 -always \u96E6 1456 -always \u96E7 1456 +always \u96E6 13-16-2 +always \u96E7 13-16-2 always \u96E8 1256-4 always \u96E9 1256-2 always \u96EA 15-236-4 -always \u96EB 1456 -always \u96EC 1456 -always \u96ED 1456 -always \u96EE 1456 +always \u96EB 1345-345-4 +always \u96EC 12345-12356-4 +always \u96ED 15-2346-5 +always \u96EE 134-34-5 always \u96EF 123456-2 always \u96F0 12345-136-3 always \u96F1 1234-1346-2 always \u96F2 256-2 always \u96F3 14-16-5 -always \u96F4 1456 +always \u96F4 14-16-5 always \u96F5 1346-4 always \u96F6 14-13456-2 always \u96F7 14-356-2 @@ -38540,23 +38543,23 @@ always \u96F8 1236-2 always \u96F9 135-146-2 always \u96FA 134-1356-2 always \u96FB 145-2345-5 -always \u96FC 1456 +always \u96FC 145-1346-5 always \u96FD 1235-34-3 always \u96FE 34-5 always \u96FF 1-2456-2 always \u9700 15-1256-3 always \u9701 13-16-5 always \u9702 134-34-5 -always \u9703 1456 +always \u9703 12-136-2 always \u9704 15-246-3 always \u9705 1-345-2 always \u9706 124-13456-2 always \u9707 1-136-5 always \u9708 1234-356-5 always \u9709 134-356-2 -always \u970A 1456 +always \u970A 14-13456-2 always \u970B 245-16-3 -always \u970C 1456 +always \u970C 12-12356-3 always \u970D 1235-25-5 always \u970E 24-345-5 always \u970F 12345-356-3 @@ -38564,20 +38567,20 @@ always \u9710 12346-3 always \u9711 1-1236-3 always \u9712 1456-3 always \u9713 1345-16-2 -always \u9714 1456 -always \u9715 1456 +always \u9714 1-34-5 +always \u9715 124-123456-2 always \u9716 14-1456-2 always \u9717 1456 always \u9718 145-12346-5 always \u9719 13456-3 -always \u971A 1456 -always \u971B 1456 +always \u971A 34-5 +always \u971B 14-13456-2 always \u971C 24-456-3 always \u971D 14-13456-2 always \u971E 15-23456-2 always \u971F 1235-12346-2 always \u9720 1456-3 -always \u9721 1456 +always \u9721 134-126-5 always \u9722 134-126-5 always \u9723 256-4 always \u9724 14-234-5 @@ -38593,79 +38596,79 @@ always \u972D 2456-4 always \u972E 145-1236-5 always \u972F 145-1356-5 always \u9730 15-2345-5 -always \u9731 1456 +always \u9731 1256-5 always \u9732 14-34-5 -always \u9733 1456 -always \u9734 1456 +always \u9733 14-12346-2 +always \u9734 145-2456-5 always \u9735 13-16-2 -always \u9736 1456 -always \u9737 1456 +always \u9736 1234-1346-2 +always \u9737 46-2 always \u9738 135-345-5 always \u9739 1234-16-3 always \u973A 1246-2 always \u973B 1456 -always \u973C 1456 +always \u973C 15-16-4 always \u973D 13-16-5 always \u973E 134-2456-2 always \u973F 134-1356-5 -always \u9740 1456 -always \u9741 1456 +always \u9740 134-1356-2 +always \u9741 14-356-2 always \u9742 14-16-5 always \u9743 1235-25-5 always \u9744 2456-4 -always \u9745 1456 +always \u9745 12345-356-5 always \u9746 145-2456-5 always \u9747 14-12346-2 always \u9748 14-13456-2 always \u9749 2456-5 -always \u974A 1456 +always \u974A 12345-1356-3 always \u974B 14-16-5 -always \u974C 1456 +always \u974C 135-146-4 always \u974D 1456 -always \u974E 1456 -always \u974F 1456 -always \u9750 1456 -always \u9751 1456 +always \u974E 1235-2346-5 +always \u974F 1235-2346-5 +always \u9750 135-13456-5 +always \u9751 245-13456-3 always \u9752 245-13456-3 always \u9753 13-13456-5 -always \u9754 1456 -always \u9755 1456 +always \u9754 124-2345-3 +always \u9755 1-136-3 always \u9756 13-13456-5 -always \u9757 1456 +always \u9757 12-1356-5 always \u9758 245-13456-5 always \u9759 13-13456-5 always \u975A 13-13456-5 always \u975B 145-2345-5 always \u975C 13-13456-5 -always \u975D 1456 +always \u975D 124-2345-3 always \u975E 12345-356-3 -always \u975F 1456 +always \u975F 12345-356-3 always \u9760 123-146-5 always \u9761 134-16-4 always \u9762 134-2345-5 -always \u9763 1456 -always \u9764 1456 +always \u9763 134-2345-5 +always \u9764 1234-146-5 always \u9765 346-5 always \u9766 124-2345-4 -always \u9767 1456 +always \u9767 1235-1246-5 always \u9768 346-5 always \u9769 13-2346-2 always \u976A 145-13456-3 -always \u976B 1456 +always \u976B 12-345-3 always \u976C 123-1236-5 -always \u976D 1456 +always \u976D 1245-136-5 always \u976E 145-16-5 -always \u976F 1456 +always \u976F 145-34-5 always \u9770 135-345-1 -always \u9771 1456 +always \u9771 1245-136-5 always \u9772 245-1456-2 always \u9773 13-1456-5 always \u9774 15-236-3 -always \u9775 1456 +always \u9775 1345-234-4 always \u9776 135-345-4 always \u9777 1456-4 always \u9778 15-345-5 -always \u9779 1456 +always \u9779 1345-345-5 always \u977A 134-126-5 always \u977B 125-34-4 always \u977C 145-345-2 @@ -38679,31 +38682,31 @@ always \u9783 1235-12346-2 always \u9784 1234-146-2 always \u9785 46-3 always \u9786 1456 -always \u9787 1456 +always \u9787 1456-3 always \u9788 13-2346-2 -always \u9789 1456 +always \u9789 124-146-2 always \u978A 13-16-2 always \u978B 15-346-2 -always \u978C 1456 +always \u978C 1236-3 always \u978D 1236-3 always \u978E 1235-136-2 always \u978F 13-12346-4 always \u9790 1456 always \u9791 145-345-2 -always \u9792 1456 -always \u9793 1456 +always \u9792 245-246-3 +always \u9793 124-13456-3 always \u9794 134-1236-2 -always \u9795 1456 -always \u9796 1456 +always \u9795 13456-5 +always \u9796 15-1246-3 always \u9797 124-246-2 always \u9798 245-246-5 always \u9799 45-3 always \u979A 123-12346-5 -always \u979B 1456 +always \u979B 135-1356-4 always \u979C 124-345-5 always \u979D 1-1346-4 always \u979E 135-13456-4 -always \u979F 1456 +always \u979F 123-25-5 always \u97A0 13-1256-2 always \u97A1 135-345-1 always \u97A2 15-346-5 @@ -38711,9 +38714,9 @@ always \u97A3 1245-12356-2 always \u97A4 135-1346-3 always \u97A5 1356-3 always \u97A6 245-234-3 -always \u97A7 1456 +always \u97A7 245-234-3 always \u97A8 1235-2346-2 -always \u97A9 1456 +always \u97A9 15-246-5 always \u97AA 134-12356-2 always \u97AB 13-1256-2 always \u97AC 13-2345-3 @@ -38721,40 +38724,40 @@ always \u97AD 135-2345-3 always \u97AE 145-16-3 always \u97AF 13-2345-3 always \u97B0 1456 -always \u97B1 1456 -always \u97B2 1456 +always \u97B1 124-146-3 +always \u97B2 13-12356-3 always \u97B3 124-345-5 -always \u97B4 1456 -always \u97B5 1456 +always \u97B4 135-356-5 +always \u97B5 15-346-2 always \u97B6 1234-1236-2 always \u97B7 13-2346-2 -always \u97B8 1456 +always \u97B8 135-16-5 always \u97B9 123-25-5 always \u97BA 1456 always \u97BB 14-1256-5 -always \u97BC 1456 -always \u97BD 1456 -always \u97BE 1456 +always \u97BC 13-1246-5 +always \u97BD 245-246-2 +always \u97BE 15-236-3 always \u97BF 13-16-3 -always \u97C0 1456 +always \u97C0 13-2345-3 always \u97C1 13-46-3 -always \u97C2 1456 +always \u97C2 12-1236-5 always \u97C3 145-345-2 always \u97C4 25-5 always \u97C5 15-2345-4 always \u97C6 245-2345-3 always \u97C7 145-34-2 -always \u97C8 1456 +always \u97C8 35-5 always \u97C9 13-2345-3 -always \u97CA 1456 +always \u97CA 14-1236-2 always \u97CB 1246-2 always \u97CC 1245-136-5 always \u97CD 12345-34-2 always \u97CE 134-356-5 always \u97CF 13-45-5 always \u97D0 13-23456-2 -always \u97D1 1456 -always \u97D2 1456 +always \u97D1 1246-4 +always \u97D2 245-246-5 always \u97D3 1235-1236-2 always \u97D4 12-1346-5 always \u97D5 135-345-1 @@ -38762,41 +38765,41 @@ always \u97D6 1245-12356-4 always \u97D7 256-5 always \u97D8 24-2346-5 always \u97D9 1246-4 -always \u97DA 1456 -always \u97DB 1456 +always \u97DA 13-2346-2 +always \u97DB 135-356-5 always \u97DC 124-146-3 always \u97DD 13-12356-3 always \u97DE 256-4 always \u97DF 13-146-3 -always \u97E0 1456 +always \u97E0 135-16-5 always \u97E1 1246-4 -always \u97E2 1456 +always \u97E2 1235-1246-5 always \u97E3 145-34-2 -always \u97E4 1456 +always \u97E4 35-5 always \u97E5 145-34-2 always \u97E6 1246-2 always \u97E7 1245-136-5 -always \u97E8 1456 +always \u97E8 12345-34-2 always \u97E9 1235-1236-2 always \u97EA 1246-4 always \u97EB 256-4 always \u97EC 124-146-3 always \u97ED 13-234-4 -always \u97EE 1456 -always \u97EF 1456 +always \u97EE 13-234-4 +always \u97EF 15-2345-3 always \u97F0 15-346-5 always \u97F1 15-2345-3 -always \u97F2 1456 +always \u97F2 13-16-3 always \u97F3 1456-3 -always \u97F4 1456 +always \u97F4 125-345-2 always \u97F5 256-5 always \u97F6 24-146-2 -always \u97F7 1456 +always \u97F7 14-2346-5 always \u97F8 1234-1356-2 always \u97F9 1235-1356-2 always \u97FA 13456-3 always \u97FB 256-5 -always \u97FC 1456 +always \u97FC 1234-1356-2 always \u97FD 1236-3 always \u97FE 1456-3 always \u97FF 15-46-4 @@ -38809,9 +38812,9 @@ always \u9805 15-46-5 always \u9806 24-123456-5 always \u9807 1235-1236-3 always \u9808 15-1256-3 -always \u9809 1456 +always \u9809 16-2 always \u980A 15-1256-5 -always \u980B 1456 +always \u980B 13-34-5 always \u980C 15-12346-5 always \u980D 123-1246-4 always \u980E 245-16-2 @@ -38820,62 +38823,62 @@ always \u9810 1256-5 always \u9811 12456-2 always \u9812 135-1236-3 always \u9813 145-123456-5 -always \u9814 1456 -always \u9815 1456 +always \u9814 145-16-2 +always \u9815 145-1236-3 always \u9816 1234-1236-5 always \u9817 1234-126-4 always \u9818 14-13456-4 -always \u9819 1456 -always \u981A 1456 +always \u9819 245-2346-5 +always \u981A 13-13456-4 always \u981B 14-356-4 always \u981C 1235-1236-2 always \u981D 245-246-3 always \u981E 2346-5 -always \u981F 1456 +always \u981F 2346-2 always \u9820 1246-4 always \u9821 15-346-2 -always \u9822 1456 -always \u9823 1456 +always \u9822 13-35-3 +always \u9823 24-136-4 always \u9824 16-2 -always \u9825 1456 +always \u9825 24-136-4 always \u9826 1235-2456-2 always \u9827 145-1246-3 always \u9828 1234-2345-3 always \u9829 1234-13456-3 -always \u982A 1456 +always \u982A 14-356-5 always \u982B 12345-34-4 -always \u982C 1456 +always \u982C 13-23456-2 always \u982D 124-12356-2 -always \u982E 1456 +always \u982E 1235-1246-5 always \u982F 123-1246-2 always \u9830 13-23456-2 -always \u9831 1456 +always \u9831 14-2346-5 always \u9832 124-13456-4 -always \u9833 1456 -always \u9834 1456 +always \u9833 12-1356-3 +always \u9834 13456-4 always \u9835 13-256-3 -always \u9836 1456 +always \u9836 1235-34-2 always \u9837 1235-1236-2 always \u9838 13-13456-4 always \u9839 124-1246-2 -always \u983A 1456 +always \u983A 124-1246-2 always \u983B 1234-1456-2 -always \u983C 1456 -always \u983D 1456 -always \u983E 1456 -always \u983F 1456 -always \u9840 1456 +always \u983C 14-2456-5 +always \u983D 124-1246-2 +always \u983E 125-156-3 +always \u983F 125-156-3 +always \u9840 12-1246-2 always \u9841 145-13456-5 -always \u9842 1456 +always \u9842 14-2456-5 always \u9843 2345-2 always \u9844 1235-1236-5 always \u9845 13-2345-3 always \u9846 123-2346-3 -always \u9847 1456 +always \u9847 245-1246-5 always \u9848 13-235-4 always \u9849 245-1456-3 always \u984A 16-2 -always \u984B 1456 +always \u984B 15-2456-3 always \u984C 124-16-2 always \u984D 2346-2 always \u984E 2346-5 @@ -38884,33 +38887,33 @@ always \u9850 123456-5 always \u9851 123-1236-4 always \u9852 235-2 always \u9853 1-12456-3 -always \u9854 1456 -always \u9855 1456 -always \u9856 1456 +always \u9854 2345-2 +always \u9855 15-2345-4 +always \u9856 15-1456-5 always \u9857 16-4 always \u9858 45-5 always \u9859 15-1346-4 -always \u985A 1456 +always \u985A 145-2345-3 always \u985B 145-2345-3 always \u985C 13-46-4 always \u985D 123-34-3 always \u985E 14-356-5 always \u985F 14-246-2 always \u9860 1234-246-4 -always \u9861 1456 +always \u9861 16-5 always \u9862 134-1236-2 always \u9863 245-34-5 always \u9864 246-2 always \u9865 1235-146-5 -always \u9866 1456 +always \u9866 245-246-2 always \u9867 13-34-5 -always \u9868 1456 +always \u9868 15-256-5 always \u9869 2345-4 always \u986A 1235-1246-5 always \u986B 1-1236-5 -always \u986C 1456 -always \u986D 1456 -always \u986E 1456 +always \u986C 1245-34-2 +always \u986D 1235-12346-3 +always \u986E 135-1456-3 always \u986F 15-2345-4 always \u9870 1234-1456-2 always \u9871 14-34-2 @@ -38939,21 +38942,21 @@ always \u9887 1234-126-4 always \u9888 13-13456-4 always \u9889 15-346-2 always \u988A 13-23456-2 -always \u988B 1456 +always \u988B 124-2345-1 always \u988C 1235-1236-2 always \u988D 13456-4 -always \u988E 1456 +always \u988E 13-235-4 always \u988F 1235-2456-2 always \u9890 16-2 always \u9891 1234-1456-2 -always \u9892 1456 +always \u9892 1235-1246-5 always \u9893 124-1246-2 always \u9894 1235-1236-2 -always \u9895 1456 +always \u9895 13456-4 always \u9896 13456-4 always \u9897 123-2346-3 always \u9898 124-16-2 -always \u9899 1456 +always \u9899 235-2 always \u989A 2346-5 always \u989B 1-12456-3 always \u989C 2345-2 @@ -38963,29 +38966,29 @@ always \u989F 134-1236-2 always \u98A0 145-2345-3 always \u98A1 15-1346-4 always \u98A2 1235-146-5 -always \u98A3 1456 +always \u98A3 14-356-5 always \u98A4 1-1236-5 -always \u98A5 1456 +always \u98A5 1245-34-2 always \u98A6 1234-1456-2 always \u98A7 245-45-2 always \u98A8 12345-1356-3 always \u98A9 135-246-3 always \u98AA 1456 -always \u98AB 1456 +always \u98AB 12345-34-2 always \u98AC 15-23456-3 always \u98AD 1-1236-4 always \u98AE 135-246-3 always \u98AF 15-345-5 -always \u98B0 1456 +always \u98B0 135-345-2 always \u98B1 124-2456-2 always \u98B2 14-346-5 always \u98B3 13-35-3 -always \u98B4 1456 -always \u98B5 1456 +always \u98B4 15-45-5 +always \u98B5 24-146-5 always \u98B6 13-1256-5 -always \u98B7 1456 +always \u98B7 135-16-3 always \u98B8 15-156-3 -always \u98B9 1456 +always \u98B9 1246-4 always \u98BA 46-2 always \u98BB 246-2 always \u98BC 15-12356-3 @@ -38995,83 +38998,83 @@ always \u98BF 12345-1236-2 always \u98C0 14-234-2 always \u98C1 15-16-2 always \u98C2 14-246-2 -always \u98C3 1456 +always \u98C3 1234-246-3 always \u98C4 1234-246-3 -always \u98C5 1456 +always \u98C5 14-234-2 always \u98C6 135-246-3 -always \u98C7 1456 -always \u98C8 1456 +always \u98C7 135-246-3 +always \u98C8 135-246-4 always \u98C9 14-246-2 always \u98CA 1456 always \u98CB 15-2346-5 always \u98CC 12345-1356-3 -always \u98CD 1456 +always \u98CD 135-246-3 always \u98CE 12345-1356-3 -always \u98CF 1456 -always \u98D0 1456 +always \u98CF 46-2 +always \u98D0 1-1236-4 always \u98D1 135-246-3 always \u98D2 15-345-5 always \u98D3 13-1256-5 -always \u98D4 1456 +always \u98D4 15-156-3 always \u98D5 15-12356-3 -always \u98D6 1456 -always \u98D7 1456 +always \u98D6 246-2 +always \u98D7 14-234-2 always \u98D8 1234-246-3 always \u98D9 135-246-3 -always \u98DA 1456 +always \u98DA 135-246-3 always \u98DB 12345-356-3 -always \u98DC 1456 -always \u98DD 1456 +always \u98DC 12345-1236-3 +always \u98DD 12345-356-3 always \u98DE 12345-356-3 always \u98DF 24-156-2 -always \u98E0 1456 -always \u98E1 1456 +always \u98E0 24-156-2 +always \u98E1 245-1236-3 always \u98E2 13-16-3 always \u98E3 145-13456-5 -always \u98E4 1456 +always \u98E4 15-156-5 always \u98E5 124-25-3 -always \u98E6 1456 +always \u98E6 1-1236-3 always \u98E7 15-123456-3 always \u98E8 15-46-4 always \u98E9 124-123456-2 always \u98EA 1245-136-5 always \u98EB 1256-5 -always \u98EC 1456 +always \u98EC 13-45-5 always \u98ED 12-156-5 -always \u98EE 1456 +always \u98EE 1456-4 always \u98EF 12345-1236-5 -always \u98F0 1456 -always \u98F1 1456 +always \u98F0 12345-1236-5 +always \u98F1 15-123456-3 always \u98F2 1456-4 -always \u98F3 1456 +always \u98F3 1-34-5 always \u98F4 16-2 -always \u98F5 1456 +always \u98F5 1-2456-4 always \u98F6 135-16-5 -always \u98F7 1456 -always \u98F8 1456 +always \u98F7 13-346-4 +always \u98F8 124-146-3 always \u98F9 14-234-4 always \u98FA 245-156-2 -always \u98FB 1456 +always \u98FB 124-346-5 always \u98FC 15-156-5 always \u98FD 135-146-4 always \u98FE 24-156-5 -always \u98FF 1456 +always \u98FF 145-25-5 always \u9900 1235-2456-5 -always \u9901 1456 +always \u9901 1245-136-5 always \u9902 124-2345-4 always \u9903 13-246-4 -always \u9904 1456 +always \u9904 13-23456-2 always \u9905 135-13456-4 -always \u9906 1456 +always \u9906 246-2 always \u9907 124-12346-2 always \u9908 245-156-2 always \u9909 15-46-4 always \u990A 46-4 -always \u990B 1456 +always \u990B 46-4 always \u990C 156-4 always \u990D 2345-5 -always \u990E 1456 -always \u990F 1456 +always \u990E 14-2346-1 +always \u990F 16-3 always \u9910 245-1236-3 always \u9911 135-126-3 always \u9912 1345-356-4 @@ -39081,20 +39084,20 @@ always \u9915 13-256-5 always \u9916 145-12356-5 always \u9917 15-34-5 always \u9918 1256-2 -always \u9919 1456 +always \u9919 24-156-5 always \u991A 246-2 always \u991B 1235-123456-2 -always \u991C 1456 -always \u991D 1456 +always \u991C 13-25-4 +always \u991D 24-156-5 always \u991E 13-2345-5 always \u991F 1-1246-5 -always \u9920 1456 +always \u9920 135-13456-4 always \u9921 15-2345-5 -always \u9922 1456 -always \u9923 1456 +always \u9922 135-34-5 +always \u9923 346-5 always \u9924 124-1236-2 always \u9925 12345-356-4 -always \u9926 1456 +always \u9926 1-1346-3 always \u9927 1246-5 always \u9928 13-12456-4 always \u9929 2346-5 @@ -39108,34 +39111,34 @@ always \u9930 1-1236-3 always \u9931 1235-12356-2 always \u9932 16-5 always \u9933 124-1346-2 -always \u9934 1456 +always \u9934 12345-136-3 always \u9935 1246-5 -always \u9936 1456 -always \u9937 1456 -always \u9938 1456 -always \u9939 1456 +always \u9936 13-34-4 +always \u9937 12-345-3 +always \u9938 15-12346-5 +always \u9939 124-1346-2 always \u993A 135-126-2 -always \u993B 1456 +always \u993B 13-146-3 always \u993C 15-16-5 always \u993D 123-1246-5 always \u993E 14-234-5 always \u993F 15-12356-3 -always \u9940 1456 +always \u9940 124-146-2 always \u9941 346-5 -always \u9942 1456 +always \u9942 256-2 always \u9943 134-126-2 -always \u9944 1456 +always \u9944 124-1346-2 always \u9945 134-1236-2 -always \u9946 1456 +always \u9946 135-16-5 always \u9947 1256-5 always \u9948 15-234-3 always \u9949 13-1456-4 -always \u994A 1456 +always \u994A 15-1236-4 always \u994B 123-1246-5 always \u994C 1-12456-5 -always \u994D 1456 +always \u994D 24-1236-5 always \u994E 12-156-5 -always \u994F 1456 +always \u994F 145-1236-5 always \u9950 16-5 always \u9951 13-16-3 always \u9952 1245-146-2 @@ -39146,19 +39149,19 @@ always \u9956 1235-1246-5 always \u9957 15-46-4 always \u9958 1-1236-3 always \u9959 12345-136-3 -always \u995A 1456 +always \u995A 1235-2456-5 always \u995B 134-1356-2 always \u995C 2345-5 -always \u995D 1456 +always \u995D 134-126-2 always \u995E 12-1236-2 always \u995F 15-46-5 -always \u9960 1456 +always \u9960 14-25-2 always \u9961 125-12456-5 -always \u9962 1456 -always \u9963 1456 -always \u9964 1456 +always \u9962 1345-1346-4 +always \u9963 24-156-2 +always \u9964 145-13456-5 always \u9965 13-16-3 -always \u9966 1456 +always \u9966 124-25-3 always \u9967 124-1346-2 always \u9968 124-123456-2 always \u9969 15-16-5 @@ -39171,62 +39174,62 @@ always \u996F 13-2345-5 always \u9970 24-156-5 always \u9971 135-146-4 always \u9972 15-156-5 -always \u9973 1456 +always \u9973 145-25-5 always \u9974 16-2 always \u9975 156-4 always \u9976 1245-146-2 always \u9977 15-46-4 -always \u9978 1456 -always \u9979 1456 +always \u9978 13-23456-2 +always \u9979 14-2346-1 always \u997A 13-246-4 -always \u997B 1456 +always \u997B 16-3 always \u997C 135-13456-4 always \u997D 135-126-2 -always \u997E 1456 +always \u997E 145-12356-5 always \u997F 2346-5 always \u9980 1256-2 always \u9981 1345-356-4 -always \u9982 1456 -always \u9983 1456 +always \u9982 13-256-5 +always \u9983 13-25-4 always \u9984 1235-123456-2 always \u9985 15-2345-5 always \u9986 13-12456-4 -always \u9987 1456 +always \u9987 12-345-3 always \u9988 123-1246-5 -always \u9989 1456 +always \u9989 13-34-4 always \u998A 15-12356-3 always \u998B 12-1236-2 -always \u998C 1456 +always \u998C 346-5 always \u998D 134-126-2 -always \u998E 1456 +always \u998E 135-126-2 always \u998F 14-234-5 always \u9990 15-234-3 always \u9991 13-1456-4 always \u9992 134-1236-2 -always \u9993 1456 +always \u9993 15-1236-4 always \u9994 1-12456-5 -always \u9995 1456 +always \u9995 1345-1346-4 always \u9996 24-12356-4 always \u9997 123-1246-2 always \u9998 13-25-2 always \u9999 15-46-3 -always \u999A 1456 -always \u999B 1456 +always \u999A 12345-136-2 +always \u999B 135-345-2 always \u999C 1345-16-4 always \u999D 135-16-5 always \u999E 135-126-2 -always \u999F 1456 -always \u99A0 1456 +always \u999F 124-34-2 +always \u99A0 1235-1236-3 always \u99A1 12345-356-3 -always \u99A2 1456 +always \u99A2 13-2345-3 always \u99A3 1236-4 -always \u99A4 1456 +always \u99A4 2456-4 always \u99A5 12345-34-5 always \u99A6 15-2345-3 always \u99A7 123456-3 always \u99A8 15-1456-3 -always \u99A9 1456 -always \u99AA 1456 +always \u99A9 12345-136-2 +always \u99AA 135-1456-3 always \u99AB 15-13456-3 always \u99AC 134-345-4 always \u99AD 1256-5 @@ -39238,27 +39241,27 @@ always \u99B2 1-2346-2 always \u99B3 12-156-2 always \u99B4 15-256-2 always \u99B5 1-34-5 -always \u99B6 1456 -always \u99B7 1456 -always \u99B8 1456 +always \u99B6 1-156-3 +always \u99B7 1234-356-5 +always \u99B8 15-1456-5 always \u99B9 1245-156-5 always \u99BA 15-345-5 always \u99BB 2345-4 -always \u99BC 1456 +always \u99BC 123456-2 always \u99BD 1-156-2 -always \u99BE 1456 -always \u99BF 1456 -always \u99C0 1456 +always \u99BE 145-1236-5 +always \u99BF 14-1256-2 +always \u99C0 234-2 always \u99C1 135-126-2 always \u99C2 135-146-4 always \u99C3 13-236-2 -always \u99C4 1456 -always \u99C5 1456 -always \u99C6 1456 +always \u99C4 124-25-2 +always \u99C5 16-5 +always \u99C6 245-1256-3 always \u99C7 135-345-1 -always \u99C8 1456 +always \u99C8 245-1256-3 always \u99C9 13-235-3 -always \u99CA 1456 +always \u99CA 135-126-4 always \u99CB 1-146-3 always \u99CC 45-3 always \u99CD 1234-1356-3 @@ -39274,24 +39277,24 @@ always \u99D6 14-13456-2 always \u99D7 1-136-4 always \u99D8 124-2456-2 always \u99D9 12345-34-5 -always \u99DA 1456 +always \u99DA 46-4 always \u99DB 24-156-4 always \u99DC 135-16-5 always \u99DD 124-25-2 -always \u99DE 1456 +always \u99DE 124-25-2 always \u99DF 15-156-5 -always \u99E0 1456 -always \u99E1 1456 +always \u99E0 14-234-2 +always \u99E1 134-345-5 always \u99E2 1234-2345-2 always \u99E3 124-146-2 always \u99E4 1-156-5 always \u99E5 15-1256-5 -always \u99E6 1456 +always \u99E6 124-1356-2 always \u99E7 145-12346-5 -always \u99E8 1456 +always \u99E8 15-256-2 always \u99E9 245-45-2 always \u99EA 24-136-3 -always \u99EB 1456 +always \u99EB 13-235-3 always \u99EC 156-4 always \u99ED 1235-2456-5 always \u99EE 135-126-2 @@ -39299,9 +39302,9 @@ always \u99EF 1456 always \u99F0 1456-3 always \u99F1 14-25-5 always \u99F2 1456 -always \u99F3 1456 +always \u99F3 145-1236-5 always \u99F4 15-346-5 -always \u99F5 1456 +always \u99F5 14-234-2 always \u99F6 13-1256-2 always \u99F7 15-12346-4 always \u99F8 245-1456-3 @@ -39312,7 +39315,7 @@ always \u99FC 124-34-2 always \u99FD 15-45-3 always \u99FE 124-1246-5 always \u99FF 13-256-5 -always \u9A00 1456 +always \u9A00 2346-2 always \u9A01 12-1356-4 always \u9A02 15-13456-3 always \u9A03 2456-2 @@ -39320,50 +39323,50 @@ always \u9A04 14-34-5 always \u9A05 1-1246-3 always \u9A06 1-12356-3 always \u9A07 24-2346-5 -always \u9A08 1456 +always \u9A08 1234-2345-2 always \u9A09 123-123456-3 always \u9A0A 124-146-2 always \u9A0B 14-2456-2 -always \u9A0C 1456 +always \u9A0C 125-12346-3 always \u9A0D 123-2346-5 always \u9A0E 245-16-2 always \u9A0F 245-16-2 -always \u9A10 1456 +always \u9A10 2345-5 always \u9A11 12345-356-3 -always \u9A12 1456 -always \u9A13 1456 +always \u9A12 15-146-3 +always \u9A13 2345-4 always \u9A14 13-346-2 always \u9A15 246-4 always \u9A16 34-5 -always \u9A17 1456 -always \u9A18 1456 +always \u9A17 1234-2345-5 +always \u9A18 245-12346-3 always \u9A19 1234-2345-5 always \u9A1A 245-2345-2 always \u9A1B 12345-356-3 always \u9A1C 1235-456-2 always \u9A1D 13-2345-3 always \u9A1E 1235-25-5 -always \u9A1F 1456 +always \u9A1F 1256-5 always \u9A20 124-16-2 -always \u9A21 1456 +always \u9A21 245-45-2 always \u9A22 15-23456-2 always \u9A23 125-12346-3 always \u9A24 123-1246-2 always \u9A25 1245-12356-2 -always \u9A26 1456 +always \u9A26 15-156-3 always \u9A27 13-35-3 -always \u9A28 1456 +always \u9A28 124-25-2 always \u9A29 123-1246-5 always \u9A2A 15-12356-3 always \u9A2B 245-2345-3 always \u9A2C 12-1356-2 always \u9A2D 1-156-5 always \u9A2E 14-234-2 -always \u9A2F 1456 +always \u9A2F 1234-1346-2 always \u9A30 124-1356-2 always \u9A31 15-16-3 always \u9A32 245-146-4 -always \u9A33 1456 +always \u9A33 145-34-2 always \u9A34 2345-5 always \u9A35 45-2 always \u9A36 125-12356-3 @@ -39371,8 +39374,8 @@ always \u9A37 15-146-3 always \u9A38 24-1236-5 always \u9A39 245-16-2 always \u9A3A 1-156-5 -always \u9A3B 1456 -always \u9A3C 1456 +always \u9A3B 24-456-4 +always \u9A3C 14-34-5 always \u9A3D 15-16-2 always \u9A3E 14-25-2 always \u9A3F 1-1346-3 @@ -39383,35 +39386,35 @@ always \u9A43 1234-246-5 always \u9A44 245-12346-3 always \u9A45 245-1256-3 always \u9A46 135-16-5 -always \u9A47 1456 +always \u9A47 1-156-5 always \u9A48 1256-5 always \u9A49 15-1256-3 always \u9A4A 1235-35-2 -always \u9A4B 1456 +always \u9A4B 135-126-3 always \u9A4C 15-34-5 always \u9A4D 15-246-3 always \u9A4E 14-1456-2 always \u9A4F 12-1236-4 always \u9A50 145-123456-3 -always \u9A51 1456 +always \u9A51 14-234-2 always \u9A52 124-25-2 always \u9A53 125-1356-3 always \u9A54 124-1236-2 always \u9A55 13-246-3 always \u9A56 124-346-4 always \u9A57 2345-5 -always \u9A58 1456 +always \u9A58 14-25-2 always \u9A59 1-1236-3 always \u9A5A 13-13456-3 always \u9A5B 16-5 -always \u9A5C 1456 -always \u9A5D 1456 +always \u9A5C 346-5 +always \u9A5D 124-25-3 always \u9A5E 135-1456-3 always \u9A5F 125-12356-5 always \u9A60 2345-5 -always \u9A61 1456 +always \u9A61 1234-1356-2 always \u9A62 14-1256-2 -always \u9A63 1456 +always \u9A63 124-1356-2 always \u9A64 15-46-3 always \u9A65 13-16-5 always \u9A66 24-456-3 @@ -39426,7 +39429,7 @@ always \u9A6E 124-25-2 always \u9A6F 15-256-2 always \u9A70 12-156-2 always \u9A71 245-1256-3 -always \u9A72 1456 +always \u9A72 1245-156-5 always \u9A73 135-126-2 always \u9A74 14-1256-2 always \u9A75 125-1346-4 @@ -39443,29 +39446,29 @@ always \u9A7F 16-5 always \u9A80 124-2456-2 always \u9A81 15-246-3 always \u9A82 134-345-5 -always \u9A83 1456 +always \u9A83 1456-3 always \u9A84 13-246-3 always \u9A85 1235-35-2 always \u9A86 14-25-5 always \u9A87 1235-2456-5 always \u9A88 1234-2345-2 -always \u9A89 1456 +always \u9A89 135-246-3 always \u9A8A 14-16-2 always \u9A8B 12-1356-4 always \u9A8C 2345-5 -always \u9A8D 1456 -always \u9A8E 1456 +always \u9A8D 15-1456-3 +always \u9A8E 245-1456-3 always \u9A8F 13-256-5 always \u9A90 245-16-2 always \u9A91 245-16-2 always \u9A92 123-2346-5 always \u9A93 1-1246-3 -always \u9A94 1456 -always \u9A95 1456 +always \u9A94 125-12346-3 +always \u9A95 15-34-5 always \u9A96 245-1236-3 always \u9A97 1234-2345-5 always \u9A98 1-156-5 -always \u9A99 1456 +always \u9A99 123-1246-2 always \u9A9A 15-146-3 always \u9A9B 34-5 always \u9A9C 146-2 @@ -39478,47 +39481,47 @@ always \u9AA2 245-12346-3 always \u9AA3 12-1236-4 always \u9AA4 125-12356-5 always \u9AA5 13-16-5 -always \u9AA6 1456 +always \u9AA6 24-456-3 always \u9AA7 15-46-3 always \u9AA8 13-34-4 -always \u9AA9 1456 -always \u9AAA 1456 +always \u9AA9 1246-4 +always \u9AAA 1246-4 always \u9AAB 1246-4 -always \u9AAC 1456 +always \u9AAC 1256-2 always \u9AAD 13-1236-5 -always \u9AAE 1456 +always \u9AAE 16-5 always \u9AAF 1346-3 always \u9AB0 24-2456-4 always \u9AB1 15-346-5 -always \u9AB2 1456 +always \u9AB2 135-146-3 always \u9AB3 135-16-5 always \u9AB4 12-156-3 -always \u9AB5 1456 -always \u9AB6 1456 +always \u9AB5 124-16-4 +always \u9AB6 145-16-4 always \u9AB7 123-34-3 always \u9AB8 1235-2456-2 always \u9AB9 245-246-3 -always \u9ABA 1456 +always \u9ABA 13-12356-5 always \u9ABB 123-35-5 always \u9ABC 13-2346-2 -always \u9ABD 1456 +always \u9ABD 124-1246-4 always \u9ABE 13-1356-4 always \u9ABF 1234-2345-2 always \u9AC0 135-16-5 always \u9AC1 123-2346-5 always \u9AC2 123-345-5 -always \u9AC3 1456 -always \u9AC4 1456 +always \u9AC3 1256-2 +always \u9AC4 15-1246-4 always \u9AC5 14-12356-2 always \u9AC6 135-126-2 always \u9AC7 15-246-3 -always \u9AC8 1456 -always \u9AC9 1456 +always \u9AC8 1234-1346-2 +always \u9AC9 135-126-3 always \u9ACA 245-156-3 always \u9ACB 123-12456-3 always \u9ACC 135-1456-5 always \u9ACD 134-126-2 -always \u9ACE 1456 +always \u9ACE 14-246-2 always \u9ACF 14-12356-2 always \u9AD0 15-246-3 always \u9AD1 145-34-2 @@ -39527,37 +39530,37 @@ always \u9AD3 15-1246-4 always \u9AD4 124-16-4 always \u9AD5 135-1456-5 always \u9AD6 123-12456-3 -always \u9AD7 1456 +always \u9AD7 14-34-2 always \u9AD8 13-146-3 -always \u9AD9 1456 -always \u9ADA 1456 -always \u9ADB 1456 +always \u9AD9 13-146-3 +always \u9ADA 245-246-5 +always \u9ADB 123-146-3 always \u9ADC 245-246-3 -always \u9ADD 1456 -always \u9ADE 1456 +always \u9ADD 14-146-5 +always \u9ADE 125-146-5 always \u9ADF 135-246-3 -always \u9AE0 1456 +always \u9AE0 123-123456-3 always \u9AE1 123-123456-3 -always \u9AE2 1456 +always \u9AE2 124-16-5 always \u9AE3 12345-1346-4 -always \u9AE4 1456 -always \u9AE5 1456 +always \u9AE4 15-234-3 +always \u9AE5 1245-1236-2 always \u9AE6 134-146-2 always \u9AE7 145-1236-5 -always \u9AE8 1456 -always \u9AE9 1456 -always \u9AEA 1456 +always \u9AE8 123-123456-3 +always \u9AE9 135-1456-5 +always \u9AEA 12345-345-5 always \u9AEB 124-246-2 always \u9AEC 1234-16-3 always \u9AED 125-156-3 always \u9AEE 12345-345-4 always \u9AEF 1245-1236-2 -always \u9AF0 1456 +always \u9AF0 124-16-5 always \u9AF1 1234-146-5 always \u9AF2 135-16-5 always \u9AF3 134-146-2 -always \u9AF4 1456 -always \u9AF5 1456 +always \u9AF4 12345-34-2 +always \u9AF5 156-2 always \u9AF6 1245-12346-2 always \u9AF7 245-1256-5 always \u9AF8 1456 @@ -39567,72 +39570,72 @@ always \u9AFB 13-16-5 always \u9AFC 1234-1356-2 always \u9AFD 1-35-3 always \u9AFE 24-146-3 -always \u9AFF 1456 -always \u9B00 1456 +always \u9AFF 24-345-3 +always \u9B00 124-16-5 always \u9B01 14-16-5 -always \u9B02 1456 +always \u9B02 135-1456-5 always \u9B03 125-12346-3 always \u9B04 124-16-5 always \u9B05 1234-1356-2 always \u9B06 15-12346-3 -always \u9B07 1456 +always \u9B07 1-1356-3 always \u9B08 245-45-2 -always \u9B09 1456 +always \u9B09 125-12346-3 always \u9B0A 24-123456-5 always \u9B0B 13-2345-4 always \u9B0C 145-25-4 always \u9B0D 1235-34-2 always \u9B0E 14-345-5 -always \u9B0F 1456 +always \u9B0F 13-234-3 always \u9B10 245-16-2 always \u9B11 14-2345-2 always \u9B12 1-136-4 always \u9B13 135-1456-5 -always \u9B14 1456 +always \u9B14 1234-1356-2 always \u9B15 134-2456-5 always \u9B16 15-1236-3 always \u9B17 134-1236-2 always \u9B18 134-1236-2 always \u9B19 15-1356-3 always \u9B1A 15-1256-3 -always \u9B1B 1456 -always \u9B1C 1456 -always \u9B1D 1456 +always \u9B1B 14-346-5 +always \u9B1C 245-2345-3 +always \u9B1D 245-2345-3 always \u9B1E 1345-12346-2 always \u9B1F 1235-12456-2 always \u9B20 13-35-3 -always \u9B21 1456 +always \u9B21 1345-13456-2 always \u9B22 135-1456-5 always \u9B23 14-346-5 always \u9B24 1245-1346-2 always \u9B25 145-12356-5 -always \u9B26 1456 +always \u9B26 145-12356-5 always \u9B27 1345-146-5 always \u9B28 1235-12346-5 always \u9B29 15-16-5 -always \u9B2A 1456 +always \u9B2A 145-12356-5 always \u9B2B 1235-1236-4 -always \u9B2C 1456 -always \u9B2D 1456 +always \u9B2C 145-12356-5 +always \u9B2D 145-12356-5 always \u9B2E 13-234-3 always \u9B2F 12-1346-5 -always \u9B30 1456 +always \u9B30 1256-5 always \u9B31 1256-5 always \u9B32 13-2346-2 always \u9B33 13-45-5 -always \u9B34 1456 +always \u9B34 12345-34-4 always \u9B35 15-1456-2 -always \u9B36 1456 +always \u9B36 13-1246-3 always \u9B37 125-12346-3 -always \u9B38 1456 -always \u9B39 1456 +always \u9B38 14-234-5 +always \u9B39 13-1246-3 always \u9B3A 24-1346-3 always \u9B3B 1256-5 always \u9B3C 13-1246-4 -always \u9B3D 1456 +always \u9B3D 134-356-5 always \u9B3E 13-16-5 always \u9B3F 245-16-2 -always \u9B40 1456 +always \u9B40 13-346-5 always \u9B41 123-1246-2 always \u9B42 1235-123456-2 always \u9B43 135-345-2 @@ -39648,42 +39651,42 @@ always \u9B4C 245-16-3 always \u9B4D 456-4 always \u9B4E 14-46-4 always \u9B4F 1246-5 -always \u9B50 1456 +always \u9B50 13-2345-3 always \u9B51 12-156-3 always \u9B52 1234-246-3 -always \u9B53 1456 +always \u9B53 135-16-5 always \u9B54 134-126-2 always \u9B55 245-16-2 always \u9B56 15-1256-3 -always \u9B57 1456 +always \u9B57 12-12356-4 always \u9B58 2345-4 always \u9B59 1-1236-4 always \u9B5A 1256-2 always \u9B5B 145-146-3 -always \u9B5C 1456 -always \u9B5D 1456 +always \u9B5C 1245-136-2 +always \u9B5D 13-16-5 always \u9B5E 1456 always \u9B5F 1235-12346-3 always \u9B60 124-25-3 always \u9B61 145-246-5 -always \u9B62 1456 -always \u9B63 1456 +always \u9B62 13-16-4 +always \u9B63 15-1256-5 always \u9B64 2346-2 -always \u9B65 1456 +always \u9B65 2346-5 always \u9B66 24-345-3 always \u9B67 1235-1346-2 always \u9B68 124-123456-2 -always \u9B69 1456 -always \u9B6A 1456 -always \u9B6B 1456 +always \u9B69 134-126-5 +always \u9B6A 13-346-5 +always \u9B6B 24-136-4 always \u9B6C 135-1236-5 -always \u9B6D 1456 -always \u9B6E 1456 +always \u9B6D 45-2 +always \u9B6E 135-16-2 always \u9B6F 14-34-4 always \u9B70 123456-2 always \u9B71 1235-34-2 -always \u9B72 1456 -always \u9B73 1456 +always \u9B72 14-34-2 +always \u9B73 125-345-2 always \u9B74 12345-1346-2 always \u9B75 12345-136-2 always \u9B76 1345-345-5 @@ -39695,194 +39698,194 @@ always \u9B7B 15-23456-2 always \u9B7C 245-1256-3 always \u9B7D 1235-1236-3 always \u9B7E 1234-16-2 -always \u9B7F 1456 +always \u9B7F 14-13456-2 always \u9B80 124-25-2 -always \u9B81 1456 +always \u9B81 135-126-3 always \u9B82 245-234-2 -always \u9B83 1456 -always \u9B84 1456 +always \u9B83 1234-13456-2 +always \u9B84 12345-34-2 always \u9B85 135-16-5 always \u9B86 13-16-4 always \u9B87 1246-5 always \u9B88 13-1256-3 -always \u9B89 1456 -always \u9B8A 1456 -always \u9B8B 1456 -always \u9B8C 1456 -always \u9B8D 1456 -always \u9B8E 1456 -always \u9B8F 1456 +always \u9B89 145-246-3 +always \u9B8A 135-126-2 +always \u9B8B 234-2 +always \u9B8C 13-123456-4 +always \u9B8D 1234-16-3 +always \u9B8E 1345-2345-2 +always \u9B8F 15-13456-3 always \u9B90 124-2456-2 always \u9B91 135-146-5 always \u9B92 12345-34-5 always \u9B93 1-345-4 -always \u9B94 1456 +always \u9B94 13-1256-5 always \u9B95 13-34-3 always \u9B96 1456 always \u9B97 1456 always \u9B98 1456 -always \u9B99 1456 +always \u9B99 124-345-5 always \u9B9A 13-346-2 always \u9B9B 24-34-2 -always \u9B9C 1456 -always \u9B9D 1456 +always \u9B9C 1235-12356-5 +always \u9B9D 15-46-4 always \u9B9E 156-2 -always \u9B9F 1456 +always \u9B9F 1236-5 always \u9BA0 1246-2 always \u9BA1 1-146-4 always \u9BA2 1-34-3 -always \u9BA3 1456 +always \u9BA3 1456-5 always \u9BA4 14-346-5 always \u9BA5 14-25-5 always \u9BA6 124-12346-2 -always \u9BA7 1456 +always \u9BA7 16-2 always \u9BA8 245-16-2 -always \u9BA9 1456 +always \u9BA9 135-13456-5 always \u9BAA 1246-4 always \u9BAB 13-246-3 -always \u9BAC 1456 +always \u9BAC 135-34-5 always \u9BAD 13-1246-3 always \u9BAE 15-2345-3 always \u9BAF 13-2346-2 -always \u9BB0 1456 +always \u9BB0 1235-1246-2 always \u9BB1 1456 always \u9BB2 1456 -always \u9BB3 1456 +always \u9BB3 123-146-4 always \u9BB4 1456 always \u9BB5 145-25-2 always \u9BB6 13-256-3 -always \u9BB7 1456 +always \u9BB7 124-16-2 always \u9BB8 134-2345-4 always \u9BB9 24-146-3 -always \u9BBA 1456 -always \u9BBB 1456 -always \u9BBC 1456 +always \u9BBA 125-345-4 +always \u9BBB 24-345-3 +always \u9BBC 245-1456-3 always \u9BBD 1256-2 -always \u9BBE 1456 +always \u9BBE 1345-356-4 always \u9BBF 1-2346-2 always \u9BC0 13-123456-4 always \u9BC1 13-1356-4 always \u9BC2 1456 always \u9BC3 34-2 always \u9BC4 245-234-2 -always \u9BC5 1456 +always \u9BC5 124-13456-2 always \u9BC6 135-34-3 always \u9BC7 1235-12456-4 always \u9BC8 124-246-2 always \u9BC9 14-16-4 always \u9BCA 24-345-3 -always \u9BCB 1456 -always \u9BCC 1456 -always \u9BCD 1456 +always \u9BCB 24-345-3 +always \u9BCC 13-146-5 +always \u9BCD 134-1356-2 always \u9BCE 1456 always \u9BCF 1456 always \u9BD0 1456 always \u9BD1 1456 -always \u9BD2 1456 +always \u9BD2 235-4 always \u9BD3 1345-16-2 always \u9BD4 125-156-3 always \u9BD5 245-16-2 always \u9BD6 245-13456-3 always \u9BD7 15-46-4 -always \u9BD8 1456 +always \u9BD8 1345-356-4 always \u9BD9 12-123456-2 always \u9BDA 13-16-5 always \u9BDB 145-246-3 always \u9BDC 245-346-5 -always \u9BDD 1456 +always \u9BDD 13-34-5 always \u9BDE 1-12356-4 -always \u9BDF 1456 +always \u9BDF 145-12346-3 always \u9BE0 14-2456-2 always \u9BE1 12345-356-5 always \u9BE2 1345-16-2 -always \u9BE3 1456 +always \u9BE3 16-5 always \u9BE4 123-123456-3 always \u9BE5 14-34-5 always \u9BE6 245-234-2 always \u9BE7 12-1346-3 always \u9BE8 13-13456-3 -always \u9BE9 1456 +always \u9BE9 14-123456-2 always \u9BEA 14-13456-2 always \u9BEB 125-12356-3 always \u9BEC 14-16-2 -always \u9BED 1456 -always \u9BEE 1456 -always \u9BEF 1456 +always \u9BED 134-1356-4 +always \u9BEE 125-12346-3 +always \u9BEF 1-156-5 always \u9BF0 1345-2345-2 always \u9BF1 1456 always \u9BF2 1456 always \u9BF3 1456 -always \u9BF4 1456 -always \u9BF5 1456 -always \u9BF6 1456 +always \u9BF4 24-156-3 +always \u9BF5 24-136-3 +always \u9BF6 1235-123456-4 always \u9BF7 124-16-2 always \u9BF8 1235-12356-2 -always \u9BF9 1456 -always \u9BFA 1456 -always \u9BFB 1456 -always \u9BFC 1456 +always \u9BF9 15-13456-3 +always \u9BFA 1-34-3 +always \u9BFB 14-345-5 +always \u9BFC 125-12346-3 always \u9BFD 13-16-5 -always \u9BFE 1456 -always \u9BFF 1456 -always \u9C00 1456 -always \u9C01 1456 -always \u9C02 1456 -always \u9C03 1456 -always \u9C04 1456 +always \u9BFE 135-2345-3 +always \u9BFF 135-2345-3 +always \u9C00 1235-12456-5 +always \u9C01 245-45-2 +always \u9C02 125-2346-2 +always \u9C03 1246-3 +always \u9C04 1246-3 always \u9C05 1256-2 always \u9C06 12-123456-3 always \u9C07 1245-12356-2 always \u9C08 145-346-2 always \u9C09 1235-456-2 -always \u9C0A 1456 +always \u9C0A 14-2345-5 always \u9C0B 2345-4 -always \u9C0C 1456 +always \u9C0C 245-234-2 always \u9C0D 245-234-3 always \u9C0E 13-2345-5 -always \u9C0F 1456 -always \u9C10 1456 -always \u9C11 1456 +always \u9C0F 135-16-5 +always \u9C10 2346-5 +always \u9C11 46-2 always \u9C12 12345-34-5 always \u9C13 15-2456-3 always \u9C14 13-2345-4 -always \u9C15 1456 -always \u9C16 1456 +always \u9C15 15-23456-2 +always \u9C16 124-25-4 always \u9C17 1235-34-2 always \u9C18 1456 -always \u9C19 1456 +always \u9C19 1245-25-5 always \u9C1A 1456 -always \u9C1B 1456 +always \u9C1B 123456-3 always \u9C1C 13-2345-3 always \u9C1D 1235-146-5 -always \u9C1E 1456 -always \u9C1F 1456 -always \u9C20 1456 +always \u9C1E 34-3 +always \u9C1F 12345-1346-2 +always \u9C20 15-146-3 always \u9C21 14-234-3 -always \u9C22 1456 +always \u9C22 134-345-4 always \u9C23 24-156-2 always \u9C24 24-156-3 always \u9C25 13-12456-3 always \u9C26 1456 -always \u9C27 1456 +always \u9C27 124-1356-2 always \u9C28 124-345-5 always \u9C29 246-2 -always \u9C2A 1456 +always \u9C2A 13-2346-2 always \u9C2B 1245-12346-2 always \u9C2C 245-2345-2 always \u9C2D 245-16-2 -always \u9C2E 1456 -always \u9C2F 1456 +always \u9C2E 123456-3 +always \u9C2F 1245-25-5 always \u9C30 1456 always \u9C31 14-2345-2 always \u9C32 146-2 always \u9C33 14-2346-5 always \u9C34 1235-1246-3 -always \u9C35 1456 +always \u9C35 134-1456-4 always \u9C36 13-16-5 always \u9C37 124-246-2 -always \u9C38 1456 +always \u9C38 245-1256-3 always \u9C39 13-2345-3 -always \u9C3A 1456 +always \u9C3A 15-146-3 always \u9C3B 134-1236-2 always \u9C3C 15-16-2 always \u9C3D 245-234-2 @@ -39890,12 +39893,12 @@ always \u9C3E 135-246-5 always \u9C3F 125-2346-2 always \u9C40 13-16-5 always \u9C41 1-34-2 -always \u9C42 1456 -always \u9C43 1456 +always \u9C42 13-46-3 +always \u9C43 245-234-3 always \u9C44 1-12456-3 -always \u9C45 1456 +always \u9C45 235-2 always \u9C46 1-1346-3 -always \u9C47 1456 +always \u9C47 123-1346-3 always \u9C48 15-236-4 always \u9C49 135-346-3 always \u9C4A 1256-5 @@ -39903,85 +39906,85 @@ always \u9C4B 245-1256-3 always \u9C4C 15-46-5 always \u9C4D 135-126-3 always \u9C4E 13-246-4 -always \u9C4F 1456 +always \u9C4F 15-256-2 always \u9C50 15-12356-3 -always \u9C51 1456 +always \u9C51 1235-456-2 always \u9C52 125-123456-3 -always \u9C53 1456 +always \u9C53 24-1236-5 always \u9C54 24-1236-5 always \u9C55 12345-1236-3 always \u9C56 13-1246-5 always \u9C57 14-1456-2 always \u9C58 15-256-2 always \u9C59 134-246-2 -always \u9C5A 1456 +always \u9C5A 15-16-4 always \u9C5B 1456 always \u9C5C 1456 -always \u9C5D 1456 +always \u9C5D 12345-136-5 always \u9C5E 13-12456-3 always \u9C5F 1235-12356-5 always \u9C60 123-2356-5 -always \u9C61 1456 +always \u9C61 125-356-2 always \u9C62 15-146-3 always \u9C63 1-1236-3 -always \u9C64 1456 -always \u9C65 1456 +always \u9C64 13-1236-4 +always \u9C65 13-1246-5 always \u9C66 24-1356-2 always \u9C67 14-16-4 always \u9C68 12-1346-2 always \u9C69 1456 always \u9C6A 1456 always \u9C6B 1456 -always \u9C6C 1456 +always \u9C6C 1245-34-2 always \u9C6D 13-16-5 always \u9C6E 15-1256-5 -always \u9C6F 1456 +always \u9C6F 1235-25-5 always \u9C70 1456 always \u9C71 14-16-5 -always \u9C72 1456 +always \u9C72 14-346-5 always \u9C73 14-16-5 always \u9C74 134-346-5 always \u9C75 1-136-3 -always \u9C76 1456 +always \u9C76 15-46-4 always \u9C77 2346-5 always \u9C78 14-34-2 always \u9C79 13-12456-5 always \u9C7A 14-16-2 -always \u9C7B 1456 +always \u9C7B 15-2345-3 always \u9C7C 1256-2 -always \u9C7D 1456 -always \u9C7E 1456 +always \u9C7D 145-146-3 +always \u9C7E 13-16-4 always \u9C7F 234-2 -always \u9C80 1456 +always \u9C80 124-123456-2 always \u9C81 14-34-4 always \u9C82 12345-1346-2 -always \u9C83 1456 -always \u9C84 1456 +always \u9C83 135-345-3 +always \u9C84 1235-2346-2 always \u9C85 135-126-3 -always \u9C86 1456 -always \u9C87 1456 +always \u9C86 1234-13456-2 +always \u9C87 1345-2345-2 always \u9C88 14-34-2 -always \u9C89 1456 -always \u9C8A 1456 +always \u9C89 234-2 +always \u9C8A 1-345-4 always \u9C8B 12345-34-5 -always \u9C8C 1456 +always \u9C8C 135-126-2 always \u9C8D 135-146-5 always \u9C8E 1235-12356-5 -always \u9C8F 1456 +always \u9C8F 1234-16-3 always \u9C90 124-2456-2 always \u9C91 13-1246-3 always \u9C92 13-346-2 -always \u9C93 1456 +always \u9C93 123-146-4 always \u9C94 1246-4 always \u9C95 156-2 -always \u9C96 1456 -always \u9C97 1456 -always \u9C98 1456 -always \u9C99 1456 +always \u9C96 124-12346-2 +always \u9C97 125-2346-2 +always \u9C98 1235-12356-5 +always \u9C99 123-2356-5 always \u9C9A 13-16-5 always \u9C9B 13-246-3 always \u9C9C 15-2345-3 -always \u9C9D 1456 +always \u9C9D 125-345-4 always \u9C9E 15-46-4 always \u9C9F 15-256-2 always \u9CA0 13-1356-4 @@ -39994,76 +39997,76 @@ always \u9CA6 124-246-2 always \u9CA7 13-123456-4 always \u9CA8 24-345-3 always \u9CA9 1235-12456-4 -always \u9CAA 1456 +always \u9CAA 13-256-3 always \u9CAB 13-16-5 -always \u9CAC 1456 +always \u9CAC 235-4 always \u9CAD 245-13456-3 always \u9CAE 14-13456-2 -always \u9CAF 1456 +always \u9CAF 245-16-2 always \u9CB0 125-12356-3 always \u9CB1 12345-356-5 always \u9CB2 123-123456-3 always \u9CB3 12-1346-3 -always \u9CB4 1456 +always \u9CB4 13-34-5 always \u9CB5 1345-16-2 always \u9CB6 1345-2345-2 always \u9CB7 145-246-3 always \u9CB8 13-13456-3 -always \u9CB9 1456 -always \u9CBA 1456 +always \u9CB9 24-136-3 +always \u9CBA 24-156-3 always \u9CBB 125-156-3 -always \u9CBC 1456 +always \u9CBC 12345-136-5 always \u9CBD 145-346-2 -always \u9CBE 1456 -always \u9CBF 1456 -always \u9CC0 1456 -always \u9CC1 1456 -always \u9CC2 1456 +always \u9CBE 135-16-5 +always \u9CBF 12-1346-2 +always \u9CC0 24-156-5 +always \u9CC1 123456-3 +always \u9CC2 1246-3 always \u9CC3 15-2456-3 always \u9CC4 2346-5 always \u9CC5 245-234-3 always \u9CC6 12345-34-5 always \u9CC7 1235-456-2 -always \u9CC8 1456 -always \u9CC9 1456 -always \u9CCA 1456 -always \u9CCB 1456 +always \u9CC8 245-45-2 +always \u9CC9 13-46-3 +always \u9CCA 135-2345-3 +always \u9CCB 15-146-3 always \u9CCC 146-2 always \u9CCD 245-16-2 always \u9CCE 124-345-5 always \u9CCF 13-12456-3 always \u9CD0 246-2 -always \u9CD1 1456 -always \u9CD2 1456 +always \u9CD1 12345-1346-2 +always \u9CD2 13-2345-3 always \u9CD3 14-2346-5 always \u9CD4 135-246-4 always \u9CD5 15-236-4 always \u9CD6 135-346-3 always \u9CD7 134-1236-2 -always \u9CD8 1456 -always \u9CD9 1456 -always \u9CDA 1456 -always \u9CDB 1456 +always \u9CD8 134-1456-4 +always \u9CD9 235-2 +always \u9CDA 1246-5 +always \u9CDB 15-16-2 always \u9CDC 13-1246-5 always \u9CDD 24-1236-5 always \u9CDE 14-1456-2 always \u9CDF 125-123456-3 -always \u9CE0 1456 -always \u9CE1 1456 +always \u9CE0 1235-25-5 +always \u9CE1 13-1236-4 always \u9CE2 14-16-4 -always \u9CE3 1456 -always \u9CE4 1456 +always \u9CE3 1-1236-3 +always \u9CE4 13-12456-4 always \u9CE5 1345-246-4 always \u9CE6 16-4 always \u9CE7 12345-34-2 -always \u9CE8 1456 +always \u9CE8 14-16-5 always \u9CE9 13-234-3 always \u9CEA 135-34-4 -always \u9CEB 1456 -always \u9CEC 1456 +always \u9CEB 2345-5 +always \u9CEC 12345-34-2 always \u9CED 12-146-2 -always \u9CEE 1456 -always \u9CEF 1456 +always \u9CEE 13-16-3 +always \u9CEF 12345-1356-5 always \u9CF0 1456 always \u9CF1 13-1236-3 always \u9CF2 24-156-3 @@ -40072,17 +40075,17 @@ always \u9CF4 134-13456-2 always \u9CF5 135-146-4 always \u9CF6 45-3 always \u9CF7 1-156-3 -always \u9CF8 1456 +always \u9CF8 1235-34-5 always \u9CF9 245-1456-2 always \u9CFA 12345-34-3 always \u9CFB 12345-136-3 always \u9CFC 123456-2 always \u9CFD 2346-5 -always \u9CFE 1456 +always \u9CFE 24-156-3 always \u9CFF 1256-5 always \u9D00 12345-12356-2 -always \u9D01 1456 -always \u9D02 1456 +always \u9D01 246-3 +always \u9D02 13-236-5 always \u9D03 13-236-2 always \u9D04 1234-16-3 always \u9D05 1235-12456-3 @@ -40090,57 +40093,57 @@ always \u9D06 1-136-5 always \u9D07 135-146-4 always \u9D08 2345-5 always \u9D09 23456-3 -always \u9D0A 1456 -always \u9D0B 1456 -always \u9D0C 1456 -always \u9D0D 1456 -always \u9D0E 1456 -always \u9D0F 1456 +always \u9D0A 1-1356-5 +always \u9D0B 12345-1346-3 +always \u9D0C 12345-1356-5 +always \u9D0D 123456-2 +always \u9D0E 12356-3 +always \u9D0F 124-2346-5 always \u9D10 13-23456-3 -always \u9D11 1456 +always \u9D11 1345-34-2 always \u9D12 14-13456-2 -always \u9D13 1456 +always \u9D13 134-346-5 always \u9D14 12345-34-2 always \u9D15 124-25-2 -always \u9D16 1456 +always \u9D16 123456-2 always \u9D17 14-16-5 always \u9D18 135-2345-5 always \u9D19 1-156-5 -always \u9D1A 1456 +always \u9D1A 13-2346-3 always \u9D1B 45-3 -always \u9D1C 1456 +always \u9D1C 125-156-3 always \u9D1D 245-1256-2 always \u9D1E 15-246-3 always \u9D1F 12-156-3 always \u9D20 145-1236-5 -always \u9D21 1456 +always \u9D21 13-1256-3 always \u9D22 234-5 always \u9D23 13-34-3 -always \u9D24 1456 +always \u9D24 1-12346-3 always \u9D25 1256-5 always \u9D26 46-3 -always \u9D27 1456 +always \u9D27 1245-12346-5 always \u9D28 23456-3 always \u9D29 16-5 -always \u9D2A 1456 +always \u9D2A 1256-5 always \u9D2B 1456 -always \u9D2C 1456 +always \u9D2C 13456-3 always \u9D2D 1-1246-3 always \u9D2E 34-3 always \u9D2F 156-2 always \u9D30 13-35-3 always \u9D31 2456-5 -always \u9D32 1456 +always \u9D32 1-156-3 always \u9D33 2345-5 -always \u9D34 1456 -always \u9D35 1456 +always \u9D34 1235-1356-2 +always \u9D35 13-246-3 always \u9D36 13-23456-5 always \u9D37 14-346-5 always \u9D38 1-34-3 -always \u9D39 1456 -always \u9D3A 1456 +always \u9D39 1245-136-2 +always \u9D3A 16-2 always \u9D3B 1235-12346-2 -always \u9D3C 1456 +always \u9D3C 14-25-5 always \u9D3D 1245-34-2 always \u9D3E 134-12356-2 always \u9D3F 13-2346-3 @@ -40148,24 +40151,24 @@ always \u9D40 1245-136-2 always \u9D41 13-246-3 always \u9D42 15-234-3 always \u9D43 1-146-3 -always \u9D44 1456 +always \u9D44 1-156-3 always \u9D45 14-25-5 always \u9D46 1456 always \u9D47 1456 always \u9D48 1456 -always \u9D49 1456 +always \u9D49 14-12456-2 always \u9D4A 13-23456-2 always \u9D4B 13-16-5 always \u9D4C 124-34-2 -always \u9D4D 1456 -always \u9D4E 1456 +always \u9D4D 1235-12456-3 +always \u9D4E 124-25-4 always \u9D4F 135-34-3 -always \u9D50 1456 +always \u9D50 34-2 always \u9D51 13-45-3 always \u9D52 1256-5 always \u9D53 135-126-2 always \u9D54 13-256-5 -always \u9D55 1456 +always \u9D55 15-256-5 always \u9D56 135-16-5 always \u9D57 15-16-3 always \u9D58 13-256-5 @@ -40174,23 +40177,23 @@ always \u9D5A 124-34-2 always \u9D5B 13-13456-3 always \u9D5C 124-16-2 always \u9D5D 2346-2 -always \u9D5E 1456 +always \u9D5E 2346-2 always \u9D5F 123-456-2 always \u9D60 1235-34-2 always \u9D61 34-4 -always \u9D62 1456 -always \u9D63 1456 +always \u9D62 24-136-3 +always \u9D63 14-2456-5 always \u9D64 1456 always \u9D65 1456 -always \u9D66 1456 +always \u9D66 14-34-5 always \u9D67 1234-13456-2 always \u9D68 24-34-3 always \u9D69 12345-34-2 always \u9D6A 1236-3 always \u9D6B 1-146-5 always \u9D6C 1234-1356-2 -always \u9D6D 1456 -always \u9D6E 1456 +always \u9D6D 245-1456-2 +always \u9D6E 245-2345-3 always \u9D6F 135-356-3 always \u9D70 145-246-3 always \u9D71 14-34-5 @@ -40198,20 +40201,20 @@ always \u9D72 245-236-5 always \u9D73 13-2345-3 always \u9D74 13-1256-2 always \u9D75 124-34-5 -always \u9D76 1456 +always \u9D76 23456-3 always \u9D77 45-3 always \u9D78 245-16-2 always \u9D79 14-16-2 -always \u9D7A 1456 +always \u9D7A 346-5 always \u9D7B 1-1246-3 -always \u9D7C 1456 +always \u9D7C 123-12346-3 always \u9D7D 145-25-5 -always \u9D7E 1456 +always \u9D7E 123-123456-3 always \u9D7F 24-1356-3 always \u9D80 245-16-2 always \u9D81 13-13456-3 always \u9D82 16-5 -always \u9D83 1456 +always \u9D83 16-5 always \u9D84 13-13456-3 always \u9D85 125-156-3 always \u9D86 14-2456-2 @@ -40223,13 +40226,13 @@ always \u9D8B 13-1256-3 always \u9D8C 13-236-2 always \u9D8D 1456 always \u9D8E 1456 -always \u9D8F 1456 +always \u9D8F 13-16-3 always \u9D90 1-156-3 always \u9D91 1456 always \u9D92 12-156-4 -always \u9D93 1456 +always \u9D93 134-246-2 always \u9D94 1245-12356-2 -always \u9D95 1456 +always \u9D95 1236-3 always \u9D96 245-234-3 always \u9D97 124-16-2 always \u9D98 1235-34-2 @@ -40245,7 +40248,7 @@ always \u9DA1 1235-2346-2 always \u9DA2 45-2 always \u9DA3 1234-2345-3 always \u9DA4 123-123456-3 -always \u9DA5 1456 +always \u9DA5 134-356-2 always \u9DA6 1235-34-2 always \u9DA7 13456-3 always \u9DA8 124-12456-5 @@ -40254,9 +40257,9 @@ always \u9DAA 13-1256-2 always \u9DAB 1456 always \u9DAC 245-1346-3 always \u9DAD 12345-1346-4 -always \u9DAE 1456 +always \u9DAE 13-34-5 always \u9DAF 13456-3 -always \u9DB0 1456 +always \u9DB0 45-2 always \u9DB1 15-45-3 always \u9DB2 12346-3 always \u9DB3 24-156-3 @@ -40269,19 +40272,19 @@ always \u9DB9 14-234-2 always \u9DBA 13-16-2 always \u9DBB 13-34-4 always \u9DBC 13-2345-3 -always \u9DBD 1456 +always \u9DBD 1-123456-4 always \u9DBE 1235-1236-5 always \u9DBF 125-156-3 -always \u9DC0 1456 +always \u9DC0 125-156-3 always \u9DC1 1345-16-5 always \u9DC2 246-5 always \u9DC3 2345-5 -always \u9DC4 1456 +always \u9DC4 13-16-3 always \u9DC5 14-16-5 -always \u9DC6 1456 +always \u9DC6 124-2345-2 always \u9DC7 123-12356-5 always \u9DC8 124-16-3 -always \u9DC9 1456 +always \u9DC9 124-16-3 always \u9DCA 16-5 always \u9DCB 124-34-2 always \u9DCC 134-345-4 @@ -40292,7 +40295,7 @@ always \u9DD0 12-136-2 always \u9DD1 13-16-2 always \u9DD2 124-12456-2 always \u9DD3 1-2346-5 -always \u9DD4 1456 +always \u9DD4 146-2 always \u9DD5 246-4 always \u9DD6 16-3 always \u9DD7 12356-3 @@ -40304,24 +40307,24 @@ always \u9DDC 14-1256-2 always \u9DDD 135-16-5 always \u9DDE 24-456-3 always \u9DDF 1-25-2 -always \u9DE0 1456 +always \u9DE0 1256-2 always \u9DE1 34-2 always \u9DE2 13-236-2 always \u9DE3 1456-2 always \u9DE4 124-16-2 always \u9DE5 15-156-3 always \u9DE6 13-246-3 -always \u9DE7 1456 +always \u9DE7 16-5 always \u9DE8 1235-35-3 always \u9DE9 135-16-5 -always \u9DEA 1456 +always \u9DEA 13456-3 always \u9DEB 15-34-5 always \u9DEC 1235-456-2 always \u9DED 12345-1236-2 always \u9DEE 13-246-3 always \u9DEF 14-246-2 always \u9DF0 2345-5 -always \u9DF1 1456 +always \u9DF1 123-146-3 always \u9DF2 13-234-5 always \u9DF3 15-2345-2 always \u9DF4 15-2345-2 @@ -40332,7 +40335,7 @@ always \u9DF8 1256-5 always \u9DF9 13456-3 always \u9DFA 14-34-5 always \u9DFB 124-12456-2 -always \u9DFC 1456 +always \u9DFC 15-2345-2 always \u9DFD 15-236-2 always \u9DFE 16-5 always \u9DFF 1234-16-5 @@ -40344,13 +40347,13 @@ always \u9E04 13-246-3 always \u9E05 1-2346-2 always \u9E06 1256-2 always \u9E07 1-1236-3 -always \u9E08 1456 +always \u9E08 346-5 always \u9E09 46-2 -always \u9E0A 1456 +always \u9E0A 1234-16-5 always \u9E0B 1345-13456-2 -always \u9E0C 1456 +always \u9E0C 1235-25-5 always \u9E0D 134-16-2 -always \u9E0E 1456 +always \u9E0E 13456-3 always \u9E0F 134-1356-2 always \u9E10 145-16-2 always \u9E11 236-5 @@ -40358,13 +40361,13 @@ always \u9E12 1256-5 always \u9E13 14-356-4 always \u9E14 135-126-2 always \u9E15 14-34-2 -always \u9E16 1456 +always \u9E16 1235-2346-5 always \u9E17 14-12346-2 -always \u9E18 1456 +always \u9E18 24-456-3 always \u9E19 236-5 always \u9E1A 13456-3 always \u9E1B 13-12456-5 -always \u9E1C 1456 +always \u9E1C 245-1256-2 always \u9E1D 14-16-2 always \u9E1E 14-12456-2 always \u9E1F 1345-246-4 @@ -40372,35 +40375,35 @@ always \u9E20 13-234-3 always \u9E21 13-16-3 always \u9E22 45-3 always \u9E23 134-13456-2 -always \u9E24 1456 +always \u9E24 24-156-3 always \u9E25 12356-3 always \u9E26 23456-3 -always \u9E27 1456 +always \u9E27 245-1346-3 always \u9E28 135-146-4 always \u9E29 1-136-5 always \u9E2A 13-34-3 always \u9E2B 145-12346-3 always \u9E2C 14-34-2 always \u9E2D 23456-3 -always \u9E2E 1456 +always \u9E2E 15-246-3 always \u9E2F 46-3 -always \u9E30 1456 +always \u9E30 14-13456-2 always \u9E31 12-156-3 always \u9E32 245-1256-2 always \u9E33 45-3 -always \u9E34 1456 +always \u9E34 15-236-2 always \u9E35 124-25-2 always \u9E36 15-156-3 always \u9E37 1-156-5 always \u9E38 156-2 always \u9E39 13-35-3 always \u9E3A 15-234-3 -always \u9E3B 1456 -always \u9E3C 1456 +always \u9E3B 1235-1356-2 +always \u9E3C 1-12356-3 always \u9E3D 13-2346-3 always \u9E3E 14-12456-2 always \u9E3F 1235-12346-2 -always \u9E40 1456 +always \u9E40 34-2 always \u9E41 135-126-2 always \u9E42 14-16-2 always \u9E43 13-45-3 @@ -40411,33 +40414,33 @@ always \u9E47 15-2345-2 always \u9E48 124-16-2 always \u9E49 34-4 always \u9E4A 245-236-5 -always \u9E4B 1456 +always \u9E4B 134-246-2 always \u9E4C 1236-3 -always \u9E4D 1456 +always \u9E4D 123-123456-3 always \u9E4E 135-356-3 always \u9E4F 1234-1356-2 -always \u9E50 1456 +always \u9E50 245-2345-3 always \u9E51 12-123456-2 -always \u9E52 1456 -always \u9E53 1456 -always \u9E54 1456 +always \u9E52 13-1356-3 +always \u9E53 45-3 +always \u9E54 15-34-5 always \u9E55 1235-34-2 -always \u9E56 1456 +always \u9E56 1235-2346-2 always \u9E57 2346-5 always \u9E58 13-34-4 -always \u9E59 1456 -always \u9E5A 1456 -always \u9E5B 1456 +always \u9E59 245-234-3 +always \u9E5A 125-156-3 +always \u9E5B 134-356-2 always \u9E5C 134-34-5 -always \u9E5D 1456 +always \u9E5D 1345-16-5 always \u9E5E 246-5 -always \u9E5F 1456 -always \u9E60 1456 -always \u9E61 1456 -always \u9E62 1456 +always \u9E5F 12346-3 +always \u9E60 14-234-2 +always \u9E61 13-16-2 +always \u9E62 1345-16-5 always \u9E63 13-2345-3 always \u9E64 1235-2346-5 -always \u9E65 1456 +always \u9E65 16-3 always \u9E66 13456-3 always \u9E67 1-2346-5 always \u9E68 14-234-5 @@ -40446,30 +40449,30 @@ always \u9E6A 13-246-3 always \u9E6B 13-234-5 always \u9E6C 1256-5 always \u9E6D 14-34-5 -always \u9E6E 1456 -always \u9E6F 1456 +always \u9E6E 15-45-2 +always \u9E6F 1-1236-3 always \u9E70 13456-3 -always \u9E71 1456 -always \u9E72 1456 +always \u9E71 1235-25-5 +always \u9E72 134-1356-2 always \u9E73 13-12456-5 -always \u9E74 1456 +always \u9E74 24-456-3 always \u9E75 14-34-4 -always \u9E76 1456 -always \u9E77 1456 -always \u9E78 1456 +always \u9E76 13-1456-3 +always \u9E77 14-13456-2 +always \u9E78 13-2345-4 always \u9E79 15-2345-2 always \u9E7A 245-25-2 -always \u9E7B 1456 +always \u9E7B 13-2345-4 always \u9E7C 13-2345-4 always \u9E7D 2345-2 always \u9E7E 245-25-2 always \u9E7F 14-34-5 always \u9E80 234-3 -always \u9E81 1456 +always \u9E81 245-34-3 always \u9E82 13-16-4 always \u9E83 135-246-3 -always \u9E84 1456 -always \u9E85 1456 +always \u9E84 245-34-3 +always \u9E85 135-246-3 always \u9E86 1-34-5 always \u9E87 13-256-3 always \u9E88 1-34-4 @@ -40479,81 +40482,81 @@ always \u9E8B 134-16-2 always \u9E8C 1256-4 always \u9E8D 14-234-2 always \u9E8E 12-136-2 -always \u9E8F 1456 -always \u9E90 1456 +always \u9E8F 13-256-3 +always \u9E90 14-1456-2 always \u9E91 134-16-2 always \u9E92 245-16-2 always \u9E93 14-34-5 always \u9E94 13-234-5 -always \u9E95 1456 -always \u9E96 1456 +always \u9E95 13-256-3 +always \u9E96 13-13456-3 always \u9E97 14-16-5 -always \u9E98 1456 +always \u9E98 15-46-3 always \u9E99 15-2345-2 always \u9E9A 13-23456-3 always \u9E9B 134-16-2 always \u9E9C 14-16-5 always \u9E9D 24-2346-5 -always \u9E9E 1456 +always \u9E9E 1-1346-3 always \u9E9F 14-1456-2 always \u9EA0 13-13456-3 always \u9EA1 13-16-3 -always \u9EA2 1456 -always \u9EA3 1456 +always \u9EA2 14-13456-2 +always \u9EA3 2345-2 always \u9EA4 245-34-3 always \u9EA5 134-2456-5 always \u9EA6 134-2456-5 always \u9EA7 13-2346-3 -always \u9EA8 1456 +always \u9EA8 12-146-4 always \u9EA9 12345-34-3 -always \u9EAA 1456 -always \u9EAB 1456 -always \u9EAC 1456 +always \u9EAA 134-2345-4 +always \u9EAB 134-2345-4 +always \u9EAC 12345-34-3 always \u9EAD 1234-146-5 always \u9EAE 245-1256-5 -always \u9EAF 1456 +always \u9EAF 245-1256-2 always \u9EB0 134-12356-2 -always \u9EB1 1456 -always \u9EB2 1456 -always \u9EB3 1456 +always \u9EB1 12345-34-3 +always \u9EB2 15-2345-5 +always \u9EB3 14-2456-2 always \u9EB4 245-1256-2 always \u9EB5 134-2345-5 always \u9EB6 135-345-1 always \u9EB7 12345-1356-3 always \u9EB8 12345-34-3 -always \u9EB9 1456 -always \u9EBA 1456 +always \u9EB9 245-1256-2 +always \u9EBA 134-2345-5 always \u9EBB 134-345-2 always \u9EBC 134-2346-1 -always \u9EBD 1456 +always \u9EBD 134-126-1 always \u9EBE 1235-1246-3 always \u9EBF 1456 always \u9EC0 125-12356-3 -always \u9EC1 1456 +always \u9EC1 1345-136-3 always \u9EC2 12345-136-2 always \u9EC3 1235-456-2 always \u9EC4 1235-456-2 -always \u9EC5 1456 -always \u9EC6 1456 -always \u9EC7 1456 +always \u9EC5 13-1456-3 +always \u9EC6 13-456-3 +always \u9EC7 124-2345-3 always \u9EC8 124-12356-4 always \u9EC9 1235-1356-2 -always \u9ECA 1456 -always \u9ECB 1456 +always \u9ECA 15-16-3 +always \u9ECB 123-456-4 always \u9ECC 1235-1356-2 always \u9ECD 24-34-4 always \u9ECE 14-16-2 always \u9ECF 1345-2345-2 always \u9ED0 14-16-2 always \u9ED1 1235-356-3 -always \u9ED2 1456 +always \u9ED2 1235-356-3 always \u9ED3 16-5 always \u9ED4 245-2345-2 always \u9ED5 145-1236-4 always \u9ED6 15-16-5 -always \u9ED7 1456 +always \u9ED7 124-12456-4 always \u9ED8 134-126-5 -always \u9ED9 1456 +always \u9ED9 134-126-5 always \u9EDA 245-2345-2 always \u9EDB 145-2456-5 always \u9EDC 12-34-5 @@ -40561,9 +40564,9 @@ always \u9EDD 234-4 always \u9EDE 145-2345-4 always \u9EDF 16-3 always \u9EE0 15-23456-2 -always \u9EE1 1456 -always \u9EE2 1456 -always \u9EE3 1456 +always \u9EE1 2345-4 +always \u9EE2 245-1256-3 +always \u9EE3 134-356-4 always \u9EE4 1236-4 always \u9EE5 245-13456-2 always \u9EE6 1256-5 @@ -40572,19 +40575,19 @@ always \u9EE8 145-1346-4 always \u9EE9 145-34-2 always \u9EEA 245-1236-4 always \u9EEB 1456-3 -always \u9EEC 1456 +always \u9EEC 1236-5 always \u9EED 1236-4 always \u9EEE 124-1236-4 always \u9EEF 1236-5 always \u9EF0 1-136-4 -always \u9EF1 1456 +always \u9EF1 145-2456-5 always \u9EF2 245-1236-4 always \u9EF3 16-3 always \u9EF4 134-356-2 always \u9EF5 145-1236-4 always \u9EF6 2345-4 always \u9EF7 145-34-2 -always \u9EF8 1456 +always \u9EF8 14-34-2 always \u9EF9 1-156-4 always \u9EFA 12345-136-4 always \u9EFB 12345-34-2 @@ -40594,44 +40597,44 @@ always \u9EFE 134-1456-4 always \u9EFF 45-2 always \u9F00 245-234-3 always \u9F01 245-1256-5 -always \u9F02 1456 -always \u9F03 1456 -always \u9F04 1456 -always \u9F05 1456 +always \u9F02 12-146-2 +always \u9F03 35-3 +always \u9F04 1-34-3 +always \u9F05 1-156-3 always \u9F06 134-1346-2 always \u9F07 146-2 -always \u9F08 1456 +always \u9F08 135-346-3 always \u9F09 124-25-2 always \u9F0A 135-16-5 always \u9F0B 45-2 -always \u9F0C 1456 +always \u9F0C 12-146-2 always \u9F0D 124-25-2 always \u9F0E 145-13456-4 always \u9F0F 134-16-5 always \u9F10 1345-2456-5 -always \u9F11 1456 +always \u9F11 145-13456-4 always \u9F12 125-156-3 always \u9F13 13-34-4 -always \u9F14 1456 +always \u9F14 13-34-4 always \u9F15 124-12346-2 always \u9F16 12345-136-2 -always \u9F17 1456 +always \u9F17 124-146-2 always \u9F18 45-3 always \u9F19 1234-16-2 always \u9F1A 12-1346-3 always \u9F1B 13-146-3 always \u9F1C 245-16-5 -always \u9F1D 1456 +always \u9F1D 45-3 always \u9F1E 124-1346-3 -always \u9F1F 1456 +always \u9F1F 124-1356-3 always \u9F20 24-34-4 -always \u9F21 1456 +always \u9F21 24-34-4 always \u9F22 12345-136-2 always \u9F23 12345-356-5 always \u9F24 123456-5 always \u9F25 135-345-2 -always \u9F26 1456 -always \u9F27 1456 +always \u9F26 145-246-3 +always \u9F27 124-25-2 always \u9F28 1-12346-3 always \u9F29 245-1256-2 always \u9F2A 24-1356-3 @@ -40650,18 +40653,18 @@ always \u9F36 15-156-3 always \u9F37 15-16-3 always \u9F38 245-2345-4 always \u9F39 2345-4 -always \u9F3A 1456 +always \u9F3A 14-356-2 always \u9F3B 135-16-2 -always \u9F3C 1456 +always \u9F3C 246-4 always \u9F3D 245-234-2 always \u9F3E 1235-1236-3 -always \u9F3F 1456 +always \u9F3F 34-3 always \u9F40 34-5 always \u9F41 1235-12356-3 always \u9F42 15-16-5 always \u9F43 1235-2346-2 -always \u9F44 1456 -always \u9F45 1456 +always \u9F44 1-345-3 +always \u9F45 15-234-5 always \u9F46 12346-5 always \u9F47 1-345-3 always \u9F48 1345-12346-2 @@ -40675,14 +40678,14 @@ always \u9F4F 13-16-3 always \u9F50 245-16-2 always \u9F51 13-16-3 always \u9F52 12-156-4 -always \u9F53 1456 +always \u9F53 12-136-5 always \u9F54 12-136-4 always \u9F55 1235-2346-2 always \u9F56 23456-2 always \u9F57 1456-2 always \u9F58 15-346-5 always \u9F59 1234-146-2 -always \u9F5A 1456 +always \u9F5A 245-25-5 always \u9F5B 15-346-5 always \u9F5C 125-156-3 always \u9F5D 12-156-3 @@ -40690,24 +40693,24 @@ always \u9F5E 1345-2345-4 always \u9F5F 13-1256-4 always \u9F60 124-246-2 always \u9F61 14-13456-2 -always \u9F62 1456 +always \u9F62 14-13456-2 always \u9F63 12-34-3 always \u9F64 245-45-2 always \u9F65 15-346-5 always \u9F66 1456-2 always \u9F67 1345-346-5 -always \u9F68 1456 -always \u9F69 1456 +always \u9F68 13-234-5 +always \u9F69 246-4 always \u9F6A 12-25-5 always \u9F6B 1345-136-4 always \u9F6C 1256-4 -always \u9F6D 1456 +always \u9F6D 12-34-4 always \u9F6E 16-4 always \u9F6F 1345-16-2 always \u9F70 1-345-5 always \u9F71 125-12356-3 always \u9F72 245-1256-4 -always \u9F73 1456 +always \u9F73 1345-136-4 always \u9F74 2345-4 always \u9F75 12356-2 always \u9F76 2346-5 @@ -40716,13 +40719,13 @@ always \u9F78 16-5 always \u9F79 12-25-3 always \u9F7A 125-12356-3 always \u9F7B 145-2345-3 -always \u9F7C 1456 -always \u9F7D 1456 +always \u9F7C 12-34-4 +always \u9F7D 13-1456-5 always \u9F7E 23456-5 always \u9F7F 12-156-4 always \u9F80 12-136-4 -always \u9F81 1456 -always \u9F82 1456 +always \u9F81 1235-2346-2 +always \u9F82 123-136-4 always \u9F83 13-1256-4 always \u9F84 14-13456-2 always \u9F85 1234-146-2 @@ -40734,30 +40737,30 @@ always \u9F8A 12-25-5 always \u9F8B 245-1256-4 always \u9F8C 25-5 always \u9F8D 14-12346-2 -always \u9F8E 1456 -always \u9F8F 1456 +always \u9F8E 1234-1346-2 +always \u9F8F 13-12346-3 always \u9F90 1234-1346-2 always \u9F91 2345-4 always \u9F92 145-12346-2 -always \u9F93 1456 +always \u9F93 14-12346-2 always \u9F94 13-12346-3 always \u9F95 123-1236-3 -always \u9F96 1456 -always \u9F97 1456 +always \u9F96 124-345-5 +always \u9F97 14-13456-2 always \u9F98 124-345-5 always \u9F99 14-12346-2 always \u9F9A 13-12346-3 always \u9F9B 123-1236-3 always \u9F9C 13-1246-3 -always \u9F9D 1456 -always \u9F9E 1456 +always \u9F9D 245-234-3 +always \u9F9E 135-346-3 always \u9F9F 13-1246-3 always \u9FA0 236-5 -always \u9FA1 1456 +always \u9FA1 12-1246-5 always \u9FA2 1235-2346-2 -always \u9FA3 1456 +always \u9FA3 13-236-2 always \u9FA4 15-346-2 -always \u9FA5 1456 +always \u9FA5 1256-5 always \u9FA6 1456 always \u9FA7 1456 always \u9FA8 1456 @@ -40787,7 +40790,7 @@ always \u9FBF 1456 always \u9FC0 1456 always \u9FC1 1456 always \u9FC2 1456 -always \u9FC3 1456 +always \u9FC3 24-1236-4 always \u9FC4 1456 always \u9FC5 1456 always \u9FC6 1456 @@ -57628,10 +57631,10 @@ always \uE188 1456 always \uE189 1456 always \uE18A 1456 always \uE18B 1456 -always \uE18C 1456 -always \uE18D 1456 -always \uE18E 1456 -always \uE18F 1456 +always \uE18C 12356-17-23456 +always \uE18D 12356-127-23456 +always \uE18E 12356-147-23456 +always \uE18F 12356-1457-23456 always \uE190 1456 always \uE191 1456 always \uE192 1456 @@ -63910,9 +63913,9 @@ always \uFA12 245-13456-2 always \uFA13 1456 always \uFA14 1456 always \uFA15 15-16-3 -always \uFA16 1456 +always \uFA16 1-34-3 always \uFA17 16-5 -always \uFA18 1456 +always \uFA18 14-16-4 always \uFA19 24-136-2 always \uFA1A 15-46-2 always \uFA1B 12345-34-2 diff --git a/Tables/zu.ctb b/Tables/zu.ctb new file mode 100644 index 0000000000000000000000000000000000000000..54b1577206607473a0c25eb67a70cc9db41fb310 --- /dev/null +++ b/Tables/zu.ctb @@ -0,0 +1,31 @@ +############################################################################### +# 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-2009 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://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +# BRLTTY Contraction Table - Zulu (contracted) +# +# Samuel Thibault +# +# This table is based on the Unesco report on the progress of unification of +# braille writing « L'ÉCRITURE BRAILLE DANS LE MONDE », by Sir Clutha +# MACKENZIE: http://unesdoc.unesco.org/images/0013/001352/135251fo.pdf +# The document is dated 1954, so this table may be quite outdated. + +include letters-latin.cti + +always 'b 23 +always gq 126 diff --git a/absdeps.mk b/absdeps.mk index 0bbda79fdc7adaea8d4dcc40fca6a75439019901..7d6df65d7cd6f373ef18543296319b188ac343e2 100644 --- a/absdeps.mk +++ b/absdeps.mk @@ -22,585 +22,917 @@ $(BLD_TOP)Bindings/Python/bindings.$O: $(SRC_TOP)Programs/brlapi_keycodes.h # Dependencies for Bindings/Tcl/bindings.$O: $(BLD_TOP)Bindings/Tcl/bindings.$O: $(SRC_TOP)Bindings/Tcl/bindings.c -$(BLD_TOP)Bindings/Tcl/bindings.$O: $(SRC_TOP)Programs/iso_11548-1.h +$(BLD_TOP)Bindings/Tcl/bindings.$O: $(SRC_TOP)Programs/brldots.h $(BLD_TOP)Bindings/Tcl/bindings.$O: $(BLD_TOP)Programs/brlapi.h $(BLD_TOP)Bindings/Tcl/bindings.$O: $(BLD_TOP)Programs/brlapi_constants.h $(BLD_TOP)Bindings/Tcl/bindings.$O: $(SRC_TOP)Programs/brlapi_keycodes.h cd $(@D) && $(MAKE) $(@F) -# Dependencies for BrailleDrivers/Albatross/braille.$O: -$(BLD_TOP)BrailleDrivers/Albatross/braille.$O: $(SRC_TOP)BrailleDrivers/Albatross/braille.c -$(BLD_TOP)BrailleDrivers/Albatross/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/Albatross/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/Albatross/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/Albatross/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/Albatross/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/Albatross/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/Albatross/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/Albatross/braille.$O: $(SRC_TOP)BrailleDrivers/Albatross/braille.h -$(BLD_TOP)BrailleDrivers/Albatross/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/Albatross/braille.$O: $(SRC_TOP)Programs/io_serial.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/Alva/braille.$O: -$(BLD_TOP)BrailleDrivers/Alva/braille.$O: $(SRC_TOP)BrailleDrivers/Alva/braille.c -$(BLD_TOP)BrailleDrivers/Alva/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/Alva/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/Alva/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/Alva/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/Alva/braille.$O: $(BLD_TOP)Programs/brlapi_constants.h -$(BLD_TOP)BrailleDrivers/Alva/braille.$O: $(SRC_TOP)Programs/brlapi_keycodes.h -$(BLD_TOP)BrailleDrivers/Alva/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/Alva/braille.$O: $(SRC_TOP)Programs/brltty.h -$(BLD_TOP)BrailleDrivers/Alva/braille.$O: $(SRC_TOP)Programs/cmd.h -$(BLD_TOP)BrailleDrivers/Alva/braille.$O: $(SRC_TOP)Programs/ctb.h -$(BLD_TOP)BrailleDrivers/Alva/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/Alva/braille.$O: $(SRC_TOP)Programs/spk.h -$(BLD_TOP)BrailleDrivers/Alva/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/Alva/braille.$O: $(SRC_TOP)BrailleDrivers/Alva/braille.h -$(BLD_TOP)BrailleDrivers/Alva/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/Alva/braille.$O: $(SRC_TOP)Programs/io_serial.h -$(BLD_TOP)BrailleDrivers/Alva/braille.$O: $(SRC_TOP)Programs/io_usb.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/Baum/braille.$O: -$(BLD_TOP)BrailleDrivers/Baum/braille.$O: $(SRC_TOP)BrailleDrivers/Baum/braille.c -$(BLD_TOP)BrailleDrivers/Baum/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/Baum/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/Baum/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/Baum/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/Baum/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/Baum/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/Baum/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/Baum/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/Baum/braille.$O: $(SRC_TOP)Programs/io_serial.h -$(BLD_TOP)BrailleDrivers/Baum/braille.$O: $(SRC_TOP)Programs/io_usb.h -$(BLD_TOP)BrailleDrivers/Baum/braille.$O: $(SRC_TOP)Programs/io_bluetooth.h -$(BLD_TOP)BrailleDrivers/Baum/braille.$O: $(SRC_TOP)Programs/io_misc.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/BrailleLite/braille.$O: -$(BLD_TOP)BrailleDrivers/BrailleLite/braille.$O: $(SRC_TOP)BrailleDrivers/BrailleLite/braille.c -$(BLD_TOP)BrailleDrivers/BrailleLite/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/BrailleLite/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/BrailleLite/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/BrailleLite/braille.$O: $(SRC_TOP)Programs/message.h -$(BLD_TOP)BrailleDrivers/BrailleLite/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/BrailleLite/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/BrailleLite/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/BrailleLite/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/BrailleLite/braille.$O: $(SRC_TOP)Programs/tbl.h -$(BLD_TOP)BrailleDrivers/BrailleLite/braille.$O: $(SRC_TOP)BrailleDrivers/BrailleLite/braille.h -$(BLD_TOP)BrailleDrivers/BrailleLite/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/BrailleLite/braille.$O: $(SRC_TOP)Programs/io_serial.h -$(BLD_TOP)BrailleDrivers/BrailleLite/braille.$O: $(SRC_TOP)BrailleDrivers/BrailleLite/bindings.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/BrailleNote/braille.$O: -$(BLD_TOP)BrailleDrivers/BrailleNote/braille.$O: $(SRC_TOP)BrailleDrivers/BrailleNote/braille.c -$(BLD_TOP)BrailleDrivers/BrailleNote/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/BrailleNote/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/BrailleNote/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/BrailleNote/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/BrailleNote/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/BrailleNote/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/BrailleNote/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/BrailleNote/braille.$O: $(SRC_TOP)BrailleDrivers/BrailleNote/braille.h -$(BLD_TOP)BrailleDrivers/BrailleNote/braille.$O: $(SRC_TOP)Programs/tbl.h -$(BLD_TOP)BrailleDrivers/BrailleNote/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/BrailleNote/braille.$O: $(SRC_TOP)Programs/io_serial.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/BrailleSense/braille.$O: -$(BLD_TOP)BrailleDrivers/BrailleSense/braille.$O: $(SRC_TOP)BrailleDrivers/BrailleSense/braille.c -$(BLD_TOP)BrailleDrivers/BrailleSense/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/BrailleSense/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/BrailleSense/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/BrailleSense/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/BrailleSense/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/BrailleSense/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/BrailleSense/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/BrailleSense/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/BrailleSense/braille.$O: $(SRC_TOP)Programs/io_serial.h -$(BLD_TOP)BrailleDrivers/BrailleSense/braille.$O: $(SRC_TOP)Programs/io_usb.h -$(BLD_TOP)BrailleDrivers/BrailleSense/braille.$O: $(SRC_TOP)Programs/io_bluetooth.h -$(BLD_TOP)BrailleDrivers/BrailleSense/braille.$O: $(SRC_TOP)Programs/io_misc.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/Braudi/braille.$O: -$(BLD_TOP)BrailleDrivers/Braudi/braille.$O: $(SRC_TOP)BrailleDrivers/Braudi/braille.c -$(BLD_TOP)BrailleDrivers/Braudi/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/Braudi/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/Braudi/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/Braudi/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/Braudi/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/Braudi/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/Braudi/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/Braudi/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/Braudi/braille.$O: $(SRC_TOP)Programs/io_serial.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/BrlAPI/braille.$O: -$(BLD_TOP)BrailleDrivers/BrlAPI/braille.$O: $(SRC_TOP)BrailleDrivers/BrlAPI/braille.c -$(BLD_TOP)BrailleDrivers/BrlAPI/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/BrlAPI/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/BrlAPI/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/BrlAPI/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/BrlAPI/braille.$O: $(SRC_TOP)Programs/scr.h -$(BLD_TOP)BrailleDrivers/BrlAPI/braille.$O: $(BLD_TOP)Programs/brlapi_constants.h -$(BLD_TOP)BrailleDrivers/BrlAPI/braille.$O: $(SRC_TOP)Programs/brlapi_keycodes.h -$(BLD_TOP)BrailleDrivers/BrlAPI/braille.$O: $(SRC_TOP)Programs/cmd.h -$(BLD_TOP)BrailleDrivers/BrlAPI/braille.$O: $(SRC_TOP)Programs/charset.h -$(BLD_TOP)BrailleDrivers/BrlAPI/braille.$O: $(SRC_TOP)Programs/lock.h -$(BLD_TOP)BrailleDrivers/BrlAPI/braille.$O: $(BLD_TOP)Programs/brlapi.h -$(BLD_TOP)BrailleDrivers/BrlAPI/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/BrlAPI/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/BrlAPI/braille.$O: $(SRC_TOP)Programs/brldefs.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/CombiBraille/braille.$O: -$(BLD_TOP)BrailleDrivers/CombiBraille/braille.$O: $(SRC_TOP)BrailleDrivers/CombiBraille/braille.c -$(BLD_TOP)BrailleDrivers/CombiBraille/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/CombiBraille/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/CombiBraille/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/CombiBraille/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/CombiBraille/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/CombiBraille/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/CombiBraille/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/CombiBraille/braille.$O: $(SRC_TOP)BrailleDrivers/CombiBraille/braille.h -$(BLD_TOP)BrailleDrivers/CombiBraille/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/CombiBraille/braille.$O: $(SRC_TOP)Programs/io_serial.h -$(BLD_TOP)BrailleDrivers/CombiBraille/braille.$O: $(SRC_TOP)BrailleDrivers/CombiBraille/cmdtrans.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/EcoBraille/braille.$O: -$(BLD_TOP)BrailleDrivers/EcoBraille/braille.$O: $(SRC_TOP)BrailleDrivers/EcoBraille/braille.c -$(BLD_TOP)BrailleDrivers/EcoBraille/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/EcoBraille/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/EcoBraille/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/EcoBraille/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/EcoBraille/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/EcoBraille/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/EcoBraille/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/EcoBraille/braille.$O: $(SRC_TOP)BrailleDrivers/EcoBraille/braille.h -$(BLD_TOP)BrailleDrivers/EcoBraille/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/EcoBraille/braille.$O: $(SRC_TOP)Programs/io_serial.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/EuroBraille/eu_bluetooth.$O: -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_bluetooth.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_bluetooth.c -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_bluetooth.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_bluetooth.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_bluetooth.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_bluetooth.$O: $(SRC_TOP)Programs/io_misc.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_bluetooth.$O: $(SRC_TOP)Programs/io_bluetooth.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_bluetooth.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_io.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/EuroBraille/eu_braille.$O: -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_braille.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_braille.c -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_braille.$O: $(SRC_TOP)Programs/message.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_braille.$O: $(SRC_TOP)Programs/io_usb.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_braille.$O: $(SRC_TOP)Programs/io_bluetooth.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_braille.$O: $(SRC_TOP)Programs/io_serial.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/EuroBraille/eu_clio.$O: -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_clio.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_clio.c -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_clio.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_clio.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_clio.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_clio.$O: $(SRC_TOP)Programs/message.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_clio.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_protocol.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_clio.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_keys.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/EuroBraille/eu_esysiris.$O: -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_esysiris.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_esysiris.c -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_esysiris.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_esysiris.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_esysiris.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_esysiris.$O: $(SRC_TOP)Programs/message.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_esysiris.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_protocol.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_esysiris.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_keys.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/EuroBraille/eu_io.$O: -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_io.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_io.c -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_io.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_io.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_io.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_io.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/EuroBraille/eu_net.$O: -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_net.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_net.c -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_net.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_net.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_net.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_io.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_net.$O: $(SRC_TOP)Programs/sys_windows.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_net.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_net.$O: $(SRC_TOP)Programs/io_misc.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_net.$O: $(BLD_TOP)Programs/brlapi_constants.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_net.$O: $(SRC_TOP)Programs/brlapi_keycodes.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_net.$O: $(SRC_TOP)Programs/cmd.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_net.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_braille.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_net.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_net.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_net.$O: $(SRC_TOP)Programs/driver.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/EuroBraille/eu_protocol.$O: -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_protocol.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_protocol.c -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_protocol.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_protocol.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_protocol.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_protocol.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_protocol.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/EuroBraille/eu_serial.$O: -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_serial.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_serial.c -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_serial.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_serial.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_serial.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_io.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_serial.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_protocol.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_serial.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_serial.$O: $(SRC_TOP)Programs/io_serial.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/EuroBraille/eu_usb.$O: -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_usb.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_usb.c -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_usb.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_usb.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_usb.$O: $(SRC_TOP)BrailleDrivers/EuroBraille/eu_io.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_usb.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/EuroBraille/eu_usb.$O: $(SRC_TOP)Programs/io_usb.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/FreedomScientific/braille.$O: -$(BLD_TOP)BrailleDrivers/FreedomScientific/braille.$O: $(SRC_TOP)BrailleDrivers/FreedomScientific/braille.c -$(BLD_TOP)BrailleDrivers/FreedomScientific/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/FreedomScientific/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/FreedomScientific/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/FreedomScientific/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/FreedomScientific/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/FreedomScientific/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/FreedomScientific/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/FreedomScientific/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/FreedomScientific/braille.$O: $(SRC_TOP)Programs/io_serial.h -$(BLD_TOP)BrailleDrivers/FreedomScientific/braille.$O: $(SRC_TOP)Programs/io_usb.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/HandyTech/braille.$O: -$(BLD_TOP)BrailleDrivers/HandyTech/braille.$O: $(SRC_TOP)BrailleDrivers/HandyTech/braille.c -$(BLD_TOP)BrailleDrivers/HandyTech/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/HandyTech/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/HandyTech/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/HandyTech/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/HandyTech/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/HandyTech/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/HandyTech/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/HandyTech/braille.$O: $(SRC_TOP)Programs/touch.h -$(BLD_TOP)BrailleDrivers/HandyTech/braille.$O: $(SRC_TOP)BrailleDrivers/HandyTech/braille.h -$(BLD_TOP)BrailleDrivers/HandyTech/braille.$O: $(SRC_TOP)BrailleDrivers/HandyTech/brldefs-ht.h -$(BLD_TOP)BrailleDrivers/HandyTech/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/HandyTech/braille.$O: $(SRC_TOP)Programs/io_serial.h -$(BLD_TOP)BrailleDrivers/HandyTech/braille.$O: $(SRC_TOP)Programs/io_usb.h -$(BLD_TOP)BrailleDrivers/HandyTech/braille.$O: $(SRC_TOP)Programs/io_bluetooth.h -$(BLD_TOP)BrailleDrivers/HandyTech/braille.$O: $(SRC_TOP)Programs/io_misc.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/IrisLinux/braille.$O: -$(BLD_TOP)BrailleDrivers/IrisLinux/braille.$O: $(SRC_TOP)BrailleDrivers/IrisLinux/braille.c -$(BLD_TOP)BrailleDrivers/IrisLinux/braille.$O: $(BLD_TOP)config.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/Libbraille/braille.$O: -$(BLD_TOP)BrailleDrivers/Libbraille/braille.$O: $(SRC_TOP)BrailleDrivers/Libbraille/braille.c -$(BLD_TOP)BrailleDrivers/Libbraille/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/Libbraille/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/Libbraille/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/Libbraille/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/Libbraille/braille.$O: $(BLD_TOP)Programs/brlapi_constants.h -$(BLD_TOP)BrailleDrivers/Libbraille/braille.$O: $(SRC_TOP)Programs/brlapi_keycodes.h -$(BLD_TOP)BrailleDrivers/Libbraille/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/Libbraille/braille.$O: $(SRC_TOP)Programs/brltty.h -$(BLD_TOP)BrailleDrivers/Libbraille/braille.$O: $(SRC_TOP)Programs/cmd.h -$(BLD_TOP)BrailleDrivers/Libbraille/braille.$O: $(SRC_TOP)Programs/ctb.h -$(BLD_TOP)BrailleDrivers/Libbraille/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/Libbraille/braille.$O: $(SRC_TOP)Programs/spk.h -$(BLD_TOP)BrailleDrivers/Libbraille/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/Libbraille/braille.$O: $(SRC_TOP)Programs/tbl.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/LogText/braille.$O: -$(BLD_TOP)BrailleDrivers/LogText/braille.$O: $(SRC_TOP)BrailleDrivers/LogText/braille.c -$(BLD_TOP)BrailleDrivers/LogText/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/LogText/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/LogText/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/LogText/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/LogText/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/LogText/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/LogText/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/LogText/braille.$O: $(SRC_TOP)Programs/tbl.h -$(BLD_TOP)BrailleDrivers/LogText/braille.$O: $(SRC_TOP)BrailleDrivers/LogText/braille.h -$(BLD_TOP)BrailleDrivers/LogText/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/LogText/braille.$O: $(SRC_TOP)Programs/io_serial.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/MDV/braille.$O: -$(BLD_TOP)BrailleDrivers/MDV/braille.$O: $(SRC_TOP)BrailleDrivers/MDV/braille.c -$(BLD_TOP)BrailleDrivers/MDV/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/MDV/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/MDV/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/MDV/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/MDV/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/MDV/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/MDV/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/MDV/braille.$O: $(SRC_TOP)BrailleDrivers/MDV/braille.h -$(BLD_TOP)BrailleDrivers/MDV/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/MDV/braille.$O: $(SRC_TOP)Programs/io_serial.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/MiniBraille/braille.$O: -$(BLD_TOP)BrailleDrivers/MiniBraille/braille.$O: $(SRC_TOP)BrailleDrivers/MiniBraille/braille.c -$(BLD_TOP)BrailleDrivers/MiniBraille/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/MiniBraille/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/MiniBraille/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/MiniBraille/braille.$O: $(SRC_TOP)Programs/message.h -$(BLD_TOP)BrailleDrivers/MiniBraille/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/MiniBraille/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/MiniBraille/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/MiniBraille/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/MiniBraille/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/MiniBraille/braille.$O: $(SRC_TOP)Programs/io_serial.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/MultiBraille/braille.$O: -$(BLD_TOP)BrailleDrivers/MultiBraille/braille.$O: $(SRC_TOP)BrailleDrivers/MultiBraille/braille.c -$(BLD_TOP)BrailleDrivers/MultiBraille/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/MultiBraille/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/MultiBraille/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/MultiBraille/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/MultiBraille/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/MultiBraille/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/MultiBraille/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/MultiBraille/braille.$O: $(SRC_TOP)BrailleDrivers/MultiBraille/braille.h -$(BLD_TOP)BrailleDrivers/MultiBraille/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/MultiBraille/braille.$O: $(SRC_TOP)Programs/io_serial.h -$(BLD_TOP)BrailleDrivers/MultiBraille/braille.$O: $(SRC_TOP)BrailleDrivers/MultiBraille/tables.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/Papenmeier/braille.$O: -$(BLD_TOP)BrailleDrivers/Papenmeier/braille.$O: $(SRC_TOP)BrailleDrivers/Papenmeier/braille.c -$(BLD_TOP)BrailleDrivers/Papenmeier/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/Papenmeier/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/Papenmeier/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/Papenmeier/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/Papenmeier/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/Papenmeier/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/Papenmeier/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/Papenmeier/braille.$O: $(SRC_TOP)BrailleDrivers/Papenmeier/braille.h -$(BLD_TOP)BrailleDrivers/Papenmeier/braille.$O: $(BLD_TOP)BrailleDrivers/Papenmeier/config.tab.c -$(BLD_TOP)BrailleDrivers/Papenmeier/braille.$O: $(SRC_TOP)BrailleDrivers/Papenmeier/brl-cfg.h -$(BLD_TOP)BrailleDrivers/Papenmeier/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/Papenmeier/braille.$O: $(SRC_TOP)Programs/io_serial.h -$(BLD_TOP)BrailleDrivers/Papenmeier/braille.$O: $(SRC_TOP)Programs/io_usb.h -$(BLD_TOP)BrailleDrivers/Papenmeier/braille.$O: $(SRC_TOP)Programs/io_bluetooth.h -$(BLD_TOP)BrailleDrivers/Papenmeier/braille.$O: $(SRC_TOP)Programs/io_misc.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/Papenmeier/config.tab.c: -$(BLD_TOP)BrailleDrivers/Papenmeier/config.tab.c: $(SRC_TOP)BrailleDrivers/Papenmeier/config.y -$(BLD_TOP)BrailleDrivers/Papenmeier/config.tab.c: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/Papenmeier/config.tab.c: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/Papenmeier/config.tab.c: $(SRC_TOP)BrailleDrivers/Papenmeier/brl-cfg.h -$(BLD_TOP)BrailleDrivers/Papenmeier/config.tab.c: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/Papenmeier/config.tab.c: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/Papenmeier/config.tab.c: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/Papenmeier/config.tab.c: $(BLD_TOP)BrailleDrivers/Papenmeier/cmd.auto.h -$(BLD_TOP)BrailleDrivers/Papenmeier/config.tab.c: $(BLD_TOP)BrailleDrivers/Papenmeier/hlp.auto.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/Papenmeier/read_config.$O: -$(BLD_TOP)BrailleDrivers/Papenmeier/read_config.$O: $(SRC_TOP)BrailleDrivers/Papenmeier/read_config.c -$(BLD_TOP)BrailleDrivers/Papenmeier/read_config.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/Papenmeier/read_config.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/Papenmeier/read_config.$O: $(BLD_TOP)Programs/brlapi_constants.h -$(BLD_TOP)BrailleDrivers/Papenmeier/read_config.$O: $(SRC_TOP)Programs/brlapi_keycodes.h -$(BLD_TOP)BrailleDrivers/Papenmeier/read_config.$O: $(SRC_TOP)Programs/cmd.h -$(BLD_TOP)BrailleDrivers/Papenmeier/read_config.$O: $(BLD_TOP)BrailleDrivers/Papenmeier/config.tab.c - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/Skeleton/braille.$O: -$(BLD_TOP)BrailleDrivers/Skeleton/braille.$O: $(SRC_TOP)BrailleDrivers/Skeleton/braille.c -$(BLD_TOP)BrailleDrivers/Skeleton/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/Skeleton/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/Skeleton/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/Skeleton/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/Skeleton/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/Skeleton/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/Skeleton/braille.$O: $(SRC_TOP)Programs/driver.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/TSI/braille.$O: -$(BLD_TOP)BrailleDrivers/TSI/braille.$O: $(SRC_TOP)BrailleDrivers/TSI/braille.c -$(BLD_TOP)BrailleDrivers/TSI/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/TSI/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/TSI/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/TSI/braille.$O: $(SRC_TOP)Programs/message.h -$(BLD_TOP)BrailleDrivers/TSI/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/TSI/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/TSI/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/TSI/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/TSI/braille.$O: $(SRC_TOP)BrailleDrivers/TSI/braille.h -$(BLD_TOP)BrailleDrivers/TSI/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/TSI/braille.$O: $(SRC_TOP)Programs/io_serial.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/TTY/braille.$O: -$(BLD_TOP)BrailleDrivers/TTY/braille.$O: $(SRC_TOP)BrailleDrivers/TTY/braille.c -$(BLD_TOP)BrailleDrivers/TTY/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/TTY/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/TTY/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/TTY/braille.$O: $(SRC_TOP)Programs/charset.h -$(BLD_TOP)BrailleDrivers/TTY/braille.$O: $(SRC_TOP)Programs/lock.h -$(BLD_TOP)BrailleDrivers/TTY/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/TTY/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/TTY/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/TTY/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/TTY/braille.$O: $(SRC_TOP)BrailleDrivers/TTY/braille.h -$(BLD_TOP)BrailleDrivers/TTY/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/TTY/braille.$O: $(SRC_TOP)Programs/io_serial.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/TechniBraille/braille.$O: -$(BLD_TOP)BrailleDrivers/TechniBraille/braille.$O: $(SRC_TOP)BrailleDrivers/TechniBraille/braille.c -$(BLD_TOP)BrailleDrivers/TechniBraille/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/TechniBraille/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/TechniBraille/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/TechniBraille/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/TechniBraille/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/TechniBraille/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/TechniBraille/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/TechniBraille/braille.$O: $(SRC_TOP)Programs/tbl.h -$(BLD_TOP)BrailleDrivers/TechniBraille/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/TechniBraille/braille.$O: $(SRC_TOP)Programs/io_serial.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/VideoBraille/vb.$O: -$(BLD_TOP)BrailleDrivers/VideoBraille/vb.$O: $(SRC_TOP)BrailleDrivers/VideoBraille/vb.c -$(BLD_TOP)BrailleDrivers/VideoBraille/vb.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/VideoBraille/vb.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/VideoBraille/vb.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/VideoBraille/vb.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/VideoBraille/vb.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/VideoBraille/vb.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/VideoBraille/vb.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/VideoBraille/vb.$O: $(SRC_TOP)BrailleDrivers/VideoBraille/braille.h -$(BLD_TOP)BrailleDrivers/VideoBraille/vb.$O: $(SRC_TOP)BrailleDrivers/VideoBraille/vblow.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/VideoBraille/vblow.$O: -$(BLD_TOP)BrailleDrivers/VideoBraille/vblow.$O: $(SRC_TOP)BrailleDrivers/VideoBraille/vblow.c -$(BLD_TOP)BrailleDrivers/VideoBraille/vblow.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/VideoBraille/vblow.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/VideoBraille/vblow.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/VideoBraille/vblow.$O: $(SRC_TOP)Programs/keyboard.h -$(BLD_TOP)BrailleDrivers/VideoBraille/vblow.$O: $(SRC_TOP)Programs/system.h -$(BLD_TOP)BrailleDrivers/VideoBraille/vblow.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/VideoBraille/vblow.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/VideoBraille/vblow.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/VideoBraille/vblow.$O: $(SRC_TOP)BrailleDrivers/VideoBraille/braille.h -$(BLD_TOP)BrailleDrivers/VideoBraille/vblow.$O: $(SRC_TOP)BrailleDrivers/VideoBraille/vblow.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/Virtual/braille.$O: -$(BLD_TOP)BrailleDrivers/Virtual/braille.$O: $(SRC_TOP)BrailleDrivers/Virtual/braille.c -$(BLD_TOP)BrailleDrivers/Virtual/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/Virtual/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/Virtual/braille.$O: $(SRC_TOP)Programs/sys_windows.h -$(BLD_TOP)BrailleDrivers/Virtual/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/Virtual/braille.$O: $(SRC_TOP)Programs/charset.h -$(BLD_TOP)BrailleDrivers/Virtual/braille.$O: $(SRC_TOP)Programs/lock.h -$(BLD_TOP)BrailleDrivers/Virtual/braille.$O: $(BLD_TOP)Programs/brlapi_constants.h -$(BLD_TOP)BrailleDrivers/Virtual/braille.$O: $(SRC_TOP)Programs/brlapi_keycodes.h -$(BLD_TOP)BrailleDrivers/Virtual/braille.$O: $(SRC_TOP)Programs/cmd.h -$(BLD_TOP)BrailleDrivers/Virtual/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/Virtual/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/Virtual/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/Virtual/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/Virtual/braille.$O: $(SRC_TOP)BrailleDrivers/Virtual/braille.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/VisioBraille/braille.$O: -$(BLD_TOP)BrailleDrivers/VisioBraille/braille.$O: $(SRC_TOP)BrailleDrivers/VisioBraille/braille.c -$(BLD_TOP)BrailleDrivers/VisioBraille/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/VisioBraille/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/VisioBraille/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/VisioBraille/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/VisioBraille/braille.$O: $(SRC_TOP)Programs/scr.h -$(BLD_TOP)BrailleDrivers/VisioBraille/braille.$O: $(SRC_TOP)Programs/message.h -$(BLD_TOP)BrailleDrivers/VisioBraille/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/VisioBraille/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/VisioBraille/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/VisioBraille/braille.$O: $(SRC_TOP)BrailleDrivers/VisioBraille/braille.h -$(BLD_TOP)BrailleDrivers/VisioBraille/braille.$O: $(SRC_TOP)BrailleDrivers/VisioBraille/brldefs-vs.h -$(BLD_TOP)BrailleDrivers/VisioBraille/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/VisioBraille/braille.$O: $(SRC_TOP)Programs/io_serial.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/VisioBraille/vstp_main.$O: -$(BLD_TOP)BrailleDrivers/VisioBraille/vstp_main.$O: $(SRC_TOP)BrailleDrivers/VisioBraille/vstp_main.c -$(BLD_TOP)BrailleDrivers/VisioBraille/vstp_main.$O: $(BLD_TOP)Programs/brlapi.h -$(BLD_TOP)BrailleDrivers/VisioBraille/vstp_main.$O: $(BLD_TOP)Programs/brlapi_constants.h -$(BLD_TOP)BrailleDrivers/VisioBraille/vstp_main.$O: $(SRC_TOP)Programs/brlapi_keycodes.h -$(BLD_TOP)BrailleDrivers/VisioBraille/vstp_main.$O: $(SRC_TOP)BrailleDrivers/VisioBraille/vstp.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/VisioBraille/vstp_transfer.$O: -$(BLD_TOP)BrailleDrivers/VisioBraille/vstp_transfer.$O: $(SRC_TOP)BrailleDrivers/VisioBraille/vstp_transfer.c -$(BLD_TOP)BrailleDrivers/VisioBraille/vstp_transfer.$O: $(BLD_TOP)Programs/brlapi.h -$(BLD_TOP)BrailleDrivers/VisioBraille/vstp_transfer.$O: $(BLD_TOP)Programs/brlapi_constants.h -$(BLD_TOP)BrailleDrivers/VisioBraille/vstp_transfer.$O: $(SRC_TOP)Programs/brlapi_keycodes.h -$(BLD_TOP)BrailleDrivers/VisioBraille/vstp_transfer.$O: $(SRC_TOP)Programs/brlapi_protocol.h -$(BLD_TOP)BrailleDrivers/VisioBraille/vstp_transfer.$O: $(SRC_TOP)BrailleDrivers/VisioBraille/vstp.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/Voyager/braille.$O: -$(BLD_TOP)BrailleDrivers/Voyager/braille.$O: $(SRC_TOP)BrailleDrivers/Voyager/braille.c -$(BLD_TOP)BrailleDrivers/Voyager/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/Voyager/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/Voyager/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/Voyager/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/Voyager/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/Voyager/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/Voyager/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/Voyager/braille.$O: $(SRC_TOP)Programs/tbl.h -$(BLD_TOP)BrailleDrivers/Voyager/braille.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)BrailleDrivers/Voyager/braille.$O: $(SRC_TOP)Programs/io_serial.h -$(BLD_TOP)BrailleDrivers/Voyager/braille.$O: $(SRC_TOP)Programs/io_usb.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for BrailleDrivers/XWindow/braille.$O: -$(BLD_TOP)BrailleDrivers/XWindow/braille.$O: $(SRC_TOP)BrailleDrivers/XWindow/braille.c -$(BLD_TOP)BrailleDrivers/XWindow/braille.$O: $(BLD_TOP)config.h -$(BLD_TOP)BrailleDrivers/XWindow/braille.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)BrailleDrivers/XWindow/braille.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)BrailleDrivers/XWindow/braille.$O: $(SRC_TOP)Programs/charset.h -$(BLD_TOP)BrailleDrivers/XWindow/braille.$O: $(SRC_TOP)Programs/lock.h -$(BLD_TOP)BrailleDrivers/XWindow/braille.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)BrailleDrivers/XWindow/braille.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)BrailleDrivers/XWindow/braille.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)BrailleDrivers/XWindow/braille.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)BrailleDrivers/XWindow/braille.$O: $(SRC_TOP)BrailleDrivers/XWindow/braille.h +# Dependencies for Drivers/Braille/Albatross/braille.$O: +$(BLD_TOP)Drivers/Braille/Albatross/braille.$O: $(SRC_TOP)Drivers/Braille/Albatross/braille.c +$(BLD_TOP)Drivers/Braille/Albatross/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/Albatross/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/Albatross/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/Albatross/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/Albatross/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/Albatross/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/Albatross/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/Albatross/braille.$O: $(SRC_TOP)Drivers/Braille/Albatross/braille.h +$(BLD_TOP)Drivers/Braille/Albatross/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/Albatross/braille.$O: $(SRC_TOP)Programs/io_serial.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/Alva/braille.$O: +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)Drivers/Braille/Alva/braille.c +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)Programs/bitmask.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(BLD_TOP)Programs/brlapi_constants.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)Programs/brlapi_keycodes.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)Programs/brltty.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)Programs/cmd.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)Programs/ctb.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)Programs/keycodes.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)Programs/ktb.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)Programs/spk.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)Drivers/Braille/Alva/braille.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)Programs/io_serial.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)Programs/io_usb.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)Programs/io_bluetooth.h +$(BLD_TOP)Drivers/Braille/Alva/braille.$O: $(SRC_TOP)Programs/io_misc.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/Baum/braille.$O: +$(BLD_TOP)Drivers/Braille/Baum/braille.$O: $(SRC_TOP)Drivers/Braille/Baum/braille.c +$(BLD_TOP)Drivers/Braille/Baum/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/Baum/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/Baum/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/Baum/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/Baum/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/Baum/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/Baum/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/Baum/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/Baum/braille.$O: $(SRC_TOP)Programs/io_serial.h +$(BLD_TOP)Drivers/Braille/Baum/braille.$O: $(SRC_TOP)Programs/io_usb.h +$(BLD_TOP)Drivers/Braille/Baum/braille.$O: $(SRC_TOP)Programs/io_bluetooth.h +$(BLD_TOP)Drivers/Braille/Baum/braille.$O: $(SRC_TOP)Programs/io_misc.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/BrailleLite/braille.$O: +$(BLD_TOP)Drivers/Braille/BrailleLite/braille.$O: $(SRC_TOP)Drivers/Braille/BrailleLite/braille.c +$(BLD_TOP)Drivers/Braille/BrailleLite/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/BrailleLite/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/BrailleLite/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/BrailleLite/braille.$O: $(SRC_TOP)Programs/message.h +$(BLD_TOP)Drivers/Braille/BrailleLite/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/BrailleLite/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/BrailleLite/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/BrailleLite/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/BrailleLite/braille.$O: $(SRC_TOP)Drivers/Braille/BrailleLite/braille.h +$(BLD_TOP)Drivers/Braille/BrailleLite/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/BrailleLite/braille.$O: $(SRC_TOP)Programs/io_serial.h +$(BLD_TOP)Drivers/Braille/BrailleLite/braille.$O: $(SRC_TOP)Drivers/Braille/BrailleLite/bindings.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/BrailleNote/braille.$O: +$(BLD_TOP)Drivers/Braille/BrailleNote/braille.$O: $(SRC_TOP)Drivers/Braille/BrailleNote/braille.c +$(BLD_TOP)Drivers/Braille/BrailleNote/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/BrailleNote/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/BrailleNote/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/BrailleNote/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/BrailleNote/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/BrailleNote/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/BrailleNote/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/BrailleNote/braille.$O: $(SRC_TOP)Drivers/Braille/BrailleNote/braille.h +$(BLD_TOP)Drivers/Braille/BrailleNote/braille.$O: $(SRC_TOP)Programs/ttb.h +$(BLD_TOP)Drivers/Braille/BrailleNote/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/BrailleNote/braille.$O: $(SRC_TOP)Programs/io_serial.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/Braudi/braille.$O: +$(BLD_TOP)Drivers/Braille/Braudi/braille.$O: $(SRC_TOP)Drivers/Braille/Braudi/braille.c +$(BLD_TOP)Drivers/Braille/Braudi/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/Braudi/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/Braudi/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/Braudi/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/Braudi/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/Braudi/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/Braudi/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/Braudi/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/Braudi/braille.$O: $(SRC_TOP)Programs/io_serial.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/BrlAPI/braille.$O: +$(BLD_TOP)Drivers/Braille/BrlAPI/braille.$O: $(SRC_TOP)Drivers/Braille/BrlAPI/braille.c +$(BLD_TOP)Drivers/Braille/BrlAPI/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/BrlAPI/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/BrlAPI/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/BrlAPI/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/BrlAPI/braille.$O: $(SRC_TOP)Programs/scr.h +$(BLD_TOP)Drivers/Braille/BrlAPI/braille.$O: $(BLD_TOP)Programs/brlapi_constants.h +$(BLD_TOP)Drivers/Braille/BrlAPI/braille.$O: $(SRC_TOP)Programs/brlapi_keycodes.h +$(BLD_TOP)Drivers/Braille/BrlAPI/braille.$O: $(SRC_TOP)Programs/cmd.h +$(BLD_TOP)Drivers/Braille/BrlAPI/braille.$O: $(SRC_TOP)Programs/charset.h +$(BLD_TOP)Drivers/Braille/BrlAPI/braille.$O: $(SRC_TOP)Programs/lock.h +$(BLD_TOP)Drivers/Braille/BrlAPI/braille.$O: $(BLD_TOP)Programs/brlapi.h +$(BLD_TOP)Drivers/Braille/BrlAPI/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/BrlAPI/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/BrlAPI/braille.$O: $(SRC_TOP)Programs/brldefs.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/CombiBraille/braille.$O: +$(BLD_TOP)Drivers/Braille/CombiBraille/braille.$O: $(SRC_TOP)Drivers/Braille/CombiBraille/braille.c +$(BLD_TOP)Drivers/Braille/CombiBraille/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/CombiBraille/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/CombiBraille/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/CombiBraille/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/CombiBraille/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/CombiBraille/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/CombiBraille/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/CombiBraille/braille.$O: $(SRC_TOP)Drivers/Braille/CombiBraille/braille.h +$(BLD_TOP)Drivers/Braille/CombiBraille/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/CombiBraille/braille.$O: $(SRC_TOP)Programs/io_serial.h +$(BLD_TOP)Drivers/Braille/CombiBraille/braille.$O: $(SRC_TOP)Drivers/Braille/CombiBraille/cmdtrans.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/EcoBraille/braille.$O: +$(BLD_TOP)Drivers/Braille/EcoBraille/braille.$O: $(SRC_TOP)Drivers/Braille/EcoBraille/braille.c +$(BLD_TOP)Drivers/Braille/EcoBraille/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/EcoBraille/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/EcoBraille/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/EcoBraille/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/EcoBraille/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/EcoBraille/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/EcoBraille/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/EcoBraille/braille.$O: $(SRC_TOP)Drivers/Braille/EcoBraille/braille.h +$(BLD_TOP)Drivers/Braille/EcoBraille/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/EcoBraille/braille.$O: $(SRC_TOP)Programs/io_serial.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/EuroBraille/eu_bluetooth.$O: +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_bluetooth.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_bluetooth.c +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_bluetooth.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_bluetooth.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_bluetooth.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_bluetooth.$O: $(SRC_TOP)Programs/io_misc.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_bluetooth.$O: $(SRC_TOP)Programs/io_bluetooth.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_bluetooth.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_io.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/EuroBraille/eu_braille.$O: +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_braille.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_braille.c +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_braille.$O: $(SRC_TOP)Programs/message.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_braille.$O: $(SRC_TOP)Programs/io_usb.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_braille.$O: $(SRC_TOP)Programs/io_bluetooth.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_braille.$O: $(SRC_TOP)Programs/io_serial.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/EuroBraille/eu_clio.$O: +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_clio.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_clio.c +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_clio.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_clio.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_clio.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_clio.$O: $(SRC_TOP)Programs/message.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_clio.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_protocol.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_clio.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_keys.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/EuroBraille/eu_esysiris.$O: +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_esysiris.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_esysiris.c +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_esysiris.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_esysiris.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_esysiris.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_esysiris.$O: $(SRC_TOP)Programs/message.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_esysiris.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_protocol.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_esysiris.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_keys.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/EuroBraille/eu_io.$O: +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_io.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_io.c +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_io.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_io.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_io.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_io.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/EuroBraille/eu_net.$O: +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_net.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_net.c +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_net.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_net.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_net.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_io.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_net.$O: $(SRC_TOP)Programs/sys_windows.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_net.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_net.$O: $(SRC_TOP)Programs/io_misc.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_net.$O: $(BLD_TOP)Programs/brlapi_constants.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_net.$O: $(SRC_TOP)Programs/brlapi_keycodes.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_net.$O: $(SRC_TOP)Programs/cmd.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_net.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_braille.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_net.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_net.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_net.$O: $(SRC_TOP)Programs/driver.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/EuroBraille/eu_protocol.$O: +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_protocol.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_protocol.c +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_protocol.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_protocol.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_protocol.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_protocol.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_protocol.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/EuroBraille/eu_serial.$O: +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_serial.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_serial.c +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_serial.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_serial.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_serial.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_io.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_serial.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_protocol.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_serial.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_serial.$O: $(SRC_TOP)Programs/io_serial.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/EuroBraille/eu_usb.$O: +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_usb.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_usb.c +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_usb.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_usb.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_usb.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_usb.$O: $(SRC_TOP)Drivers/Braille/EuroBraille/eu_io.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_usb.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/EuroBraille/eu_usb.$O: $(SRC_TOP)Programs/io_usb.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/FreedomScientific/braille.$O: +$(BLD_TOP)Drivers/Braille/FreedomScientific/braille.$O: $(SRC_TOP)Drivers/Braille/FreedomScientific/braille.c +$(BLD_TOP)Drivers/Braille/FreedomScientific/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/FreedomScientific/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/FreedomScientific/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/FreedomScientific/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/FreedomScientific/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/FreedomScientific/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/FreedomScientific/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/FreedomScientific/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/FreedomScientific/braille.$O: $(SRC_TOP)Programs/io_serial.h +$(BLD_TOP)Drivers/Braille/FreedomScientific/braille.$O: $(SRC_TOP)Programs/io_usb.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/HIMS/braille.$O: +$(BLD_TOP)Drivers/Braille/HIMS/braille.$O: $(SRC_TOP)Drivers/Braille/HIMS/braille.c +$(BLD_TOP)Drivers/Braille/HIMS/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/HIMS/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/HIMS/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/HIMS/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/HIMS/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/HIMS/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/HIMS/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/HIMS/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/HIMS/braille.$O: $(SRC_TOP)Programs/io_serial.h +$(BLD_TOP)Drivers/Braille/HIMS/braille.$O: $(SRC_TOP)Programs/io_usb.h +$(BLD_TOP)Drivers/Braille/HIMS/braille.$O: $(SRC_TOP)Programs/io_bluetooth.h +$(BLD_TOP)Drivers/Braille/HIMS/braille.$O: $(SRC_TOP)Programs/io_misc.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/HandyTech/braille.$O: +$(BLD_TOP)Drivers/Braille/HandyTech/braille.$O: $(SRC_TOP)Drivers/Braille/HandyTech/braille.c +$(BLD_TOP)Drivers/Braille/HandyTech/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/HandyTech/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/HandyTech/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/HandyTech/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/HandyTech/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/HandyTech/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/HandyTech/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/HandyTech/braille.$O: $(SRC_TOP)Programs/touch.h +$(BLD_TOP)Drivers/Braille/HandyTech/braille.$O: $(SRC_TOP)Drivers/Braille/HandyTech/braille.h +$(BLD_TOP)Drivers/Braille/HandyTech/braille.$O: $(SRC_TOP)Drivers/Braille/HandyTech/brldefs-ht.h +$(BLD_TOP)Drivers/Braille/HandyTech/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/HandyTech/braille.$O: $(SRC_TOP)Programs/io_serial.h +$(BLD_TOP)Drivers/Braille/HandyTech/braille.$O: $(SRC_TOP)Programs/io_usb.h +$(BLD_TOP)Drivers/Braille/HandyTech/braille.$O: $(SRC_TOP)Programs/io_bluetooth.h +$(BLD_TOP)Drivers/Braille/HandyTech/braille.$O: $(SRC_TOP)Programs/io_misc.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/IrisLinux/braille.$O: +$(BLD_TOP)Drivers/Braille/IrisLinux/braille.$O: $(SRC_TOP)Drivers/Braille/IrisLinux/braille.c +$(BLD_TOP)Drivers/Braille/IrisLinux/braille.$O: $(BLD_TOP)config.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/Libbraille/braille.$O: +$(BLD_TOP)Drivers/Braille/Libbraille/braille.$O: $(SRC_TOP)Drivers/Braille/Libbraille/braille.c +$(BLD_TOP)Drivers/Braille/Libbraille/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/Libbraille/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/Libbraille/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/Libbraille/braille.$O: $(SRC_TOP)Programs/bitmask.h +$(BLD_TOP)Drivers/Braille/Libbraille/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/Libbraille/braille.$O: $(BLD_TOP)Programs/brlapi_constants.h +$(BLD_TOP)Drivers/Braille/Libbraille/braille.$O: $(SRC_TOP)Programs/brlapi_keycodes.h +$(BLD_TOP)Drivers/Braille/Libbraille/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/Libbraille/braille.$O: $(SRC_TOP)Programs/brltty.h +$(BLD_TOP)Drivers/Braille/Libbraille/braille.$O: $(SRC_TOP)Programs/cmd.h +$(BLD_TOP)Drivers/Braille/Libbraille/braille.$O: $(SRC_TOP)Programs/ctb.h +$(BLD_TOP)Drivers/Braille/Libbraille/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/Libbraille/braille.$O: $(SRC_TOP)Programs/keycodes.h +$(BLD_TOP)Drivers/Braille/Libbraille/braille.$O: $(SRC_TOP)Programs/ktb.h +$(BLD_TOP)Drivers/Braille/Libbraille/braille.$O: $(SRC_TOP)Programs/spk.h +$(BLD_TOP)Drivers/Braille/Libbraille/braille.$O: $(SRC_TOP)Programs/brl_driver.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/LogText/braille.$O: +$(BLD_TOP)Drivers/Braille/LogText/braille.$O: $(SRC_TOP)Drivers/Braille/LogText/braille.c +$(BLD_TOP)Drivers/Braille/LogText/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/LogText/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/LogText/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/LogText/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/LogText/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/LogText/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/LogText/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/LogText/braille.$O: $(SRC_TOP)Drivers/Braille/LogText/braille.h +$(BLD_TOP)Drivers/Braille/LogText/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/LogText/braille.$O: $(SRC_TOP)Programs/io_serial.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/MDV/braille.$O: +$(BLD_TOP)Drivers/Braille/MDV/braille.$O: $(SRC_TOP)Drivers/Braille/MDV/braille.c +$(BLD_TOP)Drivers/Braille/MDV/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/MDV/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/MDV/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/MDV/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/MDV/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/MDV/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/MDV/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/MDV/braille.$O: $(SRC_TOP)Drivers/Braille/MDV/braille.h +$(BLD_TOP)Drivers/Braille/MDV/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/MDV/braille.$O: $(SRC_TOP)Programs/io_serial.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/MiniBraille/braille.$O: +$(BLD_TOP)Drivers/Braille/MiniBraille/braille.$O: $(SRC_TOP)Drivers/Braille/MiniBraille/braille.c +$(BLD_TOP)Drivers/Braille/MiniBraille/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/MiniBraille/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/MiniBraille/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/MiniBraille/braille.$O: $(SRC_TOP)Programs/message.h +$(BLD_TOP)Drivers/Braille/MiniBraille/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/MiniBraille/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/MiniBraille/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/MiniBraille/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/MiniBraille/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/MiniBraille/braille.$O: $(SRC_TOP)Programs/io_serial.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/MultiBraille/braille.$O: +$(BLD_TOP)Drivers/Braille/MultiBraille/braille.$O: $(SRC_TOP)Drivers/Braille/MultiBraille/braille.c +$(BLD_TOP)Drivers/Braille/MultiBraille/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/MultiBraille/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/MultiBraille/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/MultiBraille/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/MultiBraille/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/MultiBraille/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/MultiBraille/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/MultiBraille/braille.$O: $(SRC_TOP)Drivers/Braille/MultiBraille/braille.h +$(BLD_TOP)Drivers/Braille/MultiBraille/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/MultiBraille/braille.$O: $(SRC_TOP)Programs/io_serial.h +$(BLD_TOP)Drivers/Braille/MultiBraille/braille.$O: $(SRC_TOP)Drivers/Braille/MultiBraille/tables.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/Papenmeier/braille.$O: +$(BLD_TOP)Drivers/Braille/Papenmeier/braille.$O: $(SRC_TOP)Drivers/Braille/Papenmeier/braille.c +$(BLD_TOP)Drivers/Braille/Papenmeier/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/Papenmeier/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/Papenmeier/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/Papenmeier/braille.$O: $(SRC_TOP)Programs/message.h +$(BLD_TOP)Drivers/Braille/Papenmeier/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/Papenmeier/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/Papenmeier/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/Papenmeier/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/Papenmeier/braille.$O: $(SRC_TOP)Drivers/Braille/Papenmeier/braille.h +$(BLD_TOP)Drivers/Braille/Papenmeier/braille.$O: $(BLD_TOP)Drivers/Braille/Papenmeier/config.tab.c +$(BLD_TOP)Drivers/Braille/Papenmeier/braille.$O: $(SRC_TOP)Drivers/Braille/Papenmeier/brl-cfg.h +$(BLD_TOP)Drivers/Braille/Papenmeier/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/Papenmeier/braille.$O: $(SRC_TOP)Programs/io_serial.h +$(BLD_TOP)Drivers/Braille/Papenmeier/braille.$O: $(SRC_TOP)Programs/io_usb.h +$(BLD_TOP)Drivers/Braille/Papenmeier/braille.$O: $(SRC_TOP)Programs/io_bluetooth.h +$(BLD_TOP)Drivers/Braille/Papenmeier/braille.$O: $(SRC_TOP)Programs/io_misc.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/Papenmeier/config.tab.c: +$(BLD_TOP)Drivers/Braille/Papenmeier/config.tab.c: $(SRC_TOP)Drivers/Braille/Papenmeier/config.y +$(BLD_TOP)Drivers/Braille/Papenmeier/config.tab.c: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/Papenmeier/config.tab.c: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/Papenmeier/config.tab.c: $(SRC_TOP)Drivers/Braille/Papenmeier/brl-cfg.h +$(BLD_TOP)Drivers/Braille/Papenmeier/config.tab.c: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/Papenmeier/config.tab.c: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/Papenmeier/config.tab.c: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/Papenmeier/config.tab.c: $(BLD_TOP)Drivers/Braille/Papenmeier/cmd.auto.h +$(BLD_TOP)Drivers/Braille/Papenmeier/config.tab.c: $(BLD_TOP)Drivers/Braille/Papenmeier/hlp.auto.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/Papenmeier/read_config.$O: +$(BLD_TOP)Drivers/Braille/Papenmeier/read_config.$O: $(SRC_TOP)Drivers/Braille/Papenmeier/read_config.c +$(BLD_TOP)Drivers/Braille/Papenmeier/read_config.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/Papenmeier/read_config.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/Papenmeier/read_config.$O: $(BLD_TOP)Programs/brlapi_constants.h +$(BLD_TOP)Drivers/Braille/Papenmeier/read_config.$O: $(SRC_TOP)Programs/brlapi_keycodes.h +$(BLD_TOP)Drivers/Braille/Papenmeier/read_config.$O: $(SRC_TOP)Programs/cmd.h +$(BLD_TOP)Drivers/Braille/Papenmeier/read_config.$O: $(BLD_TOP)Drivers/Braille/Papenmeier/config.tab.c + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/Pegasus/braille.$O: +$(BLD_TOP)Drivers/Braille/Pegasus/braille.$O: $(SRC_TOP)Drivers/Braille/Pegasus/braille.c +$(BLD_TOP)Drivers/Braille/Pegasus/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/Pegasus/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/Pegasus/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/Pegasus/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/Pegasus/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/Pegasus/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/Pegasus/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/Pegasus/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/Pegasus/braille.$O: $(SRC_TOP)Programs/io_serial.h +$(BLD_TOP)Drivers/Braille/Pegasus/braille.$O: $(SRC_TOP)Programs/io_usb.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/Seika/braille.$O: +$(BLD_TOP)Drivers/Braille/Seika/braille.$O: $(SRC_TOP)Drivers/Braille/Seika/braille.c +$(BLD_TOP)Drivers/Braille/Seika/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/Seika/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/Seika/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/Seika/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/Seika/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/Seika/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/Seika/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/Seika/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/Seika/braille.$O: $(SRC_TOP)Programs/io_serial.h +$(BLD_TOP)Drivers/Braille/Seika/braille.$O: $(SRC_TOP)Programs/io_usb.h +$(BLD_TOP)Drivers/Braille/Seika/braille.$O: $(SRC_TOP)Programs/io_bluetooth.h +$(BLD_TOP)Drivers/Braille/Seika/braille.$O: $(SRC_TOP)Programs/io_misc.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/Skeleton/braille.$O: +$(BLD_TOP)Drivers/Braille/Skeleton/braille.$O: $(SRC_TOP)Drivers/Braille/Skeleton/braille.c +$(BLD_TOP)Drivers/Braille/Skeleton/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/Skeleton/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/Skeleton/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/Skeleton/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/Skeleton/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/Skeleton/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/Skeleton/braille.$O: $(SRC_TOP)Programs/driver.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/TSI/braille.$O: +$(BLD_TOP)Drivers/Braille/TSI/braille.$O: $(SRC_TOP)Drivers/Braille/TSI/braille.c +$(BLD_TOP)Drivers/Braille/TSI/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/TSI/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/TSI/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/TSI/braille.$O: $(SRC_TOP)Programs/message.h +$(BLD_TOP)Drivers/Braille/TSI/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/TSI/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/TSI/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/TSI/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/TSI/braille.$O: $(SRC_TOP)Drivers/Braille/TSI/braille.h +$(BLD_TOP)Drivers/Braille/TSI/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/TSI/braille.$O: $(SRC_TOP)Programs/io_serial.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/TTY/braille.$O: +$(BLD_TOP)Drivers/Braille/TTY/braille.$O: $(SRC_TOP)Drivers/Braille/TTY/braille.c +$(BLD_TOP)Drivers/Braille/TTY/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/TTY/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/TTY/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/TTY/braille.$O: $(SRC_TOP)Programs/charset.h +$(BLD_TOP)Drivers/Braille/TTY/braille.$O: $(SRC_TOP)Programs/lock.h +$(BLD_TOP)Drivers/Braille/TTY/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/TTY/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/TTY/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/TTY/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/TTY/braille.$O: $(SRC_TOP)Drivers/Braille/TTY/braille.h +$(BLD_TOP)Drivers/Braille/TTY/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/TTY/braille.$O: $(SRC_TOP)Programs/io_serial.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/TechniBraille/braille.$O: +$(BLD_TOP)Drivers/Braille/TechniBraille/braille.$O: $(SRC_TOP)Drivers/Braille/TechniBraille/braille.c +$(BLD_TOP)Drivers/Braille/TechniBraille/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/TechniBraille/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/TechniBraille/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/TechniBraille/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/TechniBraille/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/TechniBraille/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/TechniBraille/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/TechniBraille/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/TechniBraille/braille.$O: $(SRC_TOP)Programs/io_serial.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/VideoBraille/vb.$O: +$(BLD_TOP)Drivers/Braille/VideoBraille/vb.$O: $(SRC_TOP)Drivers/Braille/VideoBraille/vb.c +$(BLD_TOP)Drivers/Braille/VideoBraille/vb.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/VideoBraille/vb.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/VideoBraille/vb.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/VideoBraille/vb.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/VideoBraille/vb.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/VideoBraille/vb.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/VideoBraille/vb.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/VideoBraille/vb.$O: $(SRC_TOP)Drivers/Braille/VideoBraille/braille.h +$(BLD_TOP)Drivers/Braille/VideoBraille/vb.$O: $(SRC_TOP)Drivers/Braille/VideoBraille/vblow.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/VideoBraille/vblow.$O: +$(BLD_TOP)Drivers/Braille/VideoBraille/vblow.$O: $(SRC_TOP)Drivers/Braille/VideoBraille/vblow.c +$(BLD_TOP)Drivers/Braille/VideoBraille/vblow.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/VideoBraille/vblow.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/VideoBraille/vblow.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/VideoBraille/vblow.$O: $(SRC_TOP)Programs/bitmask.h +$(BLD_TOP)Drivers/Braille/VideoBraille/vblow.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Drivers/Braille/VideoBraille/vblow.$O: $(SRC_TOP)Programs/keycodes.h +$(BLD_TOP)Drivers/Braille/VideoBraille/vblow.$O: $(SRC_TOP)Programs/system.h +$(BLD_TOP)Drivers/Braille/VideoBraille/vblow.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/VideoBraille/vblow.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/VideoBraille/vblow.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/VideoBraille/vblow.$O: $(SRC_TOP)Drivers/Braille/VideoBraille/braille.h +$(BLD_TOP)Drivers/Braille/VideoBraille/vblow.$O: $(SRC_TOP)Drivers/Braille/VideoBraille/vblow.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/Virtual/braille.$O: +$(BLD_TOP)Drivers/Braille/Virtual/braille.$O: $(SRC_TOP)Drivers/Braille/Virtual/braille.c +$(BLD_TOP)Drivers/Braille/Virtual/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/Virtual/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/Virtual/braille.$O: $(SRC_TOP)Programs/sys_windows.h +$(BLD_TOP)Drivers/Braille/Virtual/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/Virtual/braille.$O: $(SRC_TOP)Programs/charset.h +$(BLD_TOP)Drivers/Braille/Virtual/braille.$O: $(SRC_TOP)Programs/lock.h +$(BLD_TOP)Drivers/Braille/Virtual/braille.$O: $(BLD_TOP)Programs/brlapi_constants.h +$(BLD_TOP)Drivers/Braille/Virtual/braille.$O: $(SRC_TOP)Programs/brlapi_keycodes.h +$(BLD_TOP)Drivers/Braille/Virtual/braille.$O: $(SRC_TOP)Programs/cmd.h +$(BLD_TOP)Drivers/Braille/Virtual/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/Virtual/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/Virtual/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/Virtual/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/Virtual/braille.$O: $(SRC_TOP)Drivers/Braille/Virtual/braille.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/VisioBraille/braille.$O: +$(BLD_TOP)Drivers/Braille/VisioBraille/braille.$O: $(SRC_TOP)Drivers/Braille/VisioBraille/braille.c +$(BLD_TOP)Drivers/Braille/VisioBraille/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/VisioBraille/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/VisioBraille/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/VisioBraille/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/VisioBraille/braille.$O: $(SRC_TOP)Programs/scr.h +$(BLD_TOP)Drivers/Braille/VisioBraille/braille.$O: $(SRC_TOP)Programs/message.h +$(BLD_TOP)Drivers/Braille/VisioBraille/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/VisioBraille/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/VisioBraille/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/VisioBraille/braille.$O: $(SRC_TOP)Drivers/Braille/VisioBraille/braille.h +$(BLD_TOP)Drivers/Braille/VisioBraille/braille.$O: $(SRC_TOP)Drivers/Braille/VisioBraille/brldefs-vs.h +$(BLD_TOP)Drivers/Braille/VisioBraille/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/VisioBraille/braille.$O: $(SRC_TOP)Programs/io_serial.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/VisioBraille/vstp_main.$O: +$(BLD_TOP)Drivers/Braille/VisioBraille/vstp_main.$O: $(SRC_TOP)Drivers/Braille/VisioBraille/vstp_main.c +$(BLD_TOP)Drivers/Braille/VisioBraille/vstp_main.$O: $(BLD_TOP)Programs/brlapi.h +$(BLD_TOP)Drivers/Braille/VisioBraille/vstp_main.$O: $(BLD_TOP)Programs/brlapi_constants.h +$(BLD_TOP)Drivers/Braille/VisioBraille/vstp_main.$O: $(SRC_TOP)Programs/brlapi_keycodes.h +$(BLD_TOP)Drivers/Braille/VisioBraille/vstp_main.$O: $(SRC_TOP)Drivers/Braille/VisioBraille/vstp.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/VisioBraille/vstp_transfer.$O: +$(BLD_TOP)Drivers/Braille/VisioBraille/vstp_transfer.$O: $(SRC_TOP)Drivers/Braille/VisioBraille/vstp_transfer.c +$(BLD_TOP)Drivers/Braille/VisioBraille/vstp_transfer.$O: $(BLD_TOP)Programs/brlapi.h +$(BLD_TOP)Drivers/Braille/VisioBraille/vstp_transfer.$O: $(BLD_TOP)Programs/brlapi_constants.h +$(BLD_TOP)Drivers/Braille/VisioBraille/vstp_transfer.$O: $(SRC_TOP)Programs/brlapi_keycodes.h +$(BLD_TOP)Drivers/Braille/VisioBraille/vstp_transfer.$O: $(SRC_TOP)Programs/brlapi_protocol.h +$(BLD_TOP)Drivers/Braille/VisioBraille/vstp_transfer.$O: $(SRC_TOP)Drivers/Braille/VisioBraille/vstp.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/Voyager/braille.$O: +$(BLD_TOP)Drivers/Braille/Voyager/braille.$O: $(SRC_TOP)Drivers/Braille/Voyager/braille.c +$(BLD_TOP)Drivers/Braille/Voyager/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/Voyager/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/Voyager/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/Voyager/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/Voyager/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/Voyager/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/Voyager/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/Voyager/braille.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Braille/Voyager/braille.$O: $(SRC_TOP)Programs/io_serial.h +$(BLD_TOP)Drivers/Braille/Voyager/braille.$O: $(SRC_TOP)Programs/io_usb.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Braille/XWindow/braille.$O: +$(BLD_TOP)Drivers/Braille/XWindow/braille.$O: $(SRC_TOP)Drivers/Braille/XWindow/braille.c +$(BLD_TOP)Drivers/Braille/XWindow/braille.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Braille/XWindow/braille.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Braille/XWindow/braille.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Braille/XWindow/braille.$O: $(SRC_TOP)Programs/charset.h +$(BLD_TOP)Drivers/Braille/XWindow/braille.$O: $(SRC_TOP)Programs/lock.h +$(BLD_TOP)Drivers/Braille/XWindow/braille.$O: $(SRC_TOP)Programs/unicode.h +$(BLD_TOP)Drivers/Braille/XWindow/braille.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Braille/XWindow/braille.$O: $(SRC_TOP)Programs/brl_driver.h +$(BLD_TOP)Drivers/Braille/XWindow/braille.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Braille/XWindow/braille.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Braille/XWindow/braille.$O: $(SRC_TOP)Drivers/Braille/XWindow/braille.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Screen/AtSpi/screen.$O: +$(BLD_TOP)Drivers/Screen/AtSpi/screen.$O: $(SRC_TOP)Drivers/Screen/AtSpi/screen.c +$(BLD_TOP)Drivers/Screen/AtSpi/screen.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Screen/AtSpi/screen.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Screen/AtSpi/screen.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Screen/AtSpi/screen.$O: $(SRC_TOP)Programs/win_pthread.h +$(BLD_TOP)Drivers/Screen/AtSpi/screen.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Screen/AtSpi/screen.$O: $(SRC_TOP)Programs/charset.h +$(BLD_TOP)Drivers/Screen/AtSpi/screen.$O: $(SRC_TOP)Programs/lock.h +$(BLD_TOP)Drivers/Screen/AtSpi/screen.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Screen/AtSpi/screen.$O: $(SRC_TOP)Programs/scr.h +$(BLD_TOP)Drivers/Screen/AtSpi/screen.$O: $(SRC_TOP)Programs/scr_base.h +$(BLD_TOP)Drivers/Screen/AtSpi/screen.$O: $(SRC_TOP)Programs/scr_driver.h +$(BLD_TOP)Drivers/Screen/AtSpi/screen.$O: $(SRC_TOP)Programs/scr_main.h +$(BLD_TOP)Drivers/Screen/AtSpi/screen.$O: $(SRC_TOP)Programs/scr_real.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Screen/Hurd/screen.$O: +$(BLD_TOP)Drivers/Screen/Hurd/screen.$O: $(SRC_TOP)Drivers/Screen/Hurd/screen.c +$(BLD_TOP)Drivers/Screen/Hurd/screen.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Screen/Hurd/screen.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Screen/Hurd/screen.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Screen/Hurd/screen.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Screen/Hurd/screen.$O: $(SRC_TOP)Programs/charset.h +$(BLD_TOP)Drivers/Screen/Hurd/screen.$O: $(SRC_TOP)Programs/lock.h +$(BLD_TOP)Drivers/Screen/Hurd/screen.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Screen/Hurd/screen.$O: $(SRC_TOP)Programs/scr.h +$(BLD_TOP)Drivers/Screen/Hurd/screen.$O: $(SRC_TOP)Programs/scr_base.h +$(BLD_TOP)Drivers/Screen/Hurd/screen.$O: $(SRC_TOP)Programs/scr_driver.h +$(BLD_TOP)Drivers/Screen/Hurd/screen.$O: $(SRC_TOP)Programs/scr_main.h +$(BLD_TOP)Drivers/Screen/Hurd/screen.$O: $(SRC_TOP)Programs/scr_real.h +$(BLD_TOP)Drivers/Screen/Hurd/screen.$O: $(SRC_TOP)Drivers/Screen/Hurd/screen.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Screen/Linux/screen.$O: +$(BLD_TOP)Drivers/Screen/Linux/screen.$O: $(SRC_TOP)Drivers/Screen/Linux/screen.c +$(BLD_TOP)Drivers/Screen/Linux/screen.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Screen/Linux/screen.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Screen/Linux/screen.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Screen/Linux/screen.$O: $(SRC_TOP)Programs/bitmask.h +$(BLD_TOP)Drivers/Screen/Linux/screen.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Drivers/Screen/Linux/screen.$O: $(SRC_TOP)Programs/keycodes.h +$(BLD_TOP)Drivers/Screen/Linux/screen.$O: $(SRC_TOP)Programs/system.h +$(BLD_TOP)Drivers/Screen/Linux/screen.$O: $(SRC_TOP)Programs/sys_linux.h +$(BLD_TOP)Drivers/Screen/Linux/screen.$O: $(SRC_TOP)Programs/charset.h +$(BLD_TOP)Drivers/Screen/Linux/screen.$O: $(SRC_TOP)Programs/lock.h +$(BLD_TOP)Drivers/Screen/Linux/screen.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Screen/Linux/screen.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Screen/Linux/screen.$O: $(SRC_TOP)Programs/scr.h +$(BLD_TOP)Drivers/Screen/Linux/screen.$O: $(SRC_TOP)Programs/scr_base.h +$(BLD_TOP)Drivers/Screen/Linux/screen.$O: $(SRC_TOP)Programs/scr_driver.h +$(BLD_TOP)Drivers/Screen/Linux/screen.$O: $(SRC_TOP)Programs/scr_main.h +$(BLD_TOP)Drivers/Screen/Linux/screen.$O: $(SRC_TOP)Programs/scr_real.h +$(BLD_TOP)Drivers/Screen/Linux/screen.$O: $(SRC_TOP)Drivers/Screen/Linux/screen.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Screen/PcBios/screen.$O: +$(BLD_TOP)Drivers/Screen/PcBios/screen.$O: $(SRC_TOP)Drivers/Screen/PcBios/screen.c +$(BLD_TOP)Drivers/Screen/PcBios/screen.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Screen/PcBios/screen.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Screen/PcBios/screen.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Screen/PcBios/screen.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Screen/PcBios/screen.$O: $(SRC_TOP)Programs/charset.h +$(BLD_TOP)Drivers/Screen/PcBios/screen.$O: $(SRC_TOP)Programs/lock.h +$(BLD_TOP)Drivers/Screen/PcBios/screen.$O: $(SRC_TOP)Programs/scancodes.h +$(BLD_TOP)Drivers/Screen/PcBios/screen.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Screen/PcBios/screen.$O: $(SRC_TOP)Programs/scr.h +$(BLD_TOP)Drivers/Screen/PcBios/screen.$O: $(SRC_TOP)Programs/scr_base.h +$(BLD_TOP)Drivers/Screen/PcBios/screen.$O: $(SRC_TOP)Programs/scr_driver.h +$(BLD_TOP)Drivers/Screen/PcBios/screen.$O: $(SRC_TOP)Programs/scr_main.h +$(BLD_TOP)Drivers/Screen/PcBios/screen.$O: $(SRC_TOP)Programs/scr_real.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Screen/Screen/screen.$O: +$(BLD_TOP)Drivers/Screen/Screen/screen.$O: $(SRC_TOP)Drivers/Screen/Screen/screen.c +$(BLD_TOP)Drivers/Screen/Screen/screen.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Screen/Screen/screen.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Screen/Screen/screen.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Screen/Screen/screen.$O: $(SRC_TOP)Programs/bitmask.h +$(BLD_TOP)Drivers/Screen/Screen/screen.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Drivers/Screen/Screen/screen.$O: $(SRC_TOP)Programs/keycodes.h +$(BLD_TOP)Drivers/Screen/Screen/screen.$O: $(SRC_TOP)Programs/system.h +$(BLD_TOP)Drivers/Screen/Screen/screen.$O: $(SRC_TOP)Programs/charset.h +$(BLD_TOP)Drivers/Screen/Screen/screen.$O: $(SRC_TOP)Programs/lock.h +$(BLD_TOP)Drivers/Screen/Screen/screen.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Screen/Screen/screen.$O: $(SRC_TOP)Programs/scr.h +$(BLD_TOP)Drivers/Screen/Screen/screen.$O: $(SRC_TOP)Programs/scr_base.h +$(BLD_TOP)Drivers/Screen/Screen/screen.$O: $(SRC_TOP)Programs/scr_driver.h +$(BLD_TOP)Drivers/Screen/Screen/screen.$O: $(SRC_TOP)Programs/scr_main.h +$(BLD_TOP)Drivers/Screen/Screen/screen.$O: $(SRC_TOP)Programs/scr_real.h +$(BLD_TOP)Drivers/Screen/Screen/screen.$O: $(SRC_TOP)Drivers/Screen/Screen/screen.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Screen/Skeleton/screen.$O: +$(BLD_TOP)Drivers/Screen/Skeleton/screen.$O: $(SRC_TOP)Drivers/Screen/Skeleton/screen.c +$(BLD_TOP)Drivers/Screen/Skeleton/screen.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Screen/Skeleton/screen.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Screen/Skeleton/screen.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Screen/Skeleton/screen.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Screen/Skeleton/screen.$O: $(SRC_TOP)Programs/scr.h +$(BLD_TOP)Drivers/Screen/Skeleton/screen.$O: $(SRC_TOP)Programs/scr_base.h +$(BLD_TOP)Drivers/Screen/Skeleton/screen.$O: $(SRC_TOP)Programs/scr_driver.h +$(BLD_TOP)Drivers/Screen/Skeleton/screen.$O: $(SRC_TOP)Programs/scr_main.h +$(BLD_TOP)Drivers/Screen/Skeleton/screen.$O: $(SRC_TOP)Programs/scr_real.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Screen/Windows/screen.$O: +$(BLD_TOP)Drivers/Screen/Windows/screen.$O: $(SRC_TOP)Drivers/Screen/Windows/screen.c +$(BLD_TOP)Drivers/Screen/Windows/screen.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Screen/Windows/screen.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Screen/Windows/screen.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Screen/Windows/screen.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Screen/Windows/screen.$O: $(SRC_TOP)Programs/sys_windows.h +$(BLD_TOP)Drivers/Screen/Windows/screen.$O: $(SRC_TOP)Programs/scancodes.h +$(BLD_TOP)Drivers/Screen/Windows/screen.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Screen/Windows/screen.$O: $(SRC_TOP)Programs/scr.h +$(BLD_TOP)Drivers/Screen/Windows/screen.$O: $(SRC_TOP)Programs/scr_base.h +$(BLD_TOP)Drivers/Screen/Windows/screen.$O: $(SRC_TOP)Programs/scr_driver.h +$(BLD_TOP)Drivers/Screen/Windows/screen.$O: $(SRC_TOP)Programs/scr_main.h +$(BLD_TOP)Drivers/Screen/Windows/screen.$O: $(SRC_TOP)Programs/scr_real.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Speech/Alva/speech.$O: +$(BLD_TOP)Drivers/Speech/Alva/speech.$O: $(SRC_TOP)Drivers/Speech/Alva/speech.c +$(BLD_TOP)Drivers/Speech/Alva/speech.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Speech/Alva/speech.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Speech/Alva/speech.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Speech/Alva/speech.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Speech/Alva/speech.$O: $(SRC_TOP)Programs/spk.h +$(BLD_TOP)Drivers/Speech/Alva/speech.$O: $(SRC_TOP)Programs/spk_driver.h +$(BLD_TOP)Drivers/Speech/Alva/speech.$O: $(SRC_TOP)Drivers/Speech/Alva/speech.h +$(BLD_TOP)Drivers/Speech/Alva/speech.$O: $(SRC_TOP)Drivers/Braille/Alva/braille.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Speech/BrailleLite/speech.$O: +$(BLD_TOP)Drivers/Speech/BrailleLite/speech.$O: $(SRC_TOP)Drivers/Speech/BrailleLite/speech.c +$(BLD_TOP)Drivers/Speech/BrailleLite/speech.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Speech/BrailleLite/speech.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Speech/BrailleLite/speech.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Speech/BrailleLite/speech.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Speech/BrailleLite/speech.$O: $(SRC_TOP)Programs/spk.h +$(BLD_TOP)Drivers/Speech/BrailleLite/speech.$O: $(SRC_TOP)Programs/spk_driver.h +$(BLD_TOP)Drivers/Speech/BrailleLite/speech.$O: $(SRC_TOP)Drivers/Speech/BrailleLite/speech.h +$(BLD_TOP)Drivers/Speech/BrailleLite/speech.$O: $(SRC_TOP)Drivers/Braille/BrailleLite/braille.h +$(BLD_TOP)Drivers/Speech/BrailleLite/speech.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Speech/BrailleLite/speech.$O: $(SRC_TOP)Programs/io_serial.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Speech/CombiBraille/speech.$O: +$(BLD_TOP)Drivers/Speech/CombiBraille/speech.$O: $(SRC_TOP)Drivers/Speech/CombiBraille/speech.c +$(BLD_TOP)Drivers/Speech/CombiBraille/speech.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Speech/CombiBraille/speech.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Speech/CombiBraille/speech.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Speech/CombiBraille/speech.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Speech/CombiBraille/speech.$O: $(SRC_TOP)Programs/spk.h +$(BLD_TOP)Drivers/Speech/CombiBraille/speech.$O: $(SRC_TOP)Programs/spk_driver.h +$(BLD_TOP)Drivers/Speech/CombiBraille/speech.$O: $(SRC_TOP)Drivers/Speech/CombiBraille/speech.h +$(BLD_TOP)Drivers/Speech/CombiBraille/speech.$O: $(SRC_TOP)Drivers/Braille/CombiBraille/braille.h +$(BLD_TOP)Drivers/Speech/CombiBraille/speech.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Speech/CombiBraille/speech.$O: $(SRC_TOP)Programs/io_serial.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Speech/ExternalSpeech/speech.$O: +$(BLD_TOP)Drivers/Speech/ExternalSpeech/speech.$O: $(SRC_TOP)Drivers/Speech/ExternalSpeech/speech.c +$(BLD_TOP)Drivers/Speech/ExternalSpeech/speech.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Speech/ExternalSpeech/speech.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Speech/ExternalSpeech/speech.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Speech/ExternalSpeech/speech.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Speech/ExternalSpeech/speech.$O: $(SRC_TOP)Programs/spk.h +$(BLD_TOP)Drivers/Speech/ExternalSpeech/speech.$O: $(SRC_TOP)Programs/spk_driver.h +$(BLD_TOP)Drivers/Speech/ExternalSpeech/speech.$O: $(SRC_TOP)Drivers/Speech/ExternalSpeech/speech.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Speech/Festival/speech.$O: +$(BLD_TOP)Drivers/Speech/Festival/speech.$O: $(SRC_TOP)Drivers/Speech/Festival/speech.c +$(BLD_TOP)Drivers/Speech/Festival/speech.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Speech/Festival/speech.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Speech/Festival/speech.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Speech/Festival/speech.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Speech/Festival/speech.$O: $(SRC_TOP)Programs/spk.h +$(BLD_TOP)Drivers/Speech/Festival/speech.$O: $(SRC_TOP)Programs/spk_driver.h +$(BLD_TOP)Drivers/Speech/Festival/speech.$O: $(SRC_TOP)Drivers/Speech/Festival/speech.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Speech/FestivalLite/speech.$O: +$(BLD_TOP)Drivers/Speech/FestivalLite/speech.$O: $(SRC_TOP)Drivers/Speech/FestivalLite/speech.c +$(BLD_TOP)Drivers/Speech/FestivalLite/speech.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Speech/FestivalLite/speech.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Speech/FestivalLite/speech.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Speech/FestivalLite/speech.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Speech/FestivalLite/speech.$O: $(SRC_TOP)Programs/spk.h +$(BLD_TOP)Drivers/Speech/FestivalLite/speech.$O: $(SRC_TOP)Programs/spk_driver.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Speech/GenericSay/speech.$O: +$(BLD_TOP)Drivers/Speech/GenericSay/speech.$O: $(SRC_TOP)Drivers/Speech/GenericSay/speech.c +$(BLD_TOP)Drivers/Speech/GenericSay/speech.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Speech/GenericSay/speech.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Speech/GenericSay/speech.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Speech/GenericSay/speech.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Speech/GenericSay/speech.$O: $(SRC_TOP)Programs/spk.h +$(BLD_TOP)Drivers/Speech/GenericSay/speech.$O: $(SRC_TOP)Programs/spk_driver.h +$(BLD_TOP)Drivers/Speech/GenericSay/speech.$O: $(SRC_TOP)Drivers/Speech/GenericSay/speech.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Speech/Mikropuhe/speech.$O: +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(SRC_TOP)Drivers/Speech/Mikropuhe/speech.c +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(SRC_TOP)Programs/win_pthread.h +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(SRC_TOP)Programs/bitmask.h +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(SRC_TOP)Programs/keycodes.h +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(SRC_TOP)Programs/system.h +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(SRC_TOP)Programs/queue.h +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(SRC_TOP)Programs/brl.h +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(BLD_TOP)Programs/brlapi_constants.h +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(SRC_TOP)Programs/brlapi_keycodes.h +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(SRC_TOP)Programs/brltty.h +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(SRC_TOP)Programs/cmd.h +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(SRC_TOP)Programs/ctb.h +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(SRC_TOP)Programs/ktb.h +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(SRC_TOP)Programs/spk.h +$(BLD_TOP)Drivers/Speech/Mikropuhe/speech.$O: $(SRC_TOP)Programs/spk_driver.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Speech/MultiBraille/speech.$O: +$(BLD_TOP)Drivers/Speech/MultiBraille/speech.$O: $(SRC_TOP)Drivers/Speech/MultiBraille/speech.c +$(BLD_TOP)Drivers/Speech/MultiBraille/speech.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Speech/MultiBraille/speech.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Speech/MultiBraille/speech.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Speech/MultiBraille/speech.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Speech/MultiBraille/speech.$O: $(SRC_TOP)Programs/spk.h +$(BLD_TOP)Drivers/Speech/MultiBraille/speech.$O: $(SRC_TOP)Programs/spk_driver.h +$(BLD_TOP)Drivers/Speech/MultiBraille/speech.$O: $(SRC_TOP)Drivers/Speech/MultiBraille/speech.h +$(BLD_TOP)Drivers/Speech/MultiBraille/speech.$O: $(SRC_TOP)Drivers/Braille/MultiBraille/braille.h +$(BLD_TOP)Drivers/Speech/MultiBraille/speech.$O: $(SRC_TOP)Programs/io_defs.h +$(BLD_TOP)Drivers/Speech/MultiBraille/speech.$O: $(SRC_TOP)Programs/io_serial.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Speech/Skeleton/speech.$O: +$(BLD_TOP)Drivers/Speech/Skeleton/speech.$O: $(SRC_TOP)Drivers/Speech/Skeleton/speech.c +$(BLD_TOP)Drivers/Speech/Skeleton/speech.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Speech/Skeleton/speech.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Speech/Skeleton/speech.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Speech/Skeleton/speech.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Speech/Skeleton/speech.$O: $(SRC_TOP)Programs/spk.h +$(BLD_TOP)Drivers/Speech/Skeleton/speech.$O: $(SRC_TOP)Programs/spk_driver.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Speech/SpeechDispatcher/speech.$O: +$(BLD_TOP)Drivers/Speech/SpeechDispatcher/speech.$O: $(SRC_TOP)Drivers/Speech/SpeechDispatcher/speech.c +$(BLD_TOP)Drivers/Speech/SpeechDispatcher/speech.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Speech/SpeechDispatcher/speech.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Speech/SpeechDispatcher/speech.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Speech/SpeechDispatcher/speech.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Speech/SpeechDispatcher/speech.$O: $(SRC_TOP)Programs/spk.h +$(BLD_TOP)Drivers/Speech/SpeechDispatcher/speech.$O: $(SRC_TOP)Programs/spk_driver.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Speech/Swift/speech.$O: +$(BLD_TOP)Drivers/Speech/Swift/speech.$O: $(SRC_TOP)Drivers/Speech/Swift/speech.c +$(BLD_TOP)Drivers/Speech/Swift/speech.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Speech/Swift/speech.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Speech/Swift/speech.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Speech/Swift/speech.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Speech/Swift/speech.$O: $(SRC_TOP)Programs/spk.h +$(BLD_TOP)Drivers/Speech/Swift/speech.$O: $(SRC_TOP)Programs/spk_driver.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Speech/Theta/speech.$O: +$(BLD_TOP)Drivers/Speech/Theta/speech.$O: $(SRC_TOP)Drivers/Speech/Theta/speech.c +$(BLD_TOP)Drivers/Speech/Theta/speech.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Speech/Theta/speech.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Speech/Theta/speech.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Speech/Theta/speech.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Speech/Theta/speech.$O: $(SRC_TOP)Programs/spk.h +$(BLD_TOP)Drivers/Speech/Theta/speech.$O: $(SRC_TOP)Programs/spk_driver.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Drivers/Speech/ViaVoice/speech.$O: +$(BLD_TOP)Drivers/Speech/ViaVoice/speech.$O: $(SRC_TOP)Drivers/Speech/ViaVoice/speech.c +$(BLD_TOP)Drivers/Speech/ViaVoice/speech.$O: $(BLD_TOP)config.h +$(BLD_TOP)Drivers/Speech/ViaVoice/speech.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Drivers/Speech/ViaVoice/speech.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Drivers/Speech/ViaVoice/speech.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Drivers/Speech/ViaVoice/speech.$O: $(SRC_TOP)Programs/spk.h +$(BLD_TOP)Drivers/Speech/ViaVoice/speech.$O: $(SRC_TOP)Programs/spk_driver.h +$(BLD_TOP)Drivers/Speech/ViaVoice/speech.$O: $(SRC_TOP)Drivers/Speech/ViaVoice/speech.h cd $(@D) && $(MAKE) $(@F) # Dependencies for Programs/adlib.$O: @@ -608,7 +940,9 @@ $(BLD_TOP)Programs/adlib.$O: $(SRC_TOP)Programs/adlib.c $(BLD_TOP)Programs/adlib.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/adlib.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/adlib.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/adlib.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/adlib.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/adlib.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/adlib.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/adlib.$O: $(SRC_TOP)Programs/adlib.h cd $(@D) && $(MAKE) $(@F) @@ -635,6 +969,26 @@ $(BLD_TOP)Programs/async.$O: $(SRC_TOP)Programs/queue.h $(BLD_TOP)Programs/async.$O: $(SRC_TOP)Programs/async.h cd $(@D) && $(MAKE) $(@F) +# Dependencies for Programs/atb_compile.$O: +$(BLD_TOP)Programs/atb_compile.$O: $(SRC_TOP)Programs/atb_compile.c +$(BLD_TOP)Programs/atb_compile.$O: $(BLD_TOP)config.h +$(BLD_TOP)Programs/atb_compile.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Programs/atb_compile.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/atb_compile.$O: $(SRC_TOP)Programs/datafile.h +$(BLD_TOP)Programs/atb_compile.$O: $(SRC_TOP)Programs/dataarea.h +$(BLD_TOP)Programs/atb_compile.$O: $(SRC_TOP)Programs/atb.h +$(BLD_TOP)Programs/atb_compile.$O: $(SRC_TOP)Programs/atb_internal.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Programs/atb_translate.$O: +$(BLD_TOP)Programs/atb_translate.$O: $(SRC_TOP)Programs/atb_translate.c +$(BLD_TOP)Programs/atb_translate.$O: $(BLD_TOP)config.h +$(BLD_TOP)Programs/atb_translate.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Programs/atb_translate.$O: $(SRC_TOP)Programs/atb.h +$(BLD_TOP)Programs/atb_translate.$O: $(SRC_TOP)Programs/atb_internal.h +$(BLD_TOP)Programs/atb_translate.$O: $(BLD_TOP)Programs/attr.auto.h + cd $(@D) && $(MAKE) $(@F) + # Dependencies for Programs/auth.$O: $(BLD_TOP)Programs/auth.$O: $(SRC_TOP)Programs/auth.c $(BLD_TOP)Programs/auth.$O: $(BLD_TOP)config.h @@ -648,7 +1002,9 @@ $(BLD_TOP)Programs/beeper.$O: $(SRC_TOP)Programs/beeper.c $(BLD_TOP)Programs/beeper.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/beeper.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/beeper.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/beeper.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/beeper.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/beeper.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/beeper.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/beeper.$O: $(SRC_TOP)Programs/notes.h cd $(@D) && $(MAKE) $(@F) @@ -691,18 +1047,17 @@ $(BLD_TOP)Programs/brl.$O: $(SRC_TOP)Programs/async.h $(BLD_TOP)Programs/brl.$O: $(SRC_TOP)Programs/message.h $(BLD_TOP)Programs/brl.$O: $(SRC_TOP)Programs/charset.h $(BLD_TOP)Programs/brl.$O: $(SRC_TOP)Programs/lock.h +$(BLD_TOP)Programs/brl.$O: $(SRC_TOP)Programs/unicode.h $(BLD_TOP)Programs/brl.$O: $(SRC_TOP)Programs/driver.h $(BLD_TOP)Programs/brl.$O: $(SRC_TOP)Programs/drivers.h $(BLD_TOP)Programs/brl.$O: $(SRC_TOP)Programs/brl.h $(BLD_TOP)Programs/brl.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)Programs/brl.$O: $(SRC_TOP)Programs/tbl.h +$(BLD_TOP)Programs/brl.$O: $(SRC_TOP)Programs/ttb.h $(BLD_TOP)Programs/brl.$O: $(BLD_TOP)Programs/brl.auto.h $(BLD_TOP)Programs/brl.$O: $(BLD_TOP)Programs/brlapi_constants.h $(BLD_TOP)Programs/brl.$O: $(SRC_TOP)Programs/brlapi_keycodes.h $(BLD_TOP)Programs/brl.$O: $(SRC_TOP)Programs/cmd.h $(BLD_TOP)Programs/brl.$O: $(SRC_TOP)Programs/brl_driver.h -$(BLD_TOP)Programs/brl.$O: $(BLD_TOP)Programs/text.auto.h -$(BLD_TOP)Programs/brl.$O: $(BLD_TOP)Programs/attrib.auto.h cd $(@D) && $(MAKE) $(@F) # Dependencies for Programs/brlapi_client.$O: @@ -743,9 +1098,12 @@ $(BLD_TOP)Programs/brlapi_server.$O: $(SRC_TOP)Programs/cmd.h $(BLD_TOP)Programs/brlapi_server.$O: $(SRC_TOP)Programs/brl.h $(BLD_TOP)Programs/brlapi_server.$O: $(SRC_TOP)Programs/brldefs.h $(BLD_TOP)Programs/brlapi_server.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)Programs/brlapi_server.$O: $(SRC_TOP)Programs/tbl.h +$(BLD_TOP)Programs/brlapi_server.$O: $(SRC_TOP)Programs/ttb.h +$(BLD_TOP)Programs/brlapi_server.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/brlapi_server.$O: $(SRC_TOP)Programs/brltty.h $(BLD_TOP)Programs/brlapi_server.$O: $(SRC_TOP)Programs/ctb.h +$(BLD_TOP)Programs/brlapi_server.$O: $(SRC_TOP)Programs/keycodes.h +$(BLD_TOP)Programs/brlapi_server.$O: $(SRC_TOP)Programs/ktb.h $(BLD_TOP)Programs/brlapi_server.$O: $(SRC_TOP)Programs/spk.h $(BLD_TOP)Programs/brlapi_server.$O: $(SRC_TOP)Programs/auth.h $(BLD_TOP)Programs/brlapi_server.$O: $(SRC_TOP)Programs/io_misc.h @@ -765,10 +1123,10 @@ $(BLD_TOP)Programs/brltest.$O: $(SRC_TOP)Programs/options.h $(BLD_TOP)Programs/brltest.$O: $(SRC_TOP)Programs/brl.h $(BLD_TOP)Programs/brltest.$O: $(SRC_TOP)Programs/brldefs.h $(BLD_TOP)Programs/brltest.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)Programs/brltest.$O: $(SRC_TOP)Programs/tbl.h $(BLD_TOP)Programs/brltest.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/brltest.$O: $(SRC_TOP)Programs/charset.h +$(BLD_TOP)Programs/brltest.$O: $(SRC_TOP)Programs/lock.h $(BLD_TOP)Programs/brltest.$O: $(SRC_TOP)Programs/message.h -$(BLD_TOP)Programs/brltest.$O: $(SRC_TOP)Programs/scr.h $(BLD_TOP)Programs/brltest.$O: $(SRC_TOP)Programs/defaults.h cd $(@D) && $(MAKE) $(@F) @@ -779,22 +1137,27 @@ $(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/misc.h $(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/message.h $(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/tunes.h +$(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/ttb.h +$(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/atb.h +$(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/ctb.h +$(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/routing.h +$(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/cut.h $(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/brl.h $(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/brldefs.h $(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/tbl.h -$(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/ctb.h -$(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/route.h -$(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/cut.h $(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/touch.h $(BLD_TOP)Programs/brltty.$O: $(BLD_TOP)Programs/brlapi_constants.h $(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/brlapi_keycodes.h $(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/cmd.h $(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/charset.h $(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/lock.h +$(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/unicode.h $(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/scancodes.h $(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/scr.h +$(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/brltty.h +$(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/keycodes.h +$(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/ktb.h $(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/spk.h $(BLD_TOP)Programs/brltty.$O: $(SRC_TOP)Programs/defaults.h cd $(@D) && $(MAKE) $(@F) @@ -807,6 +1170,7 @@ $(BLD_TOP)Programs/charset.$O: $(SRC_TOP)Programs/sys_msdos.h $(BLD_TOP)Programs/charset.$O: $(SRC_TOP)Programs/misc.h $(BLD_TOP)Programs/charset.$O: $(SRC_TOP)Programs/lock.h $(BLD_TOP)Programs/charset.$O: $(SRC_TOP)Programs/charset.h +$(BLD_TOP)Programs/charset.$O: $(SRC_TOP)Programs/unicode.h cd $(@D) && $(MAKE) $(@F) # Dependencies for Programs/cmd.$O: @@ -818,8 +1182,10 @@ $(BLD_TOP)Programs/cmd.$O: $(SRC_TOP)Programs/brldefs.h $(BLD_TOP)Programs/cmd.$O: $(BLD_TOP)Programs/brlapi_constants.h $(BLD_TOP)Programs/cmd.$O: $(SRC_TOP)Programs/brlapi_keycodes.h $(BLD_TOP)Programs/cmd.$O: $(SRC_TOP)Programs/cmd.h +$(BLD_TOP)Programs/cmd.$O: $(SRC_TOP)Programs/ttb.h $(BLD_TOP)Programs/cmd.$O: $(SRC_TOP)Programs/charset.h $(BLD_TOP)Programs/cmd.$O: $(SRC_TOP)Programs/lock.h +$(BLD_TOP)Programs/cmd.$O: $(SRC_TOP)Programs/queue.h $(BLD_TOP)Programs/cmd.$O: $(BLD_TOP)Programs/cmds.auto.h cd $(@D) && $(MAKE) $(@F) @@ -835,8 +1201,12 @@ $(BLD_TOP)Programs/config.$O: $(SRC_TOP)Programs/brldefs.h $(BLD_TOP)Programs/config.$O: $(SRC_TOP)Programs/driver.h $(BLD_TOP)Programs/config.$O: $(SRC_TOP)Programs/spk.h $(BLD_TOP)Programs/config.$O: $(SRC_TOP)Programs/scr.h -$(BLD_TOP)Programs/config.$O: $(SRC_TOP)Programs/tbl.h +$(BLD_TOP)Programs/config.$O: $(SRC_TOP)Programs/ttb.h +$(BLD_TOP)Programs/config.$O: $(SRC_TOP)Programs/atb.h $(BLD_TOP)Programs/config.$O: $(SRC_TOP)Programs/ctb.h +$(BLD_TOP)Programs/config.$O: $(SRC_TOP)Programs/bitmask.h +$(BLD_TOP)Programs/config.$O: $(SRC_TOP)Programs/keycodes.h +$(BLD_TOP)Programs/config.$O: $(SRC_TOP)Programs/ktb.h $(BLD_TOP)Programs/config.$O: $(SRC_TOP)Programs/tunes.h $(BLD_TOP)Programs/config.$O: $(SRC_TOP)Programs/message.h $(BLD_TOP)Programs/config.$O: $(SRC_TOP)Programs/misc.h @@ -860,25 +1230,21 @@ $(BLD_TOP)Programs/ctb_compile.$O: $(SRC_TOP)Programs/ctb_compile.c $(BLD_TOP)Programs/ctb_compile.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/ctb_compile.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/ctb_compile.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)Programs/ctb_compile.$O: $(SRC_TOP)Programs/charset.h -$(BLD_TOP)Programs/ctb_compile.$O: $(SRC_TOP)Programs/lock.h $(BLD_TOP)Programs/ctb_compile.$O: $(SRC_TOP)Programs/ctb.h $(BLD_TOP)Programs/ctb_compile.$O: $(SRC_TOP)Programs/ctb_internal.h -$(BLD_TOP)Programs/ctb_compile.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)Programs/ctb_compile.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)Programs/ctb_compile.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Programs/ctb_compile.$O: $(SRC_TOP)Programs/datafile.h +$(BLD_TOP)Programs/ctb_compile.$O: $(SRC_TOP)Programs/dataarea.h +$(BLD_TOP)Programs/ctb_compile.$O: $(SRC_TOP)Programs/brldots.h cd $(@D) && $(MAKE) $(@F) # Dependencies for Programs/ctb_translate.$O: $(BLD_TOP)Programs/ctb_translate.$O: $(SRC_TOP)Programs/ctb_translate.c $(BLD_TOP)Programs/ctb_translate.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/ctb_translate.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)Programs/ctb_translate.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)Programs/ctb_translate.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)Programs/ctb_translate.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)Programs/ctb_translate.$O: $(SRC_TOP)Programs/tbl.h $(BLD_TOP)Programs/ctb_translate.$O: $(SRC_TOP)Programs/ctb.h $(BLD_TOP)Programs/ctb_translate.$O: $(SRC_TOP)Programs/ctb_internal.h +$(BLD_TOP)Programs/ctb_translate.$O: $(SRC_TOP)Programs/unicode.h +$(BLD_TOP)Programs/ctb_translate.$O: $(SRC_TOP)Programs/brldots.h cd $(@D) && $(MAKE) $(@F) # Dependencies for Programs/ctbtest.$O: @@ -890,11 +1256,9 @@ $(BLD_TOP)Programs/ctbtest.$O: $(SRC_TOP)Programs/options.h $(BLD_TOP)Programs/ctbtest.$O: $(SRC_TOP)Programs/misc.h $(BLD_TOP)Programs/ctbtest.$O: $(SRC_TOP)Programs/charset.h $(BLD_TOP)Programs/ctbtest.$O: $(SRC_TOP)Programs/lock.h -$(BLD_TOP)Programs/ctbtest.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)Programs/ctbtest.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)Programs/ctbtest.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Programs/ctbtest.$O: $(SRC_TOP)Programs/unicode.h +$(BLD_TOP)Programs/ctbtest.$O: $(SRC_TOP)Programs/ttb.h $(BLD_TOP)Programs/ctbtest.$O: $(SRC_TOP)Programs/ctb.h -$(BLD_TOP)Programs/ctbtest.$O: $(SRC_TOP)Programs/tbl.h cd $(@D) && $(MAKE) $(@F) # Dependencies for Programs/cut.$O: @@ -904,17 +1268,36 @@ $(BLD_TOP)Programs/cut.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/cut.$O: $(SRC_TOP)Programs/driver.h $(BLD_TOP)Programs/cut.$O: $(SRC_TOP)Programs/scr.h $(BLD_TOP)Programs/cut.$O: $(SRC_TOP)Programs/tunes.h -$(BLD_TOP)Programs/cut.$O: $(SRC_TOP)Programs/charset.h -$(BLD_TOP)Programs/cut.$O: $(SRC_TOP)Programs/lock.h $(BLD_TOP)Programs/cut.$O: $(SRC_TOP)Programs/cut.h cd $(@D) && $(MAKE) $(@F) +# Dependencies for Programs/dataarea.$O: +$(BLD_TOP)Programs/dataarea.$O: $(SRC_TOP)Programs/dataarea.c +$(BLD_TOP)Programs/dataarea.$O: $(BLD_TOP)config.h +$(BLD_TOP)Programs/dataarea.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Programs/dataarea.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/dataarea.$O: $(SRC_TOP)Programs/dataarea.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Programs/datafile.$O: +$(BLD_TOP)Programs/datafile.$O: $(SRC_TOP)Programs/datafile.c +$(BLD_TOP)Programs/datafile.$O: $(BLD_TOP)config.h +$(BLD_TOP)Programs/datafile.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Programs/datafile.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/datafile.$O: $(SRC_TOP)Programs/datafile.h +$(BLD_TOP)Programs/datafile.$O: $(SRC_TOP)Programs/charset.h +$(BLD_TOP)Programs/datafile.$O: $(SRC_TOP)Programs/lock.h +$(BLD_TOP)Programs/datafile.$O: $(SRC_TOP)Programs/brldots.h + cd $(@D) && $(MAKE) $(@F) + # Dependencies for Programs/drivers.$O: $(BLD_TOP)Programs/drivers.$O: $(SRC_TOP)Programs/drivers.c $(BLD_TOP)Programs/drivers.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/drivers.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/drivers.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/drivers.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/drivers.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/drivers.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/drivers.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/drivers.$O: $(SRC_TOP)Programs/driver.h $(BLD_TOP)Programs/drivers.$O: $(SRC_TOP)Programs/drivers.h @@ -924,6 +1307,7 @@ $(BLD_TOP)Programs/drivers.$O: $(SRC_TOP)Programs/drivers.h $(BLD_TOP)Programs/fm.$O: $(SRC_TOP)Programs/fm.c $(BLD_TOP)Programs/fm.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/fm.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Programs/fm.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/fm.$O: $(SRC_TOP)Programs/brl.h $(BLD_TOP)Programs/fm.$O: $(BLD_TOP)Programs/brlapi_constants.h $(BLD_TOP)Programs/fm.$O: $(SRC_TOP)Programs/brlapi_keycodes.h @@ -932,6 +1316,8 @@ $(BLD_TOP)Programs/fm.$O: $(SRC_TOP)Programs/brltty.h $(BLD_TOP)Programs/fm.$O: $(SRC_TOP)Programs/cmd.h $(BLD_TOP)Programs/fm.$O: $(SRC_TOP)Programs/ctb.h $(BLD_TOP)Programs/fm.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Programs/fm.$O: $(SRC_TOP)Programs/keycodes.h +$(BLD_TOP)Programs/fm.$O: $(SRC_TOP)Programs/ktb.h $(BLD_TOP)Programs/fm.$O: $(SRC_TOP)Programs/spk.h $(BLD_TOP)Programs/fm.$O: $(SRC_TOP)Programs/misc.h $(BLD_TOP)Programs/fm.$O: $(SRC_TOP)Programs/notes.h @@ -955,6 +1341,43 @@ $(BLD_TOP)Programs/keyboard.$O: $(SRC_TOP)Programs/keyboard.h $(BLD_TOP)Programs/keyboard.$O: $(SRC_TOP)Programs/misc.h cd $(@D) && $(MAKE) $(@F) +# Dependencies for Programs/keycodes.$O: +$(BLD_TOP)Programs/keycodes.$O: $(SRC_TOP)Programs/keycodes.c +$(BLD_TOP)Programs/keycodes.$O: $(BLD_TOP)config.h +$(BLD_TOP)Programs/keycodes.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Programs/keycodes.$O: $(SRC_TOP)Programs/bitmask.h +$(BLD_TOP)Programs/keycodes.$O: $(SRC_TOP)Programs/keycodes.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Programs/ktb_compile.$O: +$(BLD_TOP)Programs/ktb_compile.$O: $(SRC_TOP)Programs/ktb_compile.c +$(BLD_TOP)Programs/ktb_compile.$O: $(BLD_TOP)config.h +$(BLD_TOP)Programs/ktb_compile.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Programs/ktb_compile.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/ktb_compile.$O: $(SRC_TOP)Programs/datafile.h +$(BLD_TOP)Programs/ktb_compile.$O: $(SRC_TOP)Programs/dataarea.h +$(BLD_TOP)Programs/ktb_compile.$O: $(BLD_TOP)Programs/brlapi_constants.h +$(BLD_TOP)Programs/ktb_compile.$O: $(SRC_TOP)Programs/brlapi_keycodes.h +$(BLD_TOP)Programs/ktb_compile.$O: $(SRC_TOP)Programs/cmd.h +$(BLD_TOP)Programs/ktb_compile.$O: $(SRC_TOP)Programs/brldefs.h +$(BLD_TOP)Programs/ktb_compile.$O: $(SRC_TOP)Programs/bitmask.h +$(BLD_TOP)Programs/ktb_compile.$O: $(SRC_TOP)Programs/keycodes.h +$(BLD_TOP)Programs/ktb_compile.$O: $(SRC_TOP)Programs/ktb.h +$(BLD_TOP)Programs/ktb_compile.$O: $(SRC_TOP)Programs/ktb_internal.h +$(BLD_TOP)Programs/ktb_compile.$O: $(SRC_TOP)Programs/ktb_keynames.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Programs/ktb_translate.$O: +$(BLD_TOP)Programs/ktb_translate.$O: $(SRC_TOP)Programs/ktb_translate.c +$(BLD_TOP)Programs/ktb_translate.$O: $(BLD_TOP)config.h +$(BLD_TOP)Programs/ktb_translate.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Programs/ktb_translate.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/ktb_translate.$O: $(SRC_TOP)Programs/bitmask.h +$(BLD_TOP)Programs/ktb_translate.$O: $(SRC_TOP)Programs/keycodes.h +$(BLD_TOP)Programs/ktb_translate.$O: $(SRC_TOP)Programs/ktb.h +$(BLD_TOP)Programs/ktb_translate.$O: $(SRC_TOP)Programs/ktb_internal.h + cd $(@D) && $(MAKE) $(@F) + # Dependencies for Programs/lock.$O: $(BLD_TOP)Programs/lock.$O: $(SRC_TOP)Programs/lock.c $(BLD_TOP)Programs/lock.$O: $(BLD_TOP)config.h @@ -968,6 +1391,7 @@ $(BLD_TOP)Programs/lock.$O: $(SRC_TOP)Programs/lock.h $(BLD_TOP)Programs/midi.$O: $(SRC_TOP)Programs/midi.c $(BLD_TOP)Programs/midi.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/midi.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Programs/midi.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/midi.$O: $(SRC_TOP)Programs/brl.h $(BLD_TOP)Programs/midi.$O: $(BLD_TOP)Programs/brlapi_constants.h $(BLD_TOP)Programs/midi.$O: $(SRC_TOP)Programs/brlapi_keycodes.h @@ -976,6 +1400,8 @@ $(BLD_TOP)Programs/midi.$O: $(SRC_TOP)Programs/brltty.h $(BLD_TOP)Programs/midi.$O: $(SRC_TOP)Programs/cmd.h $(BLD_TOP)Programs/midi.$O: $(SRC_TOP)Programs/ctb.h $(BLD_TOP)Programs/midi.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Programs/midi.$O: $(SRC_TOP)Programs/keycodes.h +$(BLD_TOP)Programs/midi.$O: $(SRC_TOP)Programs/ktb.h $(BLD_TOP)Programs/midi.$O: $(SRC_TOP)Programs/spk.h $(BLD_TOP)Programs/midi.$O: $(SRC_TOP)Programs/misc.h $(BLD_TOP)Programs/midi.$O: $(SRC_TOP)Programs/keyboard.h @@ -996,7 +1422,9 @@ $(BLD_TOP)Programs/mount.$O: $(SRC_TOP)Programs/mount.c $(BLD_TOP)Programs/mount.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/mount.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/mount.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/mount.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/mount.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/mount.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/mount.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/mount.$O: $(SRC_TOP)Programs/async.h $(BLD_TOP)Programs/mount.$O: $(SRC_TOP)Programs/mount.h @@ -1009,7 +1437,9 @@ $(BLD_TOP)Programs/options.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/options.$O: $(SRC_TOP)Programs/program.h $(BLD_TOP)Programs/options.$O: $(SRC_TOP)Programs/options.h $(BLD_TOP)Programs/options.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/options.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/options.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/options.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/options.$O: $(SRC_TOP)Programs/system.h cd $(@D) && $(MAKE) $(@F) @@ -1017,6 +1447,7 @@ $(BLD_TOP)Programs/options.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/pcm.$O: $(SRC_TOP)Programs/pcm.c $(BLD_TOP)Programs/pcm.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/pcm.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Programs/pcm.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/pcm.$O: $(SRC_TOP)Programs/brl.h $(BLD_TOP)Programs/pcm.$O: $(BLD_TOP)Programs/brlapi_constants.h $(BLD_TOP)Programs/pcm.$O: $(SRC_TOP)Programs/brlapi_keycodes.h @@ -1025,6 +1456,8 @@ $(BLD_TOP)Programs/pcm.$O: $(SRC_TOP)Programs/brltty.h $(BLD_TOP)Programs/pcm.$O: $(SRC_TOP)Programs/cmd.h $(BLD_TOP)Programs/pcm.$O: $(SRC_TOP)Programs/ctb.h $(BLD_TOP)Programs/pcm.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Programs/pcm.$O: $(SRC_TOP)Programs/keycodes.h +$(BLD_TOP)Programs/pcm.$O: $(SRC_TOP)Programs/ktb.h $(BLD_TOP)Programs/pcm.$O: $(SRC_TOP)Programs/spk.h $(BLD_TOP)Programs/pcm.$O: $(SRC_TOP)Programs/misc.h $(BLD_TOP)Programs/pcm.$O: $(SRC_TOP)Programs/keyboard.h @@ -1038,7 +1471,9 @@ $(BLD_TOP)Programs/program.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/program.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/program.$O: $(SRC_TOP)Programs/program.h $(BLD_TOP)Programs/program.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/program.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/program.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/program.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/program.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/program.$O: $(SRC_TOP)Programs/sys_windows.h cd $(@D) && $(MAKE) $(@F) @@ -1051,14 +1486,14 @@ $(BLD_TOP)Programs/queue.$O: $(SRC_TOP)Programs/misc.h $(BLD_TOP)Programs/queue.$O: $(SRC_TOP)Programs/queue.h cd $(@D) && $(MAKE) $(@F) -# Dependencies for Programs/route.$O: -$(BLD_TOP)Programs/route.$O: $(SRC_TOP)Programs/route.c -$(BLD_TOP)Programs/route.$O: $(BLD_TOP)config.h -$(BLD_TOP)Programs/route.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)Programs/route.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)Programs/route.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)Programs/route.$O: $(SRC_TOP)Programs/scr.h -$(BLD_TOP)Programs/route.$O: $(SRC_TOP)Programs/route.h +# Dependencies for Programs/routing.$O: +$(BLD_TOP)Programs/routing.$O: $(SRC_TOP)Programs/routing.c +$(BLD_TOP)Programs/routing.$O: $(BLD_TOP)config.h +$(BLD_TOP)Programs/routing.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Programs/routing.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/routing.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Programs/routing.$O: $(SRC_TOP)Programs/scr.h +$(BLD_TOP)Programs/routing.$O: $(SRC_TOP)Programs/routing.h cd $(@D) && $(MAKE) $(@F) # Dependencies for Programs/scancodes.$O: @@ -1074,7 +1509,9 @@ $(BLD_TOP)Programs/scr.$O: $(SRC_TOP)Programs/scr.c $(BLD_TOP)Programs/scr.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/scr.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/scr.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/scr.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/scr.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/scr.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/scr.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/scr.$O: $(SRC_TOP)Programs/driver.h $(BLD_TOP)Programs/scr.$O: $(SRC_TOP)Programs/drivers.h @@ -1144,7 +1581,7 @@ $(BLD_TOP)Programs/scr_real.$O: $(SRC_TOP)Programs/scr.h $(BLD_TOP)Programs/scr_real.$O: $(SRC_TOP)Programs/scr_base.h $(BLD_TOP)Programs/scr_real.$O: $(SRC_TOP)Programs/scr_main.h $(BLD_TOP)Programs/scr_real.$O: $(SRC_TOP)Programs/scr_real.h -$(BLD_TOP)Programs/scr_real.$O: $(SRC_TOP)Programs/route.h +$(BLD_TOP)Programs/scr_real.$O: $(SRC_TOP)Programs/routing.h cd $(@D) && $(MAKE) $(@F) # Dependencies for Programs/scrtest.$O: @@ -1164,7 +1601,9 @@ $(BLD_TOP)Programs/serial.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/serial.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/serial.$O: $(SRC_TOP)Programs/misc.h $(BLD_TOP)Programs/serial.$O: $(SRC_TOP)Programs/win_pthread.h +$(BLD_TOP)Programs/serial.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/serial.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/serial.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/serial.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/serial.$O: $(SRC_TOP)Programs/io_defs.h $(BLD_TOP)Programs/serial.$O: $(SRC_TOP)Programs/io_serial.h @@ -1201,7 +1640,9 @@ $(BLD_TOP)Programs/sys_darwin.$O: $(SRC_TOP)Programs/sys_darwin.c $(BLD_TOP)Programs/sys_darwin.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/sys_darwin.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/sys_darwin.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/sys_darwin.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/sys_darwin.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/sys_darwin.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/sys_darwin.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/sys_darwin.$O: $(SRC_TOP)Programs/sys_prog_none.h $(BLD_TOP)Programs/sys_darwin.$O: $(SRC_TOP)Programs/sys_boot_none.h @@ -1220,7 +1661,9 @@ $(BLD_TOP)Programs/sys_freebsd.$O: $(SRC_TOP)Programs/sys_freebsd.c $(BLD_TOP)Programs/sys_freebsd.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/sys_freebsd.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/sys_freebsd.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/sys_freebsd.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/sys_freebsd.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/sys_freebsd.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/sys_freebsd.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/sys_freebsd.$O: $(SRC_TOP)Programs/sys_prog_none.h $(BLD_TOP)Programs/sys_freebsd.$O: $(SRC_TOP)Programs/sys_boot_none.h @@ -1240,7 +1683,9 @@ $(BLD_TOP)Programs/sys_hpux.$O: $(SRC_TOP)Programs/sys_hpux.c $(BLD_TOP)Programs/sys_hpux.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/sys_hpux.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/sys_hpux.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/sys_hpux.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/sys_hpux.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/sys_hpux.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/sys_hpux.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/sys_hpux.$O: $(SRC_TOP)Programs/sys_prog_none.h $(BLD_TOP)Programs/sys_hpux.$O: $(SRC_TOP)Programs/sys_boot_none.h @@ -1257,7 +1702,9 @@ $(BLD_TOP)Programs/sys_hurd.$O: $(SRC_TOP)Programs/sys_hurd.c $(BLD_TOP)Programs/sys_hurd.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/sys_hurd.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/sys_hurd.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/sys_hurd.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/sys_hurd.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/sys_hurd.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/sys_hurd.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/sys_hurd.$O: $(SRC_TOP)Programs/sys_prog_none.h $(BLD_TOP)Programs/sys_hurd.$O: $(SRC_TOP)Programs/sys_boot_none.h @@ -1276,7 +1723,9 @@ $(BLD_TOP)Programs/sys_kfreebsd.$O: $(SRC_TOP)Programs/sys_kfreebsd.c $(BLD_TOP)Programs/sys_kfreebsd.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/sys_kfreebsd.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/sys_kfreebsd.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/sys_kfreebsd.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/sys_kfreebsd.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/sys_kfreebsd.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/sys_kfreebsd.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/sys_kfreebsd.$O: $(SRC_TOP)Programs/sys_prog_none.h $(BLD_TOP)Programs/sys_kfreebsd.$O: $(SRC_TOP)Programs/sys_boot_none.h @@ -1296,7 +1745,9 @@ $(BLD_TOP)Programs/sys_linux.$O: $(SRC_TOP)Programs/sys_linux.c $(BLD_TOP)Programs/sys_linux.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/sys_linux.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/sys_linux.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/sys_linux.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/sys_linux.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/sys_linux.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/sys_linux.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/sys_linux.$O: $(SRC_TOP)Programs/sys_linux.h $(BLD_TOP)Programs/sys_linux.$O: $(SRC_TOP)Programs/sys_exec_unix.h @@ -1319,7 +1770,9 @@ $(BLD_TOP)Programs/sys_msdos.$O: $(SRC_TOP)Programs/sys_msdos.c $(BLD_TOP)Programs/sys_msdos.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/sys_msdos.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/sys_msdos.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/sys_msdos.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/sys_msdos.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/sys_msdos.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/sys_msdos.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/sys_msdos.$O: $(SRC_TOP)Programs/sys_prog_none.h $(BLD_TOP)Programs/sys_msdos.$O: $(SRC_TOP)Programs/sys_boot_none.h @@ -1339,7 +1792,9 @@ $(BLD_TOP)Programs/sys_netbsd.$O: $(SRC_TOP)Programs/sys_netbsd.c $(BLD_TOP)Programs/sys_netbsd.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/sys_netbsd.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/sys_netbsd.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/sys_netbsd.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/sys_netbsd.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/sys_netbsd.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/sys_netbsd.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/sys_netbsd.$O: $(SRC_TOP)Programs/sys_prog_none.h $(BLD_TOP)Programs/sys_netbsd.$O: $(SRC_TOP)Programs/sys_boot_none.h @@ -1359,7 +1814,9 @@ $(BLD_TOP)Programs/sys_openbsd.$O: $(SRC_TOP)Programs/sys_openbsd.c $(BLD_TOP)Programs/sys_openbsd.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/sys_openbsd.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/sys_openbsd.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/sys_openbsd.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/sys_openbsd.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/sys_openbsd.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/sys_openbsd.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/sys_openbsd.$O: $(SRC_TOP)Programs/sys_prog_none.h $(BLD_TOP)Programs/sys_openbsd.$O: $(SRC_TOP)Programs/sys_boot_none.h @@ -1379,7 +1836,9 @@ $(BLD_TOP)Programs/sys_osf.$O: $(SRC_TOP)Programs/sys_osf.c $(BLD_TOP)Programs/sys_osf.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/sys_osf.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/sys_osf.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/sys_osf.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/sys_osf.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/sys_osf.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/sys_osf.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/sys_osf.$O: $(SRC_TOP)Programs/sys_prog_none.h $(BLD_TOP)Programs/sys_osf.$O: $(SRC_TOP)Programs/sys_boot_none.h @@ -1398,7 +1857,9 @@ $(BLD_TOP)Programs/sys_qnx.$O: $(SRC_TOP)Programs/sys_qnx.c $(BLD_TOP)Programs/sys_qnx.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/sys_qnx.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/sys_qnx.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/sys_qnx.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/sys_qnx.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/sys_qnx.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/sys_qnx.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/sys_qnx.$O: $(SRC_TOP)Programs/sys_prog_none.h $(BLD_TOP)Programs/sys_qnx.$O: $(SRC_TOP)Programs/sys_boot_none.h @@ -1418,7 +1879,9 @@ $(BLD_TOP)Programs/sys_skeleton.$O: $(SRC_TOP)Programs/sys_skeleton.c $(BLD_TOP)Programs/sys_skeleton.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/sys_skeleton.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/sys_skeleton.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/sys_skeleton.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/sys_skeleton.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/sys_skeleton.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/sys_skeleton.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/sys_skeleton.$O: $(SRC_TOP)Programs/sys_prog_none.h $(BLD_TOP)Programs/sys_skeleton.$O: $(SRC_TOP)Programs/sys_boot_none.h @@ -1437,7 +1900,9 @@ $(BLD_TOP)Programs/sys_solaris.$O: $(SRC_TOP)Programs/sys_solaris.c $(BLD_TOP)Programs/sys_solaris.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/sys_solaris.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/sys_solaris.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/sys_solaris.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/sys_solaris.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/sys_solaris.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/sys_solaris.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/sys_solaris.$O: $(SRC_TOP)Programs/sys_boot_none.h $(BLD_TOP)Programs/sys_solaris.$O: $(SRC_TOP)Programs/sys_exec_unix.h @@ -1456,7 +1921,9 @@ $(BLD_TOP)Programs/sys_windows.$O: $(SRC_TOP)Programs/sys_windows.c $(BLD_TOP)Programs/sys_windows.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/sys_windows.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/sys_windows.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/sys_windows.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/sys_windows.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/sys_windows.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/sys_windows.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/sys_windows.$O: $(SRC_TOP)Programs/sys_windows.h $(BLD_TOP)Programs/sys_windows.$O: $(SRC_TOP)Programs/sys_prog_windows.h @@ -1478,74 +1945,20 @@ $(BLD_TOP)Programs/sys_windows.$O: $(SRC_TOP)Programs/sys_pcm_windows.h $(BLD_TOP)Programs/sys_windows.$O: $(SRC_TOP)Programs/sys_midi_windows.h cd $(@D) && $(MAKE) $(@F) -# Dependencies for Programs/tbl.$O: -$(BLD_TOP)Programs/tbl.$O: $(SRC_TOP)Programs/tbl.c -$(BLD_TOP)Programs/tbl.$O: $(BLD_TOP)config.h -$(BLD_TOP)Programs/tbl.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)Programs/tbl.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)Programs/tbl.$O: $(SRC_TOP)Programs/charset.h -$(BLD_TOP)Programs/tbl.$O: $(SRC_TOP)Programs/lock.h -$(BLD_TOP)Programs/tbl.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)Programs/tbl.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)Programs/tbl.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)Programs/tbl.$O: $(SRC_TOP)Programs/tbl.h -$(BLD_TOP)Programs/tbl.$O: $(SRC_TOP)Programs/tbl_internal.h - cd $(@D) && $(MAKE) $(@F) - # Dependencies for Programs/tbl2hex.$O: $(BLD_TOP)Programs/tbl2hex.$O: $(SRC_TOP)Programs/tbl2hex.c $(BLD_TOP)Programs/tbl2hex.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/tbl2hex.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/tbl2hex.$O: $(SRC_TOP)Programs/options.h $(BLD_TOP)Programs/tbl2hex.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)Programs/tbl2hex.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)Programs/tbl2hex.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)Programs/tbl2hex.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)Programs/tbl2hex.$O: $(SRC_TOP)Programs/tbl.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for Programs/tbl_gnome.$O: -$(BLD_TOP)Programs/tbl_gnome.$O: $(SRC_TOP)Programs/tbl_gnome.c -$(BLD_TOP)Programs/tbl_gnome.$O: $(BLD_TOP)config.h -$(BLD_TOP)Programs/tbl_gnome.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)Programs/tbl_gnome.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)Programs/tbl_gnome.$O: $(SRC_TOP)Programs/charset.h -$(BLD_TOP)Programs/tbl_gnome.$O: $(SRC_TOP)Programs/lock.h -$(BLD_TOP)Programs/tbl_gnome.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)Programs/tbl_gnome.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)Programs/tbl_gnome.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)Programs/tbl_gnome.$O: $(SRC_TOP)Programs/tbl.h -$(BLD_TOP)Programs/tbl_gnome.$O: $(SRC_TOP)Programs/tbl_internal.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for Programs/tbl_native.$O: -$(BLD_TOP)Programs/tbl_native.$O: $(SRC_TOP)Programs/tbl_native.c -$(BLD_TOP)Programs/tbl_native.$O: $(BLD_TOP)config.h -$(BLD_TOP)Programs/tbl_native.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)Programs/tbl_native.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)Programs/tbl_native.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)Programs/tbl_native.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)Programs/tbl_native.$O: $(SRC_TOP)Programs/tbl.h -$(BLD_TOP)Programs/tbl_native.$O: $(SRC_TOP)Programs/tbl_internal.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for Programs/tbltest.$O: -$(BLD_TOP)Programs/tbltest.$O: $(SRC_TOP)Programs/tbltest.c -$(BLD_TOP)Programs/tbltest.$O: $(BLD_TOP)config.h -$(BLD_TOP)Programs/tbltest.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)Programs/tbltest.$O: $(SRC_TOP)Programs/program.h -$(BLD_TOP)Programs/tbltest.$O: $(SRC_TOP)Programs/options.h -$(BLD_TOP)Programs/tbltest.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)Programs/tbltest.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)Programs/tbltest.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)Programs/tbltest.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)Programs/tbltest.$O: $(SRC_TOP)Programs/charset.h -$(BLD_TOP)Programs/tbltest.$O: $(SRC_TOP)Programs/lock.h -$(BLD_TOP)Programs/tbltest.$O: $(SRC_TOP)Programs/tbl.h -$(BLD_TOP)Programs/tbltest.$O: $(SRC_TOP)Programs/tbl_internal.h -$(BLD_TOP)Programs/tbltest.$O: $(BLD_TOP)Programs/brlapi.h -$(BLD_TOP)Programs/tbltest.$O: $(BLD_TOP)Programs/brlapi_constants.h -$(BLD_TOP)Programs/tbltest.$O: $(SRC_TOP)Programs/brlapi_keycodes.h +$(BLD_TOP)Programs/tbl2hex.$O: $(SRC_TOP)Programs/ttb.h +$(BLD_TOP)Programs/tbl2hex.$O: $(SRC_TOP)Programs/bitmask.h +$(BLD_TOP)Programs/tbl2hex.$O: $(SRC_TOP)Programs/ttb_internal.h +$(BLD_TOP)Programs/tbl2hex.$O: $(SRC_TOP)Programs/unicode.h +$(BLD_TOP)Programs/tbl2hex.$O: $(SRC_TOP)Programs/atb.h +$(BLD_TOP)Programs/tbl2hex.$O: $(SRC_TOP)Programs/atb_internal.h +$(BLD_TOP)Programs/tbl2hex.$O: $(SRC_TOP)Programs/ctb.h +$(BLD_TOP)Programs/tbl2hex.$O: $(SRC_TOP)Programs/ctb_internal.h cd $(@D) && $(MAKE) $(@F) # Dependencies for Programs/touch.$O: @@ -1557,6 +1970,103 @@ $(BLD_TOP)Programs/touch.$O: $(SRC_TOP)Programs/brl.h $(BLD_TOP)Programs/touch.$O: $(SRC_TOP)Programs/brldefs.h $(BLD_TOP)Programs/touch.$O: $(SRC_TOP)Programs/driver.h $(BLD_TOP)Programs/touch.$O: $(SRC_TOP)Programs/touch.h +$(BLD_TOP)Programs/touch.$O: $(SRC_TOP)Programs/bitmask.h +$(BLD_TOP)Programs/touch.$O: $(BLD_TOP)Programs/brlapi_constants.h +$(BLD_TOP)Programs/touch.$O: $(SRC_TOP)Programs/brlapi_keycodes.h +$(BLD_TOP)Programs/touch.$O: $(SRC_TOP)Programs/brltty.h +$(BLD_TOP)Programs/touch.$O: $(SRC_TOP)Programs/cmd.h +$(BLD_TOP)Programs/touch.$O: $(SRC_TOP)Programs/ctb.h +$(BLD_TOP)Programs/touch.$O: $(SRC_TOP)Programs/keycodes.h +$(BLD_TOP)Programs/touch.$O: $(SRC_TOP)Programs/ktb.h +$(BLD_TOP)Programs/touch.$O: $(SRC_TOP)Programs/spk.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Programs/ttb_compile.$O: +$(BLD_TOP)Programs/ttb_compile.$O: $(SRC_TOP)Programs/ttb_compile.c +$(BLD_TOP)Programs/ttb_compile.$O: $(BLD_TOP)config.h +$(BLD_TOP)Programs/ttb_compile.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Programs/ttb_compile.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/ttb_compile.$O: $(SRC_TOP)Programs/datafile.h +$(BLD_TOP)Programs/ttb_compile.$O: $(SRC_TOP)Programs/dataarea.h +$(BLD_TOP)Programs/ttb_compile.$O: $(SRC_TOP)Programs/charset.h +$(BLD_TOP)Programs/ttb_compile.$O: $(SRC_TOP)Programs/lock.h +$(BLD_TOP)Programs/ttb_compile.$O: $(SRC_TOP)Programs/ttb.h +$(BLD_TOP)Programs/ttb_compile.$O: $(SRC_TOP)Programs/bitmask.h +$(BLD_TOP)Programs/ttb_compile.$O: $(SRC_TOP)Programs/ttb_internal.h +$(BLD_TOP)Programs/ttb_compile.$O: $(SRC_TOP)Programs/unicode.h +$(BLD_TOP)Programs/ttb_compile.$O: $(SRC_TOP)Programs/ttb_compile.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Programs/ttb_gnome.$O: +$(BLD_TOP)Programs/ttb_gnome.$O: $(SRC_TOP)Programs/ttb_gnome.c +$(BLD_TOP)Programs/ttb_gnome.$O: $(BLD_TOP)config.h +$(BLD_TOP)Programs/ttb_gnome.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Programs/ttb_gnome.$O: $(SRC_TOP)Programs/ttb.h +$(BLD_TOP)Programs/ttb_gnome.$O: $(SRC_TOP)Programs/bitmask.h +$(BLD_TOP)Programs/ttb_gnome.$O: $(SRC_TOP)Programs/ttb_internal.h +$(BLD_TOP)Programs/ttb_gnome.$O: $(SRC_TOP)Programs/unicode.h +$(BLD_TOP)Programs/ttb_gnome.$O: $(SRC_TOP)Programs/datafile.h +$(BLD_TOP)Programs/ttb_gnome.$O: $(SRC_TOP)Programs/ttb_compile.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Programs/ttb_louis.$O: +$(BLD_TOP)Programs/ttb_louis.$O: $(SRC_TOP)Programs/ttb_louis.c +$(BLD_TOP)Programs/ttb_louis.$O: $(BLD_TOP)config.h +$(BLD_TOP)Programs/ttb_louis.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Programs/ttb_louis.$O: $(SRC_TOP)Programs/ttb.h +$(BLD_TOP)Programs/ttb_louis.$O: $(SRC_TOP)Programs/bitmask.h +$(BLD_TOP)Programs/ttb_louis.$O: $(SRC_TOP)Programs/ttb_internal.h +$(BLD_TOP)Programs/ttb_louis.$O: $(SRC_TOP)Programs/unicode.h +$(BLD_TOP)Programs/ttb_louis.$O: $(SRC_TOP)Programs/datafile.h +$(BLD_TOP)Programs/ttb_louis.$O: $(SRC_TOP)Programs/ttb_compile.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Programs/ttb_native.$O: +$(BLD_TOP)Programs/ttb_native.$O: $(SRC_TOP)Programs/ttb_native.c +$(BLD_TOP)Programs/ttb_native.$O: $(BLD_TOP)config.h +$(BLD_TOP)Programs/ttb_native.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Programs/ttb_native.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/ttb_native.$O: $(SRC_TOP)Programs/ttb.h +$(BLD_TOP)Programs/ttb_native.$O: $(SRC_TOP)Programs/bitmask.h +$(BLD_TOP)Programs/ttb_native.$O: $(SRC_TOP)Programs/ttb_internal.h +$(BLD_TOP)Programs/ttb_native.$O: $(SRC_TOP)Programs/unicode.h +$(BLD_TOP)Programs/ttb_native.$O: $(SRC_TOP)Programs/datafile.h +$(BLD_TOP)Programs/ttb_native.$O: $(SRC_TOP)Programs/ttb_compile.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Programs/ttb_translate.$O: +$(BLD_TOP)Programs/ttb_translate.$O: $(SRC_TOP)Programs/ttb_translate.c +$(BLD_TOP)Programs/ttb_translate.$O: $(BLD_TOP)config.h +$(BLD_TOP)Programs/ttb_translate.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Programs/ttb_translate.$O: $(SRC_TOP)Programs/charset.h +$(BLD_TOP)Programs/ttb_translate.$O: $(SRC_TOP)Programs/lock.h +$(BLD_TOP)Programs/ttb_translate.$O: $(SRC_TOP)Programs/ttb.h +$(BLD_TOP)Programs/ttb_translate.$O: $(SRC_TOP)Programs/bitmask.h +$(BLD_TOP)Programs/ttb_translate.$O: $(SRC_TOP)Programs/ttb_internal.h +$(BLD_TOP)Programs/ttb_translate.$O: $(SRC_TOP)Programs/unicode.h +$(BLD_TOP)Programs/ttb_translate.$O: $(SRC_TOP)Programs/brldots.h +$(BLD_TOP)Programs/ttb_translate.$O: $(BLD_TOP)Programs/text.auto.h + cd $(@D) && $(MAKE) $(@F) + +# Dependencies for Programs/ttbtest.$O: +$(BLD_TOP)Programs/ttbtest.$O: $(SRC_TOP)Programs/ttbtest.c +$(BLD_TOP)Programs/ttbtest.$O: $(BLD_TOP)config.h +$(BLD_TOP)Programs/ttbtest.$O: $(SRC_TOP)prologue.h +$(BLD_TOP)Programs/ttbtest.$O: $(SRC_TOP)Programs/program.h +$(BLD_TOP)Programs/ttbtest.$O: $(SRC_TOP)Programs/options.h +$(BLD_TOP)Programs/ttbtest.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/ttbtest.$O: $(SRC_TOP)Programs/brldots.h +$(BLD_TOP)Programs/ttbtest.$O: $(SRC_TOP)Programs/charset.h +$(BLD_TOP)Programs/ttbtest.$O: $(SRC_TOP)Programs/lock.h +$(BLD_TOP)Programs/ttbtest.$O: $(SRC_TOP)Programs/ttb.h +$(BLD_TOP)Programs/ttbtest.$O: $(SRC_TOP)Programs/bitmask.h +$(BLD_TOP)Programs/ttbtest.$O: $(SRC_TOP)Programs/ttb_internal.h +$(BLD_TOP)Programs/ttbtest.$O: $(SRC_TOP)Programs/unicode.h +$(BLD_TOP)Programs/ttbtest.$O: $(SRC_TOP)Programs/datafile.h +$(BLD_TOP)Programs/ttbtest.$O: $(SRC_TOP)Programs/ttb_compile.h +$(BLD_TOP)Programs/ttbtest.$O: $(BLD_TOP)Programs/brlapi.h +$(BLD_TOP)Programs/ttbtest.$O: $(BLD_TOP)Programs/brlapi_constants.h +$(BLD_TOP)Programs/ttbtest.$O: $(SRC_TOP)Programs/brlapi_keycodes.h cd $(@D) && $(MAKE) $(@F) # Dependencies for Programs/tunes.$O: @@ -1564,7 +2074,9 @@ $(BLD_TOP)Programs/tunes.$O: $(SRC_TOP)Programs/tunes.c $(BLD_TOP)Programs/tunes.$O: $(BLD_TOP)config.h $(BLD_TOP)Programs/tunes.$O: $(SRC_TOP)prologue.h $(BLD_TOP)Programs/tunes.$O: $(SRC_TOP)Programs/misc.h +$(BLD_TOP)Programs/tunes.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/tunes.$O: $(SRC_TOP)Programs/keyboard.h +$(BLD_TOP)Programs/tunes.$O: $(SRC_TOP)Programs/keycodes.h $(BLD_TOP)Programs/tunes.$O: $(SRC_TOP)Programs/system.h $(BLD_TOP)Programs/tunes.$O: $(SRC_TOP)Programs/message.h $(BLD_TOP)Programs/tunes.$O: $(SRC_TOP)Programs/brl.h @@ -1575,6 +2087,7 @@ $(BLD_TOP)Programs/tunes.$O: $(SRC_TOP)Programs/brlapi_keycodes.h $(BLD_TOP)Programs/tunes.$O: $(SRC_TOP)Programs/brltty.h $(BLD_TOP)Programs/tunes.$O: $(SRC_TOP)Programs/cmd.h $(BLD_TOP)Programs/tunes.$O: $(SRC_TOP)Programs/ctb.h +$(BLD_TOP)Programs/tunes.$O: $(SRC_TOP)Programs/ktb.h $(BLD_TOP)Programs/tunes.$O: $(SRC_TOP)Programs/spk.h $(BLD_TOP)Programs/tunes.$O: $(SRC_TOP)Programs/tunes.h $(BLD_TOP)Programs/tunes.$O: $(SRC_TOP)Programs/notes.h @@ -1588,6 +2101,7 @@ $(BLD_TOP)Programs/tunetest.$O: $(SRC_TOP)Programs/options.h $(BLD_TOP)Programs/tunetest.$O: $(SRC_TOP)Programs/tunes.h $(BLD_TOP)Programs/tunetest.$O: $(SRC_TOP)Programs/misc.h $(BLD_TOP)Programs/tunetest.$O: $(SRC_TOP)Programs/defaults.h +$(BLD_TOP)Programs/tunetest.$O: $(SRC_TOP)Programs/bitmask.h $(BLD_TOP)Programs/tunetest.$O: $(SRC_TOP)Programs/brl.h $(BLD_TOP)Programs/tunetest.$O: $(BLD_TOP)Programs/brlapi_constants.h $(BLD_TOP)Programs/tunetest.$O: $(SRC_TOP)Programs/brlapi_keycodes.h @@ -1596,6 +2110,8 @@ $(BLD_TOP)Programs/tunetest.$O: $(SRC_TOP)Programs/brltty.h $(BLD_TOP)Programs/tunetest.$O: $(SRC_TOP)Programs/cmd.h $(BLD_TOP)Programs/tunetest.$O: $(SRC_TOP)Programs/ctb.h $(BLD_TOP)Programs/tunetest.$O: $(SRC_TOP)Programs/driver.h +$(BLD_TOP)Programs/tunetest.$O: $(SRC_TOP)Programs/keycodes.h +$(BLD_TOP)Programs/tunetest.$O: $(SRC_TOP)Programs/ktb.h $(BLD_TOP)Programs/tunetest.$O: $(SRC_TOP)Programs/spk.h $(BLD_TOP)Programs/tunetest.$O: $(SRC_TOP)Programs/message.h cd $(@D) && $(MAKE) $(@F) @@ -1735,297 +2251,12 @@ $(BLD_TOP)Programs/xbrlapi.$O: $(SRC_TOP)Programs/misc.h $(BLD_TOP)Programs/xbrlapi.$O: $(SRC_TOP)Programs/options.h cd $(@D) && $(MAKE) $(@F) -# Dependencies for ScreenDrivers/AtSpi/screen.$O: -$(BLD_TOP)ScreenDrivers/AtSpi/screen.$O: $(SRC_TOP)ScreenDrivers/AtSpi/screen.c -$(BLD_TOP)ScreenDrivers/AtSpi/screen.$O: $(BLD_TOP)config.h -$(BLD_TOP)ScreenDrivers/AtSpi/screen.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)ScreenDrivers/AtSpi/screen.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)ScreenDrivers/AtSpi/screen.$O: $(SRC_TOP)Programs/win_pthread.h -$(BLD_TOP)ScreenDrivers/AtSpi/screen.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)ScreenDrivers/AtSpi/screen.$O: $(SRC_TOP)Programs/charset.h -$(BLD_TOP)ScreenDrivers/AtSpi/screen.$O: $(SRC_TOP)Programs/lock.h -$(BLD_TOP)ScreenDrivers/AtSpi/screen.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)ScreenDrivers/AtSpi/screen.$O: $(SRC_TOP)Programs/scr.h -$(BLD_TOP)ScreenDrivers/AtSpi/screen.$O: $(SRC_TOP)Programs/scr_base.h -$(BLD_TOP)ScreenDrivers/AtSpi/screen.$O: $(SRC_TOP)Programs/scr_driver.h -$(BLD_TOP)ScreenDrivers/AtSpi/screen.$O: $(SRC_TOP)Programs/scr_main.h -$(BLD_TOP)ScreenDrivers/AtSpi/screen.$O: $(SRC_TOP)Programs/scr_real.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for ScreenDrivers/Hurd/screen.$O: -$(BLD_TOP)ScreenDrivers/Hurd/screen.$O: $(SRC_TOP)ScreenDrivers/Hurd/screen.c -$(BLD_TOP)ScreenDrivers/Hurd/screen.$O: $(BLD_TOP)config.h -$(BLD_TOP)ScreenDrivers/Hurd/screen.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)ScreenDrivers/Hurd/screen.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)ScreenDrivers/Hurd/screen.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)ScreenDrivers/Hurd/screen.$O: $(SRC_TOP)Programs/charset.h -$(BLD_TOP)ScreenDrivers/Hurd/screen.$O: $(SRC_TOP)Programs/lock.h -$(BLD_TOP)ScreenDrivers/Hurd/screen.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)ScreenDrivers/Hurd/screen.$O: $(SRC_TOP)Programs/scr.h -$(BLD_TOP)ScreenDrivers/Hurd/screen.$O: $(SRC_TOP)Programs/scr_base.h -$(BLD_TOP)ScreenDrivers/Hurd/screen.$O: $(SRC_TOP)Programs/scr_driver.h -$(BLD_TOP)ScreenDrivers/Hurd/screen.$O: $(SRC_TOP)Programs/scr_main.h -$(BLD_TOP)ScreenDrivers/Hurd/screen.$O: $(SRC_TOP)Programs/scr_real.h -$(BLD_TOP)ScreenDrivers/Hurd/screen.$O: $(SRC_TOP)ScreenDrivers/Hurd/screen.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for ScreenDrivers/Linux/screen.$O: -$(BLD_TOP)ScreenDrivers/Linux/screen.$O: $(SRC_TOP)ScreenDrivers/Linux/screen.c -$(BLD_TOP)ScreenDrivers/Linux/screen.$O: $(BLD_TOP)config.h -$(BLD_TOP)ScreenDrivers/Linux/screen.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)ScreenDrivers/Linux/screen.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)ScreenDrivers/Linux/screen.$O: $(SRC_TOP)Programs/keyboard.h -$(BLD_TOP)ScreenDrivers/Linux/screen.$O: $(SRC_TOP)Programs/system.h -$(BLD_TOP)ScreenDrivers/Linux/screen.$O: $(SRC_TOP)Programs/sys_linux.h -$(BLD_TOP)ScreenDrivers/Linux/screen.$O: $(SRC_TOP)Programs/charset.h -$(BLD_TOP)ScreenDrivers/Linux/screen.$O: $(SRC_TOP)Programs/lock.h -$(BLD_TOP)ScreenDrivers/Linux/screen.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)ScreenDrivers/Linux/screen.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)ScreenDrivers/Linux/screen.$O: $(SRC_TOP)Programs/scr.h -$(BLD_TOP)ScreenDrivers/Linux/screen.$O: $(SRC_TOP)Programs/scr_base.h -$(BLD_TOP)ScreenDrivers/Linux/screen.$O: $(SRC_TOP)Programs/scr_driver.h -$(BLD_TOP)ScreenDrivers/Linux/screen.$O: $(SRC_TOP)Programs/scr_main.h -$(BLD_TOP)ScreenDrivers/Linux/screen.$O: $(SRC_TOP)Programs/scr_real.h -$(BLD_TOP)ScreenDrivers/Linux/screen.$O: $(SRC_TOP)ScreenDrivers/Linux/screen.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for ScreenDrivers/PcBios/screen.$O: -$(BLD_TOP)ScreenDrivers/PcBios/screen.$O: $(SRC_TOP)ScreenDrivers/PcBios/screen.c -$(BLD_TOP)ScreenDrivers/PcBios/screen.$O: $(BLD_TOP)config.h -$(BLD_TOP)ScreenDrivers/PcBios/screen.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)ScreenDrivers/PcBios/screen.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)ScreenDrivers/PcBios/screen.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)ScreenDrivers/PcBios/screen.$O: $(SRC_TOP)Programs/charset.h -$(BLD_TOP)ScreenDrivers/PcBios/screen.$O: $(SRC_TOP)Programs/lock.h -$(BLD_TOP)ScreenDrivers/PcBios/screen.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)ScreenDrivers/PcBios/screen.$O: $(SRC_TOP)Programs/scr.h -$(BLD_TOP)ScreenDrivers/PcBios/screen.$O: $(SRC_TOP)Programs/scr_base.h -$(BLD_TOP)ScreenDrivers/PcBios/screen.$O: $(SRC_TOP)Programs/scr_driver.h -$(BLD_TOP)ScreenDrivers/PcBios/screen.$O: $(SRC_TOP)Programs/scr_main.h -$(BLD_TOP)ScreenDrivers/PcBios/screen.$O: $(SRC_TOP)Programs/scr_real.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for ScreenDrivers/Screen/screen.$O: -$(BLD_TOP)ScreenDrivers/Screen/screen.$O: $(SRC_TOP)ScreenDrivers/Screen/screen.c -$(BLD_TOP)ScreenDrivers/Screen/screen.$O: $(BLD_TOP)config.h -$(BLD_TOP)ScreenDrivers/Screen/screen.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)ScreenDrivers/Screen/screen.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)ScreenDrivers/Screen/screen.$O: $(SRC_TOP)Programs/keyboard.h -$(BLD_TOP)ScreenDrivers/Screen/screen.$O: $(SRC_TOP)Programs/system.h -$(BLD_TOP)ScreenDrivers/Screen/screen.$O: $(SRC_TOP)Programs/charset.h -$(BLD_TOP)ScreenDrivers/Screen/screen.$O: $(SRC_TOP)Programs/lock.h -$(BLD_TOP)ScreenDrivers/Screen/screen.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)ScreenDrivers/Screen/screen.$O: $(SRC_TOP)Programs/scr.h -$(BLD_TOP)ScreenDrivers/Screen/screen.$O: $(SRC_TOP)Programs/scr_base.h -$(BLD_TOP)ScreenDrivers/Screen/screen.$O: $(SRC_TOP)Programs/scr_driver.h -$(BLD_TOP)ScreenDrivers/Screen/screen.$O: $(SRC_TOP)Programs/scr_main.h -$(BLD_TOP)ScreenDrivers/Screen/screen.$O: $(SRC_TOP)Programs/scr_real.h -$(BLD_TOP)ScreenDrivers/Screen/screen.$O: $(SRC_TOP)ScreenDrivers/Screen/screen.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for ScreenDrivers/Skeleton/screen.$O: -$(BLD_TOP)ScreenDrivers/Skeleton/screen.$O: $(SRC_TOP)ScreenDrivers/Skeleton/screen.c -$(BLD_TOP)ScreenDrivers/Skeleton/screen.$O: $(BLD_TOP)config.h -$(BLD_TOP)ScreenDrivers/Skeleton/screen.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)ScreenDrivers/Skeleton/screen.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)ScreenDrivers/Skeleton/screen.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)ScreenDrivers/Skeleton/screen.$O: $(SRC_TOP)Programs/scr.h -$(BLD_TOP)ScreenDrivers/Skeleton/screen.$O: $(SRC_TOP)Programs/scr_base.h -$(BLD_TOP)ScreenDrivers/Skeleton/screen.$O: $(SRC_TOP)Programs/scr_driver.h -$(BLD_TOP)ScreenDrivers/Skeleton/screen.$O: $(SRC_TOP)Programs/scr_main.h -$(BLD_TOP)ScreenDrivers/Skeleton/screen.$O: $(SRC_TOP)Programs/scr_real.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for ScreenDrivers/Windows/screen.$O: -$(BLD_TOP)ScreenDrivers/Windows/screen.$O: $(SRC_TOP)ScreenDrivers/Windows/screen.c -$(BLD_TOP)ScreenDrivers/Windows/screen.$O: $(BLD_TOP)config.h -$(BLD_TOP)ScreenDrivers/Windows/screen.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)ScreenDrivers/Windows/screen.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)ScreenDrivers/Windows/screen.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)ScreenDrivers/Windows/screen.$O: $(SRC_TOP)Programs/sys_windows.h -$(BLD_TOP)ScreenDrivers/Windows/screen.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)ScreenDrivers/Windows/screen.$O: $(SRC_TOP)Programs/scr.h -$(BLD_TOP)ScreenDrivers/Windows/screen.$O: $(SRC_TOP)Programs/scr_base.h -$(BLD_TOP)ScreenDrivers/Windows/screen.$O: $(SRC_TOP)Programs/scr_driver.h -$(BLD_TOP)ScreenDrivers/Windows/screen.$O: $(SRC_TOP)Programs/scr_main.h -$(BLD_TOP)ScreenDrivers/Windows/screen.$O: $(SRC_TOP)Programs/scr_real.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for SpeechDrivers/Alva/speech.$O: -$(BLD_TOP)SpeechDrivers/Alva/speech.$O: $(SRC_TOP)SpeechDrivers/Alva/speech.c -$(BLD_TOP)SpeechDrivers/Alva/speech.$O: $(BLD_TOP)config.h -$(BLD_TOP)SpeechDrivers/Alva/speech.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)SpeechDrivers/Alva/speech.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)SpeechDrivers/Alva/speech.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)SpeechDrivers/Alva/speech.$O: $(SRC_TOP)Programs/spk.h -$(BLD_TOP)SpeechDrivers/Alva/speech.$O: $(SRC_TOP)Programs/spk_driver.h -$(BLD_TOP)SpeechDrivers/Alva/speech.$O: $(SRC_TOP)SpeechDrivers/Alva/speech.h -$(BLD_TOP)SpeechDrivers/Alva/speech.$O: $(SRC_TOP)BrailleDrivers/Alva/braille.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for SpeechDrivers/BrailleLite/speech.$O: -$(BLD_TOP)SpeechDrivers/BrailleLite/speech.$O: $(SRC_TOP)SpeechDrivers/BrailleLite/speech.c -$(BLD_TOP)SpeechDrivers/BrailleLite/speech.$O: $(BLD_TOP)config.h -$(BLD_TOP)SpeechDrivers/BrailleLite/speech.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)SpeechDrivers/BrailleLite/speech.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)SpeechDrivers/BrailleLite/speech.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)SpeechDrivers/BrailleLite/speech.$O: $(SRC_TOP)Programs/spk.h -$(BLD_TOP)SpeechDrivers/BrailleLite/speech.$O: $(SRC_TOP)Programs/spk_driver.h -$(BLD_TOP)SpeechDrivers/BrailleLite/speech.$O: $(SRC_TOP)SpeechDrivers/BrailleLite/speech.h -$(BLD_TOP)SpeechDrivers/BrailleLite/speech.$O: $(SRC_TOP)BrailleDrivers/BrailleLite/braille.h -$(BLD_TOP)SpeechDrivers/BrailleLite/speech.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)SpeechDrivers/BrailleLite/speech.$O: $(SRC_TOP)Programs/io_serial.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for SpeechDrivers/CombiBraille/speech.$O: -$(BLD_TOP)SpeechDrivers/CombiBraille/speech.$O: $(SRC_TOP)SpeechDrivers/CombiBraille/speech.c -$(BLD_TOP)SpeechDrivers/CombiBraille/speech.$O: $(BLD_TOP)config.h -$(BLD_TOP)SpeechDrivers/CombiBraille/speech.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)SpeechDrivers/CombiBraille/speech.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)SpeechDrivers/CombiBraille/speech.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)SpeechDrivers/CombiBraille/speech.$O: $(SRC_TOP)Programs/spk.h -$(BLD_TOP)SpeechDrivers/CombiBraille/speech.$O: $(SRC_TOP)Programs/spk_driver.h -$(BLD_TOP)SpeechDrivers/CombiBraille/speech.$O: $(SRC_TOP)SpeechDrivers/CombiBraille/speech.h -$(BLD_TOP)SpeechDrivers/CombiBraille/speech.$O: $(SRC_TOP)BrailleDrivers/CombiBraille/braille.h -$(BLD_TOP)SpeechDrivers/CombiBraille/speech.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)SpeechDrivers/CombiBraille/speech.$O: $(SRC_TOP)Programs/io_serial.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for SpeechDrivers/ExternalSpeech/speech.$O: -$(BLD_TOP)SpeechDrivers/ExternalSpeech/speech.$O: $(SRC_TOP)SpeechDrivers/ExternalSpeech/speech.c -$(BLD_TOP)SpeechDrivers/ExternalSpeech/speech.$O: $(BLD_TOP)config.h -$(BLD_TOP)SpeechDrivers/ExternalSpeech/speech.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)SpeechDrivers/ExternalSpeech/speech.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)SpeechDrivers/ExternalSpeech/speech.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)SpeechDrivers/ExternalSpeech/speech.$O: $(SRC_TOP)Programs/spk.h -$(BLD_TOP)SpeechDrivers/ExternalSpeech/speech.$O: $(SRC_TOP)Programs/spk_driver.h -$(BLD_TOP)SpeechDrivers/ExternalSpeech/speech.$O: $(SRC_TOP)SpeechDrivers/ExternalSpeech/speech.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for SpeechDrivers/Festival/speech.$O: -$(BLD_TOP)SpeechDrivers/Festival/speech.$O: $(SRC_TOP)SpeechDrivers/Festival/speech.c -$(BLD_TOP)SpeechDrivers/Festival/speech.$O: $(BLD_TOP)config.h -$(BLD_TOP)SpeechDrivers/Festival/speech.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)SpeechDrivers/Festival/speech.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)SpeechDrivers/Festival/speech.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)SpeechDrivers/Festival/speech.$O: $(SRC_TOP)Programs/spk.h -$(BLD_TOP)SpeechDrivers/Festival/speech.$O: $(SRC_TOP)Programs/spk_driver.h -$(BLD_TOP)SpeechDrivers/Festival/speech.$O: $(SRC_TOP)SpeechDrivers/Festival/speech.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for SpeechDrivers/FestivalLite/speech.$O: -$(BLD_TOP)SpeechDrivers/FestivalLite/speech.$O: $(SRC_TOP)SpeechDrivers/FestivalLite/speech.c -$(BLD_TOP)SpeechDrivers/FestivalLite/speech.$O: $(BLD_TOP)config.h -$(BLD_TOP)SpeechDrivers/FestivalLite/speech.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)SpeechDrivers/FestivalLite/speech.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)SpeechDrivers/FestivalLite/speech.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)SpeechDrivers/FestivalLite/speech.$O: $(SRC_TOP)Programs/spk.h -$(BLD_TOP)SpeechDrivers/FestivalLite/speech.$O: $(SRC_TOP)Programs/spk_driver.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for SpeechDrivers/GenericSay/speech.$O: -$(BLD_TOP)SpeechDrivers/GenericSay/speech.$O: $(SRC_TOP)SpeechDrivers/GenericSay/speech.c -$(BLD_TOP)SpeechDrivers/GenericSay/speech.$O: $(BLD_TOP)config.h -$(BLD_TOP)SpeechDrivers/GenericSay/speech.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)SpeechDrivers/GenericSay/speech.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)SpeechDrivers/GenericSay/speech.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)SpeechDrivers/GenericSay/speech.$O: $(SRC_TOP)Programs/spk.h -$(BLD_TOP)SpeechDrivers/GenericSay/speech.$O: $(SRC_TOP)Programs/spk_driver.h -$(BLD_TOP)SpeechDrivers/GenericSay/speech.$O: $(SRC_TOP)SpeechDrivers/GenericSay/speech.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for SpeechDrivers/Mikropuhe/speech.$O: -$(BLD_TOP)SpeechDrivers/Mikropuhe/speech.$O: $(SRC_TOP)SpeechDrivers/Mikropuhe/speech.c -$(BLD_TOP)SpeechDrivers/Mikropuhe/speech.$O: $(BLD_TOP)config.h -$(BLD_TOP)SpeechDrivers/Mikropuhe/speech.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)SpeechDrivers/Mikropuhe/speech.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)SpeechDrivers/Mikropuhe/speech.$O: $(SRC_TOP)Programs/win_pthread.h -$(BLD_TOP)SpeechDrivers/Mikropuhe/speech.$O: $(SRC_TOP)Programs/keyboard.h -$(BLD_TOP)SpeechDrivers/Mikropuhe/speech.$O: $(SRC_TOP)Programs/system.h -$(BLD_TOP)SpeechDrivers/Mikropuhe/speech.$O: $(SRC_TOP)Programs/queue.h -$(BLD_TOP)SpeechDrivers/Mikropuhe/speech.$O: $(SRC_TOP)Programs/brl.h -$(BLD_TOP)SpeechDrivers/Mikropuhe/speech.$O: $(BLD_TOP)Programs/brlapi_constants.h -$(BLD_TOP)SpeechDrivers/Mikropuhe/speech.$O: $(SRC_TOP)Programs/brlapi_keycodes.h -$(BLD_TOP)SpeechDrivers/Mikropuhe/speech.$O: $(SRC_TOP)Programs/brldefs.h -$(BLD_TOP)SpeechDrivers/Mikropuhe/speech.$O: $(SRC_TOP)Programs/brltty.h -$(BLD_TOP)SpeechDrivers/Mikropuhe/speech.$O: $(SRC_TOP)Programs/cmd.h -$(BLD_TOP)SpeechDrivers/Mikropuhe/speech.$O: $(SRC_TOP)Programs/ctb.h -$(BLD_TOP)SpeechDrivers/Mikropuhe/speech.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)SpeechDrivers/Mikropuhe/speech.$O: $(SRC_TOP)Programs/spk.h -$(BLD_TOP)SpeechDrivers/Mikropuhe/speech.$O: $(SRC_TOP)Programs/spk_driver.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for SpeechDrivers/MultiBraille/speech.$O: -$(BLD_TOP)SpeechDrivers/MultiBraille/speech.$O: $(SRC_TOP)SpeechDrivers/MultiBraille/speech.c -$(BLD_TOP)SpeechDrivers/MultiBraille/speech.$O: $(BLD_TOP)config.h -$(BLD_TOP)SpeechDrivers/MultiBraille/speech.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)SpeechDrivers/MultiBraille/speech.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)SpeechDrivers/MultiBraille/speech.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)SpeechDrivers/MultiBraille/speech.$O: $(SRC_TOP)Programs/spk.h -$(BLD_TOP)SpeechDrivers/MultiBraille/speech.$O: $(SRC_TOP)Programs/spk_driver.h -$(BLD_TOP)SpeechDrivers/MultiBraille/speech.$O: $(SRC_TOP)SpeechDrivers/MultiBraille/speech.h -$(BLD_TOP)SpeechDrivers/MultiBraille/speech.$O: $(SRC_TOP)BrailleDrivers/MultiBraille/braille.h -$(BLD_TOP)SpeechDrivers/MultiBraille/speech.$O: $(SRC_TOP)Programs/io_defs.h -$(BLD_TOP)SpeechDrivers/MultiBraille/speech.$O: $(SRC_TOP)Programs/io_serial.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for SpeechDrivers/Skeleton/speech.$O: -$(BLD_TOP)SpeechDrivers/Skeleton/speech.$O: $(SRC_TOP)SpeechDrivers/Skeleton/speech.c -$(BLD_TOP)SpeechDrivers/Skeleton/speech.$O: $(BLD_TOP)config.h -$(BLD_TOP)SpeechDrivers/Skeleton/speech.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)SpeechDrivers/Skeleton/speech.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)SpeechDrivers/Skeleton/speech.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)SpeechDrivers/Skeleton/speech.$O: $(SRC_TOP)Programs/spk.h -$(BLD_TOP)SpeechDrivers/Skeleton/speech.$O: $(SRC_TOP)Programs/spk_driver.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for SpeechDrivers/SpeechDispatcher/speech.$O: -$(BLD_TOP)SpeechDrivers/SpeechDispatcher/speech.$O: $(SRC_TOP)SpeechDrivers/SpeechDispatcher/speech.c -$(BLD_TOP)SpeechDrivers/SpeechDispatcher/speech.$O: $(BLD_TOP)config.h -$(BLD_TOP)SpeechDrivers/SpeechDispatcher/speech.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)SpeechDrivers/SpeechDispatcher/speech.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)SpeechDrivers/SpeechDispatcher/speech.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)SpeechDrivers/SpeechDispatcher/speech.$O: $(SRC_TOP)Programs/spk.h -$(BLD_TOP)SpeechDrivers/SpeechDispatcher/speech.$O: $(SRC_TOP)Programs/spk_driver.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for SpeechDrivers/Swift/speech.$O: -$(BLD_TOP)SpeechDrivers/Swift/speech.$O: $(SRC_TOP)SpeechDrivers/Swift/speech.c -$(BLD_TOP)SpeechDrivers/Swift/speech.$O: $(BLD_TOP)config.h -$(BLD_TOP)SpeechDrivers/Swift/speech.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)SpeechDrivers/Swift/speech.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)SpeechDrivers/Swift/speech.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)SpeechDrivers/Swift/speech.$O: $(SRC_TOP)Programs/spk.h -$(BLD_TOP)SpeechDrivers/Swift/speech.$O: $(SRC_TOP)Programs/spk_driver.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for SpeechDrivers/Theta/speech.$O: -$(BLD_TOP)SpeechDrivers/Theta/speech.$O: $(SRC_TOP)SpeechDrivers/Theta/speech.c -$(BLD_TOP)SpeechDrivers/Theta/speech.$O: $(BLD_TOP)config.h -$(BLD_TOP)SpeechDrivers/Theta/speech.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)SpeechDrivers/Theta/speech.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)SpeechDrivers/Theta/speech.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)SpeechDrivers/Theta/speech.$O: $(SRC_TOP)Programs/spk.h -$(BLD_TOP)SpeechDrivers/Theta/speech.$O: $(SRC_TOP)Programs/spk_driver.h - cd $(@D) && $(MAKE) $(@F) - -# Dependencies for SpeechDrivers/ViaVoice/speech.$O: -$(BLD_TOP)SpeechDrivers/ViaVoice/speech.$O: $(SRC_TOP)SpeechDrivers/ViaVoice/speech.c -$(BLD_TOP)SpeechDrivers/ViaVoice/speech.$O: $(BLD_TOP)config.h -$(BLD_TOP)SpeechDrivers/ViaVoice/speech.$O: $(SRC_TOP)prologue.h -$(BLD_TOP)SpeechDrivers/ViaVoice/speech.$O: $(SRC_TOP)Programs/misc.h -$(BLD_TOP)SpeechDrivers/ViaVoice/speech.$O: $(SRC_TOP)Programs/driver.h -$(BLD_TOP)SpeechDrivers/ViaVoice/speech.$O: $(SRC_TOP)Programs/spk.h -$(BLD_TOP)SpeechDrivers/ViaVoice/speech.$O: $(SRC_TOP)Programs/spk_driver.h -$(BLD_TOP)SpeechDrivers/ViaVoice/speech.$O: $(SRC_TOP)SpeechDrivers/ViaVoice/speech.h - cd $(@D) && $(MAKE) $(@F) - # Generated dependencies: -$(BLD_TOP)BrailleDrivers/Papenmeier/cmd.auto.h: +$(BLD_TOP)Drivers/Braille/Papenmeier/cmd.auto.h: cd $(@D) && $(MAKE) $(@F) -$(BLD_TOP)BrailleDrivers/Papenmeier/hlp.auto.h: +$(BLD_TOP)Drivers/Braille/Papenmeier/hlp.auto.h: cd $(@D) && $(MAKE) $(@F) -$(BLD_TOP)Programs/attrib.auto.h: +$(BLD_TOP)Programs/attr.auto.h: cd $(@D) && $(MAKE) $(@F) $(BLD_TOP)Programs/brl.auto.h: cd $(@D) && $(MAKE) $(@F) diff --git a/acdir/install-sh b/acdir/install-sh index 2c875838b487620fd2218e6788526781c80c6169..323e2e923b41efe52ebf8b81bdd46fa4913c12fe 100755 --- a/acdir/install-sh +++ b/acdir/install-sh @@ -3,13 +3,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/aclocal.m4 b/aclocal.m4 index c93ee265d0110188b77e8320f22f9ae585653254..3189133624b3f63903f44d9a2cb2bf63b966f2f2 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -62,11 +62,10 @@ then $1_table="${brltty_default_table}" fi AC_SUBST([install_$1_tables]) -BRLTTY_FILE_PATH([$1_table], [tbl], [$3]) BRLTTY_SUMMARY_ITEM([$1-table], [$1_table]) AC_DEFINE_UNQUOTED(BRLTTY_UPPERCASE([$1_table]), ["${$1_table}"], [Define this to be a string containing the path to the default $1 table.]) -BRLTTY_FILE_PATH([$1_table], [], [], [$(SRC_TOP)$(TBL_DIR)]) +BRLTTY_FILE_PATH([$1_table], [$3], [], [$(SRC_TOP)$(TBL_DIR)]) AC_SUBST([$1_table])]) AC_DEFUN([BRLTTY_ARG_PARAMETERS], [dnl @@ -144,7 +143,7 @@ fi]) AC_DEFUN([BRLTTY_HELP_STRING], [dnl AC_HELP_STRING([$1], patsubst([$2], [ -.*$]), [brltty_help_prefix])dnl +.*$]), m4_defn([brltty_help_prefix]))dnl patsubst(patsubst([$2], [\`[^ ]*]), [ ], [\&brltty_help_prefix])[]dnl @@ -332,7 +331,7 @@ if test "${brltty_enabled_$1_support}" != "no" then if test -n "${brltty_internal_codes_$1}" then - [$1_driver_objects="`echo "${brltty_internal_names_$1}" | sed -e 's%\([^ ][^ ]*\)%$(BLD_TOP)$2/\1/$1.$O%g'`"] + [$1_driver_objects="`echo "${brltty_internal_names_$1}" | sed -e 's%\([^ ][^ ]*\)%$(BLD_TOP)Drivers/$2/\1/$1.$O%g'`"] $1_help="$1-help" fi @@ -352,7 +351,7 @@ fi for brltty_driver in ${brltty_item_names_$1} do - brltty_build_directories="${brltty_build_directories} $2/${brltty_driver}" + brltty_build_directories="${brltty_build_directories} Drivers/$2/${brltty_driver}" done AC_SUBST([$1_driver_objects]) @@ -384,11 +383,11 @@ fi])]) AC_DEFUN([BRLTTY_TEXT_TABLE], [dnl define([brltty_tables_text], ifdef([brltty_tables_text], [brltty_tables_text])[ -m4_text_wrap([$2], [ ], [- m4_format([%-8s ], [$1])], brltty_help_width)])]) +m4_text_wrap([$2], [ ], [- ]m4_format([%-8s ], [$1]), brltty_help_width)])]) AC_DEFUN([BRLTTY_ATTRIBUTES_TABLE], [dnl define([brltty_tables_attributes], ifdef([brltty_tables_attributes], [brltty_tables_attributes])[ -m4_text_wrap([$2], [ ], [- m4_format([%-10s ], [$1])], brltty_help_width)])]) +m4_text_wrap([$2], [ ], [- ]m4_format([%-10s ], [$1]), brltty_help_width)])]) AC_DEFUN([BRLTTY_SUMMARY_BEGIN], [dnl brltty_summary_lines="Options Summary:" @@ -468,6 +467,7 @@ fi]) AC_DEFUN([BRLTTY_HAVE_PTHREADS], [dnl AC_CACHE_CHECK([if pthreads are available], [brltty_cv_have_pthreads], [dnl + SYSCFLAGS="${SYSCFLAGS} -D_REENTRANT" case "${host_os}" in mingw32*) diff --git a/autogen b/autogen index b8c4c097a309e08911e90ddfe015638472e5290f..129e6f2db2d06b79e722ffd2f729b3751715a73f 100755 --- a/autogen +++ b/autogen @@ -3,13 +3,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/bindings.mk b/bindings.mk index 8b2688fe35926ba68e65753513e36abd86c82177..8ee8e50012bb2935b2a63ce078409bc7ec03192b 100644 --- a/bindings.mk +++ b/bindings.mk @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/braille.mk b/braille.mk index 107e3c635ae5519f08f1ef476ae2c671d0a25acb..9719e51e1ac0728fbce5ab226ae48050138c1e6c 100644 --- a/braille.mk +++ b/braille.mk @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # @@ -26,6 +27,7 @@ $(HELP_FILE): $(HELP_DEPS) $(TXT2HLP) $(INSTALL_DIRECTORY) $(@D) $(TXT2HLP) -- $(@) $(HELP_TEXT) braille-help:: $(HELP_FILE) +braille-all:: braille-help BRL_DEFS = '-DDRIVER_NAME=$(DRIVER_NAME)' '-DDRIVER_CODE=$(DRIVER_CODE)' '-DDRIVER_COMMENT="$(DRIVER_COMMENT)"' '-DDRIVER_VERSION="$(DRIVER_VERSION)"' '-DDRIVER_DEVELOPERS="$(DRIVER_DEVELOPERS)"' '-DBRLHELP="$(HELP_NAME)"' BRL_CFLAGS = $(LIBCFLAGS) $(BRL_DEFS) @@ -37,7 +39,7 @@ $(BRL_MOD_FILE): braille.$O $(MKMOD) $(@) braille.$O $(BRL_OBJS) braille-driver: $(BRL_MOD_FILE) -install-api: +install-api:: $(INSTALL_DIRECTORY) $(INSTALL_ROOT)$(INCLUDE_DIRECTORY) for file in *-$(DRIVER_CODE).h; do test -f $$file && $(INSTALL_DATA) $$file $(INSTALL_ROOT)$(INCLUDE_DIRECTORY); done || : diff --git a/brltty.lsm.in b/brltty.lsm.in deleted file mode 100644 index 27c551b477a037bb22932a3417be9227ee958a6b..0000000000000000000000000000000000000000 --- a/brltty.lsm.in +++ /dev/null @@ -1,57 +0,0 @@ -Begin4 -Title: @package_name@ -Version: @package_version@ -Entered-date: @package_date@ -Description: Braille Display Driver for Linux/Unix - BRLTTY is a background process (daemon) which provides access - to the console screen (when in text mode) for a blind person - using arefreshable braille display. It drives the braille - display, and provides complete screen review functionality. Some - speech capability has also been incorporated. -Keywords: refreshable braille display console access visually impaired blind unix linux solaris -Author: dave@mielke.cc (Dave Mielke) - nico@cam.org (Nicolas Pitre) - s.doyon@videotron.ca (Stéphane Doyon) - nn201@cus.cam.ac.uk (Nikhil Nair) -Maintained-by: dave@mielke.cc (Dave Mielke) -Primary-site: ftp.ibiblio.org /pub/Linux/system/access - 807kb brltty-3.0.tar.gz - 546kb brltty-3.0-1.i386.rpm - 799kb brltty-3.0-1.src.rpm - 10kb brltty-3.0.README - 2kb brltty-3.0.lsm -Alternate-site: ftp://leb.net /pub/blinux/brltty -Original-site: -Platforms: Linux (kernel 1.1.92 or later) - Solaris (release 7 or later) - Supported Braille Displays: - - Alva [ABT3xx, Delphi, Satellite] - - BrailleLite [18/40] - - BrailleNote [18/32] - - CombiBraille [25/45/85] - - EcoBraille [20/40/80] - - EuroBraille [Clio-noteBraille 40] - - HandyTech [Modular 20/40/80, Wave 40, Star 40/80, Bookworm] - - LogText [32] - - MDV (protocol 5) [MB208/MB408L/MB408S] - - MiniBraille [20] - - MultiBraille [MB125CR/MB145CR/MB185CR] - - Papenmeier [Tiny, Compact, 2D Lite/Screen, EL2D 40/66/80, - EL 40/80, Elba 20/32, IB 80] - - TSI [Navigator 20/40/80, PowerBraille 40/65/80] - - Vario/RBT (emulation 1) [40/80] - - Vario/RBT (emulation 2) [40/80] - - VideoBraille [40] - - VisioBraille [2040] - - Voyager [44/70 (USB)] - Supported Speech Synthesizers: - - Alva [Delphi] - - BrailleLite - - CombiBraille - - External Speech - - Festival Text to Speech Package - - Generic Say (pipes to /usr/local/bin/say) - - Televox - - ViaVoice Text to Speech System -Copying-policy: GPL -End diff --git a/brltty.nsi b/brltty.nsi new file mode 100644 index 0000000000000000000000000000000000000000..e832bc4d0f3760e67994042738808561473c13a0 --- /dev/null +++ b/brltty.nsi @@ -0,0 +1,242 @@ +;BRLTTY installer +;author: James Teh +;Based on the NSIS Modern User Interface Start Menu Folder Selection Example Script +;Written by Joost Verburg + +;-------------------------------- +;Include Modern UI + + !include "MUI2.nsh" + !include "Library.nsh" + +;-------------------------------- +;Product Info + + !define PRODUCT "BRLTTY" + !ifndef VERSION + !error "VERSION is not defined" + !endif + + !define MUI_WELCOMEPAGE_TITLE $(msg_WelcomePageTitle) + +;-------------------------------- +;General + + ;Name and file + Name "${PRODUCT}" + Caption "${PRODUCT} ${VERSION} Setup" + !ifdef OUTFILE + OutFile "${OUTFILE}" + !else + OutFile "brltty-win-${VERSION}.exe" + !endif + + !ifndef DISTDIR + !define DISTDIR "brltty-win-${VERSION}" + !endif + + SetCompressor /SOLID LZMA + SetOverwrite IfNewer + + ;Default installation folder + InstallDir "$PROGRAMFILES\${PRODUCT}" + + ;Get installation folder from registry if available + InstallDirRegKey HKLM "Software\${PRODUCT}" "" + + ;Request application privileges for Windows Vista + RequestExecutionLevel admin + +;-------------------------------- +;Variables + + Var StartMenuFolder + +;-------------------------------- +;Interface Settings + + !define MUI_ABORTWARNING + +;-------------------------------- +;Pages + + !insertmacro MUI_PAGE_WELCOME + !insertmacro MUI_PAGE_LICENSE "${DISTDIR}\LICENSE-GPL.txt" + !insertmacro MUI_PAGE_DIRECTORY + +;-------------------------------- + + ;Start Menu Folder Page Configuration + !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKLM" + !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\${PRODUCT}" + !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" + + !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder + + !insertmacro MUI_PAGE_INSTFILES + !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\README.first.txt" + !insertmacro MUI_PAGE_FINISH + + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_INSTFILES + +;-------------------------------- +;Languages + +!define UNINSTALLOG_LOCALIZE ; necessary for localization of messages from the uninstallation log file + +;Remember the installer language +!define MUI_LANGDLL_REGISTRY_ROOT "HKCU" +!define MUI_LANGDLL_REGISTRY_KEY "Software\${PRODUCT}" +!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language" + +!insertmacro MUI_LANGUAGE "English" ; default language +!insertmacro MUI_LANGUAGE "French" +!insertmacro MUI_LANGUAGE "German" +!insertmacro MUI_LANGUAGE "Spanish" +!insertmacro MUI_LANGUAGE "SimpChinese" +!insertmacro MUI_LANGUAGE "TradChinese" +!insertmacro MUI_LANGUAGE "Japanese" +;!insertmacro MUI_LANGUAGE "Korean" +!insertmacro MUI_LANGUAGE "Italian" +;!insertmacro MUI_LANGUAGE "Dutch" +;!insertmacro MUI_LANGUAGE "Danish" +!insertmacro MUI_LANGUAGE "Swedish" +;!insertmacro MUI_LANGUAGE "Norwegian" +;!insertmacro MUI_LANGUAGE "NorwegianNynorsk" +!insertmacro MUI_LANGUAGE "Finnish" +;!insertmacro MUI_LANGUAGE "Greek" +!insertmacro MUI_LANGUAGE "Russian" +!insertmacro MUI_LANGUAGE "Portuguese" +!insertmacro MUI_LANGUAGE "PortugueseBR" +!insertmacro MUI_LANGUAGE "Polish" +;!insertmacro MUI_LANGUAGE "Ukrainian" +!insertmacro MUI_LANGUAGE "Czech" +!insertmacro MUI_LANGUAGE "Slovak" +!insertmacro MUI_LANGUAGE "Croatian" +;!insertmacro MUI_LANGUAGE "Bulgarian" +!insertmacro MUI_LANGUAGE "Hungarian" +!insertmacro MUI_LANGUAGE "Thai" +;!insertmacro MUI_LANGUAGE "Romanian" +;!insertmacro MUI_LANGUAGE "Latvian" +;!insertmacro MUI_LANGUAGE "Macedonian" +;!insertmacro MUI_LANGUAGE "Estonian" +;!insertmacro MUI_LANGUAGE "Turkish" +;!insertmacro MUI_LANGUAGE "Lithuanian" +;!insertmacro MUI_LANGUAGE "Catalan" +;!insertmacro MUI_LANGUAGE "Slovenian" +;!insertmacro MUI_LANGUAGE "Serbian" +;!insertmacro MUI_LANGUAGE "SerbianLatin" +;!insertmacro MUI_LANGUAGE "Arabic" +;!insertmacro MUI_LANGUAGE "Farsi" +;!insertmacro MUI_LANGUAGE "Hebrew" +;!insertmacro MUI_LANGUAGE "Indonesian" +;!insertmacro MUI_LANGUAGE "Mongolian" +;!insertmacro MUI_LANGUAGE "Luxembourgish" +;!insertmacro MUI_LANGUAGE "Albanian" +;!insertmacro MUI_LANGUAGE "Breton" +;!insertmacro MUI_LANGUAGE "Belarusian" +;!insertmacro MUI_LANGUAGE "Icelandic" +;!insertmacro MUI_LANGUAGE "Malay" +;!insertmacro MUI_LANGUAGE "Bosnian" +;!insertmacro MUI_LANGUAGE "Kurdish" +;!insertmacro MUI_LANGUAGE "Irish" +;!insertmacro MUI_LANGUAGE "Uzbek" +!insertmacro MUI_LANGUAGE "Galician" +;-------------------------------- + +;---------------------------- +; Language strings +!include "${DISTDIR}\nsistrings.txt" + +;-------------------------------- +;Installer Sections + +Section "install" + + SetOutPath "$INSTDIR" + SetShellVarContext all + + ;Stop the BRLTTY service if it is running. + ExecWait "$SYSDIR\net.exe stop brlapi" + + File /r /x brltty.conf /x nsistrings.txt "${DISTDIR}\*" + # Install the config file separately so we can avoid overwriting it. + SetOverwrite off + File /oname=etc\brltty.conf "${DISTDIR}\etc\brltty.conf" + SetOverwrite IfNewer + + !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED "${DISTDIR}\bin\brlapi-0.5.dll" "$SYSDIR\brlapi-0.5.dll" "$SYSDIR" + !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED "${DISTDIR}\bin\libusb0.dll" "$SYSDIR\libusb0.dll" "$SYSDIR" + !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED "${DISTDIR}\bin\libusb0.sys" "$SYSDIR\drivers\libusb0.sys" "$SYSDIR\drivers" + !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED "${DISTDIR}\bin\msvcr90.dll" "$SYSDIR\msvcr90.dll" "$SYSDIR" + !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED "${DISTDIR}\bin\libintl3.dll" "$SYSDIR\libintl3.dll" "$SYSDIR" + !insertmacro InstallLib DLL NOTSHARED REBOOT_NOTPROTECTED "${DISTDIR}\bin\libiconv2.dll" "$SYSDIR\libiconv2.dll" "$SYSDIR" + + ;Store installation folder + WriteRegStr HKLM "Software\${PRODUCT}" "" $INSTDIR + + ;Create uninstaller + WriteUninstaller "$INSTDIR\Uninstall.exe" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT}" "UninstallString" '"$INSTDIR\uninstall.exe"' + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT}" "DisplayName" "${PRODUCT}" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT}" "DisplayVersion" "${VERSION}" + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT}" "NoModify" "1" + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT}" "NoRepair" "1" + + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application + + ;Create shortcuts + CreateDirectory "$SMPROGRAMS\$StartMenuFolder" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\$(shortcut_brlttycnf).lnk" "$INSTDIR\brlttycnf.exe" -r + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\$(shortcut_brlttydebug).lnk" "$INSTDIR\run-debug.bat" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\$(shortcut_inssrv).lnk" "$INSTDIR\install.bat" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\$(shortcut_rmvsrv).lnk" "$INSTDIR\uninstall.bat" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\$(shortcut_uninstall).lnk" "$INSTDIR\Uninstall.exe" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\$(shortcut_inslibusb).lnk" "$SYSDIR\rundll32" "libusb0.dll,usb_install_driver_np_rundll $INSTDIR\bin\brltty.inf" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\$(shortcut_inslibusbfilter).lnk" "$SYSDIR\rundll32" "libusb0.dll,usb_install_service_np_rundll" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\$(shortcut_uninslibusbfilter).lnk" "$SYSDIR\rundll32" "libusb0.dll,usb_uninstall_service_np_rundll" + + !insertmacro MUI_STARTMENU_WRITE_END + + ;Remove the BRLTTY service if it exists. + ExecWait "$INSTDIR\bin\brltty.exe -R" + ;Install usb inf. + ExecWait "$INSTDIR\brlttycnf.exe" + MessageBox MB_YESNO|MB_DEFBUTTON2 $(msg_inslibusb32filter) IDNO nofilter + ExecWait "rundll32 libusb0.dll,usb_install_service_np_rundll" +nofilter: + MessageBox MB_YESNO|MB_DEFBUTTON2 $(msg_inslibusb32) IDNO nodriver + ExecWait "rundll32 libusb0.dll,usb_install_driver_np_rundll $INSTDIR\bin\brltty.inf" +nodriver: + ;Install and start the BRLTTY service + ExecWait "$INSTDIR\bin\brltty.exe -I" + ExecWait "$SYSDIR\net.exe start brlapi" + +SectionEnd + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + + SetShellVarContext all + + ;Stop and remove the BRLTTY service + ExecWait "$SYSDIR\net.exe stop brlapi" + ExecWait "$INSTDIR\bin\brltty.exe -R" + ExecWait "rundll32 libusb0.dll,usb_uninstall_service_np_rundll" + + !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED "$SYSDIR\brlapi-0.5.dll" + !insertmacro UninstallLib DLL NOTSHARED REBOOT_NOTPROTECTED "$SYSDIR\libusb0.dll" + + RMDir /r "$INSTDIR" + + !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder + + RMDir /r "$SMPROGRAMS\$StartMenuFolder" + + DeleteRegKey HKLM "Software\${PRODUCT}" + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT}" + +SectionEnd diff --git a/brltty.spec b/brltty.spec new file mode 100644 index 0000000000000000000000000000000000000000..fb3c71ecbd935a3958c799de3bf27ae2d99834e7 --- /dev/null +++ b/brltty.spec @@ -0,0 +1,331 @@ +Name: brltty +Version: 4.0 +Release: 1 + +Group: System Environment/Daemons +License: GPL +Vendor: The BRLTTY Team +Packager: Dave Mielke +URL: http://mielke.cc/brltty/ +Source: http://mielke.cc/brltty/releases/%{name}-%{version}.tar.gz + +BuildRequires: autoconf >= 2.53 +BuildRequires: make +BuildRequires: gcc +BuildRequires: /bin/sh +BuildRequires: /bin/ln +BuildRequires: /usr/bin/ld +BuildRequires: /sbin/ldconfig +BuildRequires: /usr/bin/ranlib +BuildRequires: /usr/bin/ar +BuildRequires: /usr/bin/awk +BuildRequires: /usr/bin/bison +BuildRequires: /usr/bin/install +BuildRequires: glibc-devel +BuildRequires: Pyrex +BuildRequires: tcl +BuildRequires: gcc-java + +BuildRoot: %{_tmppath}/%{name}-%{version}-InstallRoot +%define _bindir /bin +%define _sbindir /sbin +%define _libdir /lib +%define _sysconfdir /etc + +AutoProv: 1 + +AutoReq: 1 +Requires: /bin/sh + +Summary: Braille display driver for Linux/Unix. +%description +BRLTTY is a background process (daemon) which provides access to +the console screen (when in text mode) for a blind person using a +refreshable braille display. It drives the braille display, and +provides complete screen review functionality. Some speech capability +has also been incorporated. + +Install this package if you use a refreshable braille display. + +%package -n brlapi +Version: 0.5.3 +Group: Applications/System +License: LGPL + +AutoProv: 1 + +AutoReq: 1 + +Summary: Appliation Programming Interface for BRLTTY. +%description -n brlapi +This package provides the run-time support for the Application +Programming Interface to BRLTTY. + +Install this package if you have an application +which directly accesses a refreshable braille display. + +%package -n brlapi-caml +Version: 0.5.3 +Group: Applications/System +License: LGPL + +AutoProv: 1 + +AutoReq: 1 + +Summary: Caml bindings for BrlAPI. +%description -n brlapi-caml +This package provides the Caml bindings for BrlAPI, +which is the Application Programming Interface to BRLTTY. + +Install this package if you have a Caml application +which directly accesses a refreshable braille display. + +%package -n brlapi-java +Version: 0.5.3 +Group: Applications/System +License: LGPL + +AutoProv: 1 + +AutoReq: 1 + +Summary: Java bindings for BrlAPI. +%description -n brlapi-java +This package provides the Java bindings for BrlAPI, +which is the Application Programming Interface to BRLTTY. + +Install this package if you have a Java application +which directly accesses a refreshable braille display. + +%package -n brlapi-python +Version: 0.5.3 +Group: Applications/System +License: LGPL + +AutoProv: 1 + +AutoReq: 1 + +Summary: Python bindings for BrlAPI. +%description -n brlapi-python +This package provides the Python bindings for BrlAPI, +which is the Application Programming Interface to BRLTTY. + +Install this package if you have a Python application +which directly accesses a refreshable braille display. + +%package -n brlapi-tcl +Version: 0.5.3 +Group: Applications/System +License: LGPL + +AutoProv: 1 + +AutoReq: 1 + +Summary: Tcl bindings for BrlAPI. +%description -n brlapi-tcl +This package provides the Tcl bindings for BrlAPI, +which is the Application Programming Interface to BRLTTY. + +Install this package if you have a Tcl application +which directly accesses a refreshable braille display. + +%package -n brlapi-devel +Version: 0.5.3 +Group: Development/System +License: LGPL + +AutoProv: 1 + +AutoReq: 1 +Requires: brlapi = 0.5.3 + +Summary: Headers, static archive, and documentation for BrlAPI. +%description -n brlapi-devel +This package provides the header files, static archive, shared object +linker reference, and reference documentation for BrlAPI (the +Application Programming Interface to BRLTTY). It enables the +implementation of applications which take direct advantage of a +refreshable braille display in order to present information in ways +which are more appropriate for blind users and/or to provide user +interfaces which are more specifically atuned to their needs. + +Install this package if you're developing or maintaining an application +which directly accesses a refreshable braille display. + +%prep +# %setup -n %{name}-%{version} +%setup -n brltty-4.0 + +%build +%configure --disable-relocatable-install --with-install-root="${RPM_BUILD_ROOT}" --disable-gpm --without-flite --without-mikropuhe --without-swift --without-theta --without-viavoice --without-libbraille --without-curses --without-x --with-braille-driver=-tt +make + +directory="doc" +mkdir -p "${directory}" +for file in `find . \( -path "./${directory}" -o -path ./Documents \) -prune -o \( -name 'README*' -o -name '*.patch' -o -name '*.txt' -o -name '*.html' -o -name '*.sgml' -o \( -path "./Bootdisks/*" -type f -perm +ugo=x \) \) -print` +do + mkdir -p "${directory}/${file%/*}" + cp -rp "${file}" "${directory}/${file}" +done + +%install +make install +install -m 644 Documents/brltty.conf "${RPM_BUILD_ROOT}%{_sysconfdir}" + +%clean +rm -fr "${RPM_BUILD_ROOT}" + +%files +%defattr(-,root,root) +%{_bindir}/brltty +%{_bindir}/brltty-* +%{_bindir}/vstp +%{_libdir}/brltty +%{_sysconfdir}/brltty +%doc %{_mandir}/man1/* +%doc Documents/Manual-BRLTTY/English/*.{sgml,txt,html} +%doc LICENSE-GPL +%doc Documents/ChangeLog Documents/TODO +%doc doc/* +%config(noreplace) %verify(not size md5 mtime) %{_sysconfdir}/brltty.conf + +%files -n brlapi +%defattr(-,root,root) +%{_libdir}/libbrlapi.so.* +%{_bindir}/xbrlapi +%doc Documents/Manual-BrlAPI/English/*.{sgml,txt,html} + +%files -n brlapi-caml +/usr/lib/ocaml/brlapi +/usr/lib/ocaml/stublibs/dllbrlapi_stubs.* + +%files -n brlapi-java +/usr/share/java/* +/usr/lib/java/* + +%files -n brlapi-python +/usr/lib/python2.4/site-packages/[bB]rlapi[-.]* + +%files -n brlapi-tcl +/usr/lib/brlapi-0.5.3/libbrlapi_tcl.so +/usr/lib/brlapi-0.5.3/pkgIndex.tcl + +%files -n brlapi-devel +%defattr(-,root,root) +%{_libdir}/libbrlapi.a +%{_libdir}/libbrlapi.so +%{_includedir}/brlapi.h +%{_includedir}/brlapi_*.h +%{_includedir}/brltty +%doc %{_mandir}/man3/* +%doc Documents/BrlAPIref + +%changelog +* Fri May 15 2009 Dave Mielke 4.0 ++ General Changes: + All screen reading, character handling, and tables are now Unicode-based. + The " startup problems" message has been removed. + Boot operands may contain multiple items separated by plus signs. + USB enhancements and fixes. + Windows serial I/O fixes. + A UDEV rules file for brltty is provided. + An upstart job for brltty is provided. ++ Status Cells: + Hard-coded styles have been replaced by user-configurable fields. + If there are no status cells then a text region may be reserved for them. + The INFO command toggles text maximization if a text region is being used. ++ Braille Drivers: + The Pegasus and Seika braille drivers have been added. + The BrailleSense braille driver has been renamed to HIMS. ++ Alva Braille Driver: + The BC6nn series are supported. ++ Baum Braille Driver: + The VarioConnect, EcoVario, VarioPro, and Refreshabraille are supported. ++ BrailleNote Braille Driver: + The statuscells= parameter has been removed. ++ EuroBraille Braille Driver: + USB support has been added. + Robustness has been improved. + Bindings for the Esys have been added. ++ FreedomScientific Braille Driver: + The statuscells= parameter has been removed. ++ HandyTech Braille Driver: + The Evolution models have been redefined to only have text cells. ++ HIMS Braille Driver: + The Braille Sense key bindings have been reworked. + SyncBraille support has been added. + Bluetooth support has been fixed. ++ TSI Braille Driver: + The way Seika devices implement PowerBraille emulation is supported. + The core's flow control mechanism is used (rather than hard-coded delays). ++ Voyager Braille Driver: + The statuscells= parameter has been removed. + Key binding changes: + CUTAPPEND/CUTLINE moved to CRt# + B/C + PRINDENT/NXINDENT moved to CRt# + A+B/C+D ++ XWindow Braille Driver: + The font= parameter has been added. ++ SpeechDispatcher Speech Driver: + Single characters are now spoken correctly. ++ BrlAPI Server: + The version has been changed from 0.5.2 to 0.5.3. + enterTtyMode() now works correctly on Windows. + Problems when no braille display is connected at startup have been resolved. + The core's output is automatically restored when the last client disconnects. + Writes to the driver are no longer buffered. + Braille keyboard input is now converted to characters. + Output to the braille display is now drained the same way the core does. ++ Lisp Bindings: + Now compatible with CFFI 0.10.0. ++ Text Tables: + The license has been changed from GPL to LGPL. + File names have been changed from "text.*.tbl" to "*.ttb". + The file extension ".tti" is used for text subtables. + Tables must be encoded in UTF-8 (rather than in a local character set). + The "byte" keyword is no longer optional. + The "dot" directive is no longer supported. + The "char" and "include" directives have been added. + Language-based tables include common representations for box characters. + Tables for several languages have been added. + The default is now to select the table based on the locale's name. + The tbltest utility has been renamed to ttbtest. + The compress, fi2, identity, and simple tables have been removed. + The following tables have been renamed (mostly for ISO 639 compliance): + cz -> cs + fi1 -> fi + nabcc -> en-nabcc + se -> sv + se-old -> sv-1989 + visiob -> fr-vs + vni -> vi ++ Attributes Tables: + The license has been changed from GPL to LGPL. + File names have been changed from "attr*.tbl" to "*.atb". + The file extension ".ati" is used for attributes subtables. + Tables must be encoded in UTF-8 (rather than in Latin1). + The "byte" directive is no longer supported. + The "include" directive has been added. ++ Contraction Tables: + The license has been changed from GPL to LGPL. + Tables for several languages have been added. + The following tables have been renamed: + en-uebc-g2 -> en-ueb-g2 + The en-ueb-g2, en-us-g2, and zh-tw tables have been updated. ++ Key tables (for binding keyboard keys to brltty commands) have been added: + The file extension ".ktb" is used for key tables. + The file extension ".kti" is used for key subtables. + The desktop, keypad, and laptop key tables are provided. + the -k [--key-table=] option has been added. + The -K [--keyboard-properties=] option has been added. ++ Source Tree Changes: + The text tables have been moved from BrailleTables/ to Tables/. + The attributes tables have been moved from BrailleTables/ to Tables/. + The contraction tables have been moved from ContractionTables/ to Tables/. + The braille drivers have been moved from BrailleDrivers/ to Drivers/Braille/. + The speech drivers have been moved from SpeechDrivers/ to Drivers/Speech/. + The screen drivers have been moved from ScreenDrivers/ to Drivers/Screen/. + Source for the Windows installer is provided. + diff --git a/brltty.spec.in b/brltty.spec.in index 5e19e7518f6112f9da6d33b153f9374dbc747ffa..b3c04c5620711adcb343754b787046b0e991041a 100644 --- a/brltty.spec.in +++ b/brltty.spec.in @@ -64,6 +64,23 @@ Programming Interface to BRLTTY. Install this package if you have an application which directly accesses a refreshable braille display. +%package -n brlapi-caml +Version: @api_release@ +Group: Applications/System +License: LGPL + +AutoProv: 1 + +AutoReq: 1 + +Summary: Caml bindings for BrlAPI. +%description -n brlapi-caml +This package provides the Caml bindings for BrlAPI, +which is the Application Programming Interface to BRLTTY. + +Install this package if you have a Caml application +which directly accesses a refreshable braille display. + %package -n brlapi-java Version: @api_release@ Group: Applications/System @@ -170,7 +187,7 @@ rm -fr "${RPM_BUILD_ROOT}" %{_sysconfdir}/brltty %doc %{_mandir}/man1/* %doc Documents/Manual-BRLTTY/English/*.{sgml,txt,html} -%doc COPYING +%doc LICENSE-GPL %doc Documents/ChangeLog Documents/TODO %doc doc/* %config(noreplace) %verify(not size md5 mtime) %{_sysconfdir}/brltty.conf @@ -178,19 +195,23 @@ rm -fr "${RPM_BUILD_ROOT}" %files -n brlapi %defattr(-,root,root) %{_libdir}/libbrlapi.so.* +%{_bindir}/xbrlapi %doc Documents/Manual-BrlAPI/English/*.{sgml,txt,html} -%doc Documents/README.Gnopernicus + +%files -n brlapi-caml +@OCAMLLIB@/brlapi +@OCAMLLIB@/stublibs/dllbrlapi_stubs.* %files -n brlapi-java @JAVA_JAR_DIR@/* @JAVA_JNI_DIR@/* %files -n brlapi-python -@PYTHON_SITE_PKG@/brlapi.* +@PYTHON_SITE_PKG@/[bB]rlapi[-.]* %files -n brlapi-tcl -/usr/lib/brlapi-@api_release@/libbrlapi_tcl.so -/usr/lib/brlapi-@api_release@/pkgIndex.tcl +@TCL_DIR@/brlapi-@api_release@/libbrlapi_tcl.so +@TCL_DIR@/brlapi-@api_release@/pkgIndex.tcl %files -n brlapi-devel %defattr(-,root,root) @@ -203,50 +224,108 @@ rm -fr "${RPM_BUILD_ROOT}" %doc Documents/BrlAPIref %changelog -* Wed Oct 17 2007 Dave Mielke 3.9 -+ Core changes: - The startup log and initial braille display message contain the build revision. - The -v [--verify] option identifies the screen driver. - Failure of the braille and/or screen driver to start isn't fatal. - Repeated retries are scheduled for each driver until it starts. - Attempts to connect to gpm are only made when it's actually needed. - Standalone programs no longer include support for shared objects. - The MSDOS operating system is supported. - MSDOS option syntax (/flag and /name:value) is supported. - The syntax +x to clear a short option flag is supported. - Help output groups options by function rather than lists them alphabetically. - Needed but missing resources are created (by default) in /lib/brltty/rw/: - command line option: -W [--writable-directory=] - configuration file directive: writable-directory - environment variable: BRLTTY_WRITABLE_DIRECTORY - configure script option: --with-writable-directory= -+ BrlAPI changes: - Version updated to 0.5.1. - TCP sockets are more responsive. - The -h [--host] option of xbrlapi has been changed to -b [--brlapi]. -+ Baum braille driver changes: - The autosuspend feature of Linux USB devices is disabled. - Don't probe for emulation modes if a serial device is being used. - Add the protocol= (all, native) parameter. -+ HandyTech braille driver changes: - The Easy Braille is supported. -+ Papenmeier braille driver changes: - The Trio models are supported. - The second set of vertical status keys does vertical routing. -+ Linux changes: - USB devices maintained by udev under /dev/bus/usb/ are supported. -+ Cygwin changes: - The emulation layer (rather than Windows functions) is used. - Serial devices named ttySn (rather than COMn) are used. -+ Windows changes: - Write to the event log. - The -I [--install-service] and -R [--remove-service] options have been added. - The -r [--release-device] option defaults to "on". -+ Table changes: - Corrections to Finnish braille [text.fi1.tbl, text.fi2.tbl]. - Corrections to Portuguese braille [text.pt.tbl]. - Corrections to American English grade 2 braille [en-us-g2.ctb]. - Unified English Braille table rename: uebc-g2 -> en-uebc-g2 - Chinese table renames: big5 -> zh-tw-big5, gb2312 -> zh-tw-gb2312 - New Chinese tables: zh-tw-utf8, zh-tw-ucb +* Fri May 15 2009 Dave Mielke 4.0 ++ General Changes: + All screen reading, character handling, and tables are now Unicode-based. + The " startup problems" message has been removed. + Boot operands may contain multiple items separated by plus signs. + USB enhancements and fixes. + Windows serial I/O fixes. + A UDEV rules file for brltty is provided. + An upstart job for brltty is provided. ++ Status Cells: + Hard-coded styles have been replaced by user-configurable fields. + If there are no status cells then a text region may be reserved for them. + The INFO command toggles text maximization if a text region is being used. ++ Braille Drivers: + The Pegasus and Seika braille drivers have been added. + The BrailleSense braille driver has been renamed to HIMS. ++ Alva Braille Driver: + The BC6nn series are supported. ++ Baum Braille Driver: + The VarioConnect, EcoVario, VarioPro, and Refreshabraille are supported. ++ BrailleNote Braille Driver: + The statuscells= parameter has been removed. ++ EuroBraille Braille Driver: + USB support has been added. + Robustness has been improved. + Bindings for the Esys have been added. ++ FreedomScientific Braille Driver: + The statuscells= parameter has been removed. ++ HandyTech Braille Driver: + The Evolution models have been redefined to only have text cells. ++ HIMS Braille Driver: + The Braille Sense key bindings have been reworked. + SyncBraille support has been added. + Bluetooth support has been fixed. ++ TSI Braille Driver: + The way Seika devices implement PowerBraille emulation is supported. + The core's flow control mechanism is used (rather than hard-coded delays). ++ Voyager Braille Driver: + The statuscells= parameter has been removed. + Key binding changes: + CUTAPPEND/CUTLINE moved to CRt# + B/C + PRINDENT/NXINDENT moved to CRt# + A+B/C+D ++ XWindow Braille Driver: + The font= parameter has been added. ++ SpeechDispatcher Speech Driver: + Single characters are now spoken correctly. ++ BrlAPI Server: + The version has been changed from 0.5.2 to 0.5.3. + enterTtyMode() now works correctly on Windows. + Problems when no braille display is connected at startup have been resolved. + The core's output is automatically restored when the last client disconnects. + Writes to the driver are no longer buffered. + Braille keyboard input is now converted to characters. + Output to the braille display is now drained the same way the core does. ++ Lisp Bindings: + Now compatible with CFFI 0.10.0. ++ Text Tables: + The license has been changed from GPL to LGPL. + File names have been changed from "text.*.tbl" to "*.ttb". + The file extension ".tti" is used for text subtables. + Tables must be encoded in UTF-8 (rather than in a local character set). + The "byte" keyword is no longer optional. + The "dot" directive is no longer supported. + The "char" and "include" directives have been added. + Language-based tables include common representations for box characters. + Tables for several languages have been added. + The default is now to select the table based on the locale's name. + The tbltest utility has been renamed to ttbtest. + The compress, fi2, identity, and simple tables have been removed. + The following tables have been renamed (mostly for ISO 639 compliance): + cz -> cs + fi1 -> fi + nabcc -> en-nabcc + se -> sv + se-old -> sv-1989 + visiob -> fr-vs + vni -> vi ++ Attributes Tables: + The license has been changed from GPL to LGPL. + File names have been changed from "attr*.tbl" to "*.atb". + The file extension ".ati" is used for attributes subtables. + Tables must be encoded in UTF-8 (rather than in Latin1). + The "byte" directive is no longer supported. + The "include" directive has been added. ++ Contraction Tables: + The license has been changed from GPL to LGPL. + Tables for several languages have been added. + The following tables have been renamed: + en-uebc-g2 -> en-ueb-g2 + The en-ueb-g2, en-us-g2, and zh-tw tables have been updated. ++ Key tables (for binding keyboard keys to brltty commands) have been added: + The file extension ".ktb" is used for key tables. + The file extension ".kti" is used for key subtables. + The desktop, keypad, and laptop key tables are provided. + the -k [--key-table=] option has been added. + The -K [--keyboard-properties=] option has been added. ++ Source Tree Changes: + The text tables have been moved from BrailleTables/ to Tables/. + The attributes tables have been moved from BrailleTables/ to Tables/. + The contraction tables have been moved from ContractionTables/ to Tables/. + The braille drivers have been moved from BrailleDrivers/ to Drivers/Braille/. + The speech drivers have been moved from SpeechDrivers/ to Drivers/Speech/. + The screen drivers have been moved from ScreenDrivers/ to Drivers/Screen/. + Source for the Windows installer is provided. diff --git a/brlttycnf.ahk b/brlttycnf.ahk new file mode 100644 index 0000000000000000000000000000000000000000..51a6e61460abad67417e1c6c25bfb772acbdd9d3 --- /dev/null +++ b/brlttycnf.ahk @@ -0,0 +1,255 @@ +Version = 0.5 + + +;---------------------------------------------------------------------------------------------------------------------------------------- +; Platform: Windows XP/Vista +; Author: Michel Such +; AutoHotkey Version: 1.0.47 +; Version : Alpha release 1 +; +; Script Function: +; Facility to configure Braille device and communication port +; for Windows version of BRLTTY + +#SingleInstance +#NoTrayIcon + +#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. +SendMode Input ; Recommended for new scripts due to its superior speed and reliability. +SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. + +CnfFile = %A_ScriptDir%\etc\brltty.conf ; Configuration file for BRLTTY +Gosub SetLanguage + +IfNotExist, %CnfFile% +{ + Msgbox, 0, %ScriptName%, %CnfFileNotFoundMsg% + ExitApp +} + +Gosub SelectPortAndDisplay +Return + +SelectPortAndDisplay: + + ; Fill a listbox for port selection + ComPorts = USB:|COM1|COM2|COM3|COM4|COM5|COM6|COM7|COM8|COM9|COM10| + ComPorts = %ComPorts%COM11|COM12|COM13|COM14|COM15|COM16| + + ; Fill a listbox for terminal selection + ; getting data from brltty.conf + Loop, read, %CnfFile% + { + IfInString A_LoopReadLine, #braille-driver + { + Term := SubStr(A_LoopReadLine, 17) + StringReplace, Term, Term, #, -, 1 + TermList = %TermList%%Term%| + } + } + + ; Draw and display the window + Gui, Font, S12 CDefault, Arial + Gui, Add, Text, x6 y6 w800 h160, %HelpText% + + Gui, Add, Text, x6 y166 w400 h20, %SelectBrailleDisplayText% + Gui, Add, ListBox, vTerminal x6 y190 w400 h150 hscroll vscroll , %TermList% + + Gui, Add, Text, x412 y166 w400 h20, %SelectBraillePortText% + Gui, Add, ListBox, vComPort x412 y190 w400 h150 hscroll vscroll , %ComPorts% + Gui, Add, Button, vSend gValidate x640 y352 w100 h24 +Default, %OKBtn% + Gui, Add, Button, vCancel gGuiClose x750 y352 w100 h24, %CancelBtn% + + Gui, Show, AutoSize Center, %ScriptName% + + ;Use Escape to immediately leave the program + Escape:: + Gosub GuiClose + return +return + + +;-------------------------------------------------------------------------------------------- +; Functions +;------------------------------------------------------------------------------------------ + + +Validate: + GuiControlGet, Terminal + if Terminal = + { + Msgbox 0, %ScriptName%, %NeedToChooseAFileMsg% + ControlFocus, %SelectBrailleDisplayText%, %ScriptName% + Return + } + GuiControlGet, ComPort + if ComPort = + { + Msgbox 0, %ScriptName%, %NeedToChooseAPortMsg% + ControlFocus, %SelectBraillePortText%, %ScriptName% + Return + } + + SetTimer, ChangeButtonNames, 50 + Msgbox 1, %ScriptName%, %YouHaveSelectedMsg% %Terminal%`n%ConnectedToPortMsg% %ComPort% + IfMsgBox OK + { + IfInString ComPort, COM + { + FileAppend braille-device serial:%ComPort%`n, %CnfFile% + } + Else + { + FileAppend braille-device %ComPort%`n, %CnfFile% + } + StringReplace Terminal, Terminal, -, # + FileAppend braille-driver %Terminal%`n, %CnfFile% + + ; Restart BRLTTY if the -r parameter was passed + If 1 = -r + { + SplitPath, ComSpec,, SysDir + ; Stop BrlAPI and BRLTTY if started + RunWait, %SysDir%\net.exe stop BrlApi + RunWait, %A_ScriptDir%\bin\brltty.exe -R + + ; Restart BRLTTY and BrlAPI + RunWait, %A_ScriptDir%\bin\brltty.exe -I + RunWait, %SysDir%\net.exe start BrlApi + } + Gosub GuiClose + } + ControlFocus, %SelectBrailleDisplayText%, %ScriptName% +return + +;---------------------------------------------------------------------------------------------------------------------------------------- + +;End the program + +GuiClose: + Gui, cancel + GuiEscape: + ExitApp + +;---------------------------------------------------------------------------------------------------------------------------------------- +; Support for different languages + +SetLanguage: + +; This procedure uses the AutoHotkey A_Language variable +; which contains the language code of the system the program is running on. +; To get a list of A_Language values and corresponding languages, goto: +; http://www.autohotkey.com/docs/misc/Languages.htm + + languageCode_040c = French + languageCode_080c = French + languageCode_0c0c = French + languageCode_100c = French + languageCode_140c = French + languageCode_180c = French + + languageCode_0416 = Portuguese + languageCode_0816 = Portuguese + + the_language := languageCode_%A_Language% ; Get the name of the system's default language. + if the_language = + { + the_language := "English" + } + Gosub %the_language% +Return + + +ChangeButtonNames: + IfWinNotExist, %ScriptName% + return ; Keep waiting. + SetTimer, ChangeButtonNames, off + WinActivate + ControlSetText, Button1, %OKBtn% +ControlSetText, Button2, %CancelBtn% +return + +English: ; English translation (default) + + ScriptName = BRLTTY Configurator %Version% + CnfFileNotFoundMsg = File %CnfFile% not found. + NeedToChooseAFileMsg = You must select a braille display + NeedToChooseAPortMsg = You must select a communication port + YouHaveSelectedMsg = You selected terminal + ConnectedToPortMsg = attached to port + + HelpText = + ( + Please choose the braille display type and communication port. + - If your braille device is USB, + * if you have installed your manufacturer's driver, you should rather select its virtual COM port if it provides one, + else select "USB:" to use libusb-win32's filter, + * if you do not want or can not install your manufacturer's driver, you can select "USB:" here and install + libusb-win32's driver. + - If your braille device is serial, is connect through a serial to USB converter, or through bluetooth, just select the + proper COM port. Make sure to select the proper braille display as incorrect probing seems to possibly brick some devices. + ) + + SelectBrailleDisplayText = Select braille display + SelectBraillePortText = Select communication port + + OKBtn = &OK + CancelBtn = &Cancel +Return + +French: ; French translation + + ScriptName = Configurateur BRLTTY %Version% + CnfFileNotFoundMsg = Le fichier %CnfFile% est introuvable + NeedToChooseAFileMsg = Vous devez choisir un afficheur braille + NeedToChooseAPortMsg = Vous devez choisir un port de communication + YouHaveSelectedMsg = Vous avez choisi l'afficheur + ConnectedToPortMsg = connecté au port + + HelpText = + ( + Veuillez choisir le type d'afficheur braille et le port de communication. + - Si votre afficheur utilise un port USB, + * si vous avez installé le pilote de votre fabriquant, vous devriez choisir son port COM virtuel s'il en fournit un, sinon + choisissez "USB:" pour utiliser le filtre libusb-win32, + * si vous ne voulez pas ou ne pouvez pas installer le pilote de votre fabriquant, vous pouvez choisir "USB:" ici et + installer le pilote libusb-win32. + - Si votre afficheur braille utilise un port série, ou est connecté via un adaptateur USB vers série, ou via bluetooth, choisissez simplement + le port COM approprié. Assurez-vous de choisir le bon afficheur car un choix incorrect semble parfois planter certains matériels. + ) + + SelectBrailleDisplayText = Choisissez l'afficheur braille + SelectBraillePortText = Choisissez le port de communication + + OKBtn = &Accepter + CancelBtn = A&nnuler +Return + + +Portuguese: ; Portuguese translation + + ScriptName = Configurador do BRLTTY %Version% + CnfFileNotFoundMsg = O ficheiro %CnfFile% não foi encontrado + NeedToChooseAFileMsg = Tem que seleccionar uma linha Braille + NeedToChooseAPortMsg = Tem que seleccionar uma porta de mcomunicação + YouHaveSelectedMsg = Seleccionou o terminal + ConnectedToPortMsg = conectado à porta + + HelpText = + ( + Por favor escolha o tipo da linha Braille e a porta de comunicação. + - Se o seu dispositivo Braille é USB, + * se tem instalado o driver do fabricante, deverá seleccionar a porta de série respectiva se existir, caso contrário + seleccione "USB:" para usar o filtro libusb-win32's. + * se não pretende ou não consegue instalar o driver do fabricante, pode seleccionar aqui "USB:" e instalar + o driver libusb-win32's. + - Se o seu dispositivo braille trabalha via porta série, seleccione a apropriada. Tenha a certeza que selecciona a linha Braille correcta visto que + utilizar drivers errados poderá danificar alguns dispositivos... + ) + + SelectBrailleDisplayText = Seleccione a linha Braille + SelectBraillePortText = Seleccione a porta de comunicação + + OKBtn = &OK + CancelBtn = &Cancelar +Return diff --git a/common.mk b/common.mk index c57e175a12ca8520933d282c97ba2e933febdaa4..d1d9abf1288bdf8b71afe1cdde0c7e2977a5029a 100644 --- a/common.mk +++ b/common.mk @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # @@ -73,6 +74,9 @@ INSTALL_APIHDR_DIRECTORY = $(INSTALL_ROOT)$(includedir) install-apihdr-directory: $(INSTALL_DIRECTORY) $(INSTALL_APIHDR_DIRECTORY) +install-apisoc-directory: + -$(INSTALL_DIRECTORY) -m 1777 $(API_SOCKET_DIRECTORY) + clean:: -rm -f *.$O *.auto.h *.auto.c core implib.a diff --git a/config.h.in b/config.h.in index 87f497433d700bebf78adbfa99cbcc2be75fd561..c12a9fd2e35d540b66a4a9d5cb2f48c00ea4997b 100644 --- a/config.h.in +++ b/config.h.in @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -61,8 +62,8 @@ extern "C" { /* Define this if the header file wchar.h exists. */ #undef HAVE_WCHAR_H -/* Define this if International Components for Unicode functionality is available. */ -#undef HAVE_LIBICUUC +/* Define this if Unicode-based internationalization support is to be included. */ +#undef HAVE_ICU /* Define this if the header file iconv.h exists. */ #undef HAVE_ICONV_H @@ -234,6 +235,9 @@ extern "C" { /* Define this to be a string containing the path to the default braille device. */ #undef BRAILLE_DEVICE +/* Define this to be a string containing the path to the first serial device. */ +#undef FIRST_SERIAL_DEVICE + /* Define this to be a string containing the path to the default text table. */ #undef TEXT_TABLE @@ -356,11 +360,10 @@ extern "C" { #undef HAVE_PKG_XAWPLUS #undef HAVE_PKG_XM -#define TRANSLATION_TABLE_EXTENSION ".tbl" -#define TEXT_TABLE_PREFIX "text." -#define ATTRIBUTES_TABLE_PREFIX "" +#define TEXT_TABLE_EXTENSION ".ttb" +#define ATTRIBUTES_TABLE_EXTENSION ".atb" #define CONTRACTION_TABLE_EXTENSION ".ctb" -#define CONTRACTION_TABLE_PREFIX "" +#define KEY_TABLE_EXTENSION ".ktb" #ifdef __cplusplus } diff --git a/config.mk.in b/config.mk.in index fad306d85661af69e7fdc8464280f1b02ba75d3e..3a8b1b3efa5695394f358388f5dd438e975d1c15 100644 --- a/config.mk.in +++ b/config.mk.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # @@ -20,14 +21,14 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PGM_DIR = Programs DOC_DIR = Documents -TBL_DIR = BrailleTables -CTB_DIR = ContractionTables -BRL_DIR = BrailleDrivers -SPK_DIR = SpeechDrivers -SCR_DIR = ScreenDrivers +TBL_DIR = Tables +BRL_DIR = Drivers/Braille +SPK_DIR = Drivers/Speech +SCR_DIR = Drivers/Screen DRV_DIR = lib DAT_DIR = data BND_DIR = Bindings +API_LIBS = -L$(BLD_TOP)$(PGM_DIR) -lbrlapi CROSSCOMP = @compiler_prefix@ INSTALL_ROOT = @install_root@ @@ -55,7 +56,6 @@ HOSTLDFLAGS = $(COMMONLDFLAGS) LDFLAGS = $(COMMONLDFLAGS) LDLIBS = @LIBS@ CLIBS = @brltty_libs_curses@ -XLIBS = @brltty_libs_x@ LD = $(CROSSCOMP)@LD@ @@ -82,10 +82,10 @@ SYMLINK = @LN_S@ DOXYGEN = @DOXYGEN@ -X_CFLAGS = @X_CFLAGS@ -X_LIBS = @X_LIBS@ -X_PRE_LIBS = @X_PRE_LIBS@ -X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_CFLAGS = @brltty_cflags_x@ +X_LIBS = @brltty_libs_x@ +XKB_LIBS = @brltty_libs_xkb@ +XTK_LIBS = @brltty_libs_xtk@ CURSES_LIB = @brltty_package_curses@ GUI_TOOLKIT_LIB = @brltty_package_gui_toolkit@ @@ -130,31 +130,36 @@ INCLUDE_DIRECTORY = @include_directory@ MANUAL_DIRECTORIES = @brltty_manual_directories@ BRAILLE_DRIVER_CODES = @brltty_item_codes_braille@ -BRAILLE_DRIVER_OBJECTS = @braille_driver_objects@ -BRAILLE_DRIVER_LIBRARIES = @braille_driver_libraries@ -BRAILLE_HELP = @braille_help@ +BRAILLE_DRIVER_NAMES = @brltty_item_names_braille@ BRAILLE_INTERNAL_DRIVER_CODES = @brltty_internal_codes_braille@ BRAILLE_INTERNAL_DRIVER_NAMES = @brltty_internal_names_braille@ -BRAILLE_DRIVERS = @braille_drivers@ +BRAILLE_EXTERNAL_DRIVER_CODES = @brltty_external_codes_braille@ BRAILLE_EXTERNAL_DRIVER_NAMES = @brltty_external_names_braille@ +BRAILLE_DRIVER_OBJECTS = @braille_driver_objects@ +BRAILLE_DRIVER_LIBRARIES = @braille_driver_libraries@ +BRAILLE_DRIVERS = @braille_drivers@ LIBBRAILLE_ROOT = @libbraille_root@ SPEECH_DRIVER_CODES = @brltty_item_codes_speech@ -SPEECH_DRIVER_OBJECTS = @speech_driver_objects@ -SPEECH_DRIVER_LIBRARIES = @speech_driver_libraries@ +SPEECH_DRIVER_NAMES = @brltty_item_names_speech@ SPEECH_INTERNAL_DRIVER_CODES = @brltty_internal_codes_speech@ SPEECH_INTERNAL_DRIVER_NAMES = @brltty_internal_names_speech@ -SPEECH_DRIVERS = @speech_drivers@ +SPEECH_EXTERNAL_DRIVER_CODES = @brltty_external_codes_speech@ SPEECH_EXTERNAL_DRIVER_NAMES = @brltty_external_names_speech@ +SPEECH_DRIVER_OBJECTS = @speech_driver_objects@ +SPEECH_DRIVER_LIBRARIES = @speech_driver_libraries@ +SPEECH_DRIVERS = @speech_drivers@ SCREEN_DRIVER_CODES = @brltty_item_codes_screen@ -SCREEN_DRIVER_OBJECTS = @screen_driver_objects@ -SCREEN_DRIVER_LIBRARIES = @screen_driver_libraries@ +SCREEN_DRIVER_NAMES = @brltty_item_names_screen@ SCREEN_INTERNAL_DRIVER_CODES = @brltty_internal_codes_screen@ SCREEN_INTERNAL_DRIVER_NAMES = @brltty_internal_names_screen@ -SCREEN_DRIVERS = @screen_drivers@ +SCREEN_EXTERNAL_DRIVER_CODES = @brltty_external_codes_screen@ SCREEN_EXTERNAL_DRIVER_NAMES = @brltty_external_names_screen@ +SCREEN_DRIVER_OBJECTS = @screen_driver_objects@ +SCREEN_DRIVER_LIBRARIES = @screen_driver_libraries@ +SCREEN_DRIVERS = @screen_drivers@ FLITE_ROOT = @flite_root@ FLITE_LANGUAGE = @flite_language@ @@ -175,13 +180,15 @@ CSPI_INCLUDES = @cspi_includes@ CSPI_LIBDIRS = @cspi_libdirs@ CSPI_LIBRARIES = @cspi_libraries@ +ICU_INCLUDES = @icu_includes@ +ICU_LIBRARIES = @icu_libraries@ + TEXT_TABLE = @text_table@ ATTRIBUTES_TABLE = @attributes_table@ SYSTEM_OBJECT = @system_object@ USB_OBJECTS = @usb_objects@ BLUETOOTH_OBJECTS = @bluetooth_objects@ -TBL_OBJECTS = @translation_table_objects@ CTB_OBJECTS = @contracted_braille_objects@ SPEECH_OBJECT = @speech_support_object@ BEEPER_OBJECTS = @beeper_tune_objects@ @@ -194,10 +201,14 @@ API_RELEASE = @api_release@ API_OBJECTS = @api_objects@ API_LIBRARIES = @api_libraries@ ALL_API = @all_api@ +BUILD_API = @build_api@ INSTALL_API = @install_api@ +API_REF = @api_ref@ API_DYNAMIC_LIBRARY = @api_dynamic_library@ INSTALL_API_LIBRARIES = @install_api_libraries@ +UNINSTALL_API_LIBRARIES = @uninstall_api_libraries@ API_AUTHFILE = @api_authkeyfile@ +API_SOCKET_DIRECTORY = @api_socket_path@ API_BINDINGS = @api_bindings@ ALL_API_BINDINGS = @all_api_bindings@ diff --git a/configure b/configure index 670b267b6913cf17bad45860c5008af0b811b3a7..fd7073800077cd949979c51623ae78c157785ba4 100755 --- a/configure +++ b/configure @@ -1,56 +1,27 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for brltty 3.10dev. +# Generated by GNU Autoconf 2.59 for brltty 4.0. # # Report bugs to . # -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh +# Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix fi +DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then @@ -60,43 +31,8 @@ else fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -as_nl=' -' -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } -fi - # Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -done +$as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' @@ -110,19 +46,18 @@ do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + $as_unset $as_var fi done # Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then +if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false @@ -130,388 +65,157 @@ fi # Name of the executable. -as_me=`$as_basename -- "$0" || +as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# CDPATH. -$as_unset CDPATH + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` -if test "x$CONFIG_SHELL" = x; then - if (eval ":") 2>/dev/null; then - as_have_required=yes -else - as_have_required=no -fi - - if test $as_have_required = yes && (eval ": -(as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh fi -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi -test \$exitcode = 0) || { (exit 1); exit 1; } + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done -( - as_lineno_1=\$LINENO - as_lineno_2=\$LINENO - test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && - test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } -") 2> /dev/null; then - : -else - as_candidate_shells= + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - case $as_dir in + for as_base in sh bash ksh sh5; do + case $as_dir in /*) - for as_base in sh bash ksh sh5; do - as_candidate_shells="$as_candidate_shells $as_dir/$as_base" - done;; - esac -done -IFS=$as_save_IFS - - - for as_shell in $as_candidate_shells $SHELL; do - # Try only shells that exist, to save several forks. - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { ("$as_shell") 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -_ASEOF -}; then - CONFIG_SHELL=$as_shell - as_have_required=yes - if { "$as_shell" 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -(as_func_return () { - (exit $1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = "$1" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test $exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } - -_ASEOF -}; then - break -fi - -fi - - done - - if test "x$CONFIG_SHELL" != x; then - for as_var in BASH_ENV ENV - do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - done - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -fi - - - if test $as_have_required = no; then - echo This script requires a shell more modern than all the - echo shells that I found on your system. Please install a - echo modern shell, or manually run the script under such a - echo shell if you do have one. - { (exit 1); exit 1; } -fi - - -fi - -fi - - - -(eval "as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test \$exitcode = 0") || { - echo No shell found that supports shell functions. - echo Please tell autoconf@gnu.org about your system, - echo including any error possibly output before this - echo message -} - - - + if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop - s/-\n.*// + s,-$,, + s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && - chmod +x "$as_me.lineno" || + chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno # Exit status is that of the last command. exit } -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in --n*) - case `echo 'x\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; - esac;; -*) - ECHO_N='-n';; +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then +if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir -fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null +rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -520,28 +224,7 @@ else as_mkdir_p=false fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x +as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -550,32 +233,44 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH -exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` +exec 6>&1 + # # Initializations. # ac_default_prefix=/usr/local -ac_clean_files= ac_config_libobj_dir=. -LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + # Identity of this package. PACKAGE_NAME='brltty' PACKAGE_TARNAME='brltty' -PACKAGE_VERSION='3.10dev' -PACKAGE_STRING='brltty 3.10dev' +PACKAGE_VERSION='4.0' +PACKAGE_STRING='brltty 4.0' PACKAGE_BUGREPORT='http://mielke.cc/brltty/' ac_unique_file="Programs/brltty.h" @@ -583,343 +278,42 @@ ac_default_prefix= # Factoring default headers for most tests. ac_includes_default="\ #include -#ifdef HAVE_SYS_TYPES_H +#if HAVE_SYS_TYPES_H # include #endif -#ifdef HAVE_SYS_STAT_H +#if HAVE_SYS_STAT_H # include #endif -#ifdef STDC_HEADERS +#if STDC_HEADERS # include # include #else -# ifdef HAVE_STDLIB_H +# if HAVE_STDLIB_H # include # endif #endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif -#ifdef HAVE_STRINGS_H +#if HAVE_STRINGS_H # include #endif -#ifdef HAVE_INTTYPES_H +#if HAVE_INTTYPES_H # include +#else +# if HAVE_STDINT_H +# include +# endif #endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H +#if HAVE_UNISTD_H # include #endif" -ac_subst_vars='SHELL -PATH_SEPARATOR -PACKAGE_NAME -PACKAGE_TARNAME -PACKAGE_VERSION -PACKAGE_STRING -PACKAGE_BUGREPORT -exec_prefix -prefix -program_transform_name -bindir -sbindir -libexecdir -datarootdir -datadir -sysconfdir -sharedstatedir -localstatedir -includedir -oldincludedir -docdir -infodir -htmldir -dvidir -pdfdir -psdir -libdir -localedir -mandir -DEFS -ECHO_C -ECHO_N -ECHO_T -LIBS -build_alias -host_alias -target_alias -brltty_manual_directories -api_major -api_minor -api_revision -api_version -api_release -PACKAGE_TITLE -package_date -build -build_cpu -build_vendor -build_os -host -host_cpu -host_vendor -host_os -target -target_cpu -target_vendor -target_os -execute_root -install_root -configuration_file -program_directory -library_directory -writable_directory -data_directory -manpage_directory -include_directory -WRITABLE_DIRECTORY -AWK -DATA_DIRECTORY -LIBRARY_DIRECTORY -CONFIGURATION_DIRECTORY -compiler_prefix -SET_MAKE -CC -CFLAGS -LDFLAGS -CPPFLAGS -ac_ct_CC -EXEEXT -OBJEXT -CXX -CXXFLAGS -ac_ct_CXX -LD -RANLIB -YACC -YFLAGS -LN_S -INSTALL_PROGRAM -INSTALL_SCRIPT -INSTALL_DATA -DOXYGEN -can_make_BrlAPIref -INSTALL_OPTION_STRIP -MKOBJ -MKMOD -MKLIB -CONFLIBDIR -CPP -GREP -EGREP -OCAMLC -OCAMLMKLIB -OCAMLOPT -OCAMLCDOTOPT -OCAMLOPTDOTOPT -OCAMLFIND -OCAMLBEST -OCAMLVERSION -OCAMLLIB -OCAMLWIN32 -OCAML_CLIBS -OCAML_NCLIB -OCAML_INSTALL_TARGET -OCAML_UNINSTALL_TARGET -CAML_OK -JAVAC_PATH -JAVAC -JAVADOC_NAME -JAVADOC -JAR_NAME -JAR -JAVA_JAR -JAVA_JAR_DIR -JAVA_JNI_HDR -JAVA_JNI_INC -JAVA_JNI_FLAGS -JAVA_JNI -JAVA_JNI_DIR -JAVA_OK -PYTHON -PYTHON_PROLOGUE -PYTHON_VERSION -PYTHON_CPPFLAGS -PYTHON_LIBS -PYTHON_EXTRA_LIBS -PYTHON_EXTRA_LDFLAGS -PYTHON_SITE_PKG -PYREXC -PYREXC_CFLAGS -PYTHON_OK -TCLSH -TCL_OK -TCL_CPPFLAGS -TCL_LIBS -api_objects -api_libraries -api_bindings -all_api_bindings -install_api_bindings -all_api -install_api -api_dynamic_library -install_api_libraries -api_authkeyfile -brltty_package_curses -brltty_libs_curses -XMKMF -X_CFLAGS -X_PRE_LIBS -X_LIBS -X_EXTRA_LIBS -all_xbrlapi -install_xbrlapi -brltty_package_gui_toolkit -brltty_libs_x -SYSCFLAGS -YACC_CFLAGS -LIBCFLAGS -LIBCXXFLAGS -archive_prefix -archive_extension -library_prefix -library_extension -module_name -module_extension -libsearch_variable -system_object -translation_table_objects -contracted_braille_objects -install_contraction_tables -beeper_tune_objects -pcm_tune_objects -midi_tune_objects -fm_tune_objects -PM_CONFIGFILE_DEPENDENCY -usb_objects -bluetooth_objects -braille_libraries_al -braille_libraries_at -braille_libraries_ba -braille_libraries_bd -braille_libraries_bl -braille_libraries_bm -braille_libraries_bn -braille_libraries_bs -braille_libraries_cb -braille_libraries_ec -braille_libraries_eu -braille_libraries_fs -braille_libraries_ht -braille_libraries_il -libbraille_root -braille_libraries_lb -braille_libraries_lt -braille_libraries_mb -braille_libraries_md -braille_libraries_mn -braille_libraries_pm -braille_libraries_tn -braille_libraries_ts -braille_libraries_tt -braille_libraries_vd -braille_libraries_vo -braille_libraries_vr -braille_libraries_vs -braille_libraries_xw -brltty_item_codes_braille -brltty_item_names_braille -brltty_external_codes_braille -brltty_external_names_braille -brltty_internal_codes_braille -brltty_internal_names_braille -braille_driver_libraries -braille_driver_objects -braille_drivers -braille_help -first_serial_device -braille_device -install_text_tables -text_table -install_attributes_tables -attributes_table -speech_libraries_al -speech_libraries_bl -speech_libraries_cb -speech_libraries_es -flite_root -flite_language -flite_lexicon -flite_voice -speech_libraries_fl -speech_libraries_fv -speech_libraries_gs -mikropuhe_root -speech_libraries_mp -speechd_root -speech_libraries_sd -swift_root -speech_libraries_sw -theta_root -speech_libraries_th -viavoice_root -speech_libraries_vv -speech_support_object -brltty_item_codes_speech -brltty_item_names_speech -brltty_external_codes_speech -brltty_external_names_speech -brltty_internal_codes_speech -brltty_internal_names_speech -speech_driver_libraries -speech_driver_objects -speech_drivers -speech_help -screen_libraries_lx -screen_libraries_hd -screen_libraries_wn -screen_libraries_pb -screen_libraries_sc -screen_libraries_as -cspi_includes -cspi_libdirs -cspi_libraries -brltty_item_codes_screen -brltty_item_names_screen -brltty_external_codes_screen -brltty_external_names_screen -brltty_internal_codes_screen -brltty_internal_names_screen -screen_driver_libraries -screen_driver_objects -screen_drivers -screen_help -install_drivers -LIBOBJS -LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS brltty_manual_directories api_major api_minor api_revision api_version api_release PACKAGE_TITLE package_date build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os execute_root install_root configuration_file program_directory library_directory writable_directory data_directory manpage_directory include_directory compiler_prefix SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX LD RANLIB ac_ct_RANLIB YACC AWK LN_S INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA DOXYGEN can_make_BrlAPIref INSTALL_OPTION_STRIP MKOBJ MKMOD MKLIB CONFLIBDIR CPP EGREP ICU_CONFIG icu_includes icu_libraries OCAMLC OCAMLMKLIB OCAMLOPT OCAMLCDOTOPT OCAMLOPTDOTOPT OCAMLFIND OCAMLBEST OCAMLVERSION OCAMLLIB OCAMLWIN32 OCAML_CLIBS OCAML_NCLIB OCAML_INSTALL_TARGET OCAML_UNINSTALL_TARGET CAML_OK JAVAC_PATH JAVAC JAVADOC_NAME JAVADOC JAR_NAME JAR JAVA_JAR JAVA_JAR_DIR JAVA_JNI_HDR JAVA_JNI_INC JAVA_JNI_FLAGS JAVA_JNI JAVA_JNI_DIR JAVA_OK PYTHON PYTHON_PROLOGUE PYTHON_VERSION PYTHON_CPPFLAGS PYTHON_LIBS PYTHON_EXTRA_LIBS PYTHON_EXTRA_LDFLAGS PYTHON_SITE_PKG PYREXC PYREXC_CFLAGS PYTHON_OK TCLSH TCL_DIR TCL_OK TCL_CPPFLAGS TCL_LIBS api_objects api_libraries api_bindings all_api_bindings install_api_bindings all_api build_api install_api api_ref api_dynamic_library install_api_libraries uninstall_api_libraries api_authkeyfile api_socket_path brltty_package_curses brltty_libs_curses brltty_package_gui_toolkit brltty_cflags_x brltty_libs_x brltty_libs_xkb brltty_libs_xtk all_xbrlapi install_xbrlapi SYSCFLAGS YACC_CFLAGS LIBCFLAGS LIBCXXFLAGS archive_prefix archive_extension library_prefix library_extension module_name module_extension libsearch_variable system_object contracted_braille_objects install_contraction_tables beeper_tune_objects pcm_tune_objects midi_tune_objects fm_tune_objects PM_CONFIGFILE_DEPENDENCY usb_objects bluetooth_objects braille_libraries_al braille_libraries_at braille_libraries_ba braille_libraries_bd braille_libraries_bl braille_libraries_bm braille_libraries_bn braille_libraries_cb braille_libraries_ec braille_libraries_eu braille_libraries_fs braille_libraries_hm braille_libraries_ht braille_libraries_il libbraille_root braille_libraries_lb braille_libraries_lt braille_libraries_mb braille_libraries_md braille_libraries_mn braille_libraries_pg braille_libraries_pm braille_libraries_sk braille_libraries_tn braille_libraries_ts braille_libraries_tt braille_libraries_vd braille_libraries_vo braille_libraries_vr braille_libraries_vs braille_libraries_xw brltty_item_codes_braille brltty_item_names_braille brltty_external_codes_braille brltty_external_names_braille brltty_internal_codes_braille brltty_internal_names_braille braille_driver_libraries braille_driver_objects braille_drivers braille_help first_serial_device braille_device install_text_tables text_table install_attributes_tables attributes_table speech_libraries_al speech_libraries_bl speech_libraries_cb speech_libraries_es flite_root flite_language flite_lexicon flite_voice speech_libraries_fl speech_libraries_fv speech_libraries_gs mikropuhe_root speech_libraries_mp speechd_root speech_libraries_sd swift_root speech_libraries_sw theta_root speech_libraries_th viavoice_root speech_libraries_vv speech_support_object brltty_item_codes_speech brltty_item_names_speech brltty_external_codes_speech brltty_external_names_speech brltty_internal_codes_speech brltty_internal_names_speech speech_driver_libraries speech_driver_objects speech_drivers speech_help screen_libraries_lx screen_libraries_hd screen_libraries_wn screen_libraries_pb screen_libraries_sc screen_libraries_as cspi_includes cspi_libdirs cspi_libraries brltty_item_codes_screen brltty_item_names_screen brltty_external_codes_screen brltty_external_names_screen brltty_internal_codes_screen brltty_internal_names_screen screen_driver_libraries screen_driver_objects screen_drivers screen_help WRITABLE_DIRECTORY DATA_DIRECTORY LIBRARY_DIRECTORY CONFIGURATION_DIRECTORY install_drivers LIBOBJS LTLIBOBJS' ac_subst_files='' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CXX -CXXFLAGS -CCC -YACC -YFLAGS -CPP -XMKMF' - # Initialize some variables set by options. ac_init_help= @@ -946,48 +340,34 @@ x_libraries=NONE # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' +datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' +infodir='${prefix}/info' +mandir='${prefix}/man' ac_prev= -ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option + eval "$ac_prev=\$ac_option" ac_prev= continue fi - case $ac_option in - *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *) ac_optarg=yes ;; - esac + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; + case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; @@ -1009,45 +389,33 @@ do --config-cache | -C) cache_file=config.cache ;; - -datadir | --datadir | --datadi | --datad) + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) datadir=$ac_optarg ;; - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=\$ac_optarg ;; + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -1074,12 +442,6 @@ do -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; @@ -1104,16 +466,13 @@ do | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) @@ -1178,16 +537,6 @@ do | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; @@ -1240,20 +589,24 @@ do -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=\$ac_optarg ;; + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=no ;; + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. @@ -1284,7 +637,8 @@ Try \`$0 --help' for more information." >&2 expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } - eval $ac_envvar=\$ac_optarg + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) @@ -1304,19 +658,27 @@ if test -n "$ac_prev"; then { (exit 1); exit 1; }; } fi -# Be sure to have absolute directory names. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix do - eval ac_val=\$$ac_var + eval ac_val=$`echo $ac_var` case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; esac - { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' @@ -1343,76 +705,82 @@ test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - { echo "$as_me: error: Working directory cannot be determined" >&2 - { (exit 1); exit 1; }; } -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - { echo "$as_me: error: pwd does not report name of working directory" >&2 - { (exit 1); exit 1; }; } - - # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$0" || + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then + if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } + fi fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 { (exit 1); exit 1; }; } - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CXX_set=${CXX+set} +ac_env_CXX_value=$CXX +ac_cv_env_CXX_set=${CXX+set} +ac_cv_env_CXX_value=$CXX +ac_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_env_CXXFLAGS_value=$CXXFLAGS +ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_cv_env_CXXFLAGS_value=$CXXFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP # # Report the --help message. @@ -1421,7 +789,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures brltty 3.10dev to adapt to many kinds of systems. +\`configure' configures brltty 4.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1441,6 +809,9 @@ Configuration: -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] +_ACEOF + + cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] @@ -1458,30 +829,19 @@ Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/brltty] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] _ACEOF cat <<\_ACEOF -X features: - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR - System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] @@ -1491,15 +851,14 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of brltty 3.10dev:";; + short | recursive ) echo "Configuration of brltty 4.0:";; esac cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-relocatable-install installation using paths relative to the - program directory + --enable-standalone-programs statically linked executables --disable-i18n support for internationalization --disable-icu support for Unicode-based internationalization --disable-iconv support for character encoding conversion @@ -1508,6 +867,7 @@ Optional Features: --disable-java-bindings Java bindings for BrlAPI --disable-python-bindings Python bindings for BrlAPI --disable-tcl-bindings Tcl bindings for BrlAPI + --disable-x support for X11 --disable-preferences-menu the preferences menu --disable-table-selection text/attribute/contraction table selection in preferences menu @@ -1520,10 +880,11 @@ Optional Features: --disable-fm-support support for the soundcard synthesizer --disable-pm-configfile user customization of Papenmeier driver --disable-gpm mouse tracking via GPM - --enable-standalone-programs statically linked executables --disable-usb-support support for the Universal Serial Bus --disable-bluetooth-support support for bluetooth capable devices --disable-speech-support support for speech synthesizers + --enable-relocatable-install installation using paths relative to the + program directory Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -1551,10 +912,8 @@ Optional Packages: --with-tcl-config=PATH the path to the Tcl configuration script (tclConfig.sh) or to the directory containing it - --with-curses=PACKAGE which curses package to use (ncursesw ncurses - curses) - --with-x use the X Window System - --with-gui-toolkit=PACKAGE which gui toolkit package to use (Xaw Xaw3d + --with-curses=PACKAGE which curses package to use (ncursesw ncurses curses) + --with-gui-toolkit=PACKAGE which gui toolkit package to use (Xaw Xaw3d neXtaw XawPlus Xm) --with-libbraille=DIRECTORY where the Libbraille package is installed --with-braille-driver=DRIVER braille driver(s) to build in @@ -1565,11 +924,11 @@ Optional Packages: - bl BrailleLite - bm Baum - bn BrailleNote - - bs BrailleSense - cb CombiBraille - ec EcoBraille - eu EuroBraille - fs FreedomScientific + - hm HIMS - ht HandyTech - il IrisLinux - lb Libbraille @@ -1577,7 +936,9 @@ Optional Packages: - mb MultiBraille - md MDV - mn MiniBraille + - pg Pegasus - pm Papenmeier + - sk Seika - tn TechniBraille - ts TSI - tt TTY @@ -1590,33 +951,92 @@ Optional Packages: default parameters for the braille driver(s) --with-braille-device=DEVICE default braille display device --with-text-table=FILE default text table - - cz Czech (iso-8859-2) - - da Danish (iso-8859-1) - - de German (iso-8859-1) + - auto locale-based autoselection + - ar Arabic (generic) + - as Assamese + - awa Awadhi + - bg Bulgarian + - bh Bihari + - bn Bengali + - bo Tibetan + - bra Braj + - cs Czech + - cy Welsh + - da Danish + - de German + - dra Dravidian + - el Greek + - en English + - en_CA English (Canada) - en_UK English (United Kingdom) - en_US English (United States) - - es Spanish (iso-8859-1) - - fi1 Finnish (iso-8859-1) - - fi2 Finnish (iso-8859-1) + - en-nabcc English (North American Braille + Computer Code) + - eo Esperanto + - es Spanish + - et Estonian + - fi Finnish + - fr French - fr_CA French (Canada) - fr_FR French (France) - - fr-2007 Unified French (iso-8859-1) - - fr-cbifs Code Braille Informatique Français - Standard (iso-8859-1) - - it Italian (iso-8859-1) - - nabcc North American Braille Computer - Code (iso-8859-1) + - fr-2007 French (unified) + - fr-cbifs French (Code Braille Informatique + Français Standard) + - ga Irish + - gd Gaelic + - gon Gondi + - gu Gujarati + - he Hebrew + - hi Hindi + - hr Croatian + - hu Hungarian + - hy Armenian + - is Icelandic + - it Italian + - kha Khasi + - kn Kannada + - kok Konkani + - kru Kurukh + - lt Lituanian + - lv Latvian + - mg Malagasy + - mi Maori + - ml Malayalam + - mni Manipuri + - mr Marathi + - mt Maltese + - mun Mundari + - mwr Marwari + - ne Nepali + - new Newari + - nl Dutch (Netherlands) + - nl_BE Dutch (Belgium) + - nl_NL Dutch (Netherlands) + - no Norwegian (with support for other + languages) - no-generic Norwegian (with support for other languages) - no-oub Norwegian (Offentlig Utvalg for Blindeskrift) - - pl Polish (iso-8859-2) - - pt Portuguese (iso-8859-1) - - ru Russian (koi8-r) - - se Swedish (1996 standard) - - se-old Swedish (1989 standard) - - vni Vietnamese (iso-8859-1) + - nwc Old Newari + - or Oriya + - pa Panjabi + - pi Pali + - pl Polish + - pt Portuguese + - ro Romanian + - ru Russian + - sa Sanskrit + - sat Santali + - sd Sindhi + - sk Slovak + - sv Swedish + - sw Swahili + - ta Tamil + - te Telugu + - tr Turkish + - vi Vietnamese --with-attributes-table=FILE default attributes table - attributes - attrib @@ -1661,104 +1081,131 @@ Some influential environment variables: CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if - you have headers in a nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory CXX C++ compiler command CXXFLAGS C++ compiler flags - YACC The `Yet Another C Compiler' implementation to use. Defaults to - the first program found out of: `bison -y', `byacc', `yacc'. - YFLAGS The list of arguments that will be passed by default to $YACC. - This script will default YFLAGS to the empty string to avoid a - default value of `-d' given by some make applications. CPP C preprocessor - XMKMF Path to xmkmf, Makefile generator for X Window System Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF -ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. + ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || continue + test -d $ac_dir || continue ac_builddir=. -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) +if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi case $srcdir in - .) # We are building in place. + .) # No --srcdir option. We are building in place. ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } + fi + cd $ac_popdir done fi -test -n "$ac_init_help" && exit $ac_status +test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -brltty configure 3.10dev -generated by GNU Autoconf 2.61 +brltty configure 4.0 +generated by GNU Autoconf 2.59 -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF - exit + exit 0 fi -cat >config.log <<_ACEOF +exec 5>config.log +cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by brltty $as_me 3.10dev, which was -generated by GNU Autoconf 2.61. Invocation command line was +It was created by brltty $as_me 4.0, which was +generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ _ACEOF -exec 5>>config.log { cat <<_ASUNAME ## --------- ## @@ -1777,7 +1224,7 @@ uname -v = `(uname -v) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` @@ -1791,7 +1238,6 @@ do test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done -IFS=$as_save_IFS } >&5 @@ -1813,6 +1259,7 @@ _ACEOF ac_configure_args= ac_configure_args0= ac_configure_args1= +ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do @@ -1823,7 +1270,7 @@ do -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; - *\'*) + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in @@ -1845,7 +1292,9 @@ do -* ) ac_must_keep_next=true ;; esac fi - ac_configure_args="$ac_configure_args '$ac_arg'" + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " ;; esac done @@ -1856,8 +1305,8 @@ $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_ # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { @@ -1870,34 +1319,20 @@ trap 'exit_status=$? _ASBOX echo # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; - esac ;; - esac - done +{ (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; - esac | - sort -) + esac; +} echo cat <<\_ASBOX @@ -1908,28 +1343,22 @@ _ASBOX echo for ac_var in $ac_subst_vars do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - echo "$ac_var='\''$ac_val'\''" + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX -## ------------------- ## -## File substitutions. ## -## ------------------- ## +## ------------- ## +## Output files. ## +## ------------- ## _ASBOX echo for ac_var in $ac_subst_files do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - echo "$ac_var='\''$ac_val'\''" + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo fi @@ -1941,24 +1370,26 @@ _ASBOX ## ----------- ## _ASBOX echo - cat confdefs.h + sed "/^$/d" confdefs.h | sort echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status -' 0 + ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h # Predefined preprocessor variables. @@ -1989,17 +1420,14 @@ _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. -if test -n "$CONFIG_SITE"; then - set x "$CONFIG_SITE" -elif test "x$prefix" != xNONE; then - set x "$prefix/share/config.site" "$prefix/etc/config.site" -else - set x "$ac_default_prefix/share/config.site" \ - "$ac_default_prefix/etc/config.site" +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi fi -shift -for ac_site_file -do +for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} @@ -2015,8 +1443,8 @@ if test -r "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; esac fi else @@ -2028,11 +1456,12 @@ fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 @@ -2057,7 +1486,8 @@ echo "$as_me: current value: $ac_new_val" >&2;} # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -2074,6 +1504,12 @@ echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start ov { (exit 1); exit 1; }; } fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + @@ -2098,11 +1534,6 @@ fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -2125,7 +1556,7 @@ api_major=0 api_minor=5 -api_revision=1 +api_revision=3 api_version=${api_major}.${api_minor} @@ -2163,8 +1594,6 @@ _ACEOF PACKAGE_REVISION="`"${srcdir}/revision" "${srcdir}"`" if test -z "${PACKAGE_REVISION}" then - { echo "$as_me:$LINENO: WARNING: package revision not known" >&5 -echo "$as_me: WARNING: package revision not known" >&2;} PACKAGE_REVISION="" fi @@ -2176,160 +1605,110 @@ _ACEOF package_date="`date "+%Y/%m/%d"`" -ac_config_headers="$ac_config_headers config.h" + ac_config_headers="$ac_config_headers config.h" -ac_config_headers="$ac_config_headers Programs/brlapi.h" + ac_config_headers="$ac_config_headers Programs/brlapi.h" ac_aux_dir= -for ac_dir in acdir "$srcdir"/acdir; do - if test -f "$ac_dir/install-sh"; then +for ac_dir in acdir $srcdir/acdir; do + if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break - elif test -f "$ac_dir/install.sh"; then + elif test -f $ac_dir/install.sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break - elif test -f "$ac_dir/shtool"; then + elif test -f $ac_dir/shtool; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in acdir \"$srcdir\"/acdir" >&5 -echo "$as_me: error: cannot find install-sh or install.sh in acdir \"$srcdir\"/acdir" >&2;} + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in acdir $srcdir/acdir" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in acdir $srcdir/acdir" >&2;} { (exit 1); exit 1; }; } fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 -echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} { (exit 1); exit 1; }; } -{ echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi -{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 -echo "$as_me: error: invalid value of canonical build" >&2;} - { (exit 1); exit 1; }; };; -esac +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6; } +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} { (exit 1); exit 1; }; } -fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 -echo "$as_me: error: invalid value of canonical host" >&2;} - { (exit 1); exit 1; }; };; -esac +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -{ echo "$as_me:$LINENO: checking target system type" >&5 -echo $ECHO_N "checking target system type... $ECHO_C" >&6; } +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking target system type" >&5 +echo $ECHO_N "checking target system type... $ECHO_C" >&6 if test "${ac_cv_target+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test "x$target_alias" = x; then - ac_cv_target=$ac_cv_host -else - ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} + ac_cv_target_alias=$target_alias +test "x$ac_cv_target_alias" = "x" && + ac_cv_target_alias=$ac_cv_host_alias +ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} { (exit 1); exit 1; }; } -fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5 -echo "${ECHO_T}$ac_cv_target" >&6; } -case $ac_cv_target in -*-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 -echo "$as_me: error: invalid value of canonical target" >&2;} - { (exit 1); exit 1; }; };; -esac +echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +echo "${ECHO_T}$ac_cv_target" >&6 target=$ac_cv_target -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_target -shift -target_cpu=$1 -target_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -target_os=$* -IFS=$ac_save_IFS -case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac +target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # The aliases save the names the user supplied, while $host etc. @@ -2341,14 +1720,14 @@ test -n "$target_alias" && brltty_default_execute_root="/${PACKAGE_NAME}-${PACKAGE_VERSION}" -# Check whether --with-execute-root was given. +# Check whether --with-execute-root or --without-execute-root was given. if test "${with_execute_root+set}" = set; then - withval=$with_execute_root; execute_root="${withval}" + withval="$with_execute_root" + execute_root="${withval}" else execute_root="" -fi - +fi; if test "${execute_root}" = "no" then execute_root="" @@ -2362,14 +1741,14 @@ brltty_summary_lines="${brltty_summary_lines} brltty_default_install_root="/tmp/${PACKAGE_NAME}-${PACKAGE_VERSION}" -# Check whether --with-install-root was given. +# Check whether --with-install-root or --without-install-root was given. if test "${with_install_root+set}" = set; then - withval=$with_install_root; install_root="${withval}" + withval="$with_install_root" + install_root="${withval}" else install_root="${execute_root}" -fi - +fi; if test "${install_root}" = "no" then install_root="${execute_root}" @@ -2401,6 +1780,16 @@ then fi fi if test "${prefix}" = "NONE" +then + if test -z "${execute_root}" + then + if test `expr "${datarootdir} " : '\${prefix}/[^/]*$'` -gt 0 + then + datarootdir="`echo ${datarootdir} | sed -e 's%/%/usr/%'`" + fi + fi +fi + if test "${prefix}" = "NONE" then if test -z "${execute_root}" then @@ -2410,6 +1799,16 @@ then fi fi fi + if test "${prefix}" = "NONE" +then + if test -z "${execute_root}" + then + if test `expr "${localstatedir} " : '\${prefix}/[^/]*$'` -gt 0 + then + localstatedir="`echo ${localstatedir} | sed -e 's%/%/%'`" + fi + fi +fi brltty_summary_lines="${brltty_summary_lines} libdir: ${libdir}" @@ -2417,13 +1816,13 @@ brltty_summary_lines="${brltty_summary_lines} sysconfdir: ${sysconfdir}" -# Check whether --with-program-directory was given. +# Check whether --with-program-directory or --without-program-directory was given. if test "${with_program_directory+set}" = set; then - withval=$with_program_directory; program_directory="${withval}" + withval="$with_program_directory" + program_directory="${withval}" else program_directory="yes" -fi - +fi; if test "${program_directory}" = "no" then { { echo "$as_me:$LINENO: error: program-directory not specified" >&5 @@ -2439,13 +1838,13 @@ brltty_summary_lines="${brltty_summary_lines} program-directory: ${program_directory}" -# Check whether --with-library-directory was given. +# Check whether --with-library-directory or --without-library-directory was given. if test "${with_library_directory+set}" = set; then - withval=$with_library_directory; library_directory="${withval}" + withval="$with_library_directory" + library_directory="${withval}" else library_directory="yes" -fi - +fi; if test "${library_directory}" = "no" then { { echo "$as_me:$LINENO: error: library-directory not specified" >&5 @@ -2461,14 +1860,14 @@ brltty_summary_lines="${brltty_summary_lines} library-directory: ${library_directory}" -# Check whether --with-writable-directory was given. +# Check whether --with-writable-directory or --without-writable-directory was given. if test "${with_writable_directory+set}" = set; then - withval=$with_writable_directory; writable_directory="${withval}" + withval="$with_writable_directory" + writable_directory="${withval}" else writable_directory="yes" -fi - +fi; if test "${writable_directory}" = "no" then writable_directory="" @@ -2481,13 +1880,13 @@ brltty_summary_lines="${brltty_summary_lines} writable-directory: ${writable_directory}" -# Check whether --with-data-directory was given. +# Check whether --with-data-directory or --without-data-directory was given. if test "${with_data_directory+set}" = set; then - withval=$with_data_directory; data_directory="${withval}" + withval="$with_data_directory" + data_directory="${withval}" else data_directory="yes" -fi - +fi; if test "${data_directory}" = "no" then { { echo "$as_me:$LINENO: error: data-directory not specified" >&5 @@ -2503,13 +1902,13 @@ brltty_summary_lines="${brltty_summary_lines} data-directory: ${data_directory}" -# Check whether --with-manpage-directory was given. +# Check whether --with-manpage-directory or --without-manpage-directory was given. if test "${with_manpage_directory+set}" = set; then - withval=$with_manpage_directory; manpage_directory="${withval}" + withval="$with_manpage_directory" + manpage_directory="${withval}" else manpage_directory="yes" -fi - +fi; if test "${manpage_directory}" = "no" then { { echo "$as_me:$LINENO: error: manpage-directory not specified" >&5 @@ -2525,13 +1924,13 @@ brltty_summary_lines="${brltty_summary_lines} manpage-directory: ${manpage_directory}" -# Check whether --with-include-directory was given. +# Check whether --with-include-directory or --without-include-directory was given. if test "${with_include_directory+set}" = set; then - withval=$with_include_directory; include_directory="${withval}" + withval="$with_include_directory" + include_directory="${withval}" else include_directory="yes" -fi - +fi; if test "${include_directory}" = "no" then { { echo "$as_me:$LINENO: error: include-directory not specified" >&5 @@ -2546,56 +1945,128 @@ fi brltty_summary_lines="${brltty_summary_lines} include-directory: ${include_directory}" -original_prefix="${prefix}" -test "${prefix}" = "NONE" && prefix="" -original_exec_prefix="${exec_prefix}" -test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" -eval 'brltty_reference_directory="'"${execute_root}${program_directory}"'"' -# Check whether --enable-relocatable-install was given. -if test "${enable_relocatable_install+set}" = set; then - enableval=$enable_relocatable_install; +brltty_default_compiler_prefix="${host_os}-" + +# Check whether --with-compiler-prefix or --without-compiler-prefix was given. +if test "${with_compiler_prefix+set}" = set; then + withval="$with_compiler_prefix" + compiler_prefix="${withval}" else - enableval="no" -fi + compiler_prefix="" +fi; +if test "${compiler_prefix}" = "no" +then + compiler_prefix="" +elif test "${compiler_prefix}" = "yes" +then + compiler_prefix="${brltty_default_compiler_prefix}" +fi -brltty_enabled_relocatable_install="${enableval}" brltty_summary_lines="${brltty_summary_lines} - relocatable-install: ${brltty_enabled_relocatable_install}" + compiler-prefix: ${compiler_prefix}" -if test "${enableval}" = "no" +brltty_default_init_path=/sbin/init_real + +# Check whether --with-init-path or --without-init-path was given. +if test "${with_init_path+set}" = set; then + withval="$with_init_path" + init_path="${withval}" +else + init_path="" + +fi; +if test "${init_path}" = "no" then - : + init_path="" +elif test "${init_path}" = "yes" +then + init_path="${brltty_default_init_path}" +fi +if test -n "${init_path}" +then + +cat >>confdefs.h <<_ACEOF +#define INIT_PATH "${init_path}" +_ACEOF + +fi +brltty_summary_lines="${brltty_summary_lines} + init-path: ${init_path}" + +brltty_default_stderr_path=/tmp/brltty.log + +# Check whether --with-stderr-path or --without-stderr-path was given. +if test "${with_stderr_path+set}" = set; then + withval="$with_stderr_path" + stderr_path="${withval}" else - if test "${enableval}" = "yes" - then - brltty_ok=true - else - brltty_ok=false - fi + stderr_path="" - if "${brltty_ok}" - then - : - else - { { echo "$as_me:$LINENO: error: invalid selection: --enable-relocatable-install=${enableval}" >&5 -echo "$as_me: error: invalid selection: --enable-relocatable-install=${enableval}" >&2;} - { (exit 1); exit 1; }; } - fi +fi; +if test "${stderr_path}" = "no" +then + stderr_path="" +elif test "${stderr_path}" = "yes" +then + stderr_path="${brltty_default_stderr_path}" fi -if test -n "${writable_directory}" +if test -n "${stderr_path}" then - for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_AWK+set}" = set; then + +cat >>confdefs.h <<_ACEOF +#define STDERR_PATH "${stderr_path}" +_ACEOF + +fi +brltty_summary_lines="${brltty_summary_lines} + stderr-path: ${stderr_path}" + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -2603,218 +2074,74 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AWK="$ac_prog" + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - test -n "$AWK" && break -done - -eval 'WRITABLE_DIRECTORY="'"${execute_root}${writable_directory}"'"' - -if test "${brltty_enabled_relocatable_install}" = "yes" -then - -eval 'brltty_path="`"${AWK}" -v path="'"${WRITABLE_DIRECTORY}"'" -v reference="'"${brltty_reference_directory}"'" -f "${srcdir}/relpath.awk"`"' +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 else - brltty_path="${WRITABLE_DIRECTORY}" + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi -eval 'brltty_expanded="'"${brltty_path}"'"' - -cat >>confdefs.h <<_ACEOF -#define WRITABLE_DIRECTORY "${brltty_expanded}" -_ACEOF fi -eval 'DATA_DIRECTORY="'"${execute_root}${data_directory}"'"' - -if test "${brltty_enabled_relocatable_install}" = "yes" -then - -eval 'brltty_path="`"${AWK}" -v path="'"${DATA_DIRECTORY}"'" -v reference="'"${brltty_reference_directory}"'" -f "${srcdir}/relpath.awk"`"' -else - brltty_path="${DATA_DIRECTORY}" -fi -eval 'brltty_expanded="'"${brltty_path}"'"' - -cat >>confdefs.h <<_ACEOF -#define DATA_DIRECTORY "${brltty_expanded}" -_ACEOF - -eval 'LIBRARY_DIRECTORY="'"${execute_root}${library_directory}"'"' - -if test "${brltty_enabled_relocatable_install}" = "yes" -then - -eval 'brltty_path="`"${AWK}" -v path="'"${LIBRARY_DIRECTORY}"'" -v reference="'"${brltty_reference_directory}"'" -f "${srcdir}/relpath.awk"`"' -else - brltty_path="${LIBRARY_DIRECTORY}" -fi -eval 'brltty_expanded="'"${brltty_path}"'"' - -cat >>confdefs.h <<_ACEOF -#define LIBRARY_DIRECTORY "${brltty_expanded}" -_ACEOF - -eval 'CONFIGURATION_DIRECTORY="'"${sysconfdir}"'"' - -if test "${brltty_enabled_relocatable_install}" = "yes" -then - -eval 'brltty_path="`"${AWK}" -v path="'"${CONFIGURATION_DIRECTORY}"'" -v reference="'"${brltty_reference_directory}"'" -f "${srcdir}/relpath.awk"`"' -else - brltty_path="${CONFIGURATION_DIRECTORY}" -fi -eval 'brltty_expanded="'"${brltty_path}"'"' - -cat >>confdefs.h <<_ACEOF -#define CONFIGURATION_DIRECTORY "${brltty_expanded}" -_ACEOF - -eval 'brltty_expanded="'""${CONFIGURATION_DIRECTORY}""'"' - -cat >>confdefs.h <<_ACEOF -#define BRLAPI_ETCDIR "${brltty_expanded}" -_ACEOF - -prefix="${original_prefix}" -exec_prefix="${original_exec_prefix}" - -brltty_default_compiler_prefix="${host_os}-" - -# Check whether --with-compiler-prefix was given. -if test "${with_compiler_prefix+set}" = set; then - withval=$with_compiler_prefix; compiler_prefix="${withval}" +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 else - compiler_prefix="" - -fi - -if test "${compiler_prefix}" = "no" -then - compiler_prefix="" -elif test "${compiler_prefix}" = "yes" -then - compiler_prefix="${brltty_default_compiler_prefix}" -fi - -brltty_summary_lines="${brltty_summary_lines} - compiler-prefix: ${compiler_prefix}" - -brltty_default_init_path=/sbin/init_real - -# Check whether --with-init-path was given. -if test "${with_init_path+set}" = set; then - withval=$with_init_path; init_path="${withval}" + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else - init_path="" - -fi +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done -if test "${init_path}" = "no" -then - init_path="" -elif test "${init_path}" = "yes" -then - init_path="${brltty_default_init_path}" fi -if test -n "${init_path}" -then - -cat >>confdefs.h <<_ACEOF -#define INIT_PATH "${init_path}" -_ACEOF - fi -brltty_summary_lines="${brltty_summary_lines} - init-path: ${init_path}" - -brltty_default_stderr_path=/tmp/brltty.log - -# Check whether --with-stderr-path was given. -if test "${with_stderr_path+set}" = set; then - withval=$with_stderr_path; stderr_path="${withval}" +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 else - stderr_path="" - -fi - -if test "${stderr_path}" = "no" -then - stderr_path="" -elif test "${stderr_path}" = "yes" -then - stderr_path="${brltty_default_stderr_path}" + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi -if test -n "${stderr_path}" -then - -cat >>confdefs.h <<_ACEOF -#define STDERR_PATH "${stderr_path}" -_ACEOF - -fi -brltty_summary_lines="${brltty_summary_lines} - stderr-path: ${stderr_path}" -{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } -set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - SET_MAKE= + CC=$ac_ct_CC else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" + CC="$ac_cv_prog_CC" fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2827,34 +2154,32 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2867,91 +2192,36 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi + CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2965,7 +2235,7 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue @@ -2976,7 +2246,6 @@ do fi done done -IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. @@ -2994,23 +2263,22 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe + for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3023,38 +2291,36 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC - for ac_prog in cl.exe + for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3067,45 +2333,29 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "$ac_ct_CC" && break done - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi + CC=$ac_ct_CC fi fi @@ -3118,35 +2368,21 @@ See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C compiler version" >&5 +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } @@ -3171,77 +2407,47 @@ ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -# -# List of possible output files, starting from the most likely. -# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) -# only as a last resort. b.out is created by i960 compilers. -ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' -# -# The IRIX 6 linker writes into existing files which may not be -# executable, retaining their permissions. Remove them first so a -# subsequent execution test works. -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { (ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link_default") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext break;; * ) break;; esac done -test "$ac_cv_exeext" = no && ac_cv_exeext= - else - ac_file='' -fi - -{ echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6; } -if test -z "$ac_file"; then echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 @@ -3253,21 +2459,19 @@ See \`config.log' for more details." >&2;} fi ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 -# Check that the compiler produces executables we can run. If not, either +# Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3286,27 +2490,22 @@ See \`config.log' for more details." >&2;} fi fi fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -# Check that the compiler produces executables we can run. If not, either +# Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } -{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6; } - -{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then @@ -3317,8 +2516,9 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext break;; * ) break;; esac @@ -3332,14 +2532,14 @@ See \`config.log' for more details." >&2;} fi rm -f conftest$ac_cv_exeext -{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3359,20 +2559,14 @@ main () } _ACEOF rm -f conftest.o conftest.obj -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac @@ -3390,12 +2584,12 @@ fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3418,49 +2612,50 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_compiler_gnu=no +ac_compiler_gnu=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -3476,118 +2671,38 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - CFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_prog_cc_g=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then @@ -3603,12 +2718,12 @@ else CFLAGS= fi fi -{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 -echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_prog_cc_c89=no + ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -3642,17 +2757,12 @@ static char *f (char * (*g) (char **, int), char **p, ...) /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get + as 'x'. The following induces an error, until -std1 is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ + that's true only with -std1. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; @@ -3667,57 +2777,205 @@ return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; return 0; } _ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_c89=$ac_arg + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi - -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break +rm -f conftest.err conftest.$ac_objext done -rm -f conftest.$ac_ext +rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6; } ;; - xno) - { echo "$as_me:$LINENO: result: unsupported" >&5 -echo "${ECHO_T}unsupported" >&6; } ;; + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; *) - CC="$CC $ac_cv_prog_cc_c89" - { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; esac +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -3729,12 +2987,13 @@ then if test "${GCC}" = "yes" then -{ echo "$as_me:$LINENO: checking for library containing __cxa_pure_virtual" >&5 -echo $ECHO_N "checking for library containing __cxa_pure_virtual... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for library containing __cxa_pure_virtual" >&5 +echo $ECHO_N "checking for library containing __cxa_pure_virtual... $ECHO_C" >&6 if test "${ac_cv_search___cxa_pure_virtual+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS +ac_cv_search___cxa_pure_virtual=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -3742,78 +3001,120 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char __cxa_pure_virtual (); int main () { -return __cxa_pure_virtual (); +__cxa_pure_virtual (); ; return 0; } _ACEOF -for ac_lib in '' supc++; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_search___cxa_pure_virtual=$ac_res + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search___cxa_pure_virtual="none required" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search___cxa_pure_virtual" = no; then + for ac_lib in supc++; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext - if test "${ac_cv_search___cxa_pure_virtual+set}" = set; then - break -fi -done -if test "${ac_cv_search___cxa_pure_virtual+set}" = set; then - : +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char __cxa_pure_virtual (); +int +main () +{ +__cxa_pure_virtual (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search___cxa_pure_virtual="-l$ac_lib" +break else - ac_cv_search___cxa_pure_virtual=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done fi -rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_search___cxa_pure_virtual" >&5 -echo "${ECHO_T}$ac_cv_search___cxa_pure_virtual" >&6; } -ac_res=$ac_cv_search___cxa_pure_virtual -if test "$ac_res" != no; then - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" +echo "$as_me:$LINENO: result: $ac_cv_search___cxa_pure_virtual" >&5 +echo "${ECHO_T}$ac_cv_search___cxa_pure_virtual" >&6 +if test "$ac_cv_search___cxa_pure_virtual" != no; then + test "$ac_cv_search___cxa_pure_virtual" = "none required" || LIBS="$ac_cv_search___cxa_pure_virtual $LIBS" fi - { echo "$as_me:$LINENO: checking if the C compiler can compile C++" >&5 -echo $ECHO_N "checking if the C compiler can compile C++... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking if the C compiler can compile C++" >&5 +echo $ECHO_N "checking if the C compiler can compile C++... $ECHO_C" >&6 if test "${brltty_cv_prog_cc_cxx+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3835,56 +3136,55 @@ class c {}; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then brltty_cv_prog_cc_cxx="yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - brltty_cv_prog_cc_cxx="no" +brltty_cv_prog_cc_cxx="no" fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext="${brltty_save_ac_ext}" fi -{ echo "$as_me:$LINENO: result: $brltty_cv_prog_cc_cxx" >&5 -echo "${ECHO_T}$brltty_cv_prog_cc_cxx" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_prog_cc_cxx" >&5 +echo "${ECHO_T}$brltty_cv_prog_cc_cxx" >&6 test "${brltty_cv_prog_cc_cxx}" = "yes" && CXX="${CC}" fi fi -ac_ext=cpp +ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else - if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3897,38 +3197,36 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - { echo "$as_me:$LINENO: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6; } + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -3941,85 +3239,55 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then - { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 -echo "${ECHO_T}$ac_ct_CXX" >&6; } + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "$ac_ct_CXX" && break done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi + CXX=$ac_ct_CXX fi - fi -fi + # Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C++ compiler version" >&5 +echo "$as_me:$LINENO:" \ + "checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4042,49 +3310,50 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_compiler_gnu=no +ac_compiler_gnu=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi -{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS -{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 -echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } +CXXFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4100,133 +3369,159 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - CXXFLAGS="" - cat >conftest.$ac_ext <<_ACEOF +ac_cv_prog_cxx_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - +$ac_declaration +#include int main () { - +exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - +$ac_declaration int main () { - +exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cxx_g=yes + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag -fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -4254,8 +3549,8 @@ for ac_prog in ld do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4268,27 +3563,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LD="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi LD=$ac_cv_prog_LD if test -n "$LD"; then - { echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6; } + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "$LD" && break done test -n "$LD" || LD="ld" @@ -4296,8 +3589,8 @@ test -n "$LD" || LD="ld" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4310,34 +3603,32 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - { echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6; } + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4350,41 +3641,27 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi + RANLIB=$ac_ct_RANLIB else RANLIB="$ac_cv_prog_RANLIB" fi @@ -4393,8 +3670,8 @@ for ac_prog in 'bison -y' byacc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_YACC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4407,27 +3684,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_YACC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi YACC=$ac_cv_prog_YACC if test -n "$YACC"; then - { echo "$as_me:$LINENO: result: $YACC" >&5 -echo "${ECHO_T}$YACC" >&6; } + echo "$as_me:$LINENO: result: $YACC" >&5 +echo "${ECHO_T}$YACC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "$YACC" && break done test -n "$YACC" || YACC="yacc" @@ -4436,8 +3711,8 @@ for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4450,41 +3725,170 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6; } + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "$AWK" && break done -{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 -echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + + +echo "$as_me:$LINENO: checking for linkage editor program creation flags" >&5 +echo $ECHO_N "checking for linkage editor program creation flags... $ECHO_C" >&6 +if test "${brltty_cv_prog_ld_flags+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case "${host_os}" +in + linux*|gnu*|openbsd*|freebsd*|kfreebsd*|netbsd*|*qnx*) + brltty_cv_prog_ld_flags="-export-dynamic" + ;; + solaris*) + brltty_cv_prog_ld_flags="" + ;; + hpux*) + brltty_cv_prog_ld_flags="-E +s" + ;; + osf*) + brltty_cv_prog_ld_flags="" + ;; + cygwin*|mingw*) + brltty_cv_prog_ld_flags="-export-dynamic --enable-auto-import" + ;; + msdos*) + brltty_cv_prog_ld_flags="" + ;; + darwin*) + brltty_cv_prog_ld_flags="" + ;; + *) + { { echo "$as_me:$LINENO: error: linkage editor program creation flags not configured for ${host_os}" >&5 +echo "$as_me: error: linkage editor program creation flags not configured for ${host_os}" >&2;} + { (exit 1); exit 1; }; } + ;; +esac +fi +echo "$as_me:$LINENO: result: $brltty_cv_prog_ld_flags" >&5 +echo "${ECHO_T}$brltty_cv_prog_ld_flags" >&6 +brltty_link_flags="${brltty_cv_prog_ld_flags}" + +echo "$as_me:$LINENO: checking for static linkage flag" >&5 +echo $ECHO_N "checking for static linkage flag... $ECHO_C" >&6 +if test "${brltty_cv_prog_ld_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "${GCC}" = "yes" +then + brltty_cv_prog_ld_static="-static" else - { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 -echo "${ECHO_T}no, using $LN_S" >&6; } + case "${host_os}" + in + linux*|gnu*|openbsd*|freebsd*|kfreebsd*|*qnx*|cygwin*|mingw*) + brltty_cv_prog_ld_static="-static" + ;; + netbsd*) + brltty_cv_prog_ld_static="-Bstatic" + ;; + solaris*) + brltty_cv_prog_ld_static="-dn" + ;; + hpux*) + brltty_cv_prog_ld_static="-Bstatic" + ;; + osf*) + brltty_cv_prog_ld_static="-non_shared" + ;; + *) + { { echo "$as_me:$LINENO: error: static linkage not supported by ${host_os}" >&5 +echo "$as_me: error: static linkage not supported by ${host_os}" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + brltty_cv_prog_ld_static="`echo "${brltty_cv_prog_ld_static}" | sed -e ' +/^$/d +s/^ */-Wl / +s/ *$// +s/ */,/g +'`" fi +fi +echo "$as_me:$LINENO: result: $brltty_cv_prog_ld_static" >&5 +echo "${ECHO_T}$brltty_cv_prog_ld_static" >&6 +brltty_static_flag="${brltty_cv_prog_ld_static}" + +pkgconfig_flags_libs="--libs" +# Check whether --enable-standalone-programs or --disable-standalone-programs was given. +if test "${enable_standalone_programs+set}" = set; then + enableval="$enable_standalone_programs" +else + enableval="no" +fi; + +brltty_enabled_standalone_programs="${enableval}" +brltty_summary_lines="${brltty_summary_lines} + standalone-programs: ${brltty_enabled_standalone_programs}" + +if test "${enableval}" = "no" +then + +cat >>confdefs.h <<\_ACEOF +#define ENABLE_SHARED_OBJECTS 1 +_ACEOF + + +else + if test "${enableval}" = "yes" + then + brltty_ok=true + else + brltty_ok=false + fi + + if "${brltty_ok}" + then + brltty_standalone_programs="yes" + pkgconfig_flags_libs="${pkgconfig_flags_libs} --static" + LDFLAGS="${LDFLAGS} ${brltty_static_flag}" + + else + { { echo "$as_me:$LINENO: error: invalid selection: --enable-standalone-programs=${enableval}" >&5 +echo "$as_me: error: invalid selection: --enable-standalone-programs=${enableval}" >&2;} + { (exit 1); exit 1; }; } + fi +fi +LDFLAGS="${LDFLAGS} `echo "${brltty_link_flags}" | sed -e ' +/^$/d +s/^ */-Wl / +s/ *$// +s/ */,/g +'`" # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or @@ -4499,8 +3903,8 @@ fi # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. -{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -4522,7 +3926,7 @@ case $as_dir/ in # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. @@ -4541,22 +3945,21 @@ case $as_dir/ in ;; esac done -IFS=$as_save_IFS fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is - # removed, or if the value is a relative name. + # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi -{ echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6; } +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -4573,8 +3976,8 @@ fi # Extract the first word of "doxygen", so it can be a program name with args. set dummy doxygen; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_DOXYGEN+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4589,28 +3992,27 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_DOXYGEN="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS ;; esac fi DOXYGEN=$ac_cv_path_DOXYGEN + if test -n "$DOXYGEN"; then - { echo "$as_me:$LINENO: result: $DOXYGEN" >&5 -echo "${ECHO_T}$DOXYGEN" >&6; } + echo "$as_me:$LINENO: result: $DOXYGEN" >&5 +echo "${ECHO_T}$DOXYGEN" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "${DOXYGEN}" && can_make_BrlAPIref=yes || can_make_BrlAPIref=no @@ -4625,8 +4027,8 @@ in esac -{ echo "$as_me:$LINENO: checking for make relocatable object command" >&5 -echo $ECHO_N "checking for make relocatable object command... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for make relocatable object command" >&5 +echo $ECHO_N "checking for make relocatable object command... $ECHO_C" >&6 if test "${brltty_cv_prog_mkobj+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4637,13 +4039,13 @@ in ;; esac fi -{ echo "$as_me:$LINENO: result: $brltty_cv_prog_mkobj" >&5 -echo "${ECHO_T}$brltty_cv_prog_mkobj" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_prog_mkobj" >&5 +echo "${ECHO_T}$brltty_cv_prog_mkobj" >&6 MKOBJ="${brltty_cv_prog_mkobj}" -{ echo "$as_me:$LINENO: checking for loadable module creation command" >&5 -echo $ECHO_N "checking for loadable module creation command... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for loadable module creation command" >&5 +echo $ECHO_N "checking for loadable module creation command... $ECHO_C" >&6 if test "${brltty_cv_prog_mkmod+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4689,13 +4091,13 @@ else brltty_cv_prog_mkmod="\$(LD) ${brltty_mkmod_ld_make} ${brltty_mkmod_ld_options} -o" fi fi -{ echo "$as_me:$LINENO: result: $brltty_cv_prog_mkmod" >&5 -echo "${ECHO_T}$brltty_cv_prog_mkmod" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_prog_mkmod" >&5 +echo "${ECHO_T}$brltty_cv_prog_mkmod" >&6 MKMOD="${brltty_cv_prog_mkmod}" -{ echo "$as_me:$LINENO: checking for dynamic library creation command" >&5 -echo $ECHO_N "checking for dynamic library creation command... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for dynamic library creation command" >&5 +echo $ECHO_N "checking for dynamic library creation command... $ECHO_C" >&6 if test "${brltty_cv_prog_mklib+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4749,13 +4151,13 @@ else brltty_cv_prog_mklib="\$(LD) ${brltty_mklib_ld_make} ${brltty_mklib_ld_options+${brltty_mklib_ld_options} } -o" fi fi -{ echo "$as_me:$LINENO: result: $brltty_cv_prog_mklib" >&5 -echo "${ECHO_T}$brltty_cv_prog_mklib" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_prog_mklib" >&5 +echo "${ECHO_T}$brltty_cv_prog_mklib" >&6 MKLIB="${brltty_cv_prog_mklib}" -{ echo "$as_me:$LINENO: checking for configure shared object directory command" >&5 -echo $ECHO_N "checking for configure shared object directory command... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for configure shared object directory command" >&5 +echo $ECHO_N "checking for configure shared object directory command... $ECHO_C" >&6 if test "${brltty_cv_prog_conflibdir+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4769,16 +4171,16 @@ in ;; esac fi -{ echo "$as_me:$LINENO: result: $brltty_cv_prog_conflibdir" >&5 -echo "${ECHO_T}$brltty_cv_prog_conflibdir" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_prog_conflibdir" >&5 +echo "${ECHO_T}$brltty_cv_prog_conflibdir" >&6 CONFLIBDIR="${brltty_cv_prog_conflibdir}" case "${host_os}" in mingw*) - { echo "$as_me:$LINENO: checking if DLL ws2_32 can be loaded" >&5 -echo $ECHO_N "checking if DLL ws2_32 can be loaded... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking if DLL ws2_32 can be loaded" >&5 +echo $ECHO_N "checking if DLL ws2_32 can be loaded... $ECHO_C" >&6 if test "${brltty_cv_dll_ws2_32+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4803,22 +4205,13 @@ int main () { _ACEOF rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4831,18 +4224,16 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) brltty_cv_dll_ws2_32=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $brltty_cv_dll_ws2_32" >&5 -echo "${ECHO_T}$brltty_cv_dll_ws2_32" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_dll_ws2_32" >&5 +echo "${ECHO_T}$brltty_cv_dll_ws2_32" >&6 if test "${brltty_cv_dll_ws2_32}" = "yes" then -{ echo "$as_me:$LINENO: checking for main in -lws2_32" >&5 -echo $ECHO_N "checking for main in -lws2_32... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for main in -lws2_32" >&5 +echo $ECHO_N "checking for main in -lws2_32... $ECHO_C" >&6 if test "${ac_cv_lib_ws2_32_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4859,43 +4250,46 @@ cat >>conftest.$ac_ext <<_ACEOF int main () { -return main (); +main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_ws2_32_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_ws2_32_main=no +ac_cv_lib_ws2_32_main=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_ws2_32_main" >&5 -echo "${ECHO_T}$ac_cv_lib_ws2_32_main" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_ws2_32_main" >&5 +echo "${ECHO_T}$ac_cv_lib_ws2_32_main" >&6 if test $ac_cv_lib_ws2_32_main = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBWS2_32 1 @@ -4911,8 +4305,8 @@ else : fi - { echo "$as_me:$LINENO: checking if DLL gdi32 can be loaded" >&5 -echo $ECHO_N "checking if DLL gdi32 can be loaded... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking if DLL gdi32 can be loaded" >&5 +echo $ECHO_N "checking if DLL gdi32 can be loaded... $ECHO_C" >&6 if test "${brltty_cv_dll_gdi32+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4937,22 +4331,13 @@ int main () { _ACEOF rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4965,18 +4350,16 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) brltty_cv_dll_gdi32=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $brltty_cv_dll_gdi32" >&5 -echo "${ECHO_T}$brltty_cv_dll_gdi32" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_dll_gdi32" >&5 +echo "${ECHO_T}$brltty_cv_dll_gdi32" >&6 if test "${brltty_cv_dll_gdi32}" = "yes" then -{ echo "$as_me:$LINENO: checking for main in -lgdi32" >&5 -echo $ECHO_N "checking for main in -lgdi32... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for main in -lgdi32" >&5 +echo $ECHO_N "checking for main in -lgdi32... $ECHO_C" >&6 if test "${ac_cv_lib_gdi32_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -4993,43 +4376,46 @@ cat >>conftest.$ac_ext <<_ACEOF int main () { -return main (); +main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_gdi32_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_gdi32_main=no +ac_cv_lib_gdi32_main=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_gdi32_main" >&5 -echo "${ECHO_T}$ac_cv_lib_gdi32_main" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_gdi32_main" >&5 +echo "${ECHO_T}$ac_cv_lib_gdi32_main" >&6 if test $ac_cv_lib_gdi32_main = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBGDI32 1 @@ -5045,8 +4431,8 @@ else : fi - { echo "$as_me:$LINENO: checking if DLL winmm can be loaded" >&5 -echo $ECHO_N "checking if DLL winmm can be loaded... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking if DLL winmm can be loaded" >&5 +echo $ECHO_N "checking if DLL winmm can be loaded... $ECHO_C" >&6 if test "${brltty_cv_dll_winmm+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5071,22 +4457,13 @@ int main () { _ACEOF rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -5099,18 +4476,16 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) brltty_cv_dll_winmm=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $brltty_cv_dll_winmm" >&5 -echo "${ECHO_T}$brltty_cv_dll_winmm" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_dll_winmm" >&5 +echo "${ECHO_T}$brltty_cv_dll_winmm" >&6 if test "${brltty_cv_dll_winmm}" = "yes" then -{ echo "$as_me:$LINENO: checking for main in -lwinmm" >&5 -echo $ECHO_N "checking for main in -lwinmm... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for main in -lwinmm" >&5 +echo $ECHO_N "checking for main in -lwinmm... $ECHO_C" >&6 if test "${ac_cv_lib_winmm_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5127,43 +4502,46 @@ cat >>conftest.$ac_ext <<_ACEOF int main () { -return main (); +main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_winmm_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_winmm_main=no +ac_cv_lib_winmm_main=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_winmm_main" >&5 -echo "${ECHO_T}$ac_cv_lib_winmm_main" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_winmm_main" >&5 +echo "${ECHO_T}$ac_cv_lib_winmm_main" >&6 if test $ac_cv_lib_winmm_main = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBWINMM 1 @@ -5181,8 +4559,8 @@ else fi ;; cygwin*) - { echo "$as_me:$LINENO: checking if DLL gdi32 can be loaded" >&5 -echo $ECHO_N "checking if DLL gdi32 can be loaded... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking if DLL gdi32 can be loaded" >&5 +echo $ECHO_N "checking if DLL gdi32 can be loaded... $ECHO_C" >&6 if test "${brltty_cv_dll_gdi32+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5207,22 +4585,13 @@ int main () { _ACEOF rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -5235,18 +4604,16 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) brltty_cv_dll_gdi32=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $brltty_cv_dll_gdi32" >&5 -echo "${ECHO_T}$brltty_cv_dll_gdi32" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_dll_gdi32" >&5 +echo "${ECHO_T}$brltty_cv_dll_gdi32" >&6 if test "${brltty_cv_dll_gdi32}" = "yes" then -{ echo "$as_me:$LINENO: checking for main in -lgdi32" >&5 -echo $ECHO_N "checking for main in -lgdi32... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for main in -lgdi32" >&5 +echo $ECHO_N "checking for main in -lgdi32... $ECHO_C" >&6 if test "${ac_cv_lib_gdi32_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5263,43 +4630,46 @@ cat >>conftest.$ac_ext <<_ACEOF int main () { -return main (); +main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_gdi32_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_gdi32_main=no +ac_cv_lib_gdi32_main=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_gdi32_main" >&5 -echo "${ECHO_T}$ac_cv_lib_gdi32_main" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_gdi32_main" >&5 +echo "${ECHO_T}$ac_cv_lib_gdi32_main" >&6 if test $ac_cv_lib_gdi32_main = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBGDI32 1 @@ -5317,12 +4687,13 @@ else fi ;; *) - { echo "$as_me:$LINENO: checking for library containing socket" >&5 -echo $ECHO_N "checking for library containing socket... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for library containing socket" >&5 +echo $ECHO_N "checking for library containing socket... $ECHO_C" >&6 if test "${ac_cv_search_socket+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS +ac_cv_search_socket=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -5330,156 +4701,241 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char socket (); int main () { -return socket (); +socket (); ; return 0; } _ACEOF -for ac_lib in '' socket; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_search_socket=$ac_res + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_socket="none required" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext - if test "${ac_cv_search_socket+set}" = set; then - break -fi -done -if test "${ac_cv_search_socket+set}" = set; then - : -else - ac_cv_search_socket=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_search_socket" >&5 -echo "${ECHO_T}$ac_cv_search_socket" >&6; } -ac_res=$ac_cv_search_socket -if test "$ac_res" != no; then - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - fi - - { echo "$as_me:$LINENO: checking for library containing inet_ntoa" >&5 -echo $ECHO_N "checking for library containing inet_ntoa... $ECHO_C" >&6; } -if test "${ac_cv_search_inet_ntoa+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_func_search_save_LIBS=$LIBS -cat >conftest.$ac_ext <<_ACEOF +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_socket" = no; then + for ac_lib in socket; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif -char inet_ntoa (); +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char socket (); int main () { -return inet_ntoa (); +socket (); ; return 0; } _ACEOF -for ac_lib in '' nsl; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_search_inet_ntoa=$ac_res + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_socket="-l$ac_lib" +break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done +fi +LIBS=$ac_func_search_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_search_socket" >&5 +echo "${ECHO_T}$ac_cv_search_socket" >&6 +if test "$ac_cv_search_socket" != no; then + test "$ac_cv_search_socket" = "none required" || LIBS="$ac_cv_search_socket $LIBS" -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext - if test "${ac_cv_search_inet_ntoa+set}" = set; then - break fi -done + + echo "$as_me:$LINENO: checking for library containing inet_ntoa" >&5 +echo $ECHO_N "checking for library containing inet_ntoa... $ECHO_C" >&6 if test "${ac_cv_search_inet_ntoa+set}" = set; then - : + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +ac_cv_search_inet_ntoa=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char inet_ntoa (); +int +main () +{ +inet_ntoa (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_inet_ntoa="none required" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_inet_ntoa" = no; then + for ac_lib in nsl; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char inet_ntoa (); +int +main () +{ +inet_ntoa (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_inet_ntoa="-l$ac_lib" +break else - ac_cv_search_inet_ntoa=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done fi -rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_search_inet_ntoa" >&5 -echo "${ECHO_T}$ac_cv_search_inet_ntoa" >&6; } -ac_res=$ac_cv_search_inet_ntoa -if test "$ac_res" != no; then - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" +echo "$as_me:$LINENO: result: $ac_cv_search_inet_ntoa" >&5 +echo "${ECHO_T}$ac_cv_search_inet_ntoa" >&6 +if test "$ac_cv_search_inet_ntoa" != no; then + test "$ac_cv_search_inet_ntoa" = "none required" || LIBS="$ac_cv_search_inet_ntoa $LIBS" fi @@ -5491,8 +4947,8 @@ ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -5526,22 +4982,24 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 @@ -5550,10 +5008,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi - rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether nonexistent headers + # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -5563,22 +5020,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else @@ -5589,7 +5048,6 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_preproc_ok=: break fi - rm -f conftest.err conftest.$ac_ext done @@ -5607,8 +5065,8 @@ fi else ac_cv_prog_CPP=$CPP fi -{ echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6; } +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do @@ -5631,22 +5089,24 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 @@ -5655,10 +5115,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi - rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether nonexistent headers + # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -5668,22 +5127,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else @@ -5694,7 +5155,6 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_preproc_ok=: break fi - rm -f conftest.err conftest.$ac_ext done @@ -5717,170 +5177,23 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 -echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Extract the first word of "grep ggrep" to use in msg output -if test -z "$GREP"; then -set dummy grep ggrep; ac_prog_name=$2 -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_path_GREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue - # Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - - $ac_path_GREP_found && break 3 - done -done - -done -IFS=$as_save_IFS - - -fi - -GREP="$ac_cv_path_GREP" -if test -z "$GREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - -else - ac_cv_path_GREP=$GREP -fi - - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 -echo "${ECHO_T}$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } -if test "${ac_cv_path_EGREP+set}" = set; then +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - # Extract the first word of "egrep" to use in msg output -if test -z "$EGREP"; then -set dummy egrep; ac_prog_name=$2 -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_path_EGREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue - # Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - - $ac_path_EGREP_found && break 3 - done -done - -done -IFS=$as_save_IFS - - -fi - -EGREP="$ac_cv_path_EGREP" -if test -z "$EGREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - -else - ac_cv_path_EGREP=$EGREP -fi - - - fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 -echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep -{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -5904,31 +5217,35 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_header_stdc=no +ac_cv_header_stdc=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. @@ -5984,7 +5301,6 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include -#include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) @@ -6004,27 +5320,18 @@ main () for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) - return 2; - return 0; + exit(2); + exit (0); } _ACEOF rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -6037,14 +5344,12 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @@ -6067,9 +5372,9 @@ for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -6083,35 +5388,38 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_Header=no" +eval "$as_ac_Header=no" fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 @@ -6122,13 +5430,13 @@ fi done -# Check whether --enable-i18n was given. +# Check whether --enable-i18n or --disable-i18n was given. if test "${enable_i18n+set}" = set; then - enableval=$enable_i18n; + enableval="$enable_i18n" + else enableval="yes" -fi - +fi; brltty_enabled_i18n="${enableval}" brltty_summary_lines="${brltty_summary_lines} @@ -6148,17 +5456,17 @@ else if "${brltty_ok}" then if test "${ac_cv_header_libintl_h+set}" = set; then - { echo "$as_me:$LINENO: checking for libintl.h" >&5 -echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for libintl.h" >&5 +echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6 if test "${ac_cv_header_libintl_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 -echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 +echo "${ECHO_T}$ac_cv_header_libintl_h" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking libintl.h usability" >&5 -echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking libintl.h usability" >&5 +echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -6169,37 +5477,41 @@ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking libintl.h presence" >&5 -echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking libintl.h presence" >&5 +echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -6208,22 +5520,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -6231,10 +5545,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -6258,29 +5571,31 @@ echo "$as_me: WARNING: libintl.h: section \"Present But Cannot Be Compiled\" echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## --------------------------------------- ## ## Report this to http://mielke.cc/brltty/ ## ## --------------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for libintl.h" >&5 -echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for libintl.h" >&5 +echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6 if test "${ac_cv_header_libintl_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_libintl_h=$ac_header_preproc fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 -echo "${ECHO_T}$ac_cv_header_libintl_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5 +echo "${ECHO_T}$ac_cv_header_libintl_h" >&6 fi if test $ac_cv_header_libintl_h = yes; then -{ echo "$as_me:$LINENO: checking for main in -lintl" >&5 -echo $ECHO_N "checking for main in -lintl... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for main in -lintl" >&5 +echo $ECHO_N "checking for main in -lintl... $ECHO_C" >&6 if test "${ac_cv_lib_intl_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6297,43 +5612,46 @@ cat >>conftest.$ac_ext <<_ACEOF int main () { -return main (); +main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_intl_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_intl_main=no +ac_cv_lib_intl_main=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_intl_main" >&5 -echo "${ECHO_T}$ac_cv_lib_intl_main" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_intl_main" >&5 +echo "${ECHO_T}$ac_cv_lib_intl_main" >&6 if test $ac_cv_lib_intl_main = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBINTL 1 @@ -6361,8 +5679,8 @@ echo "$as_me: error: invalid selection: --enable-i18n=${enableval}" >&2;} fi fi -{ echo "$as_me:$LINENO: checking for wcslen" >&5 -echo $ECHO_N "checking for wcslen... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for wcslen" >&5 +echo $ECHO_N "checking for wcslen... $ECHO_C" >&6 if test "${ac_cv_func_wcslen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -6389,77 +5707,85 @@ cat >>conftest.$ac_ext <<_ACEOF #undef wcslen -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char wcslen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined __stub_wcslen || defined __stub___wcslen +#if defined (__stub_wcslen) || defined (__stub___wcslen) choke me +#else +char (*f) () = wcslen; +#endif +#ifdef __cplusplus +} #endif int main () { -return wcslen (); +return f != wcslen; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_func_wcslen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_func_wcslen=no +ac_cv_func_wcslen=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_wcslen" >&5 -echo "${ECHO_T}$ac_cv_func_wcslen" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_func_wcslen" >&5 +echo "${ECHO_T}$ac_cv_func_wcslen" >&6 if test $ac_cv_func_wcslen = yes; then for ac_header in wchar.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -6470,37 +5796,41 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -6509,22 +5839,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -6532,10 +5864,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -6559,24 +5890,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## --------------------------------------- ## ## Report this to http://mielke.cc/brltty/ ## ## --------------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -6591,13 +5923,15 @@ done fi -# Check whether --enable-icu was given. +icu_includes="" +icu_libraries="" +# Check whether --enable-icu or --disable-icu was given. if test "${enable_icu+set}" = set; then - enableval=$enable_icu; + enableval="$enable_icu" + else enableval="yes" -fi - +fi; brltty_enabled_icu="${enableval}" brltty_summary_lines="${brltty_summary_lines} @@ -6616,216 +5950,59 @@ else if "${brltty_ok}" then - -for ac_header in unicode/uchar.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + # Extract the first word of "icu-config", so it can be a program name with args. +set dummy icu-config; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_ICU_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } + case $ICU_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ICU_CONFIG="$ICU_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ICU_CONFIG="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; + ;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no fi +ICU_CONFIG=$ac_cv_path_ICU_CONFIG -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## --------------------------------------- ## -## Report this to http://mielke.cc/brltty/ ## -## --------------------------------------- ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if test -n "$ICU_CONFIG"; then + echo "$as_me:$LINENO: result: $ICU_CONFIG" >&5 +echo "${ECHO_T}$ICU_CONFIG" >&6 else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -{ echo "$as_me:$LINENO: checking for main in -licuuc" >&5 -echo $ECHO_N "checking for main in -licuuc... $ECHO_C" >&6; } -if test "${ac_cv_lib_icuuc_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-licuuc $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -int -main () -{ -return main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_icuuc_main=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_icuuc_main=no -fi + test -n "${ICU_CONFIG}" && ${ICU_CONFIG} --exists && { + icu_includes="`${ICU_CONFIG} --cppflags-searchpath`" + icu_libraries="`${ICU_CONFIG} --ldflags`" -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_icuuc_main" >&5 -echo "${ECHO_T}$ac_cv_lib_icuuc_main" >&6; } -if test $ac_cv_lib_icuuc_main = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBICUUC 1 +cat >>confdefs.h <<_ACEOF +#define HAVE_ICU 1 _ACEOF - LIBS="-licuuc $LIBS" - -fi -ac_cv_lib_icuuc=ac_cv_lib_icuuc_main - -fi - -done + if test "${brltty_standalone_programs}" = "yes" + then + icu_libraries="`echo ${icu_libraries} | sed -e 's/\(-l\)\(icu\)/\1s\2/g'`" + fi + } else { { echo "$as_me:$LINENO: error: invalid selection: --enable-icu=${enableval}" >&5 @@ -6834,13 +6011,15 @@ echo "$as_me: error: invalid selection: --enable-icu=${enableval}" >&2;} fi fi -# Check whether --enable-iconv was given. + + +# Check whether --enable-iconv or --disable-iconv was given. if test "${enable_iconv+set}" = set; then - enableval=$enable_iconv; + enableval="$enable_iconv" + else enableval="yes" -fi - +fi; brltty_enabled_iconv="${enableval}" brltty_summary_lines="${brltty_summary_lines} @@ -6863,19 +6042,18 @@ else for ac_header in iconv.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -6886,37 +6064,41 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -6925,22 +6107,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -6948,10 +6132,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -6975,24 +6158,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## --------------------------------------- ## ## Report this to http://mielke.cc/brltty/ ## ## --------------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -7001,8 +6185,8 @@ if test `eval echo '${'$as_ac_Header'}'` = yes; then _ACEOF -{ echo "$as_me:$LINENO: checking for main in -liconv" >&5 -echo $ECHO_N "checking for main in -liconv... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for main in -liconv" >&5 +echo $ECHO_N "checking for main in -liconv... $ECHO_C" >&6 if test "${ac_cv_lib_iconv_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7019,43 +6203,46 @@ cat >>conftest.$ac_ext <<_ACEOF int main () { -return main (); +main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_iconv_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_iconv_main=no +ac_cv_lib_iconv_main=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_main" >&5 -echo "${ECHO_T}$ac_cv_lib_iconv_main" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_main" >&5 +echo "${ECHO_T}$ac_cv_lib_iconv_main" >&6 if test $ac_cv_lib_iconv_main = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBICONV 1 @@ -7079,12 +6266,13 @@ echo "$as_me: error: invalid selection: --enable-iconv=${enableval}" >&2;} fi fi - { echo "$as_me:$LINENO: checking if pthreads are available" >&5 -echo $ECHO_N "checking if pthreads are available... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking if pthreads are available" >&5 +echo $ECHO_N "checking if pthreads are available... $ECHO_C" >&6 if test "${brltty_cv_have_pthreads+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - case "${host_os}" + SYSCFLAGS="${SYSCFLAGS} -D_REENTRANT" + case "${host_os}" in mingw32*) brltty_cv_have_pthreads=yes @@ -7092,17 +6280,17 @@ else *) brltty_cv_have_pthreads=no if test "${ac_cv_header_pthread_h+set}" = set; then - { echo "$as_me:$LINENO: checking for pthread.h" >&5 -echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for pthread.h" >&5 +echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6 if test "${ac_cv_header_pthread_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5 -echo "${ECHO_T}$ac_cv_header_pthread_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5 +echo "${ECHO_T}$ac_cv_header_pthread_h" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking pthread.h usability" >&5 -echo $ECHO_N "checking pthread.h usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking pthread.h usability" >&5 +echo $ECHO_N "checking pthread.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -7113,37 +6301,41 @@ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking pthread.h presence" >&5 -echo $ECHO_N "checking pthread.h presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking pthread.h presence" >&5 +echo $ECHO_N "checking pthread.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -7152,22 +6344,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -7175,10 +6369,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -7202,34 +6395,37 @@ echo "$as_me: WARNING: pthread.h: section \"Present But Cannot Be Compiled\" echo "$as_me: WARNING: pthread.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: pthread.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: pthread.h: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## --------------------------------------- ## ## Report this to http://mielke.cc/brltty/ ## ## --------------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for pthread.h" >&5 -echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for pthread.h" >&5 +echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6 if test "${ac_cv_header_pthread_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_pthread_h=$ac_header_preproc fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5 -echo "${ECHO_T}$ac_cv_header_pthread_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_pthread_h" >&5 +echo "${ECHO_T}$ac_cv_header_pthread_h" >&6 fi if test $ac_cv_header_pthread_h = yes; then case "${host_os}" in - solaris*) { echo "$as_me:$LINENO: checking for library containing _getfp" >&5 -echo $ECHO_N "checking for library containing _getfp... $ECHO_C" >&6; } + solaris*) echo "$as_me:$LINENO: checking for library containing _getfp" >&5 +echo $ECHO_N "checking for library containing _getfp... $ECHO_C" >&6 if test "${ac_cv_search__getfp+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS +ac_cv_search__getfp=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -7237,165 +6433,125 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char _getfp (); int main () { -return _getfp (); +_getfp (); ; return 0; } _ACEOF -for ac_lib in '' pthread; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_search__getfp=$ac_res + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search__getfp="none required" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext - if test "${ac_cv_search__getfp+set}" = set; then - break -fi -done -if test "${ac_cv_search__getfp+set}" = set; then - : -else - ac_cv_search__getfp=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_search__getfp" >&5 -echo "${ECHO_T}$ac_cv_search__getfp" >&6; } -ac_res=$ac_cv_search__getfp -if test "$ac_res" != no; then - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - brltty_cv_have_pthreads=yes fi -;; - hpux*) { echo "$as_me:$LINENO: checking for library containing __pthread_cancel_stack" >&5 -echo $ECHO_N "checking for library containing __pthread_cancel_stack... $ECHO_C" >&6; } -if test "${ac_cv_search___pthread_cancel_stack+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_func_search_save_LIBS=$LIBS -cat >conftest.$ac_ext <<_ACEOF +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search__getfp" = no; then + for ac_lib in pthread; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif -char __pthread_cancel_stack (); +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char _getfp (); int main () { -return __pthread_cancel_stack (); +_getfp (); ; return 0; } _ACEOF -for ac_lib in '' pthread; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_search___pthread_cancel_stack=$ac_res + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search__getfp="-l$ac_lib" +break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext - if test "${ac_cv_search___pthread_cancel_stack+set}" = set; then - break fi -done -if test "${ac_cv_search___pthread_cancel_stack+set}" = set; then - : -else - ac_cv_search___pthread_cancel_stack=no +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done fi -rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_search___pthread_cancel_stack" >&5 -echo "${ECHO_T}$ac_cv_search___pthread_cancel_stack" >&6; } -ac_res=$ac_cv_search___pthread_cancel_stack -if test "$ac_res" != no; then - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" +echo "$as_me:$LINENO: result: $ac_cv_search__getfp" >&5 +echo "${ECHO_T}$ac_cv_search__getfp" >&6 +if test "$ac_cv_search__getfp" != no; then + test "$ac_cv_search__getfp" = "none required" || LIBS="$ac_cv_search__getfp $LIBS" brltty_cv_have_pthreads=yes fi ;; - *) { echo "$as_me:$LINENO: checking for library containing pthread_create" >&5 -echo $ECHO_N "checking for library containing pthread_create... $ECHO_C" >&6; } -if test "${ac_cv_search_pthread_create+set}" = set; then + hpux*) echo "$as_me:$LINENO: checking for library containing __pthread_cancel_stack" >&5 +echo $ECHO_N "checking for library containing __pthread_cancel_stack... $ECHO_C" >&6 +if test "${ac_cv_search___pthread_cancel_stack+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS +ac_cv_search___pthread_cancel_stack=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -7403,73 +6559,241 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif -char pthread_create (); +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char __pthread_cancel_stack (); int main () { -return pthread_create (); +__pthread_cancel_stack (); ; return 0; } _ACEOF -for ac_lib in '' pthread c_r; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_search_pthread_create=$ac_res + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search___pthread_cancel_stack="none required" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search___pthread_cancel_stack" = no; then + for ac_lib in pthread; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char __pthread_cancel_stack (); +int +main () +{ +__pthread_cancel_stack (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search___pthread_cancel_stack="-l$ac_lib" +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext - if test "${ac_cv_search_pthread_create+set}" = set; then - break fi -done +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done +fi +LIBS=$ac_func_search_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_search___pthread_cancel_stack" >&5 +echo "${ECHO_T}$ac_cv_search___pthread_cancel_stack" >&6 +if test "$ac_cv_search___pthread_cancel_stack" != no; then + test "$ac_cv_search___pthread_cancel_stack" = "none required" || LIBS="$ac_cv_search___pthread_cancel_stack $LIBS" + brltty_cv_have_pthreads=yes +fi +;; + *) echo "$as_me:$LINENO: checking for library containing pthread_create" >&5 +echo $ECHO_N "checking for library containing pthread_create... $ECHO_C" >&6 if test "${ac_cv_search_pthread_create+set}" = set; then - : + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +ac_cv_search_pthread_create=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char pthread_create (); +int +main () +{ +pthread_create (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_pthread_create="none required" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_pthread_create" = no; then + for ac_lib in pthread c_r; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char pthread_create (); +int +main () +{ +pthread_create (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_pthread_create="-l$ac_lib" +break else - ac_cv_search_pthread_create=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done fi -rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_search_pthread_create" >&5 -echo "${ECHO_T}$ac_cv_search_pthread_create" >&6; } -ac_res=$ac_cv_search_pthread_create -if test "$ac_res" != no; then - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" +echo "$as_me:$LINENO: result: $ac_cv_search_pthread_create" >&5 +echo "${ECHO_T}$ac_cv_search_pthread_create" >&6 +if test "$ac_cv_search_pthread_create" != no; then + test "$ac_cv_search_pthread_create" = "none required" || LIBS="$ac_cv_search_pthread_create $LIBS" brltty_cv_have_pthreads=yes fi ;; @@ -7482,16 +6806,16 @@ fi esac fi -{ echo "$as_me:$LINENO: result: $brltty_cv_have_pthreads" >&5 -echo "${ECHO_T}$brltty_cv_have_pthreads" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_have_pthreads" >&5 +echo "${ECHO_T}$brltty_cv_have_pthreads" >&6 -# Check whether --enable-api was given. +# Check whether --enable-api or --disable-api was given. if test "${enable_api+set}" = set; then - enableval=$enable_api; + enableval="$enable_api" + else enableval="yes" -fi - +fi; brltty_enabled_api="${enableval}" brltty_summary_lines="${brltty_summary_lines} @@ -7518,14 +6842,14 @@ cat >>confdefs.h <<\_ACEOF _ACEOF -# Check whether --with-api-parameters was given. +# Check whether --with-api-parameters or --without-api-parameters was given. if test "${with_api_parameters+set}" = set; then - withval=$with_api_parameters; api_parameters="${withval}" + withval="$with_api_parameters" + api_parameters="${withval}" else api_parameters="" -fi - +fi; if test "${api_parameters}" = "no" then api_parameters="" @@ -7541,14 +6865,19 @@ _ACEOF brltty_summary_lines="${brltty_summary_lines} api-parameters: ${api_parameters}" - api_objects='brlapi_server.$O brlapi_keyranges.$O' + api_objects='brlapi_server.$O brlapi_keyranges.$O auth.$O' api_libraries="${LIBS}" all_api="all-api" + build_api="api" install_api="install-api" + api_ref='$(API_LIBS)' api_dynamic_library="api-dynamic-library" install_api_libraries="install-api-libraries" + uninstall_api_libraries="uninstall-api-libraries" + api_socket_path="${localstatedir}/lib/BrlAPI" + case "${host_os}" in cygwin*|mingw*) @@ -7557,18 +6886,20 @@ cat >>confdefs.h <<\_ACEOF #define BRLAPI_WIN32 1 _ACEOF + api_socket_path='\\\\\\\\.\\\\pipe\\\\BrlAPI' api_dynamic_library="api-dynamic-library-windows" install_api_libraries="install-api-libraries-windows" + uninstall_api_libraries="uninstall-api-libraries-windows" ;; esac - # Check whether --enable-caml-bindings was given. + # Check whether --enable-caml-bindings or --disable-caml-bindings was given. if test "${enable_caml_bindings+set}" = set; then - enableval=$enable_caml_bindings; + enableval="$enable_caml_bindings" + else enableval="yes" -fi - +fi; brltty_enabled_caml_bindings="${enableval}" brltty_summary_lines="${brltty_summary_lines} @@ -7630,8 +6961,8 @@ else # we first look for ocamlc in the path; if not present, we fail # Extract the first word of "ocamlc", so it can be a program name with args. set dummy ocamlc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_OCAMLC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7644,28 +6975,26 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OCAMLC="ocamlc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS test -z "$ac_cv_prog_OCAMLC" && ac_cv_prog_OCAMLC="no" fi fi OCAMLC=$ac_cv_prog_OCAMLC if test -n "$OCAMLC"; then - { echo "$as_me:$LINENO: result: $OCAMLC" >&5 -echo "${ECHO_T}$OCAMLC" >&6; } + echo "$as_me:$LINENO: result: $OCAMLC" >&5 +echo "${ECHO_T}$OCAMLC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - if test "$OCAMLC" = no ; then { echo "$as_me:$LINENO: WARNING: Cannot find ocamlc." >&5 echo "$as_me: WARNING: Cannot find ocamlc." >&2;} @@ -7674,8 +7003,8 @@ else # checking for ocamlmklib # Extract the first word of "ocamlmklib", so it can be a program name with args. set dummy ocamlmklib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_OCAMLMKLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7688,28 +7017,26 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OCAMLMKLIB="ocamlmklib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS test -z "$ac_cv_prog_OCAMLMKLIB" && ac_cv_prog_OCAMLMKLIB="no" fi fi OCAMLMKLIB=$ac_cv_prog_OCAMLMKLIB if test -n "$OCAMLMKLIB"; then - { echo "$as_me:$LINENO: result: $OCAMLMKLIB" >&5 -echo "${ECHO_T}$OCAMLMKLIB" >&6; } + echo "$as_me:$LINENO: result: $OCAMLMKLIB" >&5 +echo "${ECHO_T}$OCAMLMKLIB" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - if test "$OCAMLMKLIB" = no ; then { echo "$as_me:$LINENO: WARNING: Cannot find ocamlmklib." >&5 echo "$as_me: WARNING: Cannot find ocamlmklib." >&2;} @@ -7730,8 +7057,8 @@ echo "$as_me: OCaml library path is $OCAMLLIB" >&6;} # we set OCAMLBEST to "opt" or "byte", whether ocamlopt is available or not # Extract the first word of "ocamlopt", so it can be a program name with args. set dummy ocamlopt; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_OCAMLOPT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7744,44 +7071,42 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OCAMLOPT="ocamlopt" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS test -z "$ac_cv_prog_OCAMLOPT" && ac_cv_prog_OCAMLOPT="no" fi fi OCAMLOPT=$ac_cv_prog_OCAMLOPT if test -n "$OCAMLOPT"; then - { echo "$as_me:$LINENO: result: $OCAMLOPT" >&5 -echo "${ECHO_T}$OCAMLOPT" >&6; } + echo "$as_me:$LINENO: result: $OCAMLOPT" >&5 +echo "${ECHO_T}$OCAMLOPT" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - OCAMLBEST=byte OCAML_NCLIB= if test "$OCAMLOPT" = no ; then { echo "$as_me:$LINENO: WARNING: Cannot find ocamlopt; bytecode compilation only." >&5 echo "$as_me: WARNING: Cannot find ocamlopt; bytecode compilation only." >&2;} else - { echo "$as_me:$LINENO: checking ocamlopt version" >&5 -echo $ECHO_N "checking ocamlopt version... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking ocamlopt version" >&5 +echo $ECHO_N "checking ocamlopt version... $ECHO_C" >&6 TMPVERSION=`$OCAMLOPT -v | sed -n -e 's|.*version *\(.*\)$|\1|p' ` if test "$TMPVERSION" != "$OCAMLVERSION" ; then - { echo "$as_me:$LINENO: result: differs from ocamlc; ocamlopt discarded." >&5 -echo "${ECHO_T}differs from ocamlc; ocamlopt discarded." >&6; } + echo "$as_me:$LINENO: result: differs from ocamlc; ocamlopt discarded." >&5 +echo "${ECHO_T}differs from ocamlc; ocamlopt discarded." >&6 OCAMLOPT=no else - { echo "$as_me:$LINENO: result: ok" >&5 -echo "${ECHO_T}ok" >&6; } + echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6 OCAMLBEST=opt OCAML_NCLIB="\$(OCAML_LIB).cmxa" fi @@ -7790,8 +7115,8 @@ echo "${ECHO_T}ok" >&6; } # checking for ocamlc.opt # Extract the first word of "ocamlc.opt", so it can be a program name with args. set dummy ocamlc.opt; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_OCAMLCDOTOPT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7804,38 +7129,36 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OCAMLCDOTOPT="ocamlc.opt" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS test -z "$ac_cv_prog_OCAMLCDOTOPT" && ac_cv_prog_OCAMLCDOTOPT="no" fi fi OCAMLCDOTOPT=$ac_cv_prog_OCAMLCDOTOPT if test -n "$OCAMLCDOTOPT"; then - { echo "$as_me:$LINENO: result: $OCAMLCDOTOPT" >&5 -echo "${ECHO_T}$OCAMLCDOTOPT" >&6; } + echo "$as_me:$LINENO: result: $OCAMLCDOTOPT" >&5 +echo "${ECHO_T}$OCAMLCDOTOPT" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - if test "$OCAMLCDOTOPT" != no ; then - { echo "$as_me:$LINENO: checking ocamlc.opt version" >&5 -echo $ECHO_N "checking ocamlc.opt version... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking ocamlc.opt version" >&5 +echo $ECHO_N "checking ocamlc.opt version... $ECHO_C" >&6 TMPVERSION=`$OCAMLCDOTOPT -v | sed -n -e 's|.*version *\(.*\)$|\1|p' ` if test "$TMPVERSION" != "$OCAMLVERSION" ; then - { echo "$as_me:$LINENO: result: differs from ocamlc; ocamlc.opt discarded." >&5 -echo "${ECHO_T}differs from ocamlc; ocamlc.opt discarded." >&6; } + echo "$as_me:$LINENO: result: differs from ocamlc; ocamlc.opt discarded." >&5 +echo "${ECHO_T}differs from ocamlc; ocamlc.opt discarded." >&6 else - { echo "$as_me:$LINENO: result: ok" >&5 -echo "${ECHO_T}ok" >&6; } + echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6 OCAMLC=$OCAMLCDOTOPT fi fi @@ -7844,8 +7167,8 @@ echo "${ECHO_T}ok" >&6; } if test "$OCAMLOPT" != no ; then # Extract the first word of "ocamlopt.opt", so it can be a program name with args. set dummy ocamlopt.opt; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_OCAMLOPTDOTOPT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7858,59 +7181,57 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OCAMLOPTDOTOPT="ocamlopt.opt" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS test -z "$ac_cv_prog_OCAMLOPTDOTOPT" && ac_cv_prog_OCAMLOPTDOTOPT="no" fi fi OCAMLOPTDOTOPT=$ac_cv_prog_OCAMLOPTDOTOPT if test -n "$OCAMLOPTDOTOPT"; then - { echo "$as_me:$LINENO: result: $OCAMLOPTDOTOPT" >&5 -echo "${ECHO_T}$OCAMLOPTDOTOPT" >&6; } + echo "$as_me:$LINENO: result: $OCAMLOPTDOTOPT" >&5 +echo "${ECHO_T}$OCAMLOPTDOTOPT" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - if test "$OCAMLOPTDOTOPT" != no ; then - { echo "$as_me:$LINENO: checking ocamlc.opt version" >&5 -echo $ECHO_N "checking ocamlc.opt version... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking ocamlc.opt version" >&5 +echo $ECHO_N "checking ocamlc.opt version... $ECHO_C" >&6 TMPVER=`$OCAMLOPTDOTOPT -v | sed -n -e 's|.*version *\(.*\)$|\1|p' ` if test "$TMPVER" != "$OCAMLVERSION" ; then - { echo "$as_me:$LINENO: result: differs from ocamlc; ocamlopt.opt discarded." >&5 -echo "${ECHO_T}differs from ocamlc; ocamlopt.opt discarded." >&6; } + echo "$as_me:$LINENO: result: differs from ocamlc; ocamlopt.opt discarded." >&5 +echo "${ECHO_T}differs from ocamlc; ocamlopt.opt discarded." >&6 else - { echo "$as_me:$LINENO: result: ok" >&5 -echo "${ECHO_T}ok" >&6; } + echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6 OCAMLOPT=$OCAMLOPTDOTOPT fi fi fi # platform - { echo "$as_me:$LINENO: checking platform" >&5 -echo $ECHO_N "checking platform... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking platform" >&5 +echo $ECHO_N "checking platform... $ECHO_C" >&6 if echo "let _ = Sys.os_type;;" | ocaml | grep -q Win32; then - { echo "$as_me:$LINENO: result: Win32" >&5 -echo "${ECHO_T}Win32" >&6; } + echo "$as_me:$LINENO: result: Win32" >&5 +echo "${ECHO_T}Win32" >&6 OCAMLWIN32=yes OCAML_CLIBS=libbrlapi_stubs.a elif echo "let _ = Sys.os_type;;" | ocaml | grep -q Cygwin; then - { echo "$as_me:$LINENO: result: Cygwin" >&5 -echo "${ECHO_T}Cygwin" >&6; } + echo "$as_me:$LINENO: result: Cygwin" >&5 +echo "${ECHO_T}Cygwin" >&6 OCAMLWIN32=yes OCAML_CLIBS=libbrlapi_stubs.a else - { echo "$as_me:$LINENO: result: Unix" >&5 -echo "${ECHO_T}Unix" >&6; } + echo "$as_me:$LINENO: result: Unix" >&5 +echo "${ECHO_T}Unix" >&6 OCAMLWIN32=no OCAML_CLIBS="libbrlapi_stubs.a dllbrlapi_stubs.so" fi @@ -7918,8 +7239,8 @@ echo "${ECHO_T}Unix" >&6; } # checking for ocamlfindlib # Extract the first word of "ocamlfind", so it can be a program name with args. set dummy ocamlfind; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_OCAMLFIND+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -7932,28 +7253,26 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OCAMLFIND="ocamlfind" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS test -z "$ac_cv_prog_OCAMLFIND" && ac_cv_prog_OCAMLFIND="no" fi fi OCAMLFIND=$ac_cv_prog_OCAMLFIND if test -n "$OCAMLFIND"; then - { echo "$as_me:$LINENO: result: $OCAMLFIND" >&5 -echo "${ECHO_T}$OCAMLFIND" >&6; } + echo "$as_me:$LINENO: result: $OCAMLFIND" >&5 +echo "${ECHO_T}$OCAMLFIND" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - if test "$OCAMLFIND" = ocamlfind; then OCAMLC='ocamlfind ocamlc' if test "$OCAMLOPT" = ocamlopt; then @@ -8001,13 +7320,13 @@ echo "$as_me: error: invalid selection: --enable-caml-bindings=${enableval}" >&2 { (exit 1); exit 1; }; } fi fi - # Check whether --enable-java-bindings was given. + # Check whether --enable-java-bindings or --disable-java-bindings was given. if test "${enable_java_bindings+set}" = set; then - enableval=$enable_java_bindings; + enableval="$enable_java_bindings" + else enableval="yes" -fi - +fi; brltty_enabled_java_bindings="${enableval}" brltty_summary_lines="${brltty_summary_lines} @@ -8030,7 +7349,7 @@ else ############################################################################### # libbrlapi - A library providing access to braille terminals for applications. # -# Copyright (C) 2006-2008 by +# Copyright (C) 2006-2009 by # Samuel Thibault # Sébastien Hinderer # @@ -8038,9 +7357,8 @@ else # # 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 COPYING-API for details. +# 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://mielke.cc/brltty/ # @@ -8057,8 +7375,8 @@ else then # Extract the first word of "javac", so it can be a program name with args. set dummy javac; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_JAVAC_PATH+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8073,28 +7391,27 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_JAVAC_PATH="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS ;; esac fi JAVAC_PATH=$ac_cv_path_JAVAC_PATH + if test -n "$JAVAC_PATH"; then - { echo "$as_me:$LINENO: result: $JAVAC_PATH" >&5 -echo "${ECHO_T}$JAVAC_PATH" >&6; } + echo "$as_me:$LINENO: result: $JAVAC_PATH" >&5 +echo "${ECHO_T}$JAVAC_PATH" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - if test -n "${JAVAC_PATH}" then JAVAC_NAME="javac" @@ -8102,8 +7419,8 @@ fi else # Extract the first word of "javac", so it can be a program name with args. set dummy javac; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_JAVAC_PATH+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8118,36 +7435,35 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_JAVAC_PATH="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS ;; esac fi JAVAC_PATH=$ac_cv_path_JAVAC_PATH + if test -n "$JAVAC_PATH"; then - { echo "$as_me:$LINENO: result: $JAVAC_PATH" >&5 -echo "${ECHO_T}$JAVAC_PATH" >&6; } + echo "$as_me:$LINENO: result: $JAVAC_PATH" >&5 +echo "${ECHO_T}$JAVAC_PATH" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - if test -n "${JAVAC_PATH}" then JAVAC_NAME="javac" else # Extract the first word of "javac", so it can be a program name with args. set dummy javac; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_JAVAC_PATH+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8162,36 +7478,35 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_JAVAC_PATH="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS ;; esac fi JAVAC_PATH=$ac_cv_path_JAVAC_PATH + if test -n "$JAVAC_PATH"; then - { echo "$as_me:$LINENO: result: $JAVAC_PATH" >&5 -echo "${ECHO_T}$JAVAC_PATH" >&6; } + echo "$as_me:$LINENO: result: $JAVAC_PATH" >&5 +echo "${ECHO_T}$JAVAC_PATH" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - if test -n "${JAVAC_PATH}" then JAVAC_NAME="javac" else # Extract the first word of "gcj", so it can be a program name with args. set dummy gcj; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_JAVAC_PATH+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8206,28 +7521,27 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_JAVAC_PATH="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS ;; esac fi JAVAC_PATH=$ac_cv_path_JAVAC_PATH + if test -n "$JAVAC_PATH"; then - { echo "$as_me:$LINENO: result: $JAVAC_PATH" >&5 -echo "${ECHO_T}$JAVAC_PATH" >&6; } + echo "$as_me:$LINENO: result: $JAVAC_PATH" >&5 +echo "${ECHO_T}$JAVAC_PATH" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - if test -n "${JAVAC_PATH}" then JAVAC_NAME="gcj" @@ -8255,59 +7569,37 @@ echo "$as_me: Java compiler is ${JAVAC_PATH}" >&6;} JAVAC="${JAVAC_PATH} ${JAVAC_OPTIONS}" - JAVA_BIN=`$as_dirname -- "${JAVAC_PATH}" || + JAVA_BIN=`(dirname "${JAVAC_PATH}") 2>/dev/null || $as_expr X"${JAVAC_PATH}" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"${JAVAC_PATH}" : 'X\(//\)[^/]' \| \ X"${JAVAC_PATH}" : 'X\(//\)$' \| \ - X"${JAVAC_PATH}" : 'X\(/\)' \| . 2>/dev/null || + X"${JAVAC_PATH}" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || echo X"${JAVAC_PATH}" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - JAVA_ROOT=`$as_dirname -- "${JAVA_BIN}" || + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + JAVA_ROOT=`(dirname "${JAVA_BIN}") 2>/dev/null || $as_expr X"${JAVA_BIN}" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"${JAVA_BIN}" : 'X\(//\)[^/]' \| \ X"${JAVA_BIN}" : 'X\(//\)$' \| \ - X"${JAVA_BIN}" : 'X\(/\)' \| . 2>/dev/null || + X"${JAVA_BIN}" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || echo X"${JAVA_BIN}" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` for ac_prog in javadoc gjdoc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_JAVADOC_NAME+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8320,27 +7612,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_JAVADOC_NAME="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi JAVADOC_NAME=$ac_cv_prog_JAVADOC_NAME if test -n "$JAVADOC_NAME"; then - { echo "$as_me:$LINENO: result: $JAVADOC_NAME" >&5 -echo "${ECHO_T}$JAVADOC_NAME" >&6; } + echo "$as_me:$LINENO: result: $JAVADOC_NAME" >&5 +echo "${ECHO_T}$JAVADOC_NAME" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "$JAVADOC_NAME" && break done @@ -8357,8 +7647,8 @@ done do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_JAR_NAME+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8371,27 +7661,25 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_JAR_NAME="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS fi fi JAR_NAME=$ac_cv_prog_JAR_NAME if test -n "$JAR_NAME"; then - { echo "$as_me:$LINENO: result: $JAR_NAME" >&5 -echo "${ECHO_T}$JAR_NAME" >&6; } + echo "$as_me:$LINENO: result: $JAR_NAME" >&5 +echo "${ECHO_T}$JAR_NAME" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "$JAR_NAME" && break done test -n "$JAR_NAME" || JAR_NAME="JAR_NOT_FOUND_BY_CONFIGURE" @@ -8426,19 +7714,18 @@ fi JAVA_JNI_HDR="jni.h" JAVA_JNI_FLAGS="" as_ac_Header=`echo "ac_cv_header_${JAVA_JNI_HDR}" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for ${JAVA_JNI_HDR}" >&5 -echo $ECHO_N "checking for ${JAVA_JNI_HDR}... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for ${JAVA_JNI_HDR}" >&5 +echo $ECHO_N "checking for ${JAVA_JNI_HDR}... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking ${JAVA_JNI_HDR} usability" >&5 -echo $ECHO_N "checking ${JAVA_JNI_HDR} usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking ${JAVA_JNI_HDR} usability" >&5 +echo $ECHO_N "checking ${JAVA_JNI_HDR} usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -8449,37 +7736,41 @@ $ac_includes_default #include <${JAVA_JNI_HDR}> _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking ${JAVA_JNI_HDR} presence" >&5 -echo $ECHO_N "checking ${JAVA_JNI_HDR} presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking ${JAVA_JNI_HDR} presence" >&5 +echo $ECHO_N "checking ${JAVA_JNI_HDR} presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -8488,22 +7779,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <${JAVA_JNI_HDR}> _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -8511,10 +7804,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -8538,33 +7830,34 @@ echo "$as_me: WARNING: ${JAVA_JNI_HDR}: section \"Present But Cannot Be Comp echo "$as_me: WARNING: ${JAVA_JNI_HDR}: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: ${JAVA_JNI_HDR}: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: ${JAVA_JNI_HDR}: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## --------------------------------------- ## ## Report this to http://mielke.cc/brltty/ ## ## --------------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for ${JAVA_JNI_HDR}" >&5 -echo $ECHO_N "checking for ${JAVA_JNI_HDR}... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for ${JAVA_JNI_HDR}" >&5 +echo $ECHO_N "checking for ${JAVA_JNI_HDR}... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then : else as_ac_File=`echo "ac_cv_file_"${JAVA_JNI_INC}/${JAVA_JNI_HDR}"" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for \"${JAVA_JNI_INC}/${JAVA_JNI_HDR}\"" >&5 -echo $ECHO_N "checking for \"${JAVA_JNI_INC}/${JAVA_JNI_HDR}\"... $ECHO_C" >&6; } -if { as_var=$as_ac_File; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for \"${JAVA_JNI_INC}/${JAVA_JNI_HDR}\"" >&5 +echo $ECHO_N "checking for \"${JAVA_JNI_INC}/${JAVA_JNI_HDR}\"... $ECHO_C" >&6 +if eval "test \"\${$as_ac_File+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else test "$cross_compiling" = yes && @@ -8577,9 +7870,8 @@ else eval "$as_ac_File=no" fi fi -ac_res=`eval echo '${'$as_ac_File'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_File'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_File'}'`" >&6 if test `eval echo '${'$as_ac_File'}'` = yes; then JAVA_JNI_FLAGS="-I${JAVA_JNI_INC}" else @@ -8637,13 +7929,13 @@ echo "$as_me: error: invalid selection: --enable-java-bindings=${enableval}" >&2 { (exit 1); exit 1; }; } fi fi - # Check whether --enable-python-bindings was given. + # Check whether --enable-python-bindings or --disable-python-bindings was given. if test "${enable_python_bindings+set}" = set; then - enableval=$enable_python_bindings; + enableval="$enable_python_bindings" + else enableval="yes" -fi - +fi; brltty_enabled_python_bindings="${enableval}" brltty_summary_lines="${brltty_summary_lines} @@ -8666,7 +7958,7 @@ else ############################################################################### # libbrlapi - A library providing access to braille terminals for applications. # -# Copyright (C) 2005-2008 by +# Copyright (C) 2005-2009 by # Alexis Robert # Samuel Thibault # @@ -8674,9 +7966,8 @@ else # # 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 COPYING-API for details. +# 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://mielke.cc/brltty/ # @@ -8689,8 +7980,8 @@ else # Extract the first word of "python", so it can be a program name with args. set dummy python; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_PYTHON+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8705,28 +7996,27 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS ;; esac fi PYTHON=$ac_cv_path_PYTHON + if test -n "$PYTHON"; then - { echo "$as_me:$LINENO: result: $PYTHON" >&5 -echo "${ECHO_T}$PYTHON" >&6; } + echo "$as_me:$LINENO: result: $PYTHON" >&5 +echo "${ECHO_T}$PYTHON" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - if test -z "${PYTHON}" then { echo "$as_me:$LINENO: WARNING: Python interpreter not found" >&5 @@ -8827,8 +8117,8 @@ fi # Extract the first word of "pyrexc", so it can be a program name with args. set dummy pyrexc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_PYREXC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -8843,28 +8133,27 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PYREXC="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS ;; esac fi PYREXC=$ac_cv_path_PYREXC + if test -n "$PYREXC"; then - { echo "$as_me:$LINENO: result: $PYREXC" >&5 -echo "${ECHO_T}$PYREXC" >&6; } + echo "$as_me:$LINENO: result: $PYREXC" >&5 +echo "${ECHO_T}$PYREXC" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - if test -z "${PYREXC}" then { echo "$as_me:$LINENO: WARNING: Pyrex compiler not found" >&5 @@ -8902,13 +8191,13 @@ echo "$as_me: error: invalid selection: --enable-python-bindings=${enableval}" > { (exit 1); exit 1; }; } fi fi - # Check whether --enable-tcl-bindings was given. + # Check whether --enable-tcl-bindings or --disable-tcl-bindings was given. if test "${enable_tcl_bindings+set}" = set; then - enableval=$enable_tcl_bindings; + enableval="$enable_tcl_bindings" + else enableval="yes" -fi - +fi; brltty_enabled_tcl_bindings="${enableval}" brltty_summary_lines="${brltty_summary_lines} @@ -8931,15 +8220,14 @@ else ############################################################################### # libbrlapi - A library providing access to braille terminals for applications. # -# Copyright (C) 2006-2008 by Dave Mielke +# Copyright (C) 2006-2009 by Dave Mielke # # libbrlapi 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 COPYING-API for details. +# 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://mielke.cc/brltty/ # @@ -8953,30 +8241,30 @@ TCL_CPPFLAGS="" TCL_LIBS="" -# Check whether --with-tcl-config was given. +# Check whether --with-tcl-config or --without-tcl-config was given. if test "${with_tcl_config+set}" = set; then - withval=$with_tcl_config; tcl_config_script="${withval}" + withval="$with_tcl_config" + tcl_config_script="${withval}" else tcl_config_script="yes" -fi - +fi; tcl_config_name="tclConfig.sh" if test "${tcl_config_script}" = "no" then if test "${ac_cv_header_tcl_h+set}" = set; then - { echo "$as_me:$LINENO: checking for tcl.h" >&5 -echo $ECHO_N "checking for tcl.h... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for tcl.h" >&5 +echo $ECHO_N "checking for tcl.h... $ECHO_C" >&6 if test "${ac_cv_header_tcl_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_tcl_h" >&5 -echo "${ECHO_T}$ac_cv_header_tcl_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_tcl_h" >&5 +echo "${ECHO_T}$ac_cv_header_tcl_h" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking tcl.h usability" >&5 -echo $ECHO_N "checking tcl.h usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking tcl.h usability" >&5 +echo $ECHO_N "checking tcl.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -8987,37 +8275,41 @@ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking tcl.h presence" >&5 -echo $ECHO_N "checking tcl.h presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking tcl.h presence" >&5 +echo $ECHO_N "checking tcl.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -9026,22 +8318,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -9049,10 +8343,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -9076,23 +8369,25 @@ echo "$as_me: WARNING: tcl.h: section \"Present But Cannot Be Compiled\"" >& echo "$as_me: WARNING: tcl.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: tcl.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: tcl.h: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## --------------------------------------- ## ## Report this to http://mielke.cc/brltty/ ## ## --------------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for tcl.h" >&5 -echo $ECHO_N "checking for tcl.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for tcl.h" >&5 +echo $ECHO_N "checking for tcl.h... $ECHO_C" >&6 if test "${ac_cv_header_tcl_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_tcl_h=$ac_header_preproc fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_tcl_h" >&5 -echo "${ECHO_T}$ac_cv_header_tcl_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_tcl_h" >&5 +echo "${ECHO_T}$ac_cv_header_tcl_h" >&6 fi if test $ac_cv_header_tcl_h = yes; then @@ -9151,8 +8446,8 @@ fi do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_TCLSH+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -9167,34 +8462,51 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_TCLSH="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done -IFS=$as_save_IFS ;; esac fi TCLSH=$ac_cv_path_TCLSH + if test -n "$TCLSH"; then - { echo "$as_me:$LINENO: result: $TCLSH" >&5 -echo "${ECHO_T}$TCLSH" >&6; } + echo "$as_me:$LINENO: result: $TCLSH" >&5 +echo "${ECHO_T}$TCLSH" >&6 else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi - test -n "$TCLSH" && break done test -n "$TCLSH" || TCLSH="TCLSH_NOT_FOUND_BY_CONFIGURE" } +TCL_DIR="" +test -z "${TCL_PACKAGE_PATH}" || { + for directory in ${TCL_PACKAGE_PATH} + do + test `expr "${directory}" : '.*/lib'` -eq 0 || { + TCL_DIR="${directory}" + break + } + done +} + +test -n "${TCL_DIR}" || { + { echo "$as_me:$LINENO: WARNING: Tcl packages directory not found" >&5 +echo "$as_me: WARNING: Tcl packages directory not found" >&2;} + TCL_DIR="TCL_PACKAGES_DIRECTORY_NOT_FOUND_BY_CONFIGURE" +} + + @@ -9242,8 +8554,12 @@ fi + + + api_authkeyfile=brlapi.key + eval 'brltty_expanded="'""${api_authkeyfile}""'"' cat >>confdefs.h <<_ACEOF @@ -9253,28 +8569,28 @@ _ACEOF brltty_curses_libs_save="${LIBS}" -# Check whether --with-translit([curses], [_], [-]) was given. +# Check whether --with-translit([curses], [_], [-]) or --without-translit([curses], [_], [-]) was given. if test "${with_curses+set}" = set; then - withval=$with_curses; brltty_package_curses="${withval}" + withval="$with_curses" + brltty_package_curses="${withval}" else brltty_package_curses="yes" -fi - +fi; if test "${brltty_package_curses}" = "no" then brltty_package_curses="" elif test "${brltty_package_curses}" = "yes" then -{ echo "$as_me:$LINENO: checking which curses package to use" >&5 -echo $ECHO_N "checking which curses package to use... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking which curses package to use" >&5 +echo $ECHO_N "checking which curses package to use... $ECHO_C" >&6 if test "${brltty_cv_package_curses+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else brltty_cv_package_curses="" brltty_packages="" -set -- ncursesw ncurses.h +set -- ncursesw ncursesw/ncurses.h brltty_package="${1}" shift 1 eval "brltty_headers_${brltty_package}"'="${*}"' @@ -9301,19 +8617,18 @@ brltty_packages="${brltty_packages} ${brltty_package}" for brltty_header in ${brltty_headers} do as_ac_Header=`echo "ac_cv_header_${brltty_header}" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for ${brltty_header}" >&5 -echo $ECHO_N "checking for ${brltty_header}... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for ${brltty_header}" >&5 +echo $ECHO_N "checking for ${brltty_header}... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking ${brltty_header} usability" >&5 -echo $ECHO_N "checking ${brltty_header} usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking ${brltty_header} usability" >&5 +echo $ECHO_N "checking ${brltty_header} usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -9324,37 +8639,41 @@ $ac_includes_default #include <${brltty_header}> _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking ${brltty_header} presence" >&5 -echo $ECHO_N "checking ${brltty_header} presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking ${brltty_header} presence" >&5 +echo $ECHO_N "checking ${brltty_header} presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -9363,22 +8682,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <${brltty_header}> _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -9386,10 +8707,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -9413,24 +8733,25 @@ echo "$as_me: WARNING: ${brltty_header}: section \"Present But Cannot Be Com echo "$as_me: WARNING: ${brltty_header}: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: ${brltty_header}: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: ${brltty_header}: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## --------------------------------------- ## ## Report this to http://mielke.cc/brltty/ ## ## --------------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for ${brltty_header}" >&5 -echo $ECHO_N "checking for ${brltty_header}... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for ${brltty_header}" >&5 +echo $ECHO_N "checking for ${brltty_header}... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -9447,9 +8768,9 @@ fi as_ac_Lib=`echo "ac_cv_lib_${brltty_package}''_main" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for main in -l${brltty_package}" >&5 -echo $ECHO_N "checking for main in -l${brltty_package}... $ECHO_C" >&6; } -if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for main in -l${brltty_package}" >&5 +echo $ECHO_N "checking for main in -l${brltty_package}... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Lib+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS @@ -9465,44 +8786,46 @@ cat >>conftest.$ac_ext <<_ACEOF int main () { -return main (); +main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_Lib=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_Lib=no" +eval "$as_ac_Lib=no" fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -ac_res=`eval echo '${'$as_ac_Lib'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Lib'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6 if test `eval echo '${'$as_ac_Lib'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_LIB${brltty_package}" | $as_tr_cpp` 1 @@ -9519,15 +8842,15 @@ fi done fi -{ echo "$as_me:$LINENO: result: $brltty_cv_package_curses" >&5 -echo "${ECHO_T}$brltty_cv_package_curses" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_package_curses" >&5 +echo "${ECHO_T}$brltty_cv_package_curses" >&6 brltty_package_curses="${brltty_cv_package_curses}" else as_ac_Lib=`echo "ac_cv_lib_${brltty_package_curses}''_main" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for main in -l${brltty_package_curses}" >&5 -echo $ECHO_N "checking for main in -l${brltty_package_curses}... $ECHO_C" >&6; } -if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for main in -l${brltty_package_curses}" >&5 +echo $ECHO_N "checking for main in -l${brltty_package_curses}... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Lib+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS @@ -9543,44 +8866,46 @@ cat >>conftest.$ac_ext <<_ACEOF int main () { -return main (); +main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_Lib=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_Lib=no" +eval "$as_ac_Lib=no" fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -ac_res=`eval echo '${'$as_ac_Lib'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Lib'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6 if test `eval echo '${'$as_ac_Lib'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_LIB${brltty_package_curses}" | $as_tr_cpp` 1 @@ -9608,1527 +8933,66 @@ brltty_libs_curses="${LIBS%${brltty_curses_libs_save}}" LIBS="${brltty_curses_libs_save}" -{ echo "$as_me:$LINENO: checking for X" >&5 -echo $ECHO_N "checking for X... $ECHO_C" >&6; } +brltty_cflags_x="" +brltty_libs_x="" +brltty_libs_xkb="" +brltty_libs_xtk="" +all_xbrlapi="" +install_xbrlapi="" +# Check whether --enable-x or --disable-x was given. +if test "${enable_x+set}" = set; then + enableval="$enable_x" +else + enableval="yes" +fi; -# Check whether --with-x was given. -if test "${with_x+set}" = set; then - withval=$with_x; -fi +brltty_enabled_x="${enableval}" +brltty_summary_lines="${brltty_summary_lines} + x: ${brltty_enabled_x}" -# $have_x is `yes', `no', `disabled', or empty when we do not yet know. -if test "x$with_x" = xno; then - # The user explicitly disabled X. - have_x=disabled -else - case $x_includes,$x_libraries in #( - *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5 -echo "$as_me: error: Cannot use X directory names containing '" >&2;} - { (exit 1); exit 1; }; };; #( - *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if test "${enableval}" = "no" +then + : else - # One or both of the vars are not set, and there is no cached value. -ac_x_includes=no ac_x_libraries=no -rm -f -r conftest.dir -if mkdir conftest.dir; then - cd conftest.dir - cat >Imakefile <<'_ACEOF' -incroot: - @echo incroot='${INCROOT}' -usrlibdir: - @echo usrlibdir='${USRLIBDIR}' -libdir: - @echo libdir='${LIBDIR}' -_ACEOF - if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then - # GNU make sometimes prints "make[1]: Entering...", which would confuse us. - for ac_var in incroot usrlibdir libdir; do - eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" - done - # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. - for ac_extension in a so sl; do - if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && - test -f "$ac_im_libdir/libX11.$ac_extension"; then - ac_im_usrlibdir=$ac_im_libdir; break - fi - done - # Screen out bogus values from the imake configuration. They are - # bogus both because they are the default anyway, and because - # using them would break gcc on systems where it needs fixed includes. - case $ac_im_incroot in - /usr/include) ac_x_includes= ;; - *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; - esac - case $ac_im_usrlibdir in - /usr/lib | /lib) ;; - *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; - esac - fi - cd .. - rm -f -r conftest.dir -fi - -# Standard set of common directories for X headers. -# Check X11 before X11Rn because it is often a symlink to the current release. -ac_x_header_dirs=' -/usr/X11/include -/usr/X11R6/include -/usr/X11R5/include -/usr/X11R4/include - -/usr/include/X11 -/usr/include/X11R6 -/usr/include/X11R5 -/usr/include/X11R4 - -/usr/local/X11/include -/usr/local/X11R6/include -/usr/local/X11R5/include -/usr/local/X11R4/include - -/usr/local/include/X11 -/usr/local/include/X11R6 -/usr/local/include/X11R5 -/usr/local/include/X11R4 - -/usr/X386/include -/usr/x386/include -/usr/XFree86/include/X11 - -/usr/include -/usr/local/include -/usr/unsupported/include -/usr/athena/include -/usr/local/x11r5/include -/usr/lpp/Xamples/include - -/usr/openwin/include -/usr/openwin/share/include' - -if test "$ac_x_includes" = no; then - # Guess where to find include files, by looking for Xlib.h. - # First, try using that file with no special directory specified. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - # We can compile using X headers with no special include directory. -ac_x_includes= -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - for ac_dir in $ac_x_header_dirs; do - if test -r "$ac_dir/X11/Xlib.h"; then - ac_x_includes=$ac_dir - break - fi -done -fi - -rm -f conftest.err conftest.$ac_ext -fi # $ac_x_includes = no - -if test "$ac_x_libraries" = no; then - # Check for the libraries. - # See if we find them without any special options. - # Don't add to $LIBS permanently. - ac_save_LIBS=$LIBS - LIBS="-lX11 $LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -int -main () -{ -XrmInitialize () - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - LIBS=$ac_save_LIBS -# We can link X programs with no special library path. -ac_x_libraries= -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - LIBS=$ac_save_LIBS -for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` -do - # Don't even attempt the hair of trying to link an X program! - for ac_extension in a so sl; do - if test -r "$ac_dir/libX11.$ac_extension"; then - ac_x_libraries=$ac_dir - break 2 - fi - done -done -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi # $ac_x_libraries = no - -case $ac_x_includes,$ac_x_libraries in #( - no,* | *,no | *\'*) - # Didn't find X, or a directory has "'" in its name. - ac_cv_have_x="have_x=no";; #( - *) - # Record where we found X for the cache. - ac_cv_have_x="have_x=yes\ - ac_x_includes='$ac_x_includes'\ - ac_x_libraries='$ac_x_libraries'" -esac -fi -;; #( - *) have_x=yes;; - esac - eval "$ac_cv_have_x" -fi # $with_x != no - -if test "$have_x" != yes; then - { echo "$as_me:$LINENO: result: $have_x" >&5 -echo "${ECHO_T}$have_x" >&6; } - no_x=yes -else - # If each of the values was on the command line, it overrides each guess. - test "x$x_includes" = xNONE && x_includes=$ac_x_includes - test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries - # Update the cache value to reflect the command line values. - ac_cv_have_x="have_x=yes\ - ac_x_includes='$x_includes'\ - ac_x_libraries='$x_libraries'" - { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 -echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; } -fi - -if test "$no_x" = yes; then - # Not all programs may use this symbol, but it does not hurt to define it. - -cat >>confdefs.h <<\_ACEOF -#define X_DISPLAY_MISSING 1 -_ACEOF - - X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= -else - if test -n "$x_includes"; then - X_CFLAGS="$X_CFLAGS -I$x_includes" - fi - - # It would also be nice to do this for all -L options, not just this one. - if test -n "$x_libraries"; then - X_LIBS="$X_LIBS -L$x_libraries" - # For Solaris; some versions of Sun CC require a space after -R and - # others require no space. Words are not sufficient . . . . - { echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 -echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6; } - ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" - ac_xsave_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } - X_LIBS="$X_LIBS -R$x_libraries" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - LIBS="$ac_xsave_LIBS -R $x_libraries" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - X_LIBS="$X_LIBS -R $x_libraries" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - { echo "$as_me:$LINENO: result: neither works" >&5 -echo "${ECHO_T}neither works" >&6; } -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - ac_c_werror_flag=$ac_xsave_c_werror_flag - LIBS=$ac_xsave_LIBS - fi - - # Check for system-dependent libraries X programs must link with. - # Do this before checking for the system-independent R6 libraries - # (-lICE), since we may need -lsocket or whatever for X linking. - - if test "$ISC" = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" - else - # Martyn Johnson says this is needed for Ultrix, if the X - # libraries were built with DECnet support. And Karl Berry says - # the Alpha needs dnet_stub (dnet does not exist). - ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char XOpenDisplay (); -int -main () -{ -return XOpenDisplay (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 -echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6; } -if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldnet $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dnet_ntoa (); -int -main () -{ -return dnet_ntoa (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_dnet_dnet_ntoa=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dnet_dnet_ntoa=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 -echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6; } -if test $ac_cv_lib_dnet_dnet_ntoa = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" -fi - - if test $ac_cv_lib_dnet_dnet_ntoa = no; then - { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 -echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6; } -if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldnet_stub $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dnet_ntoa (); -int -main () -{ -return dnet_ntoa (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_dnet_stub_dnet_ntoa=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_dnet_stub_dnet_ntoa=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 -echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } -if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" -fi - - fi -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$ac_xsave_LIBS" - - # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, - # to get the SysV transport functions. - # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) - # needs -lnsl. - # The nsl library prevents programs from opening the X display - # on Irix 5.2, according to T.E. Dickey. - # The functions gethostbyname, getservbyname, and inet_addr are - # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. - { echo "$as_me:$LINENO: checking for gethostbyname" >&5 -echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6; } -if test "${ac_cv_func_gethostbyname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define gethostbyname to an innocuous variant, in case declares gethostbyname. - For example, HP-UX 11i declares gettimeofday. */ -#define gethostbyname innocuous_gethostbyname - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char gethostbyname (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef gethostbyname - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char gethostbyname (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_gethostbyname || defined __stub___gethostbyname -choke me -#endif - -int -main () -{ -return gethostbyname (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_gethostbyname=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_gethostbyname=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6; } - - if test $ac_cv_func_gethostbyname = no; then - { echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 -echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6; } -if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnsl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char gethostbyname (); -int -main () -{ -return gethostbyname (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_nsl_gethostbyname=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_nsl_gethostbyname=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6; } -if test $ac_cv_lib_nsl_gethostbyname = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" -fi - - if test $ac_cv_lib_nsl_gethostbyname = no; then - { echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 -echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6; } -if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lbsd $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char gethostbyname (); -int -main () -{ -return gethostbyname (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_bsd_gethostbyname=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_bsd_gethostbyname=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6; } -if test $ac_cv_lib_bsd_gethostbyname = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" -fi - - fi - fi - - # lieder@skyler.mavd.honeywell.com says without -lsocket, - # socket/setsockopt and other routines are undefined under SCO ODT - # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary - # on later versions), says Simon Leinen: it contains gethostby* - # variants that don't use the name server (or something). -lsocket - # must be given before -lnsl if both are needed. We assume that - # if connect needs -lnsl, so does gethostbyname. - { echo "$as_me:$LINENO: checking for connect" >&5 -echo $ECHO_N "checking for connect... $ECHO_C" >&6; } -if test "${ac_cv_func_connect+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define connect to an innocuous variant, in case declares connect. - For example, HP-UX 11i declares gettimeofday. */ -#define connect innocuous_connect - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char connect (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef connect - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char connect (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_connect || defined __stub___connect -choke me -#endif - -int -main () -{ -return connect (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_connect=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_connect=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 -echo "${ECHO_T}$ac_cv_func_connect" >&6; } - - if test $ac_cv_func_connect = no; then - { echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 -echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6; } -if test "${ac_cv_lib_socket_connect+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsocket $X_EXTRA_LIBS $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char connect (); -int -main () -{ -return connect (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_socket_connect=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_socket_connect=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 -echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6; } -if test $ac_cv_lib_socket_connect = yes; then - X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" -fi - - fi - - # Guillermo Gomez says -lposix is necessary on A/UX. - { echo "$as_me:$LINENO: checking for remove" >&5 -echo $ECHO_N "checking for remove... $ECHO_C" >&6; } -if test "${ac_cv_func_remove+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define remove to an innocuous variant, in case declares remove. - For example, HP-UX 11i declares gettimeofday. */ -#define remove innocuous_remove - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char remove (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef remove - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char remove (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_remove || defined __stub___remove -choke me -#endif - -int -main () -{ -return remove (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_remove=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_remove=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 -echo "${ECHO_T}$ac_cv_func_remove" >&6; } - - if test $ac_cv_func_remove = no; then - { echo "$as_me:$LINENO: checking for remove in -lposix" >&5 -echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6; } -if test "${ac_cv_lib_posix_remove+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lposix $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char remove (); -int -main () -{ -return remove (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_posix_remove=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_posix_remove=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 -echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6; } -if test $ac_cv_lib_posix_remove = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" -fi - - fi - - # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. - { echo "$as_me:$LINENO: checking for shmat" >&5 -echo $ECHO_N "checking for shmat... $ECHO_C" >&6; } -if test "${ac_cv_func_shmat+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define shmat to an innocuous variant, in case declares shmat. - For example, HP-UX 11i declares gettimeofday. */ -#define shmat innocuous_shmat - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char shmat (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef shmat - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shmat (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_shmat || defined __stub___shmat -choke me -#endif - -int -main () -{ -return shmat (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_shmat=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_shmat=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 -echo "${ECHO_T}$ac_cv_func_shmat" >&6; } - - if test $ac_cv_func_shmat = no; then - { echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 -echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6; } -if test "${ac_cv_lib_ipc_shmat+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lipc $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shmat (); -int -main () -{ -return shmat (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_ipc_shmat=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_ipc_shmat=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 -echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6; } -if test $ac_cv_lib_ipc_shmat = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" -fi - - fi - fi - - # Check for libraries that X11R6 Xt/Xaw programs need. - ac_save_LDFLAGS=$LDFLAGS - test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" - # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to - # check for ICE first), but we must link in the order -lSM -lICE or - # we get undefined symbols. So assume we have SM if we have ICE. - # These have to be linked with before -lX11, unlike the other - # libraries we check for below, so use a different variable. - # John Interrante, Karl Berry - { echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 -echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6; } -if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lICE $X_EXTRA_LIBS $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char IceConnectionNumber (); -int -main () -{ -return IceConnectionNumber (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_ICE_IceConnectionNumber=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_ICE_IceConnectionNumber=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 -echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6; } -if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then - X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" -fi - - LDFLAGS=$ac_save_LDFLAGS - -fi - -if test "${no_x}" != "yes" -then - all_xbrlapi=all-xbrlapi - - install_xbrlapi=install-xbrlapi - - - brltty_x_cppflags_save="${CPPFLAGS}" - CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}" - - brltty_x_ldflags_save="${LDFLAGS}" - LDFLAGS="${LDFLAGS} ${X_LIBS}" - - brltty_x_libs_save="${LIBS}" - - { echo "$as_me:$LINENO: checking for main in -lX11" >&5 -echo $ECHO_N "checking for main in -lX11... $ECHO_C" >&6; } -if test "${ac_cv_lib_X11_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lX11 $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -int -main () -{ -return main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_X11_main=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_X11_main=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_X11_main" >&5 -echo "${ECHO_T}$ac_cv_lib_X11_main" >&6; } -if test $ac_cv_lib_X11_main = yes; then - - LIBS="${X_EXTRA_LIBS} ${X_PRE_LIBS} -lX11 ${LIBS}" - - { echo "$as_me:$LINENO: checking for main in -lXext" >&5 -echo $ECHO_N "checking for main in -lXext... $ECHO_C" >&6; } -if test "${ac_cv_lib_Xext_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lXext $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -int -main () -{ -return main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_Xext_main=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_Xext_main=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_main" >&5 -echo "${ECHO_T}$ac_cv_lib_Xext_main" >&6; } -if test $ac_cv_lib_Xext_main = yes; then - - LIBS="-lXext ${LIBS}" - { echo "$as_me:$LINENO: checking for main in -lXtst" >&5 -echo $ECHO_N "checking for main in -lXtst... $ECHO_C" >&6; } -if test "${ac_cv_lib_Xtst_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lXtst $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + if test "${enableval}" = "yes" + then + brltty_ok=true + else + brltty_ok=false + fi + if "${brltty_ok}" + then + pkg-config --exists x11 && { + brltty_cflags_x="`pkg-config --cflags-only-I x11`" + brltty_libs_x="`pkg-config ${pkgconfig_flags_libs} x11`" -int -main () -{ -return main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_Xtst_main=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + all_xbrlapi="all-xbrlapi" + install_xbrlapi="install-xbrlapi" - ac_cv_lib_Xtst_main=no -fi + pkg-config --exists xext && { + brltty_libs_xkb="`pkg-config ${pkgconfig_flags_libs} xext` ${brltty_libs_xkb}" -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xtst_main" >&5 -echo "${ECHO_T}$ac_cv_lib_Xtst_main" >&6; } -if test $ac_cv_lib_Xtst_main = yes; then + pkg-config --exists xtst && { + brltty_libs_xkb="`pkg-config ${pkgconfig_flags_libs} xtst` ${brltty_libs_xkb}" - LIBS="-lXtst ${LIBS}" for ac_header in X11/extensions/XTest.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11139,37 +9003,41 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11178,22 +9046,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -11201,10 +9071,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -11228,24 +9097,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## --------------------------------------- ## ## Report this to http://mielke.cc/brltty/ ## ## --------------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -11261,19 +9131,18 @@ done for ac_header in X11/extensions/XKB.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11284,37 +9153,41 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11323,22 +9196,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -11346,10 +9221,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -11373,24 +9247,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## --------------------------------------- ## ## Report this to http://mielke.cc/brltty/ ## ## --------------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -11402,90 +9277,34 @@ fi done + } + } -fi -ac_cv_lib_Xtst=ac_cv_lib_Xtst_main - - -fi -ac_cv_lib_Xext=ac_cv_lib_Xext_main - - - { echo "$as_me:$LINENO: checking for main in -lXt" >&5 -echo $ECHO_N "checking for main in -lXt... $ECHO_C" >&6; } -if test "${ac_cv_lib_Xt_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lXt $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -int -main () -{ -return main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_Xt_main=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_Xt_main=no -fi + pkg-config --exists xt && { + brltty_libs_xtk="`pkg-config ${pkgconfig_flags_libs} xt` ${brltty_libs_xtk}" -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_Xt_main" >&5 -echo "${ECHO_T}$ac_cv_lib_Xt_main" >&6; } -if test $ac_cv_lib_Xt_main = yes; then + brltty_cppflags_save="${CPPFLAGS}" + CPPFLAGS="${CPPFLAGS} ${brltty_cflags_x}" - LIBS="-lXt ${LIBS}" + brltty_libs_save="${LIBS}" + LIBS="${brltty_libs_xtk} ${brltty_libs_x} ${LIBS}" -# Check whether --with-translit([gui_toolkit], [_], [-]) was given. +# Check whether --with-translit([gui_toolkit], [_], [-]) or --without-translit([gui_toolkit], [_], [-]) was given. if test "${with_gui_toolkit+set}" = set; then - withval=$with_gui_toolkit; brltty_package_gui_toolkit="${withval}" + withval="$with_gui_toolkit" + brltty_package_gui_toolkit="${withval}" else brltty_package_gui_toolkit="yes" -fi - +fi; if test "${brltty_package_gui_toolkit}" = "no" then brltty_package_gui_toolkit="" elif test "${brltty_package_gui_toolkit}" = "yes" then -{ echo "$as_me:$LINENO: checking which gui toolkit package to use" >&5 -echo $ECHO_N "checking which gui toolkit package to use... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking which gui toolkit package to use" >&5 +echo $ECHO_N "checking which gui toolkit package to use... $ECHO_C" >&6 if test "${brltty_cv_package_gui_toolkit+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -11531,19 +9350,18 @@ brltty_packages="${brltty_packages} ${brltty_package}" for brltty_header in ${brltty_headers} do as_ac_Header=`echo "ac_cv_header_${brltty_header}" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for ${brltty_header}" >&5 -echo $ECHO_N "checking for ${brltty_header}... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for ${brltty_header}" >&5 +echo $ECHO_N "checking for ${brltty_header}... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking ${brltty_header} usability" >&5 -echo $ECHO_N "checking ${brltty_header} usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking ${brltty_header} usability" >&5 +echo $ECHO_N "checking ${brltty_header} usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11554,37 +9372,41 @@ $ac_includes_default #include <${brltty_header}> _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking ${brltty_header} presence" >&5 -echo $ECHO_N "checking ${brltty_header} presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking ${brltty_header} presence" >&5 +echo $ECHO_N "checking ${brltty_header} presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11593,22 +9415,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <${brltty_header}> _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -11616,10 +9440,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -11643,24 +9466,25 @@ echo "$as_me: WARNING: ${brltty_header}: section \"Present But Cannot Be Com echo "$as_me: WARNING: ${brltty_header}: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: ${brltty_header}: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: ${brltty_header}: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## --------------------------------------- ## ## Report this to http://mielke.cc/brltty/ ## ## --------------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for ${brltty_header}" >&5 -echo $ECHO_N "checking for ${brltty_header}... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for ${brltty_header}" >&5 +echo $ECHO_N "checking for ${brltty_header}... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -11677,9 +9501,9 @@ fi as_ac_Lib=`echo "ac_cv_lib_${brltty_package}''_main" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for main in -l${brltty_package}" >&5 -echo $ECHO_N "checking for main in -l${brltty_package}... $ECHO_C" >&6; } -if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for main in -l${brltty_package}" >&5 +echo $ECHO_N "checking for main in -l${brltty_package}... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Lib+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS @@ -11695,44 +9519,46 @@ cat >>conftest.$ac_ext <<_ACEOF int main () { -return main (); +main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_Lib=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_Lib=no" +eval "$as_ac_Lib=no" fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -ac_res=`eval echo '${'$as_ac_Lib'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Lib'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6 if test `eval echo '${'$as_ac_Lib'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_LIB${brltty_package}" | $as_tr_cpp` 1 @@ -11749,15 +9575,15 @@ fi done fi -{ echo "$as_me:$LINENO: result: $brltty_cv_package_gui_toolkit" >&5 -echo "${ECHO_T}$brltty_cv_package_gui_toolkit" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_package_gui_toolkit" >&5 +echo "${ECHO_T}$brltty_cv_package_gui_toolkit" >&6 brltty_package_gui_toolkit="${brltty_cv_package_gui_toolkit}" else as_ac_Lib=`echo "ac_cv_lib_${brltty_package_gui_toolkit}''_main" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for main in -l${brltty_package_gui_toolkit}" >&5 -echo $ECHO_N "checking for main in -l${brltty_package_gui_toolkit}... $ECHO_C" >&6; } -if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for main in -l${brltty_package_gui_toolkit}" >&5 +echo $ECHO_N "checking for main in -l${brltty_package_gui_toolkit}... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Lib+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS @@ -11773,44 +9599,46 @@ cat >>conftest.$ac_ext <<_ACEOF int main () { -return main (); +main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_Lib=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_Lib=no" +eval "$as_ac_Lib=no" fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -ac_res=`eval echo '${'$as_ac_Lib'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Lib'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6 if test `eval echo '${'$as_ac_Lib'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_LIB${brltty_package_gui_toolkit}" | $as_tr_cpp` 1 @@ -11835,21 +9663,25 @@ _ACEOF gui-toolkit-package: ${brltty_package_gui_toolkit}" } -fi -ac_cv_lib_Xt=ac_cv_lib_Xt_main + brltty_libs_xtk="${LIBS%${brltty_libs_x} ${brltty_libs_save}}" + CPPFLAGS="${brltty_cppflags_save}" + LIBS="${brltty_libs_save}" + } + } + else + { { echo "$as_me:$LINENO: error: invalid selection: --enable-x=${enableval}" >&5 +echo "$as_me: error: invalid selection: --enable-x=${enableval}" >&2;} + { (exit 1); exit 1; }; } + fi fi -ac_cv_lib_X11=ac_cv_lib_X11_main - brltty_libs_x="${LDFLAGS#${brltty_x_ldflags_save}} ${LIBS%${brltty_x_libs_save}}" - LIBS="${brltty_x_libs_save}" - LDFLAGS="${brltty_x_ldflags_save}" - CPPFLAGS="${brltty_x_cppflags_save}" -fi + + test -z "$brltty_package_gui_toolkit" && { case "${host_os}" @@ -11868,19 +9700,18 @@ test -z "$brltty_package_gui_toolkit" && { for ac_header in alloca.h getopt.h glob.h regex.h syslog.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11891,37 +9722,41 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -11930,22 +9765,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -11953,10 +9790,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -11980,24 +9816,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## --------------------------------------- ## ## Report this to http://mielke.cc/brltty/ ## ## --------------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -12015,19 +9852,18 @@ done for ac_header in sys/poll.h sys/select.h sys/wait.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12038,37 +9874,41 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12077,22 +9917,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -12100,10 +9942,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -12127,24 +9968,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## --------------------------------------- ## ## Report this to http://mielke.cc/brltty/ ## ## --------------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -12161,19 +10003,18 @@ done for ac_header in pwd.h grp.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12184,37 +10025,41 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12223,22 +10068,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -12246,10 +10093,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -12273,24 +10119,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## --------------------------------------- ## ## Report this to http://mielke.cc/brltty/ ## ## --------------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -12309,19 +10156,18 @@ done for ac_header in sys/io.h sys/modem.h machine/speaker.h linux/vt.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12332,37 +10178,41 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12371,22 +10221,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -12394,10 +10246,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -12421,24 +10272,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## --------------------------------------- ## ## Report this to http://mielke.cc/brltty/ ## ## --------------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -12456,19 +10308,18 @@ done for ac_header in mntent.h sys/mnttab.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12479,37 +10330,41 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12518,22 +10373,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -12541,10 +10398,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -12568,24 +10424,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## --------------------------------------- ## ## Report this to http://mielke.cc/brltty/ ## ## --------------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -12601,9 +10458,9 @@ done for ac_func in addmntent do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -12629,60 +10486,68 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -12696,19 +10561,18 @@ done for ac_header in linux/input.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12719,37 +10583,41 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -12758,22 +10626,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -12781,10 +10651,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -12808,24 +10677,25 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## --------------------------------------- ## ## Report this to http://mielke.cc/brltty/ ## ## --------------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then @@ -12837,9 +10707,9 @@ _ACEOF for ac_header in linux/uinput.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -12855,35 +10725,38 @@ cat >>conftest.$ac_ext <<_ACEOF #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_Header=no" +eval "$as_ac_Header=no" fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 @@ -12905,9 +10778,9 @@ done for ac_func in getopt_long hstrerror realpath vsyslog do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -12933,60 +10806,68 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -13000,9 +10881,9 @@ done for ac_func in pause sigaction do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -13028,60 +10909,68 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -13095,9 +10984,9 @@ done for ac_func in fchdir fchmod do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -13123,60 +11012,68 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -13190,9 +11087,9 @@ done for ac_func in shmget shm_open do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -13218,60 +11115,68 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -13286,9 +11191,9 @@ done for ac_func in getpeereid getpeerucred getzoneid do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -13314,60 +11219,68 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -13382,8 +11295,8 @@ in cygwin*|mingw*) if test "${brltty_cv_dll_ws2_32}" = "yes" then - { echo "$as_me:$LINENO: checking if function getaddrinfo in DLL ws2_32 exists" >&5 -echo $ECHO_N "checking if function getaddrinfo in DLL ws2_32 exists... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking if function getaddrinfo in DLL ws2_32 exists" >&5 +echo $ECHO_N "checking if function getaddrinfo in DLL ws2_32 exists... $ECHO_C" >&6 if test "${brltty_cv_function_getaddrinfo+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13417,22 +11330,13 @@ main (void) { _ACEOF rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -13445,13 +11349,11 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) brltty_cv_function_getaddrinfo=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $brltty_cv_function_getaddrinfo" >&5 -echo "${ECHO_T}$brltty_cv_function_getaddrinfo" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_function_getaddrinfo" >&5 +echo "${ECHO_T}$brltty_cv_function_getaddrinfo" >&6 if test "${brltty_cv_function_getaddrinfo}" = "yes" then @@ -13465,8 +11367,8 @@ else fi - { echo "$as_me:$LINENO: checking if function getnameinfo in DLL ws2_32 exists" >&5 -echo $ECHO_N "checking if function getnameinfo in DLL ws2_32 exists... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking if function getnameinfo in DLL ws2_32 exists" >&5 +echo $ECHO_N "checking if function getnameinfo in DLL ws2_32 exists... $ECHO_C" >&6 if test "${brltty_cv_function_getnameinfo+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13500,22 +11402,13 @@ main (void) { _ACEOF rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -13528,13 +11421,11 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) brltty_cv_function_getnameinfo=no fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi -{ echo "$as_me:$LINENO: result: $brltty_cv_function_getnameinfo" >&5 -echo "${ECHO_T}$brltty_cv_function_getnameinfo" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_function_getnameinfo" >&5 +echo "${ECHO_T}$brltty_cv_function_getnameinfo" >&6 if test "${brltty_cv_function_getnameinfo}" = "yes" then @@ -13552,9 +11443,9 @@ fi for ac_func in gai_strerror do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -13580,60 +11471,68 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -13651,9 +11550,9 @@ done for ac_func in gai_strerror getaddrinfo getnameinfo do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -13679,60 +11578,68 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" +{ #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} #endif int main () { -return $ac_func (); +return f != $ac_func; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then eval "$as_ac_var=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_var=no" +eval "$as_ac_var=no" fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 if test `eval echo '${'$as_ac_var'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 @@ -13744,8 +11651,8 @@ done ;; esac -{ echo "$as_me:$LINENO: checking for key_t" >&5 -echo $ECHO_N "checking for key_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for key_t" >&5 +echo $ECHO_N "checking for key_t... $ECHO_C" >&6 if test "${ac_cv_type_key_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -13760,57 +11667,61 @@ cat >>conftest.$ac_ext <<_ACEOF #include -typedef key_t ac__type_new_; int main () { -if ((ac__type_new_ *) 0) +if ((key_t *) 0) return 0; -if (sizeof (ac__type_new_)) +if (sizeof (key_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_type_key_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_type_key_t=no +ac_cv_type_key_t=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_key_t" >&5 -echo "${ECHO_T}$ac_cv_type_key_t" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_type_key_t" >&5 +echo "${ECHO_T}$ac_cv_type_key_t" >&6 -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ echo "$as_me:$LINENO: checking size of key_t" >&5 -echo $ECHO_N "checking size of key_t... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking size of key_t" >&5 +echo $ECHO_N "checking size of key_t... $ECHO_C" >&6 if test "${ac_cv_sizeof_key_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else + if test "$ac_cv_type_key_t" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF @@ -13824,11 +11735,10 @@ cat >>conftest.$ac_ext <<_ACEOF #include - typedef key_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; +static int test_array [1 - 2 * !(((long) (sizeof (key_t))) >= 0)]; test_array [0] = 0 ; @@ -13836,22 +11746,27 @@ test_array [0] = 0 } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -13865,11 +11780,10 @@ cat >>conftest.$ac_ext <<_ACEOF #include - typedef key_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (key_t))) <= $ac_mid)]; test_array [0] = 0 ; @@ -13877,42 +11791,46 @@ test_array [0] = 0 } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - cat >conftest.$ac_ext <<_ACEOF +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -13923,11 +11841,10 @@ cat >>conftest.$ac_ext <<_ACEOF #include - typedef key_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; +static int test_array [1 - 2 * !(((long) (sizeof (key_t))) < 0)]; test_array [0] = 0 ; @@ -13935,22 +11852,27 @@ test_array [0] = 0 } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF @@ -13964,11 +11886,10 @@ cat >>conftest.$ac_ext <<_ACEOF #include - typedef key_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (key_t))) >= $ac_mid)]; test_array [0] = 0 ; @@ -13976,48 +11897,50 @@ test_array [0] = 0 } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo= ac_hi= +ac_lo= ac_hi= fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` @@ -14032,11 +11955,10 @@ cat >>conftest.$ac_ext <<_ACEOF #include - typedef key_t ac__type_sizeof_; int main () { -static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; +static int test_array [1 - 2 * !(((long) (sizeof (key_t))) <= $ac_mid)]; test_array [0] = 0 ; @@ -14044,44 +11966,51 @@ test_array [0] = 0 } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_lo=`expr '(' $ac_mid ')' + 1` +ac_lo=`expr '(' $ac_mid ')' + 1` fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_key_t=$ac_lo;; -'') if test "$ac_cv_type_key_t" = yes; then - { { echo "$as_me:$LINENO: error: cannot compute sizeof (key_t) +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (key_t), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (key_t) +echo "$as_me: error: cannot compute sizeof (key_t), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } - else - ac_cv_sizeof_key_t=0 - fi ;; + { (exit 1); exit 1; }; } ;; esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -14094,9 +12023,8 @@ cat >>conftest.$ac_ext <<_ACEOF #include - typedef key_t ac__type_sizeof_; -static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } +long longval () { return (long) (sizeof (key_t)); } +unsigned long ulongval () { return (long) (sizeof (key_t)); } #include #include int @@ -14105,44 +12033,35 @@ main () FILE *f = fopen ("conftest.val", "w"); if (! f) - return 1; - if (((long int) (sizeof (ac__type_sizeof_))) < 0) + exit (1); + if (((long) (sizeof (key_t))) < 0) { - long int i = longval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + long i = longval (); + if (i != ((long) (sizeof (key_t)))) + exit (1); fprintf (f, "%ld\n", i); } else { - unsigned long int i = ulongval (); - if (i != ((long int) (sizeof (ac__type_sizeof_)))) - return 1; + unsigned long i = ulongval (); + if (i != ((long) (sizeof (key_t)))) + exit (1); fprintf (f, "%lu\n", i); } - return ferror (f) || fclose (f) != 0; + exit (ferror (f) || fclose (f) != 0); ; return 0; } _ACEOF rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -14153,25 +12072,22 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -if test "$ac_cv_type_key_t" = yes; then - { { echo "$as_me:$LINENO: error: cannot compute sizeof (key_t) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (key_t), 77 See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (key_t) +echo "$as_me: error: cannot compute sizeof (key_t), 77 See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } - else - ac_cv_sizeof_key_t=0 - fi + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val +else + ac_cv_sizeof_key_t=0 fi -{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_key_t" >&5 -echo "${ECHO_T}$ac_cv_sizeof_key_t" >&6; } - - - +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_key_t" >&5 +echo "${ECHO_T}$ac_cv_sizeof_key_t" >&6 cat >>confdefs.h <<_ACEOF #define SIZEOF_KEY_T $ac_cv_sizeof_key_t _ACEOF @@ -14188,8 +12104,8 @@ _ACEOF } -{ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 -echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 +echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 if test "${ac_cv_c_bigendian+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -14206,8 +12122,7 @@ cat >>conftest.$ac_ext <<_ACEOF int main () { -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \ - && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN) +#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN bogus endian macros #endif @@ -14216,22 +12131,27 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then # It does; now see whether it defined to BIG_ENDIAN or not. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -14254,36 +12174,40 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_c_bigendian=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_c_bigendian=no +ac_cv_c_bigendian=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - # It does not; compile a test program. +# It does not; compile a test program. if test "$cross_compiling" = yes; then # try to guess the endianness by grepping values into an object file ac_cv_c_bigendian=unknown @@ -14293,11 +12217,11 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; -short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } -short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; -short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; +short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } int main () @@ -14308,22 +12232,27 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then ac_cv_c_bigendian=yes fi @@ -14339,10 +12268,8 @@ else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -14350,41 +12277,27 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default int main () { - /* Are we little or big endian? From Harbison&Steele. */ union { - long int l; - char c[sizeof (long int)]; + long l; + char c[sizeof (long)]; } u; u.l = 1; - return u.c[sizeof (long int) - 1] == 1; - - ; - return 0; + exit (u.c[sizeof (long) - 1] == 1); } _ACEOF rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -14397,16 +12310,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_c_bigendian=yes fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - - fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 -echo "${ECHO_T}$ac_cv_c_bigendian" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +echo "${ECHO_T}$ac_cv_c_bigendian" >&6 case $ac_cv_c_bigendian in yes) @@ -14424,8 +12334,8 @@ presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} { (exit 1); exit 1; }; } ;; esac -{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 -echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -14443,10 +12353,10 @@ main () #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; - const charset cs; + const charset x; /* SunOS 4.1.1 cc rejects this. */ - char const *const *pcpcc; - char **ppc; + char const *const *ccp; + char **p; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; @@ -14455,17 +12365,16 @@ main () an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; - pcpcc = &g + (g ? g-g : 0); + ccp = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ - ++pcpcc; - ppc = (char**) pcpcc; - pcpcc = (char const *const *) ppc; + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; - if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; @@ -14484,9 +12393,7 @@ main () } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; - if (!foo) return 0; } - return !cs[0] && !zero.x; #endif ; @@ -14494,34 +12401,38 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_c_const=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_c_const=no +ac_cv_c_const=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 -echo "${ECHO_T}$ac_cv_c_const" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6 if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF @@ -14530,8 +12441,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for inline" >&5 -echo $ECHO_N "checking for inline... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for inline" >&5 +echo $ECHO_N "checking for inline... $ECHO_C" >&6 if test "${ac_cv_c_inline+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -14551,37 +12462,39 @@ $ac_kw foo_t foo () {return 0; } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_c_inline=$ac_kw + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_inline=$ac_kw; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - test "$ac_cv_c_inline" != no && break +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 -echo "${ECHO_T}$ac_cv_c_inline" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +echo "${ECHO_T}$ac_cv_c_inline" >&6 case $ac_cv_c_inline in @@ -14602,8 +12515,8 @@ esac -{ echo "$as_me:$LINENO: checking if the compiler understands the __alignof__ operator" >&5 -echo $ECHO_N "checking if the compiler understands the __alignof__ operator... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking if the compiler understands the __alignof__ operator" >&5 +echo $ECHO_N "checking if the compiler understands the __alignof__ operator... $ECHO_C" >&6 if test "${brltty_cv_c_operator_alignof+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -14626,34 +12539,38 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then brltty_cv_c_operator_alignof=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - brltty_cv_c_operator_alignof=no +brltty_cv_c_operator_alignof=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $brltty_cv_c_operator_alignof" >&5 -echo "${ECHO_T}$brltty_cv_c_operator_alignof" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_c_operator_alignof" >&5 +echo "${ECHO_T}$brltty_cv_c_operator_alignof" >&6 if test "${brltty_cv_c_operator_alignof}" = "yes" then @@ -14663,8 +12580,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking if the compiler understands __attribute__((format(printf)))" >&5 -echo $ECHO_N "checking if the compiler understands __attribute__((format(printf)))... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking if the compiler understands __attribute__((format(__printf__)))" >&5 +echo $ECHO_N "checking if the compiler understands __attribute__((format(__printf__)))... $ECHO_C" >&6 if test "${brltty_cv_c_attribute_format_printf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -14676,7 +12593,7 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ extern void conf_attribute_format_printf(const char *format, ...) - __attribute__((format(printf, 1, 2))); + __attribute__((format(__printf__, 1, 2))); int main () @@ -14687,34 +12604,38 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then brltty_cv_c_attribute_format_printf=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - brltty_cv_c_attribute_format_printf=no +brltty_cv_c_attribute_format_printf=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $brltty_cv_c_attribute_format_printf" >&5 -echo "${ECHO_T}$brltty_cv_c_attribute_format_printf" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_c_attribute_format_printf" >&5 +echo "${ECHO_T}$brltty_cv_c_attribute_format_printf" >&6 if test "${brltty_cv_c_attribute_format_printf}" = "yes" then @@ -14724,8 +12645,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking if the compiler understands __attribute__((packed))" >&5 -echo $ECHO_N "checking if the compiler understands __attribute__((packed))... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking if the compiler understands __attribute__((packed))" >&5 +echo $ECHO_N "checking if the compiler understands __attribute__((packed))... $ECHO_C" >&6 if test "${brltty_cv_c_attribute_packed+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -14750,34 +12671,38 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then brltty_cv_c_attribute_packed=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - brltty_cv_c_attribute_packed=no +brltty_cv_c_attribute_packed=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $brltty_cv_c_attribute_packed" >&5 -echo "${ECHO_T}$brltty_cv_c_attribute_packed" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_c_attribute_packed" >&5 +echo "${ECHO_T}$brltty_cv_c_attribute_packed" >&6 if test "${brltty_cv_c_attribute_packed}" = "yes" then @@ -14787,8 +12712,8 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking if the compiler understands __attribute__((unused))" >&5 -echo $ECHO_N "checking if the compiler understands __attribute__((unused))... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking if the compiler understands __attribute__((unused))" >&5 +echo $ECHO_N "checking if the compiler understands __attribute__((unused))... $ECHO_C" >&6 if test "${brltty_cv_c_attribute_unused+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -14811,34 +12736,38 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then brltty_cv_c_attribute_unused=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - brltty_cv_c_attribute_unused=no +brltty_cv_c_attribute_unused=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi -{ echo "$as_me:$LINENO: result: $brltty_cv_c_attribute_unused" >&5 -echo "${ECHO_T}$brltty_cv_c_attribute_unused" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_c_attribute_unused" >&5 +echo "${ECHO_T}$brltty_cv_c_attribute_unused" >&6 if test "${brltty_cv_c_attribute_unused}" = "yes" then @@ -14848,15 +12777,15 @@ _ACEOF fi -{ echo "$as_me:$LINENO: checking for system-dependent compilation flags" >&5 -echo $ECHO_N "checking for system-dependent compilation flags... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for system-dependent compilation flags" >&5 +echo $ECHO_N "checking for system-dependent compilation flags... $ECHO_C" >&6 if test "${brltty_cv_prog_cc_sysflags+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case "${host_os}" in linux*|gnu*|kfreebsd*) - brltty_cv_prog_cc_sysflags="-D_POSIX_C_SOURCE=2 -D_BSD_SOURCE -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED" + brltty_cv_prog_cc_sysflags="-D_POSIX_C_SOURCE=2 -D_BSD_SOURCE -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D_GNU_SOURCE" ;; solaris*) brltty_cv_prog_cc_sysflags="-D_XOPEN_SOURCE=500 -D__EXTENSIONS__" @@ -14872,13 +12801,13 @@ in ;; esac fi -{ echo "$as_me:$LINENO: result: $brltty_cv_prog_cc_sysflags" >&5 -echo "${ECHO_T}$brltty_cv_prog_cc_sysflags" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_prog_cc_sysflags" >&5 +echo "${ECHO_T}$brltty_cv_prog_cc_sysflags" >&6 SYSCFLAGS="${brltty_cv_prog_cc_sysflags}" -{ echo "$as_me:$LINENO: checking for c compiler yacc source flags" >&5 -echo $ECHO_N "checking for c compiler yacc source flags... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for c compiler yacc source flags" >&5 +echo $ECHO_N "checking for c compiler yacc source flags... $ECHO_C" >&6 if test "${brltty_cv_prog_cc_flags_yacc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -14894,13 +12823,13 @@ else esac fi fi -{ echo "$as_me:$LINENO: result: $brltty_cv_prog_cc_flags_yacc" >&5 -echo "${ECHO_T}$brltty_cv_prog_cc_flags_yacc" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_prog_cc_flags_yacc" >&5 +echo "${ECHO_T}$brltty_cv_prog_cc_flags_yacc" >&6 YACC_CFLAGS="${brltty_cv_prog_cc_flags_yacc}" -{ echo "$as_me:$LINENO: checking for c compiler shared object flags" >&5 -echo $ECHO_N "checking for c compiler shared object flags... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for c compiler shared object flags" >&5 +echo $ECHO_N "checking for c compiler shared object flags... $ECHO_C" >&6 if test "${brltty_cv_prog_cc_libflags+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -14932,13 +12861,13 @@ echo "$as_me: WARNING: library flags not configured for ${host_os}" >&2;} esac fi fi -{ echo "$as_me:$LINENO: result: $brltty_cv_prog_cc_libflags" >&5 -echo "${ECHO_T}$brltty_cv_prog_cc_libflags" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_prog_cc_libflags" >&5 +echo "${ECHO_T}$brltty_cv_prog_cc_libflags" >&6 LIBCFLAGS="${brltty_cv_prog_cc_libflags}" -{ echo "$as_me:$LINENO: checking for c++ compiler shared object flags" >&5 -echo $ECHO_N "checking for c++ compiler shared object flags... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for c++ compiler shared object flags" >&5 +echo $ECHO_N "checking for c++ compiler shared object flags... $ECHO_C" >&6 if test "${brltty_cv_prog_cxx_libflags+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -14954,8 +12883,8 @@ else esac fi fi -{ echo "$as_me:$LINENO: result: $brltty_cv_prog_cxx_libflags" >&5 -echo "${ECHO_T}$brltty_cv_prog_cxx_libflags" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_prog_cxx_libflags" >&5 +echo "${ECHO_T}$brltty_cv_prog_cxx_libflags" >&6 LIBCXXFLAGS="${brltty_cv_prog_cxx_libflags}" @@ -15024,8 +12953,8 @@ cat >>confdefs.h <<_ACEOF _ACEOF -{ echo "$as_me:$LINENO: checking for static archive extension" >&5 -echo $ECHO_N "checking for static archive extension... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for static archive extension" >&5 +echo $ECHO_N "checking for static archive extension... $ECHO_C" >&6 if test "${brltty_cv_ext_arc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15036,13 +12965,13 @@ in ;; esac fi -{ echo "$as_me:$LINENO: result: $brltty_cv_ext_arc" >&5 -echo "${ECHO_T}$brltty_cv_ext_arc" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_ext_arc" >&5 +echo "${ECHO_T}$brltty_cv_ext_arc" >&6 archive_extension="${brltty_cv_ext_arc}" -{ echo "$as_me:$LINENO: checking for shared object run-time search path environment variable" >&5 -echo $ECHO_N "checking for shared object run-time search path environment variable... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for shared object run-time search path environment variable" >&5 +echo $ECHO_N "checking for shared object run-time search path environment variable... $ECHO_C" >&6 if test "${brltty_cv_env_libsearch+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15059,8 +12988,8 @@ in ;; esac fi -{ echo "$as_me:$LINENO: result: $brltty_cv_env_libsearch" >&5 -echo "${ECHO_T}$brltty_cv_env_libsearch" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_env_libsearch" >&5 +echo "${ECHO_T}$brltty_cv_env_libsearch" >&6 libsearch_variable="${brltty_cv_env_libsearch}" @@ -15073,17 +13002,17 @@ in brltty_pcm_interfaces="oss" brltty_midi_interfaces="oss" if test "${ac_cv_header_alsa_asoundlib_h+set}" = set; then - { echo "$as_me:$LINENO: checking for alsa/asoundlib.h" >&5 -echo $ECHO_N "checking for alsa/asoundlib.h... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for alsa/asoundlib.h" >&5 +echo $ECHO_N "checking for alsa/asoundlib.h... $ECHO_C" >&6 if test "${ac_cv_header_alsa_asoundlib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_alsa_asoundlib_h" >&5 -echo "${ECHO_T}$ac_cv_header_alsa_asoundlib_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_alsa_asoundlib_h" >&5 +echo "${ECHO_T}$ac_cv_header_alsa_asoundlib_h" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking alsa/asoundlib.h usability" >&5 -echo $ECHO_N "checking alsa/asoundlib.h usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking alsa/asoundlib.h usability" >&5 +echo $ECHO_N "checking alsa/asoundlib.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -15094,37 +13023,41 @@ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking alsa/asoundlib.h presence" >&5 -echo $ECHO_N "checking alsa/asoundlib.h presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking alsa/asoundlib.h presence" >&5 +echo $ECHO_N "checking alsa/asoundlib.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -15133,22 +13066,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -15156,10 +13091,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -15183,23 +13117,25 @@ echo "$as_me: WARNING: alsa/asoundlib.h: section \"Present But Cannot Be Com echo "$as_me: WARNING: alsa/asoundlib.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: alsa/asoundlib.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: alsa/asoundlib.h: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## --------------------------------------- ## ## Report this to http://mielke.cc/brltty/ ## ## --------------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for alsa/asoundlib.h" >&5 -echo $ECHO_N "checking for alsa/asoundlib.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for alsa/asoundlib.h" >&5 +echo $ECHO_N "checking for alsa/asoundlib.h... $ECHO_C" >&6 if test "${ac_cv_header_alsa_asoundlib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_alsa_asoundlib_h=$ac_header_preproc fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_alsa_asoundlib_h" >&5 -echo "${ECHO_T}$ac_cv_header_alsa_asoundlib_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_alsa_asoundlib_h" >&5 +echo "${ECHO_T}$ac_cv_header_alsa_asoundlib_h" >&6 fi if test $ac_cv_header_alsa_asoundlib_h = yes; then @@ -15249,8 +13185,8 @@ _ACEOF *qnx*) system_object="qnx" -{ echo "$as_me:$LINENO: checking for snd_pcm_open in -lasound" >&5 -echo $ECHO_N "checking for snd_pcm_open in -lasound... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for snd_pcm_open in -lasound" >&5 +echo $ECHO_N "checking for snd_pcm_open in -lasound... $ECHO_C" >&6 if test "${ac_cv_lib_asound_snd_pcm_open+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15263,53 +13199,56 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char snd_pcm_open (); int main () { -return snd_pcm_open (); +snd_pcm_open (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_asound_snd_pcm_open=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_asound_snd_pcm_open=no +ac_cv_lib_asound_snd_pcm_open=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_asound_snd_pcm_open" >&5 -echo "${ECHO_T}$ac_cv_lib_asound_snd_pcm_open" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_asound_snd_pcm_open" >&5 +echo "${ECHO_T}$ac_cv_lib_asound_snd_pcm_open" >&6 if test $ac_cv_lib_asound_snd_pcm_open = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBASOUND 1 @@ -15339,13 +13278,13 @@ esac system_object="sys_${system_object}."'$O' -# Check whether --enable-preferences-menu was given. +# Check whether --enable-preferences-menu or --disable-preferences-menu was given. if test "${enable_preferences_menu+set}" = set; then - enableval=$enable_preferences_menu; + enableval="$enable_preferences_menu" + else enableval="yes" -fi - +fi; brltty_enabled_preferences_menu="${enableval}" brltty_summary_lines="${brltty_summary_lines} @@ -15377,13 +13316,13 @@ echo "$as_me: error: invalid selection: --enable-preferences-menu=${enableval}" fi fi -# Check whether --enable-table-selection was given. +# Check whether --enable-table-selection or --disable-table-selection was given. if test "${enable_table_selection+set}" = set; then - enableval=$enable_table_selection; + enableval="$enable_table_selection" + else enableval="yes" -fi - +fi; brltty_enabled_table_selection="${enableval}" brltty_summary_lines="${brltty_summary_lines} @@ -15414,16 +13353,14 @@ echo "$as_me: error: invalid selection: --enable-table-selection=${enableval}" > { (exit 1); exit 1; }; } fi fi -translation_table_objects='tbl.$O tbl_native.$O' - -# Check whether --enable-learn-mode was given. +# Check whether --enable-learn-mode or --disable-learn-mode was given. if test "${enable_learn_mode+set}" = set; then - enableval=$enable_learn_mode; + enableval="$enable_learn_mode" + else enableval="yes" -fi - +fi; brltty_enabled_learn_mode="${enableval}" brltty_summary_lines="${brltty_summary_lines} @@ -15455,13 +13392,13 @@ echo "$as_me: error: invalid selection: --enable-learn-mode=${enableval}" >&2;} fi fi -# Check whether --enable-contracted-braille was given. +# Check whether --enable-contracted-braille or --disable-contracted-braille was given. if test "${enable_contracted_braille+set}" = set; then - enableval=$enable_contracted_braille; + enableval="$enable_contracted_braille" + else enableval="yes" -fi - +fi; brltty_enabled_contracted_braille="${enableval}" brltty_summary_lines="${brltty_summary_lines} @@ -15497,13 +13434,13 @@ fi -# Check whether --enable-beeper-support was given. +# Check whether --enable-beeper-support or --disable-beeper-support was given. if test "${enable_beeper_support+set}" = set; then - enableval=$enable_beeper_support; + enableval="$enable_beeper_support" + else enableval="yes" -fi - +fi; brltty_enabled_beeper_support="${enableval}" brltty_summary_lines="${brltty_summary_lines} @@ -15537,13 +13474,13 @@ echo "$as_me: error: invalid selection: --enable-beeper-support=${enableval}" >& fi -# Check whether --enable-pcm-support was given. +# Check whether --enable-pcm-support or --disable-pcm-support was given. if test "${enable_pcm_support+set}" = set; then - enableval=$enable_pcm_support; + enableval="$enable_pcm_support" + else enableval="yes" -fi - +fi; brltty_enabled_pcm_support="${enableval}" brltty_summary_lines="${brltty_summary_lines} @@ -15595,13 +13532,13 @@ echo "$as_me: error: invalid selection: --enable-pcm-support=${enableval}" >&2;} fi -# Check whether --enable-midi-support was given. +# Check whether --enable-midi-support or --disable-midi-support was given. if test "${enable_midi_support+set}" = set; then - enableval=$enable_midi_support; + enableval="$enable_midi_support" + else enableval="yes" -fi - +fi; brltty_enabled_midi_support="${enableval}" brltty_summary_lines="${brltty_summary_lines} @@ -15653,13 +13590,13 @@ echo "$as_me: error: invalid selection: --enable-midi-support=${enableval}" >&2; fi -# Check whether --enable-fm-support was given. +# Check whether --enable-fm-support or --disable-fm-support was given. if test "${enable_fm_support+set}" = set; then - enableval=$enable_fm_support; + enableval="$enable_fm_support" + else enableval="yes" -fi - +fi; brltty_enabled_fm_support="${enableval}" brltty_summary_lines="${brltty_summary_lines} @@ -15693,13 +13630,13 @@ echo "$as_me: error: invalid selection: --enable-fm-support=${enableval}" >&2;} fi -# Check whether --enable-pm-configfile was given. +# Check whether --enable-pm-configfile or --disable-pm-configfile was given. if test "${enable_pm_configfile+set}" = set; then - enableval=$enable_pm_configfile; + enableval="$enable_pm_configfile" + else enableval="yes" -fi - +fi; brltty_enabled_pm_configfile="${enableval}" brltty_summary_lines="${brltty_summary_lines} @@ -15733,13 +13670,13 @@ echo "$as_me: error: invalid selection: --enable-pm-configfile=${enableval}" >&2 fi -# Check whether --enable-gpm was given. +# Check whether --enable-gpm or --disable-gpm was given. if test "${enable_gpm+set}" = set; then - enableval=$enable_gpm; + enableval="$enable_gpm" + else enableval="yes" -fi - +fi; brltty_enabled_gpm="${enableval}" brltty_summary_lines="${brltty_summary_lines} @@ -15759,8 +13696,8 @@ else if "${brltty_ok}" then -{ echo "$as_me:$LINENO: checking for Gpm_Open in -lgpm" >&5 -echo $ECHO_N "checking for Gpm_Open in -lgpm... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for Gpm_Open in -lgpm" >&5 +echo $ECHO_N "checking for Gpm_Open in -lgpm... $ECHO_C" >&6 if test "${ac_cv_lib_gpm_Gpm_Open+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -15773,53 +13710,56 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char Gpm_Open (); int main () { -return Gpm_Open (); +Gpm_Open (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_gpm_Gpm_Open=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_gpm_Gpm_Open=no +ac_cv_lib_gpm_Gpm_Open=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_gpm_Gpm_Open" >&5 -echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Open" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_gpm_Gpm_Open" >&5 +echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Open" >&6 if test $ac_cv_lib_gpm_Gpm_Open = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBGPM 1 @@ -15837,144 +13777,17 @@ echo "$as_me: error: invalid selection: --enable-gpm=${enableval}" >&2;} fi fi -{ echo "$as_me:$LINENO: checking for linkage editor program creation flags" >&5 -echo $ECHO_N "checking for linkage editor program creation flags... $ECHO_C" >&6; } -if test "${brltty_cv_prog_ld_flags+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case "${host_os}" -in - linux*|gnu*|openbsd*|freebsd*|kfreebsd*|netbsd*|*qnx*) - brltty_cv_prog_ld_flags="-export-dynamic" - ;; - solaris*) - brltty_cv_prog_ld_flags="" - ;; - hpux*) - brltty_cv_prog_ld_flags="-E +s" - ;; - osf*) - brltty_cv_prog_ld_flags="" - ;; - cygwin*|mingw*) - brltty_cv_prog_ld_flags="-export-dynamic --enable-auto-import" - ;; - msdos*) - brltty_cv_prog_ld_flags="" - ;; - darwin*) - brltty_cv_prog_ld_flags="" - ;; - *) - { { echo "$as_me:$LINENO: error: linkage editor program creation flags not configured for ${host_os}" >&5 -echo "$as_me: error: linkage editor program creation flags not configured for ${host_os}" >&2;} - { (exit 1); exit 1; }; } - ;; -esac -fi -{ echo "$as_me:$LINENO: result: $brltty_cv_prog_ld_flags" >&5 -echo "${ECHO_T}$brltty_cv_prog_ld_flags" >&6; } -brltty_link_flags="${brltty_cv_prog_ld_flags}" - -{ echo "$as_me:$LINENO: checking for static linkage flag" >&5 -echo $ECHO_N "checking for static linkage flag... $ECHO_C" >&6; } -if test "${brltty_cv_prog_ld_static+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "${GCC}" = "yes" -then - brltty_cv_prog_ld_static="-static" -else - case "${host_os}" - in - linux*|gnu*|openbsd*|freebsd*|kfreebsd*|*qnx*|cygwin*|mingw*) - brltty_cv_prog_ld_static="-static" - ;; - netbsd*) - brltty_cv_prog_ld_static="-Bstatic" - ;; - solaris*) - brltty_cv_prog_ld_static="-dn" - ;; - hpux*) - brltty_cv_prog_ld_static="-Bstatic" - ;; - osf*) - brltty_cv_prog_ld_static="-non_shared" - ;; - *) - { { echo "$as_me:$LINENO: error: static linkage not supported by ${host_os}" >&5 -echo "$as_me: error: static linkage not supported by ${host_os}" >&2;} - { (exit 1); exit 1; }; } - ;; - esac - brltty_cv_prog_ld_static="`echo "${brltty_cv_prog_ld_static}" | sed -e ' -/^$/d -s/^ */-Wl / -s/ *$// -s/ */,/g -'`" -fi -fi -{ echo "$as_me:$LINENO: result: $brltty_cv_prog_ld_static" >&5 -echo "${ECHO_T}$brltty_cv_prog_ld_static" >&6; } -brltty_static_flag="${brltty_cv_prog_ld_static}" -# Check whether --enable-standalone-programs was given. -if test "${enable_standalone_programs+set}" = set; then - enableval=$enable_standalone_programs; -else - enableval="no" -fi - - -brltty_enabled_standalone_programs="${enableval}" -brltty_summary_lines="${brltty_summary_lines} - standalone-programs: ${brltty_enabled_standalone_programs}" - -if test "${enableval}" = "no" -then - -cat >>confdefs.h <<\_ACEOF -#define ENABLE_SHARED_OBJECTS 1 -_ACEOF - - -else - if test "${enableval}" = "yes" - then - brltty_ok=true - else - brltty_ok=false - fi - - if "${brltty_ok}" - then - brltty_standalone_programs="yes" - LDFLAGS="${LDFLAGS} ${brltty_static_flag}" - - else - { { echo "$as_me:$LINENO: error: invalid selection: --enable-standalone-programs=${enableval}" >&5 -echo "$as_me: error: invalid selection: --enable-standalone-programs=${enableval}" >&2;} - { (exit 1); exit 1; }; } - fi -fi -LDFLAGS="${LDFLAGS} `echo "${brltty_link_flags}" | sed -e ' -/^$/d -s/^ */-Wl / -s/ *$// -s/ */,/g -'`" - case "${host_os}" in linux*|gnu*|solaris*|openbsd*|freebsd*|kfreebsd*|netbsd*|osf*|*qnx*|cygwin*|mingw*) brltty_uc="`echo "dlopen" | sed -e 'y%abcdefghijklmnopqrstuvwxyz%ABCDEFGHIJKLMNOPQRSTUVWXYZ%'`" -{ echo "$as_me:$LINENO: checking for library containing dlopen" >&5 -echo $ECHO_N "checking for library containing dlopen... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for library containing dlopen" >&5 +echo $ECHO_N "checking for library containing dlopen... $ECHO_C" >&6 if test "${ac_cv_search_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS +ac_cv_search_dlopen=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -15982,73 +13795,115 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char dlopen (); int main () { -return dlopen (); +dlopen (); ; return 0; } _ACEOF -for ac_lib in '' dl; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_search_dlopen=$ac_res + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_dlopen="none required" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_dlopen" = no; then + for ac_lib in dl; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext - if test "${ac_cv_search_dlopen+set}" = set; then - break -fi -done -if test "${ac_cv_search_dlopen+set}" = set; then - : +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_dlopen="-l$ac_lib" +break else - ac_cv_search_dlopen=no + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done fi -rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_search_dlopen" >&5 -echo "${ECHO_T}$ac_cv_search_dlopen" >&6; } -ac_res=$ac_cv_search_dlopen -if test "$ac_res" != no; then - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" +echo "$as_me:$LINENO: result: $ac_cv_search_dlopen" >&5 +echo "${ECHO_T}$ac_cv_search_dlopen" >&6 +if test "$ac_cv_search_dlopen" != no; then + test "$ac_cv_search_dlopen" = "none required" || LIBS="$ac_cv_search_dlopen $LIBS" cat >>confdefs.h <<_ACEOF #define HAVE_${brltty_uc} 1 @@ -16059,12 +13914,13 @@ fi ;; hpux*) brltty_uc="`echo "shl_load" | sed -e 'y%abcdefghijklmnopqrstuvwxyz%ABCDEFGHIJKLMNOPQRSTUVWXYZ%'`" -{ echo "$as_me:$LINENO: checking for library containing shl_load" >&5 -echo $ECHO_N "checking for library containing shl_load... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for library containing shl_load" >&5 +echo $ECHO_N "checking for library containing shl_load... $ECHO_C" >&6 if test "${ac_cv_search_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_func_search_save_LIBS=$LIBS +ac_cv_search_shl_load=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -16072,73 +13928,115 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_shl_load="none required" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_shl_load" = no; then + for ac_lib in dld; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ char shl_load (); int main () { -return shl_load (); +shl_load (); ; return 0; } _ACEOF -for ac_lib in '' dld; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_search_shl_load=$ac_res + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_shl_load="-l$ac_lib" +break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext - if test "${ac_cv_search_shl_load+set}" = set; then - break -fi -done -if test "${ac_cv_search_shl_load+set}" = set; then - : -else - ac_cv_search_shl_load=no +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done fi -rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_search_shl_load" >&5 -echo "${ECHO_T}$ac_cv_search_shl_load" >&6; } -ac_res=$ac_cv_search_shl_load -if test "$ac_res" != no; then - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" +echo "$as_me:$LINENO: result: $ac_cv_search_shl_load" >&5 +echo "${ECHO_T}$ac_cv_search_shl_load" >&6 +if test "$ac_cv_search_shl_load" != no; then + test "$ac_cv_search_shl_load" = "none required" || LIBS="$ac_cv_search_shl_load $LIBS" cat >>confdefs.h <<_ACEOF #define HAVE_${brltty_uc} 1 @@ -16159,8 +14057,8 @@ in solaris*) usb_object="solaris" -{ echo "$as_me:$LINENO: checking for main in -laio" >&5 -echo $ECHO_N "checking for main in -laio... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for main in -laio" >&5 +echo $ECHO_N "checking for main in -laio... $ECHO_C" >&6 if test "${ac_cv_lib_aio_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -16177,43 +14075,46 @@ cat >>conftest.$ac_ext <<_ACEOF int main () { -return main (); +main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_aio_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_aio_main=no +ac_cv_lib_aio_main=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_aio_main" >&5 -echo "${ECHO_T}$ac_cv_lib_aio_main" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_aio_main" >&5 +echo "${ECHO_T}$ac_cv_lib_aio_main" >&6 if test $ac_cv_lib_aio_main = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBAIO 1 @@ -16225,8 +14126,8 @@ fi ac_cv_lib_aio=ac_cv_lib_aio_main -{ echo "$as_me:$LINENO: checking for main in -lrt" >&5 -echo $ECHO_N "checking for main in -lrt... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for main in -lrt" >&5 +echo $ECHO_N "checking for main in -lrt... $ECHO_C" >&6 if test "${ac_cv_lib_rt_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -16243,43 +14144,46 @@ cat >>conftest.$ac_ext <<_ACEOF int main () { -return main (); +main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_rt_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_rt_main=no +ac_cv_lib_rt_main=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_rt_main" >&5 -echo "${ECHO_T}$ac_cv_lib_rt_main" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_rt_main" >&5 +echo "${ECHO_T}$ac_cv_lib_rt_main" >&6 if test $ac_cv_lib_rt_main = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBRT 1 @@ -16311,19 +14215,18 @@ ac_cv_lib_rt=ac_cv_lib_rt_main for ac_header in usb.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -16334,37 +14237,41 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -16373,22 +14280,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -16396,10 +14305,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -16423,75 +14331,33 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## --------------------------------------- ## ## Report this to http://mielke.cc/brltty/ ## ## --------------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF - usb_object="libusb" -fi - -done - - ;; -esac -if test -n "${usb_object}" -then - # Check whether --enable-usb-support was given. -if test "${enable_usb_support+set}" = set; then - enableval=$enable_usb_support; -else - enableval="yes" -fi - - -brltty_enabled_usb_support="${enableval}" -brltty_summary_lines="${brltty_summary_lines} - usb-support: ${brltty_enabled_usb_support}" - -if test "${enableval}" = "no" -then - : -else - if test "${enableval}" = "yes" - then - brltty_ok=true - else - brltty_ok=false - fi - - if "${brltty_ok}" - then - -cat >>confdefs.h <<\_ACEOF -#define ENABLE_USB_SUPPORT 1 -_ACEOF - - case "${usb_object}" - in - libusb) - -{ echo "$as_me:$LINENO: checking for main in -lusb" >&5 -echo $ECHO_N "checking for main in -lusb... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for main in -lusb" >&5 +echo $ECHO_N "checking for main in -lusb... $ECHO_C" >&6 if test "${ac_cv_lib_usb_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -16508,55 +14374,91 @@ cat >>conftest.$ac_ext <<_ACEOF int main () { -return main (); +main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_cv_lib_usb_main=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_usb_main=no +ac_cv_lib_usb_main=no fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ +rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_usb_main" >&5 -echo "${ECHO_T}$ac_cv_lib_usb_main" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_lib_usb_main" >&5 +echo "${ECHO_T}$ac_cv_lib_usb_main" >&6 if test $ac_cv_lib_usb_main = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBUSB 1 -_ACEOF - - LIBS="-lusb $LIBS" + usb_object="libusb" + LIBS="-lusb ${LIBS}" fi ac_cv_lib_usb=ac_cv_lib_usb_main - ;; - esac +fi + +done + + ;; +esac +if test -n "${usb_object}" +then + # Check whether --enable-usb-support or --disable-usb-support was given. +if test "${enable_usb_support+set}" = set; then + enableval="$enable_usb_support" + +else + enableval="yes" +fi; + +brltty_enabled_usb_support="${enableval}" +brltty_summary_lines="${brltty_summary_lines} + usb-support: ${brltty_enabled_usb_support}" + +if test "${enableval}" = "no" +then + : +else + if test "${enableval}" = "yes" + then + brltty_ok=true + else + brltty_ok=false + fi + + if "${brltty_ok}" + then + +cat >>confdefs.h <<\_ACEOF +#define ENABLE_USB_SUPPORT 1 +_ACEOF + usb_objects="usb."'$O'" usb_${usb_object}."'$O' else @@ -16585,17 +14487,17 @@ esac if test -n "${bluetooth_object}" then if test "${ac_cv_header_bluetooth_bluetooth_h+set}" = set; then - { echo "$as_me:$LINENO: checking for bluetooth/bluetooth.h" >&5 -echo $ECHO_N "checking for bluetooth/bluetooth.h... $ECHO_C" >&6; } + echo "$as_me:$LINENO: checking for bluetooth/bluetooth.h" >&5 +echo $ECHO_N "checking for bluetooth/bluetooth.h... $ECHO_C" >&6 if test "${ac_cv_header_bluetooth_bluetooth_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_bluetooth_bluetooth_h" >&5 -echo "${ECHO_T}$ac_cv_header_bluetooth_bluetooth_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_bluetooth_bluetooth_h" >&5 +echo "${ECHO_T}$ac_cv_header_bluetooth_bluetooth_h" >&6 else # Is the header compilable? -{ echo "$as_me:$LINENO: checking bluetooth/bluetooth.h usability" >&5 -echo $ECHO_N "checking bluetooth/bluetooth.h usability... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking bluetooth/bluetooth.h usability" >&5 +echo $ECHO_N "checking bluetooth/bluetooth.h usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -16606,37 +14508,41 @@ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_compiler=no +ac_header_compiler=no fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? -{ echo "$as_me:$LINENO: checking bluetooth/bluetooth.h presence" >&5 -echo $ECHO_N "checking bluetooth/bluetooth.h presence... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking bluetooth/bluetooth.h presence" >&5 +echo $ECHO_N "checking bluetooth/bluetooth.h presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -16645,22 +14551,24 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 @@ -16668,10 +14576,9 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi - rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in @@ -16695,33 +14602,35 @@ echo "$as_me: WARNING: bluetooth/bluetooth.h: section \"Present But Cannot B echo "$as_me: WARNING: bluetooth/bluetooth.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: bluetooth/bluetooth.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: bluetooth/bluetooth.h: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX + ( + cat <<\_ASBOX ## --------------------------------------- ## ## Report this to http://mielke.cc/brltty/ ## ## --------------------------------------- ## _ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 + ) | + sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for bluetooth/bluetooth.h" >&5 -echo $ECHO_N "checking for bluetooth/bluetooth.h... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for bluetooth/bluetooth.h" >&5 +echo $ECHO_N "checking for bluetooth/bluetooth.h... $ECHO_C" >&6 if test "${ac_cv_header_bluetooth_bluetooth_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_bluetooth_bluetooth_h=$ac_header_preproc fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_bluetooth_bluetooth_h" >&5 -echo "${ECHO_T}$ac_cv_header_bluetooth_bluetooth_h" >&6; } +echo "$as_me:$LINENO: result: $ac_cv_header_bluetooth_bluetooth_h" >&5 +echo "${ECHO_T}$ac_cv_header_bluetooth_bluetooth_h" >&6 fi if test $ac_cv_header_bluetooth_bluetooth_h = yes; then - # Check whether --enable-bluetooth-support was given. + # Check whether --enable-bluetooth-support or --disable-bluetooth-support was given. if test "${enable_bluetooth_support+set}" = set; then - enableval=$enable_bluetooth_support; + enableval="$enable_bluetooth_support" + else enableval="yes" -fi - +fi; brltty_enabled_bluetooth_support="${enableval}" brltty_summary_lines="${brltty_summary_lines} @@ -16774,7 +14683,7 @@ test -n "${api_objects}" && { brltty_item_entries_braille="${brltty_item_entries_braille} ba-BrlAPI" brltty_item_codes_braille="${brltty_item_codes_braille} ba" brltty_item_names_braille="${brltty_item_names_braille} BrlAPI" -braille_libraries_ba='-L$(BLD_TOP)$(PGM_DIR) -lbrlapi' +braille_libraries_ba='$(API_LIBS)' } brltty_item_entries_braille="${brltty_item_entries_braille} bd-Braudi" @@ -16797,11 +14706,6 @@ brltty_item_codes_braille="${brltty_item_codes_braille} bn" brltty_item_names_braille="${brltty_item_names_braille} BrailleNote" braille_libraries_bn='' -brltty_item_entries_braille="${brltty_item_entries_braille} bs-BrailleSense" -brltty_item_codes_braille="${brltty_item_codes_braille} bs" -brltty_item_names_braille="${brltty_item_names_braille} BrailleSense" -braille_libraries_bs='' - brltty_item_entries_braille="${brltty_item_entries_braille} cb-CombiBraille" brltty_item_codes_braille="${brltty_item_codes_braille} cb" brltty_item_names_braille="${brltty_item_names_braille} CombiBraille" @@ -16822,6 +14726,11 @@ brltty_item_codes_braille="${brltty_item_codes_braille} fs" brltty_item_names_braille="${brltty_item_names_braille} FreedomScientific" braille_libraries_fs='' +brltty_item_entries_braille="${brltty_item_entries_braille} hm-HIMS" +brltty_item_codes_braille="${brltty_item_codes_braille} hm" +brltty_item_names_braille="${brltty_item_names_braille} HIMS" +braille_libraries_hm='' + brltty_item_entries_braille="${brltty_item_entries_braille} ht-HandyTech" brltty_item_codes_braille="${brltty_item_codes_braille} ht" brltty_item_names_braille="${brltty_item_names_braille} HandyTech" @@ -16838,14 +14747,14 @@ braille_libraries_il='' ;; esac -# Check whether --with-libbraille was given. +# Check whether --with-libbraille or --without-libbraille was given. if test "${with_libbraille+set}" = set; then - withval=$with_libbraille; libbraille_root="${withval}" + withval="$with_libbraille" + libbraille_root="${withval}" else libbraille_root="yes" -fi - +fi; if test "${libbraille_root}" = "no" then libbraille_root="" @@ -16904,11 +14813,21 @@ brltty_item_codes_braille="${brltty_item_codes_braille} mn" brltty_item_names_braille="${brltty_item_names_braille} MiniBraille" braille_libraries_mn='' +brltty_item_entries_braille="${brltty_item_entries_braille} pg-Pegasus" +brltty_item_codes_braille="${brltty_item_codes_braille} pg" +brltty_item_names_braille="${brltty_item_names_braille} Pegasus" +braille_libraries_pg='' + brltty_item_entries_braille="${brltty_item_entries_braille} pm-Papenmeier" brltty_item_codes_braille="${brltty_item_codes_braille} pm" brltty_item_names_braille="${brltty_item_names_braille} Papenmeier" braille_libraries_pm='' +brltty_item_entries_braille="${brltty_item_entries_braille} sk-Seika" +brltty_item_codes_braille="${brltty_item_codes_braille} sk" +brltty_item_names_braille="${brltty_item_names_braille} Seika" +braille_libraries_sk='' + brltty_item_entries_braille="${brltty_item_entries_braille} tn-TechniBraille" brltty_item_codes_braille="${brltty_item_codes_braille} tn" brltty_item_names_braille="${brltty_item_names_braille} TechniBraille" @@ -16948,7 +14867,7 @@ test -n "${brltty_package_gui_toolkit}" && { brltty_item_entries_braille="${brltty_item_entries_braille} xw-XWindow" brltty_item_codes_braille="${brltty_item_codes_braille} xw" brltty_item_names_braille="${brltty_item_names_braille} XWindow" -braille_libraries_xw='$(XLIBS)' +braille_libraries_xw='$(XTK_LIBS) $(X_LIBS)' } brltty_item_codes_braille="`echo "${brltty_item_codes_braille}" | sed -e 's/^ *//' -e 's/ *$//'`" @@ -16969,14 +14888,14 @@ in ;; esac -# Check whether --with-braille-driver was given. +# Check whether --with-braille-driver or --without-braille-driver was given. if test "${with_braille_driver+set}" = set; then - withval=$with_braille_driver; brltty_items="${withval}" + withval="$with_braille_driver" + brltty_items="${withval}" else brltty_items="${brltty_default}" -fi - +fi; if test "${brltty_items}" = "no" then brltty_external_codes_braille="" @@ -17127,7 +15046,7 @@ if test "${brltty_enabled_braille_support}" != "no" then if test -n "${brltty_internal_codes_braille}" then - braille_driver_objects="`echo "${brltty_internal_names_braille}" | sed -e 's%\([^ ][^ ]*\)%$(BLD_TOP)BrailleDrivers/\1/braille.$O%g'`" + braille_driver_objects="`echo "${brltty_internal_names_braille}" | sed -e 's%\([^ ][^ ]*\)%$(BLD_TOP)Drivers/Braille/\1/braille.$O%g'`" braille_help="braille-help" fi @@ -17145,14 +15064,14 @@ then brltty_summary_lines="${brltty_summary_lines} internal-braille-drivers: ${brltty_internal_codes_braille}" -# Check whether --with-braille-parameters was given. +# Check whether --with-braille-parameters or --without-braille-parameters was given. if test "${with_braille_parameters+set}" = set; then - withval=$with_braille_parameters; braille_parameters="${withval}" + withval="$with_braille_parameters" + braille_parameters="${withval}" else braille_parameters="" -fi - +fi; if test "${braille_parameters}" = "no" then braille_parameters="" @@ -17171,7 +15090,7 @@ fi for brltty_driver in ${brltty_item_names_braille} do - brltty_build_directories="${brltty_build_directories} BrailleDrivers/${brltty_driver}" + brltty_build_directories="${brltty_build_directories} Drivers/Braille/${brltty_driver}" done @@ -17179,8 +15098,8 @@ done -{ echo "$as_me:$LINENO: checking for device directory" >&5 -echo $ECHO_N "checking for device directory... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for device directory" >&5 +echo $ECHO_N "checking for device directory... $ECHO_C" >&6 if test "${brltty_cv_device_directory+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -17194,16 +15113,16 @@ in ;; esac fi -{ echo "$as_me:$LINENO: result: $brltty_cv_device_directory" >&5 -echo "${ECHO_T}$brltty_cv_device_directory" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_device_directory" >&5 +echo "${ECHO_T}$brltty_cv_device_directory" >&6 cat >>confdefs.h <<_ACEOF #define DEVICE_DIRECTORY "${brltty_cv_device_directory}" _ACEOF -{ echo "$as_me:$LINENO: checking for first serial device" >&5 -echo $ECHO_N "checking for first serial device... $ECHO_C" >&6; } +echo "$as_me:$LINENO: checking for first serial device" >&5 +echo $ECHO_N "checking for first serial device... $ECHO_C" >&6 if test "${brltty_cv_device_serial_first+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -17258,20 +15177,25 @@ echo "$as_me: WARNING: no default braille device" >&2;} ;; esac fi -{ echo "$as_me:$LINENO: result: $brltty_cv_device_serial_first" >&5 -echo "${ECHO_T}$brltty_cv_device_serial_first" >&6; } +echo "$as_me:$LINENO: result: $brltty_cv_device_serial_first" >&5 +echo "${ECHO_T}$brltty_cv_device_serial_first" >&6 first_serial_device=${brltty_cv_device_serial_first} +cat >>confdefs.h <<_ACEOF +#define FIRST_SERIAL_DEVICE "${first_serial_device}" +_ACEOF + + -# Check whether --with-braille-device was given. +# Check whether --with-braille-device or --without-braille-device was given. if test "${with_braille_device+set}" = set; then - withval=$with_braille_device; braille_device="${withval}" + withval="$with_braille_device" + braille_device="${withval}" else braille_device="yes" -fi - +fi; if test "${braille_device}" = "no" then braille_device="" @@ -17315,16 +15239,74 @@ brltty_summary_lines="${brltty_summary_lines} -brltty_default_table="nabcc" -# Check whether --with-text-table was given. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +brltty_default_table="en-nabcc" + +# Check whether --with-text-table or --without-text-table was given. if test "${with_text_table+set}" = set; then - withval=$with_text_table; text_table="${withval}" + withval="$with_text_table" + text_table="${withval}" else text_table="${brltty_default_table}" -fi - +fi; install_text_tables=install-text-tables if test "${text_table}" = "no" then @@ -17335,17 +15317,6 @@ then text_table="${brltty_default_table}" fi -if test `expr "${text_table}" : '.*/'` -eq 0 -then - if test `expr "${text_table}" : 'text\.'` -eq 0 - then - text_table="text.${text_table}" - fi -fi -if test `expr "${text_table}" : '.*\.tbl$'` -eq 0 -then - text_table="${text_table}.tbl" -fi brltty_summary_lines="${brltty_summary_lines} text-table: ${text_table}" @@ -17357,21 +15328,24 @@ if test "${text_table}" = "${text_table#/}" then text_table='$(SRC_TOP)$(TBL_DIR)/'"${text_table}" fi - +if test `expr "${text_table}" : '.*\.ttb$'` -eq 0 +then + text_table="${text_table}.ttb" +fi brltty_default_table="attributes" -# Check whether --with-attributes-table was given. +# Check whether --with-attributes-table or --without-attributes-table was given. if test "${with_attributes_table+set}" = set; then - withval=$with_attributes_table; attributes_table="${withval}" + withval="$with_attributes_table" + attributes_table="${withval}" else attributes_table="${brltty_default_table}" -fi - +fi; install_attributes_tables=install-attributes-tables if test "${attributes_table}" = "no" then @@ -17382,10 +15356,6 @@ then attributes_table="${brltty_default_table}" fi -if test `expr "${attributes_table}" : '.*\.tbl$'` -eq 0 -then - attributes_table="${attributes_table}.tbl" -fi brltty_summary_lines="${brltty_summary_lines} attributes-table: ${attributes_table}" @@ -17397,16 +15367,19 @@ if test "${attributes_table}" = "${attributes_table#/}" then attributes_table='$(SRC_TOP)$(TBL_DIR)/'"${attributes_table}" fi +if test `expr "${attributes_table}" : '.*\.atb$'` -eq 0 +then + attributes_table="${attributes_table}.atb" +fi - -# Check whether --enable-speech-support was given. +# Check whether --enable-speech-support or --disable-speech-support was given. if test "${enable_speech_support+set}" = set; then - enableval=$enable_speech_support; + enableval="$enable_speech_support" + else enableval="yes" -fi - +fi; brltty_enabled_speech_support="${enableval}" brltty_summary_lines="${brltty_summary_lines} @@ -17453,14 +15426,14 @@ brltty_item_names_speech="${brltty_item_names_speech} ExternalSpeech" speech_libraries_es='' -# Check whether --with-flite was given. +# Check whether --with-flite or --without-flite was given. if test "${with_flite+set}" = set; then - withval=$with_flite; flite_root="${withval}" + withval="$with_flite" + flite_root="${withval}" else flite_root="yes" -fi - +fi; if test "${flite_root}" = "no" then flite_root="" @@ -17493,13 +15466,13 @@ cat >>confdefs.h <<_ACEOF _ACEOF -# Check whether --with-flite-language was given. +# Check whether --with-flite-language or --without-flite-language was given. if test "${with_flite_language+set}" = set; then - withval=$with_flite_language; flite_language="${withval}" + withval="$with_flite_language" + flite_language="${withval}" else flite_language="yes" -fi - +fi; if test "${flite_language}" = "no" then { { echo "$as_me:$LINENO: error: flite-language not specified" >&5 @@ -17515,13 +15488,13 @@ brltty_summary_lines="${brltty_summary_lines} flite-language: ${flite_language}" -# Check whether --with-flite-lexicon was given. +# Check whether --with-flite-lexicon or --without-flite-lexicon was given. if test "${with_flite_lexicon+set}" = set; then - withval=$with_flite_lexicon; flite_lexicon="${withval}" + withval="$with_flite_lexicon" + flite_lexicon="${withval}" else flite_lexicon="yes" -fi - +fi; if test "${flite_lexicon}" = "no" then { { echo "$as_me:$LINENO: error: flite-lexicon not specified" >&5 @@ -17537,13 +15510,13 @@ brltty_summary_lines="${brltty_summary_lines} flite-lexicon: ${flite_lexicon}" -# Check whether --with-flite-voice was given. +# Check whether --with-flite-voice or --without-flite-voice was given. if test "${with_flite_voice+set}" = set; then - withval=$with_flite_voice; flite_voice="${withval}" + withval="$with_flite_voice" + flite_voice="${withval}" else flite_voice="yes" -fi - +fi; if test "${flite_voice}" = "no" then { { echo "$as_me:$LINENO: error: flite-voice not specified" >&5 @@ -17576,14 +15549,14 @@ brltty_item_names_speech="${brltty_item_names_speech} GenericSay" speech_libraries_gs='' -# Check whether --with-mikropuhe was given. +# Check whether --with-mikropuhe or --without-mikropuhe was given. if test "${with_mikropuhe+set}" = set; then - withval=$with_mikropuhe; mikropuhe_root="${withval}" + withval="$with_mikropuhe" + mikropuhe_root="${withval}" else mikropuhe_root="yes" -fi - +fi; if test "${mikropuhe_root}" = "no" then mikropuhe_root="" @@ -17625,14 +15598,14 @@ speech_libraries_mp='-L$(MPLINUX_ROOT) -lmplinux' } fi -# Check whether --with-speechd was given. +# Check whether --with-speechd or --without-speechd was given. if test "${with_speechd+set}" = set; then - withval=$with_speechd; speechd_root="${withval}" + withval="$with_speechd" + speechd_root="${withval}" else speechd_root="yes" -fi - +fi; if test "${speechd_root}" = "no" then speechd_root="" @@ -17671,14 +15644,14 @@ speech_libraries_sd='-L$(SPEECHD_ROOT)/lib -lspeechd' fi -# Check whether --with-swift was given. +# Check whether --with-swift or --without-swift was given. if test "${with_swift+set}" = set; then - withval=$with_swift; swift_root="${withval}" + withval="$with_swift" + swift_root="${withval}" else swift_root="yes" -fi - +fi; if test "${swift_root}" = "no" then swift_root="" @@ -17717,14 +15690,14 @@ speech_libraries_sw='-L$(SWIFT_ROOT)/lib -lswift -lm' fi -# Check whether --with-theta was given. +# Check whether --with-theta or --without-theta was given. if test "${with_theta+set}" = set; then - withval=$with_theta; theta_root="${withval}" + withval="$with_theta" + theta_root="${withval}" else theta_root="yes" -fi - +fi; if test "${theta_root}" = "no" then theta_root="" @@ -17763,14 +15736,14 @@ speech_libraries_th='-L$(THETA_ROOT)/lib -ltheta' fi -# Check whether --with-viavoice was given. +# Check whether --with-viavoice or --without-viavoice was given. if test "${with_viavoice+set}" = set; then - withval=$with_viavoice; viavoice_root="${withval}" + withval="$with_viavoice" + viavoice_root="${withval}" else viavoice_root="yes" -fi - +fi; if test "${viavoice_root}" = "no" then viavoice_root="" @@ -17834,14 +15807,14 @@ in ;; esac -# Check whether --with-speech-driver was given. +# Check whether --with-speech-driver or --without-speech-driver was given. if test "${with_speech_driver+set}" = set; then - withval=$with_speech_driver; brltty_items="${withval}" + withval="$with_speech_driver" + brltty_items="${withval}" else brltty_items="${brltty_default}" -fi - +fi; if test "${brltty_items}" = "no" then brltty_external_codes_speech="" @@ -17992,7 +15965,7 @@ if test "${brltty_enabled_speech_support}" != "no" then if test -n "${brltty_internal_codes_speech}" then - speech_driver_objects="`echo "${brltty_internal_names_speech}" | sed -e 's%\([^ ][^ ]*\)%$(BLD_TOP)SpeechDrivers/\1/speech.$O%g'`" + speech_driver_objects="`echo "${brltty_internal_names_speech}" | sed -e 's%\([^ ][^ ]*\)%$(BLD_TOP)Drivers/Speech/\1/speech.$O%g'`" speech_help="speech-help" fi @@ -18010,14 +15983,14 @@ then brltty_summary_lines="${brltty_summary_lines} internal-speech-drivers: ${brltty_internal_codes_speech}" -# Check whether --with-speech-parameters was given. +# Check whether --with-speech-parameters or --without-speech-parameters was given. if test "${with_speech_parameters+set}" = set; then - withval=$with_speech_parameters; speech_parameters="${withval}" + withval="$with_speech_parameters" + speech_parameters="${withval}" else speech_parameters="" -fi - +fi; if test "${speech_parameters}" = "no" then speech_parameters="" @@ -18036,7 +16009,7 @@ fi for brltty_driver in ${brltty_item_names_speech} do - brltty_build_directories="${brltty_build_directories} SpeechDrivers/${brltty_driver}" + brltty_build_directories="${brltty_build_directories} Drivers/Speech/${brltty_driver}" done @@ -18124,14 +16097,14 @@ in ;; esac -# Check whether --with-screen-driver was given. +# Check whether --with-screen-driver or --without-screen-driver was given. if test "${with_screen_driver+set}" = set; then - withval=$with_screen_driver; brltty_items="${withval}" + withval="$with_screen_driver" + brltty_items="${withval}" else brltty_items="${brltty_default}" -fi - +fi; if test "${brltty_items}" = "no" then brltty_external_codes_screen="" @@ -18282,7 +16255,7 @@ if test "${brltty_enabled_screen_support}" != "no" then if test -n "${brltty_internal_codes_screen}" then - screen_driver_objects="`echo "${brltty_internal_names_screen}" | sed -e 's%\([^ ][^ ]*\)%$(BLD_TOP)ScreenDrivers/\1/screen.$O%g'`" + screen_driver_objects="`echo "${brltty_internal_names_screen}" | sed -e 's%\([^ ][^ ]*\)%$(BLD_TOP)Drivers/Screen/\1/screen.$O%g'`" screen_help="screen-help" fi @@ -18300,14 +16273,14 @@ then brltty_summary_lines="${brltty_summary_lines} internal-screen-drivers: ${brltty_internal_codes_screen}" -# Check whether --with-screen-parameters was given. +# Check whether --with-screen-parameters or --without-screen-parameters was given. if test "${with_screen_parameters+set}" = set; then - withval=$with_screen_parameters; screen_parameters="${withval}" + withval="$with_screen_parameters" + screen_parameters="${withval}" else screen_parameters="" -fi - +fi; if test "${screen_parameters}" = "no" then screen_parameters="" @@ -18326,7 +16299,7 @@ fi for brltty_driver in ${brltty_item_names_screen} do - brltty_build_directories="${brltty_build_directories} ScreenDrivers/${brltty_driver}" + brltty_build_directories="${brltty_build_directories} Drivers/Screen/${brltty_driver}" done @@ -18341,16 +16314,130 @@ _ACEOF brltty_summary_lines="${brltty_summary_lines} screen-driver: ${brltty_default_code_screen}" +original_prefix="${prefix}" +test "${prefix}" = "NONE" && prefix="" +original_exec_prefix="${exec_prefix}" +test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" +eval 'brltty_reference_directory="'"${execute_root}${program_directory}"'"' +# Check whether --enable-relocatable-install or --disable-relocatable-install was given. +if test "${enable_relocatable_install+set}" = set; then + enableval="$enable_relocatable_install" + +else + enableval="no" +fi; + +brltty_enabled_relocatable_install="${enableval}" +brltty_summary_lines="${brltty_summary_lines} + relocatable-install: ${brltty_enabled_relocatable_install}" + +if test "${enableval}" = "no" +then + : +else + if test "${enableval}" = "yes" + then + brltty_ok=true + else + brltty_ok=false + fi + + if "${brltty_ok}" + then + : + else + { { echo "$as_me:$LINENO: error: invalid selection: --enable-relocatable-install=${enableval}" >&5 +echo "$as_me: error: invalid selection: --enable-relocatable-install=${enableval}" >&2;} + { (exit 1); exit 1; }; } + fi +fi +if test -n "${writable_directory}" +then + eval 'WRITABLE_DIRECTORY="'"${execute_root}${writable_directory}"'"' + +if test "${brltty_enabled_relocatable_install}" = "yes" +then + +eval 'brltty_path="`"${AWK}" -v path="'"${WRITABLE_DIRECTORY}"'" -v reference="'"${brltty_reference_directory}"'" -f "${srcdir}/relpath.awk"`"' +else + brltty_path="${WRITABLE_DIRECTORY}" +fi +eval 'brltty_expanded="'"${brltty_path}"'"' + +cat >>confdefs.h <<_ACEOF +#define WRITABLE_DIRECTORY "${brltty_expanded}" +_ACEOF + +fi +eval 'DATA_DIRECTORY="'"${execute_root}${data_directory}"'"' + +if test "${brltty_enabled_relocatable_install}" = "yes" +then + +eval 'brltty_path="`"${AWK}" -v path="'"${DATA_DIRECTORY}"'" -v reference="'"${brltty_reference_directory}"'" -f "${srcdir}/relpath.awk"`"' +else + brltty_path="${DATA_DIRECTORY}" +fi +eval 'brltty_expanded="'"${brltty_path}"'"' + +cat >>confdefs.h <<_ACEOF +#define DATA_DIRECTORY "${brltty_expanded}" +_ACEOF + +eval 'LIBRARY_DIRECTORY="'"${execute_root}${library_directory}"'"' + +if test "${brltty_enabled_relocatable_install}" = "yes" +then + +eval 'brltty_path="`"${AWK}" -v path="'"${LIBRARY_DIRECTORY}"'" -v reference="'"${brltty_reference_directory}"'" -f "${srcdir}/relpath.awk"`"' +else + brltty_path="${LIBRARY_DIRECTORY}" +fi +eval 'brltty_expanded="'"${brltty_path}"'"' + +cat >>confdefs.h <<_ACEOF +#define LIBRARY_DIRECTORY "${brltty_expanded}" +_ACEOF + +eval 'CONFIGURATION_DIRECTORY="'"${sysconfdir}"'"' + +if test "${brltty_enabled_relocatable_install}" = "yes" +then + +eval 'brltty_path="`"${AWK}" -v path="'"${CONFIGURATION_DIRECTORY}"'" -v reference="'"${brltty_reference_directory}"'" -f "${srcdir}/relpath.awk"`"' +else + brltty_path="${CONFIGURATION_DIRECTORY}" +fi +eval 'brltty_expanded="'"${brltty_path}"'"' + +cat >>confdefs.h <<_ACEOF +#define CONFIGURATION_DIRECTORY "${brltty_expanded}" +_ACEOF + +eval 'brltty_expanded="'""${CONFIGURATION_DIRECTORY}""'"' + +cat >>confdefs.h <<_ACEOF +#define BRLAPI_ETCDIR "${brltty_expanded}" +_ACEOF + +eval 'brltty_expanded="'""${api_socket_path}""'"' + +cat >>confdefs.h <<_ACEOF +#define BRLAPI_SOCKETPATH "${brltty_expanded}" +_ACEOF + +prefix="${original_prefix}" +exec_prefix="${original_exec_prefix}" + -ac_config_commands="$ac_config_commands brltty-summary" + ac_config_commands="$ac_config_commands brltty-summary" brltty_make_files="`echo "${brltty_build_directories}" | sed -e ' s%\([^ ][^ ]*\)%\1/Makefile:prologue.mk.in:\1/Makefile.in%g '`" -ac_config_files="$ac_config_files config.mk brltty.spec brltty.lsm Programs/brltty-config Documents/brltty.conf Documents/brltty.1 Documents/BrlAPIref.doxy BrailleDrivers/Voyager/mkhlp Bindings/Python/setup.py ${brltty_make_files}" - + ac_config_files="$ac_config_files config.mk brltty.spec Programs/brltty-config Documents/brltty.conf Documents/brltty.1 Documents/BrlAPIref.doxy Drivers/Braille/Voyager/mkhlp Bindings/Python/setup.py ${brltty_make_files}" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure @@ -18369,58 +16456,39 @@ _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. +# So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; - esac ;; - esac - done - +{ (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( + ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; - esac | - sort -) | + esac; +} | sed ' - /^ac_cv_env_/b end t clear - :clear + : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - test "x$cache_file" != "x/dev/null" && - { echo "$as_me:$LINENO: updating cache $cache_file" >&5 -echo "$as_me: updating cache $cache_file" >&6;} + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else - { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 -echo "$as_me: not updating unwritable cache $cache_file" >&6;} + echo "not updating unwritable cache $cache_file" fi fi rm -f confcache @@ -18429,18 +16497,32 @@ test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' done LIBOBJS=$ac_libobjs @@ -18471,45 +16553,17 @@ cat >>$CONFIG_STATUS <<\_ACEOF ## M4sh Initialization. ## ## --------------------- ## -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh +# Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix fi +DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then @@ -18519,43 +16573,8 @@ else fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -as_nl=' -' -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } -fi - # Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -done +$as_unset ENV MAIL MAILPATH PS1='$ ' PS2='> ' PS4='+ ' @@ -18569,19 +16588,18 @@ do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + $as_unset $as_var fi done # Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then +if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then as_basename=basename else as_basename=false @@ -18589,120 +16607,159 @@ fi # Name of the executable. -as_me=`$as_basename -- "$0" || +as_me=`$as_basename "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` -# CDPATH. -$as_unset CDPATH + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop - s/-\n.*// + s,-$,, + s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno # Exit status is that of the last command. exit } -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in --n*) - case `echo 'x\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; - esac;; -*) - ECHO_N='-n';; +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then +if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir -fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null +rm -f conf$$ conf$$.exe conf$$.file if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -18711,29 +16768,8 @@ else as_mkdir_p=false fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - +as_executable_p="test -f" + # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -18741,14 +16777,31 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + exec 6>&1 -# Save the log message, to keep $[0] and so on meaningful, and to +# Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by brltty $as_me 3.10dev, which was -generated by GNU Autoconf 2.61. Invocation command line was +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by brltty $as_me 4.0, which was +generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -18756,20 +16809,30 @@ generated by GNU Autoconf 2.61. Invocation command line was CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF # Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi -_ACEOF +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi cat >>$CONFIG_STATUS <<\_ACEOF + ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. @@ -18777,7 +16840,7 @@ current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit + -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions @@ -18796,21 +16859,19 @@ Configuration commands: $config_commands Report bugs to ." - _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -brltty config.status 3.10dev -configured by $0, generated by GNU Autoconf 2.61, - with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" +brltty config.status 4.0 +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" -Copyright (C) 2006 Free Software Foundation, Inc. +Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' +srcdir=$srcdir +INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF @@ -18821,24 +16882,39 @@ while test $# != 0 do case $1 in --*=*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ac_shift=: ;; - *) + -*) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; esac case $ac_option in # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - echo "$ac_cs_version"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift @@ -18848,24 +16924,18 @@ do $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - { echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) { echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2 + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; - *) ac_config_targets="$ac_config_targets $1" - ac_need_defaults=false ;; + *) ac_config_targets="$ac_config_targets $1" ;; esac shift @@ -18881,60 +16951,47 @@ fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then - echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - CONFIG_SHELL=$SHELL - export CONFIG_SHELL - exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - echo "$ac_log" -} >&5 -_ACEOF cat >>$CONFIG_STATUS <<_ACEOF # -# INIT-COMMANDS +# INIT-COMMANDS section. # + brltty_summary_lines="${brltty_summary_lines}" _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -# Handling of arguments. + +cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "Programs/brlapi.h") CONFIG_HEADERS="$CONFIG_HEADERS Programs/brlapi.h" ;; - "brltty-summary") CONFIG_COMMANDS="$CONFIG_COMMANDS brltty-summary" ;; - "config.mk") CONFIG_FILES="$CONFIG_FILES config.mk" ;; - "brltty.spec") CONFIG_FILES="$CONFIG_FILES brltty.spec" ;; - "brltty.lsm") CONFIG_FILES="$CONFIG_FILES brltty.lsm" ;; - "Programs/brltty-config") CONFIG_FILES="$CONFIG_FILES Programs/brltty-config" ;; - "Documents/brltty.conf") CONFIG_FILES="$CONFIG_FILES Documents/brltty.conf" ;; - "Documents/brltty.1") CONFIG_FILES="$CONFIG_FILES Documents/brltty.1" ;; - "Documents/BrlAPIref.doxy") CONFIG_FILES="$CONFIG_FILES Documents/BrlAPIref.doxy" ;; - "BrailleDrivers/Voyager/mkhlp") CONFIG_FILES="$CONFIG_FILES BrailleDrivers/Voyager/mkhlp" ;; - "Bindings/Python/setup.py") CONFIG_FILES="$CONFIG_FILES Bindings/Python/setup.py" ;; - "${brltty_make_files}") CONFIG_FILES="$CONFIG_FILES ${brltty_make_files}" ;; - + case "$ac_config_target" in + # Handling of arguments. + "config.mk" ) CONFIG_FILES="$CONFIG_FILES config.mk" ;; + "brltty.spec" ) CONFIG_FILES="$CONFIG_FILES brltty.spec" ;; + "Programs/brltty-config" ) CONFIG_FILES="$CONFIG_FILES Programs/brltty-config" ;; + "Documents/brltty.conf" ) CONFIG_FILES="$CONFIG_FILES Documents/brltty.conf" ;; + "Documents/brltty.1" ) CONFIG_FILES="$CONFIG_FILES Documents/brltty.1" ;; + "Documents/BrlAPIref.doxy" ) CONFIG_FILES="$CONFIG_FILES Documents/BrlAPIref.doxy" ;; + "Drivers/Braille/Voyager/mkhlp" ) CONFIG_FILES="$CONFIG_FILES Drivers/Braille/Voyager/mkhlp" ;; + "Bindings/Python/setup.py" ) CONFIG_FILES="$CONFIG_FILES Bindings/Python/setup.py" ;; + "${brltty_make_files}" ) CONFIG_FILES="$CONFIG_FILES ${brltty_make_files}" ;; + "brltty-summary" ) CONFIG_COMMANDS="$CONFIG_COMMANDS brltty-summary" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "Programs/brlapi.h" ) CONFIG_HEADERS="$CONFIG_HEADERS Programs/brlapi.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done - # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely @@ -18946,683 +17003,540 @@ if $ac_need_defaults; then fi # Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, +# simply because there is no reason to put it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. +# Create a temporary directory, and hook for its removal unless debugging. $debug || { - tmp= - trap 'exit_status=$? - { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status -' 0 + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } + # Create a (secure) tmp directory for tmp files. { - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + # -# Set up the sed scripts for CONFIG_FILES section. +# CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h -if test -n "$CONFIG_FILES"; then - -_ACEOF - - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -SHELL!$SHELL$ac_delim -PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim -PACKAGE_NAME!$PACKAGE_NAME$ac_delim -PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim -PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim -PACKAGE_STRING!$PACKAGE_STRING$ac_delim -PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim -exec_prefix!$exec_prefix$ac_delim -prefix!$prefix$ac_delim -program_transform_name!$program_transform_name$ac_delim -bindir!$bindir$ac_delim -sbindir!$sbindir$ac_delim -libexecdir!$libexecdir$ac_delim -datarootdir!$datarootdir$ac_delim -datadir!$datadir$ac_delim -sysconfdir!$sysconfdir$ac_delim -sharedstatedir!$sharedstatedir$ac_delim -localstatedir!$localstatedir$ac_delim -includedir!$includedir$ac_delim -oldincludedir!$oldincludedir$ac_delim -docdir!$docdir$ac_delim -infodir!$infodir$ac_delim -htmldir!$htmldir$ac_delim -dvidir!$dvidir$ac_delim -pdfdir!$pdfdir$ac_delim -psdir!$psdir$ac_delim -libdir!$libdir$ac_delim -localedir!$localedir$ac_delim -mandir!$mandir$ac_delim -DEFS!$DEFS$ac_delim -ECHO_C!$ECHO_C$ac_delim -ECHO_N!$ECHO_N$ac_delim -ECHO_T!$ECHO_T$ac_delim -LIBS!$LIBS$ac_delim -build_alias!$build_alias$ac_delim -host_alias!$host_alias$ac_delim -target_alias!$target_alias$ac_delim -brltty_manual_directories!$brltty_manual_directories$ac_delim -api_major!$api_major$ac_delim -api_minor!$api_minor$ac_delim -api_revision!$api_revision$ac_delim -api_version!$api_version$ac_delim -api_release!$api_release$ac_delim -PACKAGE_TITLE!$PACKAGE_TITLE$ac_delim -package_date!$package_date$ac_delim -build!$build$ac_delim -build_cpu!$build_cpu$ac_delim -build_vendor!$build_vendor$ac_delim -build_os!$build_os$ac_delim -host!$host$ac_delim -host_cpu!$host_cpu$ac_delim -host_vendor!$host_vendor$ac_delim -host_os!$host_os$ac_delim -target!$target$ac_delim -target_cpu!$target_cpu$ac_delim -target_vendor!$target_vendor$ac_delim -target_os!$target_os$ac_delim -execute_root!$execute_root$ac_delim -install_root!$install_root$ac_delim -configuration_file!$configuration_file$ac_delim -program_directory!$program_directory$ac_delim -library_directory!$library_directory$ac_delim -writable_directory!$writable_directory$ac_delim -data_directory!$data_directory$ac_delim -manpage_directory!$manpage_directory$ac_delim -include_directory!$include_directory$ac_delim -WRITABLE_DIRECTORY!$WRITABLE_DIRECTORY$ac_delim -AWK!$AWK$ac_delim -DATA_DIRECTORY!$DATA_DIRECTORY$ac_delim -LIBRARY_DIRECTORY!$LIBRARY_DIRECTORY$ac_delim -CONFIGURATION_DIRECTORY!$CONFIGURATION_DIRECTORY$ac_delim -compiler_prefix!$compiler_prefix$ac_delim -SET_MAKE!$SET_MAKE$ac_delim -CC!$CC$ac_delim -CFLAGS!$CFLAGS$ac_delim -LDFLAGS!$LDFLAGS$ac_delim -CPPFLAGS!$CPPFLAGS$ac_delim -ac_ct_CC!$ac_ct_CC$ac_delim -EXEEXT!$EXEEXT$ac_delim -OBJEXT!$OBJEXT$ac_delim -CXX!$CXX$ac_delim -CXXFLAGS!$CXXFLAGS$ac_delim -ac_ct_CXX!$ac_ct_CXX$ac_delim -LD!$LD$ac_delim -RANLIB!$RANLIB$ac_delim -YACC!$YACC$ac_delim -YFLAGS!$YFLAGS$ac_delim -LN_S!$LN_S$ac_delim -INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim -INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim -INSTALL_DATA!$INSTALL_DATA$ac_delim -DOXYGEN!$DOXYGEN$ac_delim -can_make_BrlAPIref!$can_make_BrlAPIref$ac_delim -INSTALL_OPTION_STRIP!$INSTALL_OPTION_STRIP$ac_delim -MKOBJ!$MKOBJ$ac_delim -MKMOD!$MKMOD$ac_delim -MKLIB!$MKLIB$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi - -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -CEOF$ac_eof -_ACEOF - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -CONFLIBDIR!$CONFLIBDIR$ac_delim -CPP!$CPP$ac_delim -GREP!$GREP$ac_delim -EGREP!$EGREP$ac_delim -OCAMLC!$OCAMLC$ac_delim -OCAMLMKLIB!$OCAMLMKLIB$ac_delim -OCAMLOPT!$OCAMLOPT$ac_delim -OCAMLCDOTOPT!$OCAMLCDOTOPT$ac_delim -OCAMLOPTDOTOPT!$OCAMLOPTDOTOPT$ac_delim -OCAMLFIND!$OCAMLFIND$ac_delim -OCAMLBEST!$OCAMLBEST$ac_delim -OCAMLVERSION!$OCAMLVERSION$ac_delim -OCAMLLIB!$OCAMLLIB$ac_delim -OCAMLWIN32!$OCAMLWIN32$ac_delim -OCAML_CLIBS!$OCAML_CLIBS$ac_delim -OCAML_NCLIB!$OCAML_NCLIB$ac_delim -OCAML_INSTALL_TARGET!$OCAML_INSTALL_TARGET$ac_delim -OCAML_UNINSTALL_TARGET!$OCAML_UNINSTALL_TARGET$ac_delim -CAML_OK!$CAML_OK$ac_delim -JAVAC_PATH!$JAVAC_PATH$ac_delim -JAVAC!$JAVAC$ac_delim -JAVADOC_NAME!$JAVADOC_NAME$ac_delim -JAVADOC!$JAVADOC$ac_delim -JAR_NAME!$JAR_NAME$ac_delim -JAR!$JAR$ac_delim -JAVA_JAR!$JAVA_JAR$ac_delim -JAVA_JAR_DIR!$JAVA_JAR_DIR$ac_delim -JAVA_JNI_HDR!$JAVA_JNI_HDR$ac_delim -JAVA_JNI_INC!$JAVA_JNI_INC$ac_delim -JAVA_JNI_FLAGS!$JAVA_JNI_FLAGS$ac_delim -JAVA_JNI!$JAVA_JNI$ac_delim -JAVA_JNI_DIR!$JAVA_JNI_DIR$ac_delim -JAVA_OK!$JAVA_OK$ac_delim -PYTHON!$PYTHON$ac_delim -PYTHON_PROLOGUE!$PYTHON_PROLOGUE$ac_delim -PYTHON_VERSION!$PYTHON_VERSION$ac_delim -PYTHON_CPPFLAGS!$PYTHON_CPPFLAGS$ac_delim -PYTHON_LIBS!$PYTHON_LIBS$ac_delim -PYTHON_EXTRA_LIBS!$PYTHON_EXTRA_LIBS$ac_delim -PYTHON_EXTRA_LDFLAGS!$PYTHON_EXTRA_LDFLAGS$ac_delim -PYTHON_SITE_PKG!$PYTHON_SITE_PKG$ac_delim -PYREXC!$PYREXC$ac_delim -PYREXC_CFLAGS!$PYREXC_CFLAGS$ac_delim -PYTHON_OK!$PYTHON_OK$ac_delim -TCLSH!$TCLSH$ac_delim -TCL_OK!$TCL_OK$ac_delim -TCL_CPPFLAGS!$TCL_CPPFLAGS$ac_delim -TCL_LIBS!$TCL_LIBS$ac_delim -api_objects!$api_objects$ac_delim -api_libraries!$api_libraries$ac_delim -api_bindings!$api_bindings$ac_delim -all_api_bindings!$all_api_bindings$ac_delim -install_api_bindings!$install_api_bindings$ac_delim -all_api!$all_api$ac_delim -install_api!$install_api$ac_delim -api_dynamic_library!$api_dynamic_library$ac_delim -install_api_libraries!$install_api_libraries$ac_delim -api_authkeyfile!$api_authkeyfile$ac_delim -brltty_package_curses!$brltty_package_curses$ac_delim -brltty_libs_curses!$brltty_libs_curses$ac_delim -XMKMF!$XMKMF$ac_delim -X_CFLAGS!$X_CFLAGS$ac_delim -X_PRE_LIBS!$X_PRE_LIBS$ac_delim -X_LIBS!$X_LIBS$ac_delim -X_EXTRA_LIBS!$X_EXTRA_LIBS$ac_delim -all_xbrlapi!$all_xbrlapi$ac_delim -install_xbrlapi!$install_xbrlapi$ac_delim -brltty_package_gui_toolkit!$brltty_package_gui_toolkit$ac_delim -brltty_libs_x!$brltty_libs_x$ac_delim -SYSCFLAGS!$SYSCFLAGS$ac_delim -YACC_CFLAGS!$YACC_CFLAGS$ac_delim -LIBCFLAGS!$LIBCFLAGS$ac_delim -LIBCXXFLAGS!$LIBCXXFLAGS$ac_delim -archive_prefix!$archive_prefix$ac_delim -archive_extension!$archive_extension$ac_delim -library_prefix!$library_prefix$ac_delim -library_extension!$library_extension$ac_delim -module_name!$module_name$ac_delim -module_extension!$module_extension$ac_delim -libsearch_variable!$libsearch_variable$ac_delim -system_object!$system_object$ac_delim -translation_table_objects!$translation_table_objects$ac_delim -contracted_braille_objects!$contracted_braille_objects$ac_delim -install_contraction_tables!$install_contraction_tables$ac_delim -beeper_tune_objects!$beeper_tune_objects$ac_delim -pcm_tune_objects!$pcm_tune_objects$ac_delim -midi_tune_objects!$midi_tune_objects$ac_delim -fm_tune_objects!$fm_tune_objects$ac_delim -PM_CONFIGFILE_DEPENDENCY!$PM_CONFIGFILE_DEPENDENCY$ac_delim -usb_objects!$usb_objects$ac_delim -bluetooth_objects!$bluetooth_objects$ac_delim -braille_libraries_al!$braille_libraries_al$ac_delim -braille_libraries_at!$braille_libraries_at$ac_delim -braille_libraries_ba!$braille_libraries_ba$ac_delim -braille_libraries_bd!$braille_libraries_bd$ac_delim -braille_libraries_bl!$braille_libraries_bl$ac_delim -braille_libraries_bm!$braille_libraries_bm$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi - -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -CEOF$ac_eof -_ACEOF - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -braille_libraries_bn!$braille_libraries_bn$ac_delim -braille_libraries_bs!$braille_libraries_bs$ac_delim -braille_libraries_cb!$braille_libraries_cb$ac_delim -braille_libraries_ec!$braille_libraries_ec$ac_delim -braille_libraries_eu!$braille_libraries_eu$ac_delim -braille_libraries_fs!$braille_libraries_fs$ac_delim -braille_libraries_ht!$braille_libraries_ht$ac_delim -braille_libraries_il!$braille_libraries_il$ac_delim -libbraille_root!$libbraille_root$ac_delim -braille_libraries_lb!$braille_libraries_lb$ac_delim -braille_libraries_lt!$braille_libraries_lt$ac_delim -braille_libraries_mb!$braille_libraries_mb$ac_delim -braille_libraries_md!$braille_libraries_md$ac_delim -braille_libraries_mn!$braille_libraries_mn$ac_delim -braille_libraries_pm!$braille_libraries_pm$ac_delim -braille_libraries_tn!$braille_libraries_tn$ac_delim -braille_libraries_ts!$braille_libraries_ts$ac_delim -braille_libraries_tt!$braille_libraries_tt$ac_delim -braille_libraries_vd!$braille_libraries_vd$ac_delim -braille_libraries_vo!$braille_libraries_vo$ac_delim -braille_libraries_vr!$braille_libraries_vr$ac_delim -braille_libraries_vs!$braille_libraries_vs$ac_delim -braille_libraries_xw!$braille_libraries_xw$ac_delim -brltty_item_codes_braille!$brltty_item_codes_braille$ac_delim -brltty_item_names_braille!$brltty_item_names_braille$ac_delim -brltty_external_codes_braille!$brltty_external_codes_braille$ac_delim -brltty_external_names_braille!$brltty_external_names_braille$ac_delim -brltty_internal_codes_braille!$brltty_internal_codes_braille$ac_delim -brltty_internal_names_braille!$brltty_internal_names_braille$ac_delim -braille_driver_libraries!$braille_driver_libraries$ac_delim -braille_driver_objects!$braille_driver_objects$ac_delim -braille_drivers!$braille_drivers$ac_delim -braille_help!$braille_help$ac_delim -first_serial_device!$first_serial_device$ac_delim -braille_device!$braille_device$ac_delim -install_text_tables!$install_text_tables$ac_delim -text_table!$text_table$ac_delim -install_attributes_tables!$install_attributes_tables$ac_delim -attributes_table!$attributes_table$ac_delim -speech_libraries_al!$speech_libraries_al$ac_delim -speech_libraries_bl!$speech_libraries_bl$ac_delim -speech_libraries_cb!$speech_libraries_cb$ac_delim -speech_libraries_es!$speech_libraries_es$ac_delim -flite_root!$flite_root$ac_delim -flite_language!$flite_language$ac_delim -flite_lexicon!$flite_lexicon$ac_delim -flite_voice!$flite_voice$ac_delim -speech_libraries_fl!$speech_libraries_fl$ac_delim -speech_libraries_fv!$speech_libraries_fv$ac_delim -speech_libraries_gs!$speech_libraries_gs$ac_delim -mikropuhe_root!$mikropuhe_root$ac_delim -speech_libraries_mp!$speech_libraries_mp$ac_delim -speechd_root!$speechd_root$ac_delim -speech_libraries_sd!$speech_libraries_sd$ac_delim -swift_root!$swift_root$ac_delim -speech_libraries_sw!$speech_libraries_sw$ac_delim -theta_root!$theta_root$ac_delim -speech_libraries_th!$speech_libraries_th$ac_delim -viavoice_root!$viavoice_root$ac_delim -speech_libraries_vv!$speech_libraries_vv$ac_delim -speech_support_object!$speech_support_object$ac_delim -brltty_item_codes_speech!$brltty_item_codes_speech$ac_delim -brltty_item_names_speech!$brltty_item_names_speech$ac_delim -brltty_external_codes_speech!$brltty_external_codes_speech$ac_delim -brltty_external_names_speech!$brltty_external_names_speech$ac_delim -brltty_internal_codes_speech!$brltty_internal_codes_speech$ac_delim -brltty_internal_names_speech!$brltty_internal_names_speech$ac_delim -speech_driver_libraries!$speech_driver_libraries$ac_delim -speech_driver_objects!$speech_driver_objects$ac_delim -speech_drivers!$speech_drivers$ac_delim -speech_help!$speech_help$ac_delim -screen_libraries_lx!$screen_libraries_lx$ac_delim -screen_libraries_hd!$screen_libraries_hd$ac_delim -screen_libraries_wn!$screen_libraries_wn$ac_delim -screen_libraries_pb!$screen_libraries_pb$ac_delim -screen_libraries_sc!$screen_libraries_sc$ac_delim -screen_libraries_as!$screen_libraries_as$ac_delim -cspi_includes!$cspi_includes$ac_delim -cspi_libdirs!$cspi_libdirs$ac_delim -cspi_libraries!$cspi_libraries$ac_delim -brltty_item_codes_screen!$brltty_item_codes_screen$ac_delim -brltty_item_names_screen!$brltty_item_names_screen$ac_delim -brltty_external_codes_screen!$brltty_external_codes_screen$ac_delim -brltty_external_names_screen!$brltty_external_names_screen$ac_delim -brltty_internal_codes_screen!$brltty_internal_codes_screen$ac_delim -brltty_internal_names_screen!$brltty_internal_names_screen$ac_delim -screen_driver_libraries!$screen_driver_libraries$ac_delim -screen_driver_objects!$screen_driver_objects$ac_delim -screen_drivers!$screen_drivers$ac_delim -screen_help!$screen_help$ac_delim -install_drivers!$install_drivers$ac_delim -LIBOBJS!$LIBOBJS$ac_delim -LTLIBOBJS!$LTLIBOBJS$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 93; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@brltty_manual_directories@,$brltty_manual_directories,;t t +s,@api_major@,$api_major,;t t +s,@api_minor@,$api_minor,;t t +s,@api_revision@,$api_revision,;t t +s,@api_version@,$api_version,;t t +s,@api_release@,$api_release,;t t +s,@PACKAGE_TITLE@,$PACKAGE_TITLE,;t t +s,@package_date@,$package_date,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@target@,$target,;t t +s,@target_cpu@,$target_cpu,;t t +s,@target_vendor@,$target_vendor,;t t +s,@target_os@,$target_os,;t t +s,@execute_root@,$execute_root,;t t +s,@install_root@,$install_root,;t t +s,@configuration_file@,$configuration_file,;t t +s,@program_directory@,$program_directory,;t t +s,@library_directory@,$library_directory,;t t +s,@writable_directory@,$writable_directory,;t t +s,@data_directory@,$data_directory,;t t +s,@manpage_directory@,$manpage_directory,;t t +s,@include_directory@,$include_directory,;t t +s,@compiler_prefix@,$compiler_prefix,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@CXX@,$CXX,;t t +s,@CXXFLAGS@,$CXXFLAGS,;t t +s,@ac_ct_CXX@,$ac_ct_CXX,;t t +s,@LD@,$LD,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@YACC@,$YACC,;t t +s,@AWK@,$AWK,;t t +s,@LN_S@,$LN_S,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@DOXYGEN@,$DOXYGEN,;t t +s,@can_make_BrlAPIref@,$can_make_BrlAPIref,;t t +s,@INSTALL_OPTION_STRIP@,$INSTALL_OPTION_STRIP,;t t +s,@MKOBJ@,$MKOBJ,;t t +s,@MKMOD@,$MKMOD,;t t +s,@MKLIB@,$MKLIB,;t t +s,@CONFLIBDIR@,$CONFLIBDIR,;t t +s,@CPP@,$CPP,;t t +s,@EGREP@,$EGREP,;t t +s,@ICU_CONFIG@,$ICU_CONFIG,;t t +s,@icu_includes@,$icu_includes,;t t +s,@icu_libraries@,$icu_libraries,;t t +s,@OCAMLC@,$OCAMLC,;t t +s,@OCAMLMKLIB@,$OCAMLMKLIB,;t t +s,@OCAMLOPT@,$OCAMLOPT,;t t +s,@OCAMLCDOTOPT@,$OCAMLCDOTOPT,;t t +s,@OCAMLOPTDOTOPT@,$OCAMLOPTDOTOPT,;t t +s,@OCAMLFIND@,$OCAMLFIND,;t t +s,@OCAMLBEST@,$OCAMLBEST,;t t +s,@OCAMLVERSION@,$OCAMLVERSION,;t t +s,@OCAMLLIB@,$OCAMLLIB,;t t +s,@OCAMLWIN32@,$OCAMLWIN32,;t t +s,@OCAML_CLIBS@,$OCAML_CLIBS,;t t +s,@OCAML_NCLIB@,$OCAML_NCLIB,;t t +s,@OCAML_INSTALL_TARGET@,$OCAML_INSTALL_TARGET,;t t +s,@OCAML_UNINSTALL_TARGET@,$OCAML_UNINSTALL_TARGET,;t t +s,@CAML_OK@,$CAML_OK,;t t +s,@JAVAC_PATH@,$JAVAC_PATH,;t t +s,@JAVAC@,$JAVAC,;t t +s,@JAVADOC_NAME@,$JAVADOC_NAME,;t t +s,@JAVADOC@,$JAVADOC,;t t +s,@JAR_NAME@,$JAR_NAME,;t t +s,@JAR@,$JAR,;t t +s,@JAVA_JAR@,$JAVA_JAR,;t t +s,@JAVA_JAR_DIR@,$JAVA_JAR_DIR,;t t +s,@JAVA_JNI_HDR@,$JAVA_JNI_HDR,;t t +s,@JAVA_JNI_INC@,$JAVA_JNI_INC,;t t +s,@JAVA_JNI_FLAGS@,$JAVA_JNI_FLAGS,;t t +s,@JAVA_JNI@,$JAVA_JNI,;t t +s,@JAVA_JNI_DIR@,$JAVA_JNI_DIR,;t t +s,@JAVA_OK@,$JAVA_OK,;t t +s,@PYTHON@,$PYTHON,;t t +s,@PYTHON_PROLOGUE@,$PYTHON_PROLOGUE,;t t +s,@PYTHON_VERSION@,$PYTHON_VERSION,;t t +s,@PYTHON_CPPFLAGS@,$PYTHON_CPPFLAGS,;t t +s,@PYTHON_LIBS@,$PYTHON_LIBS,;t t +s,@PYTHON_EXTRA_LIBS@,$PYTHON_EXTRA_LIBS,;t t +s,@PYTHON_EXTRA_LDFLAGS@,$PYTHON_EXTRA_LDFLAGS,;t t +s,@PYTHON_SITE_PKG@,$PYTHON_SITE_PKG,;t t +s,@PYREXC@,$PYREXC,;t t +s,@PYREXC_CFLAGS@,$PYREXC_CFLAGS,;t t +s,@PYTHON_OK@,$PYTHON_OK,;t t +s,@TCLSH@,$TCLSH,;t t +s,@TCL_DIR@,$TCL_DIR,;t t +s,@TCL_OK@,$TCL_OK,;t t +s,@TCL_CPPFLAGS@,$TCL_CPPFLAGS,;t t +s,@TCL_LIBS@,$TCL_LIBS,;t t +s,@api_objects@,$api_objects,;t t +s,@api_libraries@,$api_libraries,;t t +s,@api_bindings@,$api_bindings,;t t +s,@all_api_bindings@,$all_api_bindings,;t t +s,@install_api_bindings@,$install_api_bindings,;t t +s,@all_api@,$all_api,;t t +s,@build_api@,$build_api,;t t +s,@install_api@,$install_api,;t t +s,@api_ref@,$api_ref,;t t +s,@api_dynamic_library@,$api_dynamic_library,;t t +s,@install_api_libraries@,$install_api_libraries,;t t +s,@uninstall_api_libraries@,$uninstall_api_libraries,;t t +s,@api_authkeyfile@,$api_authkeyfile,;t t +s,@api_socket_path@,$api_socket_path,;t t +s,@brltty_package_curses@,$brltty_package_curses,;t t +s,@brltty_libs_curses@,$brltty_libs_curses,;t t +s,@brltty_package_gui_toolkit@,$brltty_package_gui_toolkit,;t t +s,@brltty_cflags_x@,$brltty_cflags_x,;t t +s,@brltty_libs_x@,$brltty_libs_x,;t t +s,@brltty_libs_xkb@,$brltty_libs_xkb,;t t +s,@brltty_libs_xtk@,$brltty_libs_xtk,;t t +s,@all_xbrlapi@,$all_xbrlapi,;t t +s,@install_xbrlapi@,$install_xbrlapi,;t t +s,@SYSCFLAGS@,$SYSCFLAGS,;t t +s,@YACC_CFLAGS@,$YACC_CFLAGS,;t t +s,@LIBCFLAGS@,$LIBCFLAGS,;t t +s,@LIBCXXFLAGS@,$LIBCXXFLAGS,;t t +s,@archive_prefix@,$archive_prefix,;t t +s,@archive_extension@,$archive_extension,;t t +s,@library_prefix@,$library_prefix,;t t +s,@library_extension@,$library_extension,;t t +s,@module_name@,$module_name,;t t +s,@module_extension@,$module_extension,;t t +s,@libsearch_variable@,$libsearch_variable,;t t +s,@system_object@,$system_object,;t t +s,@contracted_braille_objects@,$contracted_braille_objects,;t t +s,@install_contraction_tables@,$install_contraction_tables,;t t +s,@beeper_tune_objects@,$beeper_tune_objects,;t t +s,@pcm_tune_objects@,$pcm_tune_objects,;t t +s,@midi_tune_objects@,$midi_tune_objects,;t t +s,@fm_tune_objects@,$fm_tune_objects,;t t +s,@PM_CONFIGFILE_DEPENDENCY@,$PM_CONFIGFILE_DEPENDENCY,;t t +s,@usb_objects@,$usb_objects,;t t +s,@bluetooth_objects@,$bluetooth_objects,;t t +s,@braille_libraries_al@,$braille_libraries_al,;t t +s,@braille_libraries_at@,$braille_libraries_at,;t t +s,@braille_libraries_ba@,$braille_libraries_ba,;t t +s,@braille_libraries_bd@,$braille_libraries_bd,;t t +s,@braille_libraries_bl@,$braille_libraries_bl,;t t +s,@braille_libraries_bm@,$braille_libraries_bm,;t t +s,@braille_libraries_bn@,$braille_libraries_bn,;t t +s,@braille_libraries_cb@,$braille_libraries_cb,;t t +s,@braille_libraries_ec@,$braille_libraries_ec,;t t +s,@braille_libraries_eu@,$braille_libraries_eu,;t t +s,@braille_libraries_fs@,$braille_libraries_fs,;t t +s,@braille_libraries_hm@,$braille_libraries_hm,;t t +s,@braille_libraries_ht@,$braille_libraries_ht,;t t +s,@braille_libraries_il@,$braille_libraries_il,;t t +s,@libbraille_root@,$libbraille_root,;t t +s,@braille_libraries_lb@,$braille_libraries_lb,;t t +s,@braille_libraries_lt@,$braille_libraries_lt,;t t +s,@braille_libraries_mb@,$braille_libraries_mb,;t t +s,@braille_libraries_md@,$braille_libraries_md,;t t +s,@braille_libraries_mn@,$braille_libraries_mn,;t t +s,@braille_libraries_pg@,$braille_libraries_pg,;t t +s,@braille_libraries_pm@,$braille_libraries_pm,;t t +s,@braille_libraries_sk@,$braille_libraries_sk,;t t +s,@braille_libraries_tn@,$braille_libraries_tn,;t t +s,@braille_libraries_ts@,$braille_libraries_ts,;t t +s,@braille_libraries_tt@,$braille_libraries_tt,;t t +s,@braille_libraries_vd@,$braille_libraries_vd,;t t +s,@braille_libraries_vo@,$braille_libraries_vo,;t t +s,@braille_libraries_vr@,$braille_libraries_vr,;t t +s,@braille_libraries_vs@,$braille_libraries_vs,;t t +s,@braille_libraries_xw@,$braille_libraries_xw,;t t +s,@brltty_item_codes_braille@,$brltty_item_codes_braille,;t t +s,@brltty_item_names_braille@,$brltty_item_names_braille,;t t +s,@brltty_external_codes_braille@,$brltty_external_codes_braille,;t t +s,@brltty_external_names_braille@,$brltty_external_names_braille,;t t +s,@brltty_internal_codes_braille@,$brltty_internal_codes_braille,;t t +s,@brltty_internal_names_braille@,$brltty_internal_names_braille,;t t +s,@braille_driver_libraries@,$braille_driver_libraries,;t t +s,@braille_driver_objects@,$braille_driver_objects,;t t +s,@braille_drivers@,$braille_drivers,;t t +s,@braille_help@,$braille_help,;t t +s,@first_serial_device@,$first_serial_device,;t t +s,@braille_device@,$braille_device,;t t +s,@install_text_tables@,$install_text_tables,;t t +s,@text_table@,$text_table,;t t +s,@install_attributes_tables@,$install_attributes_tables,;t t +s,@attributes_table@,$attributes_table,;t t +s,@speech_libraries_al@,$speech_libraries_al,;t t +s,@speech_libraries_bl@,$speech_libraries_bl,;t t +s,@speech_libraries_cb@,$speech_libraries_cb,;t t +s,@speech_libraries_es@,$speech_libraries_es,;t t +s,@flite_root@,$flite_root,;t t +s,@flite_language@,$flite_language,;t t +s,@flite_lexicon@,$flite_lexicon,;t t +s,@flite_voice@,$flite_voice,;t t +s,@speech_libraries_fl@,$speech_libraries_fl,;t t +s,@speech_libraries_fv@,$speech_libraries_fv,;t t +s,@speech_libraries_gs@,$speech_libraries_gs,;t t +s,@mikropuhe_root@,$mikropuhe_root,;t t +s,@speech_libraries_mp@,$speech_libraries_mp,;t t +s,@speechd_root@,$speechd_root,;t t +s,@speech_libraries_sd@,$speech_libraries_sd,;t t +s,@swift_root@,$swift_root,;t t +s,@speech_libraries_sw@,$speech_libraries_sw,;t t +s,@theta_root@,$theta_root,;t t +s,@speech_libraries_th@,$speech_libraries_th,;t t +s,@viavoice_root@,$viavoice_root,;t t +s,@speech_libraries_vv@,$speech_libraries_vv,;t t +s,@speech_support_object@,$speech_support_object,;t t +s,@brltty_item_codes_speech@,$brltty_item_codes_speech,;t t +s,@brltty_item_names_speech@,$brltty_item_names_speech,;t t +s,@brltty_external_codes_speech@,$brltty_external_codes_speech,;t t +s,@brltty_external_names_speech@,$brltty_external_names_speech,;t t +s,@brltty_internal_codes_speech@,$brltty_internal_codes_speech,;t t +s,@brltty_internal_names_speech@,$brltty_internal_names_speech,;t t +s,@speech_driver_libraries@,$speech_driver_libraries,;t t +s,@speech_driver_objects@,$speech_driver_objects,;t t +s,@speech_drivers@,$speech_drivers,;t t +s,@speech_help@,$speech_help,;t t +s,@screen_libraries_lx@,$screen_libraries_lx,;t t +s,@screen_libraries_hd@,$screen_libraries_hd,;t t +s,@screen_libraries_wn@,$screen_libraries_wn,;t t +s,@screen_libraries_pb@,$screen_libraries_pb,;t t +s,@screen_libraries_sc@,$screen_libraries_sc,;t t +s,@screen_libraries_as@,$screen_libraries_as,;t t +s,@cspi_includes@,$cspi_includes,;t t +s,@cspi_libdirs@,$cspi_libdirs,;t t +s,@cspi_libraries@,$cspi_libraries,;t t +s,@brltty_item_codes_screen@,$brltty_item_codes_screen,;t t +s,@brltty_item_names_screen@,$brltty_item_names_screen,;t t +s,@brltty_external_codes_screen@,$brltty_external_codes_screen,;t t +s,@brltty_external_names_screen@,$brltty_external_names_screen,;t t +s,@brltty_internal_codes_screen@,$brltty_internal_codes_screen,;t t +s,@brltty_internal_names_screen@,$brltty_internal_names_screen,;t t +s,@screen_driver_libraries@,$screen_driver_libraries,;t t +s,@screen_driver_objects@,$screen_driver_objects,;t t +s,@screen_drivers@,$screen_drivers,;t t +s,@screen_help@,$screen_help,;t t +s,@WRITABLE_DIRECTORY@,$WRITABLE_DIRECTORY,;t t +s,@DATA_DIRECTORY@,$DATA_DIRECTORY,;t t +s,@LIBRARY_DIRECTORY@,$LIBRARY_DIRECTORY,;t t +s,@CONFIGURATION_DIRECTORY@,$CONFIGURATION_DIRECTORY,;t t +s,@install_drivers@,$install_drivers,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat fi -done - -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi +fi # test -n "$CONFIG_FILES" -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-3.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -:end -s/|#_!!_#|//g -CEOF$ac_eof _ACEOF - - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/ -s/:*\${srcdir}:*/:/ -s/:*@srcdir@:*/:/ -s/^\([^=]*=[ ]*\):*/\1/ -s/:*$// -s/^[^=]*=[ ]*$// -}' -fi - cat >>$CONFIG_STATUS <<\_ACEOF -fi # test -n "$CONFIG_FILES" - - -for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 -echo "$as_me: error: Invalid tag $ac_tag." >&2;} - { (exit 1); exit 1; }; };; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -echo "$as_me: error: cannot find input file: $ac_f" >&2;} - { (exit 1); exit 1; }; };; - esac - ac_file_inputs="$ac_file_inputs $ac_f" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input="Generated from "`IFS=: - echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - fi - - case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin";; - esac - ;; +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; esac - ac_dir=`$as_dirname -- "$ac_file" || + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - { as_dir="$ac_dir" - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; }; } + ac_builddir=. -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) +if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi case $srcdir in - .) # We are building in place. + .) # No --srcdir option. We are building in place. ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac - case $ac_mode in - :F) - # - # CONFIG_FILE - # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= - -case `sed -n '/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p -' $ac_file_inputs` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } _ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub @@ -19630,145 +17544,371 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s&@configure_input@&$configure_input&;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -$ac_datarootdir_hack -" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" | sed -f "$tmp/subs-3.sed" >$tmp/out - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && - { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&5 -echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&2;} - - rm -f "$tmp/stdin" +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - -) cat "$tmp/out"; rm -f "$tmp/out";; - *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; esac - ;; - :H) - # - # CONFIG_HEADER - # -_ACEOF - -# Transform confdefs.h into a sed script `conftest.defines', that -# substitutes the proper values into config.h.in to produce config.h. -rm -f conftest.defines conftest.tail -# First, append a space to every undef/define line, to ease matching. -echo 's/$/ /' >conftest.defines -# Then, protect against being on the right side of a sed subst, or in -# an unquoted here document, in config.status. If some macros were -# called several times there might be several #defines for the same -# symbol, which is useless. But do not sort them, since the last -# AC_DEFINE must be honored. -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where -# NAME is the cpp macro being defined, VALUE is the value it is being given. -# PARAMS is the parameter list in the macro definition--in most cases, it's -# just an empty string. -ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' -ac_dB='\\)[ (].*,\\1define\\2' -ac_dC=' ' -ac_dD=' ,' - -uniq confdefs.h | - sed -n ' - t rset - :rset - s/^[ ]*#[ ]*define[ ][ ]*// - t ok - d - :ok - s/[\\&,]/\\&/g - s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p - s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p - ' >>conftest.defines - -# Remove the space that was appended to ease matching. -# Then replace #undef with comments. This is necessary, for + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. -# (The regexp can be short, since the line contains either #define or #undef.) -echo 's/ $// -s,^[ #]*u.*,/* & */,' >>conftest.defines - -# Break up conftest.defines: -ac_max_sed_lines=50 - -# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" -# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" -# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" -# et cetera. -ac_in='$ac_file_inputs' -ac_out='"$tmp/out1"' -ac_nxt='"$tmp/out2"' - -while : +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null do - # Write a here document: - cat >>$CONFIG_STATUS <<_ACEOF - # First, check the format of the line: - cat >"\$tmp/defines.sed" <<\\CEOF -/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def -/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def -b -:def -_ACEOF - sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF - sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS - ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in - sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail - grep . conftest.tail >/dev/null || break + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail rm -f conftest.defines mv conftest.tail conftest.defines done -rm -f conftest.defines conftest.tail +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs -echo "ac_result=$ac_in" >>$CONFIG_STATUS cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in if test x"$ac_file" != x-; then - echo "/* $configure_input */" >"$tmp/config.h" - cat "$ac_result" >>"$tmp/config.h" - if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + rm -f $ac_file - mv "$tmp/config.h" $ac_file + mv $tmp/config.h $ac_file fi else - echo "/* $configure_input */" - cat "$ac_result" + cat $tmp/config.h + rm -f $tmp/config.h fi - rm -f "$tmp/out12" - ;; +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF - :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 -echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac - case $ac_file$ac_mode in - "brltty-summary":C) { echo "$as_me:$LINENO: ${brltty_summary_lines}" >&5 -echo "$as_me: ${brltty_summary_lines}" >&6;} ;; + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + brltty-summary ) { echo "$as_me:$LINENO: ${brltty_summary_lines}" >&5 +echo "$as_me: ${brltty_summary_lines}" >&6;} ;; esac -done # for ac_tag +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF diff --git a/configure.ac b/configure.ac index d31a5291d6a03fecf1cf74576541b7566c6c58ff..1b8d5ec3d69f1687bbb1bd31432eab7994a06ad4 100644 --- a/configure.ac +++ b/configure.ac @@ -3,13 +3,14 @@ dnl Process this file with autoconf 2.53 to produce a configure script. # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # @@ -17,7 +18,7 @@ dnl Process this file with autoconf 2.53 to produce a configure script. ############################################################################### AC_PREREQ([2.53]) -AC_INIT([brltty], [3.10dev], [http://mielke.cc/brltty/]) +AC_INIT([brltty], [4.0], [http://mielke.cc/brltty/]) AC_CONFIG_SRCDIR([Programs/brltty.h]) BRLTTY_SUMMARY_BEGIN brltty_build_directories=". Programs Documents" @@ -35,7 +36,7 @@ brltty_build_directories="${brltty_build_directories} ${brltty_manual_directorie AC_SUBST([api_major], [0]) AC_SUBST([api_minor], [5]) -AC_SUBST([api_revision], [1]) +AC_SUBST([api_revision], [3]) AC_SUBST([api_version], [${api_major}.${api_minor}]) AC_SUBST([api_release], [${api_version}.${api_revision}]) AC_DEFINE_UNQUOTED([BRLAPI_RELEASE], ["${api_release}"], @@ -54,7 +55,6 @@ AC_DEFINE_UNQUOTED([PACKAGE_TITLE], ["${PACKAGE_TITLE}"], PACKAGE_REVISION="`"${srcdir}/revision" "${srcdir}"`" if test -z "${PACKAGE_REVISION}" then - AC_MSG_WARN([package revision not known]) PACKAGE_REVISION="" fi AC_DEFINE_UNQUOTED([PACKAGE_REVISION], ["${PACKAGE_REVISION}"], @@ -105,7 +105,9 @@ BRLTTY_DEFINE_EXPANDED([CONFIGURATION_FILE], ["${configuration_file}"], [Define this to be a string containing the name of the default configuration file.]) BRLTTY_PORTABLE_DIRECTORY([includedir], [/usr]) +BRLTTY_PORTABLE_DIRECTORY([datarootdir], [/usr]) BRLTTY_PORTABLE_DIRECTORY([mandir], [/usr/share]) +BRLTTY_PORTABLE_DIRECTORY([localstatedir], []) BRLTTY_SUMMARY_ITEM([libdir], [libdir]) BRLTTY_SUMMARY_ITEM([sysconfdir], [sysconfdir]) @@ -155,30 +157,6 @@ BRLTTY_ARG_REQUIRED( [include_directory], ["${includedir}/${PACKAGE_NAME}"] ) -original_prefix="${prefix}" -test "${prefix}" = "NONE" && prefix="" -original_exec_prefix="${exec_prefix}" -test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" -BRLTTY_VAR_EXPAND([brltty_reference_directory], [${execute_root}${program_directory}]) -BRLTTY_ARG_ENABLE( - [relocatable-install], - [installation using paths relative to the program directory]) -if test -n "${writable_directory}" -then - BRLTTY_DEFINE_DIRECTORY([WRITABLE_DIRECTORY], [${execute_root}${writable_directory}], - [Define this to be a string containing the path to a writable directory.]) -fi -BRLTTY_DEFINE_DIRECTORY([DATA_DIRECTORY], [${execute_root}${data_directory}], - [Define this to be a string containing the path to the data files directory.]) -BRLTTY_DEFINE_DIRECTORY([LIBRARY_DIRECTORY], [${execute_root}${library_directory}], - [Define this to be a string containing the path to the library directory.]) -BRLTTY_DEFINE_DIRECTORY([CONFIGURATION_DIRECTORY], [${sysconfdir}], - [Define this to be a string containing the path to the configuration directory.]) -BRLTTY_DEFINE_EXPANDED([BRLAPI_ETCDIR], ["${CONFIGURATION_DIRECTORY}"], - [Define this to be a string containing the path to the directory where the authorization key and driver-dependent key names are found.]) -prefix="${original_prefix}" -exec_prefix="${original_exec_prefix}" - brltty_default_compiler_prefix="${host_os}-" BRLTTY_ARG_WITH( [compiler-prefix], [PREFIX], @@ -277,6 +255,81 @@ AC_PROG_YACC AC_PROG_AWK AC_PROG_LN_S +AC_CACHE_CHECK([for linkage editor program creation flags], [brltty_cv_prog_ld_flags], [dnl +case "${host_os}" +in + linux*|gnu*|openbsd*|freebsd*|kfreebsd*|netbsd*|*qnx*) + brltty_cv_prog_ld_flags="-export-dynamic" + ;; + solaris*) + brltty_cv_prog_ld_flags="" + ;; + hpux*) + brltty_cv_prog_ld_flags="-E +s" + ;; + osf*) + brltty_cv_prog_ld_flags="" + ;; + cygwin*|mingw*) + brltty_cv_prog_ld_flags="-export-dynamic --enable-auto-import" + ;; + msdos*) + brltty_cv_prog_ld_flags="" + ;; + darwin*) + brltty_cv_prog_ld_flags="" + ;; + *) + AC_MSG_ERROR([linkage editor program creation flags not configured for ${host_os}]) + ;; +esac]) +brltty_link_flags="${brltty_cv_prog_ld_flags}" + +AC_CACHE_CHECK([for static linkage flag], [brltty_cv_prog_ld_static], [dnl +if test "${GCC}" = "yes" +then + brltty_cv_prog_ld_static="-static" +else + case "${host_os}" + in + linux*|gnu*|openbsd*|freebsd*|kfreebsd*|*qnx*|cygwin*|mingw*) + brltty_cv_prog_ld_static="-static" + ;; + netbsd*) + brltty_cv_prog_ld_static="-Bstatic" + ;; + solaris*) + brltty_cv_prog_ld_static="-dn" + ;; + hpux*) + brltty_cv_prog_ld_static="-Bstatic" + ;; + osf*) + brltty_cv_prog_ld_static="-non_shared" + ;; + *) + AC_MSG_ERROR([static linkage not supported by ${host_os}]) + ;; + esac + brltty_cv_prog_ld_static="BRLTTY_OPTIONS_LD2CC([${brltty_cv_prog_ld_static}])" +fi]) +brltty_static_flag="${brltty_cv_prog_ld_static}" + +pkgconfig_flags_libs="--libs" +BRLTTY_ARG_ENABLE( + [standalone-programs], + [statically linked executables], + [], +[dnl + brltty_standalone_programs="yes" + pkgconfig_flags_libs="${pkgconfig_flags_libs} --static" + LDFLAGS="${LDFLAGS} ${brltty_static_flag}" +], [dnl + AC_DEFINE([ENABLE_SHARED_OBJECTS], [1], + [Define this if shared object support is to be included.]) +]) +LDFLAGS="${LDFLAGS} BRLTTY_OPTIONS_LD2CC([${brltty_link_flags}])" + AC_PROG_INSTALL BRLTTY_EXECUTABLE_PATH([INSTALL]) @@ -429,13 +482,28 @@ BRLTTY_ARG_DISABLE( AC_CHECK_FUNC([wcslen], [AC_CHECK_HEADERS([wchar.h])]) +icu_includes="" +icu_libraries="" BRLTTY_ARG_DISABLE( [icu], [support for Unicode-based internationalization], [], [dnl - AC_CHECK_HEADERS([unicode/uchar.h], [AC_HAVE_LIBRARY([icuuc])]) + AC_PATH_PROG([ICU_CONFIG], [icu-config]) + test -n "${ICU_CONFIG}" && ${ICU_CONFIG} --exists && { + icu_includes="`${ICU_CONFIG} --cppflags-searchpath`" + icu_libraries="`${ICU_CONFIG} --ldflags`" + AC_DEFINE_UNQUOTED([HAVE_ICU], [1], + [Define this if Unicode-based internationalization support is to be included.]) + + if test "${brltty_standalone_programs}" = "yes" + then + icu_libraries="`echo ${icu_libraries} | sed -e 's/\(-l\)\(icu\)/\1s\2/g'`" + fi + } ]) +AC_SUBST([icu_includes]) +AC_SUBST([icu_libraries]) BRLTTY_ARG_DISABLE( [iconv], @@ -457,21 +525,28 @@ BRLTTY_ARG_DISABLE( [Define this if the application programming interface is to be included.]) BRLTTY_ARG_PARAMETERS([api], [application programming interface]) - api_objects='brlapi_server.$O brlapi_keyranges.$O' + api_objects='brlapi_server.$O brlapi_keyranges.$O auth.$O' api_libraries="${LIBS}" all_api="all-api" + build_api="api" install_api="install-api" + api_ref='$(API_LIBS)' api_dynamic_library="api-dynamic-library" install_api_libraries="install-api-libraries" + uninstall_api_libraries="uninstall-api-libraries" + api_socket_path="${localstatedir}/lib/BrlAPI" + case "${host_os}" in cygwin*|mingw*) AC_DEFINE([BRLAPI_WIN32], [1], [Define this if the Win32 programming interface is available.]) + api_socket_path='\\\\\\\\.\\\\pipe\\\\BrlAPI' api_dynamic_library="api-dynamic-library-windows" install_api_libraries="install-api-libraries-windows" + uninstall_api_libraries="uninstall-api-libraries-windows" ;; esac @@ -497,50 +572,63 @@ AC_SUBST([api_bindings]) AC_SUBST([all_api_bindings]) AC_SUBST([install_api_bindings]) AC_SUBST([all_api]) +AC_SUBST([build_api]) AC_SUBST([install_api]) +AC_SUBST([api_ref]) AC_SUBST([api_dynamic_library]) AC_SUBST([install_api_libraries]) +AC_SUBST([uninstall_api_libraries]) AC_SUBST([api_authkeyfile], [brlapi.key]) +AC_SUBST([api_socket_path]) BRLTTY_DEFINE_EXPANDED([BRLAPI_AUTHKEYFILE], ["${api_authkeyfile}"], [Define this to be a string containing the name of the file containing the authorization key.]) brltty_curses_libs_save="${LIBS}" BRLTTY_PACKAGE_CHOOSE([curses], - [ncursesw ncurses.h], + [ncursesw ncursesw/ncurses.h], [ncurses ncurses.h], [curses curses.h]) brltty_libs_curses="${LIBS%${brltty_curses_libs_save}}" LIBS="${brltty_curses_libs_save}" AC_SUBST([brltty_libs_curses]) -AC_PATH_XTRA -if test "${no_x}" != "yes" -then - AC_SUBST([all_xbrlapi], [all-xbrlapi]) - AC_SUBST([install_xbrlapi], [install-xbrlapi]) - - brltty_x_cppflags_save="${CPPFLAGS}" - CPPFLAGS="${CPPFLAGS} ${X_CFLAGS}" +brltty_cflags_x="" +brltty_libs_x="" +brltty_libs_xkb="" +brltty_libs_xtk="" +all_xbrlapi="" +install_xbrlapi="" +BRLTTY_ARG_DISABLE( + [x], + [support for X11], + [], +[dnl + pkg-config --exists x11 && { + brltty_cflags_x="`pkg-config --cflags-only-I x11`" + brltty_libs_x="`pkg-config ${pkgconfig_flags_libs} x11`" - brltty_x_ldflags_save="${LDFLAGS}" - LDFLAGS="${LDFLAGS} ${X_LIBS}" + all_xbrlapi="all-xbrlapi" + install_xbrlapi="install-xbrlapi" - brltty_x_libs_save="${LIBS}" + pkg-config --exists xext && { + brltty_libs_xkb="`pkg-config ${pkgconfig_flags_libs} xext` ${brltty_libs_xkb}" - AC_HAVE_LIBRARY([X11], [ - LIBS="${X_EXTRA_LIBS} ${X_PRE_LIBS} -lX11 ${LIBS}" + pkg-config --exists xtst && { + brltty_libs_xkb="`pkg-config ${pkgconfig_flags_libs} xtst` ${brltty_libs_xkb}" - AC_HAVE_LIBRARY([Xext], [ - LIBS="-lXext ${LIBS}" - AC_HAVE_LIBRARY([Xtst], [ - LIBS="-lXtst ${LIBS}" AC_CHECK_HEADERS([X11/extensions/XTest.h]) AC_CHECK_HEADERS([X11/extensions/XKB.h]) - ]) - ]) + } + } - AC_HAVE_LIBRARY([Xt], [ - LIBS="-lXt ${LIBS}" + pkg-config --exists xt && { + brltty_libs_xtk="`pkg-config ${pkgconfig_flags_libs} xt` ${brltty_libs_xtk}" + + brltty_cppflags_save="${CPPFLAGS}" + CPPFLAGS="${CPPFLAGS} ${brltty_cflags_x}" + + brltty_libs_save="${LIBS}" + LIBS="${brltty_libs_xtk} ${brltty_libs_x} ${LIBS}" BRLTTY_PACKAGE_CHOOSE([gui_toolkit], [Xaw X11/Xaw/Form.h X11/Xaw/Paned.h X11/Xaw/Label.h X11/Xaw/Command.h X11/Xaw/Repeater.h], @@ -548,16 +636,20 @@ then [neXtaw X11/neXtaw/Form.h X11/neXtaw/Paned.h X11/neXtaw/Label.h X11/neXtaw/Command.h X11/neXtaw/Repeater.h], [XawPlus X11/XawPlus/Form.h X11/XawPlus/Paned.h X11/XawPlus/Label.h X11/XawPlus/Command.h X11/XawPlus/Repeater.h], [Xm Xm/Xm.h Xm/Form.h Xm/PanedW.h Xm/Label.h Xm/PushB.h]) - ]) - ]) - brltty_libs_x="${LDFLAGS#${brltty_x_ldflags_save}} ${LIBS%${brltty_x_libs_save}}" - AC_SUBST([brltty_libs_x]) + brltty_libs_xtk="${LIBS%${brltty_libs_x} ${brltty_libs_save}}" - LIBS="${brltty_x_libs_save}" - LDFLAGS="${brltty_x_ldflags_save}" - CPPFLAGS="${brltty_x_cppflags_save}" -fi + CPPFLAGS="${brltty_cppflags_save}" + LIBS="${brltty_libs_save}" + } + } +]) +AC_SUBST([brltty_cflags_x]) +AC_SUBST([brltty_libs_x]) +AC_SUBST([brltty_libs_xkb]) +AC_SUBST([brltty_libs_xtk]) +AC_SUBST([all_xbrlapi]) +AC_SUBST([install_xbrlapi]) test -z "$brltty_package_gui_toolkit" && { case "${host_os}" @@ -635,11 +727,11 @@ then fi AC_CACHE_CHECK( - [if the compiler understands __attribute__((format(printf)))], + [if the compiler understands __attribute__((format(__printf__)))], [brltty_cv_c_attribute_format_printf], [AC_TRY_COMPILE([ extern void conf_attribute_format_printf(const char *format, ...) - __attribute__((format(printf, 1, 2))); + __attribute__((format(__printf__, 1, 2))); ], [], [brltty_cv_c_attribute_format_printf=yes], @@ -688,7 +780,7 @@ AC_CACHE_CHECK([for system-dependent compilation flags], [brltty_cv_prog_cc_sysf case "${host_os}" in linux*|gnu*|kfreebsd*) - brltty_cv_prog_cc_sysflags="-D_POSIX_C_SOURCE=2 -D_BSD_SOURCE -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED" + brltty_cv_prog_cc_sysflags="-D_POSIX_C_SOURCE=2 -D_BSD_SOURCE -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D_GNU_SOURCE" ;; solaris*) brltty_cv_prog_cc_sysflags="-D_XOPEN_SOURCE=500 -D__EXTENSIONS__" @@ -927,8 +1019,6 @@ BRLTTY_ARG_DISABLE( AC_DEFINE([ENABLE_TABLE_SELECTION], [1], [Define this to include table selection within the preferences menu.]) ]) -translation_table_objects='tbl.$O tbl_native.$O' -AC_SUBST([translation_table_objects]) BRLTTY_ARG_DISABLE( [learn-mode], @@ -1015,78 +1105,6 @@ BRLTTY_ARG_DISABLE( AC_CHECK_LIB([gpm], [Gpm_Open]) ]) -AC_CACHE_CHECK([for linkage editor program creation flags], [brltty_cv_prog_ld_flags], [dnl -case "${host_os}" -in - linux*|gnu*|openbsd*|freebsd*|kfreebsd*|netbsd*|*qnx*) - brltty_cv_prog_ld_flags="-export-dynamic" - ;; - solaris*) - brltty_cv_prog_ld_flags="" - ;; - hpux*) - brltty_cv_prog_ld_flags="-E +s" - ;; - osf*) - brltty_cv_prog_ld_flags="" - ;; - cygwin*|mingw*) - brltty_cv_prog_ld_flags="-export-dynamic --enable-auto-import" - ;; - msdos*) - brltty_cv_prog_ld_flags="" - ;; - darwin*) - brltty_cv_prog_ld_flags="" - ;; - *) - AC_MSG_ERROR([linkage editor program creation flags not configured for ${host_os}]) - ;; -esac]) -brltty_link_flags="${brltty_cv_prog_ld_flags}" - -AC_CACHE_CHECK([for static linkage flag], [brltty_cv_prog_ld_static], [dnl -if test "${GCC}" = "yes" -then - brltty_cv_prog_ld_static="-static" -else - case "${host_os}" - in - linux*|gnu*|openbsd*|freebsd*|kfreebsd*|*qnx*|cygwin*|mingw*) - brltty_cv_prog_ld_static="-static" - ;; - netbsd*) - brltty_cv_prog_ld_static="-Bstatic" - ;; - solaris*) - brltty_cv_prog_ld_static="-dn" - ;; - hpux*) - brltty_cv_prog_ld_static="-Bstatic" - ;; - osf*) - brltty_cv_prog_ld_static="-non_shared" - ;; - *) - AC_MSG_ERROR([static linkage not supported by ${host_os}]) - ;; - esac - brltty_cv_prog_ld_static="BRLTTY_OPTIONS_LD2CC([${brltty_cv_prog_ld_static}])" -fi]) -brltty_static_flag="${brltty_cv_prog_ld_static}" -BRLTTY_ARG_ENABLE( - [standalone-programs], - [statically linked executables], - [], -[dnl - brltty_standalone_programs="yes" - LDFLAGS="${LDFLAGS} ${brltty_static_flag}" -], [dnl - AC_DEFINE([ENABLE_SHARED_OBJECTS], [1], - [Define this if shared object support is to be included.]) -]) -LDFLAGS="${LDFLAGS} BRLTTY_OPTIONS_LD2CC([${brltty_link_flags}])" - case "${host_os}" in linux*|gnu*|solaris*|openbsd*|freebsd*|kfreebsd*|netbsd*|osf*|*qnx*|cygwin*|mingw*) @@ -1125,7 +1143,10 @@ in usb_object="darwin" ;; *) - AC_CHECK_HEADERS([usb.h], [usb_object="libusb"]) + AC_CHECK_HEADERS([usb.h], [AC_HAVE_LIBRARY([usb], [dnl + usb_object="libusb" + LIBS="-lusb ${LIBS}" +])]) ;; esac if test -n "${usb_object}" @@ -1137,12 +1158,6 @@ then [dnl AC_DEFINE([ENABLE_USB_SUPPORT], [1], [Define this if Universal Serial Bus support is to be included.]) - case "${usb_object}" - in - libusb) - AC_HAVE_LIBRARY([usb]) - ;; - esac usb_objects="usb."'$O'" usb_${usb_object}."'$O' ]) else @@ -1179,17 +1194,17 @@ AC_SUBST([bluetooth_objects]) BRLTTY_BRAILLE_DRIVER([al], [Alva]) BRLTTY_BRAILLE_DRIVER([at], [Albatross]) test -n "${api_objects}" && { - BRLTTY_BRAILLE_DRIVER([ba], [BrlAPI], [-L$(BLD_TOP)$(PGM_DIR) -lbrlapi]) + BRLTTY_BRAILLE_DRIVER([ba], [BrlAPI], [$(API_LIBS)]) } BRLTTY_BRAILLE_DRIVER([bd], [Braudi]) BRLTTY_BRAILLE_DRIVER([bl], [BrailleLite]) BRLTTY_BRAILLE_DRIVER([bm], [Baum]) BRLTTY_BRAILLE_DRIVER([bn], [BrailleNote]) -BRLTTY_BRAILLE_DRIVER([bs], [BrailleSense]) BRLTTY_BRAILLE_DRIVER([cb], [CombiBraille]) BRLTTY_BRAILLE_DRIVER([ec], [EcoBraille]) BRLTTY_BRAILLE_DRIVER([eu], [EuroBraille]) BRLTTY_BRAILLE_DRIVER([fs], [FreedomScientific]) +BRLTTY_BRAILLE_DRIVER([hm], [HIMS]) BRLTTY_BRAILLE_DRIVER([ht], [HandyTech]) case "${host_os}" in @@ -1204,7 +1219,9 @@ BRLTTY_BRAILLE_DRIVER([lt], [LogText]) BRLTTY_BRAILLE_DRIVER([mb], [MultiBraille]) BRLTTY_BRAILLE_DRIVER([md], [MDV]) BRLTTY_BRAILLE_DRIVER([mn], [MiniBraille]) +BRLTTY_BRAILLE_DRIVER([pg], [Pegasus]) BRLTTY_BRAILLE_DRIVER([pm], [Papenmeier]) +BRLTTY_BRAILLE_DRIVER([sk], [Seika]) BRLTTY_BRAILLE_DRIVER([tn], [TechniBraille]) BRLTTY_BRAILLE_DRIVER([ts], [TSI]) BRLTTY_BRAILLE_DRIVER([tt], [TTY], [$(CLIBS)]) @@ -1213,9 +1230,9 @@ BRLTTY_BRAILLE_DRIVER([vo], [Voyager]) BRLTTY_BRAILLE_DRIVER([vr], [Virtual]) BRLTTY_BRAILLE_DRIVER([vs], [VisioBraille]) test -n "${brltty_package_gui_toolkit}" && { - BRLTTY_BRAILLE_DRIVER([xw], [XWindow], [$(XLIBS)]) + BRLTTY_BRAILLE_DRIVER([xw], [XWindow], [$(XTK_LIBS) $(X_LIBS)]) } -BRLTTY_ARG_DRIVER([braille], [BrailleDrivers]) +BRLTTY_ARG_DRIVER([braille], [Braille]) AC_CACHE_CHECK([for device directory], [brltty_cv_device_directory], [dnl case "${host_os}" @@ -1281,6 +1298,8 @@ in ;; esac]) AC_SUBST([first_serial_device], [${brltty_cv_device_serial_first}]) +AC_DEFINE_UNQUOTED([FIRST_SERIAL_DEVICE], ["${first_serial_device}"], + [Define this to be a string containing the path to the first serial device.]) BRLTTY_ARG_WITH( [braille-device], [DEVICE], @@ -1304,33 +1323,91 @@ AC_DEFINE_UNQUOTED([BRAILLE_DEVICE], ["${braille_device}"], [Define this to be a string containing the path to the default braille device.]) BRLTTY_SUMMARY_ITEM([braille-device], [braille_device]) -BRLTTY_TEXT_TABLE([cz], [Czech (iso-8859-2)]) -BRLTTY_TEXT_TABLE([da], [Danish (iso-8859-1)]) -BRLTTY_TEXT_TABLE([de], [German (iso-8859-1)]) +BRLTTY_TEXT_TABLE([auto], [locale-based autoselection]) +BRLTTY_TEXT_TABLE([ar], [Arabic (generic)]) +BRLTTY_TEXT_TABLE([as], [Assamese]) +BRLTTY_TEXT_TABLE([awa], [Awadhi]) +BRLTTY_TEXT_TABLE([bg], [Bulgarian]) +BRLTTY_TEXT_TABLE([bh], [Bihari]) +BRLTTY_TEXT_TABLE([bn], [Bengali]) +BRLTTY_TEXT_TABLE([bo], [Tibetan]) +BRLTTY_TEXT_TABLE([bra], [Braj]) +BRLTTY_TEXT_TABLE([cs], [Czech]) +BRLTTY_TEXT_TABLE([cy], [Welsh]) +BRLTTY_TEXT_TABLE([da], [Danish]) +BRLTTY_TEXT_TABLE([de], [German]) +BRLTTY_TEXT_TABLE([dra], [Dravidian]) +BRLTTY_TEXT_TABLE([el], [Greek]) +BRLTTY_TEXT_TABLE([en], [English]) +BRLTTY_TEXT_TABLE([en_CA], [English (Canada)]) BRLTTY_TEXT_TABLE([en_UK], [English (United Kingdom)]) BRLTTY_TEXT_TABLE([en_US], [English (United States)]) -BRLTTY_TEXT_TABLE([es], [Spanish (iso-8859-1)]) -BRLTTY_TEXT_TABLE([fi1], [Finnish (iso-8859-1)]) -BRLTTY_TEXT_TABLE([fi2], [Finnish (iso-8859-1)]) +BRLTTY_TEXT_TABLE([en-nabcc], [English (North American Braille Computer Code)]) +BRLTTY_TEXT_TABLE([eo], [Esperanto]) +BRLTTY_TEXT_TABLE([es], [Spanish]) +BRLTTY_TEXT_TABLE([et], [Estonian]) +BRLTTY_TEXT_TABLE([fi], [Finnish]) +BRLTTY_TEXT_TABLE([fr], [French]) BRLTTY_TEXT_TABLE([fr_CA], [French (Canada)]) BRLTTY_TEXT_TABLE([fr_FR], [French (France)]) -BRLTTY_TEXT_TABLE([fr-2007], [Unified French (iso-8859-1)]) -BRLTTY_TEXT_TABLE([fr-cbifs], [Code Braille Informatique Français Standard (iso-8859-1)]) -BRLTTY_TEXT_TABLE([it], [Italian (iso-8859-1)]) -BRLTTY_TEXT_TABLE([nabcc], [North American Braille Computer Code (iso-8859-1)]) +BRLTTY_TEXT_TABLE([fr-2007], [French (unified)]) +BRLTTY_TEXT_TABLE([fr-cbifs], [French (Code Braille Informatique Français Standard)]) +BRLTTY_TEXT_TABLE([ga], [Irish]) +BRLTTY_TEXT_TABLE([gd], [Gaelic]) +BRLTTY_TEXT_TABLE([gon], [Gondi]) +BRLTTY_TEXT_TABLE([gu], [Gujarati]) +BRLTTY_TEXT_TABLE([he], [Hebrew]) +BRLTTY_TEXT_TABLE([hi], [Hindi]) +BRLTTY_TEXT_TABLE([hr], [Croatian]) +BRLTTY_TEXT_TABLE([hu], [Hungarian]) +BRLTTY_TEXT_TABLE([hy], [Armenian]) +BRLTTY_TEXT_TABLE([is], [Icelandic]) +BRLTTY_TEXT_TABLE([it], [Italian]) +BRLTTY_TEXT_TABLE([kha], [Khasi]) +BRLTTY_TEXT_TABLE([kn], [Kannada]) +BRLTTY_TEXT_TABLE([kok], [Konkani]) +BRLTTY_TEXT_TABLE([kru], [Kurukh]) +BRLTTY_TEXT_TABLE([lt], [Lituanian]) +BRLTTY_TEXT_TABLE([lv], [Latvian]) +BRLTTY_TEXT_TABLE([mg], [Malagasy]) +BRLTTY_TEXT_TABLE([mi], [Maori]) +BRLTTY_TEXT_TABLE([ml], [Malayalam]) +BRLTTY_TEXT_TABLE([mni], [Manipuri]) +BRLTTY_TEXT_TABLE([mr], [Marathi]) +BRLTTY_TEXT_TABLE([mt], [Maltese]) +BRLTTY_TEXT_TABLE([mun], [Mundari]) +BRLTTY_TEXT_TABLE([mwr], [Marwari]) +BRLTTY_TEXT_TABLE([ne], [Nepali]) +BRLTTY_TEXT_TABLE([new], [Newari]) +BRLTTY_TEXT_TABLE([nl], [Dutch (Netherlands)]) +BRLTTY_TEXT_TABLE([nl_BE], [Dutch (Belgium)]) +BRLTTY_TEXT_TABLE([nl_NL], [Dutch (Netherlands)]) +BRLTTY_TEXT_TABLE([no], [Norwegian (with support for other languages)]) BRLTTY_TEXT_TABLE([no-generic], [Norwegian (with support for other languages)]) BRLTTY_TEXT_TABLE([no-oub], [Norwegian (Offentlig Utvalg for Blindeskrift)]) -BRLTTY_TEXT_TABLE([pl], [Polish (iso-8859-2)]) -BRLTTY_TEXT_TABLE([pt], [Portuguese (iso-8859-1)]) -BRLTTY_TEXT_TABLE([ru], [Russian (koi8-r)]) -BRLTTY_TEXT_TABLE([se], [Swedish (1996 standard)]) -BRLTTY_TEXT_TABLE([se-old], [Swedish (1989 standard)]) -BRLTTY_TEXT_TABLE([vni], [Vietnamese (iso-8859-1)]) -BRLTTY_ARG_TABLE([text], [nabcc], [text]) +BRLTTY_TEXT_TABLE([nwc], [Old Newari]) +BRLTTY_TEXT_TABLE([or], [Oriya]) +BRLTTY_TEXT_TABLE([pa], [Panjabi]) +BRLTTY_TEXT_TABLE([pi], [Pali]) +BRLTTY_TEXT_TABLE([pl], [Polish]) +BRLTTY_TEXT_TABLE([pt], [Portuguese]) +BRLTTY_TEXT_TABLE([ro], [Romanian]) +BRLTTY_TEXT_TABLE([ru], [Russian]) +BRLTTY_TEXT_TABLE([sa], [Sanskrit]) +BRLTTY_TEXT_TABLE([sat], [Santali]) +BRLTTY_TEXT_TABLE([sd], [Sindhi]) +BRLTTY_TEXT_TABLE([sk], [Slovak]) +BRLTTY_TEXT_TABLE([sv], [Swedish]) +BRLTTY_TEXT_TABLE([sw], [Swahili]) +BRLTTY_TEXT_TABLE([ta], [Tamil]) +BRLTTY_TEXT_TABLE([te], [Telugu]) +BRLTTY_TEXT_TABLE([tr], [Turkish]) +BRLTTY_TEXT_TABLE([vi], [Vietnamese]) +BRLTTY_ARG_TABLE([text], [en-nabcc], [ttb]) BRLTTY_ATTRIBUTES_TABLE([attributes], []) BRLTTY_ATTRIBUTES_TABLE([attrib], []) -BRLTTY_ARG_TABLE([attributes], [attributes], []) +BRLTTY_ARG_TABLE([attributes], [attributes], [atb]) BRLTTY_ARG_DISABLE( [speech-support], @@ -1375,7 +1452,7 @@ BRLTTY_ARG_DISABLE( BRLTTY_IF_PACKAGE([ViaVoice], [viavoice], [include/eci.h], [BRLTTY_SPEECH_DRIVER([vv], [ViaVoice], [-L$(VIAVOICE_ROOT)/lib -libmeci50])]) ]) AC_SUBST([speech_support_object]) -BRLTTY_ARG_DRIVER([speech], [SpeechDrivers]) +BRLTTY_ARG_DRIVER([speech], [Speech]) case "${host_os}" in @@ -1414,11 +1491,37 @@ AC_SUBST([cspi_includes]) AC_SUBST([cspi_libdirs]) AC_SUBST([cspi_libraries]) -BRLTTY_ARG_DRIVER([screen], [ScreenDrivers]) +BRLTTY_ARG_DRIVER([screen], [Screen]) AC_DEFINE_UNQUOTED([SCREEN_DRIVER], ["${brltty_default_code_screen}"], [Define this to be a string containing the default screen driver code.]) BRLTTY_SUMMARY_ITEM([screen-driver], [brltty_default_code_screen]) +original_prefix="${prefix}" +test "${prefix}" = "NONE" && prefix="" +original_exec_prefix="${exec_prefix}" +test "${exec_prefix}" = "NONE" && exec_prefix="${prefix}" +BRLTTY_VAR_EXPAND([brltty_reference_directory], [${execute_root}${program_directory}]) +BRLTTY_ARG_ENABLE( + [relocatable-install], + [installation using paths relative to the program directory]) +if test -n "${writable_directory}" +then + BRLTTY_DEFINE_DIRECTORY([WRITABLE_DIRECTORY], [${execute_root}${writable_directory}], + [Define this to be a string containing the path to a writable directory.]) +fi +BRLTTY_DEFINE_DIRECTORY([DATA_DIRECTORY], [${execute_root}${data_directory}], + [Define this to be a string containing the path to the data files directory.]) +BRLTTY_DEFINE_DIRECTORY([LIBRARY_DIRECTORY], [${execute_root}${library_directory}], + [Define this to be a string containing the path to the library directory.]) +BRLTTY_DEFINE_DIRECTORY([CONFIGURATION_DIRECTORY], [${sysconfdir}], + [Define this to be a string containing the path to the configuration directory.]) +BRLTTY_DEFINE_EXPANDED([BRLAPI_ETCDIR], ["${CONFIGURATION_DIRECTORY}"], + [Define this to be a string containing the path to the directory where the authorization key and driver-dependent key names are found.]) +BRLTTY_DEFINE_EXPANDED([BRLAPI_SOCKETPATH], ["${api_socket_path}"], + [Define this to be a string containing the path to the local sockets.]) +prefix="${original_prefix}" +exec_prefix="${original_exec_prefix}" + AC_SUBST([install_drivers]) BRLTTY_SUMMARY_END @@ -1429,11 +1532,10 @@ s%\([^ ][^ ]*\)%\1/Makefile:prologue.mk.in:\1/Makefile.in%g AC_OUTPUT([ config.mk brltty.spec - brltty.lsm Programs/brltty-config Documents/brltty.conf Documents/brltty.1 Documents/BrlAPIref.doxy - BrailleDrivers/Voyager/mkhlp + Drivers/Braille/Voyager/mkhlp Bindings/Python/setup.py ${brltty_make_files}]) diff --git a/document.mk b/document.mk index 2b4fe71726e5bee1ddf8a5e53691f20a04082663..bdd4d34f2cb028609e1e5dfaf597715955dd46e1 100644 --- a/document.mk +++ b/document.mk @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # @@ -23,10 +24,11 @@ txt: $(DOCUMENT_NAME).txt html: html.made $(DOCUMENT_NAME).txt: $(SRC_DIR)/$(DOCUMENT_NAME).sgml - $(SETLOCALE) sgml2txt -l $(DOCUMENT_LANGUAGE) -f -c latin $< + $(SETLOCALE) linuxdoc -B txt -l $(DOCUMENT_LANGUAGE) -c latin $< + sed -e 's/\x1B\[[0-9][0-9]*m//g' -i $@ html.made: $(SRC_DIR)/$(DOCUMENT_NAME).sgml - $(SETLOCALE) sgml2html -l $(DOCUMENT_LANGUAGE) -c ascii $< + $(SETLOCALE) linuxdoc -B html -l $(DOCUMENT_LANGUAGE) -c ascii $< touch $@ clean:: diff --git a/gendeps b/gendeps index f3252c4c5c38e3e8915176956fb8aa37b7dcaed2..ebcdaa80d02ab6960d82836af03abe73537c3252 100755 --- a/gendeps +++ b/gendeps @@ -3,13 +3,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/mkpot b/mkpot index 26a2117e61401d5f1204857679009e16fca405bc..b06038058b1bc66b522bb2648b808d3a7672fb2b 100755 --- a/mkpot +++ b/mkpot @@ -3,13 +3,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/mkrpm b/mkrpm index a1bdcf74c9c069a7024d7cb4f7946e7eca947486..aef1a8f91353bc787646c87aa4514a38840d4b25 100755 --- a/mkrpm +++ b/mkrpm @@ -3,13 +3,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/mktar b/mktar index 5ab257a16f3ea68cdde289974028a38bb3ef524d..5412cd83889cdc03ef01b4ed4aba5a31f411fbc1 100755 --- a/mktar +++ b/mktar @@ -3,13 +3,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/mkwin b/mkwin new file mode 100755 index 0000000000000000000000000000000000000000..c9af33cd88b5ae2db5ead9c2ccc389fc26e2090c --- /dev/null +++ b/mkwin @@ -0,0 +1,240 @@ +#!/bin/sh +############################################################################### +# 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-2009 by The BRLTTY Developers. +# +# BRLTTY comes with ABSOLUTELY NO WARRANTY. +# +# This is free software, placed under the terms of the +# GNU General Public License, as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. +# +# Web Page: http://mielke.cc/brltty/ +# +# This software is maintained by Dave Mielke . +############################################################################### + +version=3.10 +subversion=x +apiversion=0.5.3 +whole_version=$version-$subversion +autohotkey="/c/Program Files/AutoHotkey" +nsis="/c/Program Files/NSIS" + +. "`dirname "${0}"`/prologue.sh" + +[ "$MSYSTEM" = "MINGW32" ] || programError 1 "This script is for MinGW32 only" + +[ "${#}" -eq 0 ] && syntaxError "missing source root." +sourceRoot="${1}" +shift +cd "${sourceRoot}" || exit "${?}" +sourceRoot="`pwd`" + +if [ "${#}" -eq 0 ] +then + archiveName="`basename "${sourceRoot}"`" +else + archiveName="${1}" + shift +fi + +if [ "${#}" -eq 0 ] +then + archiveFile="${archiveName}.zip" +else + archiveFile="${1}" + shift +fi +[ "${archiveFile#/}" = "${archiveFile}" ] && archiveFile="${initialDirectory}/${archiveFile}" + +[ "${#}" -eq 0 ] || syntaxError "too many parameters." + +temporaryDirectory=/tmp/brltty-mkwin +rm -fr ${temporaryDirectory} +mkdir -p ${temporaryDirectory} + +set -e + +buildRoot="${temporaryDirectory}/build" +cp -p -r -- "${sourceRoot}" "${buildRoot}" +cd "${buildRoot}" + +installRoot="${temporaryDirectory}/${archiveName}" +"./configure" --quiet --prefix=/ --enable-relocatable-install --without-flite --without-mikropuhe --without-speechd --without-swift --without-theta --without-viavoice +make -s +"${autohotkey}/Compiler/Ahk2Exe.exe" /in brlttycnf.ahk /out brlttycnf.exe +make -s install INSTALL_ROOT="${installRoot}" JAVA_JAR_DIR=/lib JAVA_JNI_DIR=/lib +cp Bindings/Python/dist/Brlapi-$apiversion.win32.exe "${installRoot}" +cp brlttycnf.exe "${installRoot}" + +todos() { + sed -e 's/'$'\033''\[[0-9]*m//g' -e 's/$/'$'\015'/ < "$1" > "$2" +} + +todos "${sourceRoot}/LICENSE-GPL" "${installRoot}/LICENSE-GPL.txt" +todos "${sourceRoot}/LICENSE-LGPL" "${installRoot}/LICENSE-LGPL.txt" +todos "${sourceRoot}/README" "${installRoot}/README.txt" + +mkdir -p "${installRoot}/BrailleDrivers" +for i in `cd Drivers/Braille ; ls` ; do + [ -r "Drivers/Braille/$i/README" ] && todos "${sourceRoot}/Drivers/Braille/$i/README" "${installRoot}/BrailleDrivers/$i.txt" +done + +mkdir -p "${installRoot}/doc" +for i in BrlAPIref Manual-BRLTTY Manual-BrlAPI +do + for file in `(cd ${sourceRoot}/Documents ; find "$i" -type f ! -name \*.3)` + do + mkdir -p "${installRoot}/doc/`dirname "$file"`" + todos "${sourceRoot}/Documents/$file" "${installRoot}/doc/$file" + done +done +for i in ChangeLog HISTORY TODO README.windows +do + todos "${sourceRoot}/Documents/$i" "${installRoot}/doc/$i.txt" +done + +todos "${buildRoot}/Documents/brltty.conf" "${installRoot}/etc/brltty.conf" +todos "${buildRoot}/Tables/README-ATB" "${installRoot}/etc/brltty/README-ATB.txt" +todos "${buildRoot}/Tables/README-CTB" "${installRoot}/etc/brltty/README-CTB.txt" +todos "${buildRoot}/Tables/README-DOTS" "${installRoot}/etc/brltty/README-DOTS.txt" +todos "${buildRoot}/Tables/README-TTB" "${installRoot}/etc/brltty/README-TTB.txt" + +for i in `find ${installRoot}/share/man -type f -name \*.3 -o -name \*.1` +do + target="${i/%[13]}"txt + groff -T ascii -mandoc 2> /dev/null < "$i" | sed -e 's/'$'\033''\[[0-9]*m//g' > "$target" + [ -s "$target" ] || rm -f "$i" "$target" +done + +sed -e 's/$/'$'\015''/' > "${installRoot}/README.first.txt" << EOF +This is an unofficial build of brltty $version + a few fixes for windows. + +You should probably read README.txt and doc/README.Windows.txt for information +on brltty. + +For the impatient people who don't want to read docs: + +- use the BRLTTY configurator or uncomment by hand the proper lines from + etc/brltty.conf. +- if you need to install libusb-win32 drivers, right-click on bin/brltty.inf + and select install or install and activate the libusb-win32 filter from + http://libusb-win32.sourceforge.net/ +- to register BRLTTY as a service, run install.bat +- For Python support (e.g. for NVDA), run Brlapi-$apiversion.win32.exe +- for sighted users, use the xw braille driver to get a virtual braille box. + +If you are getting troubles, please run run-debug.bat and send us the debug.log +file. + +============================= +Technical notes on this build + +- brltty was compiled from version $version plus some fixes using mingw32 and + ./configure --enable-relocatable-install --prefix=/ +- to make life easier to windows users, Programs/brlapi_server.c was modified + to not use authentication by default: BRLAPI_DEFAUTH turned into "none", + and only local sockets were enabled: ":0+127.0.0.1:0" turned into ":0" +- *usb0* come from libusb-win32 0.1.12.1 from + http://libusb-win32.sourceforge.net/ +- libiconv-2.dll comes from libiconv portage from + http://gnuwin32.sourceforge.net/ +- libintl3.dll comes from libintl from + http://gnuwin32.sourceforge.net/ +- braille.dll comes from http://libbraille.sourceforge.net/ +- python bindings are provided in Brlapi-$apiversion.win32.exe +- C bindings are provided in include/ and lib/ (a .def file is provided for + linking, run + lib /def:brlapi.def /name:brlapi-0.5.dll /out:brlapi.lib + to produce a brlapi.lib file suitable to your compiler) +EOF + +sed -e 's/$/'$'\015''/' > "${installRoot}/install.bat" << EOF +@echo off +.\bin\brltty -I +net start BrlAPI +EOF + +sed -e 's/$/'$'\015''/' > "${installRoot}/uninstall.bat" << EOF +@echo off +net stop BrlAPI +.\bin\brltty -R +EOF + +sed -e 's/$/'$'\015''/' > "${installRoot}/run-debug.bat" << EOF +@echo off +echo Running brltty in debugging mode. When done, close this window (use the +echo alt-space menu for instance) and see %CD%\debug.log +.\bin\brltty -l debug -n -e > debug.log 2>&1 +EOF + +cp ${sourceRoot}/Hotplug/brltty.inf "${installRoot}/bin" +echo "not yet" > "${installRoot}/bin/brltty.cat" +echo "not yet" > "${installRoot}/bin/brltty_x64.cat" +cp "$SYSTEMROOT/system32/drivers/libusb0.sys" "${installRoot}/bin" +cp "$SYSTEMROOT/system32/drivers/libusb0_x64.sys" "${installRoot}/bin" +cp "$SYSTEMROOT/system32/libusb0.dll" "${installRoot}/bin" +cp "$SYSTEMROOT/system32/libusb0_x64.dll" "${installRoot}/bin" +cp "$SYSTEMROOT/system32/braille.dll" "${installRoot}/bin" +cp "$SYSTEMROOT/system32/msvcr90.dll" "${installRoot}/bin" +cp /mingw/bin/libiconv2.dll "${installRoot}/bin" +cp /mingw/bin/libintl3.dll "${installRoot}/bin" +cp /mingw/bin/curses2.dll "${installRoot}/bin" +rm -f "${installRoot}/bin/brltty-config" +rm -f "${installRoot}/bin/brltty-install" +rm -f "${installRoot}/etc/brlapi.key" +rmdir -p "${installRoot}/lib/brltty/rw" 2> /dev/null || true + +cd .. +rm -f "${archiveFile}" +zip -q -A -r "${archiveFile}" "${archiveName}" + +sed -e 's/$/'$'\015''/' > "${installRoot}/README.first.txt" << EOF +This is an unofficial build of brltty $version + a few fixes for windows. + +You should probably read README.txt and doc/README.Windows.txt for information +on brltty. + +For the impatient people who don't want to read docs: + +- use the BRLTTY configurator or uncomment by hand the proper lines from + etc/brltty.conf. +- For Python support (e.g. for NVDA), run Brlapi-$apiversion.win32.exe +- for sighted users, use the xw braille driver to get a virtual braille box. + +If you are getting troubles, please run run-debug.bat and send us the debug.log +file. + +============================= +Technical notes on this build + +- brltty was compiled from version $version plus some fixes using mingw32 and + ./configure --enable-relocatable-install --prefix=/ +- to make life easier to windows users, Programs/brlapi_server.c was modified + to not use authentication by default: BRLAPI_DEFAUTH turned into "none", + and only local sockets were enabled: ":0+127.0.0.1:0" turned into ":0" +- *usb0* come from libusb-win32 0.1.12.1 from + http://libusb-win32.sourceforge.net/ +- libiconv-2.dll comes from libiconv portage from + http://gnuwin32.sourceforge.net/ +- libintl3.dll comes from libintl from + http://gnuwin32.sourceforge.net/ +- braille.dll comes from http://libbraille.sourceforge.net/ +- python bindings are provided in Brlapi-$apiversion.win32.exe +- C bindings are provided in include/ and lib/ (a .def file is provided for + linking, run + lib /def:brlapi.def /name:brlapi-0.5.dll /out:brlapi.lib + to produce a brlapi.lib file suitable to your compiler) +EOF + +cp "${buildRoot}/brltty.nsi" . +cp "${buildRoot}/nsistrings.txt" "${installRoot}/" +"${nsis}/makensis" -DVERSION=${whole_version} brltty.nsi +rm -f "${initialDirectory}/brltty-win-${whole_version}.exe" +mv brltty-win-${whole_version}.exe "${initialDirectory}/brltty-win-${whole_version}.exe" + +exit 0 diff --git a/mkzip b/mkzip index 292ac2db7e89b62f298c397cbee4d2c4868b441c..848a3f2dfe191af0309831b9499be6bdcf9b1f72 100755 --- a/mkzip +++ b/mkzip @@ -3,13 +3,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/nsistrings.txt b/nsistrings.txt new file mode 100644 index 0000000000000000000000000000000000000000..681f31e4feced5c19a6e40a6b2d889f8d76bbbdf --- /dev/null +++ b/nsistrings.txt @@ -0,0 +1,280 @@ +; Some translations for the brltty.nsi installer +;Czech +LangString msg_WelcomePageTitle ${LANG_CZECH} "Instalace ${PRODUCT}, verze ${VERSION}" +LangString msg_inslibusb32filter ${LANG_CZECH} "Do you want to install the LibUSB-win32 filter?$\r$\n(only useful for USB devices and if you have already installed drivers from your manufacturer for your USB device. Do not install it if you are running windows 64bit)" +LangString msg_inslibusb32 ${LANG_CZECH} "Chcete nainstalovat ovlada? LibUSB-win32?$\r$\n(užite?né jen pokud nemáte nainstalován USB ovlada? dodávaný výrobcem pro vaše za?ízení)" + +LangString shortcut_brlttycnf $(LANG_CZECH) "Nastavení BRLTTY" +LangString shortcut_brlttydebug $(LANG_CZECH) "Run BRLTTY in debugging mode" +LangString shortcut_inssrv $(LANG_CZECH) "Instalace služby BRLTTY" +LangString shortcut_rmvsrv $(LANG_CZECH) "Odinstalace služby BLRTTY" +LangString shortcut_uninstall $(LANG_CZECH) "Odinstalace" +LangString shortcut_inslibusbfilter $(LANG_CZECH) "Install LibUSB-win32 filter" +LangString shortcut_uninslibusbfilter $(LANG_CZECH) "Uninstall LibUSB-win32 filter" +LangString shortcut_inslibusb $(LANG_CZECH) "Instalace ovlada?e LibUSB-win32" + +;German +LangString msg_WelcomePageTitle ${LANG_GERMAN} "Setup for ${PRODUCT}, Version ${VERSION}" +LangString msg_inslibusb32filter ${LANG_GERMAN} "Do you want to install the LibUSB-win32 filter?$\r$\n(only useful for USB devices and if you have already installed drivers from your manufacturer for your USB device. Do not install it if you are running windows 64bit)" +LangString msg_inslibusb32 ${LANG_GERMAN} "Do you want to install the LibUSB-win32 driver?$\r$\n(only useful if you do not have installed drivers from your manufacturer for your USB device)" + +LangString shortcut_brlttycnf $(LANG_GERMAN) "Configure BRLTTY" +LangString shortcut_brlttydebug $(LANG_GERMAN) "Run BRLTTY in debugging mode" +LangString shortcut_InsSrv $(LANG_GERMAN) "Install BRLTTY Service" +LangString shortcut_RmvSrv $(LANG_GERMAN) "Uninstall BRLTTY Service" +LangString shortcut_uninstall $(LANG_GERMAN) "Uninstall" +LangString shortcut_inslibusbfilter $(LANG_GERMAN) "Install LibUSB-win32 filter" +LangString shortcut_uninslibusbfilter $(LANG_GERMAN) "Uninstall LibUSB-win32 filter" +LangString shortcut_inslibusb $(LANG_GERMAN) "Install LibUSB-win32 driver" + +;English +LangString msg_WelcomePageTitle ${LANG_ENGLISH} "Setup for ${PRODUCT}, Version ${VERSION}" +LangString msg_inslibusb32filter ${LANG_ENGLISH} "Do you want to install the LibUSB-win32 filter?$\r$\n(only useful for USB devices and if you have already installed drivers from your manufacturer for your USB device. Do not install it if you are running windows 64bit)" +LangString msg_inslibusb32 ${LANG_ENGLISH} "Do you want to install the LibUSB-win32 driver?$\r$\n(only useful if you do not have installed drivers from your manufacturer for your USB device)" + +LangString shortcut_brlttycnf $(LANG_ENGLISH) "Configure BRLTTY" +LangString shortcut_brlttydebug $(LANG_ENGLISH) "Run BRLTTY in debugging mode" +LangString shortcut_inssrv $(LANG_ENGLISH) "Install BRLTTY Service" +LangString shortcut_rmvsrv $(LANG_ENGLISH) "Uninstall BRLTTY Service" +LangString shortcut_uninstall $(LANG_ENGLISH) "Uninstall" +LangString shortcut_inslibusbfilter $(LANG_ENGLISH) "Install LibUSB-win32 filter" +LangString shortcut_uninslibusbfilter $(LANG_ENGLISH) "Uninstall LibUSB-win32 filter" +LangString shortcut_inslibusb $(LANG_ENGLISH) "Install LibUSB-win32 driver" + +;Spanish +LangString msg_WelcomePageTitle ${LANG_SPANISH} "Setup for ${PRODUCT}, Version ${VERSION}" +LangString msg_inslibusb32filter ${LANG_SPANISH} "Do you want to install the LibUSB-win32 filter?$\r$\n(only useful for USB devices and if you have already installed drivers from your manufacturer for your USB device. Do not install it if you are running windows 64bit)" +LangString msg_inslibusb32 ${LANG_SPANISH} "Do you want to install the LibUSB-win32 driver?$\r$\n(only useful if you do not have installed drivers from your manufacturer for your USB device)" + +LangString shortcut_brlttycnf $(LANG_SPANISH) "Configure BRLTTY" +LangString shortcut_brlttydebug $(LANG_SPANISH) "Run BRLTTY in debugging mode" +LangString shortcut_InsSrv $(LANG_SPANISH) "Install BRLTTY Service" +LangString shortcut_RmvSrv $(LANG_SPANISH) "Uninstall BRLTTY Service" +LangString shortcut_uninstall $(LANG_SPANISH) "Uninstall" +LangString shortcut_inslibusbfilter $(LANG_SPANISH) "Install LibUSB-win32 filter" +LangString shortcut_uninslibusbfilter $(LANG_SPANISH) "Uninstall LibUSB-win32 filter" +LangString shortcut_inslibusb $(LANG_SPANISH) "Install LibUSB-win32 driver" + +;Finnish +LangString msg_WelcomePageTitle ${LANG_FINNISH} "Setup for ${PRODUCT}, Version ${VERSION}" +LangString msg_inslibusb32filter ${LANG_FINNISH} "Do you want to install the LibUSB-win32 filter?$\r$\n(only useful for USB devices and if you have already installed drivers from your manufacturer for your USB device. Do not install it if you are running windows 64bit)" +LangString msg_inslibusb32 ${LANG_FINNISH} "Do you want to install the LibUSB-win32 driver?$\r$\n(only useful if you do not have installed drivers from your manufacturer for your USB device)" + +LangString shortcut_brlttycnf $(LANG_FINNISH) "Configure BRLTTY" +LangString shortcut_brlttydebug $(LANG_FINNISH) "Run BRLTTY in debugging mode" +LangString shortcut_InsSrv $(LANG_FINNISH) "Install BRLTTY Service" +LangString shortcut_RmvSrv $(LANG_FINNISH) "Uninstall BRLTTY Service" +LangString shortcut_uninstall $(LANG_FINNISH) "Uninstall" +LangString shortcut_inslibusbfilter $(LANG_FINNISH) "Install LibUSB-win32 filter" +LangString shortcut_uninslibusbfilter $(LANG_FINNISH) "Uninstall LibUSB-win32 filter" +LangString shortcut_inslibusb $(LANG_FINNISH) "Install LibUSB-win32 driver" + +;French +LangString msg_WelcomePageTitle ${LANG_FRENCH} "Installation de ${PRODUCT}, Version ${VERSION}" +LangString msg_inslibusb32filter ${LANG_FRENCH} "Voulez-vous installer le filtre LibUSB-win32 ?$\r$\n(utile seulement pour les plages USB et si vous avez déjà installé le pilote fourni par le constructeur de votre unité USB. Ne l'installez pas si votre windows est 64bit)" +LangString msg_inslibusb32 ${LANG_FRENCH} "Voulez-vous installer le pilote LibUSB-win32?$\r$\n(utile seulement si vous n'avez pas installé le pilote fourni par le constructeur de votre unité USB)" + +LangString shortcut_brlttycnf $(LANG_FRENCH) "Configurer BRLTTY" +LangString shortcut_brlttydebug $(LANG_FRENCH) "Lancer BRLTTY en mode debug" +LangString shortcut_InsSrv $(LANG_FRENCH) "Installer le Service BRLTTY" +LangString shortcut_RmvSrv $(LANG_FRENCH) "Désinstaller le Service BRLTTY" +LangString shortcut_uninstall $(LANG_FRENCH) "Désinstaller" +LangString shortcut_inslibusbfilter $(LANG_FRENCH) "Installer le filtre LibUSB-win32" +LangString shortcut_uninslibusbfilter $(LANG_FERNCH) "Désinstaller le filtre LibUSB-win32" +LangString shortcut_inslibusb $(LANG_FRENCH) "Installer le pilote LibUSB-win32" + +;Galician +LangString msg_WelcomePageTitle ${LANG_GALICIAN} "Setup for ${PRODUCT}, Version ${VERSION}" +LangString msg_inslibusb32filter ${LANG_GALICIAN} "Do you want to install the LibUSB-win32 filter?$\r$\n(only useful for USB devices and if you have already installed drivers from your manufacturer for your USB device. Do not install it if you are running windows 64bit)" +LangString msg_inslibusb32 ${LANG_GALICIAN} "Do you want to install the LibUSB-win32 driver?$\r$\n(only useful if you do not have installed drivers from your manufacturer for your USB device)" + +LangString shortcut_brlttycnf $(LANG_GALICIAN) "Configure BRLTTY" +LangString shortcut_brlttydebug $(LANG_GALICIAN) "Run BRLTTY in debugging mode" +LangString shortcut_InsSrv $(LANG_GALICIAN) "Install BRLTTY Service" +LangString shortcut_RmvSrv $(LANG_GALICIAN) "Uninstall BRLTTY Service" +LangString shortcut_uninstall $(LANG_GALICIAN) "Uninstall" +LangString shortcut_inslibusbfilter $(LANG_GALICIAN) "Install LibUSB-win32 filter" +LangString shortcut_uninslibusbfilter $(LANG_GALICIAN) "Uninstall LibUSB-win32 filter" +LangString shortcut_inslibusb $(LANG_GALICIAN) "Install LibUSB-win32 driver" + +;Croatian +LangString msg_WelcomePageTitle ${LANG_CROATIAN} "Setup for ${PRODUCT}, Version ${VERSION}" +LangString msg_inslibusb32filter ${LANG_CROATIAN} "Do you want to install the LibUSB-win32 filter?$\r$\n(only useful for USB devices and if you have already installed drivers from your manufacturer for your USB device. Do not install it if you are running windows 64bit)" +LangString msg_inslibusb32 ${LANG_CROATIAN} "Do you want to install the LibUSB-win32 driver?$\r$\n(only useful if you do not have installed drivers from your manufacturer for your USB device)" + +LangString shortcut_brlttycnf $(LANG_CROATIAN) "Configure BRLTTY" +LangString shortcut_brlttydebug $(LANG_CROATIAN) "Run BRLTTY in debugging mode" +LangString shortcut_inssrv $(LANG_CROATIAN) "Install BRLTTY Service" +LangString shortcut_rmvsrv $(LANG_CROATIAN) "Uninstall BRLTTY Service" +LangString shortcut_uninstall $(LANG_CROATIAN) "Uninstall" +LangString shortcut_inslibusbfilter $(LANG_CROATIAN) "Install LibUSB-win32 filter" +LangString shortcut_uninslibusbfilter $(LANG_CROATIAN) "Uninstall LibUSB-win32 filter" +LangString shortcut_inslibusb $(LANG_CROATIAN) "Install LibUSB-win32 driver" + +;Hungarian +LangString msg_WelcomePageTitle ${LANG_HUNGARIAN} "Setup for ${PRODUCT}, Version ${VERSION}" +LangString msg_inslibusb32filter ${LANG_HUGARIAN} "Do you want to install the LibUSB-win32 filter?$\r$\n(only useful for USB devices and if you have already installed drivers from your manufacturer for your USB device. Do not install it if you are running windows 64bit)" +LangString msg_inslibusb32 ${LANG_HUNGARIAN} "Do you want to install the LibUSB-win32 driver?$\r$\n(only useful if you do not have installed drivers from your manufacturer for your USB device)" + +LangString shortcut_brlttycnf $(LANG_HUNGARIAN) "Configure BRLTTY" +LangString shortcut_brlttydebug $(LANG_HUNGARIAN) "Run BRLTTY in debugging mode" +LangString shortcut_inssrv $(LANG_HUNGARIAN) "Install BRLTTY Service" +LangString shortcut_rmvsrv $(LANG_HUNGARIAN) "Uninstall BRLTTY Service" +LangString shortcut_uninstall $(LANG_HUNGARIAN) "Uninstall" +LangString shortcut_inslibusbfilter $(LANG_HUNGARIAN) "Install LibUSB-win32 filter" +LangString shortcut_uninslibusbfilter $(LANG_HUGARIAN) "Uninstall LibUSB-win32 filter" +LangString shortcut_inslibusb $(LANG_HUNGARIAN) "Install LibUSB-win32 driver" + +;Italian +LangString msg_WelcomePageTitle ${LANG_ITALIAN} "Setup for ${PRODUCT}, Version ${VERSION}" +LangString msg_inslibusb32filter ${LANG_ITALIAN} "Do you want to install the LibUSB-win32 filter?$\r$\n(only useful for USB devices and if you have already installed drivers from your manufacturer for your USB device. Do not install it if you are running windows 64bit)" +LangString msg_inslibusb32 ${LANG_ITALIAN} "Do you want to install the LibUSB-win32 driver?$\r$\n(only useful if you do not have installed drivers from your manufacturer for your USB device)" + +LangString shortcut_brlttycnf $(LANG_ITALIAN) "Configure BRLTTY" +LangString shortcut_brlttydebug $(LANG_ITALIAN) "Run BRLTTY in debugging mode" +LangString shortcut_inssrv $(LANG_ITALIAN) "Install BRLTTY Service" +LangString shortcut_rmvsrv $(LANG_ITALIAN) "Uninstall BRLTTY Service" +LangString shortcut_uninstall $(LANG_ITALIAN) "Uninstall" +LangString shortcut_inslibusbfilter $(LANG_ITALIAN) "Install LibUSB-win32 filter" +LangString shortcut_uninslibusbfilter $(LANG_ITALIAN) "Uninstall LibUSB-win32 filter" +LangString shortcut_inslibusb $(LANG_ITALIAN) "Install LibUSB-win32 driver" + +;Japanese +LangString msg_WelcomePageTitle ${LANG_JAPANESE} "Setup for ${PRODUCT}, Version ${VERSION}" +LangString msg_inslibusb32filter ${LANG_JAPANESE} "Do you want to install the LibUSB-win32 filter?$\r$\n(only useful for USB devices and if you have already installed drivers from your manufacturer for your USB device. Do not install it if you are running windows 64bit)" +LangString msg_inslibusb32 ${LANG_JAPANESE} "Do you want to install the LibUSB-win32 driver?$\r$\n(only useful if you do not have installed drivers from your manufacturer for your USB device)" + +LangString shortcut_brlttycnf $(LANG_JAPANESE) "Configure BRLTTY" +LangString shortcut_brlttydebug $(LANG_JAPANESE) "Run BRLTTY in debugging mode" +LangString shortcut_inssrv $(LANG_JAPANESE) "Install BRLTTY Service" +LangString shortcut_rmvsrv $(LANG_JAPANESE) "Uninstall BRLTTY Service" +LangString shortcut_uninstall $(LANG_JAPANESE) "Uninstall" +LangString shortcut_inslibusbfilter $(LANG_JAPANESE) "Install LibUSB-win32 filter" +LangString shortcut_uninslibusbfilter $(LANG_JAPANESE) "Uninstall LibUSB-win32 filter" +LangString shortcut_inslibusb $(LANG_JAPANESE) "Install LibUSB-win32 driver" + +;Polish +LangString msg_WelcomePageTitle ${LANG_POLISH} "Setup for ${PRODUCT}, Version ${VERSION}" +LangString msg_inslibusb32filter ${LANG_POLISH} "Do you want to install the LibUSB-win32 filter?$\r$\n(only useful for USB devices and if you have already installed drivers from your manufacturer for your USB device. Do not install it if you are running windows 64bit)" +LangString msg_inslibusb32 ${LANG_POLISH} "Do you want to install the LibUSB-win32 driver?$\r$\n(only useful if you do not have installed drivers from your manufacturer for your USB device)" + +LangString shortcut_brlttycnf $(LANG_POLISH) "Configure BRLTTY" +LangString shortcut_brlttydebug $(LANG_POLISH) "Run BRLTTY in debugging mode" +LangString shortcut_inssrv $(LANG_POLISH) "Install BRLTTY Service" +LangString shortcut_rmvsrv $(LANG_POLISH) "Uninstall BRLTTY Service" +LangString shortcut_uninstall $(LANG_POLISH) "Uninstall" +LangString shortcut_inslibusbfilter $(LANG_POLISH) "Install LibUSB-win32 filter" +LangString shortcut_uninslibusbfilter $(LANG_POLISH) "Uninstall LibUSB-win32 filter" +LangString shortcut_inslibusb $(LANG_POLISH) "Install LibUSB-win32 driver" + +;PortugueseBr +LangString msg_WelcomePageTitle ${LANG_PORTUGUESEBR} "Setup para o ${PRODUCT}, Versão ${VERSION}" +LangString msg_inslibusb32filter ${LANG_PORTUGUESEBR} "Do you want to install the LibUSB-win32 filter?$\r$\n(only useful for USB devices and if you have already installed drivers from your manufacturer for your USB device. Do not install it if you are running windows 64bit)" +LangString msg_inslibusb32 ${LANG_PORTUGUESEBR} "Pretende instalar o driver LibUSB-win32?$\r$\n(somente útil se não tiver instalado drivers do fabricante para o seu dispositivo USB)" + +LangString shortcut_brlttycnf $(LANG_PORTUGUESEBR) "Configurar o BRLTTY" +LangString shortcut_brlttydebug $(LANG_PORTUGUESEBR) "Run BRLTTY in debugging mode" +LangString shortcut_inssrv $(LANG_PORTUGUESEBR) "Instalar O Serviço BRLTTY" +LangString shortcut_rmvsrv $(LANG_PORTUGUESEBR) "Desinstalar O Serviço BRLTTY" +LangString shortcut_uninstall $(LANG_PORTUGUESEBR) "Desinstalar" +LangString shortcut_inslibusbfilter $(LANG_PORTUGUESEBR) "Install LibUSB-win32 filter" +LangString shortcut_uninslibusbfilter $(LANG_PORTUGUESEBR) "Uninstall LibUSB-win32 filter" +LangString shortcut_inslibusb $(LANG_PORTUGUESEBR) "Instalar o driver LibUSB-win32" + +;Portuguese +LangString msg_WelcomePageTitle ${LANG_PORTUGUESE} "Setup para o ${PRODUCT}, Versão ${VERSION}" +LangString msg_inslibusb32filter ${LANG_PORTUGUESE} "Do you want to install the LibUSB-win32 filter?$\r$\n(only useful for USB devices and if you have already installed drivers from your manufacturer for your USB device. Do not install it if you are running windows 64bit)" +LangString msg_inslibusb32 ${LANG_PORTUGUESE} "Pretende instalar o driver LibUSB-win32?$\r$\n(somente útil se não tiver instalado drivers do fabricante para o seu dispositivo USB)" + +LangString shortcut_brlttycnf $(LANG_PORTUGUESE) "Configurar o BRLTTY" +LangString shortcut_brlttydebug $(LANG_PORTUGUESE) "Run BRLTTY in debugging mode" +LangString shortcut_inssrv $(LANG_PORTUGUESE) "Instalar O Serviço BRLTTY" +LangString shortcut_rmvsrv $(LANG_PORTUGUESE) "Desinstalar O Serviço BRLTTY" +LangString shortcut_uninstall $(LANG_PORTUGUESE) "Desinstalar" +LangString shortcut_inslibusbfilter $(LANG_PORTUGUESE) "Install LibUSB-win32 filter" +LangString shortcut_uninslibusbfilter $(LANG_PORTUGUESE) "Uninstall LibUSB-win32 filter" +LangString shortcut_inslibusb $(LANG_PORTUGUESE) "Instalar o driver LibUSB-win32" + +;Russian +LangString msg_WelcomePageTitle ${LANG_RUSSIAN} "Setup for ${PRODUCT}, Version ${VERSION}" +LangString msg_inslibusb32filter ${LANG_RUSSIAN} "Do you want to install the LibUSB-win32 filter?$\r$\n(only useful for USB devices and if you have already installed drivers from your manufacturer for your USB device. Do not install it if you are running windows 64bit)" +LangString msg_inslibusb32 ${LANG_RUSSIAN} "Do you want to install the LibUSB-win32 driver?$\r$\n(only useful if you do not have installed drivers from your manufacturer for your USB device)" + +LangString shortcut_brlttycnf $(LANG_RUSSIAN) "Configure BRLTTY" +LangString shortcut_brlttydebug $(LANG_RUSSIAN) "Run BRLTTY in debugging mode" +LangString shortcut_inssrv $(LANG_RUSSIAN) "Install BRLTTY Service" +LangString shortcut_rmvsrv $(LANG_RUSSIAN) "Uninstall BRLTTY Service" +LangString shortcut_uninstall $(LANG_RUSSIAN) "Uninstall" +LangString shortcut_inslibusbfilter $(LANG_RUSSIAN) "Install LibUSB-win32 filter" +LangString shortcut_uninslibusbfilter $(LANG_RUSSIAN) "Uninstall LibUSB-win32 filter" +LangString shortcut_inslibusb $(LANG_RUSSIAN) "Install LibUSB-win32 driver" + +;Swedish +LangString msg_WelcomePageTitle ${LANG_SWEDISH} "Setup for ${PRODUCT}, Version ${VERSION}" +LangString msg_inslibusb32filter ${LANG_SWEDISH} "Do you want to install the LibUSB-win32 filter?$\r$\n(only useful for USB devices and if you have already installed drivers from your manufacturer for your USB device. Do not install it if you are running windows 64bit)" +LangString msg_inslibusb32 ${LANG_SWEDISH} "Do you want to install the LibUSB-win32 driver?$\r$\n(only useful if you do not have installed drivers from your manufacturer for your USB device)" + +LangString shortcut_brlttycnf $(LANG_SWEDISH) "Configure BRLTTY" +LangString shortcut_brlttydebug $(LANG_SWEDISH) "Run BRLTTY in debugging mode" +LangString shortcut_inssrv $(LANG_SWEDISH) "Install BRLTTY Service" +LangString shortcut_rmvsrv $(LANG_SWEDISH) "Uninstall BRLTTY Service" +LangString shortcut_uninstall $(LANG_SWEDISH) "Uninstall" +LangString shortcut_inslibusbfilter $(LANG_SWEDISH) "Install LibUSB-win32 filter" +LangString shortcut_uninslibusbfilter $(LANG_SWEDISH) "Uninstall LibUSB-win32 filter" +LangString shortcut_inslibusb $(LANG_SWEDISH) "Install LibUSB-win32 driver" + +;Slovak +LangString msg_WelcomePageTitle ${LANG_SLOVAK} "Setup for ${PRODUCT}, Version ${VERSION}" +LangString msg_inslibusb32filter ${LANG_SLOVAK} "Do you want to install the LibUSB-win32 filter?$\r$\n(only useful for USB devices and if you have already installed drivers from your manufacturer for your USB device. Do not install it if you are running windows 64bit)" +LangString msg_inslibusb32 ${LANG_SLOVAK} "Do you want to install the LibUSB-win32 driver?$\r$\n(only useful if you do not have installed drivers from your manufacturer for your USB device)" + +LangString shortcut_brlttycnf $(LANG_SLOVAK) "Configure BRLTTY" +LangString shortcut_brlttydebug $(LANG_SLOVAK) "Run BRLTTY in debugging mode" +LangString shortcut_inssrv $(LANG_SLOVAK) "Install BRLTTY Service" +LangString shortcut_rmvsrv $(LANG_SLOVAK) "Uninstall BRLTTY Service" +LangString shortcut_uninstall $(LANG_SLOVAK) "Uninstall" +LangString shortcut_inslibusbfilter $(LANG_SLOVAK) "Install LibUSB-win32 filter" +LangString shortcut_uninslibusbfilter $(LANG_SLOVAK) "Uninstall LibUSB-win32 filter" +LangString shortcut_inslibusb $(LANG_SLOVAK) "Install LibUSB-win32 driver" + +;Thai +LangString msg_WelcomePageTitle ${LANG_THAI} "Setup for ${PRODUCT}, Version ${VERSION}" +LangString msg_inslibusb32filter ${LANG_THAI} "Do you want to install the LibUSB-win32 filter?$\r$\n(only useful for USB devices and if you have already installed drivers from your manufacturer for your USB device. Do not install it if you are running windows 64bit)" +LangString msg_inslibusb32 ${LANG_THAI} "Do you want to install the LibUSB-win32 driver?$\r$\n(only useful if you do not have installed drivers from your manufacturer for your USB device)" + +LangString shortcut_brlttycnf $(LANG_THAI) "Configure BRLTTY" +LangString shortcut_brlttydebug $(LANG_THAI) "Run BRLTTY in debugging mode" +LangString shortcut_inssrv $(LANG_THAI) "Install BRLTTY Service" +LangString shortcut_rmvsrv $(LANG_THAI) "Uninstall BRLTTY Service" +LangString shortcut_uninstall $(LANG_THAI) "Uninstall" +LangString shortcut_inslibusbfilter $(LANG_THAI) "Install LibUSB-win32 filter" +LangString shortcut_uninslibusbfilter $(LANG_THAI) "Uninstall LibUSB-win32 filter" +LangString shortcut_inslibusb $(LANG_THAI) "Install LibUSB-win32 driver" + +;Chinese Simplified +LangString msg_WelcomePageTitle ${LANG_SIMPCHINESE} "Setup for ${PRODUCT}, Version ${VERSION}" +LangString msg_inslibusb32filter ${LANG_SIMPCHINESE} "Do you want to install the LibUSB-win32 filter?$\r$\n(only useful for USB devices and if you have already installed drivers from your manufacturer for your USB device. Do not install it if you are running windows 64bit)" +LangString msg_inslibusb32 ${LANG_SIMPCHINESE} "Do you want to install the LibUSB-win32 driver?$\r$\n(only useful if you do not have installed drivers from your manufacturer for your USB device)" + +LangString shortcut_brlttycnf $(LANG_SIMPCHINESE) "Configure BRLTTY" +LangString shortcut_brlttydebug $(LANG_SIMPCHINESE) "Run BRLTTY in debugging mode" +LangString shortcut_inssrv $(LANG_SIMPCHINESE) "Install BRLTTY Service" +LangString shortcut_rmvsrv $(LANG_SIMPCHINESE) "Uninstall BRLTTY Service" +LangString shortcut_uninstall $(LANG_SIMPCHINESE) "Uninstall" +LangString shortcut_inslibusbfilter $(LANG_SIMPCHINESE) "Install LibUSB-win32 filter" +LangString shortcut_uninslibusbfilter $(LANG_SIMPCHINESE) "Uninstall LibUSB-win32 filter" +LangString shortcut_inslibusb $(LANG_SIMPCHINESE) "Install LibUSB-win32 driver" + +;Chinese Traditional +LangString msg_WelcomePageTitle ${LANG_TRADCHINESE} "¦w¸Ë ${PRODUCT}, ª©¥» ${VERSION}" +LangString msg_inslibusb32filter ${LANG_TRADCHINESE} "¬O§_­n¦w¸Ë LibUSB-win32 ¿z¿ï¾¹¡H$\r$\n¡]¦³¦w¸Ë­ì¼t USB ÅX°Êµ{¦¡¤~¦³¥Î¡C¦pªG¬O 64 ¦ì¤¸ windows ½Ð§O¦w¸Ë¡^" +LangString msg_inslibusb32 ${LANG_TRADCHINESE} "¬O§_­n¦w¸Ë LibUSB-win32 ÅX°Êµ{¦¡¡H\r$\n¡]¨S¦³¦w¸Ë­ì¼t USB ÅX°Êµ{¦¡¤~¦³¥Î¡^" + +LangString shortcut_brlttycnf $(LANG_TRADCHINESE) "³]©w BRLTTY" +LangString shortcut_brlttydebug $(LANG_TRADCHINESE) "Run BRLTTY in debugging mode" +LangString shortcut_inssrv $(LANG_TRADCHINESE) "¦w¸Ë BRLTTY ªA°È" +LangString shortcut_rmvsrv $(LANG_TRADCHINESE) "²¾°£ BRLTTY ªA°È" +LangString shortcut_uninstall $(LANG_TRADCHINESE) "²¾°£" +LangString shortcut_inslibusbfilter $(LANG_TRADCHINESE) "¦w¸Ë LibUSB-win32 ¿z¿ï¾¹" +LangString shortcut_uninslibusbfilter $(LANG_TRADCHINESE) "²¾°£ LibUSB-win32 ¿z¿ï¾¹" +LangString shortcut_inslibusb $(LANG_TRADCHINESE) "¦w¸Ë LibUSB-win32 ÅX°Êµ{¦¡" diff --git a/prologue.h b/prologue.h index e73288f6abd93bb3dae8e523f0da529edcb2f20e..8a84e4bc4d469fc76cf8a7b3a071a7c62940c411 100644 --- a/prologue.h +++ b/prologue.h @@ -2,13 +2,14 @@ * 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-2008 by The BRLTTY Developers. + * Copyright (C) 1995-2009 by The BRLTTY Developers. * * BRLTTY comes with ABSOLUTELY NO WARRANTY. * * This is free software, placed under the terms of the * GNU General Public License, as published by the Free Software - * Foundation. Please see the file COPYING for details. + * Foundation; either version 2 of the License, or (at your option) any + * later version. Please see the file LICENSE-GPL for details. * * Web Page: http://mielke.cc/brltty/ * @@ -22,7 +23,7 @@ extern "C" { #endif /* __cplusplus */ -#define PACKAGE_COPYRIGHT "Copyright (C) 1995-2008 by The BRLTTY Developers." +#define PACKAGE_COPYRIGHT "Copyright (C) 1995-2009 by The BRLTTY Developers." #define PACKAGE_URL "http://mielke.cc/brltty/" #define _CONCATENATE(a,b) a##b @@ -74,17 +75,20 @@ typedef signed long long int64_t; #define INT8_C(c) c #define INT16_C(c) c -#define INT32_C(c) c +#define INT32_C(c) c ## L #define INT64_C(c) c ## LL #define UINT8_C(c) c ## U #define UINT16_C(c) c ## U -#define UINT32_C(c) c ## U +#define UINT32_C(c) c ## UL #define UINT64_C(c) c ## ULL #define INTMAX_C(c) c ## LL #define UINTMAX_C(c) c ## ULL +#define PRIu32 "lu" +#define PRIX32 "lX" + #else /* __MSDOS__ */ #include #endif /* __MSDOS__ */ @@ -200,7 +204,7 @@ typedef int SocketDescriptor; #endif /* PACKED */ #ifdef HAVE_ATTRIBUTE_FORMAT_PRINTF -#define PRINTF(fmt,var) __attribute__((format(printf, fmt, var))) +#define PRINTF(fmt,var) __attribute__((format(__printf__, fmt, var))) #else /* HAVE_ATTRIBUTE_FORMAT_PRINTF */ #define PRINTF(fmt,var) #endif /* HAVE_ATTRIBUTE_FORMAT_PRINTF */ diff --git a/prologue.mk.in b/prologue.mk.in index 283b2a5543dc24a75a4ae6d1a3366ca817845a27..d8d6a8f422472f7f2541989ef0da08fb10ba7a80 100644 --- a/prologue.mk.in +++ b/prologue.mk.in @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/prologue.sh b/prologue.sh index 6e220c6ea65e104c9d88b01dc6b0103a9bc1f2ee..7a80e170dd18fafc97f7947e16c17ba187ba1bd7 100644 --- a/prologue.sh +++ b/prologue.sh @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/revision b/revision index 2b8ec55a9eeb8edab4a6f8853c171e243dd49d75..2278592bc390ab93633653af3d961d6044eb1432 100755 --- a/revision +++ b/revision @@ -3,13 +3,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/run-brltty b/run-brltty index 0146543d16f29513e770ea9d1ad70b0aa1ccc3d4..0188c10f95aa125d070b492797cb8e47f1c20e32 100755 --- a/run-brltty +++ b/run-brltty @@ -3,13 +3,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # @@ -21,9 +22,8 @@ cd "`dirname "${0}"`" BRLTTY_LIBRARY_DIRECTORY="../lib" BRLTTY_DATA_DIRECTORY="../data" -BRLTTY_TABLES_DIRECTORY="../BrailleTables" -BRLTTY_CONTRACTIONS_DIRECTORY="../ContractionTables" -export BRLTTY_LIBRARY_DIRECTORY BRLTTY_DATA_DIRECTORY BRLTTY_TABLES_DIRECTORY BRLTTY_CONTRACTIONS_DIRECTORY +BRLTTY_TABLES_DIRECTORY="../Tables" +export BRLTTY_LIBRARY_DIRECTORY BRLTTY_DATA_DIRECTORY BRLTTY_TABLES_DIRECTORY exec "Programs/brltty" -E "$@" exit "${?}" diff --git a/screen.mk b/screen.mk index 08577edad195a4a9c57dcbb0521249453364da61..9afa8a60c633b243f3974aa20c073fe5949a6578 100644 --- a/screen.mk +++ b/screen.mk @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ # diff --git a/speech.mk b/speech.mk index 1e6a3f21f0bd07ec13d4d3da5b150474385bf4a6..d8c7dd16b0a9efb42fdee6a237c40bda886210b2 100644 --- a/speech.mk +++ b/speech.mk @@ -2,13 +2,14 @@ # 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-2008 by The BRLTTY Developers. +# Copyright (C) 1995-2009 by The BRLTTY Developers. # # BRLTTY comes with ABSOLUTELY NO WARRANTY. # # This is free software, placed under the terms of the # GNU General Public License, as published by the Free Software -# Foundation. Please see the file COPYING for details. +# Foundation; either version 2 of the License, or (at your option) any +# later version. Please see the file LICENSE-GPL for details. # # Web Page: http://mielke.cc/brltty/ #