Bibliothèque graphique X11 'graphicx' pour OCaml adaptée à MacCaml/WinCaml (à partir de https://github.com/ocaml/graphics)  : avec gestion du bouton de fermeture de la fenêtre graphique et  utilisation d'utf-8. Pour utilisation avec Linux (en particulier dans WSL sous Windows) ou macOS avec XQuartz.

'graphicx' utilise les touches fléchées du clavier jusqu'ici laissées vacantes par 'graphics' et leur fait produire les codes ascii '2' (vers le bas), '4' (vers la gauche), '6' (vers la droite), '8' (vers le haut) comme le font en général les touches fléchées d'un pavé numérique en mode verrouillage numérique.


INSTALLATION dans le switch courant d'opam :
(suppose l'installation préalable de 'graphics' : opam install graphics)
Double-cliquer le script bash install ou l'exécuter en ligne de commande (après l'avoir éventuellement rendu exécutable).


FONCTIONNEMENT: Le dossier original graphics-master, en provenance de https://github.com/ocaml/graphics (2024/02/03), donnant par Graphics.wait_next_event accès aux événements X11 de type ClientMessage (cf. src/unix/open.c et src/unix/events.c), OCaml a en particulier accès au bouton de fermeture de la fenêtre graphique via Graphics.wait_next_event [Graphics.Button_up]. Les fichiers modifiés par le patch sont src/unix/libgraph.h, src/unix/open.c, src/unix/events.c et src/unix/text.c (pour utf-8). L'interface (src/graphics.mli, src/unix/graphicsX11.mli) est inchangée. Un clic sur le bouton de fermeture de la fenêtre graphique, s'il est traité par Graphics.wait_next_event [Graphics.Button_up], provoque sa fermeture et déclenche une exception Graphics.Graphic_failure "graphic screen not opened" qu'on peut rattraper.

Outre src/dune le fichier dune_project a été modifié et le fichier graphics.opam renommé graphicx.opam pour que cette bibliothèque adaptée à MacCaml et WinCaml puisse coexister sur disque avec la bibliothèque graphique OCaml d'origine: le dossier graphicx s'install à côté du dossier graphics dans le répertoire lib du switch courant d'opam. Elle y reste inconnue d'opam. Seul changement dans l'utilisation interactive (toplevel): #use "topfind";; #require "graphicx";; (au lieu de: #use "topfind;; #require "graphics";;) donc une seule lettre à changer.
