blob: f8d2b2107bc0b4b65dc0ad40ee407b7ce272ea01 [file] [log] [blame] [edit]
###############################################################################
# BRLTTY - A 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
}