在Shiny应用程序中,是否可以使用绑定来监听用户按下的键?
我不太熟悉JavaScript,但我正在寻找类似的东西:
window.onkeydown = function (e) {
var code = e.keyCode ? e.keyCode : e.which;
alert(code);
};
Run Code Online (Sandbox Code Playgroud)
然后在其中使用键输入server.R,例如:
shinyServer(function(input, output) {
output$text <- renderText({
paste('You have pressed the following key:', input$key)
})
# ...
})
Run Code Online (Sandbox Code Playgroud)
jdh*_*son 25
您可以为按键添加侦听器.的Shiny.onInputChange可用于结合按压到有光泽的变量的关键是:
library(shiny)
runApp( list(ui = bootstrapPage(
verbatimTextOutput("results"),
tags$script('
$(document).on("keypress", function (e) {
Shiny.onInputChange("mydata", e.which);
});
')
)
, server = function(input, output, session) {
output$results = renderPrint({
input$mydata
})
}
))
Run Code Online (Sandbox Code Playgroud)
对于keydown可以替代的事件:
tags$script('
$(document).on("keydown", function (e) {
Shiny.onInputChange("mydata", e.which);
});
')
Run Code Online (Sandbox Code Playgroud)
我一直在开发一个 R 包{keys}来解决这个问题。它基本上是Mousetrap javascript 库的包装器。这样,观察按键就变得很容易了:
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)
Run Code Online (Sandbox Code Playgroud)
更多信息请参见: https: //github.com/r4fun/keys
| 归档时间: |
|
| 查看次数: |
4777 次 |
| 最近记录: |