237 |
|
|
238 |
my $event = $self->event || confess "no event?"; |
my $event = $self->event || confess "no event?"; |
239 |
|
|
240 |
$event->poll || return $pending_key; |
if ( ! $event->poll ) { |
241 |
|
if ( my $h = $self->session_event('key_pressed') ) { |
242 |
|
my ( $key, $state ) = %$h; |
243 |
|
if ( $state ) { |
244 |
|
$pending_key = $key; |
245 |
|
} else { |
246 |
|
undef $pending_key; |
247 |
|
} |
248 |
|
} |
249 |
|
return $pending_key; |
250 |
|
} |
251 |
|
|
252 |
my $type = $event->type(); |
my $type = $event->type(); |
253 |
|
|
265 |
} else { |
} else { |
266 |
warn "SDL_KEYDOWN ($type) = '$k'", $just_checking ? ' fake' : '', "\n"; |
warn "SDL_KEYDOWN ($type) = '$k'", $just_checking ? ' fake' : '', "\n"; |
267 |
$pending_key = $k; |
$pending_key = $k; |
268 |
|
$self->record_session('key_pressed', { $k => 1 }); |
269 |
} |
} |
270 |
} elsif ( $type == SDL_KEYUP ) { |
} elsif ( $type == SDL_KEYUP ) { |
271 |
my $up = $event->key_name(); |
my $up = $event->key_name(); |
|
$key_down->{$up} = 0; |
|
272 |
warn "SDL_KEYUP ($type) = '$up'", $just_checking ? ' fake' : '', "\n"; |
warn "SDL_KEYUP ($type) = '$up'", $just_checking ? ' fake' : '', "\n"; |
273 |
|
$self->record_session('key_pressed', { $up => 0 }); |
274 |
|
$key_down->{$up} = 0; |
275 |
undef $pending_key; |
undef $pending_key; |
276 |
} |
} |
277 |
|
|
278 |
if ( $pending_key ) { |
warn "key_pressed = $pending_key\n" if ( $pending_key ); |
|
warn "key_pressed = $pending_key\n"; |
|
|
$self->record_session('key_pressed', $pending_key); |
|
|
} |
|
279 |
|
|
280 |
return $pending_key; |
return $pending_key; |
281 |
} |
} |