blob: feeb05b43cd5a5cab69d32d71c23609cb20183d7 [file] [log] [blame] [edit]
(*
* libbrlapi - A library providing access to braille terminals for applications.
*
* Copyright (C) 2002-2023 by
* Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
* Samuel Thibault <Samuel.Thibault@ens-lyon.org>
* All rights reserved.
*
* 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 LICENSE-LGPL for details.
*
* Web Page: http://brltty.app/
*
* This software is maintained by Dave Mielke <dave@mielke.cc>.
*)
(* BrlAPI Interface for the OCaml language *)
(*
Ajouter des fichiers .in
*)
(*
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.
*)
(*
BRLAPI_SOCKETPORTNUM
BRLAPI_SOCKETPORT (string)
BRLAPI_MAXPACKETSIZE
BRLAPI_MAXNAMELENGTH
BRLAPI_SOCKETPATH
BRLAPI_ETCDIR
BRLAPI_AUTHKEYFILE
BRLAPI_DEFAUTH
Idem que précédemmment
C'est du ni<eau proto. Faut-il binder ?
*)
type settings = {
auth : string;
host : string
}
val settings_initializer : settings
type writeArguments = {
mutable displayNumber : int;
mutable regionBegin : int;
mutable regionSize : int;
text : string;
attrAnd : int array;
attrOr : int array;
mutable cursor : int;
mutable charset : string
}
val writeArguments_initializer : writeArguments
type handle
val max_packet_size : int
type errorCode =
| SUCCESS
| NOMEM
| TTYBUSY
| DEVICEBUSY
| UNKNOWN_INSTRUCTION
| ILLEGAL_INSTRUCTION
| INVALID_PARAMETER
| INVALID_PACKET
| CONNREFUSED
| OPNOTSUPP
| GAIERR of int
| LIBCERR of Unix.error
| UNKNOWNTTY
| PROTOCOL_VERSION
| EOF
| EMPTYKEY
| DRIVERERROR
| AUTHENTICATION
| Unknown of int
type error = {
brlerrno : int;
libcerrno : int;
gaierrno : int;
errfun : string;
}
external errorCode_of_error :
error -> errorCode = "brlapiml_errorCode_of_error"
external strerror :
error -> string = "brlapiml_strerror"
exception Brlapi_error of error
exception Brlapi_exception of errorCode * int32 * string
external openConnection :
settings -> Unix.file_descr * settings = "brlapiml_openConnection"
external openConnectionWithHandle :
settings -> handle = "brlapiml_openConnectionWithHandle"
external closeConnection :
?h:handle -> unit -> unit = "brlapiml_closeConnection"
(*
val expandHost : string -> string * string
Idem: proto
*)
external getDriverName :
?h:handle -> unit -> string = "brlapiml_getDriverName"
external getModelIdentifier :
?h:handle -> unit -> string = "brlapiml_getModelIdentifier"
external getDisplaySize :
?h:handle -> unit -> int * int = "brlapiml_getDisplaySize"
external enterTtyMode :
?h:handle -> int -> string -> int = "brlapiml_enterTtyMode"
val enterTtyModeWithPath :
?h:handle -> int array -> string -> int
external leaveTtyMode :
?h:handle -> unit -> unit = "brlapiml_leaveTtyMode"
external setFocus :
?h:handle -> int -> unit = "brlapiml_setFocus"
external writeText :
?h:handle -> int -> string -> unit = "brlapiml_writeText"
(* Arg optionnel pour curseur ? *)
external writeDots :
?h:handle -> int array -> unit = "brlapiml_writeDots"
external write :
?h:handle -> writeArguments -> unit = "brlapiml_write"
(*
BRLAPI_KEYCODE_MAX
Les constantes pour travailler sur les flags de touches ?
Les KEY_SYM ?
Oui: pour être cohérent avec le fait de fournir le int64
Flags: entiers.
*)
(* val getKeyName : expandedKeyCode -> string *)
(*
brlapi_dotNumberToBit
brlapi_dotBitToNumber
Unicode ?
Oui, utile pour les key_sym
*)
external readKey :
?h:handle -> unit -> int64 option = "brlapiml_readKey"
external waitKey :
?h:handle -> unit -> int64 = "brlapiml_waitKey"
external readKeyWithTimeout :
?h:handle -> int -> int64 option = "brlapiml_readKeyWithTimeout"
type expandedKeyCode = {
type_ : int32;
command : int32;
argument : int32;
flags : int32
}
external expandKeyCode :
?h:handle -> int64 -> expandedKeyCode = "brlapiml_expandKeyCode"
type rangeType =
| RT_all
| RT_type
| RT_command
| RT_key
| RT_code
external ignoreKeys :
?h:handle -> rangeType -> int64 array -> unit = "brlapiml_ignoreKeys"
external acceptKeys :
?h:handle -> rangeType -> int64 array -> unit = "brlapiml_acceptKeys"
external ignoreAllKeys :
?h:handle -> unit = "brlapiml_ignoreAllKeys"
external acceptAllKeys :
?h:handle -> unit = "brlapiml_acceptAllKeys"
external ignoreKeyRanges :
?h:handle -> (int64 * int64) array -> unit = "brlapiml_ignoreKeyRanges"
external acceptKeyRanges :
?h:handle -> (int64 * int64) array -> unit = "brlapiml_acceptKeyRanges"
external enterRawMode :
?h:handle -> string -> unit = "brlapiml_enterRawMode"
external leaveRawMode :
?h:handle -> unit -> unit = "brlapiml_leaveRawMode"
external sendRaw :
?h:handle -> string -> int = "brlapiml_sendRaw"
external recvRaw :
?h:handle -> unit -> string = "brlapiml_recvRaw"
external suspendDriver :
?h:handle -> string -> unit = "brlapiml_suspendDriver"
external resumeDriver :
?h:handle -> unit -> unit = "brlapiml_resumeDriver"
module type KEY = sig
type key
val key_of_int64 : int64 -> key
val int64_of_key : key -> int64
end
module MakeKeyHandlers (M1 : KEY) : sig
type key = M1.key
val readKey : ?h:handle -> unit -> key option
val waitKey : ?h:handle -> unit -> key
val ignoreKeys : ?h:handle -> rangeType -> key array -> unit
val acceptKeys : ?h:handle -> rangeType -> key array -> unit
val ignoreKeyRanges : ?h:handle -> (key * key) array -> unit
val acceptKeyRanges : ?h:handle -> (key * key) array -> unit
end