@@ -3,6 +3,7 @@ import { isFunction, isNumber, isString } from '../utils';
3
3
import type { BasicTarget } from '../utils/domTarget' ;
4
4
import { getTargetElement } from '../utils/domTarget' ;
5
5
import useDeepCompareEffectWithTarget from '../utils/useDeepCompareWithTarget' ;
6
+ import isAppleDevice from '../utils/isAppleDevice' ;
6
7
7
8
export type KeyPredicate = ( event : KeyboardEvent ) => boolean ;
8
9
export type keyType = number | string ;
@@ -122,12 +123,23 @@ const aliasKeyCodeMap = {
122
123
singlequote : 222 ,
123
124
} ;
124
125
126
+ if ( isAppleDevice ) {
127
+ aliasKeyCodeMap [ 'meta' ] = [ 91 , 93 ] ;
128
+ } else {
129
+ aliasKeyCodeMap [ 'meta' ] = [ 91 , 92 ] ;
130
+ }
131
+
125
132
// 修饰键
126
133
const modifierKey = {
127
134
ctrl : ( event : KeyboardEvent ) => event . ctrlKey ,
128
135
shift : ( event : KeyboardEvent ) => event . shiftKey ,
129
136
alt : ( event : KeyboardEvent ) => event . altKey ,
130
- meta : ( event : KeyboardEvent ) => event . metaKey ,
137
+ meta : ( event : KeyboardEvent ) => {
138
+ if ( event . type === 'keyup' ) {
139
+ return aliasKeyCodeMap [ 'meta' ] . includes ( event . keyCode ) ;
140
+ }
141
+ return event . metaKey ;
142
+ } ,
131
143
} ;
132
144
133
145
// 根据 event 计算激活键数量
@@ -169,7 +181,7 @@ function genFilterKey(event: KeyboardEvent, keyFilter: keyType, exactMatch: bool
169
181
// 组合键
170
182
const genModifier = modifierKey [ key ] ;
171
183
// keyCode 别名
172
- const aliasKeyCode = aliasKeyCodeMap [ key . toLowerCase ( ) ] ;
184
+ const aliasKeyCode : number | number [ ] = aliasKeyCodeMap [ key . toLowerCase ( ) ] ;
173
185
174
186
if ( ( genModifier && genModifier ( event ) ) || ( aliasKeyCode && aliasKeyCode === event . keyCode ) ) {
175
187
genLen ++ ;
0 commit comments