FPC does warn about non strictly ascending enumeration values.
Unfortunately, some GTK enum identifiers share the same value and this
warning can safely be ignored. We shut it up.
Tried to reduce the differences between committed units and those
generated automatically using `gir2pas` tool.
Some changes are still blocked because they need change in the WS
related code. They will applied incrementally later.
We used Bookworm (Debian 12.2) GIR files constrained the units version
to Bullseye (Debian 11.6) shipped libraries.
They were generated using the following command:
```sh
gir2pas -P Laz -e Set -w \
-M atk-2.36 \
-M pango-1.16 \
-M pangocairo-1.46 \
-M glib-2.66 \
-M gio-2.66 \
-M gmodule-2.66 \
-M gobject-2.66 \
-M gtk-3.24 \
-i /usr/share/gir-1.0/Gtk-3.0.gir \
-o lazarus/lcl/interfaces/gtk3/gtk3bindings
```
We used Bookworm (Debian 12.2) GIR files constrained the units version
to Bullseye (Debian 11.6) shipped libraries.
They were generated using the following command:
```sh
gir2pas -P Laz -e Set -w \
-M atk-2.36 \
-M pango-1.16 \
-M pangocairo-1.46 \
-M glib-2.66 \
-M gio-2.66 \
-M gmodule-2.66 \
-M gobject-2.66 \
-M gtk-3.24 \
-i /usr/share/gir-1.0/Gtk-3.0.gir \
-o lazarus/lcl/interfaces/gtk3/gtk3bindings
```
Some old code was manually added and was kept for backward compatibility
with old interface code. It will be removed later.
We used Bookworm (Debian 12.2) GIR files constrained the units version
to Bullseye (Debian 11.6) shipped libraries.
They were generated using the following command:
```sh
gir2pas -P Laz -e Set -w \
-M atk-2.36 \
-M pango-1.16 \
-M pangocairo-1.46 \
-M glib-2.66 \
-M gio-2.66 \
-M gmodule-2.66 \
-M gobject-2.66 \
-M gtk-3.24 \
-i /usr/share/gir-1.0/PangoCairo-1.0.gir \
-o lazarus/lcl/interfaces/gtk3/gtk3bindings
```
Some code was manually added at the end of the interface section to keep
backward compatibility with old, manually translated unit.
Instead, `Export` button now opens file save dialog in user key scheme subdirectory ('userkeyschemes') of Lazarus settings directory. This behavior is similar to how color schemes are handled.
Thus, user is able to edit scheme, export it and then immediately select it if desired (even without IDE restart). To load an external scheme, user should put it to key scheme subdirectory of Lazarus settings directory and select it in Lazarus settings (no IDE restart needed).
1. Fix access violation on closing IDE when loaded user key scheme is present.
2. Correctly load user key scheme on IDE (re)start.
3. Search user key schemes in `userkeyschemes` subdirectory of Lazarus configuration directory.
Based on patch by Dean Mustakinov, part of issue #40559.