调用键盘按键,通过 proc - tcl 中的过程(函数)
Invoking keyboard keys, through proc - procedure (function) in tcl
目前在网上只能找到按键相关事件关联到前端按钮的反向,而不是调用按键的前端按钮。懂了吗?!看:
#!/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
This Print Screen software is mp3blaster - learn more..
This Print Screen is a GUI what are developer are work:
我一两周前问过这个问题。因为我没有得到任何
似是而非的答案,我不知道是否可能,或者没有人知道,或者
没人在乎。
我想在 UNIX GNU 下发送一个非 tcl/tk 应用程序/Linux一些键
对于一个非常简单的工具栏控件。对于应用程序必须
就像在键盘上敲击这些键一样。在 Visual Basic 中
该函数称为 SendKey。可以用 tcl / tk 做到这一点吗?
我将描述如何使用 Windows 脚本宿主和 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/ 获得)是
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 没有一个内置命令,该使用哪个以及如何使用?!
有知道的人and/or可以解惑一下,不胜感激
要生成密钥,您需要 event generate
command。
event generate $w <KeyPress-F1> -x $x -y $y
您可能希望将事件指向焦点 window,如果您没有更好的位置(或者使用 - rootx
和 -rooty
选项以及使用全局坐标的 winfo pointerxy
命令。
您可以为 key-press 事件设置许多其他字段,但其中大部分并不常用。 (特别是,我认为使用对正在生成的事件的修饰符来设置状态字段比显式设置 -state
选项更容易。)
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
在向其发送键序列之前必须先聚焦 window,这有点问题。
目前在网上只能找到按键相关事件关联到前端按钮的反向,而不是调用按键的前端按钮。懂了吗?!看:
#!/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
This Print Screen software is mp3blaster - learn more..
This Print Screen is a GUI what are developer are work:
我一两周前问过这个问题。因为我没有得到任何 似是而非的答案,我不知道是否可能,或者没有人知道,或者 没人在乎。
我想在 UNIX GNU 下发送一个非 tcl/tk 应用程序/Linux一些键 对于一个非常简单的工具栏控件。对于应用程序必须 就像在键盘上敲击这些键一样。在 Visual Basic 中 该函数称为 SendKey。可以用 tcl / tk 做到这一点吗?
我将描述如何使用 Windows 脚本宿主和 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/ 获得)是 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 没有一个内置命令,该使用哪个以及如何使用?!
有知道的人and/or可以解惑一下,不胜感激
要生成密钥,您需要 event generate
command。
event generate $w <KeyPress-F1> -x $x -y $y
您可能希望将事件指向焦点 window,如果您没有更好的位置(或者使用 - rootx
和 -rooty
选项以及使用全局坐标的 winfo pointerxy
命令。
您可以为 key-press 事件设置许多其他字段,但其中大部分并不常用。 (特别是,我认为使用对正在生成的事件的修饰符来设置状态字段比显式设置 -state
选项更容易。)
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
在向其发送键序列之前必须先聚焦 window,这有点问题。