                                   Extending
                                   Tux Paint
                                 versión 0.9.28

        Copyright © 2002-2022 by various contributors; see AUTHORS.txt.
                             https://tuxpaint.org/

                                 junio 4, 2022

                  +------------------------------------------+
                  |Table of Contents                         |
                  |------------------------------------------|
                  |  * Where Files Go                        |
                  |       * Standard Files                   |
                  |       * Personal Files                   |
                  |  * Brushes                               |
                  |       * Brush Options                    |
                  |  * Stamps                                |
                  |       * Stamp Images                     |
                  |       * Stamp Descriptive Text           |
                  |       * Stamp Sound Effects              |
                  |       * Stamp Descriptive Sound          |
                  |       * Stamp Options                    |
                  |       * Pre-Mirrored and Flipped Stamps  |
                  |  * Fonts                                 |
                  |  * 'Starters'                            |
                  |       * Coloring-Book Style Starters     |
                  |       * Scene-Style Starters             |
                  |  * 'Templates'                           |
                  |  * Translations                          |
                  |  * Alternative Input Methods             |
                  |  * On-screen Keyboard                    |
                  +------------------------------------------+

   If you wish to add or change things like Brushes, Starters, Rubber Stamps,
   and other content used by Tux Paint, you can do so fairly easily by simply
   adding, changing, or removing files where Tux Paint looks for them.

   💡 Note: You'll need to re-launch Tux Paint for the changes to take effect.

                                 Where Files Go

Standard Files

   Tux Paint looks for its various data files in its 'data' directory.

   Linux and Unix

           Where this directory goes depends on what value was set for
           "DATA_PREFIX" when Tux Paint was built. See 'Install
           documentation' for details.

           By default, though, the directory is:

             /usr/local/share/tuxpaint/

           If you installed from a package, it is more likely to be:

             /usr/share/tuxpaint/

   Windows

           Tux Paint looks for a directory called 'data' in the same
           directory as the executable. This is the directory that the
           installer used when installing Tux Paint e.g.:

             C:\Program Files\TuxPaint\data

   macOS

           Tux Paint stores its data files inside the "Tux Paint" application
           icon (which is actually a special kind of folder on macOS & Mac OS
           X before it). The following steps explain how to get to the
           folders within it:

             1. Bring up a 'context' menu by holding the [Control] key and
                clicking the Tux Paint icon the in Finder. (If you have a
                mouse with more than one button, you can simply right-click
                the icon.)
             2. Select "Show Contents" from the menu that appears. A new
                Finder window will appear with a folder inside called
                "Contents".
             3. Open the "Contents" folder and open the "Resources" folder
                found inside.
             4. There, you will find various sub-folders, such as "starters",
                "stamps", "brushes", etc. Adding new content to these folders
                will make the content available to any user that launches
                this copy (icon) of Tux Paint.

           💡 Note: If you install a newer version of Tux Paint and replace or
           discard the old version, you will lose changes made by following
           the instructions above, so keep backups of your new content
           (stamps, brushes, etc.).

           Tux Paint also looks for files in a "TuxPaint" folder that you can
           place in your system's "Application Support" folder (found under
           "Library" at the root of your filesystem):

             /Library/Application Support/TuxPaint/

           When you upgrade to a newer version of Tux Paint, the contents of
           this "TuxPaint" folder will stay the same, and remain accessible
           by all users of Tux Paint.

Personal Files

   You can also create brushes, stamps, 'starters', templates, and fonts in
   your own user account directory (folder) for Tux Paint to find.

   Windows

           Your personal Tux Paint folder is stored in your personal
           "Application Data". For example, on newer Windows:

             C:\Documents and Settings\(username)\Application Data\TuxPaint\

   macOS

           Your personal Tux Paint folder is stored in your personal
           "Application Support" folder:

             /Users/(username)/Library/Application Support/TuxPaint/

   Linux and Unix

           Your personal Tux Paint files go into a 'hidden directory' found
           in your account's home directory: "$(HOME)/.tuxpaint/" (also known
           as "~/.tuxpaint/").

           That is, if your home directory is "/home/tux", then your personal
           Tux Paint files go in "/home/tux/.tuxpaint/".

           Don't forget the period (".") before the "tuxpaint"!

   To add your own brushes, stamps, 'starters,' templates, and fonts, create
   subdirectories under your personal Tux Paint directory named "brushes",
   "stamps", "starters", "templates", "fonts", respectively.

   (For example, if you created a brush named "flower.png", you would put it
   in "~/.tuxpaint/brushes/" under Linux or Unix.)

                                    Brushes

   The brushes used for drawing with the 'Brush' and 'Lines' tools in Tux
   Paint are simply PNG image files.

   The alpha (transparency) of the PNG image is used to determine the shape
   of the brush, which means that the shape can be 'anti-aliased' and even
   partially-transparent!

   Greyscale pixels in the brush PNG will be drawn using the
   currently-selected color in Tux Paint. Color pixels will be tinted.

Brush Options

   Aside from a graphical shape, brushes can also be given other attributes.
   To do this, you need to create a 'data file' for the brush.

   A brush's data file is simply a plain ASCII text file containing the
   options for the brush.

   The file has the same name as the PNG image, but a ".dat" extension.
   (e.g., "brush.png"'s data file is the text file "brush.dat", found in the
   same directory.)

   Brush Spacing

           As of Tux Paint version 0.9.16, you can now specify the spacing
           for brushes (that is, how often they are drawn). By default, the
           spacing will be the brush's height, divided by 4.

           Add a line containing the line "spacing=N" to the brush's data
           file, where "N" is the spacing you want for the brush. (The lower
           the number, the more often the brush is drawn.)

   Animated Brushes

           As of Tux Paint version 0.9.16, you may now create animated
           brushes. As the brush is used, each frame of the animation is
           drawn.

           Lay each frame out across a wide PNG image. For example, if your
           brush is 30x30 and you have 5 frames, the image should be 150x30.

           Add a line containing the line "frames=N" to the brush's data
           file, where "N" is the number of frames in the brush.

           ⚙ Note: If you'd rather the frames be flipped through randomly,
           rather than sequentially, also add a line containing "random" to
           the brush's data file.

   Directional Brushes

           As of Tux Paint version 0.9.16, you may now create directional
           brushes. As the brush is used, different shapes are drawn,
           depending on the direction the brush is going.

           The directional shapes are divided into a 3x3 square in a PNG
           image. For example, if your brush is 30x30, the image should be
           90x90, and each of the direction's shapes placed in a 3x3 grid.
           The center region is used for no motion. The top right is used for
           motion that's both up, and to the right. And so on.

           Add a line containing the word "directional" to the brush's data
           file.

   Rotating Brushes

           As of Tux Paint version 0.9.27, you may now create rotating
           brushes. As the brush is used, it is rotated 360 degrees,
           depending on the direction the brush is going.

           Add a line containing the word "rotate" to the brush's data file.

   Animated Directional or Rotating Brushes

           You may mix both animated and either directional or rotating
           features into one brush. Use both options desired ("frames=N" and
           "directional" or "rotate"), in separate lines in the brush's
           ".dat" file.

           For directional brushes, lay the brush out so that each 3x3 set of
           directional shapes are laid out across a wide PNG image. For
           example, if the brush is 30x30 and there are 5 frames, it would be
           450x90. (The leftmost 150x90 pixels of the image represent the 9
           direction shapes for the first frame, for example.)

   Place the brush image PNGs (and any data text files) in the "brushes"
   directory.

   💡 Note: If your new brushes all come out as solid squares or rectangles,
   it's because you forgot to use alpha transparency! See the 'PNG
   documentation' in Tux Paint for more information and tips.

                                     Stamps

   All stamp-related files go in the "stamps" directory. It's useful to
   create subdirectories and sub-subdirectories there to organize the stamps.
   (For example, you can have a "holidays" folder with "halloween" and
   "christmas" sub-folders.)

Stamp Images

   Rubber Stamps in Tux Paint can be made up of a number of separate files.
   The one file that is required is, of course, the picture itself.

   As of Tux Paint version 0.9.17, Stamps may be either PNG bitmap images or
   SVG vector images. They can be full-color or greyscale. The alpha
   (transparency) channel of PNGs is used to determine the actual shape of
   the picture (otherwise you'll stamp a large rectangle on your drawings).

   PNGs can be any size, and Tux Paint (by default) provides a set of sizing
   buttons to let the user scale the stamp up (larger) and down (smaller).

   SVGs are vector-based, and will be scaled appropriately for the canvas
   size being used in Tux Paint.

   💡 Note: If your new PNG-based stamps all come out as solid squares or
   rectangles, it's because you forgot to use alpha transparency! See the
   'PNG documentation' in Tux Paint for more information and tips.

   💡 Note: If your new SVG stamps seem to have a lot of whitespace, make sure
   the SVG 'document' is no larger than the shape(s) within. If they are
   being clipped, make sure the 'document' is large enough to contain the
   shape(s). See the 'SVG documentation' in Tux Paint for more information
   and tips.

   ⚙ Advanced Users: The 'Advanced Stamps How-To' document describes, in
   detail, how to make PNG images which will scale perfectly when used as
   stamps in Tux Paint.

Stamp Descriptive Text

   Tux Paint will display descriptive text when a stamp is selected. These
   are placed in plain text files with the same name as the PNG or SVG, but
   with a ".txt" filename extension. (e.g., "stamp.png"'s description is
   stored in "stamp.txt" in the same directory.)

   The first line of the text file will be used as the US English description
   of the stamp's image. It must be encoded in UTF-8.

   Localization Support

           Additional lines can be added to the text file to provide
           translations of the description, to be displayed when Tux Paint is
           running in a different locale (like French or Spanish).

           The beginning of the line should correspond to the language code
           of the language in question (e.g., "fr" for French, and "zh_TW"
           for Traditional Chinese), followed by ".utf8=" and the translated
           description (Unicode, encoded in UTF-8).

           For Tux Paint developers: There are scripts in the "po" directory
           for converting the text files to PO format (and back) for easy
           translation to different languages. Therefore you should never add
           or change translations in the ".txt" files directly.

           If no translation is available for the language Tux Paint is
           currently running in, the US English text is used.

   Windows Users

           Use NotePad or WordPad to edit/create these files. Be sure to save
           them as plain-text, and make sure they have a ".txt" extension at
           the end of the filename.

Stamp Sound Effects

   Tux Paint can play a sound effect when a stamp is selected. For example,
   the sound of a duck quaking when selecting a duck, or a brief piece of
   music when a musical instrument is chosen. Files may be in "WAVE (".wav")"
   or "OGG Vorbis (".ogg")" formats, and are given same name as the PNG or
   SVG image. (e.g., "stamp.svg"'s sound effect is the sound file "stamp.ogg"
   in the same directory.)

   Localization Support

           For sounds for different locales (e.g., if the sound is someone
           saying a word, and you want translated versions of the word said),
           also create WAV or OGG files with the locale's label in the
           filename, in the form: "stamp_LOCALE.EXT"

           The sound effect that will be played when the stamp corresponding
           to the image file "stamp.png" is selected, and when Tux Paint is
           using the Spanish locale, would be "stamp_es.wav". Under the
           French locale, it would be "stamp_fr.wav". Under the Brazilian
           Portuguese locale, "stamp_pt_BR.wav". And so on...

           If no localized sound effect can be loaded, Tux Paint will attempt
           to load the 'default' sound file. (e.g., "stamp.wav")

   💡 Note: Also consider using descriptive sounds; see 'Stamp Descriptive
   Sound', below.

Stamp Descriptive Sound

   Tux Paint can also play a descriptive sound when a stamp is selected. For
   example, the sound of someone saying the word "duck" when selecting a
   duck, or the name of a musical instrument when one is chosen. Files may be
   in "WAVE (".wav")" or "OGG Vorbis (".ogg")" formats, and are given same
   name as the PNG or SVG image, with "_desc" at the end. (e.g.,
   "stamp.svg"'s descriptive sound is the sound file "stamp_desc.ogg" in the
   same directory.)

   Localization Support

           For descriptive sounds for different locales, also create WAV or
           OGG files with both "_desc" and the locale's label in the
           filename, in the form: "stamp_desc_LOCALE.EXT"

           The descriptive sound that will be played when the stamp
           corresponding to the image file "stamp.png" is selected, and when
           Tux Paint is using the Spanish locale, would be
           "stamp_desc_es.wav". Under the French locale, it would be
           "stamp_desc_fr.wav". Under the Brazilian Portuguese locale,
           "stamp_desc_pt_BR.wav". And so on...

           If no localized descriptive sound can be loaded, Tux Paint will
           attempt to load the 'default' sound file. (e.g., "stamp_desc.wav")

Stamp Options

   Aside from a graphical shape, a textual description, a sound effect, and a
   descriptive sound, stamps can also be given other attributes. To do this,
   you need to create a 'data file' for the stamp.

   A stamp's data file is simply a plain ASCII text file containing the
   options for the stamp.

   The file has the same name as the PNG or SVG image, but a ".dat"
   extension. (e.g., "stamp.png"'s data file is the text file "stamp.dat",
   found in the same directory.)

   Colored Stamps

           Stamps can be made to be either "colorable" or "tintable."

                Colorable

                        "Colorable" stamps they work much like brushes - you
                        pick the stamp to get the shape, and then pick the
                        color you want it to be. (Symbol stamps, like the
                        mathematical and musical ones, are an example.)

                        Nothing about the original image is used except the
                        transparency (from "alpha" channel). The color of the
                        stamp comes out solid.

                        Add a line containing the word "colorable" to the
                        stamp's data file.

                Tinted

                        "Tinted" stamps are similar to "colorable" ones,
                        except the details of the original image are kept.
                        (To put it technically, the original image is used,
                        but its hue is changed, based on the
                        currently-selected color.)

                        Add a line containing the word "tintable" to the
                        stamp's data file.

                Tinting Options:

                        Depending on the contents of your stamp, you might
                        want to have Tux Paint use one of a number of methods
                        when tinting it. Add one of the following lines to
                        the stamp's data file:

                             Normal tinter — "tinter=normal" (the default)
                                     This is the normal tinting mode. First,
                                     the primary hue of the stamp is
                                     determined. (For example, a picture of a
                                     flower with a stem will have the petal
                                     color seen as the primary hue of the
                                     overall image.) Next, the most highly
                                     saturated part of the picture is found.
                                     With "normal tinter", the range of hue
                                     used to do this starts out within ±18°
                                     of the pimary hue found in step 1. (If
                                     none can be found, it widens the range
                                     by 50% and tries again.) Finally, the
                                     image is tinted. Anything falling within
                                     50% of the range (e.g., ±27°) is altered
                                     to have the hue of the color chosen by
                                     the user.

                             Narrow tinter — "tinter=narrow"
                                     This like the "normal" option described
                                     above, but starts a narrower hue range
                                     of ±6°. Anything found within 50% of the
                                     range (e.g. ±9°) is tinted. If too much
                                     of your stamp is being tinted, try this
                                     option.

                             'Any hue' tinter — "tinter=anyhue"
                                     This remaps all hues in the stamp. It
                                     works similarly to the "anyhue" and
                                     "narrow" options described above, but
                                     the hue range is ±180°.

                             Vector tinter — "tinter=vector"
                                     This maps 'black through white' to
                                     'black through destination'.

   Unalterable Stamps

           By default, a stamp can be flipped upside down, shown as a mirror
           image, or both. This is done using the control buttons below the
           stamp selector, at the lower right side of the screen in Tux
           Paint.

           Sometimes, it doesn't make sense for a stamp to be flippable or
           mirrored; for example, stamps of letters or numbers. Sometimes
           stamps are symmetrical, so letting the user flip or mirror them
           isn't useful.

           To prevent a stamp from being flipped vertically, add the option
           "noflip" to the stamp's data file.

           To prevent a stamp from being mirrored horizontally, add the
           option "nomirror" to the stamp's data file.

   Initial Stamp Size

           By default, Tux Paint assumes that your stamp is sized
           appropriately for unscaled display on a 608x472 canvas. This was
           the original Tux Paint canvas size, provided by a 640x480 screen.
           Tux Paint will then adjust the stamp according to the current
           canvas size and, if enabled, the user's stamp size controls.

           If your stamp would be too big or too small, you can specify a
           scale factor. If your stamp would be 2.5 times as wide (or tall)
           as it should be, add one of the following options, which represent
           the same adjustment, to the stamp's data file. (An equals sign,
           "=", may be included after the word "scale".)

              * "scale 40%"
              * "scale 5/2"
              * "scale 2.5"
              * "scale 2:5"

   Windows Users

           Use NotePad or WordPad to edit/create these files. Be sure to save
           them as plain-text, and make sure they have a ".txt" extension at
           the end of the filename.

Pre-Mirrored and Flipped Stamps

   In some cases, you may wish to provide a pre-drawn version of a stamp's
   mirror-image, flipped image, or even both. For example, imagine a picture
   of a fire truck with the words "Fire Department" written across the side.
   You probably do not want that text to appear backwards when the image is
   flipped!

   To create a mirrored version of a stamp that you want Tux Paint to use,
   rather than mirroring one on its own, simply create a second ".png" or
   ".svg" graphics file with the same name, except with "_mirror" before the
   filename extension.

   For example, for the stamp "stamp.png" you would create another file named
   "stamp_mirror.png", which will be used when the stamp is mirrored (rather
   than using a backwards version of "stamp.png").

   As of Tux Paint 0.9.18, you may similarly provide a pre-flipped image with
   "_flip" in the name, and/or an image that is both mirrored and flipped, by
   naming it "_mirror_flip".

   💡 Note: If the user flips and mirrors an image, and a pre-drawn
   "_mirror_flip" doesn't exist, but either "_flip" or "_mirror" does, it
   will be used, and mirrored or flipped, respectively.

                                     Fonts

   The fonts used by Tux Paint are TrueType Fonts (TTF).

   Simply place them in the "fonts" directory. Tux Paint will load the font
   and provide four different sizes in the 'Letters' selector when using the
   'Text' and 'Label' tools.

                                   'Starters'

   'Starter' images appear in the 'New' dialog, along with solid color
   background choices.

   When you use a 'starter' image, make modifications, and save it, the
   original 'starter' image is not overwritten. Additionally, as you edit
   your new picture, the contents of the original 'starter' can affect it.

Coloring-Book Style Starters

   The most basic kind of 'starter' is similar to a picture in a coloring
   book. It's an outline of a shape which you can then color in and add
   details to. In Tux Paint, as you draw, type text, or stamp stamps, the
   outline remains 'above' what you draw. You can erase the parts of the
   drawing you made, but you can't erase the outline.

   To create this kind of 'starter' image, simply create an outlined black
   and white picture in a paint program, and save it as a raster PNG file, or
   vector SVG. If saving as a PNG, you may optionally render the image as
   black-and-transparent, rather than black-and-white, but (as of Tux Paint
   0.9.21) this is not required.

Scene-Style Starters

   Along with the 'coloring-book' style overlay, you can also provide a
   separate background image as part of a 'starter' picture. The overlay acts
   the same: it can't be drawn over, erased, or affected by 'Magic' tools.
   However, the background can be!

   When the 'Eraser' tool is used on a picture based on this kind of
   'starter' image, rather than turning the canvas to a solid color, such as
   white, it returns that part of the canvas to the original background
   picture from the 'starter' image.

   By creating both an overlay and a background, you can create a 'starter'
   which simulates depth. Imagine a background that shows the ocean, and an
   overlay that's a picture of a reef. You can then draw (or stamp) fish in
   the picture. They'll appear in the ocean, but never 'in front of' the
   reef.

   To create this kind of 'starter' picture, simply create an overlay (with
   transparency) and save it as a PNG. Then create another image (without
   transparency), and save it with the same filename, but with "-back" (short
   for 'background') appended to the name. (e.g., "starter-back.png" would be
   the background ocean picture that corresponds to the overlay, or
   foreground.)

   For best results, 'starter' images should be at least the same size as Tux
   Paint's drawing canvas. (See the "Loading Other Pictures into Tux Paint"
   section of Tux Paint's main documentation (README) for details on sizing.)
   If they are not, they will be stretched or scaled. This is done without
   affecting the shape ("aspect ratio"); however some smudging may be applied
   to the edges.

   Place them in the "starters" directory. When the 'New' dialog is accessed
   in Tux Paint, the 'starter' images will appear in the screen that appears,
   after the various solid color choices.

   💡 Note: 'Starters' are 'attached' to saved pictures, via a small text file
   that has the same name as the saved file, but with ".dat" as the
   extension. This allows it to continue to affect the drawing even after Tux
   Paint has been quit, or another picture is loaded or a new image is
   created. (In other words, if you base a drawing on a 'starter' image, it
   will always be affected by it.)

                                  'Templates'

   'Template' images also appear in the 'New' dialog, along with solid color
   background choices and 'Starters'. (Note: Tux Paint prior to version
   0.9.22 did not have the 'Template' feature.)

   Unlike pictures drawn in Tux Paint by users and then opened later, opening
   a 'template' creates a new drawing. When you save, the 'template' image is
   not overwritten. Unlike 'starters', there is no immutable 'layer' above
   the canvas. You may draw over any part of it.

   When the 'Eraser' tool is used on a picture based on this kind of
   'template' image, rather than turning the canvas to a solid color, such as
   white, it returns that part of the canvas to the original background
   picture from the 'template' image.

   'Templates' are simply image files (in PNG, JPEG, SVG, or KPX (KidPix)
   format). No preparation or conversion should be required.

   For best results, 'template' images should be at least the same size as
   Tux Paint's drawing canvas. (See the "Loading Other Pictures into Tux
   Paint" section of Tux Paint's main documentation (README) for details on
   sizing.) If they are not, they will be stretched or scaled. This is done
   without affecting the shape ("aspect ratio"); however some smudging may be
   applied to the edges.

   Place them in the "templates" directory. When the 'New' dialog is accessed
   in Tux Paint, the 'template' images will appear in the screen that
   appears, after the various solid color choices.

   💡 Note: 'Templates' are 'attached' to saved pictures, via a small text
   file that has the same name as the saved file, but with ".dat" as the
   extension. This allows it to continue to affect the drawing even after Tux
   Paint has been quit, or another picture is loaded or a new image is
   created. (In other words, if you base a drawing on a 'template' image, it
   will always be affected by it.)

                                  Translations

   Tux Paint supports numerous languages, thanks to use of the "gettext"
   localization library. (See "Options documentation" for how to change
   locales in Tux Paint.)

   To translate Tux Paint to a new language, copy the translation template
   file, "tuxpaint.pot" (found in Tux Paint's source code, in the folder
   "src/po/"). Rename the copy as a ".po" file, with an appropriate name for
   the locale you're translating to (e.g., "es.po" for Spanish; or "pt_BR.po"
   for Brazilian Portuguese, versus "pt.po" or "pt_PT.po" for Portuguese
   spoken in Portugal.)

   Open the newly-created ".po" file — you can edit in a plain text edtior,
   such as Emacs, Pico or VI on Linux, or NotePad on Windows. The original
   English text used in Tux Paint is listed in lines starting with "msgid".
   Enter your translations of each of these pieces of text in the empty
   "msgstr" lines directly below the corresponding "msgid" lines. (Note: Do
   not remove the quotes.)

   Example:

     msgid "Smudge"
     msgstr "Manchar"

     msgid "Click and drag to draw large bricks."
     msgstr "Haz clic y arrastra para dibujar ladrillos grandes."

   Various tools exist to manage gettext translation catalogs, so you don't
   have to edit them by hand in a text editor. Here are a few:
     * Poedit
     * Gtranslator (GNOME Translator)
     * Virtraal
     * Lokalize

   💡 Note: It is best to always work off of the latest Tux Paint text catalog
   template ("tuxpaint.pot"), since new text is added, and old text is
   occasionally changed. The text catalog for the upcoming, unreleased
   version of Tux Paint can be found in Tux Paint's Git repository (see:
   https://tuxpaint.org/download/source/git/), and on the Tux Paint website
   at https://tuxpaint.org/help/po/.

   To edit an existing translation, download the latest ".po" file for that
   language, and edit it as described above.

   You may send new or edited translation files to Bill Kendrick, lead
   developer of Tux Paint, at: bill@newbreedsoftware.com, or post them to the
   "tuxpaint-i18n" mailing list (see: https://tuxpaint.org/lists/).

   Alternatively, if you have an account with SourceForge.net, you can
   request to be added to the "tuxpaint" project and receive write-access to
   the Git source code repository so that you may commit your changes
   directly.

   💡 Note: Support for new locales requires making additions to Tux Paint's
   source code ("/src/i18n.h" and "/src/i18n.c"), and requires updates to the
   Makefile, to ensure the ".po" files are compiled into ".mo" files, and
   available for use at runtime.

                           Alternative Input Methods

   Tux Paint's 'Text' and 'Label' tools can provide alternative input methods
   for some languages. For example, when Tux Paint is running with a Japanese
   locale, the right [Alt] key can be pressed to cycle between Latin,
   Romanized Hiragana and Romanized Katakana modes. This allows native
   characters and words to be entered into the 'Text' and 'Label' tools by
   typing one or more keys on a keyboard with Latin characters (e.g., a US
   QWERTY keyboard).

   To create an input method for a new locale, create a text file with a name
   based on the locale (e.g., "ja" for Japanese), with ".im" as the extension
   (e.g., "ja.im").

   The ".im" file can have multiple character mapping sections for different
   character mapping modes. For example, on a Japanese typing system, typing
   [K] [A] in Hiragana mode generates a different Unicode character ("か")
   than typing [K] [A] in Katakana mode ("カ").

   List the character mappings in this file, one per line. Each line should
   contain (separated by whitespace):

     * the Unicode value of the character, in hexadecimal (more than one
       character can be listed, separated by a colon (':'), this allowing
       some sequences to map to words)
     * the keycode sequence (the ASCII characters that must be entered to
       generate the Unicode character)
     * a flag (or "-" if none)

   Start additional character mapping sections with a line containign the
   word "section".

   Example:

     # Hiragana
     304B ka -
     304C ga -
     304D ki -
     304E gi -
     304D:3083 kya -
     3063:305F tta -

     # Katakana
     section
     30AB ka -
     30AC ga -
     30AD ki -
     30AE gi -

   ⚙ Note: Blank lines within the ".im" file will be ignored, as will any
   text following a "#" (pound/hash) character — it can be used to denote
   comments, as seen in the example above.

   💡 Note: Meanings of the flags are locale-specific, and are processed by
   the language-specific source code in "src/im.c". For example, "b" is used
   in Korean to handle Batchim, which may carry over to the next character.

   💡 Note: Support for new input methods requires making additions to Tux
   Paint's source code ("/src/im.c"), and requires updates to the Makefile,
   to ensure the ".im" files are available for use at runtime.

                               On-screen Keyboard

   As of version 0.9.22, Tux Paint's 'Text' and 'Label' tools can present an
   on-screen keyboard that allows the pointer (via a mouse, eye-tracking
   systems, etc.) to be used to input characters. Files that describe the
   layout and available keys are stored in Tux Paint "osk" directory. Each
   keyboard layout is defined by a number of files (some of which may be
   shared by different layouts).

   We'll use the QWERTY keyboard as an example:

Layout overview file ("qwerty.layout")

   This is a text file that specifies the other files used to describe the
   layout and key mappings.

     layout qwerty.h_layout
     keymap us-intl-altgr-dead-keys.keymap
     composemap en_US.UTF-8_Compose
     keysymdefs keysymdef.h
     keyboardlist qwerty.layout default.layout

   ⚙ Note: Blank lines within the ".layout" file will be ignored, as will any
   text following a "#" (pound/hash) character — it can be used to denote
   comments, as seen in the example above.

   The "keyboardlist" line describes which layouts to switch to, when the
   user clicks the left and right buttons on the keyboard. (See below.)

Keyboard layout file ("qwerty.h_layout")

   This describes how big the keyboard is (as a "width × height" grid), and
   lists each key with its numeric keycode (see the "keymap" file, below),
   the width it should be drawn at (typically "1.0", to take one space on the
   keyboard, but in the example below, notice the "TAB" and "SPACE" keys are
   much wider), the character or text to display on the key, depending on
   which modifier keys have been pressed (one each for: no modifiers,
   [Shift], [AltGr], and [Shift] + [AltGr]), and finally whether or not the
   key is affected by the [CapsLock] key (use "1") or [AltGr] (alternate
   graphics) key (use "2"), or not at all (use "0").

     WIDTH 15
     HEIGHT 5

     KEY 49 1.0 ` ~ ` ~ 0
     KEY 10 1.0 1 ! ¡ ¹ 0
     KEY 11 1.0 2 @ ² ˝ 0
     KEY 12 1.0 3 # · ³ 0
     KEY 13 1.0 4 $ ¤ £ 0
     KEY 14 1.0 5 % € ¸ 0
     KEY 15 1.0 6 ^ ¼ ^ 0
     ...
     KEY 21 1.0 = + × ÷ 0
     KEY 22 2.0 DELETE DELETE DELETE DELETE 0

     NEWLINE

     KEY 23 1.5 TAB TAB TAB TAB 0
     KEY 24 1.0 q Q ä Ä 1
     KEY 25 1.0 w W å Å 1
     KEY 26 1.0 e E é É 1
     KEY 27 1.0 r R ® ® 1
     ...

     NEWLINE

     # Arrow to left will change to the previous keyboard
     KEY 2 1.0 <- <- <- <- 0

     KEY 133 2.0 Cmp Cmp Cmp Cmp 0

     # The ALT or ALTGR keys are used in im to switch the input mode
     KEY 64 2.0 Alt Alt Alt Alt 0

     # Space
     KEY 65 7.0 SPACE SPACE SPACE SPACE 0

     KEY 108 2.0 AltGr AltGr AltGr AltGr 0

     # Arrow to right will change to the next keyboard
     KEY 1 1.0 -> -> -> -> 0

   Notice here that alphabetic keys ([Q], [W], etc.) will be affected by
   [CapsLock], while numeric keys ([1], [2], etc.), [Space], and so on, will
   not.

   Keycodes up to "8" are reserved for internal use. The ones currently used
   are described below.

     * 0 — empty button
     * 1 — next layout (per the layout file's "keyboardlist" setting)
     * 2 — previous layout (per the layout file's "keyboardlist" setting)

Keymap file ("us-intl-altgr-dead-keys.keymap")

   This file defines which numeric keycodes (seen in the keyboard layout
   files, such as "qwerty.h_layout" described above) should be mapped to
   which actual characters that an application such as Tux Paint expects to
   receive when keys (e.g., on a real keyboard) are pressed.

   If you're using an operating system such as Linux, which runs X-Window and
   has the "xmodmap" command-line tool available, you can run it with the
   ("print keymap expressions" option, "-pke", to generate a keymap file.

     keycode 9 = Escape NoSymbol Escape Escape
     keycode 10 = 1 exclam exclamdown onesuperior 1 exclam 1 exclam NoSymbol
     onesuperior
     keycode 11 = 2 at twosuperior dead_doubleacute 2 at 2 at onehalf
     twosuperior
     keycode 12 = 3 numbersign periodcentered threesuperior dead_macron
     periodcentered
     ...
     keycode 52 = z Z ae AE Arabic_hamzaonyeh asciitilde guillemotright
     NoSymbol Greek_zeta Greek_ZETA U037D U03FF
     keycode 53 = x X x X Arabic_hamza Arabic_sukun guillemotleft NoSymbol
     Greek_chi Greek_CHI rightarrow leftarrow
     keycode 54 = c C copyright cent Arabic_hamzaonwaw braceright Greek_psi
     Greek_PSI copyright
     keycode 55 = v V v V Arabic_ra braceleft Greek_omega Greek_OMEGA U03D6
     keycode 56 = b B b B UFEFB UFEF5 Greek_beta Greek_BETA U03D0
     keycode 57 = n N ntilde Ntilde Arabic_alefmaksura Arabic_maddaonalef
     Greek_nu Greek_NU U0374 U0375
     keycode 58 = m M mu mu Arabic_tehmarbuta apostrophe Greek_mu Greek_MU
     U03FB U03FA
     keycode 59 = comma less ccedilla Ccedilla Arabic_waw comma comma less
     guillemotleft
     keycode 60 = period greater dead_abovedot dead_caron Arabic_zain period
     period greater guillemotright periodcentered
     keycode 61 = slash question questiondown dead_hook Arabic_zah
     Arabic_question_mark slash question
     keycode 62 = Shift_R NoSymbol Shift_R Shift_R
     ...

Composemap file ("en_US.UTF-8_Compose")

   This file describes single characters that can be composed by multiple
   inputs. For example, "[Compose]" followed by "[A]" and "[E]" can be used
   to create the "æ" character.

   The file that comes with Tux Paint is based on the US English UTF-8
   (Unicode) composemap that comes with X.Org's X Window system. The current
   version from the Xlib library has a web located page at
   https://www.x.org/releases/current/doc/libX11/i18n/compose/en_US.UTF-8.html.

Keysym definitions file ("keysymdef.h")

   This file (which is a C programming language header file) is also from the
   X Window System. It defines the Unicode values of each keycap (e.g.,
   "XK_equal" corresponds to "U+003D", for the character "=" ("EQUALS SIGN").

   💡 Note: This file is not compiled into Tux Paint, but is read and parsed
   at runtime.

   It is unlikely that any modification will be required of this file.
