diff --git a/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Input/TextServicesManager.cs b/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Input/TextServicesManager.cs index bed4fa4aa7a..f4b09ed84e9 100644 --- a/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Input/TextServicesManager.cs +++ b/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Input/TextServicesManager.cs @@ -231,11 +231,16 @@ private bool TextServicesKeystroke(TextServicesContext context, KeyEventArgs key break; default: wParam = KeyInterop.VirtualKeyFromKey(keyArgs.RealKey); - scancode = 0; + scancode = keyArgs.ScanCode; break; } - lParam = (int)(((uint)scancode << 16) | 1); + lParam = (int)((((uint)scancode & 0xFF) << 16) | 1); + + if (keyArgs.IsExtendedKey) + { + lParam |= 1 << 24; + } if (keyArgs.RoutedEvent == Keyboard.PreviewKeyDownEvent/*keyArgs.IsDown*/) {