Skip to content

r4fun/keys

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e1f77a0 · Jan 16, 2022

History

51 Commits
Jan 16, 2022
Dec 18, 2020
Dec 18, 2020
Jul 11, 2021
Oct 6, 2020
Oct 8, 2020
Oct 19, 2020
Oct 8, 2020
Jul 11, 2021
Oct 3, 2020
Oct 8, 2020
Jul 11, 2021
Jan 16, 2022
Jan 16, 2022
Oct 6, 2020
Jul 11, 2021
Oct 3, 2020

Repository files navigation

keys

R build status CRAN status CRAN_Download_Badge Conda Version

The goal of keys is to add hotkeys to shiny applications using Mousetrap. With keys, you can:

  • Assign hotkeys on app load
  • Add and remove hotkeys from server
  • Pause and unpause hotkeys from server
  • Record keys from server

Installation

Install the released version of keys from CRAN:

install.packages("keys")

Or install the development version from GitHub with:

# install.packages("devtools")
devtools::install_github("r4fun/keys")

You can also install keys with conda-forge. More information here: https://github.com/conda-forge/r-keys-feedstock

Usage

To use keys, start by adding a dependency to it using useKeys().

Then, you can add a keysInput to the UI:

library(shiny)
library(keys)

hotkeys <- c(
  "1", 
  "command+shift+k", 
  "up up down down left right left right b a enter"
)

ui <- fluidPage(
  useKeys(),
  keysInput("keys", hotkeys)
)

server <- function(input, output, session) {
  observeEvent(input$keys, {
    print(input$keys)
  })
}

shinyApp(ui, server)

You can add binding after application launch using addKeys.

library(shiny)
library(keys)

ui <- fluidPage(
  useKeys(),
  actionButton("add", "Add keybinding")
)

server <- function(input, output, session) {
  observeEvent(input$add, {
    addKeys("keys", c("a", "b", "c"))
  })
  observeEvent(input$keys, {
    print(input$keys)
  })
}

shinyApp(ui, server)

Bindings can be removed after application launch using removeKey.

library(shiny)
library(keys)

ui <- fluidPage(
  useKeys(),
  keysInput("keys", c("a", "b", "c")),
  actionButton("rm", "Remove `a` keybinding")
)

server <- function(input, output, session) {
  observeEvent(input$rm, {
    removeKeys("a")
  })
  observeEvent(input$keys, {
    print(input$keys)
  })
}

shinyApp(ui, server)

For more information about what types of hotkeys you can use, please take a look at the mousetrap github repository.

Acknowledgements

All credit goes to Craig Campbell who is the author of Mousetrap.