Bulk identification tool

i was thinking about this today since i’ve been experimenting with Power Automate Desktop a little bit. using this tool, it seems possible to set up mechanism to trigger different sets of actions based on user-input keyboard shortcuts.

just as a proof of concept, i set up a flow that will effectively perform the following actions when you’re on the Identify screen:

  • (Ctrl+1) ID as Crinum americanum, with a note “5 Petals”
  • (Ctrl+2) Annotate as Alive + Organism
  • (Ctrl+3) Add a comment “Nice Photo!”
  • (Ctrl+4) just for debugging, display an information box that shows all the actions executed so far

i didn’t set up the flow in the most proper way (since it was just a quick proof of concept), and i’ve run across times when it glitches, but when it’s working, it seems to work pretty well, and i think it could save quite a few keystrokes (and therefore time) for common repetitive tasks.

Power Automate Desktop is included and free to use on Windows 11, and if anyone’s interested in trying it out on their own, below are the actions from the flow i set up. (you can just copy and paste into your own blank flow.)


SET keysGoToInfo TO $'''{Shift}({Left}){Shift}({Left}){Shift}({Left})'''
SET keysGoToAnnotations TO $'''{Shift}({Right}){Shift}({Right}){Shift}({Right}){Shift}({Left})'''
SET delayForAutocomplete TO 1
Variables.CreateNewList List=> listActionsTaken
LOOP WHILE (1) = (1)
    MouseAndKeyboard.WaitForShortcutKey.WaitForShortcutKey InputKeys: ['Ctrl+NumPad1', 'Ctrl+NumPad2', 'Ctrl+NumPad3', 'Ctrl+NumPad4'] IndexOfShortcutKeyPressed=> IndexOfShortcutKeyPressed
    MouseAndKeyboard.PressReleaseKey.ReleaseKey Control: True Alt: True Shift: True Win: False
    SWITCH IndexOfShortcutKeyPressed
        CASE = 1
            Variables.AddItemToList Item: $'''ID with Note: Crinum 5 Petals''' List: listActionsTaken NewList=> listActionsTaken
            MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''%keysGoToInfo%
{I}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
            MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''Southern Swamp Crinum''' DelayBetweenKeystrokes: 0 SendTextAsHardwareKeys: False
            WAIT delayForAutocomplete
            MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Down}{Tab}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
            MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''5 Petals''' DelayBetweenKeystrokes: 0 SendTextAsHardwareKeys: False
            MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Tab}{Return}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
        CASE = 2
            Variables.AddItemToList Item: $'''Annotate: Alive + Organism''' List: listActionsTaken NewList=> listActionsTaken
            MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''%keysGoToAnnotations%
{A}{A}
{E}{O}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
        CASE = 3
            Variables.AddItemToList Item: $'''Comment: Nice Photo''' List: listActionsTaken NewList=> listActionsTaken
            MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''%keysGoToInfo%
{C}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
            MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''Nice Photo!''' DelayBetweenKeystrokes: 0 SendTextAsHardwareKeys: False
            MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Tab}{Return}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
        DEFAULT
            Variables.AddItemToList Item: $'''Display Debug Messages''' List: listActionsTaken NewList=> listActionsTaken
            Display.ShowMessageDialog.ShowMessage Title: $'''Actions Taken''' Message: listActionsTaken Icon: Display.Icon.Information Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: True
    END
END

this could be adapted to handle various use cases. for example:

  • when Identifying from unknown to Kingdom, you could set up actions based on something like Ctrl+1=>Plant, Ctrl+2=>Animal, etc…
  • when Annotating animals, you could set up actions based on something like Ctrl+1=>Alive+Organism, Ctrl+2=>Dead+Organism, etc…
  • when Annotating plants, you could set up actions based on something like Ctrl+1=>Flowering, Ctrl+2=>Fruiting, Ctrl+3=>Flowering+Fruiting, etc…
  • etc…
2 Likes