[Libreoffice-qa] minutes of ESC call ...

Jan-Marek Glogowski glogow at fbihome.de
Thu Sep 13 17:06:18 UTC 2018


Am 13.09.2018 um 18:09 schrieb V Stuart Foote:
> 
>>   * CTRL+ALT+E isn't opening the extension dialog but inserts a "é"
>>     + https://bugs.documentfoundation.org/show_bug.cgi?id=119676
>>    + bug?, see also 118269
>>     + why do we have a hot-key for that dialog ? (Michael)
>>        + not only this – other shortcuts with ctrl-alt (Heiko)
>>           + can we bisect it, find & prioritize it ? (Michael)
> 
> Set up my soap box in the [META] Ctrl+Alt (aka AltGR) keyboard shortcut issues
> https://bugs.documentfoundation.org/show_bug.cgi?id=107244
> 
> Windows is especially afflicted with this because of the os remapping of <Ctrl>+<Alt> to <AltGr> in multiple keyboard layouts.  But it highlights issue for all os/DE that by locale or keyboard choice clobber our default shortcut assignments.
> 
> Removing the few <Ctrl>+<Alt> shortcuts we've assigned globally or to modules seems reasonable, but it just kicks things down the road for finding a better way to accomodate keyboard layouts other the en-US

Couldn't find the bugs during ESC:
- https://bugs.documentfoundation.org/show_bug.cgi?id=95635
- https://bugs.documentfoundation.org/show_bug.cgi?id=95761

The 2nd one is in the [META] list.

The first is some really nice clash for German keyboards, as you need AltGr to type "][".

I've added my original patch, which AFAI remember didn't work.

>From c221fc3a2c2c8f8899ce260909a11fd4a37d4cde Mon Sep 17 00:00:00 2001
From: Jan-Marek Glogowski <glogow at fbihome.de>
Date: Mon, 9 Nov 2015 17:24:16 +0100
Subject: [PATCH] tdf#95635 Invert left Ctrl eval in case of AltGr

Windows handles pressing AltGr as VK_RMENU && VK_LCONTROL.

In case of VK_RMENU the meaning of VK_LCONTROL is inverted, which
means left Ctrl is actually pressed, if VK_LCONTROL is not set!

Change-Id: I483dd582b454760ba0da2fdfb269b2369bf8683c
---
 vcl/win/source/window/salframe.cxx | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/vcl/win/source/window/salframe.cxx b/vcl/win/source/window/salframe.cxx
index 0203b05232b3..905454e45678 100644
--- a/vcl/win/source/window/salframe.cxx
+++ b/vcl/win/source/window/salframe.cxx
@@ -3508,14 +3508,22 @@ static long ImplHandleKeyMsg( HWND hWnd, UINT nMsg,
                 tmpCode |= MODKEY_LSHIFT;
             if( GetKeyState( VK_RSHIFT )  & 0x8000 )
                 tmpCode |= MODKEY_RSHIFT;
-            if( GetKeyState( VK_LCONTROL ) & 0x8000 )
-                tmpCode |= MODKEY_LMOD1;
             if( GetKeyState( VK_RCONTROL ) & 0x8000 )
                 tmpCode |= MODKEY_RMOD1;
             if( GetKeyState( VK_LMENU )  & 0x8000 )
                 tmpCode |= MODKEY_LMOD2;
-            if( GetKeyState( VK_RMENU )  & 0x8000 )
+
+            // Pressing AltGr is handled as VK_RMENU && VK_LCONTROL!
+            // If VK_LCONTROL is not set the left Ctrl is actually pressed and
+            // so for AltGr the evaluation of VK_LCONTROL has to be inverted
+            if( GetKeyState( VK_RMENU ) & 0x8000 )
+            {
                 tmpCode |= MODKEY_RMOD2;
+                if( ! ( GetKeyState( VK_LCONTROL ) & 0x8000 ) )
+                    tmpCode |= MODKEY_LMOD1;
+            }
+            else if( GetKeyState( VK_LCONTROL ) & 0x8000 )
+                tmpCode |= MODKEY_LMOD1;

             if( tmpCode < nLastModKeyCode )
             {
-- 
2.17.0



More information about the LibreOffice mailing list