[retro-gtk/build-doc: 2/2] WIP: Add, build, and deploy the reference manual



commit 2192de2a9feb1cc88e20fcd2a6f86451622e549f
Author: Adrien Plazas <kekun plazas laposte net>
Date:   Mon Jan 20 18:50:14 2020 +0100

    WIP: Add, build, and deploy the reference manual

 .gitlab-ci.yml                         |  37 +++++++-
 doc/meson.build                        |  45 ++++++++++
 doc/retro-gtk-doc.xml                  |  88 +++++++++++++++++++
 doc/xml/gtkdocentities.ent.in          |   9 ++
 doc/xml/meson.build                    |  12 +++
 flatpak/org.gnome.Retro.Reference.json |  59 +++++++++++++
 meson.build                            |  17 ++--
 meson_options.txt                      |   4 +
 retro-gtk/retro-controller.h           |  11 +++
 retro-gtk/retro-gtk-version.h.in       |   3 +-
 retro-gtk/retro-pixdata-private.h      |   1 +
 retro-gtk/retro-pixdata.c              |   4 +-
 shared/retro-input-private.h           |  47 ++++++++++
 shared/retro-keyboard-key-private.h    | 156 +++++++++++++++++++++++++++++++++
 14 files changed, 482 insertions(+), 11 deletions(-)
---
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d345391..2c97e97 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -3,6 +3,7 @@ stages:
   - build
   - test
   - review
+  - publish
 
 api-visibility:
   stage: lint
@@ -35,7 +36,7 @@ flatpak:tests:
     MANIFEST_PATH: "flatpak/org.gnome.Retro.UnitTests.json"
     FLATPAK_MODULE: "retro-gtk"
     FLATPAK_BUILD_DIR: "unit-tests"
-    MESON_ARGS: "--libdir=lib -Dinstall-tests=true -Dpulseaudio=disabled"
+    MESON_ARGS: "--libdir=lib -Dinstall-tests=true -Dpulseaudio=disabled -Dbuild-doc=false"
   script:
     - flatpak-builder --user --disable-rofiles-fuse --stop-at=${FLATPAK_MODULE} ${FLATPAK_BUILD_DIR} 
${MANIFEST_PATH}
     - flatpak build ${FLATPAK_BUILD_DIR} meson --prefix=/app ${MESON_ARGS} _build_tests
@@ -53,7 +54,7 @@ flatpak:demo:
     RUNTIME_REPO: "https://sdk.gnome.org/gnome-nightly.flatpakrepo";
     FLATPAK_MODULE: "retro-gtk"
     FLATPAK_BUILD_DIR: "app"
-    MESON_ARGS: ""
+    MESON_ARGS: "-Dbuild-doc=false"
   script:
     - flatpak-builder --user --disable-rofiles-fuse --stop-at=${FLATPAK_MODULE} ${FLATPAK_BUILD_DIR} 
${MANIFEST_PATH}
     - flatpak build ${FLATPAK_BUILD_DIR} meson --prefix=/app ${MESON_ARGS} _build
@@ -66,10 +67,32 @@ flatpak:demo:
       - _build/meson-logs/meson-log.txt
     expire_in: 2 days
 
+flatpak:reference:
+  image: registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:master
+  stage: build
+  tags:
+    - flatpak
+  variables:
+    MANIFEST_PATH: "flatpak/org.gnome.Retro.Reference.json"
+    FLATPAK_MODULE: "retro-gtk"
+    FLATPAK_BUILD_DIR: "app"
+    MESON_ARGS: "-Ddemos=false -Dbuild-tests=false -Dbuild-doc=true"
+  script:
+    - flatpak-builder --stop-at=${FLATPAK_MODULE} ${FLATPAK_BUILD_DIR} ${MANIFEST_PATH}
+    - flatpak build ${FLATPAK_BUILD_DIR} meson --prefix=/app ${MESON_ARGS} _build
+    - flatpak build ${FLATPAK_BUILD_DIR} ninja -C _build
+    - flatpak build ${FLATPAK_BUILD_DIR} ninja -C _build retro-gtk-doc 2>&1 | tee _build/doc/buildlog
+    - if grep -qs 'warning' _build/doc/buildlog; then exit 1; fi
+    - mv _build/doc/html/ _reference/
+  artifacts:
+    paths:
+      - _reference
+
 review:
   stage: review
   dependencies:
     - flatpak:demo
+    - flatpak:reference
     - flatpak:tests
   script:
     - echo "Generating flatpak deployment"
@@ -98,3 +121,13 @@ stop_review:
     - master@GNOME/retro-gtk
     - gnome-3-.*
     - tags
+
+pages:
+  stage: publish
+  script:
+    - mv _reference/ public/
+  artifacts:
+    paths:
+      - public
+  only:
+    - master
diff --git a/doc/meson.build b/doc/meson.build
new file mode 100644
index 0000000..8e405f8
--- /dev/null
+++ b/doc/meson.build
@@ -0,0 +1,45 @@
+subdir('xml')
+
+glib_prefix = dependency('glib-2.0').get_pkgconfig_variable('prefix')
+glib_docpath = glib_prefix / 'share' / 'gtk-doc' / 'html'
+glib_docpath = '/usr/share/runtime/docs/gtk-doc/html'
+
+docpath = get_option('datadir') / 'gtk-doc' / 'html'
+
+private_headers = [
+]
+
+content_files = [
+]
+
+gnome.gtkdoc(
+  'retro-gtk',
+  main_xml: 'retro-gtk-doc.xml',
+  src_dir: [
+    meson.source_root() / 'retro-gtk',
+    meson.build_root()  / 'retro-gtk',
+    meson.source_root() / 'shared',
+    meson.build_root()  / 'shared',
+  ],
+  dependencies: retro_gtk_dep,
+  gobject_typesfile: 'retro-gtk.types',
+  scan_args: [
+    '--rebuild-types',
+    '--ignore-headers=' + ' '.join(private_headers),
+  ],
+  mkdb_args: [
+    '--default-includes=retro-gtk/retro-gtk.h',
+  ],
+  fixxref_args: [
+    '--html-dir=@0@'.format(docpath),
+    '--extra-dir=@0@'.format(glib_docpath / 'glib'),
+    '--extra-dir=@0@'.format(glib_docpath / 'gobject'),
+    '--extra-dir=@0@'.format(glib_docpath / 'gio'),
+    '--extra-dir=@0@'.format(glib_docpath / 'gi'),
+    '--extra-dir=@0@'.format(glib_docpath / 'gtk3'),
+    '--extra-dir=@0@'.format(glib_docpath / 'gdk-pixbuf'),
+  ],
+  install_dir: 'retro-gtk',
+  content_files: content_files,
+  install: get_option('install-doc'),
+)
diff --git a/doc/retro-gtk-doc.xml b/doc/retro-gtk-doc.xml
new file mode 100644
index 0000000..1dcaed1
--- /dev/null
+++ b/doc/retro-gtk-doc.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd";
+[
+  <!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'">
+  <!ENTITY % gtkdocentities SYSTEM "xml/gtkdocentities.ent">
+  %gtkdocentities;
+]>
+<book id="index">
+  <bookinfo>
+    <title>&package_name; Reference Manual</title>
+    <releaseinfo>
+      <para>This document is the API reference for &package_name; &package_version;.</para>
+      <para>
+        <ulink type="http" url="&package_url;">RetroGTK</ulink> is a library to help you write apps for 
GTK/GNOME based mobile phones.
+      </para>
+      <para>
+        If you find any issues in this API reference, please report it using
+        <ulink type="http" url="&package_bugreport;">the bugtracker</ulink>.
+      </para>
+    </releaseinfo>
+
+    <copyright>
+      <year>2014-2020</year>
+      <holder>Adrien Plazas</holder>
+    </copyright>
+  </bookinfo>
+
+  <chapter id="intro">
+    <title>Introduction</title>
+
+    <!-- <xi:include href="build-howto.xml"/> -->
+    <!-- <xi:include href="visual-index.xml"/> -->
+  </chapter>
+
+  <chapter id="core-api">
+    <title>Widgets and Objects</title>
+    <xi:include href="xml/retro-controller-codes.xml"/>
+    <xi:include href="xml/retro-controller-iterator.xml"/>
+    <xi:include href="xml/retro-controller-type.xml"/>
+    <xi:include href="xml/retro-controller.xml"/>
+    <xi:include href="xml/retro-core-descriptor.xml"/>
+    <xi:include href="xml/retro-core-view.xml"/>
+    <xi:include href="xml/retro-core.xml"/>
+    <xi:include href="xml/retro-input.xml"/>
+    <xi:include href="xml/retro-key-joypad-mapping.xml"/>
+    <xi:include href="xml/retro-log.xml"/>
+    <xi:include href="xml/retro-memory-type.xml"/>
+    <xi:include href="xml/retro-module-iterator.xml"/>
+    <xi:include href="xml/retro-module-query.xml"/>
+    <xi:include href="xml/retro-option-iterator.xml"/>
+    <xi:include href="xml/retro-option.xml"/>
+    <xi:include href="xml/retro-pixbuf.xml"/>
+    <xi:include href="xml/retro-pixdata.xml"/>
+    <xi:include href="xml/retro-rumble-effect.xml"/>
+    <xi:include href="xml/retro-video-filter.xml"/>
+  </chapter>
+
+  <chapter id="helpers">
+    <title>Helpers</title>
+    <xi:include href="xml/retro-gtk-version.xml"/>
+    <!-- <xi:include href="xml/hdy-main.xml"/> -->
+    <!-- <xi:include href="xml/hdy-string-utf8.xml"/> -->
+    <!-- <xi:include href="xml/hdy-fold.xml"/> -->
+    <!-- <xi:include href="xml/hdy-list-box.xml"/> -->
+  </chapter>
+
+  <chapter id="object-tree">
+    <title>Object Hierarchy</title>
+    <!-- <xi:include href="xml/tree_index.sgml"/> -->
+  </chapter>
+
+  <index id="api-index-full">
+    <title>API Index</title>
+    <!-- <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include> -->
+  </index>
+
+  <index id="deprecated-api-index" role="deprecated">
+    <title>Index of deprecated API</title>
+    <!-- <xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include> -->
+  </index>
+
+  <index id="annotations-glossary">
+  <title>Annotations glossary</title>
+  <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
+  </index>
+
+</book>
diff --git a/doc/xml/gtkdocentities.ent.in b/doc/xml/gtkdocentities.ent.in
new file mode 100644
index 0000000..45d322c
--- /dev/null
+++ b/doc/xml/gtkdocentities.ent.in
@@ -0,0 +1,9 @@
+<!ENTITY package "@PACKAGE@">
+<!ENTITY package_bugreport "@PACKAGE_BUGREPORT@">
+<!ENTITY package_name "@PACKAGE_NAME@">
+<!ENTITY package_string "@PACKAGE_STRING@">
+<!ENTITY package_tarname "@PACKAGE_TARNAME@">
+<!ENTITY package_url "@PACKAGE_URL@">
+<!ENTITY package_version "@PACKAGE_VERSION@">
+<!ENTITY package_api_version "@PACKAGE_API_VERSION@">
+<!ENTITY package_ver_str "@PACKAGE_API_NAME@">
diff --git a/doc/xml/meson.build b/doc/xml/meson.build
new file mode 100644
index 0000000..78bc2bc
--- /dev/null
+++ b/doc/xml/meson.build
@@ -0,0 +1,12 @@
+ent_conf = configuration_data()
+ent_conf.set('PACKAGE', 'retro-gtk')
+ent_conf.set('PACKAGE_BUGREPORT', 'https://gitlab.gnome.org/GNOME/retro-gtk/issues')
+ent_conf.set('PACKAGE_NAME', 'retro-gtk')
+ent_conf.set('PACKAGE_STRING', 'retro-gtk')
+ent_conf.set('PACKAGE_TARNAME', 'retro-gtk-' + retro_gtk_version)
+ent_conf.set('PACKAGE_URL', 'https://gitlab.gnome.org/GNOME/retro-gtk')
+ent_conf.set('PACKAGE_VERSION', retro_gtk_version)
+ent_conf.set('PACKAGE_API_VERSION', retro_gtk_api_version)
+ent_conf.set('PACKAGE_API_NAME', retro_gtk_module)
+configure_file(input: 'gtkdocentities.ent.in', output: 'gtkdocentities.ent', configuration: ent_conf)
+
diff --git a/flatpak/org.gnome.Retro.Reference.json b/flatpak/org.gnome.Retro.Reference.json
new file mode 100644
index 0000000..d564f27
--- /dev/null
+++ b/flatpak/org.gnome.Retro.Reference.json
@@ -0,0 +1,59 @@
+{
+    "app-id" : "org.gnome.Retro.DemoSamplesTest",
+    "runtime" : "org.gnome.Platform",
+    "runtime-version" : "master",
+    "sdk" : "org.gnome.Sdk",
+    "command" : "retro-demo",
+    "tags" : [
+        "devel",
+        "development",
+        "nightly"
+    ],
+    "desktop-file-name-suffix" : " (Development)",
+    "sdk-extensions": [
+        "org.gnome.Sdk.Docs"
+    ],
+    "finish-args" : [
+        /* GTK+ Inspector access */
+        "--env=DCONF_USER_CONFIG_DIR=.config/dconf",
+        /* X11 + XShm access */
+        "--share=ipc",
+        "--socket=x11",
+        /* Wayland access */
+        "--socket=wayland",
+        /* PulseAudio access */
+        "--device=dri",
+        "--socket=pulseaudio"
+    ],
+    "cleanup" : [
+        "/include",
+        "/lib/pkgconfig",
+        "/share/pkgconfig",
+        "/share/aclocal",
+        "/man",
+        "/share/man",
+        "/share/gtk-doc",
+        "*.la",
+        "*.a",
+        "/lib/girepository-1.0",
+        "/share/dbus-1",
+        "/share/doc",
+        "/share/gir-1.0"
+    ],
+    "modules" : [
+        {
+            "name" : "retro-gtk",
+            "buildsystem" : "meson",
+            "builddir" : true,
+            "config-opts" : [
+                "--libdir=lib"
+            ],
+            "sources" : [
+                {
+                    "type" : "git",
+                    "url" : "https://gitlab.gnome.org/GNOME/retro-gtk.git";
+                }
+            ]
+        }
+    ]
+}
diff --git a/meson.build b/meson.build
index 58db859..aafcd78 100644
--- a/meson.build
+++ b/meson.build
@@ -50,6 +50,9 @@ subdir('retro-gtk')
 if get_option('build-tests')
   subdir('tests')
 endif
+if get_option('build-doc')
+  subdir('doc')
+endif
 if get_option('demos')
   subdir('demos')
 endif
@@ -59,13 +62,15 @@ summary = [
   '------',
   'retro-gtk @0@ (@1@)'.format(retro_gtk_version, retro_gtk_api_version),
   '',
-  '     Introspection: @0@'.format(get_option('introspection')),
-  '       Build tests: @0@'.format(get_option('build-tests')),
-  '     Install tests: @0@'.format(get_option('install-tests')),
-  '             Demos: @0@'.format(get_option('demos')),
+  '           Introspection: @0@'.format(get_option('introspection')),
+  '             Build tests: @0@'.format(get_option('build-tests')),
+  '           Install tests: @0@'.format(get_option('install-tests')),
+  '     Build documentation: @0@'.format(get_option('build-doc')),
+  '   Install documentation: @0@'.format(get_option('install-doc')),
+  '                   Demos: @0@'.format(get_option('demos')),
   'Directories:',
-  '            prefix: @0@'.format(retro_gtk_prefix),
-  '           datadir: @0@'.format(retro_gtk_datadir),
+  '                  prefix: @0@'.format(retro_gtk_prefix),
+  '                 datadir: @0@'.format(retro_gtk_datadir),
   '------',
   ''
 ]
diff --git a/meson_options.txt b/meson_options.txt
index de6899b..476e8f0 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -13,4 +13,8 @@ option('build-tests', type: 'boolean', value: 'true',
   description : 'Build tests')
 option('install-tests', type: 'boolean', value: 'false',
   description : 'Install tests')
+option('build-doc', type: 'boolean', value: 'true',
+  description : 'Build API reference documentation')
+option('install-doc', type: 'boolean', value: 'true',
+  description : 'Install API reference documentation')
 
diff --git a/retro-gtk/retro-controller.h b/retro-gtk/retro-controller.h
index 8c8a6ca..0a29081 100644
--- a/retro-gtk/retro-controller.h
+++ b/retro-gtk/retro-controller.h
@@ -16,6 +16,17 @@ G_BEGIN_DECLS
 
 G_DECLARE_INTERFACE (RetroController, retro_controller, RETRO, CONTROLLER, GObject)
 
+/**
+ * RetroControllerInterface:
+ * @parent_iface: The parent interface.
+ * @get_input_state: Gets the state from on of the controller's inputs.
+ * @get_controller_type: Gets the type of the controller.
+ * @get_capabilities: Gets the capabilities of the controller.
+ * @get_supports_rumble: Gets whether the controller supports rumble.
+ * @set_rumble_state: Sets the rumble state of the controller.
+ *
+ * An interface for a controller, e.g. a gamepad.
+ **/
 struct _RetroControllerInterface
 {
   GTypeInterface parent_iface;
diff --git a/retro-gtk/retro-gtk-version.h.in b/retro-gtk/retro-gtk-version.h.in
index 31984ca..6d09b4d 100644
--- a/retro-gtk/retro-gtk-version.h.in
+++ b/retro-gtk/retro-gtk-version.h.in
@@ -7,8 +7,9 @@
 #endif
 
 /**
- * SECTION:retro-gtkversion
+ * SECTION:retro-gtk-version
  * @short_description: retro-gtk version checking
+ * @title: Version
  *
  * retro-gtk provides macros to check the version of the library
  * at compile-time
diff --git a/retro-gtk/retro-pixdata-private.h b/retro-gtk/retro-pixdata-private.h
index 5641494..611ae22 100644
--- a/retro-gtk/retro-pixdata-private.h
+++ b/retro-gtk/retro-pixdata-private.h
@@ -14,6 +14,7 @@ G_BEGIN_DECLS
 
 struct _RetroPixdata
 {
+  /*< private >*/
   guint8 *data;
   RetroPixelFormat pixel_format;
   gsize rowstride;
diff --git a/retro-gtk/retro-pixdata.c b/retro-gtk/retro-pixdata.c
index c4ee872..56b647d 100644
--- a/retro-gtk/retro-pixdata.c
+++ b/retro-gtk/retro-pixdata.c
@@ -189,10 +189,10 @@ retro_pixdata_new (gconstpointer    data,
  * retro_pixdata_init:
  * @self: a #RetroPixdata
  * @data: the video data
+ * @pixel_format: the pixel format
+ * @rowstride: the distance in bytes between rows
  * @width: the width
  * @height: the height
- * @pitch: the distance in bytes between rows
- * @pixel_format: the pixel format
  * @aspect_ratio: the aspect ratio to render the video
  *
  * Initializes @self with the given parameters.
diff --git a/shared/retro-input-private.h b/shared/retro-input-private.h
index e3cc1bb..1e19acc 100644
--- a/shared/retro-input-private.h
+++ b/shared/retro-input-private.h
@@ -19,43 +19,90 @@ typedef struct _RetroInputLightgun RetroInputLightgun;
 typedef struct _RetroInputAnalog RetroInputAnalog;
 typedef struct _RetroInputPointer RetroInputPointer;
 
+/**
+ * RetroInputAny
+ * @type: The controller input type
+ * @id: The controller input ID
+ * @index: The controller input index
+ */
 struct _RetroInputAny {
   RetroControllerType type;
   gint id;
   gint index;
 };
 
+/**
+ * RetroInputJoypad
+ * @type: The controller input type
+ * @id: The controller input ID
+ */
 struct _RetroInputJoypad {
   RetroControllerType type;
   RetroJoypadId id;
 };
 
+/**
+ * RetroInputMouse
+ * @type: The controller input type
+ * @id: The controller input ID
+ */
 struct _RetroInputMouse {
   RetroControllerType type;
   RetroMouseId id;
 };
 
+/**
+ * RetroInputKeyboard
+ * @type: The controller input type
+ * @key: The keyboard key
+ */
 struct _RetroInputKeyboard {
   RetroControllerType type;
   RetroKeyboardKey key;
 };
 
+/**
+ * RetroInputLightgun
+ * @type: The controller input type
+ * @id: The controller input ID
+ */
 struct _RetroInputLightgun {
   RetroControllerType type;
   RetroLightgunId id;
 };
 
+/**
+ * RetroInputAnalog
+ * @type: The controller input type
+ * @id: The controller input ID
+ * @index: The controller input index
+ */
 struct _RetroInputAnalog {
   RetroControllerType type;
   RetroAnalogId id;
   RetroAnalogIndex index;
 };
 
+/**
+ * RetroInputPointer
+ * @type: The controller input type
+ * @id: The controller input ID
+ */
 struct _RetroInputPointer {
   RetroControllerType type;
   RetroPointerId id;
 };
 
+/**
+ * RetroInput
+ * @any: Any kind of controller input
+ * @joypad: A joypad input
+ * @mouse: a mouse input
+ * @keyboard: A keyboard input
+ * @lightgun: A lightgun input
+ * @analog: An analog input
+ * @pointer: A pointer input
+ */
 union _RetroInput {
   RetroInputAny any;
   RetroInputJoypad joypad;
diff --git a/shared/retro-keyboard-key-private.h b/shared/retro-keyboard-key-private.h
index 14dcb08..b921a75 100644
--- a/shared/retro-keyboard-key-private.h
+++ b/shared/retro-keyboard-key-private.h
@@ -10,6 +10,151 @@
 
 G_BEGIN_DECLS
 
+/**
+ * RetroKeyboardKey:
+ * @RETRO_KEYBOARD_KEY_UNKNOWN: UNKNOWN key
+ * @RETRO_KEYBOARD_KEY_FIRST: FIRST key
+ * @RETRO_KEYBOARD_KEY_BACKSPACE: BACKSPACE key
+ * @RETRO_KEYBOARD_KEY_TAB: TAB key
+ * @RETRO_KEYBOARD_KEY_CLEAR: CLEAR key
+ * @RETRO_KEYBOARD_KEY_RETURN: RETURN key
+ * @RETRO_KEYBOARD_KEY_PAUSE: PAUSE key
+ * @RETRO_KEYBOARD_KEY_ESCAPE: ESCAPE key
+ * @RETRO_KEYBOARD_KEY_SPACE: SPACE key
+ * @RETRO_KEYBOARD_KEY_EXCLAIM: EXCLAIM key
+ * @RETRO_KEYBOARD_KEY_QUOTEDBL: QUOTEDBL key
+ * @RETRO_KEYBOARD_KEY_HASH: HASH key
+ * @RETRO_KEYBOARD_KEY_DOLLAR: DOLLAR key
+ * @RETRO_KEYBOARD_KEY_AMPERSAND: AMPERSAND key
+ * @RETRO_KEYBOARD_KEY_QUOTE: QUOTE key
+ * @RETRO_KEYBOARD_KEY_LEFTPAREN: LEFTPAREN key
+ * @RETRO_KEYBOARD_KEY_RIGHTPAREN: RIGHTPAREN key
+ * @RETRO_KEYBOARD_KEY_ASTERISK: ASTERISK key
+ * @RETRO_KEYBOARD_KEY_PLUS: PLUS key
+ * @RETRO_KEYBOARD_KEY_COMMA: COMMA key
+ * @RETRO_KEYBOARD_KEY_MINUS: MINUS key
+ * @RETRO_KEYBOARD_KEY_PERIOD: PERIOD key
+ * @RETRO_KEYBOARD_KEY_SLASH: SLASH key
+ * @RETRO_KEYBOARD_KEY_ZERO: ZERO key
+ * @RETRO_KEYBOARD_KEY_ONE: ONE key
+ * @RETRO_KEYBOARD_KEY_TWO: TWO key
+ * @RETRO_KEYBOARD_KEY_THREE: THREE key
+ * @RETRO_KEYBOARD_KEY_FOUR: FOUR key
+ * @RETRO_KEYBOARD_KEY_FINE: FINE key
+ * @RETRO_KEYBOARD_KEY_SIX: SIX key
+ * @RETRO_KEYBOARD_KEY_SEVEN: SEVEN key
+ * @RETRO_KEYBOARD_KEY_HEIGHT: HEIGHT key
+ * @RETRO_KEYBOARD_KEY_NINE: NINE key
+ * @RETRO_KEYBOARD_KEY_COLON: COLON key
+ * @RETRO_KEYBOARD_KEY_SEMICOLON: SEMICOLON key
+ * @RETRO_KEYBOARD_KEY_LESS: LESS key
+ * @RETRO_KEYBOARD_KEY_EQUALS: EQUALS key
+ * @RETRO_KEYBOARD_KEY_GREATER: GREATER key
+ * @RETRO_KEYBOARD_KEY_QUESTION: QUESTION key
+ * @RETRO_KEYBOARD_KEY_AT: AT key
+ * @RETRO_KEYBOARD_KEY_LEFTBRACKET: LEFTBRACKET key
+ * @RETRO_KEYBOARD_KEY_BACKSLASH: BACKSLASH key
+ * @RETRO_KEYBOARD_KEY_RIGHTBRACKET: RIGHTBRACKET key
+ * @RETRO_KEYBOARD_KEY_CARET: CARET key
+ * @RETRO_KEYBOARD_KEY_UNDERSCORE: UNDERSCORE key
+ * @RETRO_KEYBOARD_KEY_BACKQUOTE: BACKQUOTE key
+ * @RETRO_KEYBOARD_KEY_a: a key
+ * @RETRO_KEYBOARD_KEY_b: b key
+ * @RETRO_KEYBOARD_KEY_c: c key
+ * @RETRO_KEYBOARD_KEY_d: d key
+ * @RETRO_KEYBOARD_KEY_e: e key
+ * @RETRO_KEYBOARD_KEY_f: f key
+ * @RETRO_KEYBOARD_KEY_g: g key
+ * @RETRO_KEYBOARD_KEY_h: h key
+ * @RETRO_KEYBOARD_KEY_i: i key
+ * @RETRO_KEYBOARD_KEY_j: j key
+ * @RETRO_KEYBOARD_KEY_k: k key
+ * @RETRO_KEYBOARD_KEY_l: l key
+ * @RETRO_KEYBOARD_KEY_m: m key
+ * @RETRO_KEYBOARD_KEY_n: n key
+ * @RETRO_KEYBOARD_KEY_o: o key
+ * @RETRO_KEYBOARD_KEY_p: p key
+ * @RETRO_KEYBOARD_KEY_q: q key
+ * @RETRO_KEYBOARD_KEY_r: r key
+ * @RETRO_KEYBOARD_KEY_s: s key
+ * @RETRO_KEYBOARD_KEY_t: t key
+ * @RETRO_KEYBOARD_KEY_u: u key
+ * @RETRO_KEYBOARD_KEY_v: v key
+ * @RETRO_KEYBOARD_KEY_w: w key
+ * @RETRO_KEYBOARD_KEY_x: x key
+ * @RETRO_KEYBOARD_KEY_y: y key
+ * @RETRO_KEYBOARD_KEY_z: z key
+ * @RETRO_KEYBOARD_KEY_LEFTBRACE: LEFTBRACE key
+ * @RETRO_KEYBOARD_KEY_BAR: BAR key
+ * @RETRO_KEYBOARD_KEY_RIGHTBRACE: RIGHTBRACE key
+ * @RETRO_KEYBOARD_KEY_TILDE: TILDE key
+ * @RETRO_KEYBOARD_KEY_DELETE: DELETE key
+ * @RETRO_KEYBOARD_KEY_KP0: KP0 key
+ * @RETRO_KEYBOARD_KEY_KP1: KP1 key
+ * @RETRO_KEYBOARD_KEY_KP2: KP2 key
+ * @RETRO_KEYBOARD_KEY_KP3: KP3 key
+ * @RETRO_KEYBOARD_KEY_KP4: KP4 key
+ * @RETRO_KEYBOARD_KEY_KP5: KP5 key
+ * @RETRO_KEYBOARD_KEY_KP6: KP6 key
+ * @RETRO_KEYBOARD_KEY_KP7: KP7 key
+ * @RETRO_KEYBOARD_KEY_KP8: KP8 key
+ * @RETRO_KEYBOARD_KEY_KP9: KP9 key
+ * @RETRO_KEYBOARD_KEY_KP_PERIOD: KP_PERIOD key
+ * @RETRO_KEYBOARD_KEY_KP_DIVIDE: KP_DIVIDE key
+ * @RETRO_KEYBOARD_KEY_KP_MULTIPLY: KP_MULTIPLY key
+ * @RETRO_KEYBOARD_KEY_KP_MINUS: KP_MINUS key
+ * @RETRO_KEYBOARD_KEY_KP_PLUS: KP_PLUS key
+ * @RETRO_KEYBOARD_KEY_KP_ENTER: KP_ENTER key
+ * @RETRO_KEYBOARD_KEY_KP_EQUALS: KP_EQUALS key
+ * @RETRO_KEYBOARD_KEY_UP: UP key
+ * @RETRO_KEYBOARD_KEY_DOWN: DOWN key
+ * @RETRO_KEYBOARD_KEY_RIGHT: RIGHT key
+ * @RETRO_KEYBOARD_KEY_LEFT: LEFT key
+ * @RETRO_KEYBOARD_KEY_INSERT: INSERT key
+ * @RETRO_KEYBOARD_KEY_HOME: HOME key
+ * @RETRO_KEYBOARD_KEY_END: END key
+ * @RETRO_KEYBOARD_KEY_PAGEUP: PAGEUP key
+ * @RETRO_KEYBOARD_KEY_PAGEDOWN: PAGEDOWN key
+ * @RETRO_KEYBOARD_KEY_F1: F1 key
+ * @RETRO_KEYBOARD_KEY_F2: F2 key
+ * @RETRO_KEYBOARD_KEY_F3: F3 key
+ * @RETRO_KEYBOARD_KEY_F4: F4 key
+ * @RETRO_KEYBOARD_KEY_F5: F5 key
+ * @RETRO_KEYBOARD_KEY_F6: F6 key
+ * @RETRO_KEYBOARD_KEY_F7: F7 key
+ * @RETRO_KEYBOARD_KEY_F8: F8 key
+ * @RETRO_KEYBOARD_KEY_F9: F9 key
+ * @RETRO_KEYBOARD_KEY_F10: F10 key
+ * @RETRO_KEYBOARD_KEY_F11: F11 key
+ * @RETRO_KEYBOARD_KEY_F12: F12 key
+ * @RETRO_KEYBOARD_KEY_F13: F13 key
+ * @RETRO_KEYBOARD_KEY_F14: F14 key
+ * @RETRO_KEYBOARD_KEY_F15: F15 key
+ * @RETRO_KEYBOARD_KEY_NUMLOCK: NUMLOCK key
+ * @RETRO_KEYBOARD_KEY_CAPSLOCK: CAPSLOCK key
+ * @RETRO_KEYBOARD_KEY_SCROLLOCK: SCROLLOCK key
+ * @RETRO_KEYBOARD_KEY_RSHIFT: RSHIFT key
+ * @RETRO_KEYBOARD_KEY_LSHIFT: LSHIFT key
+ * @RETRO_KEYBOARD_KEY_RCTRL: RCTRL key
+ * @RETRO_KEYBOARD_KEY_LCTRL: LCTRL key
+ * @RETRO_KEYBOARD_KEY_RALT: RALT key
+ * @RETRO_KEYBOARD_KEY_LALT: LALT key
+ * @RETRO_KEYBOARD_KEY_RMETA: RMETA key
+ * @RETRO_KEYBOARD_KEY_LMETA: LMETA key
+ * @RETRO_KEYBOARD_KEY_LSUPER: LSUPER key
+ * @RETRO_KEYBOARD_KEY_RSUPER: RSUPER key
+ * @RETRO_KEYBOARD_KEY_MODE: MODE key
+ * @RETRO_KEYBOARD_KEY_COMPOSE: COMPOSE key
+ * @RETRO_KEYBOARD_KEY_HELP: HELP key
+ * @RETRO_KEYBOARD_KEY_PRINT: PRINT key
+ * @RETRO_KEYBOARD_KEY_SYSREQ: SYSREQ key
+ * @RETRO_KEYBOARD_KEY_BREAK: BREAK key
+ * @RETRO_KEYBOARD_KEY_MENU: MENU key
+ * @RETRO_KEYBOARD_KEY_POWER: POWER key
+ * @RETRO_KEYBOARD_KEY_EURO: EURO key
+ * @RETRO_KEYBOARD_KEY_UNDO: UNDO key
+ * @RETRO_KEYBOARD_KEY_LAST: LAST key
+ */
 typedef enum {
   RETRO_KEYBOARD_KEY_UNKNOWN = 0,
   RETRO_KEYBOARD_KEY_FIRST = 0,
@@ -155,6 +300,17 @@ typedef enum {
   RETRO_KEYBOARD_KEY_LAST
 } RetroKeyboardKey;
 
+/**
+ * RetroKeyboardModifierKey:
+ * @RETRO_KEYBOARD_MODIFIER_KEY_NONE: No modifier key
+ * @RETRO_KEYBOARD_MODIFIER_KEY_SHIFT: The Shift modifier key
+ * @RETRO_KEYBOARD_MODIFIER_KEY_CTRL: The Ctrl modifier key
+ * @RETRO_KEYBOARD_MODIFIER_KEY_ALT: The Alt modifier key
+ * @RETRO_KEYBOARD_MODIFIER_KEY_META: The Meta modifier key
+ * @RETRO_KEYBOARD_MODIFIER_KEY_NUMLOCK: The NumLock modifier key
+ * @RETRO_KEYBOARD_MODIFIER_KEY_CAPSLOCK: The CapsLock modifier key
+ * @RETRO_KEYBOARD_MODIFIER_KEY_SCROLLOCK: The ScrollLock modifier key
+ */
 typedef enum {
   RETRO_KEYBOARD_MODIFIER_KEY_NONE = 0x0000,
   RETRO_KEYBOARD_MODIFIER_KEY_SHIFT = 0x01,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]