1 Commits

Author SHA1 Message Date
Keith Smith
c0552edaf3 Fix keyboard input recognition for special keys and cross-platform modifiers
- Add explicit handling for backspace, delete, escape, and space keys
- Fix modifier key mappings to work correctly on Linux/Windows (Ctrl key was incorrectly mapped to 'cmd')
- Add platform detection for proper modifier key handling across macOS, Linux, and Windows

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-28 17:31:45 -07:00

View File

@@ -108,6 +108,14 @@ class GraphicsView(QGraphicsView):
textFromCode = 'enter'
elif code == 16777217:
textFromCode = 'tab'
elif code == 16777219:
textFromCode = 'backspace'
elif code == 16777223:
textFromCode = 'delete'
elif code == 16777216:
textFromCode = 'esc'
elif code == 32:
textFromCode = 'space'
else:
textFromCode = chr(code)
except :
@@ -130,9 +138,15 @@ class GraphicsView(QGraphicsView):
if(pressedModifiers & Qt.AltModifier):
modifierTextList.append('alt')
if(pressedModifiers & Qt.ControlModifier):
modifierTextList.append('cmd') # on the mac this is the command key
if sys.platform == 'darwin': # macOS
modifierTextList.append('cmd') # on the mac this is the command key
else: # Linux and Windows
modifierTextList.append('ctrl')
if(pressedModifiers & Qt.MetaModifier):
modifierTextList.append('ctrl')# on the mac this is the control key
if sys.platform == 'darwin': # macOS
modifierTextList.append('ctrl') # on the mac this is the control key
else: # Linux and Windows
modifierTextList.append('win')
return modifierTextList
@@ -629,11 +643,15 @@ class App(QWidget):
if(pressedModifiers & Qt.AltModifier):
modifierTextList.append('alt')
if(pressedModifiers & Qt.ControlModifier):
#modifierTextList.append('ctrl')
modifierTextList.append('cmd') # on the mac this is the command key
if sys.platform == 'darwin': # macOS
modifierTextList.append('cmd') # on the mac this is the command key
else: # Linux and Windows
modifierTextList.append('ctrl')
if(pressedModifiers & Qt.MetaModifier):
modifierTextList.append('ctrl')# on the mac this is the control key
#modifierTextList.append('win')
if sys.platform == 'darwin': # macOS
modifierTextList.append('ctrl') # on the mac this is the control key
else: # Linux and Windows
modifierTextList.append('win')
return set(modifierTextList) == set(self.currentInputModifiers)
def simplifyModifierList(self, modifierList):