| ############################################################################### |
| # BRLTTY - A background process providing access to the console screen (when in |
| # text mode) for a blind person using a refreshable braille display. |
| # |
| # Copyright (C) 1995-2023 by The BRLTTY Developers. |
| # |
| # BRLTTY comes with ABSOLUTELY NO WARRANTY. |
| # |
| # This is free software, placed under the terms of the |
| # GNU Lesser General Public License, as published by the Free Software |
| # Foundation; either version 2.1 of the License, or (at your option) any |
| # later version. Please see the file LICENSE-LGPL for details. |
| # |
| # Web Page: http://brltty.app/ |
| # |
| # This software is maintained by Dave Mielke <dave@mielke.cc>. |
| ############################################################################### |
| |
| BEGIN { |
| } |
| |
| END { |
| } |
| |
| function brlCommand(name, symbol, value, help) { |
| writeCommandDefinition("cmd_" name, "Int32.of_int " value, help) |
| } |
| |
| function brlBlock(name, symbol, value, help) { |
| writeCommandDefinition("blk_" name, "Int32.of_int (" value " lsl key_cmd_blk_shift)", help) |
| } |
| |
| function brlKey(name, symbol, value, help) { |
| # not implemented for other bindings either |
| # print "braille key:" |
| # print name symbol value |
| # print "(** " help " *)" |
| } |
| |
| function brlFlag(name, symbol, value, help) { |
| if (value ~ /^0[xX][0-9a-fA-F]+0000$/) { |
| value = hexadecimalValue(substr(value, 1, length(value)-4)) |
| if (name ~ /^CHAR_/) { |
| name = substr(name, 6) |
| } else { |
| value = value "00" |
| } |
| } else if (value ~ /^\(/) { |
| return |
| } else { |
| return |
| } |
| writeCamlConstant("int32", "KEY_FLG_" name, "Int32.of_int " tolower(value), help) |
| } |
| |
| function brlDot(number, symbol, value, help) { |
| writeCamlConstant("int", "dot" number, value, help) |
| } |
| |
| function apiConstant(name, symbol, value, help) { |
| writeCamlConstant("int", name, value, help); |
| } |
| |
| function apiMask(name, symbol, value, help) { |
| writeCamlConstant("int64", "key_" tolower(name), hexadecimalValue(value) "L"); |
| } |
| |
| function apiShift(name, symbol, value, help) { |
| writeCamlConstant("int", "key_" tolower(name), hexadecimalValue(value)); |
| } |
| |
| function apiType(name, symbol, value, help) { |
| writeCamlConstant("int", "key_type_" tolower(name), hexadecimalValue(value)); |
| } |
| |
| function apiKey(name, symbol, value, help) { |
| value = hexadecimalValue(value) |
| |
| if (name == "FUNCTION") { |
| for (i=0; i<35; ++i) { |
| writeKeyDefinition("F" (i+1), "(" value " + " i ")") |
| } |
| } else { |
| writeKeyDefinition(name, value) |
| } |
| } |
| |
| function apiRangeType(name, symbol, value, help) { |
| writeCamlConstant("int", "rangeType_" name, value, help) |
| } |
| |
| function writeCommandDefinition(name, value, help) { |
| writeCamlConstant("int32", name, value, help) |
| } |
| |
| function writeKeyDefinition(name, value) { |
| writeCamlConstant("int32", "KEY_SYM_" name, "Int32.of_int " value) |
| } |
| |
| function writeCamlConstant(type, name, value, help) { |
| print "let " tolower(name) " : " type " = " value " " camldocComment(help) |
| } |
| |
| function camldocComment(text) { |
| if (length(text) > 0) text = "(** " text " *)"; |
| return text; |
| } |
| |
| function hexadecimalValue(value) { |
| value = tolower(value) |
| gsub("x0+", "x", value) |
| gsub("x$", "x0", value) |
| return value |
| } |