2014-07-26 14 views
7

In un'applicazione lucida, è possibile avere un'associazione che ascolti il ​​tasto premuto dall'utente?R Collegamento con tasto lucido

Io non sono troppo familiarità con JavaScript, ma sto cercando qualcosa di simile:

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

dove l'input chiave è quindi da utilizzare in server.R, ad esempio:

shinyServer(function(input, output) { 

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

    # ... 

}) 

risposta

18

È possibile aggiungere un listener per i tasti premuti. Il Shiny.onInputChange può essere utilizzato per legare il tasto premuto per una variabile lucido:

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

per keydown eventi si può sostituire:

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

esattamente quello che stavo cercando, grazie! – reinholdsson

+1

Felice di aiutare. Avrai bisogno di cercare una tabella di codici chiave della tastiera. – jdharrison

+0

Questo è stato molto utile. Sembra però che non funzioni con le frecce, i tasti maiuscole, ecc ... e digitando una lettera con i tappi attivati ​​o disattivati ​​si ottenga un risultato recente. Sembra che osservi davvero quale "carattere" è stato digitato. Qualche modo per farlo funzionare con le frecce? –