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 1db8f6d484b884301a7d3673f4d05478e28cd853 Author: Gökay Şatır <gokaysa...@collabora.com> AuthorDate: Wed Oct 4 15:01:38 2023 +0300 Commit: Gökay ŞATIR <gokaysa...@collabora.com> CommitDate: Thu Oct 5 10:07:29 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> diff --git a/cui/source/customize/acccfg.cxx b/cui/source/customize/acccfg.cxx index 760dc7a11d66..77eb3279301d 100644 --- a/cui/source/customize/acccfg.cxx +++ b/cui/source/customize/acccfg.cxx @@ -184,6 +184,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, @@ -269,6 +270,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, @@ -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_NUMBERSIGN, KEY_MOD2 | KEY_COLON, KEY_MOD2 | KEY_SEMICOLON, KEY_MOD2 | KEY_QUOTELEFT, @@ -429,6 +432,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, @@ -509,6 +513,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, @@ -588,6 +593,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, @@ -669,6 +675,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, @@ -754,6 +761,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 e4c21e196946..1fda7c139061 100644 --- a/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu +++ b/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu @@ -6276,6 +6276,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 82283d25d892..02996127ffe5 100644 --- a/vcl/osx/salframe.cxx +++ b/vcl/osx/salframe.cxx @@ -1093,6 +1093,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 74dfc98445af..7de22e2ddae9 100644 --- a/vcl/qt5/QtFrame.cxx +++ b/vcl/qt5/QtFrame.cxx @@ -968,6 +968,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 83ada7866f2b..1c70a2490a15 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 5f0114b1f448..3d7f976d1743 100644 --- a/vcl/unx/generic/app/saldisp.cxx +++ b/vcl/unx/generic/app/saldisp.cxx @@ -967,6 +967,9 @@ OUString SalDisplay::GetKeyName( sal_uInt16 nKeyCode ) const case KEY_RIGHTCURLYBRACKET: aCustomKeyName = "}"; break; + case KEY_NUMBERSIGN: + aCustomKeyName = "#"; + break; case KEY_COLON: aCustomKeyName = ":"; break; @@ -1320,6 +1323,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 344fc3254144..7171c3101376 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_numbersign: nCode = KEY_NUMBERSIGN; break; case GDK_KEY_colon: nCode = KEY_COLON; break; // some special cases, also see saldisp.cxx // - - - - - - - - - - - - - Apollo - - - - - - - - - - - - - 0x1000 @@ -2692,6 +2693,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 cbceaff7ca39..789186fee8b5 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 6ab7bc61d673..92f31857f083 100644 --- a/vcl/win/window/salframe.cxx +++ b/vcl/win/window/salframe.cxx @@ -2526,6 +2526,9 @@ OUString WinSalFrame::GetKeyName( sal_uInt16 nKeyCode ) case KEY_EQUAL: cSVCode = '='; break; + case KEY_NUMBERSIGN: + cSVCode = '#'; + break; case KEY_COLON: cSVCode = ':'; break;