Description
Keyboard Shortcuts for 'shiny'.
Description
Assign and listen to keyboard shortcuts in 'shiny' using the 'Mousetrap' Javascript library.
README.md
keys
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")
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
.