Related tdf#129547 and tdf#154136: add COLON key

Change-Id: I17978dbb100fbfa6f6ddbbbdf96872076bc2a289
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86713
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
diff --git a/cui/source/customize/acccfg.cxx b/cui/source/customize/acccfg.cxx
index 70ec176..f28eee8 100644
--- a/cui/source/customize/acccfg.cxx
+++ b/cui/source/customize/acccfg.cxx
@@ -186,6 +186,7 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1,
                                     KEY_MOD1 | KEY_X,
                                     KEY_MOD1 | KEY_Y,
                                     KEY_MOD1 | KEY_Z,
                                     KEY_MOD1 | KEY_COLON,
                                     KEY_MOD1 | KEY_SEMICOLON,
                                     KEY_MOD1 | KEY_QUOTELEFT,
                                     KEY_MOD1 | KEY_QUOTERIGHT,
@@ -270,6 +271,7 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1,
                                     KEY_SHIFT | KEY_MOD1 | KEY_X,
                                     KEY_SHIFT | KEY_MOD1 | KEY_Y,
                                     KEY_SHIFT | KEY_MOD1 | KEY_Z,
                                     KEY_SHIFT | KEY_MOD1 | KEY_COLON,
                                     KEY_SHIFT | KEY_MOD1 | KEY_SEMICOLON,
                                     KEY_SHIFT | KEY_MOD1 | KEY_QUOTELEFT,
                                     KEY_SHIFT | KEY_MOD1 | KEY_QUOTERIGHT,
@@ -350,6 +352,7 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1,
                                     KEY_MOD2 | KEY_X,
                                     KEY_MOD2 | KEY_Y,
                                     KEY_MOD2 | KEY_Z,
                                     KEY_MOD2 | KEY_COLON,
                                     KEY_MOD2 | KEY_SEMICOLON,
                                     KEY_MOD2 | KEY_QUOTELEFT,
                                     KEY_MOD2 | KEY_QUOTERIGHT,
@@ -428,6 +431,7 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1,
                                     KEY_SHIFT | KEY_MOD2 | KEY_X,
                                     KEY_SHIFT | KEY_MOD2 | KEY_Y,
                                     KEY_SHIFT | KEY_MOD2 | KEY_Z,
                                     KEY_SHIFT | KEY_MOD2 | KEY_COLON,
                                     KEY_SHIFT | KEY_MOD2 | KEY_SEMICOLON,
                                     KEY_SHIFT | KEY_MOD2 | KEY_QUOTELEFT,
                                     KEY_SHIFT | KEY_MOD2 | KEY_QUOTERIGHT,
@@ -507,6 +511,7 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1,
                                     KEY_MOD1 | KEY_MOD2 | KEY_X,
                                     KEY_MOD1 | KEY_MOD2 | KEY_Y,
                                     KEY_MOD1 | KEY_MOD2 | KEY_Z,
                                     KEY_MOD1 | KEY_MOD2 | KEY_COLON,
                                     KEY_MOD1 | KEY_MOD2 | KEY_SEMICOLON,
                                     KEY_MOD1 | KEY_MOD2 | KEY_QUOTELEFT,
                                     KEY_MOD1 | KEY_MOD2 | KEY_QUOTERIGHT,
@@ -585,6 +590,7 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1,
                                     KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_X,
                                     KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_Y,
                                     KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_Z,
                                     KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_COLON,
                                     KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_SEMICOLON,
                                     KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_QUOTELEFT,
                                     KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_QUOTERIGHT,
@@ -665,6 +671,7 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1,
                                     KEY_MOD3 | KEY_X,
                                     KEY_MOD3 | KEY_Y,
                                     KEY_MOD3 | KEY_Z,
                                     KEY_MOD3 | KEY_COLON,
                                     KEY_MOD3 | KEY_SEMICOLON,
                                     KEY_MOD3 | KEY_QUOTELEFT,
                                     KEY_MOD3 | KEY_QUOTERIGHT,
@@ -749,6 +756,7 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1,
                                     KEY_SHIFT | KEY_MOD3 | KEY_X,
                                     KEY_SHIFT | KEY_MOD3 | KEY_Y,
                                     KEY_SHIFT | KEY_MOD3 | KEY_Z,
                                     KEY_SHIFT | KEY_MOD3 | KEY_COLON,
                                     KEY_SHIFT | KEY_MOD3 | KEY_SEMICOLON,
                                     KEY_SHIFT | KEY_MOD3 | KEY_QUOTELEFT,
                                     KEY_SHIFT | KEY_MOD3 | KEY_QUOTERIGHT,
diff --git a/framework/source/accelerators/keymapping.cxx b/framework/source/accelerators/keymapping.cxx
index b2bd938..4b9588d 100644
--- a/framework/source/accelerators/keymapping.cxx
+++ b/framework/source/accelerators/keymapping.cxx
@@ -137,6 +137,7 @@ KeyMapping::KeyIdentifierInfo const KeyMapping::KeyIdentifierMap[] =
    {css::awt::Key::SEMICOLON     , "KEY_SEMICOLON" },
    {css::awt::Key::QUOTERIGHT    , "KEY_QUOTERIGHT" },
    {css::awt::Key::RIGHTCURLYBRACKET, "KEY_RIGHTCURLYBRACKET" },
    {css::awt::Key::COLON         , "KEY_COLON" },
    {0                            , ""               } // mark the end of this array!
};

diff --git a/include/vcl/keycodes.hxx b/include/vcl/keycodes.hxx
index fa54bee..a935b0e 100644
--- a/include/vcl/keycodes.hxx
+++ b/include/vcl/keycodes.hxx
@@ -155,6 +155,7 @@ constexpr sal_uInt16 KEY_BRACKETRIGHT = css::awt::Key::BRACKETRIGHT;
constexpr sal_uInt16 KEY_SEMICOLON = css::awt::Key::SEMICOLON;
constexpr sal_uInt16 KEY_QUOTERIGHT = css::awt::Key::QUOTERIGHT;
constexpr sal_uInt16 KEY_RIGHTCURLYBRACKET = css::awt::Key::RIGHTCURLYBRACKET;
constexpr sal_uInt16 KEY_COLON = css::awt::Key::COLON;

constexpr sal_uInt16 KEY_CAPSLOCK = css::awt::Key::CAPSLOCK;
constexpr sal_uInt16 KEY_NUMLOCK = css::awt::Key::NUMLOCK;
diff --git a/offapi/com/sun/star/awt/Key.idl b/offapi/com/sun/star/awt/Key.idl
index bd236c3..6b19dad 100644
--- a/offapi/com/sun/star/awt/Key.idl
+++ b/offapi/com/sun/star/awt/Key.idl
@@ -369,6 +369,8 @@ published constants Key
    /** @since LibreOffice 7.5 **/
    const short RIGHTCURLYBRACKET = 1319;

    /** @since LibreOffice 7.6 **/
    const short COLON = 1320;

    /** The following values don't correspond to physical keys on any
        keyboard but are used in the macOS implementation of VCL. They
diff --git a/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu b/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu
index cead4fa..d482f91 100644
--- a/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu
@@ -938,8 +938,7 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some emoji thing
        <node oor:name="SEMICOLON_SHIFT_MOD1" oor:op="replace">
          <prop oor:name="Command">
            <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
            <value xml:lang="en-US" install:module="macosx">.uno:SpellDialog</value>
            <value xml:lang="en-US" install:module="unxwnt">.uno:InsertCurrentTime</value>
            <value xml:lang="en-US">.uno:InsertCurrentTime</value>
          </prop>
        </node>
        <node oor:name="F7_MOD1" oor:op="replace">
diff --git a/vcl/osx/salframe.cxx b/vcl/osx/salframe.cxx
index 80045b9..4c9f891 100644
--- a/vcl/osx/salframe.cxx
+++ b/vcl/osx/salframe.cxx
@@ -1080,6 +1080,7 @@ OUString AquaSalFrame::GetKeyName( sal_uInt16 nKeyCode )
        aKeyMap[ KEY_SEMICOLON ] = ";";
        aKeyMap[ KEY_QUOTERIGHT ] = "'";
        aKeyMap[ KEY_RIGHTCURLYBRACKET ] = "}";
        aKeyMap[ KEY_COLON ] = ":";

        /* yet unmapped KEYCODES:
        aKeyMap[ KEY_INSERT ]   = OUString( sal_Unicode( ) );
diff --git a/vcl/osx/salmenu.cxx b/vcl/osx/salmenu.cxx
index 60cafca..c7dfc46 100644
--- a/vcl/osx/salmenu.cxx
+++ b/vcl/osx/salmenu.cxx
@@ -652,6 +652,9 @@ void AquaSalMenu::SetAccelerator( unsigned /*nPos*/, SalMenuItem* pSalMenuItem, 
            case KEY_EQUAL:
                nCommandKey='=';
                break;
            case KEY_COLON:
                nCommandKey=':';
                break;
            case KEY_SEMICOLON:
                nCommandKey=';';
                break;
diff --git a/vcl/qt5/QtFrame.cxx b/vcl/qt5/QtFrame.cxx
index 554485a..5517584 100644
--- a/vcl/qt5/QtFrame.cxx
+++ b/vcl/qt5/QtFrame.cxx
@@ -961,6 +961,9 @@ OUString QtFrame::GetKeyName(sal_uInt16 nKeyCode)
            case KEY_BRACKETRIGHT:
                nRetCode = Qt::Key_BracketRight;
                break;
            case KEY_COLON:
                nRetCode = Qt::Key_Colon;
                break;
            case KEY_SEMICOLON:
                nRetCode = Qt::Key_Semicolon;
                break;
diff --git a/vcl/qt5/QtWidget.cxx b/vcl/qt5/QtWidget.cxx
index 91d3ac1..cc17cc8 100644
--- a/vcl/qt5/QtWidget.cxx
+++ b/vcl/qt5/QtWidget.cxx
@@ -460,6 +460,9 @@ static sal_uInt16 GetKeyCode(int keyval, Qt::KeyboardModifiers modifiers)
            case Qt::Key_BracketRight:
                nCode = KEY_BRACKETRIGHT;
                break;
            case Qt::Key_Colon:
                nCode = KEY_COLON;
                break;
            case Qt::Key_Semicolon:
                nCode = KEY_SEMICOLON;
                break;
diff --git a/vcl/unx/generic/app/saldisp.cxx b/vcl/unx/generic/app/saldisp.cxx
index 8a2d9dd..f96aba9 100644
--- a/vcl/unx/generic/app/saldisp.cxx
+++ b/vcl/unx/generic/app/saldisp.cxx
@@ -943,6 +943,9 @@ OUString SalDisplay::GetKeyName( sal_uInt16 nKeyCode ) const
        case KEY_RIGHTCURLYBRACKET:
            aCustomKeyName = "}";
            break;
        case KEY_COLON:
            aCustomKeyName = ":";
            break;
        default:
            nKeySym = 0;
            break;
@@ -1293,6 +1296,10 @@ sal_uInt16 SalDisplay::GetKeyCode( KeySym keysym, char*pcPrintable ) const
            nKey = KEY_RIGHTCURLYBRACKET;
            *pcPrintable = '\'';
            break;
        case XK_colon:
            nKey = KEY_COLON;
            *pcPrintable = ':';
            break;
        // - - - - - - - - - - - - -  Apollo - - - - - - - - - - - - - 0x1000
        case 0x1000FF02: // apXK_Copy
            nKey = KEY_COPY;
diff --git a/vcl/unx/gtk3/gtkframe.cxx b/vcl/unx/gtk3/gtkframe.cxx
index 5cf87a3..383cf5d 100644
--- a/vcl/unx/gtk3/gtkframe.cxx
+++ b/vcl/unx/gtk3/gtkframe.cxx
@@ -216,6 +216,7 @@ sal_uInt16 GtkSalFrame::GetKeyCode(guint keyval)
            case GDK_KEY_semicolon:    nCode = KEY_SEMICOLON;    break;
            case GDK_KEY_quoteright:   nCode = KEY_QUOTERIGHT;   break;
            case GDK_KEY_braceright:   nCode = KEY_RIGHTCURLYBRACKET;   break;
            case GDK_KEY_colon:    nCode = KEY_COLON;    break;
            // some special cases, also see saldisp.cxx
            // - - - - - - - - - - - - -  Apollo - - - - - - - - - - - - - 0x1000
            // These can be found in ap_keysym.h
@@ -2734,6 +2735,7 @@ void GtkSalFrame::KeyCodeToGdkKey(const vcl::KeyCode& rKeyCode,
            case KEY_SEMICOLON:     nKeyCode = GDK_KEY_semicolon;       break;
            case KEY_QUOTERIGHT:    nKeyCode = GDK_KEY_quoteright;      break;
            case KEY_RIGHTCURLYBRACKET: nKeyCode = GDK_KEY_braceright;      break;
            case KEY_COLON:         nKeyCode = GDK_KEY_colon;           break;

            // Special cases
            case KEY_COPY:          nKeyCode = GDK_KEY_Copy;            break;
diff --git a/vcl/win/app/salinst.cxx b/vcl/win/app/salinst.cxx
index 5ba2f9c..3afb38c 100644
--- a/vcl/win/app/salinst.cxx
+++ b/vcl/win/app/salinst.cxx
@@ -235,6 +235,7 @@ void SalData::initKeyCodeMap()
    initKey( L';', KEY_SEMICOLON );
    initKey( L'\'', KEY_QUOTERIGHT );
    initKey( L'}', KEY_RIGHTCURLYBRACKET );
    initKey( L':', KEY_COLON );
}

// SalData
diff --git a/vcl/win/window/salframe.cxx b/vcl/win/window/salframe.cxx
index 638c02e..7b88c3a 100644
--- a/vcl/win/window/salframe.cxx
+++ b/vcl/win/window/salframe.cxx
@@ -2519,6 +2519,9 @@ OUString WinSalFrame::GetKeyName( sal_uInt16 nKeyCode )
            case KEY_EQUAL:
                cSVCode  = '=';
                break;
            case KEY_COLON:
                cSVCode = ':';
                break;
            case KEY_SEMICOLON:
                cSVCode = ';';
                break;