@@ -217,40 +217,53 @@ function rv() {
217217}
218218
219219function shortcutKey ( ) {
220+ const routes = {
221+ h : "/" ,
222+ d : "/docs/" ,
223+ t : "/tags/" ,
224+ p : "/platforms/" ,
225+ c : "/comments/" ,
226+ l : "/links/" ,
227+ a : "/about/" ,
228+ "/" : "/search/" ,
229+ } ;
230+
231+ const pressed = new Set ( ) ;
232+ let triggered = false ;
233+
220234 document . addEventListener ( "keydown" , ( e ) => {
221- if ( e . ctrlKey && e . key === "k" ) {
222- e . preventDefault ( ) ;
223- swup . navigate ( "/search/" ) ;
224- }
225- if ( e . ctrlKey && e . key === "h" ) {
226- e . preventDefault ( ) ;
227- swup . navigate ( "/" ) ;
228- }
229- if ( e . ctrlKey && e . key === "d" ) {
230- e . preventDefault ( ) ;
231- swup . navigate ( "/docs/" ) ;
232- }
233- if ( e . ctrlKey && e . key === "t" ) {
234- e . preventDefault ( ) ;
235- swup . navigate ( "/tags/" ) ;
236- }
237- if ( e . ctrlKey && e . key === "p" ) {
238- e . preventDefault ( ) ;
239- swup . navigate ( "/platforms/" ) ;
240- }
241- if ( e . ctrlKey && e . key === "c" ) {
242- e . preventDefault ( ) ;
243- swup . navigate ( "/comments/" ) ;
244- }
245- if ( e . ctrlKey && e . key === "l" ) {
246- e . preventDefault ( ) ;
247- swup . navigate ( "/links/" ) ;
235+ const el = e . target ;
236+
237+ if (
238+ el . tagName === "INPUT" ||
239+ el . tagName === "TEXTAREA" ||
240+ el . isContentEditable
241+ ) {
242+ return ;
248243 }
249- if ( e . ctrlKey && e . key === "a" ) {
244+
245+ const key = e . key . toLowerCase ( ) ;
246+ pressed . add ( key ) ;
247+
248+ if ( triggered ) return ;
249+
250+ if ( pressed . has ( "v" ) && key !== "v" && routes [ key ] ) {
250251 e . preventDefault ( ) ;
251- swup . navigate ( "/about/" ) ;
252+
253+ triggered = true ;
254+
255+ const target = routes [ key ] ;
256+ if ( window . location . pathname !== target ) {
257+ swup . navigate ( target ) ;
258+ }
252259 }
253260 } ) ;
261+
262+ document . addEventListener ( "keyup" , ( e ) => {
263+ pressed . delete ( e . key . toLowerCase ( ) ) ;
264+
265+ triggered = false ;
266+ } ) ;
254267}
255268
256269function langCode ( ) {
0 commit comments