@@ -19,8 +19,8 @@ import {
1919import { State } from '../models' ;
2020
2121export default function keyboard ( ) {
22- return ( store : Store , stateExtractor : ( store : any ) => State ) => {
23- window . addEventListener ( 'keydown' , ( event ) => {
22+ return ( store : Store , stateExtractor : ( state : any ) => State ) => {
23+ function window_keydown_event_handler ( event : KeyboardEvent ) {
2424 const state = stateExtractor ( store . getState ( ) ) ;
2525 const mode = state . mode ;
2626
@@ -59,6 +59,12 @@ export default function keyboard() {
5959 break ;
6060 }
6161 case KEYBOARD_BUTTON_CODE . C : {
62+ if (
63+ event . getModifierState ( 'Control' ) ||
64+ event . getModifierState ( 'Meta' )
65+ ) {
66+ break ;
67+ }
6268 const selectedLayer = state . scene . selectedLayer ;
6369 if ( selectedLayer === undefined ) break ;
6470 const selected = state . scene . layers [ selectedLayer ] . selected ;
@@ -91,17 +97,26 @@ export default function keyboard() {
9197 break ;
9298 }
9399 case KEYBOARD_BUTTON_CODE . V : {
100+ if (
101+ event . getModifierState ( 'Control' ) ||
102+ event . getModifierState ( 'Meta' )
103+ ) {
104+ break ;
105+ }
94106 store . dispatch ( pasteProperties ( ) ) ;
95107 break ;
96108 }
97109 case KEYBOARD_BUTTON_CODE . CTRL : {
98- store . dispatch ( setAlterateState ( true ) ) ;
110+ if ( ! state . alterate ) {
111+ store . dispatch ( setAlterateState ( true ) ) ;
112+ }
99113 break ;
100114 }
101115 }
102- } ) ;
116+ }
117+ window . addEventListener ( 'keydown' , window_keydown_event_handler ) ;
103118
104- window . addEventListener ( 'keyup' , ( event ) => {
119+ function window_keyup_event_handler ( event : KeyboardEvent ) {
105120 const state = stateExtractor ( store . getState ( ) ) ;
106121 const mode = state . mode ;
107122
@@ -121,6 +136,12 @@ export default function keyboard() {
121136 break ;
122137 }
123138 }
124- } ) ;
139+ }
140+ window . addEventListener ( 'keyup' , window_keyup_event_handler ) ;
141+
142+ return ( ) => {
143+ window . removeEventListener ( 'keydown' , window_keydown_event_handler ) ;
144+ window . removeEventListener ( 'keyup' , window_keyup_event_handler ) ;
145+ } ;
125146 } ;
126147}
0 commit comments