2014-07-26 15 views
7

Czy w aplikacji Shiny możliwe jest wiązanie, które nasłuchuje, jaki klawisz użytkownik naciśnie?R Wiązanie z czystym kluczem wejściowym

nie jestem zbyt obeznany z JavaScript, ale szukam czegoś podobnego:

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

gdzie wejście klucz jest następnie do wykorzystania w server.R, np:

shinyServer(function(input, output) { 

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

    # ... 

}) 

Odpowiedz

18

Możesz dodać detektor dla naciśnięć klawiszy. Shiny.onInputChange mogą być stosowane do wiązania klawisz wciśnięty do zmiennej błyszczące:

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 
    }) 
} 
)) 

dla keydown wydarzeń można zastąpić:

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

dokładnie to, czego szukasz, dzięki! – reinholdsson

+1

Chętnie pomogę. Będziesz musiał rozejrzeć się za tabelą kodów klawiszy klawiatury. – jdharrison

+0

To było bardzo pomocne. Wygląda jednak na to, że nie działa ze strzałkami, klawiszami shift itp., A wpisanie litery z włączonymi lub wyłączonymi klawiszami daje ostatni wynik. Wygląda na to, że naprawdę obserwuje to, co wpisano "znak". Jakikolwiek sposób, aby działał ze strzałkami? –