2014-07-26 162 views
7

在一個Shiny應用程序中,是否可以有一個綁定來監聽用戶按下的鍵?R閃亮的鍵盤輸入綁定

我不是太熟悉JavaScript,但我正在尋找類似:

window.onkeydown = function (e) { 
    var code = e.keyCode ? e.keyCode : e.which; 
    alert(code); 
}; 

其中關鍵的輸入,然後在server.R使用,例如:

shinyServer(function(input, output) { 

    output$text <- renderText({ 
    paste('You have pressed the following key:', input$key) 
    }) 

    # ... 

}) 

回答

18

您可以爲按鍵添加監聽器。該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 
    }) 
} 
)) 

爲​​事件可以替代:

tags$script(' 
    $(document).on("keydown", function (e) { 
     Shiny.onInputChange("mydata", e.which); 
    }); 
    ') 
+0

正是我一直在尋找,謝謝! – reinholdsson

+1

樂於幫助。您需要查看鍵盤鍵碼錶。 – jdharrison

+0

這非常有幫助。似乎它不適用於箭頭,換檔鍵等,並且打開或關閉蓋帽的字母會產生最近的結果。它似乎真的在觀察輸入了什麼「字符」。任何方式使它與箭頭一起工作? –