in reply to Re^3: Tk: Binding Keys to events
in thread Tk: Binding Keys to events
No, there's no way to do it using multiple keypresses (that I'm aware of). And even if you could, there would be a problem when you held the 2 keys down, and relied on key repeats; whichever key you pressed "last" will dictate the direction that the object moves in.
You can try it yourself by holding down the left and up arrow, for example; the initial movement might appear to be a "wobbly" northwest movement, but after the repeat kicks in, the square will only move left or up.
My recommendation would be to assign a completely different set of keys. For example, you could use the 8 keys centered around the "k":
my $pbindings = { 'Key-j' => sub { $c->move($rect, -5, 0) }, 'Key-l' => sub { $c->move($rect, 5, 0) }, 'Key-i' => sub { $c->move($rect, 0, -5) }, 'comma' => sub { $c->move($rect, 0, 5) }, 'Key-u' => sub { $c->move($rect, -5, -5) }, 'Key-o' => sub { $c->move($rect, 5, -5) }, 'Key-m' => sub { $c->move($rect, -5, 5) }, 'period' => sub { $c->move($rect, 5, 5) }, }; + map { $mw->bind("<$_>" => $pbindings->{$_}) } (keys %$pbindings);
|
|---|