@@ -55,6 +55,26 @@ const ScriptMenuList: React.FC<{
5555 }
5656 useEffect ( ( ) => {
5757 setList ( script ) ;
58+ // 注册菜单快捷键
59+ const listeners : ( ( e : KeyboardEvent ) => void ) [ ] = [ ] ;
60+ script . forEach ( ( item ) => {
61+ item . menus . forEach ( ( menu ) => {
62+ if ( menu . options ?. accessKey ) {
63+ const listener = ( e : KeyboardEvent ) => {
64+ if ( e . key . toUpperCase ( ) === menu . options ! . accessKey ! . toUpperCase ( ) ) {
65+ sendMenuAction ( item . uuid , menu ) ;
66+ }
67+ } ;
68+ document . addEventListener ( "keypress" , listener ) ;
69+ listeners . push ( listener ) ;
70+ }
71+ } ) ;
72+ } ) ;
73+ return ( ) => {
74+ listeners . forEach ( ( listener ) => {
75+ document . removeEventListener ( "keypress" , listener ) ;
76+ } ) ;
77+ } ;
5878 } , [ script ] ) ;
5979
6080 useEffect ( ( ) => {
@@ -209,25 +229,20 @@ const ScriptMenuList: React.FC<{
209229 : item . menus ?. slice ( 0 , menuExpandNum )
210230 : item . menus
211231 ) ?. map ( ( menu ) => {
212- if ( menu . accessKey ) {
213- document . addEventListener ( "keypress" , ( e ) => {
214- if ( e . key . toUpperCase ( ) === menu . accessKey ! . toUpperCase ( ) ) {
215- sendMenuAction ( item . uuid , menu ) ;
216- }
217- } ) ;
218- }
232+ console . log ( "menu" , menu ) ;
219233 return (
220234 < Button
221235 className = "text-left"
222236 key = { menu . id }
223237 type = "secondary"
224238 icon = { < IconMenu /> }
239+ title = { menu . options ?. title }
225240 onClick = { ( ) => {
226241 sendMenuAction ( item . uuid , menu ) ;
227242 } }
228243 >
229244 { menu . name }
230- { menu . accessKey && `(${ menu . accessKey . toUpperCase ( ) } )` }
245+ { menu . options ?. accessKey && `(${ menu . options . accessKey . toUpperCase ( ) } )` }
231246 </ Button >
232247 ) ;
233248 } ) }
0 commit comments