Thread from comp.lang.tcl (2 replies)

How to simulate a 'shift click'
Posted by Helmut Giese <hgiese@ratiosoft.com> 1 month 1 week ago

Hello out there,
I can simulate a simple click but fail at a 'shift click'.
Below is what I tried:
	---
package require Tk
foreach ch [winfo children "."] {destroy $ch}

# create a test app
set btn [ttk::button .btn -text "Press me"]
pack $btn
# add some bindings
bind $btn <Button-1> {puts "Simple click"}
bind $btn <Shift-Button-1> {puts "Shift click"}

focus $btn
set x [winfo x $btn] ; set y [winfo y $btn]
# place the mouse
event generate "." <Motion>  -x [incr x 50] -y [incr y 10] -warp 1

event generate $btn <ButtonPress-1>
after 100 ; event generate $btn <ButtonRelease-1>

# now a 'shift click'
if 1 {
event generate $btn <KeyPress> -keysym Shift_L
} else {
event generate $btn <Key-Shift_L>   
}
event generate $btn <ButtonPress-1>
after 100 ; event generate $btn <ButtonRelease-1>
event generate $btn <KeyRelease> -keysym Shift_L
	---
All I ever get is twice 'Simple click' - no matter whether I use
<Key-Shift_L>  or the longer form, wether I generate the keypress for
$btn or  ".". I am out of ideas what to try next.
Any help will be greatly appreciated
Helmut.
PS: This is on Windows with Tcl 8.6.10

Click on article to view all threads in comp.lang.tcl
Re: How to simulate a 'shift click'
Posted by Ian <gay@sfuu.ca> 1 month 1 week ago

Helmut Giese wrote:

> Hello out there,
> I can simulate a simple click but fail at a 'shift click'.
> Below is what I tried:
> ---
> package require Tk
> foreach ch [winfo children "."] {destroy $ch}
> 
> # create a test app
> set btn [ttk::button .btn -text "Press me"]
> pack $btn
> # add some bindings
> bind $btn <Button-1> {puts "Simple click"}
> bind $btn <Shift-Button-1> {puts "Shift click"}
> 
> focus $btn
> set x [winfo x $btn] ; set y [winfo y $btn]
> # place the mouse
> event generate "." <Motion>  -x [incr x 50] -y [incr y 10] -warp 1
> 
> event generate $btn <ButtonPress-1>
> after 100 ; event generate $btn <ButtonRelease-1>
> 
> # now a 'shift click'
> if 1 {
> event generate $btn <KeyPress> -keysym Shift_L
> } else {
> event generate $btn <Key-Shift_L>
> }
> event generate $btn <ButtonPress-1>
> after 100 ; event generate $btn <ButtonRelease-1>
> event generate $btn <KeyRelease> -keysym Shift_L
> ---
> All I ever get is twice 'Simple click' - no matter whether I use
> <Key-Shift_L>  or the longer form, wether I generate the keypress for
> $btn or  ".". I am out of ideas what to try next.
> Any help will be greatly appreciated
> Helmut.
> PS: This is on Windows with Tcl 8.6.10

Have you tried using the -state parameter to event generate?

-- 
*********** To reply by e-mail, make w single in address **************

Click on article to view all threads in comp.lang.tcl
Re: How to simulate a 'shift click'
Posted by Helmut Giese <hgiese@ratiosoft.com> 1 month 1 week ago

Hello Ian,
>
>Have you tried using the -state parameter to event generate?

yeah, that did the trick. You're a genius :), many thanks
Helmut

Click on article to view all threads in comp.lang.tcl