@@ -124,8 +124,9 @@ const Clock: FC = () => {
124124
125125 void ( async function ( ) {
126126 const submitBtn = await findElement ( '.submit__-6u9' )
127- console . log ( 'submitBtn: ' , submitBtn )
128- const handleClick : EventListenerOrEventListenerObject = async ( ) => {
127+ const editEl = await findElement ( '.euyvu2f0' )
128+
129+ const handleClick = async ( ) => {
129130 log . debug ( '提交开始' )
130131 const submissionId = await getSubmissionId ( )
131132 log . debug ( '获取 submissionId %s' , submissionId )
@@ -151,10 +152,57 @@ const Clock: FC = () => {
151152 setHidden ( false )
152153 }
153154 }
155+
156+ const isMac = ( ) => {
157+ return (
158+ navigator . platform . indexOf ( 'Mac' ) === 0 ||
159+ navigator . platform === 'iPhone'
160+ )
161+ }
162+ const isSubmit = ( e : KeyboardEvent ) => {
163+ // 检查全局提交快捷键是否开启
164+ const globalDisabledSubmitCode = localStorage . getItem (
165+ 'global_disabled_submit_code'
166+ )
167+
168+ if ( globalDisabledSubmitCode === 'false' ) return false
169+
170+ let mate = false
171+
172+ // 检查是否按下对应的快捷键,如果是 Mac 电脑为 mate 键,Window 或 Linux 为 Ctrl 键
173+ if ( isMac ( ) ) {
174+ if ( e . metaKey === true && e . ctrlKey === false ) mate = true
175+ } else {
176+ if ( e . ctrlKey === true ) mate = true
177+ }
178+
179+ if (
180+ mate &&
181+ e . code === 'Enter' &&
182+ e . altKey === false &&
183+ e . shiftKey === false
184+ ) {
185+ return true
186+ }
187+
188+ return false
189+ }
190+ const keydownHandle = ( e : KeyboardEvent ) => {
191+ if ( isSubmit ( e ) ) {
192+ log . debug ( '使用快捷键提交' )
193+ handleClick ( )
194+ }
195+ }
196+
154197 if ( cancel . current === 'unmount' ) return // 当前组件已经被卸载,就不需要挂载事件
155198
156199 submitBtn . addEventListener ( 'click' , handleClick )
157- cancel . current = ( ) => submitBtn . removeEventListener ( 'click' , handleClick )
200+ editEl . addEventListener ( 'keydown' , keydownHandle , { capture : true } )
201+
202+ cancel . current = ( ) => {
203+ submitBtn . removeEventListener ( 'click' , handleClick )
204+ editEl . removeEventListener ( 'keydown' , keydownHandle , { capture : true } )
205+ }
158206 } ) ( )
159207
160208 return ( ) => {
0 commit comments