# Module LTerm_windows

    module LTerm_windows: sig .. end

Windows specific functions

All these functions return `Lwt_sys.Not_available` on Unix.

###### Codepage functions

    val get_acp : unit -> int

Returns the current ANSI codepage.

    val get_console_cp : unit -> int

Returns the input codepage used by the console attached to the current process.

    val set_console_cp : int -> unit

Sets the input codepage used by the console attached to the current process.

    val get_console_output_cp : unit -> int

Returns the output codepage used by the console attached to the current process.

    val set_console_output_cp : int -> unit

Sets the output codepage used by the console attached to the current process.

###### Console input

    type input =

`|` | `Resize`
`|` | `Key of `LTerm_key.t``
`|` | `Mouse of `LTerm_mouse.t``

    val read_console_input : Lwt_unix.file_descr -> input Lwt.t

`read_console_input fd` reads one input from the given file descriptor.

###### Console info

    type text_attributes = {

`` | `foreground : `int`;` | `(*` | The foreground color. Only bits 0 to 3 matters, other are ignored. | `*)`
`` | `background : `int`;` | `(*` | The background color. Only bits 0 to 3 matters, other are ignored. | `*)`

}
Type of text attributes.

    type console_screen_buffer_info = {

`` | `size : `LTerm_geom.size`;` | `(*` | The size of the console buffer. | `*)`
`` | `cursor_position : `LTerm_geom.coord`;` | `(*` | The line and column of the cursor. | `*)`
`` | `attributes : `text_attributes`;` | `(*` | Text attributes. | `*)`
`` | `window : `LTerm_geom.rect`;` | `(*` | The displayed windows in the console buffer. | `*)`
`` | `maximum_window_size : `LTerm_geom.size`;` | `(*` | The maximum window size for the current screen. | `*)`

}
Type of informations about a console.

    val get_console_screen_buffer_info : Lwt_unix.file_descr -> console_screen_buffer_info

`get_console_screen_buffer_info fd` returns the current informations about the given console.

###### Console modes

    type console_mode = {

`` | `cm_echo_input : `bool`;`
`` | `cm_insert_mode : `bool`;`
`` | `cm_line_input : `bool`;`
`` | `cm_mouse_input : `bool`;`
`` | `cm_processed_input : `bool`;`
`` | `cm_quick_edit_mode : `bool`;`
`` | `cm_window_input : `bool`;`

}
Console modes.

    val get_console_mode : Lwt_unix.file_descr -> console_mode

Returns the mode of the given console.

    val set_console_mode : Lwt_unix.file_descr -> console_mode -> unit

Sets the mode of the given console.

###### Console cursor

    val get_console_cursor_info : Lwt_unix.file_descr -> int * bool

Returns the size and visible status of the cursor on the given console. The size is a percentage between 1 and 100.

    val set_console_cursor_info : Lwt_unix.file_descr -> int -> bool -> unit

`set_console_cursor_info fd size visible` sets the size and visible status of the cursor on the given console.

    val set_console_cursor_position : Lwt_unix.file_descr -> LTerm_geom.coord -> unit

Move the cursor to the specified location in the screen buffer.

###### Text attributes

    val set_console_text_attribute : Lwt_unix.file_descr -> text_attributes -> unit

`set_console_text_attribute fd attributes`

###### Rendering

    type char_info = {

`` | `ci_char : `CamomileLibrary.UChar.t`;` | `(*` | The unicode character. | `*)`
`` | `ci_foreground : `int`;` | `(*` | The foreground color. | `*)`
`` | `ci_background : `int`;` | `(*` | The background color. | `*)`

}

    val write_console_output : Lwt_unix.file_descr ->
           char_info array array ->
           LTerm_geom.size -> LTerm_geom.coord -> LTerm_geom.rect -> LTerm_geom.rect

`write_console_output fd chars size coord rect` writes the given matrix of characters with their attributes on the given console at given position.

    val fill_console_output_character : Lwt_unix.file_descr ->
           CamomileLibrary.UChar.t -> int -> LTerm_geom.coord -> int

`fill_console_output_character fd char count coord` writes `count` times `char` starting at `coord` on the given console.