cui/source/customize/acccfg.cxx | 8 ++++++++ framework/source/accelerators/keymapping.cxx | 1 + include/vcl/keycodes.hxx | 1 + offapi/com/sun/star/awt/Key.idl | 3 +++ officecfg/registry/data/org/openoffice/Office/Accelerators.xcu | 6 ++++++ vcl/osx/salframe.cxx | 1 + vcl/osx/salmenu.cxx | 3 +++ vcl/qt5/QtFrame.cxx | 3 +++ vcl/qt5/QtWidget.cxx | 3 +++ vcl/unx/generic/app/saldisp.cxx | 7 +++++++ vcl/unx/gtk3/gtkframe.cxx | 2 ++ vcl/win/app/salinst.cxx | 1 + vcl/win/window/salframe.cxx | 3 +++ 13 files changed, 42 insertions(+)
New commits: commit ca74511985981444dbd72ade7244484c131e36a7 Author: Gökay Şatır <gokaysa...@collabora.com> AuthorDate: Wed Oct 4 15:01:38 2023 +0300 Commit: Caolán McNamara <caolan.mcnam...@collabora.com> CommitDate: Sat Oct 14 21:51:43 2023 +0200 Add NUMBERSIGN key handler. German keyboard layout has number sign key. Users can print number sign without using modification keys. So this key can be assigned a shortcut. Subscript is assigned to CTRL + NUMBERSIGN. Below PR is used as reference when adding the new key handler: https://gerrit.libreoffice.org/c/core/+/86713 Signed-off-by: Gökay Şatır <gokaysa...@collabora.com> Change-Id: I340dc47764e9200d2477f8db740a629f62f48004 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157554 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> (cherry picked from commit 1db8f6d484b884301a7d3673f4d05478e28cd853) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157959 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com> diff --git a/cui/source/customize/acccfg.cxx b/cui/source/customize/acccfg.cxx index f28eee88afa4..54b7eb73c81a 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_NUMBERSIGN, KEY_MOD1 | KEY_COLON, KEY_MOD1 | KEY_SEMICOLON, KEY_MOD1 | KEY_QUOTELEFT, @@ -271,6 +272,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_NUMBERSIGN, KEY_SHIFT | KEY_MOD1 | KEY_COLON, KEY_SHIFT | KEY_MOD1 | KEY_SEMICOLON, KEY_SHIFT | KEY_MOD1 | KEY_QUOTELEFT, @@ -352,6 +354,7 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1, KEY_MOD2 | KEY_X, KEY_MOD2 | KEY_Y, KEY_MOD2 | KEY_Z, + KEY_MOD2 | KEY_NUMBERSIGN, KEY_MOD2 | KEY_COLON, KEY_MOD2 | KEY_SEMICOLON, KEY_MOD2 | KEY_QUOTELEFT, @@ -431,6 +434,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_NUMBERSIGN, KEY_SHIFT | KEY_MOD2 | KEY_COLON, KEY_SHIFT | KEY_MOD2 | KEY_SEMICOLON, KEY_SHIFT | KEY_MOD2 | KEY_QUOTELEFT, @@ -511,6 +515,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_NUMBERSIGN, KEY_MOD1 | KEY_MOD2 | KEY_COLON, KEY_MOD1 | KEY_MOD2 | KEY_SEMICOLON, KEY_MOD1 | KEY_MOD2 | KEY_QUOTELEFT, @@ -590,6 +595,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_NUMBERSIGN, KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_COLON, KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_SEMICOLON, KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_QUOTELEFT, @@ -671,6 +677,7 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1, KEY_MOD3 | KEY_X, KEY_MOD3 | KEY_Y, KEY_MOD3 | KEY_Z, + KEY_MOD2 | KEY_NUMBERSIGN, KEY_MOD3 | KEY_COLON, KEY_MOD3 | KEY_SEMICOLON, KEY_MOD3 | KEY_QUOTELEFT, @@ -756,6 +763,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_NUMBERSIGN, KEY_SHIFT | KEY_MOD3 | KEY_COLON, KEY_SHIFT | KEY_MOD3 | KEY_SEMICOLON, KEY_SHIFT | KEY_MOD3 | KEY_QUOTELEFT, diff --git a/framework/source/accelerators/keymapping.cxx b/framework/source/accelerators/keymapping.cxx index 4b9588d8ed92..be0c4c27f291 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::NUMBERSIGN, "KEY_NUMBERSIGN" }, {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 a935b0ee0460..2efe29a55fbb 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_NUMBERSIGN = css::awt::Key::NUMBERSIGN; constexpr sal_uInt16 KEY_COLON = css::awt::Key::COLON; constexpr sal_uInt16 KEY_CAPSLOCK = css::awt::Key::CAPSLOCK; diff --git a/offapi/com/sun/star/awt/Key.idl b/offapi/com/sun/star/awt/Key.idl index 6b19dada574d..d9f45257ce8c 100644 --- a/offapi/com/sun/star/awt/Key.idl +++ b/offapi/com/sun/star/awt/Key.idl @@ -372,6 +372,9 @@ published constants Key /** @since LibreOffice 7.6 **/ const short COLON = 1320; + /* # sign. @since LibreOffice 24.2 */ + const short NUMBERSIGN = 191; + /** The following values don't correspond to physical keys on any keyboard but are used in the macOS implementation of VCL. They correspond to some of the action messages of the NSResponder diff --git a/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu b/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu index ed3f30f8f08f..5152341a0800 100644 --- a/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu +++ b/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu @@ -6112,6 +6112,12 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some emoji thing <value xml:lang="es">.uno:SearchDialog</value> </prop> </node> + <node oor:name="NUMBERSIGN_MOD1" oor:op="replace"> + <prop oor:name="Command"> + <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value> + <value xml:lang="en-US">.uno:SubScript</value> + </prop> + </node> <node oor:name="B_SHIFT_MOD1" oor:op="replace"> <prop oor:name="Command"> <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value> diff --git a/vcl/osx/salframe.cxx b/vcl/osx/salframe.cxx index 9ecb6cfd2423..98c165d9659f 100644 --- a/vcl/osx/salframe.cxx +++ b/vcl/osx/salframe.cxx @@ -1096,6 +1096,7 @@ OUString AquaSalFrame::GetKeyName( sal_uInt16 nKeyCode ) aKeyMap[ KEY_SEMICOLON ] = ";"; aKeyMap[ KEY_QUOTERIGHT ] = "'"; aKeyMap[ KEY_RIGHTCURLYBRACKET ] = "}"; + aKeyMap[ KEY_NUMBERSIGN ] = "#"; aKeyMap[ KEY_COLON ] = ":"; /* yet unmapped KEYCODES: diff --git a/vcl/osx/salmenu.cxx b/vcl/osx/salmenu.cxx index bc2c5bed7cce..b3d02587f46b 100644 --- a/vcl/osx/salmenu.cxx +++ b/vcl/osx/salmenu.cxx @@ -655,6 +655,9 @@ void AquaSalMenu::SetAccelerator( unsigned /*nPos*/, SalMenuItem* pSalMenuItem, case KEY_COLON: nCommandKey=':'; break; + case KEY_NUMBERSIGN: + nCommandKey='#'; + break; case KEY_SEMICOLON: nCommandKey=';'; break; diff --git a/vcl/qt5/QtFrame.cxx b/vcl/qt5/QtFrame.cxx index 49d542a64909..f3cc0facfe8a 100644 --- a/vcl/qt5/QtFrame.cxx +++ b/vcl/qt5/QtFrame.cxx @@ -992,6 +992,9 @@ OUString QtFrame::GetKeyName(sal_uInt16 nKeyCode) case KEY_BRACKETRIGHT: nRetCode = Qt::Key_BracketRight; break; + case KEY_NUMBERSIGN: + nRetCode = Qt::Key_NumberSign; + break; case KEY_COLON: nRetCode = Qt::Key_Colon; break; diff --git a/vcl/qt5/QtWidget.cxx b/vcl/qt5/QtWidget.cxx index 5e7d1d56c464..48c0d22c58fd 100644 --- a/vcl/qt5/QtWidget.cxx +++ b/vcl/qt5/QtWidget.cxx @@ -450,6 +450,9 @@ static sal_uInt16 GetKeyCode(int keyval, Qt::KeyboardModifiers modifiers) case Qt::Key_BracketRight: nCode = KEY_BRACKETRIGHT; break; + case Qt::Key_NumberSign: + nCode = KEY_NUMBERSIGN; + break; case Qt::Key_Colon: nCode = KEY_COLON; break; diff --git a/vcl/unx/generic/app/saldisp.cxx b/vcl/unx/generic/app/saldisp.cxx index 774b34bfbd0a..37a04f20d6ef 100644 --- a/vcl/unx/generic/app/saldisp.cxx +++ b/vcl/unx/generic/app/saldisp.cxx @@ -905,6 +905,9 @@ OUString SalDisplay::GetKeyName( sal_uInt16 nKeyCode ) const case KEY_RIGHTCURLYBRACKET: aCustomKeyName = "}"; break; + case KEY_NUMBERSIGN: + aCustomKeyName = "#"; + break; case KEY_COLON: aCustomKeyName = ":"; break; @@ -1258,6 +1261,10 @@ sal_uInt16 SalDisplay::GetKeyCode( KeySym keysym, char*pcPrintable ) const nKey = KEY_RIGHTCURLYBRACKET; *pcPrintable = '\''; break; + case XK_numbersign: + nKey = KEY_NUMBERSIGN; + *pcPrintable = '#'; + break; case XK_colon: nKey = KEY_COLON; *pcPrintable = ':'; diff --git a/vcl/unx/gtk3/gtkframe.cxx b/vcl/unx/gtk3/gtkframe.cxx index ca83d17bb180..b1bf8474b1b2 100644 --- a/vcl/unx/gtk3/gtkframe.cxx +++ b/vcl/unx/gtk3/gtkframe.cxx @@ -222,6 +222,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_numbersign: nCode = KEY_NUMBERSIGN; break; case GDK_KEY_colon: nCode = KEY_COLON; break; // some special cases, also see saldisp.cxx // - - - - - - - - - - - - - Apollo - - - - - - - - - - - - - 0x1000 @@ -2880,6 +2881,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_NUMBERSIGN: nKeyCode = GDK_KEY_numbersign; break; case KEY_COLON: nKeyCode = GDK_KEY_colon; break; // Special cases diff --git a/vcl/win/app/salinst.cxx b/vcl/win/app/salinst.cxx index a2aabbab2870..eb4adb853e10 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_NUMBERSIGN); initKey( L':', KEY_COLON ); } diff --git a/vcl/win/window/salframe.cxx b/vcl/win/window/salframe.cxx index 7c26ea1e903f..3228caf2f345 100644 --- a/vcl/win/window/salframe.cxx +++ b/vcl/win/window/salframe.cxx @@ -2512,6 +2512,9 @@ OUString WinSalFrame::GetKeyName( sal_uInt16 nKeyCode ) case KEY_EQUAL: cSVCode = '='; break; + case KEY_NUMBERSIGN: + cSVCode = '#'; + break; case KEY_COLON: cSVCode = ':'; break;