From 8858a2db9d0fb4cd32b6503e7242ad058bb8af3b Mon Sep 17 00:00:00 2001 From: Michael Curran Date: Thu, 10 Dec 2020 14:28:53 +1000 Subject: [PATCH 1/4] keyboardHandler.injectRawKeyboardInput: simply by just using keybd_event directly and not ignoring injection. --- source/keyboardHandler.py | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/source/keyboardHandler.py b/source/keyboardHandler.py index 2b256263ca6..5d685d32fab 100644 --- a/source/keyboardHandler.py +++ b/source/keyboardHandler.py @@ -651,16 +651,9 @@ def injectRawKeyboardInput(isPress, code, isExtended): # Change what we pass to MapVirtualKeyEx, but don't change what NVDA gets. mapScan |= 0xE000 vkCode = winUser.user32.MapVirtualKeyExW(mapScan, winUser.MAPVK_VSC_TO_VK_EX, getInputHkl()) - if isPress: - shouldSend = internal_keyDownEvent(vkCode, code, isExtended, False) - else: - shouldSend = internal_keyUpEvent(vkCode, code, isExtended, False) - if shouldSend: - flags = 0 - if not isPress: - flags |= 2 - if isExtended: - flags |= 1 - with ignoreInjection(): - winUser.keybd_event(vkCode, code, flags, None) - wx.Yield() + flags = 0 + if not isPress: + flags |= 2 + if isExtended: + flags |= 1 + winUser.keybd_event(vkCode, code, flags, None) From bb9837282f4eeb5601398f8a38251c6bc51c206b Mon Sep 17 00:00:00 2001 From: Michael Curran Date: Thu, 10 Dec 2020 14:29:32 +1000 Subject: [PATCH 2/4] Papenmeier braille driver: more gesture bindings and fix detection of keyboard input. --- source/brailleDisplayDrivers/papenmeier.py | 57 ++++++++++++++++++++-- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/source/brailleDisplayDrivers/papenmeier.py b/source/brailleDisplayDrivers/papenmeier.py index 2257b444e62..06784de14cf 100644 --- a/source/brailleDisplayDrivers/papenmeier.py +++ b/source/brailleDisplayDrivers/papenmeier.py @@ -420,13 +420,64 @@ def _handleKeyPresses(self): "reportStatusLine": ("br(papenmeier):l2,dn",), "kb:alt": ("br(papenmeier):lt+d3",), "kb:control": ("br(papenmeier):lt+d2",), - "kb:escape": ("br(papenmeier):space+d7",), - "kb:control+escape": ("br(papenmeier):lt+d1+d2+d3+d4+d5+d6",), + "kb:escape": ("br(papenmeier):space+d7",), "kb:tab": ("br(papenmeier):space+d3+d7",), "kb:upArrow": ("br(papenmeier):space+d2",), "kb:downArrow": ("br(papenmeier):space+d5",), "kb:leftArrow": ("br(papenmeier):space+d1",), "kb:rightArrow": ("br(papenmeier):space+d4",), + + "kb:control+escape": ("br(papenmeier):space+d1+d2+d3+d4+d5+d6",), + "kb:control+alt+delete": ("br(papenmeier):space+d1+d2+d3+d4+d5+d6+d7+d8",), + "kb:enter": ("br(papenmeier):space+d8","br(papenmeier):d8",), + "kb:pageup": ("br(papenmeier):space+d3",), + "kb:pagedown": ("br(papenmeier):space+d6",), + "kb:backspace": ("br(papenmeier):space+d6+d8","br(papenmeier):d7",), + "kb:home": ("br(papenmeier):space+d1+d2",), + "kb:end": ("br(papenmeier):space+d4+d5",), + "kb:delete": ("br(papenmeier):space+d5+d6",), + + "kb:f1": ("br(papenmeier):rt+d1",), + "kb:f2": ("br(papenmeier):rt+d1+d2",), + "kb:f3": ("br(papenmeier):rt+d1+d4",), + "kb:f4": ("br(papenmeier):rt+d1+d4+d5",), + "kb:f5": ("br(papenmeier):rt+d1+d5",), + "kb:f6": ("br(papenmeier):rt+d1+d2+d4",), + "kb:f7": ("br(papenmeier):rt+d1+d2+d4+d5",), + "kb:f8": ("br(papenmeier):rt+d1+d2+d5",), + "kb:f9": ("br(papenmeier):rt+d2+d4",), + "kb:f10": ("br(papenmeier):rt+d2+d4+d5",), + "kb:f11": ("br(papenmeier):rt+d1+d3",), + "kb:f12": ("br(papenmeier):rt+d1+d2+d3",), + + "kb:control+a": ("br(papenmeier):d1+d7+d8",), + "kb:control+p": ("br(papenmeier):d1+d2+d3+d4+d7+d8",), + "kb:control+s": ("br(papenmeier):d2+d3+d4+d7+d8",), + + "kb:control+b": ("br(papenmeier):d1+d2+d7+d8",), + "kb:control+c": ("br(papenmeier):d1+d4+d7+d8",), + "kb:control+d": ("br(papenmeier):d1+d4+d5+d7+d8",), + "kb:control+e": ("br(papenmeier):d1+d5+d7+d8",), + "kb:control+f": ("br(papenmeier):d1+d2+d4+d7+d8",), + "kb:control+g": ("br(papenmeier):d1+d2+d4+d5+d7+d8",), + "kb:control+h": ("br(papenmeier):d1+d2+d5+d7+d8",), + "kb:control+i": ("br(papenmeier):d2+d4+d7+d8",), + "kb:control+j": ("br(papenmeier):d2+d4+d5+d7+d8",), + "kb:control+k": ("br(papenmeier):d1+d3+d7+d8",), + "kb:control+l": ("br(papenmeier):d1+d2+d3+d7+d8",), + "kb:control+m": ("br(papenmeier):d1+d3+d4+d7+d8",), + "kb:control+n": ("br(papenmeier):d1+d3+d4+d5+d7+d8",), + "kb:control+o": ("br(papenmeier):d1+d3+d5+d7+d8",), + "kb:control+q": ("br(papenmeier):d1+d2+d3+d4+d5+d7+d8",), + "kb:control+r": ("br(papenmeier):d1+d2+d3+d5+d7+d8",), + "kb:control+t": ("br(papenmeier):d2+d3+d4+d5+d7+d8",), + "kb:control+u": ("br(papenmeier):d1+d3+d6+d7+d8",), + "kb:control+v": ("br(papenmeier):d1+d2+d3+d6+d7+d8",), + "kb:control+w": ("br(papenmeier):d2+d4+d5+d6+d7+d8",), + "kb:control+x": ("br(papenmeier):d1+d3+d4+d6+d7+d8",), + "kb:control+y": ("br(papenmeier):d1+d3+d4+d5+d6+d7+d8",), + "kb:control+z": ("br(papenmeier):d1+d3+d5+d6+d7+d8",), + } }) @@ -535,7 +586,7 @@ def __init__(self, keys: Optional[Union[bytes, int]], driver: BrailleDisplayDriv self.id=brl_join_keys(brl_decode_key_names_repeat(driver)) return - if driver._baud != 1 and keys[0] == 'L': + if driver._baud != 1 and keys[0] == ord(b'L'): assert isinstance(keys, bytes) if (keys[3] - 48) >> 3: scancode = keys[5] - 48 << 4 | keys[6] - 48 From 8d6cfec832ae4be0f66604a84b5b7780fa68bf9c Mon Sep 17 00:00:00 2001 From: Michael Curran Date: Thu, 10 Dec 2020 15:36:56 +1000 Subject: [PATCH 3/4] Fix linting issues --- source/brailleDisplayDrivers/papenmeier.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/source/brailleDisplayDrivers/papenmeier.py b/source/brailleDisplayDrivers/papenmeier.py index 06784de14cf..21082b2067e 100644 --- a/source/brailleDisplayDrivers/papenmeier.py +++ b/source/brailleDisplayDrivers/papenmeier.py @@ -420,7 +420,7 @@ def _handleKeyPresses(self): "reportStatusLine": ("br(papenmeier):l2,dn",), "kb:alt": ("br(papenmeier):lt+d3",), "kb:control": ("br(papenmeier):lt+d2",), - "kb:escape": ("br(papenmeier):space+d7",), + "kb:escape": ("br(papenmeier):space+d7",), "kb:tab": ("br(papenmeier):space+d3+d7",), "kb:upArrow": ("br(papenmeier):space+d2",), "kb:downArrow": ("br(papenmeier):space+d5",), @@ -429,10 +429,10 @@ def _handleKeyPresses(self): "kb:control+escape": ("br(papenmeier):space+d1+d2+d3+d4+d5+d6",), "kb:control+alt+delete": ("br(papenmeier):space+d1+d2+d3+d4+d5+d6+d7+d8",), - "kb:enter": ("br(papenmeier):space+d8","br(papenmeier):d8",), + "kb:enter": ("br(papenmeier):space+d8", "br(papenmeier):d8",), "kb:pageup": ("br(papenmeier):space+d3",), "kb:pagedown": ("br(papenmeier):space+d6",), - "kb:backspace": ("br(papenmeier):space+d6+d8","br(papenmeier):d7",), + "kb:backspace": ("br(papenmeier):space+d6+d8", "br(papenmeier):d7",), "kb:home": ("br(papenmeier):space+d1+d2",), "kb:end": ("br(papenmeier):space+d4+d5",), "kb:delete": ("br(papenmeier):space+d5+d6",), @@ -448,12 +448,10 @@ def _handleKeyPresses(self): "kb:f9": ("br(papenmeier):rt+d2+d4",), "kb:f10": ("br(papenmeier):rt+d2+d4+d5",), "kb:f11": ("br(papenmeier):rt+d1+d3",), - "kb:f12": ("br(papenmeier):rt+d1+d2+d3",), - + "kb:f12": ("br(papenmeier):rt+d1+d2+d3",), "kb:control+a": ("br(papenmeier):d1+d7+d8",), "kb:control+p": ("br(papenmeier):d1+d2+d3+d4+d7+d8",), "kb:control+s": ("br(papenmeier):d2+d3+d4+d7+d8",), - "kb:control+b": ("br(papenmeier):d1+d2+d7+d8",), "kb:control+c": ("br(papenmeier):d1+d4+d7+d8",), "kb:control+d": ("br(papenmeier):d1+d4+d5+d7+d8",), @@ -467,9 +465,9 @@ def _handleKeyPresses(self): "kb:control+l": ("br(papenmeier):d1+d2+d3+d7+d8",), "kb:control+m": ("br(papenmeier):d1+d3+d4+d7+d8",), "kb:control+n": ("br(papenmeier):d1+d3+d4+d5+d7+d8",), - "kb:control+o": ("br(papenmeier):d1+d3+d5+d7+d8",), + "kb:control+o": ("br(papenmeier):d1+d3+d5+d7+d8",), "kb:control+q": ("br(papenmeier):d1+d2+d3+d4+d5+d7+d8",), - "kb:control+r": ("br(papenmeier):d1+d2+d3+d5+d7+d8",), + "kb:control+r": ("br(papenmeier):d1+d2+d3+d5+d7+d8",), "kb:control+t": ("br(papenmeier):d2+d3+d4+d5+d7+d8",), "kb:control+u": ("br(papenmeier):d1+d3+d6+d7+d8",), "kb:control+v": ("br(papenmeier):d1+d2+d3+d6+d7+d8",), @@ -477,7 +475,6 @@ def _handleKeyPresses(self): "kb:control+x": ("br(papenmeier):d1+d3+d4+d6+d7+d8",), "kb:control+y": ("br(papenmeier):d1+d3+d4+d5+d6+d7+d8",), "kb:control+z": ("br(papenmeier):d1+d3+d5+d6+d7+d8",), - } }) From 92393e76449a3f843ec3547f8737cfb16752e3be Mon Sep 17 00:00:00 2001 From: Reef Turner Date: Tue, 22 Dec 2020 11:58:52 +0800 Subject: [PATCH 4/4] update changes file for PR #11944 --- user_docs/en/changes.t2t | 1 + 1 file changed, 1 insertion(+) diff --git a/user_docs/en/changes.t2t b/user_docs/en/changes.t2t index 0e8d5cbf5fb..a985dde9853 100644 --- a/user_docs/en/changes.t2t +++ b/user_docs/en/changes.t2t @@ -74,6 +74,7 @@ Plus many other important bug fixes and improvements. - In Windows 10 Calculator, NVDA will not announce progress of calculations if speak typed characters is disabled. (#9428) - NVDA no longer crashes when using English US grade 2 and expand to computer Braille at the cursor is on, when displaying certain content such as a URL in Braille. (#11754) - It is again possible to report formatting information for the focused Excel cell using NVDA+F. (#11914) +- QWERTY input on Papenmeier braille displays that support it again works and no longer causes NVDA to randomly freeze. (#11944) == Changes for Developers ==