Search code examples
javascriptrshinyreactive-programming

Keyboard shortcuts to trigger reactive flows in R Shiny?


Is it possible to have, say, F7 or Q trigger a reactive flow in a Shiny app (in Windows)? This question provides code for alternating tabs with keyboard input, but I am interested in starting reactive flows. For example, a button is 'triggered' every time the user presses Q in the keyboard.


Solution

  • Here's an example based on this answer:

    library(shiny)
    
    runApp(shinyApp(
      ui = fluidPage(
        tags$script(HTML("$(function(){ 
          $(document).keyup(function(e) {
          if (e.which == 81) {
            $('#button').click()
          }
          });
          })")),
        actionButton("button", "An action button"),
        textOutput("text")),
      server=function(input, output, session) {
        output$text <- renderText({input$button})
      }
    ))
    

    You can use this page to find the keycode you want to use in the javascript code. In this example, if q is pressed, the element with the id button is clicked.