summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2022-09-06 10:30:42 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2022-09-07 08:08:17 +0200
commitb9ea72a2554beaa5438536dc8f6d0e340a5fb719 (patch)
tree6d32a19079bf09b204501532c069edbeb7002429
parent256f958c8e83d64814274a35d6b762078107ef9d (diff)
tdf#150682 - bad shortcut in french langage
the = key is } on a french keyboard, so remap the ctrl-alt-= shortcuts to ctrl-alt-} which means the user gets to keep pressing keys in roughly the same physical location for this action, regardless of keyboard Change-Id: I03e251dacc1c19e543182a44ae23fde2a57cfa45 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139475 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--cui/source/customize/acccfg.cxx8
-rw-r--r--framework/source/accelerators/keymapping.cxx1
-rw-r--r--include/vcl/keycodes.hxx1
-rw-r--r--offapi/com/sun/star/awt/Key.idl5
-rw-r--r--officecfg/registry/data/org/openoffice/Office/Accelerators.xcu36
-rw-r--r--vcl/osx/salframe.cxx1
-rw-r--r--vcl/osx/salframeview.mm2
-rw-r--r--vcl/unx/generic/app/saldisp.cxx7
-rw-r--r--vcl/unx/gtk3/gtkframe.cxx2
-rw-r--r--vcl/win/app/salinst.cxx1
-rw-r--r--vcl/win/window/salframe.cxx3
11 files changed, 66 insertions, 1 deletions
diff --git a/cui/source/customize/acccfg.cxx b/cui/source/customize/acccfg.cxx
index 476b10d2e8e4..b3aaf77bb70b 100644
--- a/cui/source/customize/acccfg.cxx
+++ b/cui/source/customize/acccfg.cxx
@@ -189,6 +189,7 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1,
KEY_MOD1 | KEY_QUOTERIGHT,
KEY_MOD1 | KEY_BRACKETLEFT,
KEY_MOD1 | KEY_BRACKETRIGHT,
+ KEY_MOD1 | KEY_RIGHTCURLYBRACKET,
KEY_MOD1 | KEY_POINT,
KEY_MOD1 | KEY_COMMA,
KEY_MOD1 | KEY_TILDE,
@@ -272,6 +273,7 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1,
KEY_SHIFT | KEY_MOD1 | KEY_QUOTERIGHT,
KEY_SHIFT | KEY_MOD1 | KEY_BRACKETLEFT,
KEY_SHIFT | KEY_MOD1 | KEY_BRACKETRIGHT,
+ KEY_SHIFT | KEY_MOD1 | KEY_RIGHTCURLYBRACKET,
KEY_SHIFT | KEY_MOD1 | KEY_POINT,
KEY_SHIFT | KEY_MOD1 | KEY_COMMA,
KEY_SHIFT | KEY_MOD1 | KEY_TILDE,
@@ -351,6 +353,7 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1,
KEY_MOD2 | KEY_QUOTERIGHT,
KEY_MOD2 | KEY_BRACKETLEFT,
KEY_MOD2 | KEY_BRACKETRIGHT,
+ KEY_MOD2 | KEY_RIGHTCURLYBRACKET,
KEY_MOD2 | KEY_POINT,
KEY_MOD2 | KEY_COMMA,
KEY_MOD2 | KEY_TILDE,
@@ -428,6 +431,7 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1,
KEY_SHIFT | KEY_MOD2 | KEY_QUOTERIGHT,
KEY_SHIFT | KEY_MOD2 | KEY_BRACKETLEFT,
KEY_SHIFT | KEY_MOD2 | KEY_BRACKETRIGHT,
+ KEY_SHIFT | KEY_MOD2 | KEY_RIGHTCURLYBRACKET,
KEY_SHIFT | KEY_MOD2 | KEY_POINT,
KEY_SHIFT | KEY_MOD2 | KEY_COMMA,
KEY_SHIFT | KEY_MOD2 | KEY_TILDE,
@@ -506,6 +510,7 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1,
KEY_MOD1 | KEY_MOD2 | KEY_QUOTERIGHT,
KEY_MOD1 | KEY_MOD2 | KEY_BRACKETLEFT,
KEY_MOD1 | KEY_MOD2 | KEY_BRACKETRIGHT,
+ KEY_MOD1 | KEY_MOD2 | KEY_RIGHTCURLYBRACKET,
KEY_MOD1 | KEY_MOD2 | KEY_POINT,
KEY_MOD1 | KEY_MOD2 | KEY_COMMA,
KEY_MOD1 | KEY_MOD2 | KEY_TILDE,
@@ -583,6 +588,7 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1,
KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_QUOTERIGHT,
KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_BRACKETLEFT,
KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_BRACKETRIGHT,
+ KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_RIGHTCURLYBRACKET,
KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_POINT,
KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_COMMA,
KEY_SHIFT | KEY_MOD1 | KEY_MOD2 | KEY_TILDE,
@@ -662,6 +668,7 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1,
KEY_MOD3 | KEY_QUOTERIGHT,
KEY_MOD3 | KEY_BRACKETLEFT,
KEY_MOD3 | KEY_BRACKETRIGHT,
+ KEY_MOD3 | KEY_RIGHTCURLYBRACKET,
KEY_MOD3 | KEY_POINT,
KEY_MOD3 | KEY_COMMA,
KEY_MOD3 | KEY_TILDE,
@@ -745,6 +752,7 @@ const sal_uInt16 KEYCODE_ARRAY[] = { KEY_F1,
KEY_SHIFT | KEY_MOD3 | KEY_QUOTERIGHT,
KEY_SHIFT | KEY_MOD3 | KEY_BRACKETLEFT,
KEY_SHIFT | KEY_MOD3 | KEY_BRACKETRIGHT,
+ KEY_SHIFT | KEY_MOD3 | KEY_RIGHTCURLYBRACKET,
KEY_SHIFT | KEY_MOD3 | KEY_POINT,
KEY_SHIFT | KEY_MOD3 | KEY_COMMA,
KEY_SHIFT | KEY_MOD3 | KEY_TILDE,
diff --git a/framework/source/accelerators/keymapping.cxx b/framework/source/accelerators/keymapping.cxx
index 1a5648c8d43a..d5238ab74a5a 100644
--- a/framework/source/accelerators/keymapping.cxx
+++ b/framework/source/accelerators/keymapping.cxx
@@ -135,6 +135,7 @@ KeyMapping::KeyIdentifierInfo const KeyMapping::KeyIdentifierMap[] =
{css::awt::Key::BRACKETRIGHT , "KEY_BRACKETRIGHT" },
{css::awt::Key::SEMICOLON , "KEY_SEMICOLON" },
{css::awt::Key::QUOTERIGHT , "KEY_QUOTERIGHT" },
+ {css::awt::Key::RIGHTCURLYBRACKET, "KEY_RIGHTCURLYBRACKET" },
{0 , "" } // mark the end of this array!
};
diff --git a/include/vcl/keycodes.hxx b/include/vcl/keycodes.hxx
index e68f176ffe32..fa54beefdb4f 100644
--- a/include/vcl/keycodes.hxx
+++ b/include/vcl/keycodes.hxx
@@ -154,6 +154,7 @@ constexpr sal_uInt16 KEY_BRACKETLEFT = css::awt::Key::BRACKETLEFT;
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_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 7ad04ae2206f..5ad5c90ef6c4 100644
--- a/offapi/com/sun/star/awt/Key.idl
+++ b/offapi/com/sun/star/awt/Key.idl
@@ -26,6 +26,8 @@
/** These values are used to specify distinct physical keys, plus
some special values used by the macOS implementation.
+
+ Noting that these numbers are simply allocated here, and not taken from any specification.
*/
published constants Key
{
@@ -366,6 +368,9 @@ published constants Key
/** @since LibreOffice 4.3 **/
const short QUOTERIGHT = 1318;
+ /** @since LibreOffice 7.5 **/
+ const short RIGHTCURLYBRACKET = 1319;
+
/** 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 e93012222e17..706457532199 100644
--- a/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/Accelerators.xcu
@@ -805,6 +805,15 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some emoji thing
<prop oor:name="Command">
<value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
<value xml:lang="en-US">.uno:InsertObjectStarMath</value>
+ <!-- tdf#150862 Replace Ctrl-Alt-EQUAL with Ctrl-Ctrl-} for French keyboard layout -->
+ <value xml:lang="fr"></value>
+ </prop>
+ </node>
+ <!-- tdf#150862 Replace Ctrl-Alt-EQUAL with Ctrl-Ctrl-} for French keyboard layout -->
+ <node oor:name="RIGHTCURLYBRACKET_MOD1_MOD2" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="fr">.uno:InsertObjectStarMath</value>
</prop>
</node>
<node oor:name="END" oor:op="replace">
@@ -1734,6 +1743,15 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some emoji thing
<prop oor:name="Command">
<value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
<value xml:lang="en-US">.uno:InsertMath</value>
+ <!-- tdf#150862 Replace Ctrl-Alt-EQUAL with Ctrl-Ctrl-} for French keyboard layout -->
+ <value xml:lang="fr"></value>
+ </prop>
+ </node>
+ <!-- tdf#150862 Replace Ctrl-Alt-EQUAL with Ctrl-Ctrl-} for French keyboard layout -->
+ <node oor:name="RIGHTCURLYBRACKET_MOD1_MOD2" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="fr">.uno:InsertMath</value>
</prop>
</node>
<node oor:name="F11" oor:op="replace">
@@ -2954,6 +2972,15 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some emoji thing
<prop oor:name="Command">
<value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
<value xml:lang="en-US">.uno:InsertMath</value>
+ <!-- tdf#150862 Replace Ctrl-Alt-EQUAL with Ctrl-Ctrl-} for French keyboard layout -->
+ <value xml:lang="fr"></value>
+ </prop>
+ </node>
+ <!-- tdf#150862 Replace Ctrl-Alt-EQUAL with Ctrl-Ctrl-} for French keyboard layout -->
+ <node oor:name="RIGHTCURLYBRACKET_MOD1_MOD2" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="fr">.uno:InsertMath</value>
</prop>
</node>
<node oor:name="1_MOD1" oor:op="replace">
@@ -6218,6 +6245,15 @@ Ctrl+Shift+e aka E_SHIFT_MOD1 under GTK/IBUS is for some emoji thing
<prop oor:name="Command">
<value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
<value xml:lang="en-US">.uno:InsertObjectStarMath</value>
+ <!-- tdf#150862 Replace Ctrl-Alt-EQUAL with Ctrl-Ctrl-} for French keyboard layout -->
+ <value xml:lang="fr"></value>
+ </prop>
+ </node>
+ <!-- tdf#150862 Replace Ctrl-Alt-EQUAL with Ctrl-Ctrl-} for French keyboard layout -->
+ <node oor:name="RIGHTCURLYBRACKET_MOD1_MOD2" oor:op="replace">
+ <prop oor:name="Command">
+ <value xml:lang="x-no-translate">I10N SHORTCUTS - NO TRANSLATE</value>
+ <value xml:lang="fr">.uno:InsertObjectStarMath</value>
</prop>
</node>
<node oor:name="F10_MOD1" oor:op="replace">
diff --git a/vcl/osx/salframe.cxx b/vcl/osx/salframe.cxx
index a5356fcf19be..3b38457a7508 100644
--- a/vcl/osx/salframe.cxx
+++ b/vcl/osx/salframe.cxx
@@ -1068,6 +1068,7 @@ OUString AquaSalFrame::GetKeyName( sal_uInt16 nKeyCode )
aKeyMap[ KEY_BRACKETRIGHT ] = "]";
aKeyMap[ KEY_SEMICOLON ] = ";";
aKeyMap[ KEY_QUOTERIGHT ] = "'";
+ aKeyMap[ KEY_RIGHTCURLYBRACKET ] = "}";
/* yet unmapped KEYCODES:
aKeyMap[ KEY_INSERT ] = OUString( sal_Unicode( ) );
diff --git a/vcl/osx/salframeview.mm b/vcl/osx/salframeview.mm
index ee245af64820..cb76ab246760 100644
--- a/vcl/osx/salframeview.mm
+++ b/vcl/osx/salframeview.mm
@@ -122,7 +122,7 @@ static sal_uInt16 ImplMapKeyCode(sal_uInt16 nKeyCode)
KEY_A, KEY_S, KEY_D, KEY_F, KEY_H, KEY_G, KEY_Z, KEY_X,
KEY_C, KEY_V, 0, KEY_B, KEY_Q, KEY_W, KEY_E, KEY_R,
KEY_Y, KEY_T, KEY_1, KEY_2, KEY_3, KEY_4, KEY_6, KEY_5,
- KEY_EQUAL, KEY_9, KEY_7, KEY_SUBTRACT, KEY_8, KEY_0, KEY_BRACKETRIGHT, KEY_0,
+ KEY_EQUAL, KEY_9, KEY_7, KEY_SUBTRACT, KEY_8, KEY_0, KEY_BRACKETRIGHT, KEY_RIGHTCURLYBRACKET,
KEY_U, KEY_BRACKETLEFT, KEY_I, KEY_P, KEY_RETURN, KEY_L, KEY_J, KEY_QUOTERIGHT,
KEY_K, KEY_SEMICOLON, 0, KEY_COMMA, KEY_DIVIDE, KEY_N, KEY_M, KEY_POINT,
KEY_TAB, KEY_SPACE, KEY_QUOTELEFT, KEY_DELETE, 0, KEY_ESCAPE, 0, 0,
diff --git a/vcl/unx/generic/app/saldisp.cxx b/vcl/unx/generic/app/saldisp.cxx
index 33259eb2da49..6a70a38d35db 100644
--- a/vcl/unx/generic/app/saldisp.cxx
+++ b/vcl/unx/generic/app/saldisp.cxx
@@ -964,6 +964,9 @@ OUString SalDisplay::GetKeyName( sal_uInt16 nKeyCode ) const
case KEY_QUOTERIGHT:
aCustomKeyName = "'";
break;
+ case KEY_RIGHTCURLYBRACKET:
+ aCustomKeyName = "}";
+ break;
default:
nKeySym = 0;
break;
@@ -1310,6 +1313,10 @@ sal_uInt16 SalDisplay::GetKeyCode( KeySym keysym, char*pcPrintable ) const
nKey = KEY_QUOTERIGHT;
*pcPrintable = '\'';
break;
+ case XK_braceright:
+ nKey = KEY_RIGHTCURLYBRACKET;
+ *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 7108f9206380..fef8aba557fd 100644
--- a/vcl/unx/gtk3/gtkframe.cxx
+++ b/vcl/unx/gtk3/gtkframe.cxx
@@ -214,6 +214,7 @@ sal_uInt16 GtkSalFrame::GetKeyCode(guint keyval)
case GDK_KEY_bracketright: nCode = KEY_BRACKETRIGHT; break;
case GDK_KEY_semicolon: nCode = KEY_SEMICOLON; break;
case GDK_KEY_quoteright: nCode = KEY_QUOTERIGHT; break;
+ case GDK_KEY_braceright: nCode = KEY_RIGHTCURLYBRACKET; break;
// some special cases, also see saldisp.cxx
// - - - - - - - - - - - - - Apollo - - - - - - - - - - - - - 0x1000
// These can be found in ap_keysym.h
@@ -2620,6 +2621,7 @@ void GtkSalFrame::KeyCodeToGdkKey(const vcl::KeyCode& rKeyCode,
case KEY_BRACKETRIGHT: nKeyCode = GDK_KEY_bracketright; break;
case KEY_SEMICOLON: nKeyCode = GDK_KEY_semicolon; break;
case KEY_QUOTERIGHT: nKeyCode = GDK_KEY_quoteright; break;
+ case KEY_RIGHTCURLYBRACKET: nKeyCode = GDK_KEY_braceright; 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 c4d9e363ff19..9de6dc329cef 100644
--- a/vcl/win/app/salinst.cxx
+++ b/vcl/win/app/salinst.cxx
@@ -237,6 +237,7 @@ void SalData::initKeyCodeMap()
initKey( L']', KEY_BRACKETRIGHT );
initKey( L';', KEY_SEMICOLON );
initKey( L'\'', KEY_QUOTERIGHT );
+ initKey( L'}', KEY_RIGHTCURLYBRACKET );
}
// SalData
diff --git a/vcl/win/window/salframe.cxx b/vcl/win/window/salframe.cxx
index 4556c850edec..2d8bac506203 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_QUOTELEFT:
cSVCode = '`';
break;
+ case KEY_RIGHTCURLYBRACKET:
+ cSVCode = '}';
+ break;
}
}