… | |
… | |
301 | $self->{need_update} = 1; |
301 | $self->{need_update} = 1; |
302 | $self->SUPER::update; |
302 | $self->SUPER::update; |
303 | } |
303 | } |
304 | |
304 | |
305 | my %DIR = ( |
305 | my %DIR = ( |
306 | CFPlus::SDLK_KP5, [0, "stay fire"], |
306 | ( "," . CFPlus::SDLK_KP5 ), [0, "stay fire"], |
307 | CFPlus::SDLK_KP8, [1, "north"], |
307 | ( "," . CFPlus::SDLK_KP8 ), [1, "north"], |
308 | CFPlus::SDLK_KP9, [2, "northeast"], |
308 | ( "," . CFPlus::SDLK_KP9 ), [2, "northeast"], |
309 | CFPlus::SDLK_KP6, [3, "east"], |
309 | ( "," . CFPlus::SDLK_KP6 ), [3, "east"], |
310 | CFPlus::SDLK_KP3, [4, "southeast"], |
310 | ( "," . CFPlus::SDLK_KP3 ), [4, "southeast"], |
311 | CFPlus::SDLK_KP2, [5, "south"], |
311 | ( "," . CFPlus::SDLK_KP2 ), [5, "south"], |
312 | CFPlus::SDLK_KP1, [6, "southwest"], |
312 | ( "," . CFPlus::SDLK_KP1 ), [6, "southwest"], |
313 | CFPlus::SDLK_KP4, [7, "west"], |
313 | ( "," . CFPlus::SDLK_KP4 ), [7, "west"], |
314 | CFPlus::SDLK_KP7, [8, "northwest"], |
314 | ( "," . CFPlus::SDLK_KP7 ), [8, "northwest"], |
315 | |
315 | |
316 | CFPlus::SDLK_UP, [1, "north"], |
316 | ( "," . CFPlus::SDLK_UP ), [1, "north"], |
|
|
317 | ("1," . CFPlus::SDLK_UP ), [2, "northeast"], |
317 | CFPlus::SDLK_RIGHT, [3, "east"], |
318 | ( "," . CFPlus::SDLK_RIGHT), [3, "east"], |
|
|
319 | ("1," . CFPlus::SDLK_RIGHT), [4, "southeast"], |
318 | CFPlus::SDLK_DOWN, [5, "south"], |
320 | ( "," . CFPlus::SDLK_DOWN ), [5, "south"], |
|
|
321 | ("1," . CFPlus::SDLK_DOWN ), [6, "southwest"], |
319 | CFPlus::SDLK_LEFT, [7, "west"], |
322 | ( "," . CFPlus::SDLK_LEFT ), [7, "west"], |
|
|
323 | ("1," . CFPlus::SDLK_LEFT ), [8, "northwest"], |
320 | ); |
324 | ); |
321 | |
325 | |
322 | sub invoke_key_down { |
326 | sub invoke_key_down { |
323 | my ($self, $ev) = @_; |
327 | my ($self, $ev) = @_; |
324 | |
328 | |
… | |
… | |
367 | $self->{completer}->set_prefix ("$::CFG->{say_command} "); |
371 | $self->{completer}->set_prefix ("$::CFG->{say_command} "); |
368 | $self->{completer}->show; |
372 | $self->{completer}->show; |
369 | } elsif ($uni == ord "'") { |
373 | } elsif ($uni == ord "'") { |
370 | $self->{completer}->set_prefix (""); |
374 | $self->{completer}->set_prefix (""); |
371 | $self->{completer}->show; |
375 | $self->{completer}->show; |
372 | } elsif (exists $DIR{$sym}) { |
376 | } elsif (my $dir = $DIR{(!!($mod & CFPlus::KMOD_ALT)) . ",$sym"}) { |
373 | if ($mod & CFPlus::KMOD_SHIFT) { |
377 | if ($mod & CFPlus::KMOD_SHIFT) { |
374 | $self->{shft}++; |
378 | $self->{shft}++; |
375 | if ($DIR{$sym}[0] != $self->{fire_dir}) { |
379 | if ($dir->[0] != $self->{fire_dir}) { |
376 | $::CONN->user_send ("fire $DIR{$sym}[0]"); |
380 | $::CONN->user_send ("fire $dir->[0]"); |
377 | } |
381 | } |
378 | $self->{fire_dir} = $DIR{$sym}[0]; |
382 | $self->{fire_dir} = $DIR{$sym}[0]; |
379 | } elsif ($mod & CFPlus::KMOD_CTRL) { |
383 | } elsif ($mod & CFPlus::KMOD_CTRL) { |
380 | $self->{ctrl}++; |
384 | $self->{ctrl}++; |
381 | $::CONN->user_send ("run $DIR{$sym}[0]"); |
385 | $::CONN->user_send ("run $dir->[0]"); |
382 | } else { |
386 | } else { |
383 | $::CONN->user_send ("$DIR{$sym}[1]"); |
387 | $::CONN->user_send ("$dir->[1]"); |
384 | } |
388 | } |
385 | } elsif ((ord 'a') <= $uni && $uni <= (ord 'z')) { |
389 | } elsif ((ord 'a') <= $uni && $uni <= (ord 'z')) { |
386 | $self->{completer}->inject_key_down ($ev); |
390 | $self->{completer}->inject_key_down ($ev); |
387 | $self->{completer}->show; |
391 | $self->{completer}->show; |
388 | } else { |
392 | } else { |