View Issue Details

IDProjectCategoryView StatusLast Update
0004606NoesisGUIStudiopublic2025-12-04 11:28
Reporterdstewart Assigned Tosfernandez  
PrioritynormalSeverityminor 
Status assignedResolutionopen 
Product VersionStudio_Beta 
Target VersionStudio_Beta 
Summary0004606: Modifier Keys In KeyTriggers Aren't Registered As Standard KeyPresses
Description

Currently, keys that are considered to be 'modifier' keys (Shift, Ctrl, Alt, WinKey.) cannot be invoked in a KeyTrigger in same method that all other 'standard' keys are.

The only way to currently a 'modifier'-type key function as a regular keypress, is to counter-act by setting a 'Modifier' Property of the same key as the one being pressed.


Repro Steps:

1) Create a Studio Project featuring a MainPage.xaml
2) Introduce a TextBlock to the Page, rename it to a 'MyText', and set its Visibility to 'Hidden'.
3) Introduce a Button to the Page, and rename it to 'MyButton'

3) Navigate to the Interactivity/Triggers Panel, and create a new KeyTrigger on the PageRoot with:

Key: [LeftShift]
Modifiers: None
Fire On: KeyDown
Active on Focus: Unchecked
Conditions: None

Actions: ChangePropertyAction
Target: MyText
Property Name: Visibility
Value: Visible
Enabled: Checked

3) Navigate to the Interactivity/Triggers Panel, and create a new EventTrigger on the PageRoot with:

Source: <Self>
Event: Loaded
Conditions: None

Action: SetFocusAction
Target: MyButton
Engage: Checked
Enabled: Checked

4) Press 'Play' to Play the Page

5) Press the [LShift] Key on the Keyboard.

Observe how the TextBlock is not made visible from this keypress.

6) Return to the Interactivity/Triggers Panel, and on the KeyTrigger, set the Modifier to 'Shift'.

7) Press 'Play' to Play the Page

8) Press the [LShift] Key on the Keyboard.

Observe how the Shift key is now registered as a regular keypress.

Expected Results: Shift, Ctrl, Alt, and WinKey can all be registered as regular keypresses.

PlatformAny

Activities

sfernandez

sfernandez

2025-12-04 10:28

manager   ~0011519

I've verified that WPF behavior is exactly as ours. When a modifier key (Shift, Ctrl, Alt) is pressed, the KeyDown event is sent for those keys, and while the key is pressed (independently of other keys being pressed), the Keyboard reports that the corresponding Modifier is active.

So for example, I get this logs when listening to the KeyDown event:

Event Key=LeftShift, Keyboard Modifiers=Shift
Event Key=RightShift, Keyboard Modifiers=Shift
Event Key=LeftCtrl, Keyboard Modifiers=Control
...
dstewart

dstewart

2025-12-04 11:27

developer   ~0011520

Last edited: 2025-12-04 11:28

I think that what is most concerning to me about this is the level of 'exception' these keys are.
Out of the approximately ~174 keys available in the list, only 8 of them (LWin, RWin, LShift, RShift, LAlt, RAlt, LCtrl, RCtrl) follow this special rule.
Without background knowledge on the mechanics in the code behind the scenes, the user has no way to really know which are exceptions, and how to make them work like how the ~166 other keys function.

This is the main basis of my argument to have some backend to bring the 8 Modifier Keys into Alignment with the rest of the collection, and leaving the 'Modifiers' Property to handle using these keys as 'Holds'.

Issue History

Date Modified Username Field Change
2025-12-03 17:19 dstewart New Issue
2025-12-03 17:20 dstewart Description Updated
2025-12-03 17:58 jsantos Assigned To => sfernandez
2025-12-03 17:58 jsantos Status new => assigned
2025-12-03 17:58 jsantos Target Version => Studio_Beta
2025-12-04 10:28 sfernandez Status assigned => feedback
2025-12-04 10:28 sfernandez Note Added: 0011519
2025-12-04 11:27 dstewart Note Added: 0011520
2025-12-04 11:27 dstewart Status feedback => assigned
2025-12-04 11:27 dstewart Note Edited: 0011520
2025-12-04 11:28 dstewart Note Edited: 0011520