Faster Fingering Input on a PC with AutHotKeys

I’ve noticed a number of comments on the slowness of fingering input, so I thought I’d share this AutoHotKeys script which speeds things up a bit and works quite well for me. It basically combines multiple key strokes into one.

I’m grateful rlee to who first alerted me to this program in this post.

I’ve not had much experience using AutoHotKeys, so if anyone can think of any problems/improvements/suggestions please let me know.

Here what to do:
Download and install AutoHotKeys (at your own risk of course, although it appears to be an established and respected program).

Paste the script below into a new text document, rename it with file extension “.ahk” and then double click in it to run it. (To stop the script running, exit AutoHotKeys using the “H” icon in the system tray.)

Backup a Dorico file (just in case!) then open it, select a note, type shift+f and whatever fingering you want. The following shortcuts should work.
(All numbers refer to the main part of the keyboard.)

  • Alt+1 = shift+enter,down cursor, shift+f: Closes the popover, selects the note or rest below and reopens the popover.
  • Alt+2 = shift+enter, left cursor, shift+f: Closes the popover, selects the previous note or rest and reopens the popover.
  • Alt+3 = shift+enter, right cursor, shift+f: Closes the popover, selects the next note or rest and reopens the popover.
  • Alt+4 = shift+enter, up cursor, shift+f: Closes the popover, selects the note or rest above and reopens the popover.
  • Alt+5 = shift+enter, shift+ down cursor, shift+f: Closes the popover, extends the selection to all the notes of a chord and the chord or rest below and reopens the popover.

Notes:

  • Alt+5 is useful for keyboard fingering because it selects all of the notes of a chord. (Fingering can only be entered into selected notes.) Although notes in the stave below are also selected, the popover only operates on the notes of the top selected stave.
  • Sometimes the arrow keys do not move to the notes expected, and a few extra keypresses are required. This appears to be a problem with Dorico. Using the cursor keys directly produces the same result.
  • The sleep commands are essential. They give Dorico time to respond to the key commands in the script. Try increasing the time if it does not run correctly.
  • I tried to get the script to run only in Dorico, but it may also run in other applications that use Qt. It might be a good idea to quit it before running another application.

I can obviously give no guarantees about this, but it works on my five year old desktop with Windows 10, an I7 processor and 8Gb of ram.

#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
;Kenneth Gaw 5 Jan 2018

#IfWinActive, ahk_class Qt5QWindowIcon ; Might interfere with another Qt application. Couldn’t get it to specify Dorico.
{
;For Fingering

!4::
Send +{Enter} ;Shift Enter to avoid starting note input when fingering popover is not running
Sleep, 100 ;This is necessary in order to give Dorico time to respond to the key commands. Could be shortened or lengthened depending on the spec of the computer.
Send {Up} ;Cursor up/Select note above
Sleep, 100
Send +f ;Open fingering popover
return

!3::
Send +{Enter}
Sleep, 100
Send {Right} ;Cursor right/Select next note
Sleep, 100
Send +f
return

!2::
Send +{Enter}
Sleep, 100
Send {Left} ;Cursor left/Select previous note
Sleep, 100
Send +f
return

!1::
Send +{Enter}
Sleep, 100
Send {Down} ;Cursor down/Select note below
Sleep, 100
Send +f
return

!5::
Send +{Enter}
Sleep, 100
Send +{Down} ;shift down ensures the entire chord is selected. The fingering popover only operates on the top stave.
Sleep, 100
Send +f
return


}