diff --git a/project.godot b/project.godot index ae55de6..6b2ef64 100644 --- a/project.godot +++ b/project.godot @@ -54,11 +54,6 @@ reset_animations={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194340,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) ] } -swap_layout={ -"deadzone": 0.2, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194332,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) -] -} [physics] diff --git a/scripts/game_keyboard.gd b/scripts/game_keyboard.gd index 343d404..83d4914 100644 --- a/scripts/game_keyboard.gd +++ b/scripts/game_keyboard.gd @@ -48,20 +48,27 @@ func _unhandled_input(event: InputEvent) -> void: _rot_sod = SecondOrderDynamics.new(_rot_sod_fzr, _default_position) return - if event.is_action_pressed("swap_layout") and LayoutConfig.is_configuring: - _swap_layout() - return - if event is not InputEventKey: return var event_key := event as InputEventKey + if event_key.echo: + return + + if ( + event_key.is_pressed() + and LayoutConfig.is_configuring + and event_key.physical_keycode >= KEY_KP_0 + and event_key.physical_keycode <= KEY_KP_9 + ): + _swap_layout(event_key.physical_keycode) + return + var keycode := event_key.get_physical_keycode_with_modifiers() if ( event_key.is_pressed() - and not event_key.echo and (keycode == KEY_SHIFT | KEY_MASK_ALT or keycode == KEY_ALT | KEY_MASK_SHIFT) ): alt_layout = not alt_layout @@ -147,19 +154,21 @@ func _get_row_key_step(key_props: KeyProps) -> float: #region layout swapping -func _swap_layout() -> void: - _play_sfx(_layout_swap_sfx) - if LayoutConfig.current_layout is LayoutANSI: +func _swap_layout(kp_key: Key) -> void: + if kp_key == KEY_KP_1: + LayoutConfig.swap_layout(LayoutANSI.name_static()) + elif kp_key == KEY_KP_2: LayoutConfig.swap_layout(LayoutANSIVariant.name_static()) - elif LayoutConfig.current_layout is LayoutANSIVariant: + elif kp_key == KEY_KP_3: LayoutConfig.swap_layout(LayoutISO.name_static()) - elif LayoutConfig.current_layout is LayoutISO: + elif kp_key == KEY_KP_4: LayoutConfig.swap_layout(LayoutJD40.name_static()) - elif LayoutConfig.current_layout is LayoutJD40: + elif kp_key == KEY_KP_5: LayoutConfig.swap_layout(LayoutPlanck.name_static()) else: - LayoutConfig.swap_layout(LayoutANSI.name_static()) + return _regenerate_keys(LayoutConfig.layout_rows) + _play_sfx(_layout_swap_sfx) func _regenerate_keys(layout_rows: Array[Array]) -> void: