Собрал адаптер из RP2040-zero и палок чего было под рукой. Отталкивался от ps2x2pico и usb2ps2. Прошивку пересобрал с SDK 2.1.1 и светодиод вкорячил, как у гишпанского товарища, только сделал так, чтобы мигал весело Гвоздики вполне заменяют mini DIN.

В процессе тестирования выяснил, что у древней «кетайской» мини-клавиатуры с фонариком кнопка ВЛЕВО сдохла В целом, попробовал штуки три noname беспроводных, Logitech и проводную, всё работает. Пока TTGO всё не доедет, тестировал на Sizif’е, но, не вижу причин, почему бы не сработало и в любом другом месте. Как правильно предупреждают авторы: ОНО ПИТАЕТСЯ ОТ PS/2 если вы не сделали по другому!!! Убедитесь, что PS/2 может дать нужный ток!!! Я думаю, надо как-то питание отдельно пробросить.

Технические подробности


Код:
--- ps2x2pico-orig/CMakeLists.txt
+++ ps2x2pico-2.1/CMakeLists.txt
@@ -11,7 +11,7 @@
 # Pull in Raspberry Pi Pico SDK
 include(pico_sdk_import.cmake)
 
-if (NOT PICO_SDK_VERSION_STRING VERSION_EQUAL "1.5.1")
+if (NOT PICO_SDK_VERSION_STRING VERSION_GREATER_EQUAL "1.5.1")
   message(FATAL_ERROR "Raspberry Pi Pico SDK version 1.5.1 required. Your version is ${PICO_SDK_VERSION_STRING}")
 endif()
 
@@ -20,6 +20,7 @@
 # Initialise the Raspberry Pi Pico SDK
 pico_sdk_init()
 
+add_compile_definitions(PICO_DEFAULT_LED_PIN=10)
 add_executable(ps2x2pico src/ps2x2pico.c src/usbin.c src/scancodes.c src/ps2kb.c src/ps2ms.c src/ps2out.c src/ps2in.c)
 
 pico_generate_pio_header(ps2x2pico ${CMAKE_CURRENT_LIST_DIR}/src/ps2out.pio)
После этого светодиод будет просто гореть, чтобы он весело мигал я «обернул» все вызовы отсылки чего-либо в PS/2 (изменения абы какие, разбираться, как это там сделать идеологически правильно, я не стал, сама идея управлять светодиодом через tinyusb меня пугает…)

Код:
--- ps2x2pico-orig/src/usbin.c
+++ ps2x2pico-2.1/src/usbin.c
@@ -30,6 +30,16 @@
 #define MAX_REPORT 4
 #define MAX_REPORT_ITEMS 32

+#define kb_send_key(key, is_key_pressed, modifiers) \
+            board_led_write(true); \
+            kb_send_key(key, is_key_pressed, modifiers); \
+            board_led_write(false);
+
+#define ms_send_movement(buttons, x, y, z) \
+            board_led_write(true); \
+            ms_send_movement(buttons, x, y, z); \
+            board_led_write(false);
+
 typedef struct {
   u16 page;
   u16 usage;
[свернуть]


P.S. может, вынести в отдельную тему, про адаптеры на RP 2040, вроде, через поиск я не увидел? Хотя, там и обсуждать особо нечего, всё гениально просто.