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;

Reply via email to