2014-07-26 29 views
7

Trong ứng dụng Sáng bóng, có thể có một ràng buộc lắng nghe phím nào người dùng nhấn xuống không?R Ràng buộc đầu vào khóa sáng bóng

Tôi không quá quen thuộc với JavaScript, nhưng tôi đang tìm kiếm một cái gì đó như:

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

nơi đầu vào quan trọng là sau đó được sử dụng trong server.R, ví dụ:

shinyServer(function(input, output) { 

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

    # ... 

}) 

Trả lời

18

Bạn có thể thêm trình nghe cho các lần nhấn phím. Các Shiny.onInputChange thể được sử dụng để ràng buộc phím bấm cho một biến sáng bóng:

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

cho keydown sự kiện mà bạn có thể thay thế:

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

chính xác những gì tôi đang tìm kiếm, cảm ơn! – reinholdsson

+1

Rất vui được trợ giúp. Bạn sẽ cần phải nhìn xung quanh cho một bảng mã phím bàn phím. – jdharrison

+0

Điều này rất hữu ích. Dường như nó không hoạt động với các mũi tên, phím shift vv ... và gõ một chữ cái có mũ hoặc tắt, cho kết quả gần đây. Có vẻ như nó thực sự quan sát những gì "nhân vật" được đánh máy. Bất kỳ cách nào để làm cho nó hoạt động với các mũi tên? –

Các vấn đề liên quan