/*  Grafx2 - The Ultimate 256-color bitmap paint program
    Copyright 2008 Yves Rizoud
    Copyright 2008 Adrien Destugues
    Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud)
    Grafx2 is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License
    as published by the Free Software Foundation; version 2
    of the License.
    Grafx2 is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
    You should have received a copy of the GNU General Public License
    along with Grafx2; if not, see  or
    write to the Free Software Foundation, Inc.,
    59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/
#include 
#include 
/*** Types definitions and structs ***/
typedef struct{
    uint16_t Numero;
    char Libelle[36];
    char Explic1[77];
    char Explic2[77];
    bool Suppr;       // Raccourci facultatif
    uint16_t Touche;
} S_ConfigTouche;
S_ConfigTouche ConfigTouche[] = {
  {0,
  "Scroll up",
  "Scrolls the picture up, both in magnify and normal mode.",
  "This hotkey cannot be removed.",
  false,
  SDLK_UP}, // HAUT
  {1,
  "Scroll down",
  "Scrolls the picture down, both in magnify and normal mode.",
  "This hotkey cannot be removed.",
  false,
  SDLK_DOWN}, // BAS
  {2,
  "Scroll left",
  "Scrolls the picture to the left, both in magnify and normal mode.",
  "This hotkey cannot be removed.",
  false,
  SDLK_LEFT}, // GAUCHE
  {3,
  "Scroll right",
  "Scrolls the picture to the right, both in magnify and normal mode.",
  "This hotkey cannot be removed.",
  false,
  SDLK_RIGHT}, // DROITE
  {4,
  "Faster scroll up",
  "Used to scroll upwards in the picture fast, either in magnify and normal",
  "mode.",
  true,
  SDLK_UP|MOD_SHIFT}, // Shift + Haut
  {5,
  "Faster scroll down",
  "Used to scroll downwards in the picture fast, either in magnify and normal",
  "mode.",
  true,
  SDLK_DOWN|MOD_SHIFT}, // Shift + Bas
  {6,
  "Faster scroll left",
  "Used to scroll to the left in the picture fast, either in magnify and normal",
  "mode.",
  true,
  SDLK_LEFT|MOD_SHIFT}, // Shift + Gauche
  {7,
  "Faster scroll right",
  "Used to scroll to the right in the picture fast, either in magnify and",
  "normal mode.",
  true,
  SDLK_RIGHT|MOD_SHIFT}, // Shift + Droite
  {8,
  "Slower scroll up",
  "Used to scroll upwards in the picture pixel by pixel, either in magnify and",
  "normal mode.",
  true,
  SDLK_UP|MOD_ALT}, // Alt + Haut
  {9,
  "Slower scroll down",
  "Used to scroll downwards in the picture pixel by pixel, either in magnify and",
  "normal mode.",
  true,
  SDLK_DOWN|MOD_ALT}, // Alt + Bas
  {10,
  "Slower scroll left",
  "Used to scroll to the left in the picture pixel by pixel, either in magnify",
  "and normal mode.",
  true,
  SDLK_LEFT|MOD_ALT}, // Alt + Gauche
  {11,
  "Slower scroll right",
  "Used to scroll to the right in the picture pixel by pixel, either in magnify",
  "and normal mode.",
  true,
  SDLK_RIGHT|MOD_ALT}, // Alt + Droite
  {12,
  "Move mouse cursor 1 pixel up",
  "Used to simulate a very small mouse deplacement upwards.",
  "It""s very useful when you want a ultra-high precision.",
  true,
  SDLK_UP|MOD_CTRL}, // Ctrl + Haut
  {13,
  "Move mouse cursor 1 pixel down",
  "Used to simulate a very small mouse deplacement downwards.",
  "It""s very useful when you want a ultra-high precision.",
  true,
  SDLK_DOWN|MOD_CTRL}, // Ctrl + Bas
  {14,
  "Move mouse cursor 1 pixel left",
  "Used to simulate a very small mouse deplacement to the left.",
  "It""s very useful when you want a ultra-high precision.",
  true,
  SDLK_LEFT|MOD_CTRL}, // Ctrl + Gauche
  {15,
  "Move mouse cursor 1 pixel right",
  "Used to simulate a very small mouse deplacement to the right.",
  "It""s very useful when you want a ultra-high precision.",
  true,
  SDLK_RIGHT|MOD_CTRL}, // Ctrl + Droite
  {16,
  "Simulate left mouse click",
  "Used to simulate a click with the left mouse button..",
  "It""s very useful when you want a ultra-high precision.",
  true,
  SDLK_SPACE}, // Space
  {17,
  "Simulate right mouse click",
  "Used to simulate a click with the right mouse button..",
  "It""s very useful when you want a ultra-high precision.",
  true,
  SDLK_SPACE|MOD_SHIFT}, // Shift + Space
  {18,
  "Show/hide option menu",
  "Switch the tool bar display on/off.",
  "This hot-key cannot be removed.",
  false,
  SDLK_F10}, // F10
  {19,
  "Show/hide cursor",
  "Switch the cursor display on/off.",
  "This only works on the \"small cross\" and \"hand\" cursors.",
  true,
  SDLK_F9}, // F9
  {20,
  "Set paintbrush to 1 pixel",
  "Useful when you want to use a \"single-pixel-brush\".",
  "",
  true,
  SDLK_DELETE}, // Del
  {21,
  "Paintbrush choice",
  "Opens a menu where you can choose a paintbrush out of 24 predefined ones.",
  "",
  true,
  SDLK_F4}, // F4
  {22,
  "Monochrome brush",
  "Turn your current user-defined brush into a single colored one.",
  "All non-transparent colors are set to current foreground color.",
  true,
  SDLK_F4|MOD_SHIFT}, // Shift + F4
  {23,
  "Freehand drawing",
  "Set the drawing mode to the classical freehand one.",
  "",
  true,
  SDLK_d}, // D
  {24,
  "Switch freehand drawing mode",
  "Switch between the 3 ways to use freehand drawing.",
  "These modes are: continuous, discontinuous and point by point.",
  true,
  SDLK_d|MOD_SHIFT}, // Shift + D
  {25,
  "Continuous freehand drawing",
  "Switch directly to continuous freehand drawing mode.",
  "",
  true,
  SDLK_d|MOD_CTRL}, // Ctrl + D
  {26,
  "Line",
  "Allows you to draw lines.",
  "",
  true,
  SDLK_l}, // L
  {27,
  "Knotted lines",
  "Allows you to draw linked lines.",
  "This mode can also be called \"Polyline\".",
  true,
  SDLK_l|MOD_SHIFT}, // Shift + L
  {28,
  "Spray",
  "Allows you to spray brushes randomly in the picture.",
  "",
  true,
  SDLK_a}, // A (Q en AZERTY)
  {29,
  "Spray menu",
  "Opens a menu in which you can configure the spray flow and size.",
  "",
  true,
  SDLK_a|MOD_SHIFT}, // Shift + A
  {30,
  "Flood-fill",
  "Allows you to fill an area of the picture made of pixels of the same color.",
  "",
  true,
  SDLK_f}, // F
  {124,
  "Replace color",
  "Allows you to replace all the pixels of the color pointed by the mouse with",
  "the fore-color or the back-color.",
  true,
  SDLK_f|MOD_SHIFT}, // Shift + F
  {31,
  "Bezier""s curves",
  "Allows you to draw Bezier""s curves.",
  "",
  true,
  SDLK_i}, // I
  {32,
  "Bezier""s curve with 3 or 4 points",
  "Allows you to choose whether you want to draw Bezier""s curves with 3 or 4",
  "points.",
  true,
  SDLK_i|MOD_SHIFT}, // Shift + I
  {33,
  "Empty rectangle",
  "Allows you to draw a rectangle using the brush.",
  "",
  true,
  SDLK_r}, // R
  {34,
  "Filled rectangle",
  "Allows you to draw a filled rectangle.",
  "",
  true,
  SDLK_r|MOD_SHIFT}, // Shift + R
  {35,
  "Empty circle",
  "Allows you to draw a circle using the brush.",
  "",
  true,
  SDLK_c}, // C
  {36,
  "Empty ellipse",
  "Allows you to draw an ellipse using the brush.",
  "",
  true,
  SDLK_c|MOD_CTRL}, // Ctrl + C
  {37,
  "Filled circle",
  "Allows you to draw a filled circle.",
  "",
  true,
  SDLK_c|MOD_SHIFT}, // Shift + C
  {38,
  "Filled ellipse",
  "Allows you to draw a filled ellipse.",
  "",
  true,
  SDLK_c|MOD_SHIFT|MOD_CTRL}, // Shift + Ctrl + C
  {39,
  "Empty polygon",
  "Allows you to draw a polygon using the brush.",
  "",
  true,
  SDLK_n}, // N
  {40,
  "Empty \"polyform\"",
  "Allows you to draw a freehand polygon using the brush.",
  "",
  true,
  SDLK_n|MOD_CTRL}, // Ctrl + N
  {41,
  "Filled polygon",
  "Allows you to draw a filled polygon.",
  "",
  true,
  SDLK_n|MOD_SHIFT}, // Shift + N
  {42,
  "Filled \"polyform\"",
  "Allows you to draw a filled freehand polygon.",
  "",
  true,
  SDLK_n|MOD_SHIFT|MOD_CTRL}, // Shift + Ctrl + N
  {43,
  "Rectangle with gradation",
  "Allows you to draw a rectangle with a color gradation.",
  "",
  true,
  SDLK_r|MOD_ALT}, // Alt + R
  {44,
  "Gradation menu",
  "Allows you to configure the way color gradations are calculated.",
  "",
  true,
  SDLK_g|MOD_ALT}, // Alt + G
  {45,
  "Sphere with gradation",
  "Allows you to draw a rectangle with a color gradation.",
  "",
  true,
  SDLK_c|MOD_ALT}, // Alt + C
  {46,
  "Ellipse with gradation",
  "Allows you to draw an ellipse filled with a color gradation.",
  "",
  true,
  SDLK_c|MOD_SHIFT|MOD_ALT}, // Shift + Alt + C
  {47,
  "Adjust picture",
  "Allows you to move the whole picture in order to re-center it.",
  "Notice that what gets out from a side reappears on the other.",
  true,
  SDLK_KP5}, // Kpad5
  {48,
  "Flip/shrink picture menu",
  "Opens a menu which allows you to flip the picture horizontally/vertically or",
  "to shrink it to half-scale horizontally and/or vertically.",
  true,
  SDLK_KP5|MOD_SHIFT}, // Shift + Kpad5
  {49,
  "Drawing effects",
  "Opens a menu where you can enable/disable and configure the drawing effects",
  "listed below.",
  true,
  SDLK_e}, // E
  {50,
  "Shade mode",
  "Allows you to shade or lighten some pixels of the picture belonging to a",
  "color range, in addition of any drawing tool.",
  true,
  SDLK_F5}, // F5
  {51,
  "Shade menu",
  "Opens a menu where you can choose color ranges to use with the Shade mode.",
  "This menu also contains parameters used both in Shade and Quick-shade modes.",
  true,
  SDLK_F5|MOD_SHIFT}, // Shift + F5
  {131,
  "Quick-shade mode",
  "Does the same thing as shade mode with a simpler method (faster to define",
  "but a bit less powerful).",
  true,
  SDLK_F5|MOD_CTRL}, // Ctrl + F5
  {132,
  "Quick-shade menu",
  "Opens a menu where you can define the parameters of the quick-shade mode.",
  "",
  true,
  SDLK_F5|MOD_SHIFT|MOD_CTRL}, // Shift + Ctrl + F5
  {52,
  "Stencil mode",
  "Allows you to mask colors that must not be affected when you are drawing.",
  "",
  true,
  SDLK_F6}, // F6
  {53,
  "Stencil menu",
  "Opens a menu where you can choose colors masked by the Stencil mode.",
  "",
  true,
  SDLK_F6|MOD_SHIFT}, // Shift + F6
  {54,
  "Mask mode",
  "Allows you to mask colors of the spare page that will keep you from ",
  "drawing. This mode should be called \"True stencil\".",
  true,
  SDLK_F6|MOD_ALT}, // Alt + F6
  {55,
  "Mask menu",
  "Opens a menu where you can choose colors for the Mask mode.",
  "",
  true,
  SDLK_F6|MOD_SHIFT|MOD_ALT}, // Shift + Alt + F6
  {56,
  "Grid mode",
  "Force the cursor to snap up grid points.",
  "",
  true,
  SDLK_g}, // G
  {57,
  "Grid menu",
  "Open a menu where you can configure the grid used by Grid mode.",
  "",
  true,
  SDLK_g|MOD_SHIFT}, // Shift + G
  {58,
  "Sieve mode",
  "Only draws pixels on certain positions matching with a sieve.",
  "",
  true,
  SDLK_g|MOD_CTRL}, // Ctrl + G
  {59,
  "Sieve menu",
  "Opens a menu where you can configure the sieve.",
  "",
  true,
  SDLK_g|MOD_SHIFT|MOD_CTRL}, // Shift + Ctrl + G
  {60,
  "Invert sieve",
  "Inverts the pattern defined in the Sieve menu.",
  "",
  true,
  SDLK_g|MOD_CTRL|MOD_ALT}, // Ctrl + Alt + G
  {61,
  "Colorize mode",
  "Allows you to colorize the pixels on which your brush is pasted.",
  "This permits you to make transparency effects.",
  true,
  SDLK_F7}, // F7
  {62,
  "Colorize menu",
  "Opens a menu where you can give the opacity percentage for Colorize mode.",
  "",
  true,
  SDLK_F7|MOD_SHIFT}, // Shift + F7
  {63,
  "Smooth mode",
  "Soften pixels on which your brush is pasted.",
  "",
  true,
  SDLK_F8}, // F8
  {123,
  "Smooth menu",
  "Opens a menu where you can define the Smooth matrix.",
  "",
  true,
  SDLK_F8|MOD_SHIFT}, // Shift + F8
  {64,
  "Smear mode",
  "Smears the pixels when you move your brush on the picture.",
  "",
  true,
  SDLK_F8|MOD_ALT}, // Alt + F8
  {65,
  "Tiling mode",
  "Puts parts of the brush where you draw.",
  "",
  true,
  SDLK_b|MOD_ALT}, // Alt + B
  {66,
  "Tiling menu",
  "Opens a menu where you can configure the origin of the tiling.",
  "",
  true,
  SDLK_b|MOD_SHIFT|MOD_ALT}, // Shift + Alt + B
  {67,
  "Classical brush grabbing",
  "Allows you to pick a brush defined within a rectangle.",
  "",
  true,
  SDLK_b}, // B
  {68,
  "\"Lasso\" brush grabbing",
  "Allows you to pick a brush defined within a freehand polygon.",
  "",
  true,
  SDLK_b|MOD_CTRL}, // Ctrl + B
  {69,
  "Get previous brush back",
  "Restore the last user-defined brush.",
  "",
  true,
  SDLK_b|MOD_SHIFT}, // Shift + B
  {70,
  "Horizontal brush flipping",
  "Reverse brush horizontally.",
  "",
  true,
  SDLK_x}, // X
  {71,
  "Vertical brush flipping",
  "Reverse brush vertically.",
  "",
  true,
  SDLK_y}, // Y
  {72,
  "90ø brush rotation",
  "Rotate the user-defined brush by 90ø (counter-clockwise).",
  "",
  true,
  SDLK_z}, // Z (W en AZERTY)
  {73,
  "180ø brush rotation",
  "Rotate the user-defined brush by 180ø.",
  "",
  true,
  SDLK_z|MOD_SHIFT}, // Shift + Z
  {74,
  "Strech brush",
  "Allows you to resize the user-defined brush.",
  "",
  true,
  SDLK_s}, // S
  {75,
  "Distort brush",
  "Allows you to distort the user-defined brush.",
  "",
  true,
  SDLK_s|MOD_SHIFT}, // Shift + S
  {76,
  "Outline brush",
  "Outlines the user-defined brush with the fore color.",
  "",
  true,
  SDLK_o}, // O
  {77,
  "Nibble brush",
  "Deletes the borders of the user-defined brush.",
  "This does the opposite of the Outline option.",
  true,
  SDLK_o|MOD_SHIFT}, // Shift + O
  {78,
  "Get colors from brush",
  "Copy colors of the spare page that are used in the brush.",
  "",
  true,
  SDLK_F11}, // F11
  {79,
  "Recolorize brush",
  "Recolorize pixels of the user-defined brush in order to get a brush which",
  "looks like the one grabbed in the spare page.",
  true,
  SDLK_F12}, // F12
  {80,
  "Rotate by any angle",
  "Rotate the brush by an angle that you can define.",
  "",
  true,
  SDLK_w}, // W (Z en AZERTY)
  {81,
  "Pipette",
  "Allows you to copy the color of a pixel in the picture into the foreground",
  "or background color.",
  true,
  SDLK_BACKQUOTE}, // `~ (Touche sous le Esc - ² en AZERTY)
  {82,
  "Swap foreground/background colors",
  "Invert foreground and background colors.",
  "",
  true,
  SDLK_BACKQUOTE|MOD_SHIFT}, // Shift + `~
  {83,
  "Magnifier mode",
  "Allows you to zoom into the picture.",
  "",
  true,
  SDLK_m}, // M (, ? sur AZERTY)
  {84,
  "Zoom factor menu",
  "Opens a menu where you can choose a magnifying factor.",
  "",
  true,
  SDLK_m|MOD_SHIFT}, // Shift + M
  {85,
  "Zoom in",
  "Increase magnifying factor.",
  "",
  true,
  SDLK_KP_PLUS}, // Grey +
  {86,
  "Zoom out",
  "Decrease magnifying factor.",
  "",
  true,
  SDLK_KP_MINUS}, // Grey -
  {87,
  "Brush effects menu",
  "Opens a menu which proposes different effects on the user-defined brush.",
  "",
  true,
  SDLK_b|MOD_CTRL|MOD_ALT}, // Ctrl + Alt + B
  {88,
  "Text",
  "Opens a menu which permits you to type in a character string and to choose a",
  "font, and then creates a new user-defined brush fitting to your choices.",
  true,
  SDLK_t}, // T
  {89,
  "Screen resolution menu",
  "Opens a menu where you can choose the dimensions of the screen in which you",
  "want to draw among the numerous X and SVGA proposed modes.",
  true,
  SDLK_RETURN}, // Enter
  {90,
  "\"Safety\" resolution",
  "Set resolution to 320x200. This can be useful if you choosed a resolution",
  "that is not supported by your monitor and video card. Cannot be removed.",
  false,
  SDLK_RETURN|MOD_SHIFT}, // Shift + Enter
  {91,
  "Help and credits",
  "Opens a window where you can get information about the program.",
  "",
  true,
  SDLK_F1}, // F1
  {92,
  "Statistics",
  "Displays miscellaneous more or less useful information.",
  "",
  true,
  SDLK_F1|MOD_SHIFT}, // Shift + F1
  {93,
  "Jump to spare page",
  "Swap current page and spare page.",
  "",
  true,
  SDLK_TAB}, // Tab
  {94,
  "Copy current page to spare page",
  "Copy current page to spare page.",
  "",
  true,
  SDLK_TAB|MOD_SHIFT}, // Shift + Tab
  {95,
  "Save picture as...",
  "Opens a file-selector that allows you to save your picture with a new",
  "path-name.",
  true,
  SDLK_F2}, // F2
  {96,
  "Save picture",
  "Saves your picture with the last name you gave it.",
  "",
  true,
  SDLK_F2|MOD_SHIFT}, // Shift + F2
  {97,
  "Load picture",
  "Opens a file-selector that allows you to load a new picture.",
  "",
  true,
  SDLK_F3}, // F3
  {98,
  "Re-load picture",
  "Re-load the current picture.",
  "This allows you to cancel modifications made since last saving.",
  true,
  SDLK_F3|MOD_SHIFT}, // Shift + F3
  {99,
  "Save brush",
  "Opens a file-selector that allows you to save your current user-defined",
  "brush.",
  true,
  SDLK_F2|MOD_CTRL}, // Ctrl + F2
  {100,
  "Load brush",
  "Opens a file-selector that allows you to load a brush.",
  "",
  true,
  SDLK_F3|MOD_CTRL}, // Ctrl + F3
  {101,
  "Settings",
  "Opens a menu which permits you to set the dimension of your picture, and to",
  "modify some parameters of the program.",
  true,
  SDLK_F10|MOD_SHIFT}, // Shift + F10
  {102,
  "Undo (Oops!)",
  "Cancel the last action which modified the picture. This has no effect after",
  "a jump to the spare page, loading a picture or modifying its size.",
  true,
  SDLK_u}, // U
  {103,
  "Redo",
  "Redo the last undone action. This has no effect after a jump to the spare",
  "page, loading a picture or modifying its size.",
  true,
  SDLK_u|MOD_SHIFT}, // Shift + U
  {133,
  "Kill",
  "Kills the current page. It actually removes the current page from the list",
  "of \"Undo\" pages.",
  true,
  SDLK_DELETE|MOD_SHIFT}, // Shift + Suppr
  {104,
  "Clear page",
  "Clears the picture with the first color of the palette (usually black).",
  "",
  true,
  SDLK_BACKSPACE}, // BackSpace
  {105,
  "Clear page with backcolor",
  "Clears the picture with the backcolor.",
  "",
  true,
  SDLK_BACKSPACE|MOD_SHIFT}, // Shift + BackSpace
  {106,
  "Quit program",
  "Allows you to leave the program.",
  "If modifications were not saved, confirmation is asked.",
  false,
  SDLK_q}, // Q (A en AZERTY)
  {107,
  "Palette menu",
  "Opens a menu which allows you to modify the current palette.",
  "",
  true,
  SDLK_p}, // P
  {125,
  "Secondary palette menu",
  "Opens a menu which allows you to define color series and some tagged colors.",
  "",
  true,
  SDLK_p|MOD_SHIFT}, // Shift + P
  {130,
  "Exclude colors menu",
  "Opens a menu which allows you to define the colors you don""t want to use in",
  "modes such as Smooth and Transparency, or when remapping a brush.",
  true,
  SDLK_p|MOD_CTRL}, // Ctrl + P
  {108,
  "Scroll palette to the left",
  "Scroll palette in the tool bar to the left, column by column.",
  "",
  true,
  SDLK_PAGEUP}, // PgUp
  {109,
  "Scroll palette to the right",
  "Scroll palette in the tool bar to the right, column by column.",
  "",
  true,
  SDLK_PAGEDOWN}, // PgDn
  {110,
  "Scroll palette to the left faster",
  "Scroll palette in the tool bar to the left, 8 columns by 8 columns.",
  "",
  true,
  SDLK_PAGEUP|MOD_SHIFT}, // Shift + PgUp
  {111,
  "Scroll palette to the right faster",
  "Scroll palette in the tool bar to the right, 8 columns by 8 columns.",
  "",
  true,
  SDLK_PAGEDOWN|MOD_SHIFT}, // Shift + PgDn
  {112,
  "Center brush attachment point",
  "Set the attachement of the user-defined brush to its center.",
  "",
  true,
  SDLK_KP5|MOD_CTRL}, // Ctrl + 5 (pavé numérique)
  {113,
  "Top-left brush attachment point",
  "Set the attachement of the user-defined brush to its top-left corner.",
  "",
  true,
  SDLK_HOME|MOD_CTRL}, // Ctrl + 7
  {114,
  "Top-right brush attachment point",
  "Set the attachement of the user-defined brush to its top-right corner.",
  "",
  true,
  SDLK_PAGEUP|MOD_CTRL}, // Ctrl + 9
  {115,
  "Bottom-left brush attachment point",
  "Set the attachement of the user-defined brush to its bottom-left corner.",
  "",
  true,
  SDLK_END|MOD_CTRL}, // Ctrl + 1
  {116,
  "Bottom-right brush attachment point",
  "Set the attachement of the user-defined brush to its bottom-right corner.",
  "",
  true,
  SDLK_PAGEDOWN|MOD_CTRL}, // Ctrl + 3
  {117,
  "Next foreground color",
  "Set the foreground color to the next in the palette.",
  "",
  true,
  SDLK_RIGHTBRACKET}, // ] (0x en AZERTY)
  {118,
  "Previous foreground color",
  "Set the foreground color to the previous in the palette.",
  "",
  true,
  SDLK_LEFTBRACKET}, // [ (^ en AZERTY)
  {119,
  "Next background color",
  "Set the background color to the next in the palette.",
  "",
  true,
  SDLK_RIGHTBRACKET|MOD_SHIFT}, // Shift + ]
  {120,
  "Previous background color",
  "Set the background color to the previous in the palette.",
  "",
  true,
  SDLK_LEFTBRACKET|MOD_SHIFT}, // Shift + [
  {126,
  "Next user-defined forecolor",
  "Set the foreground color to the next in the user-defined color series.",
  "",
  true,
  SDLK_EQUALS}, // "=+"
  {127,
  "Previous user-defined forecolor",
  "Set the foreground color to the previous in the user-defined color series.",
  "",
  true,
  SDLK_MINUS}, // "-_" (")ø" en AZERTY
  {128,
  "Next user-defined backcolor",
  "Set the background color to the next in the user-defined color series.",
  "",
  true,
  SDLK_EQUALS|MOD_SHIFT}, // Shift + "=+"
  {129,
  "Previous user-defined backcolor",
  "Set the background color to the previous in the user-defined color series.",
  "",
  true,
  SDLK_MINUS|MOD_SHIFT}, // Shift + "-_" (")ø" en AZERTY
  {121,
  "Shrink paintbrush",
  "Decrease the width of the paintbrush if it is special circle or square.",
  "",
  true,
  SDLK_COMMA}, // , < (;. en AZERTY)
  {122,
  "Enlarge paintbrush",
  "Increase the width of the paintbrush if it is special circle or square.",
  "",
  true,
  SDLK_PERIOD}, // .> (:/ en AZERTY)
};