@@ -151,7 +151,7 @@ function createDialogButton(text) {
151151function createDialogButtonBar ( ...buttons ) {
152152 const buttonBar = document . createElement ( "div" ) ;
153153 buttonBar . classList . add ( "button-bar" ) ;
154- buttons . forEach ( buttonBar . appendChild ) ;
154+ buttons . forEach ( ( button ) => buttonBar . appendChild ( button ) ) ;
155155 return buttonBar ;
156156}
157157
@@ -171,18 +171,19 @@ function showHelpDialog() {
171171 const controlsLabel = document . createElement ( "b" ) ;
172172 controlsLabel . innerText = '{{.Translation.Get "controls"}}' ;
173173
174- const controlsTextOne = document . createElement ( "p" ) ;
175- controlsTextOne . innerText = '{{.Translation.Get "switch-tools-intro"}}:' ;
176-
177- const controlsTextTwo = document . createElement ( "p" ) ;
178- controlsTextTwo . innerHTML =
179- '{{.Translation.Get "pencil"}}: <kbd>Q</kbd><br/>' +
180- '{{.Translation.Get "fill-bucket"}}: <kbd>W</kbd><br/>' +
181- '{{.Translation.Get "eraser"}}: <kbd>E</kbd><br/>' ;
182-
183- const controlsTextThree = document . createElement ( "p" ) ;
184- controlsTextThree . innerHTML =
185- '{{printf (.Translation.Get "switch-pencil-sizes") "<kbd>1</kbd>" "<kbd>4</kbd>"}}' ;
174+ const size8Key = { { printf "%q" . Keys . Size8} } ;
175+ const size32Key = { { printf "%q" . Keys . Size32} } ;
176+ const undoModifierKeysString = { { printf "%q" . Keys . UndoModifier} } . split ( "+" ) . map ( k => `<kbd>${ k } </kbd>` ) . join ( "+" ) ;
177+ const controlsText = document . createElement ( "div" ) ;
178+ controlsText . classList . add ( "help-controls-grid" ) ;
179+ controlsText . innerHTML =
180+ `
181+ <span>{{.Translation.Get "pencil"}}</span><span dir="ltr"><kbd>{{.Keys.Pen}}</kbd></span>
182+ <span>{{.Translation.Get "fill-bucket"}}</span><span dir="ltr"><kbd>{{.Keys.Bucket}}</kbd></span>
183+ <span>{{.Translation.Get "eraser"}}</span><span dir="ltr"><kbd>{{.Keys.Rubber}}</kbd></span>
184+ <span>{{.Translation.Get "undo-help-message"}}</span><span dir="ltr">${ undoModifierKeysString } +<kbd>{{.Keys.Undo}}</kbd></span>
185+ <span>{{.Translation.Get "switch-pencil-sizes"}}</span><span dir="ltr"><kbd>${ size8Key } </kbd>-<kbd>${ size32Key } </kbd></span>
186+ ` ;
186187
187188 const closeButton = createDialogButton ( '{{.Translation.Get "close"}}' ) ;
188189 closeButton . addEventListener ( "click" , ( ) => {
@@ -197,9 +198,7 @@ function showHelpDialog() {
197198
198199 const dialogContent = document . createElement ( "div" ) ;
199200 dialogContent . appendChild ( controlsLabel ) ;
200- dialogContent . appendChild ( controlsTextOne ) ;
201- dialogContent . appendChild ( controlsTextTwo ) ;
202- dialogContent . appendChild ( controlsTextThree ) ;
201+ dialogContent . appendChild ( controlsText ) ;
203202 dialogContent . appendChild ( footer ) ;
204203
205204 showDialog (
@@ -1890,6 +1889,13 @@ function isAnyDialogVisible() {
18901889 return false ;
18911890}
18921891
1892+ function getModifierKey ( event , modifierKey ) {
1893+ // Split by "+" and ensure every specified modifier property is true on the event.
1894+ // e.g. "ctrl+shift" checks event.ctrlKey AND event.shiftKey
1895+ return modifierKey . split ( "+" ) . every ( modifier => event [ `${ modifier } Key` ] ) ;
1896+ }
1897+
1898+
18931899function onKeyDown ( event ) {
18941900 //Avoid firing actions if the user is in the chat.
18951901 if ( document . activeElement instanceof HTMLInputElement ) {
@@ -1907,28 +1913,29 @@ function onKeyDown(event) {
19071913 //find it better than having to find specific keys on your
19081914 //keyboard. Especially for people that aren't used to typing
19091915 //without looking at their keyboard, this might help.
1910- if ( event . key === "q" ) {
1916+ if ( event . key === { { printf "%q" . Keys . Pen } } ) {
19111917 toolButtonPen . click ( ) ;
19121918 chooseTool ( pen ) ;
1913- } else if ( event . key === "w" ) {
1919+ } else if ( event . key === { { printf "%q" . Keys . Bucket } } ) {
19141920 toolButtonFill . click ( ) ;
19151921 chooseTool ( fillBucket ) ;
1916- } else if ( event . key === "e" ) {
1922+ } else if ( event . key === { { printf "%q" . Keys . Rubber } } ) {
19171923 toolButtonRubber . click ( ) ;
19181924 chooseTool ( rubber ) ;
1919- } else if ( event . key === "1" ) {
1925+ } else if ( event . key === { { printf "%q" . Keys . Size8 } } ) {
19201926 sizeButton8 . click ( ) ;
19211927 setLineWidth ( 8 ) ;
1922- } else if ( event . key === "2" ) {
1928+ } else if ( event . key === { { printf "%q" . Keys . Size16 } } ) {
19231929 sizeButton16 . click ( ) ;
19241930 setLineWidth ( 16 ) ;
1925- } else if ( event . key === "3" ) {
1931+ } else if ( event . key === { { printf "%q" . Keys . Size24 } } ) {
19261932 sizeButton24 . click ( ) ;
19271933 setLineWidth ( 24 ) ;
1928- } else if ( event . key === "4" ) {
1934+ } else if ( event . key === { { printf "%q" . Keys . Size32 } } ) {
19291935 sizeButton32 . click ( ) ;
19301936 setLineWidth ( 32 ) ;
1931- } else if ( event . key === "z" && event . ctrlKey ) {
1937+ } else if ( getModifierKey ( event , "{{.Keys.UndoModifier}}" ) && event . key . toLowerCase ( ) === { { printf "%q" . Keys . Undo } } ) {
1938+ // TODO: how to match .Keys.UndoModifier to event.ctrlKey ??
19321939 undoAndSendEvent ( ) ;
19331940 }
19341941}
0 commit comments