This is a sample implementation of tkevent, as specified in an upcoming TIP.
proc tkevent_cmd {cmd ev} {
{*}$cmd [dict filter $ev script {k v} {expr {$v != "??"}} ]
}
set tkevent_dict {
-serial %# -above %a -button %b
-count %c -detail %d -focus %f
-height %h -windowid %i -keycode %k
-mode %m -override %o
-place %p -state %s -time %t
-width %w -x %x -y %y
-character %A -borderwidth %B -delta %D
-sendevent %E -keysym %K -keysym_num %N
-property %P -root %R -subwindow %S
-type %T -window %W -rootx %X
-rooty %Y}
proc tkevent {wid evt cmd} {
bind $wid $evt [list tkevent_cmd $cmd [concat event $evt $::tkevent_dict]]
}Example:
label .l -text "Press me"
pack .l
tkevent .l <1> callback
proc callback {e} {
puts "event x is is [dict get $e -x]"
}