Closed lasers closed 7 years ago
How to report a bug Open a new bug report for each issue!
Only so an effective bugfix-workflow will be possible. Other details you should heed
Figure out the steps to reproduce a bug:
Make sure your software is up to date. Ideally, test an in-development version to see whether your bug has already been fixed (bleeding-edge Nightly).
When reporting a RetroArch bug, first check if you can reproduce the bug with a clean config. If the bug only happens in your existing conft, try to figure out what settings in your config are needed to reproduce the bug.
Create an issue:
Writing a clear summary
How would you describe the bug using approximately 10 words? This is the first part of your bug report a triager or developer will see.
A good summary should quickly and uniquely identify a bug report. It should explain the problem, not your suggested solution.
Writing precise steps to reproduce
How can a developer reproduce the bug on his or her own computer?
Steps to reproduce are the most important part of any bug report. If a developer is able to reproduce the bug, the bug is very likely to be fixed. If the steps are unclear, it might not even be possible to know whether the bug has been fixed.
Bad examples of it:
"It doesn't work"
How to report a bug Open a new bug report for each issue!
I filed a regression bug instead of burying it with other possible bugs. If you don't see this bug, I can put it in my possible bugs/improvements thread for you to find it again later as I don't want to make too many individual requests/suggestions.
Only so an effective bugfix-workflow will be possible. Other details you should heed Figure out the steps to reproduce a bug:
Update git. Compile retroarch. Run retroarch. Use keyboard to navigate. Recognize the problem immediately.
If you have precise steps to reproduce - great! - you're on your way to reporting a useful bug report;
I hope so. I'm revising this bug report into an useful one.
If you can reproduce occasionally, but not after following specific steps, you must provide additional information for the bug to be useful;
I reproduce this repeatedly with the latest retroarch changes.
If you can't reproduce the problem, there's probably no use in reporting it, unless you provide unique information about its occurrence;
You don't see this? Am I crazy? My keyboard is not broken.
Make sure your software is up to date. Ideally, test an in-development version to see whether your bug has already been fixed (bleeding-edge Nightly).
I do not have this problem with stable retroarch.
I am using in-development version for lulz and giggles and to help libretro team by reporting bugs like this one. I also believe the bug hasn't been fixed as it have been like this for only a day or two... so I filed a regression bug.
When reporting a RetroArch bug, first check if you can reproduce the bug with a clean config. If the bug only happens in your existing conft, try to figure out what settings in your config are needed to reproduce the bug.
There might be a typo bug in this sentence. conft. Is that short for configuration too? Regression bug also confirmed with a clean config.
If the bug seems egregious (i.e. obviously affecting a large portion of users), there's probably something unusual about your setup that's a necessary part of the steps to reproduce the bug. You have much better chances of figuring it out than a developer who does not have access to your system.
I don't think there is something unusual about my setup. I have a keyboard, a trackball, and few controllers.
Create an issue
- Enter a clear unique summary as described below; check if the bug has already been reported
- Provide precise steps to reproduce, expected results and actual results as described in the following section;
- Provide additional information (also described below), especially if you can't reproduce in a new profile and/or reporting a crash, memory usage, * performance, regression bug or if the problem is with specific core.
- If you have multiple issues, please file separate bug reports.
I don't think the bug has already been reported as this has been like this for a day or two. I figure I would wait a bit to allow the libretro team to deal with the new menu input changes.
It seems like they're done with that part for now so I am the first to report this bug. I expect RetroArch to simply obey my keyboard inputs without any problems and it's not doing that right now therefore it must be a bug in the code. I can reproduce it in a new config too.
Writing a clear summary How would you describe the bug using approximately 10 words? This is the first part of your bug report a triager or developer will see.
The keyboard does not work correctly with the latest RetroArch. I only can go right or down.
A good summary should quickly and uniquely identify a bug report. It should explain the problem, not your suggested solution.
I explained the problem without suggesting anything.
Writing precise steps to reproduce How can a developer reproduce the bug on his or her own computer?
Update git. Compile retroarch. Run retroarch. Use keyboard to navgiate. Recognize the problem immediately.
Steps to reproduce are the most important part of any bug report. If a developer is able to reproduce the bug, the bug is very likely to be fixed. If the steps are unclear, it might not even be possible to know whether the bug has been fixed.
Bad examples of it:
"It doesn't work"
Believe me you. It doesn't work for days.
it is working fine for us.
I'm not trolling anybody though.
Nobody said you were, I'm not trolling either,
(((REGRESSION))) Bring back the keyboard The keyboard does not work correctly with the latest RetroArch. I only can go right or down.
Doesn't have enough information for us to do anything about it.
Run retroarch. Use keyboard to navgiate. Recognize the problem immediately.
That's the problem right there. I don't have much to go with.
We still don't even know your platform. We don't know what input driver you use, what OS you use, what GIT revision are you running.
I didn't post the "reporting bugs guide" to troll you
udev (iirc), Arch Linux, latest RetroArch.
RetroArch: Frontend for libretro -- v1.3.6 -- 4efedd2 --
Compiler: GCC (6.2.1) 64-bitBuilt: Nov 3 2016
I didn't make this post to troll libretro team.
The arrows, enter, esc, backspace, space and shift that are the keys used to navigate the GUI are working fine in that commit for me in Windows.
Twinaphex is in arch linux and he tested just now. It's working for him too.
Well, I waited for a day or two because I can't do anything with broken keyboard input. I assume it would be fixed not too long after. I don't know what to tell you. 😢
Check with a clean config I guess, @twinaphex and @Kivutar confirmed it working fine on linux
Confirmed above.
Regression bug also confirmed with a clean config.
Well no-one else has managed to reproduce. I'll reopen but it's unconfirmed.
Nothing has changed that could cause this so I suspect the issue is in your end
Okay. Thanks. Also, can twinaphex and Kivutar confirm my black boxes for content tabs bug too while they're at it?
Going out right now for quick errands. I will try figuring how to use git bisect and troubleshoot some more when I get back later. It works fine few days ago. My setup is same as before. I suspect the issue is related to the latest input changes.
You get those black boxes because you need to update retroarch-assets, new asset files got added.
Run ./libretro-fetch.sh retroarch if you're using libretro-super (if not, you should).
I'm using builtin "Update Assets". Here's the photos. https://github.com/libretro/retroarch-assets/issues/46
I suspect the issues are related to custom paths.
# Keep all played content in the menu and from CLI directly for convenient quick loading.
content_history_path = "~/.config/retroarch/playlists/content_history.lpl"
content_music_history_path = "~/.config/retroarch/playlists/content_music_history.lpl"
content_image_history_path = "~/.config/retroarch/playlists/content_image_history.lpl"
content_video_history_path = "~/.config/retroarch/playlists/content_video_history.lpl"
I will include that in my issue as I'm not able to get a confirmation from somebody else in the forum.
The keyboard is still broken with libretro-super.
None of those paths would affect assets.
Nobody can reproduce these issues. Maybe you have a weird keyboard layout set that we don't. Either way, these issues smack of misconfiguration to me.
If I don't use content_paths, I can see the images just fine. I always can take a screenshot showing you that the assets worked fine. The black box issue will occur when you're using custom paths. I can confirm this bug in 80d2376 too.
Also, I hope I don't have configuration blindness yet because I don't see a way to set up custom paths for those content playlists in the GUI. I did it via retroarch.cfg
I have Poker2 keyboard. The up/left arrows stopped working. It can't be a misconfiguration because it's still occurring with clean config under latest retroarch. The up/left arrows also works fine everywhere outside of retroarch. It is somewhere in the code.
unless you can bisect and find out were it broke we can't "fix" it since none of us can reproduce.
commit 2091c4cc2f5bfeaf60afb1bbf7ef13d3ad5fea2b
Two days ago! Like I mentioned... And I found out something else... I think I know why you guys couldn't reproduce this issue.
WORKAROUND SOLUTION: PLUG IN THE (((DRM))) CONTROLLER.
I think I found the culprit... You know how plugging in a controller sometimes could report wacky events right away? Well, it's like this... having a controller hotplugged could cause odd behavior for the keyboard.
I assume it had to do something with deadzone because when the controllers are plugged in and not being used, it still could report wacky events.
I also assume RetroArch have something to deal with that, but with the new "Left analog stick controls the menu now" changes, that "something" is also gimping the keyboard.
With RetroArch 1.3.6, I am no longer able to properly navigate rgui via keyboard. I can scroll up and down but can not select any of the options and the enter key causes rgui to crash. Below is my /opt/retropie/configs/all/retroarch.cfg configuration:
cache_directory = "/tmp/retroarch" core_options_path = "/opt/retropie/configs/all/retroarch-core-options.cfg" system_directory = "~/RetroPie/BIOS" assets_directory = "/opt/retropie/emulators/retroarch/assets" config_save_on_exit = "false" video_threaded = "true" video_smooth = "false" video_aspect_ratio_auto = "true" video_shader_dir = "/opt/retropie/emulators/retroarch/shader/" video_font_size = "20.000000" overlay_directory = "/opt/retropie/emulators/retroarch/overlays" input_joypad_driver = "udev" input_autodetect_enable = "true" joypad_autoconfig_dir = "/opt/retropie/configs/all/retroarch-joypads/" input_player1_a = "z" input_player1_b = "x" input_player1_y = "a" input_player1_x = "s" input_player1_start = "enter" input_player1_select = "alt" input_player1_l = "e" input_player1_r = "r" input_player1_left = "left" input_player1_right = "right" input_player1_up = "up" input_player1_down = "down" input_player1_l2 = "q" input_player1_r2 = "w" input_save_state = "up" input_load_state = "down" input_state_slot_increase = "right" input_state_slot_decrease = "left" input_exit_emulator = "enter" input_shader_next = "m" input_shader_prev = "n" input_rewind = "r" input_reset = "x" input_menu_toggle = "s" rewind_enable = "false" rewind_buffer_size = "10" rewind_granularity = "2" video_gpu_screenshot = "true" input_enable_hotkey = "alt" auto_remaps_enable = "true" input_bind_timeout = "5" input_turbo_period = "6" input_duty_cycle = "3" input_max_users = "5" input_menu_toggle_gamepad_combo = "0" input_axis_threshold = "0.500000" ui_companion_start_on_boot = "true" ui_companion_enable = "false" video_gpu_record = "false" input_remap_binds_enable = "true" back_as_menu_toggle_enable = "true" netplay_client_swap_input = "true" input_descriptor_label_show = "true" input_descriptor_hide_unbound = "false" load_dummy_on_core_shutdown = "true" builtin_mediaplayer_enable = "false" builtin_imageviewer_enable = "true" fps_show = "false" ui_menubar_enable = "true" suspend_screensaver_enable = "true" libretro_directory = "~/.config/retroarch/cores" libretro_info_path = "~/.config/retroarch/cores" content_database_path = "~/.config/retroarch/database/rdb" cheat_database_path = "~/.config/retroarch/cheats" menu_wallpaper_opacity = "0.300000" menu_footer_opacity = "1.000000" menu_header_opacity = "1.000000" content_history_path = "/opt/retropie/configs/all/content_history.lpl" cursor_directory = "~/.config/retroarch/database/cursors" audio_latency = "64" audio_sync = "true" audio_block_frames = "0" video_shader_enable = "false" video_aspect_ratio = "-1.000000" video_windowed_fullscreen = "true" video_scale = "3.000000" autosave_interval = "0" video_crop_overscan = "true" video_scale_integer = "false" video_shared_context = "false" video_force_srgb_disable = "false" video_fullscreen = "false" bundle_assets_extract_enable = "false" bundle_assets_extract_version_current = "0" bundle_assets_extract_last_version = "0" video_refresh_rate = "59.950001" video_monitor_index = "0" video_fullscreen_x = "320" video_fullscreen_y = "240" video_driver = "gl" record_driver = "null" camera_driver = "null" location_driver = "null" threaded_data_runloop_enable = "true" menu_throttle_framerate = "true" menu_linear_filter = "true" dpi_override_enable = "true" dpi_override_value = "200" menu_driver = "rgui" menu_pause_libretro = "true" menu_mouse_enable = "false" menu_pointer_enable = "false" menu_timedate_enable = "true" menu_core_enable = "true" menu_dynamic_wallpaper_enable = "false" menu_thumbnails = "3" video_vsync = "true" video_max_swapchain_images = "3" video_hard_sync = "false" video_hard_sync_frames = "0" video_frame_delay = "0" video_black_frame_insertion = "false" video_disable_composition = "false" pause_nonactive = "true" video_swap_interval = "1" video_rotation = "0" screenshot_directory = "~/.config/retroarch/screenshots" auto_screenshot_filename = "true" aspect_ratio_index = "21" core_updater_buildbot_assets_url = "http://buildbot.libretro.com/assets/" core_updater_auto_extract_archive = "true" camera_allow = "false" cheevos_enable = "false" cheevos_test_unofficial = "false" cheevos_hardcore_mode_enable = "false" audio_rate_control = "true" audio_rate_control_delta = "0.005000" audio_max_timing_skew = "0.050000" audio_volume = "12.000000" audio_driver = "alsathread" audio_enable = "true" audio_mute_enable = "false" audio_out_rate = "48000" location_allow = "false" video_font_enable = "true" video_message_color = "ffff00" ups_pref = "false" bps_pref = "false" ips_pref = "false" input_remapping_directory = "~/.config/retroarch/config/remaps" video_filter_dir = "default" core_assets_directory = "~/.config/retroarch/downloads" dynamic_wallpapers_directory = "default" thumbnails_directory = "~/.config/retroarch/thumbnails" playlist_directory = "~/.config/retroarch/playlists" rgui_browser_directory = "default" rgui_config_directory = "~/.config/retroarch/config" audio_filter_dir = "default" audio_resampler = "sinc" savefile_directory = "default" savestate_directory = "default" xmb_scale_factor = "100" xmb_alpha_factor = "75" xmb_theme = "0" xmb_menu_color_theme = "4" materialui_menu_color_theme = "0" xmb_shadows_enable = "true" menu_shader_pipeline = "1" rgui_show_start_screen = "false" menu_navigation_wraparound_enable = "true" menu_navigation_browser_filter_supported_extensions_enable = "true" menu_show_advanced_settings = "true" menu_entry_normal_color = "ffffffff" menu_entry_hover_color = "ff64ff64" menu_title_color = "ff64ff64" content_history_size = "100" input_overlay_enable = "true" input_overlay_enable_autopreferred = "true" input_overlay_hide_in_menu = "true" input_overlay_opacity = "0.700000" input_overlay_scale = "1.000000" osk_overlay_directory = "~/.config/retroarch/overlay" input_osk_overlay_enable = "true" video_message_pos_x = "0.050000" video_message_pos_y = "0.050000" custom_viewport_width = "720" custom_viewport_height = "480" custom_viewport_x = "0" custom_viewport_y = "0" gamma_correction = "false" flicker_filter_enable = "false" soft_filter_enable = "false" soft_filter_index = "0" current_resolution_id = "0" flicker_filter_index = "0" block_sram_overwrite = "false" savestate_auto_index = "false" savestate_auto_save = "false" savestate_auto_load = "false" history_list_enable = "true" network_cmd_enable = "false" stdin_cmd_enable = "false" network_cmd_port = "55355" fastforward_ratio = "0.000000" slowmotion_ratio = "3.000000" state_slot = "0" netplay_spectator_mode_enable = "false" netplay_mode = "false" netplay_ip_port = "0" netplay_delay_frames = "0" user_language = "0" custom_bgm_enable = "false" input_driver = "udev" input_device_p1 = "0" input_player1_joypad_index = "0" input_libretro_device_p1 = "1" input_player1_analog_dpad_mode = "0" input_device_p2 = "0" input_player2_joypad_index = "1" input_libretro_device_p2 = "1" input_player2_analog_dpad_mode = "0" input_device_p3 = "0" input_player3_joypad_index = "2" input_libretro_device_p3 = "1" input_player3_analog_dpad_mode = "0" input_device_p4 = "0" input_player4_joypad_index = "3" input_libretro_device_p4 = "1" input_player4_analog_dpad_mode = "0" input_device_p5 = "0" input_player5_joypad_index = "4" input_libretro_device_p5 = "1" input_player5_analog_dpad_mode = "0" input_device_p6 = "0" input_player6_joypad_index = "5" input_libretro_device_p6 = "1" input_player6_analog_dpad_mode = "0" input_device_p7 = "0" input_player7_joypad_index = "6" input_libretro_device_p7 = "1" input_player7_analog_dpad_mode = "0" input_device_p8 = "0" input_player8_joypad_index = "7" input_libretro_device_p8 = "1" input_player8_analog_dpad_mode = "0" input_device_p9 = "0" input_player9_joypad_index = "8" input_libretro_device_p9 = "1" input_player9_analog_dpad_mode = "0" input_device_p10 = "0" input_player10_joypad_index = "9" input_libretro_device_p10 = "1" input_player10_analog_dpad_mode = "0" input_device_p11 = "0" input_player11_joypad_index = "10" input_libretro_device_p11 = "1" input_player11_analog_dpad_mode = "0" input_device_p12 = "0" input_player12_joypad_index = "11" input_libretro_device_p12 = "1" input_player12_analog_dpad_mode = "0" input_device_p13 = "0" input_player13_joypad_index = "12" input_libretro_device_p13 = "1" input_player13_analog_dpad_mode = "0" input_device_p14 = "0" input_player14_joypad_index = "13" input_libretro_device_p14 = "1" input_player14_analog_dpad_mode = "0" input_device_p15 = "0" input_player15_joypad_index = "14" input_libretro_device_p15 = "1" input_player15_analog_dpad_mode = "0" input_device_p16 = "0" input_player16_joypad_index = "15" input_libretro_device_p16 = "1" input_player16_analog_dpad_mode = "0" network_remote_enable_user_p1 = "false" network_remote_enable_user_p2 = "false" network_remote_enable_user_p3 = "false" network_remote_enable_user_p4 = "false" network_remote_enable_user_p5 = "false" network_remote_enable_user_p6 = "false" network_remote_enable_user_p7 = "false" network_remote_enable_user_p8 = "false" network_remote_enable_user_p9 = "false" network_remote_enable_user_p10 = "false" network_remote_enable_user_p11 = "false" network_remote_enable_user_p12 = "false" network_remote_enable_user_p13 = "false" network_remote_enable_user_p14 = "false" network_remote_enable_user_p15 = "false" network_remote_enable_user_p16 = "false" network_remote_enable = "false" network_remote_base_port = "55400" input_player1_b_btn = "nul" input_player1_b_axis = "nul" input_player1_y_btn = "nul" input_player1_y_axis = "nul" input_player1_select_btn = "nul" input_player1_select_axis = "nul" input_player1_start_btn = "nul" input_player1_start_axis = "nul" input_player1_up_btn = "nul" input_player1_up_axis = "nul" input_player1_down_btn = "nul" input_player1_down_axis = "nul" input_player1_left_btn = "nul" input_player1_left_axis = "nul" input_player1_right_btn = "nul" input_player1_right_axis = "nul" input_player1_a_btn = "nul" input_player1_a_axis = "nul" input_player1_x_btn = "nul" input_player1_x_axis = "nul" input_player1_l_btn = "nul" input_player1_l_axis = "nul" input_player1_r_btn = "nul" input_player1_r_axis = "nul" input_player1_l2_btn = "nul" input_player1_l2_axis = "nul" input_player1_r2_btn = "nul" input_player1_r2_axis = "nul" input_player1_l3 = "nul" input_player1_l3_btn = "nul" input_player1_l3_axis = "nul" input_player1_r3 = "nul" input_player1_r3_btn = "nul" input_player1_r3_axis = "nul" input_player1_l_x_plus = "nul" input_player1_l_x_plus_btn = "nul" input_player1_l_x_plus_axis = "nul" input_player1_l_x_minus = "nul" input_player1_l_x_minus_btn = "nul" input_player1_l_x_minus_axis = "nul" input_player1_l_y_plus = "nul" input_player1_l_y_plus_btn = "nul" input_player1_l_y_plus_axis = "nul" input_player1_l_y_minus = "nul" input_player1_l_y_minus_btn = "nul" input_player1_l_y_minus_axis = "nul" input_player1_r_x_plus = "nul" input_player1_r_x_plus_btn = "nul" input_player1_r_x_plus_axis = "nul" input_player1_r_x_minus = "nul" input_player1_r_x_minus_btn = "nul" input_player1_r_x_minus_axis = "nul" input_player1_r_y_plus = "nul" input_player1_r_y_plus_btn = "nul" input_player1_r_y_plus_axis = "nul" input_player1_r_y_minus = "nul" input_player1_r_y_minus_btn = "nul" input_player1_r_y_minus_axis = "nul" input_player1_turbo = "nul" input_player1_turbo_btn = "nul" input_player1_turbo_axis = "nul" input_toggle_fast_forward = "space" input_toggle_fast_forward_btn = "nul" input_toggle_fast_forward_axis = "nul" input_hold_fast_forward = "l" input_hold_fast_forward_btn = "nul" input_hold_fast_forward_axis = "nul" input_load_state_btn = "nul" input_load_state_axis = "nul" input_save_state_btn = "nul" input_save_state_axis = "nul" input_toggle_fullscreen = "f" input_toggle_fullscreen_btn = "nul" input_toggle_fullscreen_axis = "nul" input_exit_emulator_btn = "nul" input_exit_emulator_axis = "nul" input_state_slot_increase_btn = "nul" input_state_slot_increase_axis = "nul" input_state_slot_decrease_btn = "nul" input_state_slot_decrease_axis = "nul" input_rewind_btn = "nul" input_rewind_axis = "nul" input_movie_record_toggle = "o" input_movie_record_toggle_btn = "nul" input_movie_record_toggle_axis = "nul" input_pause_toggle = "p" input_pause_toggle_btn = "nul" input_pause_toggle_axis = "nul" input_frame_advance = "k" input_frame_advance_btn = "nul" input_frame_advance_axis = "nul" input_reset_btn = "nul" input_reset_axis = "nul" input_shader_next_btn = "nul" input_shader_next_axis = "nul" input_shader_prev_btn = "nul" input_shader_prev_axis = "nul" input_cheat_index_plus = "y" input_cheat_index_plus_btn = "nul" input_cheat_index_plus_axis = "nul" input_cheat_index_minus = "t" input_cheat_index_minus_btn = "nul" input_cheat_index_minus_axis = "nul" input_cheat_toggle = "u" input_cheat_toggle_btn = "nul" input_cheat_toggle_axis = "nul" input_screenshot = "f8" input_screenshot_btn = "nul" input_screenshot_axis = "nul" input_audio_mute = "f9" input_audio_mute_btn = "nul" input_audio_mute_axis = "nul" input_osk_toggle = "f12" input_osk_toggle_btn = "nul" input_osk_toggle_axis = "nul" input_netplay_flip_players = "i" input_netplay_flip_players_btn = "nul" input_netplay_flip_players_axis = "nul" input_slowmotion = "e" input_slowmotion_btn = "nul" input_slowmotion_axis = "nul" input_enable_hotkey_btn = "nul" input_enable_hotkey_axis = "nul" input_volume_up = "add" input_volume_up_btn = "nul" input_volume_up_axis = "nul" input_volume_down = "subtract" input_volume_down_btn = "nul" input_volume_down_axis = "nul" input_overlay_next = "nul" input_overlay_next_btn = "nul" input_overlay_next_axis = "nul" input_disk_eject_toggle = "nul" input_disk_eject_toggle_btn = "nul" input_disk_eject_toggle_axis = "nul" input_disk_next = "nul" input_disk_next_btn = "nul" input_disk_next_axis = "nul" input_disk_prev = "nul" input_disk_prev_btn = "nul" input_disk_prev_axis = "nul" input_grab_mouse_toggle = "f11" input_grab_mouse_toggle_btn = "nul" input_grab_mouse_toggle_axis = "nul" input_menu_toggle_btn = "nul" input_menu_toggle_axis = "nul" input_player2_b = "nul" input_player2_b_btn = "nul" input_player2_b_axis = "nul" input_player2_y = "nul" input_player2_y_btn = "nul" input_player2_y_axis = "nul" input_player2_select = "nul" input_player2_select_btn = "nul" input_player2_select_axis = "nul" input_player2_start = "nul" input_player2_start_btn = "nul" input_player2_start_axis = "nul" input_player2_up = "nul" input_player2_up_btn = "nul" input_player2_up_axis = "nul" input_player2_down = "nul" input_player2_down_btn = "nul" input_player2_down_axis = "nul" input_player2_left = "nul" input_player2_left_btn = "nul" input_player2_left_axis = "nul" input_player2_right = "nul" input_player2_right_btn = "nul" input_player2_right_axis = "nul" input_player2_a = "nul" input_player2_a_btn = "nul" input_player2_a_axis = "nul" input_player2_x = "nul" input_player2_x_btn = "nul" input_player2_x_axis = "nul" input_player2_l = "nul" input_player2_l_btn = "nul" input_player2_l_axis = "nul" input_player2_r = "nul" input_player2_r_btn = "nul" input_player2_r_axis = "nul" input_player2_l2 = "nul" input_player2_l2_btn = "nul" input_player2_l2_axis = "nul" input_player2_r2 = "nul" input_player2_r2_btn = "nul" input_player2_r2_axis = "nul" input_player2_l3 = "nul" input_player2_l3_btn = "nul" input_player2_l3_axis = "nul" input_player2_r3 = "nul" input_player2_r3_btn = "nul" input_player2_r3_axis = "nul" input_player2_l_x_plus = "nul" input_player2_l_x_plus_btn = "nul" input_player2_l_x_plus_axis = "nul" input_player2_l_x_minus = "nul" input_player2_l_x_minus_btn = "nul" input_player2_l_x_minus_axis = "nul" input_player2_l_y_plus = "nul" input_player2_l_y_plus_btn = "nul" input_player2_l_y_plus_axis = "nul" input_player2_l_y_minus = "nul" input_player2_l_y_minus_btn = "nul" input_player2_l_y_minus_axis = "nul" input_player2_r_x_plus = "nul" input_player2_r_x_plus_btn = "nul" input_player2_r_x_plus_axis = "nul" input_player2_r_x_minus = "nul" input_player2_r_x_minus_btn = "nul" input_player2_r_x_minus_axis = "nul" input_player2_r_y_plus = "nul" input_player2_r_y_plus_btn = "nul" input_player2_r_y_plus_axis = "nul" input_player2_r_y_minus = "nul" input_player2_r_y_minus_btn = "nul" input_player2_r_y_minus_axis = "nul" input_player2_turbo = "nul" input_player2_turbo_btn = "nul" input_player2_turbo_axis = "nul" input_player3_b = "nul" input_player3_b_btn = "nul" input_player3_b_axis = "nul" input_player3_y = "nul" input_player3_y_btn = "nul" input_player3_y_axis = "nul" input_player3_select = "nul" input_player3_select_btn = "nul" input_player3_select_axis = "nul" input_player3_start = "nul" input_player3_start_btn = "nul" input_player3_start_axis = "nul" input_player3_up = "nul" input_player3_up_btn = "nul" input_player3_up_axis = "nul" input_player3_down = "nul" input_player3_down_btn = "nul" input_player3_down_axis = "nul" input_player3_left = "nul" input_player3_left_btn = "nul" input_player3_left_axis = "nul" input_player3_right = "nul" input_player3_right_btn = "nul" input_player3_right_axis = "nul" input_player3_a = "nul" input_player3_a_btn = "nul" input_player3_a_axis = "nul" input_player3_x = "nul" input_player3_x_btn = "nul" input_player3_x_axis = "nul" input_player3_l = "nul" input_player3_l_btn = "nul" input_player3_l_axis = "nul" input_player3_r = "nul" input_player3_r_btn = "nul" input_player3_r_axis = "nul" input_player3_l2 = "nul" input_player3_l2_btn = "nul" input_player3_l2_axis = "nul" input_player3_r2 = "nul" input_player3_r2_btn = "nul" input_player3_r2_axis = "nul" input_player3_l3 = "nul" input_player3_l3_btn = "nul" input_player3_l3_axis = "nul" input_player3_r3 = "nul" input_player3_r3_btn = "nul" input_player3_r3_axis = "nul" input_player3_l_x_plus = "nul" input_player3_l_x_plus_btn = "nul" input_player3_l_x_plus_axis = "nul" input_player3_l_x_minus = "nul" input_player3_l_x_minus_btn = "nul" input_player3_l_x_minus_axis = "nul" input_player3_l_y_plus = "nul" input_player3_l_y_plus_btn = "nul" input_player3_l_y_plus_axis = "nul" input_player3_l_y_minus = "nul" input_player3_l_y_minus_btn = "nul" input_player3_l_y_minus_axis = "nul" input_player3_r_x_plus = "nul" input_player3_r_x_plus_btn = "nul" input_player3_r_x_plus_axis = "nul" input_player3_r_x_minus = "nul" input_player3_r_x_minus_btn = "nul" input_player3_r_x_minus_axis = "nul" input_player3_r_y_plus = "nul" input_player3_r_y_plus_btn = "nul" input_player3_r_y_plus_axis = "nul" input_player3_r_y_minus = "nul" input_player3_r_y_minus_btn = "nul" input_player3_r_y_minus_axis = "nul" input_player3_turbo = "nul" input_player3_turbo_btn = "nul" input_player3_turbo_axis = "nul" input_player4_b = "nul" input_player4_b_btn = "nul" input_player4_b_axis = "nul" input_player4_y = "nul" input_player4_y_btn = "nul" input_player4_y_axis = "nul" input_player4_select = "nul" input_player4_select_btn = "nul" input_player4_select_axis = "nul" input_player4_start = "nul" input_player4_start_btn = "nul" input_player4_start_axis = "nul" input_player4_up = "nul" input_player4_up_btn = "nul" input_player4_up_axis = "nul" input_player4_down = "nul" input_player4_down_btn = "nul" input_player4_down_axis = "nul" input_player4_left = "nul" input_player4_left_btn = "nul" input_player4_left_axis = "nul" input_player4_right = "nul" input_player4_right_btn = "nul" input_player4_right_axis = "nul" input_player4_a = "nul" input_player4_a_btn = "nul" input_player4_a_axis = "nul" input_player4_x = "nul" input_player4_x_btn = "nul" input_player4_x_axis = "nul" input_player4_l = "nul" input_player4_l_btn = "nul" input_player4_l_axis = "nul" input_player4_r = "nul" input_player4_r_btn = "nul" input_player4_r_axis = "nul" input_player4_l2 = "nul" input_player4_l2_btn = "nul" input_player4_l2_axis = "nul" input_player4_r2 = "nul" input_player4_r2_btn = "nul" input_player4_r2_axis = "nul" input_player4_l3 = "nul" input_player4_l3_btn = "nul" input_player4_l3_axis = "nul" input_player4_r3 = "nul" input_player4_r3_btn = "nul" input_player4_r3_axis = "nul" input_player4_l_x_plus = "nul" input_player4_l_x_plus_btn = "nul" input_player4_l_x_plus_axis = "nul" input_player4_l_x_minus = "nul" input_player4_l_x_minus_btn = "nul" input_player4_l_x_minus_axis = "nul" input_player4_l_y_plus = "nul" input_player4_l_y_plus_btn = "nul" input_player4_l_y_plus_axis = "nul" input_player4_l_y_minus = "nul" input_player4_l_y_minus_btn = "nul" input_player4_l_y_minus_axis = "nul" input_player4_r_x_plus = "nul" input_player4_r_x_plus_btn = "nul" input_player4_r_x_plus_axis = "nul" input_player4_r_x_minus = "nul" input_player4_r_x_minus_btn = "nul" input_player4_r_x_minus_axis = "nul" input_player4_r_y_plus = "nul" input_player4_r_y_plus_btn = "nul" input_player4_r_y_plus_axis = "nul" input_player4_r_y_minus = "nul" input_player4_r_y_minus_btn = "nul" input_player4_r_y_minus_axis = "nul" input_player4_turbo = "nul" input_player4_turbo_btn = "nul" input_player4_turbo_axis = "nul" input_player5_b = "nul" input_player5_b_btn = "nul" input_player5_b_axis = "nul" input_player5_y = "nul" input_player5_y_btn = "nul" input_player5_y_axis = "nul" input_player5_select = "nul" input_player5_select_btn = "nul" input_player5_select_axis = "nul" input_player5_start = "nul" input_player5_start_btn = "nul" input_player5_start_axis = "nul" input_player5_up = "nul" input_player5_up_btn = "nul" input_player5_up_axis = "nul" input_player5_down = "nul" input_player5_down_btn = "nul" input_player5_down_axis = "nul" input_player5_left = "nul" input_player5_left_btn = "nul" input_player5_left_axis = "nul" input_player5_right = "nul" input_player5_right_btn = "nul" input_player5_right_axis = "nul" input_player5_a = "nul" input_player5_a_btn = "nul" input_player5_a_axis = "nul" input_player5_x = "nul" input_player5_x_btn = "nul" input_player5_x_axis = "nul" input_player5_l = "nul" input_player5_l_btn = "nul" input_player5_l_axis = "nul" input_player5_r = "nul" input_player5_r_btn = "nul" input_player5_r_axis = "nul" input_player5_l2 = "nul" input_player5_l2_btn = "nul" input_player5_l2_axis = "nul" input_player5_r2 = "nul" input_player5_r2_btn = "nul" input_player5_r2_axis = "nul" input_player5_l3 = "nul" input_player5_l3_btn = "nul" input_player5_l3_axis = "nul" input_player5_r3 = "nul" input_player5_r3_btn = "nul" input_player5_r3_axis = "nul" input_player5_l_x_plus = "nul" input_player5_l_x_plus_btn = "nul" input_player5_l_x_plus_axis = "nul" input_player5_l_x_minus = "nul" input_player5_l_x_minus_btn = "nul" input_player5_l_x_minus_axis = "nul" input_player5_l_y_plus = "nul" input_player5_l_y_plus_btn = "nul" input_player5_l_y_plus_axis = "nul" input_player5_l_y_minus = "nul" input_player5_l_y_minus_btn = "nul" input_player5_l_y_minus_axis = "nul" input_player5_r_x_plus = "nul" input_player5_r_x_plus_btn = "nul" input_player5_r_x_plus_axis = "nul" input_player5_r_x_minus = "nul" input_player5_r_x_minus_btn = "nul" input_player5_r_x_minus_axis = "nul" input_player5_r_y_plus = "nul" input_player5_r_y_plus_btn = "nul" input_player5_r_y_plus_axis = "nul" input_player5_r_y_minus = "nul" input_player5_r_y_minus_btn = "nul" input_player5_r_y_minus_axis = "nul" input_player5_turbo = "nul" input_player5_turbo_btn = "nul" input_player5_turbo_axis = "nul" input_player6_b = "nul" input_player6_b_btn = "nul" input_player6_b_axis = "nul" input_player6_y = "nul" input_player6_y_btn = "nul" input_player6_y_axis = "nul" input_player6_select = "nul" input_player6_select_btn = "nul" input_player6_select_axis = "nul" input_player6_start = "nul" input_player6_start_btn = "nul" input_player6_start_axis = "nul" input_player6_up = "nul" input_player6_up_btn = "nul" input_player6_up_axis = "nul" input_player6_down = "nul" input_player6_down_btn = "nul" input_player6_down_axis = "nul" input_player6_left = "nul" input_player6_left_btn = "nul" input_player6_left_axis = "nul" input_player6_right = "nul" input_player6_right_btn = "nul" input_player6_right_axis = "nul" input_player6_a = "nul" input_player6_a_btn = "nul" input_player6_a_axis = "nul" input_player6_x = "nul" input_player6_x_btn = "nul" input_player6_x_axis = "nul" input_player6_l = "nul" input_player6_l_btn = "nul" input_player6_l_axis = "nul" input_player6_r = "nul" input_player6_r_btn = "nul" input_player6_r_axis = "nul" input_player6_l2 = "nul" input_player6_l2_btn = "nul" input_player6_l2_axis = "nul" input_player6_r2 = "nul" input_player6_r2_btn = "nul" input_player6_r2_axis = "nul" input_player6_l3 = "nul" input_player6_l3_btn = "nul" input_player6_l3_axis = "nul" input_player6_r3 = "nul" input_player6_r3_btn = "nul" input_player6_r3_axis = "nul" input_player6_l_x_plus = "nul" input_player6_l_x_plus_btn = "nul" input_player6_l_x_plus_axis = "nul" input_player6_l_x_minus = "nul" input_player6_l_x_minus_btn = "nul" input_player6_l_x_minus_axis = "nul" input_player6_l_y_plus = "nul" input_player6_l_y_plus_btn = "nul" input_player6_l_y_plus_axis = "nul" input_player6_l_y_minus = "nul" input_player6_l_y_minus_btn = "nul" input_player6_l_y_minus_axis = "nul" input_player6_r_x_plus = "nul" input_player6_r_x_plus_btn = "nul" input_player6_r_x_plus_axis = "nul" input_player6_r_x_minus = "nul" input_player6_r_x_minus_btn = "nul" input_player6_r_x_minus_axis = "nul" input_player6_r_y_plus = "nul" input_player6_r_y_plus_btn = "nul" input_player6_r_y_plus_axis = "nul" input_player6_r_y_minus = "nul" input_player6_r_y_minus_btn = "nul" input_player6_r_y_minus_axis = "nul" input_player6_turbo = "nul" input_player6_turbo_btn = "nul" input_player6_turbo_axis = "nul" input_player7_b = "nul" input_player7_b_btn = "nul" input_player7_b_axis = "nul" input_player7_y = "nul" input_player7_y_btn = "nul" input_player7_y_axis = "nul" input_player7_select = "nul" input_player7_select_btn = "nul" input_player7_select_axis = "nul" input_player7_start = "nul" input_player7_start_btn = "nul" input_player7_start_axis = "nul" input_player7_up = "nul" input_player7_up_btn = "nul" input_player7_up_axis = "nul" input_player7_down = "nul" input_player7_down_btn = "nul" input_player7_down_axis = "nul" input_player7_left = "nul" input_player7_left_btn = "nul" input_player7_left_axis = "nul" input_player7_right = "nul" input_player7_right_btn = "nul" input_player7_right_axis = "nul" input_player7_a = "nul" input_player7_a_btn = "nul" input_player7_a_axis = "nul" input_player7_x = "nul" input_player7_x_btn = "nul" input_player7_x_axis = "nul" input_player7_l = "nul" input_player7_l_btn = "nul" input_player7_l_axis = "nul" input_player7_r = "nul" input_player7_r_btn = "nul" input_player7_r_axis = "nul" input_player7_l2 = "nul" input_player7_l2_btn = "nul" input_player7_l2_axis = "nul" input_player7_r2 = "nul" input_player7_r2_btn = "nul" input_player7_r2_axis = "nul" input_player7_l3 = "nul" input_player7_l3_btn = "nul" input_player7_l3_axis = "nul" input_player7_r3 = "nul" input_player7_r3_btn = "nul" input_player7_r3_axis = "nul" input_player7_l_x_plus = "nul" input_player7_l_x_plus_btn = "nul" input_player7_l_x_plus_axis = "nul" input_player7_l_x_minus = "nul" input_player7_l_x_minus_btn = "nul" input_player7_l_x_minus_axis = "nul" input_player7_l_y_plus = "nul" input_player7_l_y_plus_btn = "nul" input_player7_l_y_plus_axis = "nul" input_player7_l_y_minus = "nul" input_player7_l_y_minus_btn = "nul" input_player7_l_y_minus_axis = "nul" input_player7_r_x_plus = "nul" input_player7_r_x_plus_btn = "nul" input_player7_r_x_plus_axis = "nul" input_player7_r_x_minus = "nul" input_player7_r_x_minus_btn = "nul" input_player7_r_x_minus_axis = "nul" input_player7_r_y_plus = "nul" input_player7_r_y_plus_btn = "nul" input_player7_r_y_plus_axis = "nul" input_player7_r_y_minus = "nul" input_player7_r_y_minus_btn = "nul" input_player7_r_y_minus_axis = "nul" input_player7_turbo = "nul" input_player7_turbo_btn = "nul" input_player7_turbo_axis = "nul" input_player8_b = "nul" input_player8_b_btn = "nul" input_player8_b_axis = "nul" input_player8_y = "nul" input_player8_y_btn = "nul" input_player8_y_axis = "nul" input_player8_select = "nul" input_player8_select_btn = "nul" input_player8_select_axis = "nul" input_player8_start = "nul" input_player8_start_btn = "nul" input_player8_start_axis = "nul" input_player8_up = "nul" input_player8_up_btn = "nul" input_player8_up_axis = "nul" input_player8_down = "nul" input_player8_down_btn = "nul" input_player8_down_axis = "nul" input_player8_left = "nul" input_player8_left_btn = "nul" input_player8_left_axis = "nul" input_player8_right = "nul" input_player8_right_btn = "nul" input_player8_right_axis = "nul" input_player8_a = "nul" input_player8_a_btn = "nul" input_player8_a_axis = "nul" input_player8_x = "nul" input_player8_x_btn = "nul" input_player8_x_axis = "nul" input_player8_l = "nul" input_player8_l_btn = "nul" input_player8_l_axis = "nul" input_player8_r = "nul" input_player8_r_btn = "nul" input_player8_r_axis = "nul" input_player8_l2 = "nul" input_player8_l2_btn = "nul" input_player8_l2_axis = "nul" input_player8_r2 = "nul" input_player8_r2_btn = "nul" input_player8_r2_axis = "nul" input_player8_l3 = "nul" input_player8_l3_btn = "nul" input_player8_l3_axis = "nul" input_player8_r3 = "nul" input_player8_r3_btn = "nul" input_player8_r3_axis = "nul" input_player8_l_x_plus = "nul" input_player8_l_x_plus_btn = "nul" input_player8_l_x_plus_axis = "nul" input_player8_l_x_minus = "nul" input_player8_l_x_minus_btn = "nul" input_player8_l_x_minus_axis = "nul" input_player8_l_y_plus = "nul" input_player8_l_y_plus_btn = "nul" input_player8_l_y_plus_axis = "nul" input_player8_l_y_minus = "nul" input_player8_l_y_minus_btn = "nul" input_player8_l_y_minus_axis = "nul" input_player8_r_x_plus = "nul" input_player8_r_x_plus_btn = "nul" input_player8_r_x_plus_axis = "nul" input_player8_r_x_minus = "nul" input_player8_r_x_minus_btn = "nul" input_player8_r_x_minus_axis = "nul" input_player8_r_y_plus = "nul" input_player8_r_y_plus_btn = "nul" input_player8_r_y_plus_axis = "nul" input_player8_r_y_minus = "nul" input_player8_r_y_minus_btn = "nul" input_player8_r_y_minus_axis = "nul" input_player8_turbo = "nul" input_player8_turbo_btn = "nul" input_player8_turbo_axis = "nul" input_player9_b = "nul" input_player9_b_btn = "nul" input_player9_b_axis = "nul" input_player9_y = "nul" input_player9_y_btn = "nul" input_player9_y_axis = "nul" input_player9_select = "nul" input_player9_select_btn = "nul" input_player9_select_axis = "nul" input_player9_start = "nul" input_player9_start_btn = "nul" input_player9_start_axis = "nul" input_player9_up = "nul" input_player9_up_btn = "nul" input_player9_up_axis = "nul" input_player9_down = "nul" input_player9_down_btn = "nul" input_player9_down_axis = "nul" input_player9_left = "nul" input_player9_left_btn = "nul" input_player9_left_axis = "nul" input_player9_right = "nul" input_player9_right_btn = "nul" input_player9_right_axis = "nul" input_player9_a = "nul" input_player9_a_btn = "nul" input_player9_a_axis = "nul" input_player9_x = "nul" input_player9_x_btn = "nul" input_player9_x_axis = "nul" input_player9_l = "nul" input_player9_l_btn = "nul" input_player9_l_axis = "nul" input_player9_r = "nul" input_player9_r_btn = "nul" input_player9_r_axis = "nul" input_player9_l2 = "nul" input_player9_l2_btn = "nul" input_player9_l2_axis = "nul" input_player9_r2 = "nul" input_player9_r2_btn = "nul" input_player9_r2_axis = "nul" input_player9_l3 = "nul" input_player9_l3_btn = "nul" input_player9_l3_axis = "nul" input_player9_r3 = "nul" input_player9_r3_btn = "nul" input_player9_r3_axis = "nul" input_player9_l_x_plus = "nul" input_player9_l_x_plus_btn = "nul" input_player9_l_x_plus_axis = "nul" input_player9_l_x_minus = "nul" input_player9_l_x_minus_btn = "nul" input_player9_l_x_minus_axis = "nul" input_player9_l_y_plus = "nul" input_player9_l_y_plus_btn = "nul" input_player9_l_y_plus_axis = "nul" input_player9_l_y_minus = "nul" input_player9_l_y_minus_btn = "nul" input_player9_l_y_minus_axis = "nul" input_player9_r_x_plus = "nul" input_player9_r_x_plus_btn = "nul" input_player9_r_x_plus_axis = "nul" input_player9_r_x_minus = "nul" input_player9_r_x_minus_btn = "nul" input_player9_r_x_minus_axis = "nul" input_player9_r_y_plus = "nul" input_player9_r_y_plus_btn = "nul" input_player9_r_y_plus_axis = "nul" input_player9_r_y_minus = "nul" input_player9_r_y_minus_btn = "nul" input_player9_r_y_minus_axis = "nul" input_player9_turbo = "nul" input_player9_turbo_btn = "nul" input_player9_turbo_axis = "nul" input_player10_b = "nul" input_player10_b_btn = "nul" input_player10_b_axis = "nul" input_player10_y = "nul" input_player10_y_btn = "nul" input_player10_y_axis = "nul" input_player10_select = "nul" input_player10_select_btn = "nul" input_player10_select_axis = "nul" input_player10_start = "nul" input_player10_start_btn = "nul" input_player10_start_axis = "nul" input_player10_up = "nul" input_player10_up_btn = "nul" input_player10_up_axis = "nul" input_player10_down = "nul" input_player10_down_btn = "nul" input_player10_down_axis = "nul" input_player10_left = "nul" input_player10_left_btn = "nul" input_player10_left_axis = "nul" input_player10_right = "nul" input_player10_right_btn = "nul" input_player10_right_axis = "nul" input_player10_a = "nul" input_player10_a_btn = "nul" input_player10_a_axis = "nul" input_player10_x = "nul" input_player10_x_btn = "nul" input_player10_x_axis = "nul" input_player10_l = "nul" input_player10_l_btn = "nul" input_player10_l_axis = "nul" input_player10_r = "nul" input_player10_r_btn = "nul" input_player10_r_axis = "nul" input_player10_l2 = "nul" input_player10_l2_btn = "nul" input_player10_l2_axis = "nul" input_player10_r2 = "nul" input_player10_r2_btn = "nul" input_player10_r2_axis = "nul" input_player10_l3 = "nul" input_player10_l3_btn = "nul" input_player10_l3_axis = "nul" input_player10_r3 = "nul" input_player10_r3_btn = "nul" input_player10_r3_axis = "nul" input_player10_l_x_plus = "nul" input_player10_l_x_plus_btn = "nul" input_player10_l_x_plus_axis = "nul" input_player10_l_x_minus = "nul" input_player10_l_x_minus_btn = "nul" input_player10_l_x_minus_axis = "nul" input_player10_l_y_plus = "nul" input_player10_l_y_plus_btn = "nul" input_player10_l_y_plus_axis = "nul" input_player10_l_y_minus = "nul" input_player10_l_y_minus_btn = "nul" input_player10_l_y_minus_axis = "nul" input_player10_r_x_plus = "nul" input_player10_r_x_plus_btn = "nul" input_player10_r_x_plus_axis = "nul" input_player10_r_x_minus = "nul" input_player10_r_x_minus_btn = "nul" input_player10_r_x_minus_axis = "nul" input_player10_r_y_plus = "nul" input_player10_r_y_plus_btn = "nul" input_player10_r_y_plus_axis = "nul" input_player10_r_y_minus = "nul" input_player10_r_y_minus_btn = "nul" input_player10_r_y_minus_axis = "nul" input_player10_turbo = "nul" input_player10_turbo_btn = "nul" input_player10_turbo_axis = "nul" input_player11_b = "nul" input_player11_b_btn = "nul" input_player11_b_axis = "nul" input_player11_y = "nul" input_player11_y_btn = "nul" input_player11_y_axis = "nul" input_player11_select = "nul" input_player11_select_btn = "nul" input_player11_select_axis = "nul" input_player11_start = "nul" input_player11_start_btn = "nul" input_player11_start_axis = "nul" input_player11_up = "nul" input_player11_up_btn = "nul" input_player11_up_axis = "nul" input_player11_down = "nul" input_player11_down_btn = "nul" input_player11_down_axis = "nul" input_player11_left = "nul" input_player11_left_btn = "nul" input_player11_left_axis = "nul" input_player11_right = "nul" input_player11_right_btn = "nul" input_player11_right_axis = "nul" input_player11_a = "nul" input_player11_a_btn = "nul" input_player11_a_axis = "nul" input_player11_x = "nul" input_player11_x_btn = "nul" input_player11_x_axis = "nul" input_player11_l = "nul" input_player11_l_btn = "nul" input_player11_l_axis = "nul" input_player11_r = "nul" input_player11_r_btn = "nul" input_player11_r_axis = "nul" input_player11_l2 = "nul" input_player11_l2_btn = "nul" input_player11_l2_axis = "nul" input_player11_r2 = "nul" input_player11_r2_btn = "nul" input_player11_r2_axis = "nul" input_player11_l3 = "nul" input_player11_l3_btn = "nul" input_player11_l3_axis = "nul" input_player11_r3 = "nul" input_player11_r3_btn = "nul" input_player11_r3_axis = "nul" input_player11_l_x_plus = "nul" input_player11_l_x_plus_btn = "nul" input_player11_l_x_plus_axis = "nul" input_player11_l_x_minus = "nul" input_player11_l_x_minus_btn = "nul" input_player11_l_x_minus_axis = "nul" input_player11_l_y_plus = "nul" input_player11_l_y_plus_btn = "nul" input_player11_l_y_plus_axis = "nul" input_player11_l_y_minus = "nul" input_player11_l_y_minus_btn = "nul" input_player11_l_y_minus_axis = "nul" input_player11_r_x_plus = "nul" input_player11_r_x_plus_btn = "nul" input_player11_r_x_plus_axis = "nul" input_player11_r_x_minus = "nul" input_player11_r_x_minus_btn = "nul" input_player11_r_x_minus_axis = "nul" input_player11_r_y_plus = "nul" input_player11_r_y_plus_btn = "nul" input_player11_r_y_plus_axis = "nul" input_player11_r_y_minus = "nul" input_player11_r_y_minus_btn = "nul" input_player11_r_y_minus_axis = "nul" input_player11_turbo = "nul" input_player11_turbo_btn = "nul" input_player11_turbo_axis = "nul" input_player12_b = "nul" input_player12_b_btn = "nul" input_player12_b_axis = "nul" input_player12_y = "nul" input_player12_y_btn = "nul" input_player12_y_axis = "nul" input_player12_select = "nul" input_player12_select_btn = "nul" input_player12_select_axis = "nul" input_player12_start = "nul" input_player12_start_btn = "nul" input_player12_start_axis = "nul" input_player12_up = "nul" input_player12_up_btn = "nul" input_player12_up_axis = "nul" input_player12_down = "nul" input_player12_down_btn = "nul" input_player12_down_axis = "nul" input_player12_left = "nul" input_player12_left_btn = "nul" input_player12_left_axis = "nul" input_player12_right = "nul" input_player12_right_btn = "nul" input_player12_right_axis = "nul" input_player12_a = "nul" input_player12_a_btn = "nul" input_player12_a_axis = "nul" input_player12_x = "nul" input_player12_x_btn = "nul" input_player12_x_axis = "nul" input_player12_l = "nul" input_player12_l_btn = "nul" input_player12_l_axis = "nul" input_player12_r = "nul" input_player12_r_btn = "nul" input_player12_r_axis = "nul" input_player12_l2 = "nul" input_player12_l2_btn = "nul" input_player12_l2_axis = "nul" input_player12_r2 = "nul" input_player12_r2_btn = "nul" input_player12_r2_axis = "nul" input_player12_l3 = "nul" input_player12_l3_btn = "nul" input_player12_l3_axis = "nul" input_player12_r3 = "nul" input_player12_r3_btn = "nul" input_player12_r3_axis = "nul" input_player12_l_x_plus = "nul" input_player12_l_x_plus_btn = "nul" input_player12_l_x_plus_axis = "nul" input_player12_l_x_minus = "nul" input_player12_l_x_minus_btn = "nul" input_player12_l_x_minus_axis = "nul" input_player12_l_y_plus = "nul" input_player12_l_y_plus_btn = "nul" input_player12_l_y_plus_axis = "nul" input_player12_l_y_minus = "nul" input_player12_l_y_minus_btn = "nul" input_player12_l_y_minus_axis = "nul" input_player12_r_x_plus = "nul" input_player12_r_x_plus_btn = "nul" input_player12_r_x_plus_axis = "nul" input_player12_r_x_minus = "nul" input_player12_r_x_minus_btn = "nul" input_player12_r_x_minus_axis = "nul" input_player12_r_y_plus = "nul" input_player12_r_y_plus_btn = "nul" input_player12_r_y_plus_axis = "nul" input_player12_r_y_minus = "nul" input_player12_r_y_minus_btn = "nul" input_player12_r_y_minus_axis = "nul" input_player12_turbo = "nul" input_player12_turbo_btn = "nul" input_player12_turbo_axis = "nul" input_player13_b = "nul" input_player13_b_btn = "nul" input_player13_b_axis = "nul" input_player13_y = "nul" input_player13_y_btn = "nul" input_player13_y_axis = "nul" input_player13_select = "nul" input_player13_select_btn = "nul" input_player13_select_axis = "nul" input_player13_start = "nul" input_player13_start_btn = "nul" input_player13_start_axis = "nul" input_player13_up = "nul" input_player13_up_btn = "nul" input_player13_up_axis = "nul" input_player13_down = "nul" input_player13_down_btn = "nul" input_player13_down_axis = "nul" input_player13_left = "nul" input_player13_left_btn = "nul" input_player13_left_axis = "nul" input_player13_right = "nul" input_player13_right_btn = "nul" input_player13_right_axis = "nul" input_player13_a = "nul" input_player13_a_btn = "nul" input_player13_a_axis = "nul" input_player13_x = "nul" input_player13_x_btn = "nul" input_player13_x_axis = "nul" input_player13_l = "nul" input_player13_l_btn = "nul" input_player13_l_axis = "nul" input_player13_r = "nul" input_player13_r_btn = "nul" input_player13_r_axis = "nul" input_player13_l2 = "nul" input_player13_l2_btn = "nul" input_player13_l2_axis = "nul" input_player13_r2 = "nul" input_player13_r2_btn = "nul" input_player13_r2_axis = "nul" input_player13_l3 = "nul" input_player13_l3_btn = "nul" input_player13_l3_axis = "nul" input_player13_r3 = "nul" input_player13_r3_btn = "nul" input_player13_r3_axis = "nul" input_player13_l_x_plus = "nul" input_player13_l_x_plus_btn = "nul" input_player13_l_x_plus_axis = "nul" input_player13_l_x_minus = "nul" input_player13_l_x_minus_btn = "nul" input_player13_l_x_minus_axis = "nul" input_player13_l_y_plus = "nul" input_player13_l_y_plus_btn = "nul" input_player13_l_y_plus_axis = "nul" input_player13_l_y_minus = "nul" input_player13_l_y_minus_btn = "nul" input_player13_l_y_minus_axis = "nul" input_player13_r_x_plus = "nul" input_player13_r_x_plus_btn = "nul" input_player13_r_x_plus_axis = "nul" input_player13_r_x_minus = "nul" input_player13_r_x_minus_btn = "nul" input_player13_r_x_minus_axis = "nul" input_player13_r_y_plus = "nul" input_player13_r_y_plus_btn = "nul" input_player13_r_y_plus_axis = "nul" input_player13_r_y_minus = "nul" input_player13_r_y_minus_btn = "nul" input_player13_r_y_minus_axis = "nul" input_player13_turbo = "nul" input_player13_turbo_btn = "nul" input_player13_turbo_axis = "nul" input_player14_b = "nul" input_player14_b_btn = "nul" input_player14_b_axis = "nul" input_player14_y = "nul" input_player14_y_btn = "nul" input_player14_y_axis = "nul" input_player14_select = "nul" input_player14_select_btn = "nul" input_player14_select_axis = "nul" input_player14_start = "nul" input_player14_start_btn = "nul" input_player14_start_axis = "nul" input_player14_up = "nul" input_player14_up_btn = "nul" input_player14_up_axis = "nul" input_player14_down = "nul" input_player14_down_btn = "nul" input_player14_down_axis = "nul" input_player14_left = "nul" input_player14_left_btn = "nul" input_player14_left_axis = "nul" input_player14_right = "nul" input_player14_right_btn = "nul" input_player14_right_axis = "nul" input_player14_a = "nul" input_player14_a_btn = "nul" input_player14_a_axis = "nul" input_player14_x = "nul" input_player14_x_btn = "nul" input_player14_x_axis = "nul" input_player14_l = "nul" input_player14_l_btn = "nul" input_player14_l_axis = "nul" input_player14_r = "nul" input_player14_r_btn = "nul" input_player14_r_axis = "nul" input_player14_l2 = "nul" input_player14_l2_btn = "nul" input_player14_l2_axis = "nul" input_player14_r2 = "nul" input_player14_r2_btn = "nul" input_player14_r2_axis = "nul" input_player14_l3 = "nul" input_player14_l3_btn = "nul" input_player14_l3_axis = "nul" input_player14_r3 = "nul" input_player14_r3_btn = "nul" input_player14_r3_axis = "nul" input_player14_l_x_plus = "nul" input_player14_l_x_plus_btn = "nul" input_player14_l_x_plus_axis = "nul" input_player14_l_x_minus = "nul" input_player14_l_x_minus_btn = "nul" input_player14_l_x_minus_axis = "nul" input_player14_l_y_plus = "nul" input_player14_l_y_plus_btn = "nul" input_player14_l_y_plus_axis = "nul" input_player14_l_y_minus = "nul" input_player14_l_y_minus_btn = "nul" input_player14_l_y_minus_axis = "nul" input_player14_r_x_plus = "nul" input_player14_r_x_plus_btn = "nul" input_player14_r_x_plus_axis = "nul" input_player14_r_x_minus = "nul" input_player14_r_x_minus_btn = "nul" input_player14_r_x_minus_axis = "nul" input_player14_r_y_plus = "nul" input_player14_r_y_plus_btn = "nul" input_player14_r_y_plus_axis = "nul" input_player14_r_y_minus = "nul" input_player14_r_y_minus_btn = "nul" input_player14_r_y_minus_axis = "nul" input_player14_turbo = "nul" input_player14_turbo_btn = "nul" input_player14_turbo_axis = "nul" input_player15_b = "nul" input_player15_b_btn = "nul" input_player15_b_axis = "nul" input_player15_y = "nul" input_player15_y_btn = "nul" input_player15_y_axis = "nul" input_player15_select = "nul" input_player15_select_btn = "nul" input_player15_select_axis = "nul" input_player15_start = "nul" input_player15_start_btn = "nul" input_player15_start_axis = "nul" input_player15_up = "nul" input_player15_up_btn = "nul" input_player15_up_axis = "nul" input_player15_down = "nul" input_player15_down_btn = "nul" input_player15_down_axis = "nul" input_player15_left = "nul" input_player15_left_btn = "nul" input_player15_left_axis = "nul" input_player15_right = "nul" input_player15_right_btn = "nul" input_player15_right_axis = "nul" input_player15_a = "nul" input_player15_a_btn = "nul" input_player15_a_axis = "nul" input_player15_x = "nul" input_player15_x_btn = "nul" input_player15_x_axis = "nul" input_player15_l = "nul" input_player15_l_btn = "nul" input_player15_l_axis = "nul" input_player15_r = "nul" input_player15_r_btn = "nul" input_player15_r_axis = "nul" input_player15_l2 = "nul" input_player15_l2_btn = "nul" input_player15_l2_axis = "nul" input_player15_r2 = "nul" input_player15_r2_btn = "nul" input_player15_r2_axis = "nul" input_player15_l3 = "nul" input_player15_l3_btn = "nul" input_player15_l3_axis = "nul" input_player15_r3 = "nul" input_player15_r3_btn = "nul" input_player15_r3_axis = "nul" input_player15_l_x_plus = "nul" input_player15_l_x_plus_btn = "nul" input_player15_l_x_plus_axis = "nul" input_player15_l_x_minus = "nul" input_player15_l_x_minus_btn = "nul" input_player15_l_x_minus_axis = "nul" input_player15_l_y_plus = "nul" input_player15_l_y_plus_btn = "nul" input_player15_l_y_plus_axis = "nul" input_player15_l_y_minus = "nul" input_player15_l_y_minus_btn = "nul" input_player15_l_y_minus_axis = "nul" input_player15_r_x_plus = "nul" input_player15_r_x_plus_btn = "nul" input_player15_r_x_plus_axis = "nul" input_player15_r_x_minus = "nul" input_player15_r_x_minus_btn = "nul" input_player15_r_x_minus_axis = "nul" input_player15_r_y_plus = "nul" input_player15_r_y_plus_btn = "nul" input_player15_r_y_plus_axis = "nul" input_player15_r_y_minus = "nul" input_player15_r_y_minus_btn = "nul" input_player15_r_y_minus_axis = "nul" input_player15_turbo = "nul" input_player15_turbo_btn = "nul" input_player15_turbo_axis = "nul" input_player16_b = "nul" input_player16_b_btn = "nul" input_player16_b_axis = "nul" input_player16_y = "nul" input_player16_y_btn = "nul" input_player16_y_axis = "nul" input_player16_select = "nul" input_player16_select_btn = "nul" input_player16_select_axis = "nul" input_player16_start = "nul" input_player16_start_btn = "nul" input_player16_start_axis = "nul" input_player16_up = "nul" input_player16_up_btn = "nul" input_player16_up_axis = "nul" input_player16_down = "nul" input_player16_down_btn = "nul" input_player16_down_axis = "nul" input_player16_left = "nul" input_player16_left_btn = "nul" input_player16_left_axis = "nul" input_player16_right = "nul" input_player16_right_btn = "nul" input_player16_right_axis = "nul" input_player16_a = "nul" input_player16_a_btn = "nul" input_player16_a_axis = "nul" input_player16_x = "nul" input_player16_x_btn = "nul" input_player16_x_axis = "nul" input_player16_l = "nul" input_player16_l_btn = "nul" input_player16_l_axis = "nul" input_player16_r = "nul" input_player16_r_btn = "nul" input_player16_r_axis = "nul" input_player16_l2 = "nul" input_player16_l2_btn = "nul" input_player16_l2_axis = "nul" input_player16_r2 = "nul" input_player16_r2_btn = "nul" input_player16_r2_axis = "nul" input_player16_l3 = "nul" input_player16_l3_btn = "nul" input_player16_l3_axis = "nul" input_player16_r3 = "nul" input_player16_r3_btn = "nul" input_player16_r3_axis = "nul" input_player16_l_x_plus = "nul" input_player16_l_x_plus_btn = "nul" input_player16_l_x_plus_axis = "nul" input_player16_l_x_minus = "nul" input_player16_l_x_minus_btn = "nul" input_player16_l_x_minus_axis = "nul" input_player16_l_y_plus = "nul" input_player16_l_y_plus_btn = "nul" input_player16_l_y_plus_axis = "nul" input_player16_l_y_minus = "nul" input_player16_l_y_minus_btn = "nul" input_player16_l_y_minus_axis = "nul" input_player16_r_x_plus = "nul" input_player16_r_x_plus_btn = "nul" input_player16_r_x_plus_axis = "nul" input_player16_r_x_minus = "nul" input_player16_r_x_minus_btn = "nul" input_player16_r_x_minus_axis = "nul" input_player16_r_y_plus = "nul" input_player16_r_y_plus_btn = "nul" input_player16_r_y_plus_axis = "nul" input_player16_r_y_minus = "nul" input_player16_r_y_minus_btn = "nul" input_player16_r_y_minus_axis = "nul" input_player16_turbo = "nul" input_player16_turbo_btn = "nul" input_player16_turbo_axis = "nul" core_specific_config = "false" game_specific_options = "false" auto_overrides_enable = "true" sort_savefiles_enable = "false" sort_savestates_enable = "false" libretro_log_level = "0" log_verbosity = "false" perfcnt_enable = "false" keyboard_gamepad_enable = "true" keyboard_gamepad_mapping_type = "1" input_poll_type_behavior = "2" core_set_supports_no_game_enable = "true" menu_ok_btn = "8" menu_cancel_btn = "0" menu_search_btn = "9" menu_info_btn = "2" menu_default_btn = "3" menu_scroll_down_btn = "11" menu_scroll_up_btn = "10" recording_output_directory = "" recording_config_directory = "" video_shader = "" bundle_assets_src_path = "" bundle_assets_dst_path = "" bundle_assets_dst_path_subdir = "" menu_wallpaper = "" video_filter = "" audio_dsp_plugin = "" input_overlay = "" input_osk_overlay = "" video_font_path = "" content_history_dir = "" playlist_names = "" playlist_cores = "" audio_device = "" core_updater_buildbot_url = "" camera_device = "" cheevos_username = "" cheevos_password = "" video_context_driver = "" resampler_directory = "" xmb_font = "" netplay_ip_address = "" netplay_nickname = "" input_keyboard_layout = ""
input_player1_start = "enter" input_exit_emulator = "enter"
get rekt.
I got this issue too. The keyboard flat out refused to accept any input. The issue stopped when I switched from the udev input driver to something else, so I suspect something might be going on with the udev driver here. (SDL2 was the first one I picked and it works fine - keyboard works again)
Running Ubuntu 17.04 with GNOME and RetroArch nightly from the PPA. Version reported by retroarch --version
is:
RetroArch: Frontend for libretro -- v1.6.1 -- 3c4f13e --
Compiler: GCC (6.3.0) 64-bitBuilt: Jul 19 2017
Other things that might be of note:
I run the IBus input method selector.
I have a Steam Controller that I use with the SC Controller software. That makes it report itself as an XBox 360 gamepad to RetroArch. That said, having it plugged in and enabled or not didn't seem to influence my issue at all - keyboard input was broken in both cases.
I have a British keyboard although it is just set to the US keyboard layout.
If there's anything else I can do I'd be happy to oblige.
@DaVince If you're using Xorg, try setting your video driver back to gl and make the input driver "x". This is what I use and it works for me, I also have mozc-fcitx IME running. There were recent changes to the udev driver, that could be what you're running into.
Thanks, that works great. What would be the best driver to use when running Wayland (although I'm usually on Xorg)?
Not sure as I don't really use Wayland, but I assume udev. Can you try reverting aa99f4f and see if it fixes your problem? It looks like that function isn't implemented for the GL driver, so it might break the keyboard entirely.
I'll try, but since I was running a nightly from the Ubuntu PPA, it'll take some time to set things up and compile. Will get back to you once it's done.
Oh, that was actually quite painless. I reverted that change but got the same results, unfortunately.
Also on Ubuntu Mate 17.04, out of the box installation of retroarch fails to accept any input from my keyboard or xb1 controller (wired). Not sure how to get it working, I am both determined and disappointed.
Unfortunately this is an issue where your distribution by default doesn't add your user to the 'input' group. You need to be added to the input group or some related group in order to get full udev access over your devices.
I found the same issue on Manjaro Linux and solved it the same way. I asked others how we could make this unnecessary to do and instead figure out a way to do it programmatically, but IIRC there were no satisfactory answers or solutions provided.
@twinaphex thank you for that reply. I did not know that caveat existed. I shall add my user to that group and try again.
@twinaphex Thanks for the heads up, but after adding my user to that group and rebooting nothing seems to have change, so it's somehow still a separated issue.
Ask somebody in #retroarch other than me to help you with this, its not a separate issue.
The keyboard does not work correctly with the latest RetroArch. I only can go right or down.