在Shiny应用程序(Windows环境下)中,例如使用F7
或Q
来触发一个反应流是否可能?这个问题提供了使用键盘输入交替选项卡的代码,但我想启动反应流。例如,每次用户在键盘上按下Q
时,将“触发”一个按钮。
在Shiny应用程序(Windows环境下)中,例如使用F7
或Q
来触发一个反应流是否可能?这个问题提供了使用键盘输入交替选项卡的代码,但我想启动反应流。例如,每次用户在键盘上按下Q
时,将“触发”一个按钮。
以下是基于这个答案的示例:
library(shiny)
runApp(shinyApp(
ui = fluidPage(
tags$script(HTML("$(function(){
$(document).keyup(function(e) {
if (e.which == 81) {
$('#button').click()
}
});
})")),
actionButton("button", "An action button"),
textOutput("text")),
server=function(input, output, session) {
output$text <- renderText({input$button})
}
))
您可以使用此页面查找要在javascript代码中使用的按键码。
在此示例中,如果按下q键,则会点击具有id button
的元素。
tags$head(tags$script(src = "custom.js"))
引用它。根据需要选择keydown或keyup来触发函数。添加e.preventDefault();
以阻止默认行为被触发,例如保存网页。/* js for ctrl(PC) or cmd(mac) plus S */
$(document).keydown(function(e) {
if ((e.ctrlKey || e.metaKey) && e.which == KEYCODE.s) {
$('#my_button').click();
e.preventDefault();
}
});
我有一个 keycode.js 文件,我首先引用它,其中列出了按键代码,这样我就不必一直查找它们了。
var KEYCODE = {
'backspace' : 8,
'tab' : 9,
'enter' : 13,
'shift' : 16,
'ctrl' : 17,
'cmd' : 224,
'alt' : 18,
'pause_break' : 19,
'caps_lock' : 20,
'esc' : 27,
'space' : 32,
'page_up' : 33,
'page_down' : 34,
'end' : 35,
'home' : 36,
'left_arrow' : 37,
'up_arrow' : 38,
'right_arrow' : 39,
'down_arrow' : 40,
'insert' : 45,
'delete' : 46,
'0' : 48,
'1' : 49,
'2' : 50,
'3' : 51,
'4' : 52,
'5' : 53,
'6' : 54,
'7' : 55,
'8' : 56,
'9' : 57,
'equal' : 61,
'plus' : 61,
'minus' : 173,
'underscore' : 173,
'a' : 65,
'b' : 66,
'c' : 67,
'd' : 68,
'e' : 69,
'f' : 70,
'g' : 71,
'h' : 72,
'i' : 73,
'j' : 74,
'k' : 75,
'l' : 76,
'm' : 77,
'n' : 78,
'o' : 79,
'p' : 80,
'q' : 81,
'r' : 82,
's' : 83,
't' : 84,
'u' : 85,
'v' : 86,
'w' : 87,
'x' : 88,
'y' : 89,
'z' : 90,
'left_window' : 91,
'right_window' : 92,
'select_key' : 93,
'0n' : 96,
'1n' : 97,
'2n' : 98,
'3n' : 99,
'4n' : 100,
'5n' : 101,
'6n' : 102,
'7n' : 103,
'8n' : 104,
'9n' : 105,
'multiply' : 106,
'add' : 107,
'subtract' : 109,
'decimal_point' : 110,
'divide' : 111,
'f1' : 112,
'f2' : 113,
'f3' : 114,
'f4' : 115,
'f5' : 116,
'f6' : 117,
'f7' : 118,
'f8' : 119,
'f9' : 120,
'f10' : 121,
'f11' : 122,
'f12' : 123,
'num_lock' : 144,
'scroll_lock' : 145,
'semicolon' : 186,
'equal_sign' : 187,
'comma' : 188,
'dash' : 189,
'period' : 190,
'forward_slash' : 191,
'grave_accent' : 192,
'open_bracket' : 219,
'backslash' : 220,
'closebracket' : 221,
'single_quote' : 222
};
Ctrl+q
?我知道有类似e.ctrlKey
的东西,但我不知道如何实现它。 - InspectorSandsdownloadButton()
启用快捷键,但我失败了,你有什么建议吗?谢谢! - Negrito