@@ -15,7 +15,7 @@ @implementation AvnView
15
15
bool _isLeftPressed, _isMiddlePressed, _isRightPressed, _isXButton1Pressed, _isXButton2Pressed;
16
16
AvnInputModifiers _modifierState;
17
17
NSEvent * _lastMouseDownEvent;
18
- bool _lastKeyHandled ;
18
+ bool _lastKeyConsumeByInputContext ;
19
19
AvnPixelSize _lastPixelSize;
20
20
NSObject <IRenderTarget>* _currentRenderTarget;
21
21
AvnPlatformResizeReason _resizeReason;
@@ -457,27 +457,19 @@ - (void) keyboardEvent: (NSEvent *) event withType: (AvnRawKeyEventType)type
457
457
auto physicalKey = PhysicalKeyFromScanCode (scanCode);
458
458
auto keySymbol = KeySymbolFromScanCode (scanCode, [event modifierFlags ]);
459
459
auto keySymbolUtf8 = keySymbol == nullptr ? nullptr : [keySymbol UTF8String ];
460
-
460
+
461
461
auto timestamp = static_cast <uint64_t >([event timestamp ] * 1000 );
462
462
auto modifiers = [self getModifiers: [event modifierFlags ]];
463
463
464
- auto handled = _parent->BaseEvents ->RawKeyEvent (type, timestamp, modifiers, key, physicalKey, keySymbolUtf8);
465
- if (key != AvnKeyLeftCtrl && key != AvnKeyRightCtrl) {
466
- _lastKeyHandled = handled;
467
- } else {
468
- _lastKeyHandled = false ;
464
+ if (!_lastKeyConsumeByInputContext || key <= 32 ){
465
+ auto handled = _parent->BaseEvents ->RawKeyEvent (type, timestamp, modifiers, key, physicalKey, keySymbolUtf8);
466
+
467
+ if (key > 32 && type == KeyDown && !handled){
468
+ _parent->BaseEvents ->RawTextInputEvent (timestamp, keySymbolUtf8);
469
+ }
469
470
}
470
471
}
471
472
472
- - (BOOL )performKeyEquivalent : (NSEvent *)event
473
- {
474
- bool result = _lastKeyHandled;
475
-
476
- _lastKeyHandled = false ;
477
-
478
- return result;
479
- }
480
-
481
473
- (void )flagsChanged : (NSEvent *)event
482
474
{
483
475
auto newModifierState = [self getModifiers: [event modifierFlags ]];
@@ -537,15 +529,13 @@ - (void)flagsChanged:(NSEvent *)event
537
529
538
530
- (void )keyDown : (NSEvent *)event
539
531
{
540
- _lastKeyHandled = false ;
541
-
542
- [self keyboardEvent: event withType: KeyDown];
543
-
544
- BOOL isKeyDownConsumed = [[self inputContext ] handleEvent: event];
532
+ _lastKeyConsumeByInputContext = false ;
545
533
546
- if (!_lastKeyHandled ){
547
- _lastKeyHandled = isKeyDownConsumed == YES ;
534
+ if (_parent-> InputMethod -> IsActive () ){
535
+ _lastKeyConsumeByInputContext = [[ self inputContext ] handleEvent: event] == YES ;
548
536
}
537
+
538
+ [self keyboardEvent: event withType: KeyDown];
549
539
}
550
540
551
541
- (void )keyUp : (NSEvent *)event
0 commit comments