调用键盘按键,通过 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 来做到这一点:

在此示例中,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 或第三方应用程序 xvkbdxbindkeysxkeycapsxevxjoypad等等 ... 如果 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,这有点问题。