在互联网面前,到目前为止,我只能找到与关键相关的事件与前端按钮相关联的反向,而不是调用密钥的前端按钮。明白了?!看:
#!/usr/bin/env wish
button .b1 -text Hello -underline 0
button .b2 -text World -underline 0
bind . {.b1 flash; .b1 invoke}
bind . {.b2 flash; .b2 invoke}
pack .b1 .b2
说明 - 如果按下H按钮,Hello按钮将闪烁。 W也会产生同样的效果;世界
我希望前端[GUI]按钮模拟击键,例如 - F1
此Print Screen软件为mp3blaster - learn more..
此打印屏幕是开发人员正在工作的GUI:
我在一两个星期前问过这个问题。因为我没有得到任何 合理的答案,我不知道是否有可能,或者没有人知道,或者 无人问津。
我想在UNIX GNU / Linux下发送一个非tcl / tk应用程序的一些密钥 用于非常简单的工具栏控件。对于申请必须 就像在键盘上敲击这些键一样。在VisualBasic中 该函数称为SendKey。是否可以使用tcl / tk执行此操作?
我将使用Windows Script Host和tcom:
描述如何执行此操作Windows Script Host 2.0 beta(您可以从中下载) http://msdn.microsoft.com/scripting/windowshost/beta/)包括COM 实现SendKeys函数的对象。
tcom 1.7(http://www.vex.net/~cthuang/tcom/处提供)是a 特定于Windows的Tcl扩展,允许Tcl脚本访问 COM对象。
在此示例中,Tcl脚本启动记事本并将密钥发送到应用程序。
包需要tcom
configure wshShell [:: tcom :: bind "WScript.Shell"]
set taskId [$ wshShell Run "notepad.exe"]
$ wshShell AppActivate $ taskId
after 500
$ wshShell SendKeys "The quick brown fox jumped \ n"
$ wshShell SendKeys "{TAB} about the lazy dog."
:: tcom :: release $ wshShell
在UNIX上; Linux如何实现这个???它可以是focus
方法,反向bind
或第三方应用xvkbd
,xbindkeys
,xkeycaps
,xev
,xjoypad
等...如果tcl / tk没有一个内置命令,可以使用哪些以及如何使用?!
如果有人知道和/或可以澄清我,我会很感激。
答案 0 :(得分:1)
xdotool
(http://www.semicomplete.com/projects/xdotool/)可以帮助完成这项任务。
这是一个简短的代码段,可在点击Tk按钮时将Ctrl+Tab
发送给Chrome:
#!/usr/bin/env wish
#
# Focus window named $window_name and send the specified key sequence.
#
proc send_key {window_name key_sequence} {
foreach wid [exec xdotool search --name $window_name] {
if {![catch {exec xdotool windowfocus $wid}]} {
exec xdotool key $key_sequence
}
}
}
button .f1 \
-text "Send Ctrl+Tab to Chrome (cycle through browser tabs)" \
-command {send_key chrome ctrl+Tab}
pack .f1
在向您发送密钥序列之前,您必须先关注窗口,这有点问题。
答案 1 :(得分:0)
要生成密钥,您需要event generate
command。
event generate $w <KeyPress-F1> -x $x -y $y
您可能希望将事件定向到焦点窗口,如果您没有更好的位置,则X和Y位置应设置为0(或者使用 - {{1} }和rootx
选项以及使用全局坐标的-rooty
命令。)
您可以为按键事件设置许多其他字段,但大多数字段并不常用。 (特别是,我认为使用修饰符为生成的事件设置状态字段更容易,而不是明确设置winfo pointerxy
选项。)